Como remover todos os pacotes i386 do Ubuntu 64bit?

Respostas:

15

Se eles não estiverem no seu caminho, eu os deixaria onde estão.
Se você insistir em excluir, use dpkg -l | grep i386para criar uma lista de pacotes i386. Você pode excluí-los após uma verificação cuidadosa com algo parecido sudo apt-get purge <package-name>.

Henk
fonte
2
Exceto que a aptidão é quebrado em multiarch , de modo que não vai funcionar tão bem: P
amaranto
apt-get purge <package-name>ainda deve funcionar, no entanto.
Elias Kagan
2
"após verificação cuidadosa" - isso é vago. Por favor, seja mais claro.
Kevinarpe
11
Eu tenho um sistema i386 em um usb, às vezes eu o uso em máquinas amd64, agora eu só queria fazer o inverso, então, depois de executar, dpkg -l | grep amd64recebi um pacote i386 na minha lista, ou seja amd64-microcode 3.20160316.3 i386, acho que o ':' no padrão grep é importante ! ( dpkg -l | grep ":amd64")
Jonas
24

As soluções automatizadas superiores são perigosas e nem sempre estão funcionando (1), então aqui outra maneira

sudo aptitude purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

ou

sudo apt-get purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

(Tente usar sempre e apenas uma das ferramentas. Como o aptitude é melhor quando há problemas de dependência, eu prefiro isso.)

Boa ideia também

dpkg --remove-architecture i386

e talvez

dpkg --print-foreign-architectures

(1) Os comandos anteriores também listam pacotes com apenas i386 em seu nome (embora sejam para arquitetura de 64 bits), a expressão regular não funcionou e o dpkg mostra pacotes que já foram removidos, mas ainda têm arquivos de configuração ( dpkg -l mostra "rc" em vez de "ii" como status).

PythoNic
fonte
Como você está usando de awkqualquer maneira, você também pode se livrar da grepinvocação. Além disso, $()é preferível em vez de backticks. Acabei de me livrar dos meus pacotes i386 usando este comando com base no comando que você deu:sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }')
scy
23

Eu blitzed todos os meus pacotes de 32 bits como este:

sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`
Mathnode
fonte
11
como fazer esse tipo de comando, eu sei apt-get e grep, mas o que é awk '{print $ 1}', só quero saber.
Sukupa91
incrível, e eu consegui remover a arquitetura i386 agora, mas quando eu faço dpkg -l | grep i386para verificar se os pacotes ainda existem alguma idéia, também +1 para o comentário anterior e meu palpite está relacionado às técnicas de script de shell
Ismail Marmoush
Provavelmente, não há respostas porque os comentários não são o lugar para um tutorial do awk. Esse pedaço de awk está imprimindo apenas o primeiro campo de cada linha sendo inserida. O separador de campos padrão do Awk é um espaço "" ".
precisa saber é
Terminar comsudo dpkg --remove-architecture i386
Serge Stroobandt 11/04
9

Caso alguém esteja se perguntando, há uma maneira muito mais sã e graciosa de fazer isso. A última resposta anterior espera fazer o mesmo, mas essa pesquisa falha porque as arquiteturas não fazem parte dos nomes dos pacotes, exceto em casos especiais.

como root (ou com sudo) execute:

aptitude remove ~i~ri386

Se você ainda não usa o aptitude sobre o apt-get, faça. É realmente excelente. Você pode encontrar uma lista dos termos de pesquisa do aptitude aqui .

Patrick
fonte
6

Aqui está outra maneira que apresenta um risco ainda menor:

apt-get remove "^.*:i386$"

Isso corresponderá especificamente apenas aos pacotes que terminam com ":i386", que é a convenção de nomenclatura padrão para todos os i386pacotes Debian de arquitetura.

kevinarpe
fonte
por que remover a purga em excesso?
Lotus
11
@Lotus: Não conheço a diferença. Você pode explicar, por favor? Talvez possamos atualizar esta resposta para melhorá-la.
Kevinarpe
purga leva os arquivos de configuração também e todos os diretórios Remant IIRC
Lotus
2
@Lotus eu usei purga e funcionou em 14.04. Isso só funcionou para mim depois de remover as aspas e o código. sudo apt-get purge .*:i386
Antonios Hadjigeorgalis
6

O guia multiarch do debian menciona este comando :,apt-get purge ".*:<arch>" que seria assim para i386:

apt-get purge ".*:i386"

Você pode remover a arquitetura do dpkg:

dpkg --remove-architecture i386
Francisco Couzo
fonte