Desinstale com segurança um pacote no Gentoo

12

Eu queria desinstalar um pacote específico no Gentoo e navegar pela página de manual emerge. Eu encontrei a --unmergeopção:

AVISO: Esta ação pode remover pacotes importantes! Remove todos os pacotes correspondentes. Isso não verifica as dependências, portanto, pode remover os pacotes necessários para a operação correta do sistema. Seus argumentos podem ser átomos ou ebuilds. Para uma versão com reconhecimento de dependência do --unmerge , use --depclean ou --prune .

No entanto, eu gostaria de verificar se o pacote que eu quero desinstalar é necessário para qualquer outro pacote instalado no sistema. --depcleane --prunenão forneça essa funcionalidade:

  • --depclean remove os pacotes que foram instalados como dependências, mas não são mais necessários
  • --prune "remove todos, exceto a versão mais alta instalada de um pacote do seu sistema"

Não existe uma versão de verificação de dependência --unmerge?

daniel kullmann
fonte

Respostas:

17

Eu não acho que depcleanfunciona da maneira que você descreveu. Sem argumentos, mas se você der um nome de pacote, ele funcionará como unmergeuma verificação de dependência adicional. De emerge(1):

Depclean serve como uma versão com reconhecimento de dependência --unmerge. Quando recebe um ou mais átomos, ele une os pacotes correspondentes que não têm dependências reversas. Use --depcleanjunto com --verbosepara mostrar dependências reversas.

Eu sempre uso --depclean( -c) para unmerge pacotes individuais; Funciona bem

Michael Mrozek
fonte
6

O gentoolkit vem para ajudar:

equery d <atom>

Você pode verificar as dependências primeiro e depois remover o pacote após inspecionar suas dependências.

Spidey
fonte
5

Outra maneira de obter o mesmo resultado (embora não seja um comando que mergulha na verificação de dependência): emerge --deselect package que remove o pacote do arquivo mundial. Agora, a execução emerge --depcleanremoverá esse pacote se não for exigido por nenhum outro pacote.

njsg
fonte
Isso significa que emerge --depcleanremove todos os pacotes que foram instalados usando emerge --oneshot(a menos que esses pacotes sejam necessários por um pacote do mundo)?
Daniel kullmann 11/07/12
@danielkullmann yes. ele calcula todo o gráfico de dependência e remove o que não é puxado por nenhum pacote no mundo. Você pode usar emerge --noreplace --selectpara adicionar pacotes já instalados sem recompilá-los, btw.
N
1

As vezes, emerge --unmerge dá esta mensagem de aviso:

 * This action can remove important packages! In order to be safer, use
 * `emerge -pv --depclean <atom>` to check for reverse dependencies before
 * removing packages.

Parece que esta é a maneira recomendada de verificar a dependência antes de desmembrar um pacote. Ainda espero, porém, que exista uma maneira melhor e mais automatizada de conseguir isso.

daniel kullmann
fonte