O Apt poderia excluir pacotes que são necessários por software que os usuários instalaram da origem?

14

Apt gerencia dependências entre pacotes instalados a partir de seus repositórios ou *.deb files. No entanto, e o software que os usuários compilaram e instalaram da origem com ./configure && make && make install sem criar um arquivo .deb primeiro? É possível que o Apt possa remover os pacotes necessários para tais softwares? Instalar software da origem em /opt ou /usr/local faz diferença?

    
por Elena 04.07.2015 / 17:39

2 respostas

13

O APT não sabe nada sobre o software que foi instalado manualmente. Não sabe quais bibliotecas o software precisa ou nada.

Quando o APT instala um pacote apenas para preencher as dependências de outro pacote, esse pacote é marcado como instalado automaticamente. Se você remover todos os pacotes que dependem de um pacote instalado automaticamente, esse pacote será removido quando você executar apt-get autoremove ; os frontends de nível superior para o APT normalmente oferecerão isso depois de outra manutenção. Para evitar a remoção de pacotes necessários pelo software instalado localmente, marque esses pacotes como instalados manualmente: apt-mark manual PACKAGE-NAME ou a tecla m no aptitude.

Para descobrir quais pacotes de biblioteca um executável binário precisa, execute ldd /path/to/executable . Para cada linha contendo /usr/lib/SOMETHING , execute dpkg -S /usr/lib/SOMETHING para exibir o nome do pacote que contém essa biblioteca. Para scripts, head -n 1 /path/to/script mostra o interpretador usado pelo script; Certifique-se de que este intérprete permaneça instalado. Encontrar quais bibliotecas são usadas por um script pode ser difícil, não há uma maneira universal de fazer isso.

Se você instalou manualmente uma versão mais recente de um pacote presente em sua distribuição, examine as dependências do pacote da distribuição e marque-as como instaladas manualmente.

    
por 05.07.2015 / 01:08
14

apt e dpkg absolutamente podem remover software que é requerido por outro software instalado localmente que esteja fora do escopo do sistema de gerenciamento de pacotes. Simplesmente não há como apt e dpkg saberem que tal software pode existir.

O local onde tal software está instalado não faz diferença: pode ser /opt ou /usr/local ou nos diretórios home dos usuários (caso em que até mesmo o administrador do sistema pode não estar ciente de sua presença), ou em qualquer lugar, .

Tecnicamente apt ou dpkg poderia até mesmo remover o software exigido por outro software que é parte do sistema de gerenciamento de pacotes, se o último software falhar ao declarar que depende do antigo Programas. No entanto, o processo para criar pacotes deb inclui automação para ajudar a evitar que os mantenedores de pacotes se esqueçam de declarar uma dependência como essa.

    
por 04.07.2015 / 18:03