É possível desabilitar (congelar) um pacote?

2

Estou ansioso para saber se é possível manter alguns pacotes desativados no Ubuntu, semelhante a como podemos congelar / desativar um aplicativo no Android.

i.e. O pacote está instalado, mas não pode ser usado até que seja reativado.

N.B. Eu não estou perguntando sobre apenas "desativar atualização", peço sobre "pacote de desativação".

Se for possível, então como podemos fazer isso?

    
por Chitholian 26.10.2017 / 09:16

4 respostas

5

O Linux não inicia aplicativos que você não precisa e os mantém na RAM, como o Android faz, para que eles possam receber mensagens push e coisas do tipo. Então congelar pacotes não é necessário.

Para muitos aplicativos, se você não iniciar o aplicativo, ele não será executado. Ele ainda receberá atualizações caso você queira usá-lo.

Se você está realmente inclinado a se livrar de um pacote, desinstalá-lo (e instalá-lo conforme necessário) é possível para aplicativos não essenciais, mas como em outras distribuições Linux, os pacotes no Ubuntu dependem de outros pacotes e outros pacotes que dependem deles, então quando você instala ou remove um pacote, outros pacotes podem ser automaticamente instalados como dependências (ou substituições) ou removidos porque eles dependem do pacote que você remove. Remover um pacote com muitas dependências ou que é essencial para o sistema funcionar corretamente pode quebrar o sistema muito severamente. Tudo isso é tratado pelo sistema de gerenciamento de pacotes. Para ver o que acontecerá quando você executar um comando específico de instalação ou remoção, use a opção -s ou --simulate no APT, por exemplo

apt remove <package> -s

isso mostrará o que será feito sem realmente fazer nada.

Alguns programas são executados em segundo plano como serviços. Nesses casos, você pode usar o comando systemctl (parte da interface de systemd para pará-los e desativá-los (desabilitar impede que o serviço inicie na inicialização). Mais uma vez, você precisa ter cuidado aqui, porque os serviços podem também dependem um do outro e parar ou desabilitar um serviço importante pode ter um impacto negativo na funcionalidade e estabilidade do seu sistema.No entanto, systemd iniciará serviços desativados se outros serviços dependerem deles, portanto, isso é menos quebrável do que o gerenciamento de pacotes .

Aqui estão alguns exemplos de como parar, ativar, desativar e iniciar serviços.

  1. ativando um serviço:

    Ativar um serviço não o inicia automaticamente; você precisa usar start para isso, ou adicionar o --now flag, ou reiniciar sua máquina. para fazer efeito.

    sudo systemctl enable <service-name>
    
  2. desativando um serviço:

    A desativação de um serviço não o impede imediatamente, você precisa usar stop para isso, ou adicionar o sinalizador --now ou reinicializar sua máquina.

    sudo systemctl disable <service-name>
    
  3. iniciando um serviço:

    iniciar um serviço não o habilita por padrão (é para isso que serve o comando enable ), mas inicia o serviço imediatamente se puder ser iniciado.

    sudo systemctl start <service-name>
    
  4. parando um serviço:

    parar um serviço não desativa um serviço que foi ativado, mas o interrompe por enquanto até a próxima reinicialização.

    sudo systemctl stop <service-name>
    
  5. reiniciando um serviço:

    Reinicia um serviço, mas os comandos start e stop não afetam se o serviço será carregado e iniciado na inicialização (o comportamento controlado pelos comandos enable disable .

    sudo systemctl restart <service-name>
    
por Videonauth 03.11.2017 / 03:11
2

O Linux, ao contrário do Android, que tem algo parecido com uma cadeia entre pacotes diferentes, usa bibliotecas compartilhadas entre pacotes. Se você fosse capaz de desabilitar um pacote, não ficaria claro de quais componentes você está removendo a funcionalidade.

Como muitos já mencionaram, você tem a opção de desinstalar os pacotes que você não deseja, para o intervalo que você não quer que ele seja ativado. Desta forma, o pacote e todas as bibliotecas usadas exclusivamente por ele serão removidos. As bibliotecas usadas por outros pacotes não serão removidas.

Muitos pacotes usam serviços

Existe um recurso para ativar ou desativar serviços ou para configurar os serviços para serem executados somente se você ativá-lo ativamente. Pacotes que usam serviços, em circunstâncias normais, terão o serviço iniciado após o pacote ser instalado e serão ativados na inicialização por padrão.

Um exemplo disso é o pacote Apache2 . Quando é instalado, o serviço é iniciado e configurado para ser iniciado automaticamente toda vez que você reinicializa o computador.

Use o systemctl para iniciar, parar, ativar, desativar serviços

Você pode verificar sua lista de serviços para ver se o pacote que você deseja desabilitar temporariamente listará os serviços instalados filtrados por seu nome de pacote específico. Neste exemplo, procurarei o Apache2.

(Este é o comando e a saída para verificar a instalação e o status do Apache2. Ele está filtrando uma lista de todos os pacotes instalados para apache2 .)

$ systemctl | egrep apache2
apache2.service                    loaded active running   LSB: Apache2 web server

O serviço pode ser verificado, iniciado, interrompido ou desativado com estes comandos:

Substitua a opção por uma destas: status start , stop , restart , disable , enable .

(Comando e saída de status de um serviço)

$ sudo systemctrl status apache2
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2017-10-31 12:14:42 EDT; 2 days ago
     Docs: man:systemd-sysv-generator(8)
  Process: 17861 ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS)
  Process: 1864 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/apache2.service
           ├─ 2119 /usr/sbin/apache2 -k start
           ├─17909 /usr/sbin/apache2 -k start
           ├─21395 /usr/sbin/apache2 -k start
           ├─21397 /usr/sbin/apache2 -k start
           ├─21398 /usr/sbin/apache2 -k start
           ├─21399 /usr/sbin/apache2 -k start
           ├─21400 /usr/sbin/apache2 -k start
           ├─21401 /usr/sbin/apache2 -k start
           ├─21402 /usr/sbin/apache2 -k start
           ├─21403 /usr/sbin/apache2 -k start
           └─31543 /usr/sbin/apache2 -k start

Oct 31 12:14:42 ubunzeus apache2[1864]:  *
Oct 31 12:14:42 ubunzeus systemd[1]: Started LSB: Apache2 web server.
Nov 01 07:35:02 ubunzeus systemd[1]: Reloading LSB: Apache2 web server.
Nov 01 07:35:02 ubunzeus apache2[759]:  * Reloading Apache httpd web server apache2
Nov 01 07:35:02 ubunzeus apache2[759]:  *
Nov 01 07:35:02 ubunzeus systemd[1]: Reloaded LSB: Apache2 web server.
Nov 02 07:35:03 ubunzeus systemd[1]: Reloading LSB: Apache2 web server.
Nov 02 07:35:03 ubunzeus apache2[17861]:  * Reloading Apache httpd web server apache2
Nov 02 07:35:04 ubunzeus apache2[17861]:  *
Nov 02 07:35:04 ubunzeus systemd[1]: Reloaded LSB: Apache2 web server.

Você pode fazer o mesmo com qualquer um dos mais de cem serviços instalados e habilitados em uma instalação padrão do Ubuntu. Ou, é instalado e ativado quando você instala um pacote, como Apache2 , Openssh-server , Mysql , Plexmedia Server e assim por diante.

Você pode desativar ssh sem desinstalar openssh-server executando:

$ sudo systemctl disable sshd

O login ssh será desativado (congelado) até você reativá-lo usando a opção enable de systemctl .

Você pode ter que revisar a documentação do pacote que você instalou para ver que serviço ou serviços ele inicia para usar o pacote.

Resposta rápida

Você pode desabilitar (congelar) pacotes desabilitando os serviços do pacote.

    
por L. D. James 03.11.2017 / 08:16
2

Se for um aplicativo regular, você poderá remover os direitos executáveis, tornando-o "inutilizável". Você pode fazer isso assim (estou usando /usr/bin/gedit como exemplo aqui):

$ sudo chmod -x /usr/bin/gedit

Se você precisar usá-lo novamente:

$ sudo chmod +x /usr/bin/gedit

Para unidades systemd, veja as outras respostas.

    
por Sebastiaan Franken 03.11.2017 / 18:22
1

Não, atualmente o Ubuntu não tem esse recurso. Se você não está usando um pacote, mas pode usá-lo no futuro, você precisa desinstalá-lo e instalá-lo mais tarde quando estiver pronto para usá-lo.

    
por Anwar 03.11.2017 / 07:23