Questão Como reinstalar um pacote usando o apt-get?


Parece que meu aptitude está de alguma forma quebrado

sudo aptitude update
0% [Working]Segmentation fault

dmesg
[223282.616599] aptitude[30972]: segfault at 67707f ip 7f954dcfae5d sp 7ffff5a5f950 error 4 in libapt-pkg-libc6.7-6.so.4.6.0[7f954dca5000+bd000]

então eu gostaria de reinstalar aptitude usando apt-get

Infelizmente parece apt-get não tem uma opção de reinstalação.

Alguma idéia de como eu poderia fazer com que o aptitude funcionasse de novo?

Editar : É possível que eu tenha encontrado a causa raiz do segfault do aptitude. Aqui está como eu posso reproduzi-lo:

  1. ssh login remoto na máquina debian via terminal rxvt da cygwin (a partir de uma edição alemã de 64 bits do Windows-7).
  2. ampliar a janela rxvt para que ela atravesse dois monitores (sim, eu tenho dois monitores)
  3. corre aptitude update. Nota: quando eu redimensiono o terminal rxvt para o normal, então eu não tenho esses segfaults!

167


origem




Respostas:


$ man apt-get | grep reinsta -A2
       --reinstall
           Re-Install packages that are already installed and at the newest
           version. Configuration Item: APT::Get::ReInstall.

Então, para usá-lo para reinstalar aptitude usar:

sudo apt-get install --reinstall aptitude

283



o que é isso -A5 você está ganhando? - Vokuhila-Oliba
homem grep | grep - "-A" - grawity
O que é isso -- você está ganhando? - Desty
man getopt, olhe sob PARSING - Tino
-A5 mostra a linha combinada mais as 5 linhas seguintes. -- pára a análise de opções, interpretando assim qualquer coisa que vem depois como argumentos posicionais, evitando ter que escapar do traço na expressão -A o que de outra forma seria interpretado como uma opção para grep em si. - jjmontes


Você pode reinstalar um pacote com sudo apt-get install --reinstall packagename. Isso remove completamente o pacote (mas não os pacotes que dependem dele) e, em seguida, reinstala o pacote.

Isso pode ser conveniente quando o pacote tem muitas dependências reversas.


98



Obrigado por ser a única resposta correta, completa e não sarcástica. - Cerin
@Cerin: Eu não diria que as outras respostas são excessivamente sarcásticas: até mesmo a "página do manual", na verdade, deu a resposta e como encontrá-la. - David Spillett
@DavidSpillett, eu discordo totalmente. As páginas do manual são geralmente muito mal escritas e são muito hostis aos novatos. Por exemplo, o parágrafo na opção "--reinstall" não menciona que você deve usá-lo com o argumento "install". Um novato pode perguntar: "Por que preciso dizer para instalar e reinstalar?" Uma resposta dizendo a alguém para RTFM é o pior tipo de resposta e me dói vê-lo com o maior número de votos, especialmente quando uma resposta completa e realmente útil está próxima do fim. - Cerin


Você deve estar seguro para remover o aptitude e reinstalar, já que isso não afetará os outros utilitários apt. Assim: apt-get remove aptitude Seguido por apt-get install aptitude, ou se isso ainda falhar tente apt-get purge aptitude Seguido por apt-get install aptitude.

Antes de fazer qualquer um dos itens acima, recomendo uma verificação completa do sistema de arquivos e do bloco defeituoso no caso de haver um problema que causou o problema (dependendo do problema, se houver, outra atividade pode piorar as coisas). Além disso, certifique-se de rever o que será removido na etapa de remoção / remoção antes de continuar (deve pausar para pedir permissão se alguma coisa extra for alterada como resultado da remoção desse pacote), para verificar novamente se isso foi feito. é seguro.


12



Muito obrigado! apt-get remove Seguido por apt-get install fez o truque! - Vokuhila-Oliba
Há muito tempo atrás eu fiz coisas como a full filesystem check ou similar. Você poderia por favor me dar uma breve dica de como fazer isso? - Vokuhila-Oliba
fsck -f <block_device> tal como fsck /dev/sda1. O sistema de arquivos precisará ser desmontado ou montado somente para leitura no momento, assim como é provável que seja o seu sistema de arquivos raiz, você deve reinicializar no modo de usuário único ou inicializar a partir de algo como um CD ao vivo. - David Spillett
Você pode usar tune2fs para marcar o sistema de arquivos como tendo sido montado mais vezes do que seu limite definido, isso deve forçar uma verificação na próxima inicialização. Assumindo que o sistema de arquivos é ext2 / 3/4: tune2fs -C 99 <device>, ou no caso de ter a verificação baseada na contagem de montagens desativada, ligue-a ao mesmo tempo com algo como tune2fs -c 17 -C 99 <device>. - David Spillett
toque / forcefsck; reinicie - user23307


Às vezes você precisa restaurar arquivos de configuração também! não apenas reinstalar.

sudo apt-get install --reinstall xxxx

Reinstale o aplicativo, mantenha os arquivos de configuração.

Isso pode ser útil, mas às vezes você precisa começar de novo, então o que eu uso é isto:

sudo dpkg -r xxxx //to remove that xxxx package
sudo dpkg -P xxxx //to purge all related files

então

sudo apt-get install xxxx

12



E se você precisar restaurar apenas arquivos de configuração, em alguns casos (se eles forem gerenciados pelo ucf) você deve usar UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]. - Skippy le Grand Gourou