Como excluir pacotes quebrados no ubuntu

38

Não consigo remover o pacote quebrado. Use o seguinte comando: sudo apt-get -f install mas eu recebo a seguinte resposta:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Eu tentei vários comandos como

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

Mas não obtive nenhum resultado. Não consigo instalar o sináptico. Alguma idéia de como posso remover o pacote quebrado?

Krasimir
fonte
Aqui poucas respostas sugeriram --force-remove-reinstreqe --force-overwrite. Observe que você deve usar esses dois (especialmente o primeiro) apenas se você for um especialista em Linux, pois isso pode danificar seu sistema completamente.
g_p

Respostas:

55

execute este comando para remover pacotes quebrados no ubuntu.

sudo dpkg --remove --force-remove-reinstreq package_name 

Após remover o pacote, atualize seu sistema com o comando

sudo apt-get update

reinicie o sistema após a atualização com êxito.

premal
fonte
5
Este comando deve ser sempre evitado, pois quebra o seu sistema mais de repara
Rancho
2
@rancho depende de qual pacote é.
Philip
nice one, a maneira como você gus package_name sempre escrevo, eu ainda vejo uma lista de 900 linhas em um formato louco, por exemplo: Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs ). esperar no LTS realmente fez esse truque maluco para mim.
precisa saber é
@rancho "quebra o sistema mais do que repara", você pode elaborar? man dpkgnão ajuda muito.
Stéphane Gourichon
Essa foi a única coisa que funcionou para mim. Eu quebrei meu mysql enquanto atualizava o pacote. Agora não consegui limpar ou reinstalar. Então isso salvou minha vida.
Ankit Singhaniya
11

Abra seu terminal e use o seguinte comando

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

Isso deve resolver seu problema.

g_p
fonte
11

Eu descobri que:

sudo dpkg --remove --force-remove-reinstreq <packagename>

Funciona melhor. Se ocorrer um erro de que não removerá um pacote porque depende de outro pacote, remova esse outro pacote também. Você precisará repetir essa etapa várias vezes e reinstalar os pacotes excluídos.

Essa force-remove-reinstreqé a "opção nuclear" de excluir um pacote. Ele só falha se houver outro pacote, dependendo do que você está prestes a excluir - Novamente, nesse caso, também o pacote dependente.

Bryan Wilcutt
fonte
A opção nuclear funcionava onde limpa, limpa, reinstala, remove automaticamente, através de ambos dpkge apt-getfalhou. Obrigado.
LAFK diz Restabelecer Monica
Esta é a melhor solução se você quiser apenas destruir tudo e começar de novo. Economizou muito tempo! (Também usei --purge after --remove)
andersevenrud
plase, u pode dar algumas dicas sobre como preencher esse package_namequando temos como 1000 linhas (alguns duplicados) nos arquivos de log Apt ..
nyxee
4

Isso corrigiu meu problema:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
Krasimir
fonte
Então, marque-a como a resposta correta.
26416 jarno
Funciona perfeitamente.
Shubham Patel 4/18
3

Abra seu terminal e cole estas linha após linha

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

então tente novamente

rɑːdʒɑ
fonte
2

O mesmo erro se repete. Se o fizermos apt-get cleane a apt-get -f installmenos que removamos os dados indesejados do/var/lib/dpkg/status arquivo no Ubuntu.

Suponha que precisamos remover o pacote quebrado do apache. Inicialmente, temos que abrir o arquivo de status e procurar o pacote apache. Remova toda a descrição do pacote e salve o arquivo de status. Então tente usar apt-get -f installe apt-get clean.

user649305
fonte
2

nada do acima funcionou para mim. eventualmente, editei o arquivo / var / lib / dpkg / status e removi os pacotes de lá.

Difícil eu não aconselharia fazer isso, apenas se algo mais falhar ...

BonifatiusK
fonte
Esta parece ser a única coisa que funcionou para mim. Mesmo a chamada 'opção nuclear' de --force-remove-reinstreq não pôde excluir o pacote incorreto. Obrigado senhor.
alex
1

Nenhuma das opções acima funcionou para mim

Eu usei sudo aptitude.

Ele encontrou o erro imediatamente e ofereceu opções. Você seleciona e corrige.

Aryeh Beitz
fonte
também o corrigi no debian - essa era a única solução para mim. Nenhum dos comentários anteriores funcionou para mim! Obrigado!
Hirbod
0

Aqui está um:

atualize sua lista de pacotes assim

 sudo apt-get update

limpe todos os pacotes parciais

 sudo apt-get autoclean

Agora limpe o cache do apt

 sudo apt-get clean

Agora remova quaisquer dependências desnecessárias

 sudo apt-get autoremove

a partir do comando acima, você pode identificar qualquer pacote quebrado e removê-lo à força dessa maneira

 sudo dpkg --remove --force-remove-reinstreq package_name

Finalmente limpe quaisquer outros pacotes com dependências

 sudo apt-get -f install 

Diga-me como vai.

Olu Smith
fonte
Eu acho que este comando está incorreto: `sudo dpkg --remove -force --force-remove-reinstreq package_name.
Juan Simón
Ji ... então qual é o caminho correto?
Olu Smith
0
  1. consulte todos os pacotes que estão instalados hoje ou ontem awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. wine-qqintl: i386 causou o problema, então removo o pacote sudo dpkg -r wine-qqintl:i386

  3. feito.

Ming Zhanghui
fonte
1
ok, podemos obter recentemente pacotes como que instalado, mas isso não responder à pergunta que pergunta como remover pacotes quebrados
Zanna
0

Eu tive um problema com o pacote kodi quebrado. Abri o gerenciador de pacotes sinápticos e usei o filtro "quebrado" para localizar o pacote e o marquei para remoção completa. Funcionou como um campeão.

Joe
fonte