Comment réinstaller un paquet en utilisant 'apt-get'?

186

Il semble que mon aptitudeest en quelque sorte brisé:

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]

Je voudrais donc réinstaller aptitudeen utilisant apt-get.

Malheureusement, il semble apt-getne pas avoir une option de réinstallation.

Comment pourrais-je me remettre aptitudeau travail?

Il est possible que j'ai trouvé la cause fondamentale du segfault d'aptitude. Voici comment je peux le reproduire:

  1. 'ssh' connexion à distance sur la machine Debian via le terminal rxvt de Cygwin (à partir d'une édition allemande de Windows 7 64 bits).
  2. Agrandir la fenêtre rxvt afin qu'elle couvre deux moniteurs (oui, j'ai deux moniteurs)
  3. Courez aptitude update. Remarque: lorsque je redimensionne le terminal rxvt à la normale, je n'ai pas ces erreurs de segmentation!
Vokuhila-Oliba
la source

Réponses:

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

Donc, pour l'utiliser pour réinstaller aptitudeutiliser:

sudo apt-get install --reinstall aptitude
utilisateur23307
la source
14
qu'est-ce que -A5tu attrapes?
Vokuhila-Oliba
86
homme grep | grep - "-A"
grawity
34
Qu'est-ce que --tu attrapes?
Desty
13
man getopt, regardez sousPARSING
Tino
28
-A5affiche la ligne correspondante plus les 5 lignes suivantes. --arrête l'analyse des options, interprétant ainsi tout ce qui vient après comme arguments de position, évitant de devoir échapper au tiret de l'expression -Aqui serait autrement interprété comme une option de grep lui-même.
Jjmontes
115

Vous pouvez réinstaller un paquet avec sudo apt-get install --reinstall packagename. Cela supprime complètement le package (mais pas les packages qui en dépendent), puis réinstalle le package.

Cela peut être pratique lorsque le paquet contient de nombreuses dépendances inverses.

Milad Khajavi
la source
10
Merci d’être la seule réponse correcte, complète et non sournoise.
Cerin
6
@Cerin: Je ne dirais pas que les autres réponses sont trop sournoises: même la "lire la page de manuel" a donné la réponse ainsi que la façon de la trouver.
David Spillett
45
@ DavidSpillett, je suis fortement en désaccord. Les pages de manuel sont généralement très mal rédigées et très hostiles aux débutants. Par exemple, le paragraphe de l'option "--reinstall" n'indique pas que vous devez l'utiliser avec l'argument "install". Un débutant peut demander à juste titre "pourquoi dois-je lui dire d'installer ET de réinstaller?" Une réponse à RTFM est le pire type de réponse et cela me fait mal de la voir avec le plus grand nombre de votes, en particulier lorsqu'une réponse complète et réellement utile se trouve au bas de la liste.
Cerin
20

Parfois, vous devez également restaurer des fichiers de configuration! pas seulement réinstaller.

sudo apt-get install --reinstall xxxx

Réinstallez l'application, conserve les fichiers de configuration.

Cela peut être utile, mais vous devez parfois recommencer à zéro. Voici ce que j’utilise:

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

ensuite

sudo apt-get install xxxx
Andreskwan
la source
6
Et si vous avez besoin de restaurer uniquement les fichiers de configuration, dans certains cas (s’ils sont gérés par ucf), vous devriez les utiliser UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname].
Skippy le Grand Gourou
2
Cette réponse mérite un gros vote. C’est ce dont vous avez besoin lorsque vous souhaitez "réinstaller intégralement" un paquet. Par exemple, une simple - installation de vsftpd ne recrée pas le fichier de configuration, même si le fichier n'existe plus. Un "Supprimer + Purger + (Ré) installer" effectue le travail à la place.
Kar.ma
13

Vous devriez être sûr de supprimer aptitude et de le réinstaller, car cela n’affectera pas les autres utilitaires apt. Donc: apt-get remove aptitudesuivi de apt-get install aptitude, ou si cela échoue toujours, essayez apt-get purge aptitudesuivi de apt-get install aptitude.

Avant de procéder de l'une des manières ci-dessus, je recommande un système de fichiers complet et une vérification des blocs défectueux au cas où un problème à l'origine du problème (selon le problème, s'il en existe un, une activité supplémentaire pourrait aggraver la situation). Assurez-vous également de vérifier ce qui sera supprimé à l'étape de suppression / purge avant de le laisser continuer (il devrait s'interrompre pour demander la permission si quelque chose de plus est modifié à la suite de la suppression de ce paquet), afin de vérifier à nouveau que est sécurisé.

David Spillett
la source
Merci beaucoup! apt-get removesuivi de apt-get installfait le tour!
Vokuhila-Oliba
Il y a longtemps que j'ai fait des choses semblables a full filesystem checkou semblables. Pourriez-vous s'il vous plaît me donner un petit indice comment faire cela?
Vokuhila-Oliba
1
fsck -f <block_device>comme fsck /dev/sda1. Le système de fichiers devra être démonté ou monté en lecture seule à ce moment-là. Comme il est probable que ce soit votre système de fichiers racine, vous devrez redémarrer en mode mono-utilisateur ou démarrer à partir de quelque chose d'autre, tel qu'un cd en direct.
David Spillett
2
Vous pouvez utiliser tune2fspour marquer le système de fichiers comme ayant été monté plus de fois que sa limite définie, ce qui devrait forcer une vérification au prochain démarrage. En supposant que le système de fichiers soit ext2 / 3/4: tune2fs -C 99 <device>ou que, si la vérification basée sur le nombre de montages est désactivée, activez-le en même temps avec quelque chose comme tune2fs -c 17 -C 99 <device>.
David Spillett
2
tactile / forcefsck; redémarrage
utilisateur23307
1
sudo apt remove --purge package
sudo apt install package

C'est comme si vous n'aviez jamais installé le paquet auparavant. Je le fais souvent avec du mouvement et de telles choses.

Niwla23
la source