Wie installiere ich ein Paket mit 'apt-get' neu?

186

Es scheint, dass meine aptitudeirgendwie kaputt ist:

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]

Also möchte ich neu installieren aptitudemit apt-get.

Leider scheint apt-getes keine Neuinstallationsoption zu geben.

Wie könnte ich wieder aptitudezur Arbeit kommen?

Es ist möglich, dass ich die Ursache für den Segfault von aptitude gefunden habe. So kann ich es reproduzieren:

  1. 'ssh' Remote-Login in den Debian-Rechner über Cygwins rxvt-Terminal (von einer 64-Bit-deutschen Windows 7-Edition).
  2. Vergrößern Sie das RXVT-Fenster so, dass es sich über zwei Monitore erstreckt (ja, ich habe zwei Monitore)
  3. Rennen aptitude update. Hinweis: Wenn ich die Größe des RXVT-Terminals auf "normal" stelle, treten diese Segmentierungsfehler nicht auf.
Vokuhila-Oliba
quelle

Antworten:

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.

Um es also zur Neuinstallation zu aptitudeverwenden , verwenden Sie :

sudo apt-get install --reinstall aptitude
user23307
quelle
14
was -A5greppst du da
Vokuhila-Oliba
86
Mann grep | grep - "-A"
grawity
34
Was --greppst du da?
Desty
13
man getopt, schauen Sie unterPARSING
Tino
28
-A5zeigt die übereinstimmende Zeile plus die folgenden 5 Zeilen. --stoppt das Parsen von Optionen und interpretiert so alles, was danach kommt, als Positionsargumente, ohne dass der Bindestrich im Ausdruck umgangen werden muss, -Ader andernfalls als Option interpretiert würde, sich selbst zu begreifen.
JJMontes
115

Sie können ein Paket mit neu installieren sudo apt-get install --reinstall packagename. Dadurch wird das Paket vollständig entfernt (jedoch nicht die Pakete, die davon abhängen). Anschließend wird das Paket erneut installiert.

Dies kann praktisch sein, wenn das Paket viele umgekehrte Abhängigkeiten aufweist.

Milad Khajavi
quelle
10
Vielen Dank, dass Sie die einzig richtige, vollständige und unkomplizierte Antwort sind.
Cerin
6
@Cerin: Ich würde die anderen Antworten nicht allzu snarky nennen: Sogar die "read the man page", die man tatsächlich gab, gab die Antwort und wie man sie findet.
David Spillett
45
@ DavidSpillett, ich stimme überhaupt nicht zu. Die Manpages sind normalerweise sehr schlecht geschrieben und für Neulinge sehr unfreundlich. Der Absatz über die Option "--reinstall" erwähnt beispielsweise nicht, dass Sie ihn mit dem Argument "install" verwenden müssen. Ein Neuling könnte zu Recht fragen: "Warum muss ich ihm mitteilen, dass er installieren UND neu installieren soll?" Eine Antwort, die jemandem zu RTFM sagt, ist die schlechteste Antwort, und es tut mir leid, sie mit den meisten Stimmen zu sehen, besonders wenn eine vollständige und tatsächlich hilfreiche Antwort ganz unten ist.
Cerin
20

Manchmal müssen Sie auch Konfigurationsdateien wiederherstellen! nicht nur neu installieren.

sudo apt-get install --reinstall xxxx

Installieren Sie die Anwendung neu und behalten Sie die Konfigurationsdateien bei.

Das könnte hilfreich sein, aber manchmal muss man neu anfangen. Ich benutze also Folgendes:

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

dann

sudo apt-get install xxxx
andreskwan
quelle
6
Und wenn Sie nur Konfigurationsdateien wiederherstellen müssen, sollten Sie in einigen Fällen (wenn sie von ucf verwaltet werden) verwenden UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname].
Skippy le Grand Gourou
2
Diese Antwort verdient eine GROSSE Aufwertung. Dies ist das, was Sie benötigen, wenn Sie ein Paket "vollständig neu installieren" möchten. Zum Beispiel erstellt eine einfache --Reinstallation von vsftpd die Konfigurationsdatei nicht neu, selbst wenn die Datei nicht mehr existiert. Ein "Entfernen + Löschen + (Neu-) Installieren" erledigt stattdessen den Job.
Kar.ma
13

Sie sollten sicher sein, Aptitude zu entfernen und neu zu installieren, da dies die anderen Apt-Dienstprogramme nicht beeinträchtigt. Also: apt-get remove aptitudegefolgt von apt-get install aptitude, oder wenn das immer noch fehlschlägt, versuchen Sie apt-get purge aptitudegefolgt von apt-get install aptitude.

Bevor Sie eine der beiden oben genannten Aktionen ausführen, empfehle ich eine vollständige Überprüfung des Dateisystems und der fehlerhaften Blöcke, falls dort ein Problem vorliegt, das das Problem verursacht hat (je nach Problem kann eine weitere Aktivität die Situation verschlimmern). Stellen Sie außerdem sicher, dass Sie überprüfen, was im Schritt "Entfernen / Löschen" entfernt wird, bevor Sie fortfahren (es sollte angehalten werden, um Erlaubnis zu fragen, wenn aufgrund des Entfernens dieses einen Pakets zusätzliche Änderungen vorgenommen werden), um zu überprüfen, ob dies der Fall ist ist sicher.

David Spillett
quelle
Danke vielmals! apt-get removegefolgt von apt-get installhat den Trick gemacht!
Vokuhila-Oliba
Es ist lange her, dass ich Dinge wie a full filesystem checkoder ähnlich gemacht habe. Könnten Sie mir bitte einen kurzen Hinweis geben, wie das geht?
Vokuhila-Oliba
1
fsck -f <block_device>wie fsck /dev/sda1. Das Dateisystem muss zu diesem Zeitpunkt nicht gemountet oder schreibgeschützt gemountet sein, damit es sich wahrscheinlich um Ihr Root-Dateisystem handelt. Starten Sie das System im Einzelbenutzermodus oder von einer anderen CD.
David Spillett
2
Sie können tune2fsdas Dateisystem so kennzeichnen, dass es mehr als das festgelegte Limit eingehängt wurde, wodurch beim nächsten Start eine Überprüfung erzwungen werden sollte. Angenommen, das Dateisystem ist ext2 / 3/4: tune2fs -C 99 <device>oder wenn Sie die zählbasierte Überprüfung für Ladevorgänge deaktiviert haben, schalten Sie es gleichzeitig mit so etwas wie ein tune2fs -c 17 -C 99 <device>.
David Spillett
2
touch / forcefsck; reboot
user23307
1
sudo apt remove --purge package
sudo apt install package

Das ist, als hättest du das Paket noch nie installiert. Ich mache das oft mit Bewegung und solchen Dingen.

Niwla23
quelle