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.

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

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.


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

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.