Wie mache ich eine versehentliche Installation aller Perl-Module rückgängig?

8

Ich habe versucht, meine Perl-Module über CPAN zu aktualisieren, habe jedoch keinen Regex- / Modulnamen für das Upgrade angegeben : perl -MCPAN -e 'upgrade'; Ich kann nur das Schlimmste annehmen (was von der Ausgabe von unterstützt zu werden scheint perldoc perllocal), dh alle Perl-Module von CPAN werden installiert.

Wie kann ich dieses Durcheinander rückgängig machen? Ich nehme an, ich kann entfernen /usr/local/share/perl, aber was bedeutet das?

Bearbeiten: Ich habe immer noch 95% freien Speicherplatz auf meiner Festplatte, daher ist dies kein großes Problem. Ich will einfach nicht viel unnötiges Durcheinander. Ich denke darüber nach, rmdieses Verzeichnis zu dpkg --purge perldurchsuchen, den apt-getCPAN-Installationsprozess durchzuführen und zu wiederholen . Aber ist es wirklich notwendig oder kann ich einfach die unnötigen Module entfernen /usr/local/share/perl?

paulrehkugler
quelle
Einige Leute halten es für keine gute Idee , Systemdateien (und Ordner) direkt zu löschen. Es ist möglicherweise besser, Dinge wie apt-getoder Synaptic zu verwenden, damit das System die Löschung gründlich durchführt und die erforderlichen Datenbanken aktualisiert.
4
@ vasa1 Perl-Module, die unter CPAN installiert sind, werden auf diese Weise nicht verfolgt. Das Verzeichnis, in dem sich die Module befinden, muss wahrscheinlich gelöscht werden. Oder man muss sie manuell über CPAN löschen und es ist ein Cr * Pshoot, wenn sie einer Deinstallationsanweisung oder sogar einem make uninstallBefehl folgen . Es ist leider ein völlig anderes Paketverwaltungssystem. stackoverflow.com/questions/2626449/…
Kevin Bowen
@maggotbrain, danke! Das wusste ich nicht. (Das einzige Perl, das ich für kleine Dinge benutze, kommt mit dem Betriebssystem.)

Antworten:

5

Bei näherer Betrachtung denke ich nicht, dass Sie Verzeichnisse oder Dateien auf Ihrem System löschen müssen oder sollten .

Wenn Sie den Befehl perl -MCPAN -e 'upgrade'über die Befehlszeile ausführen, werden keine zusätzlichen Module auf Ihrem System installiert.

Es wird nur versucht, installierte Module über das CPAN-Paketverwaltungssystem und nicht über Synaptic zu aktualisieren .

Dies ähnelt dem Ausführen des Befehls 'r' und dem anschließenden Ausführen des Befehls upgrade an der cpan[1]>Eingabeaufforderung. Siehe hier .

CPAN und Synaptic sind zwei separate und unterschiedliche Paketverwaltungssysteme.

Dadurch werden nicht alle möglichen Perl-Module von CPAN installiert. Das vorhandene Systempaket dB wird auch nicht geändert. Sie können dies also definitiv sicher zurückrollen.

Dies ist jedoch immer noch potenziell riskant, wenn eine Anwendung oder Ihr System von einer bestimmten Version eines Perl-Moduls abhängt.

Wenn Sie den Aktualisierungsprozess unterbrochen haben, stehen die Chancen gut, dass Sie eine Beschädigung Ihres Systems vermieden haben.

Wiederherstellungsoptionen:

Starten Sie cpanden Befehl r und führen Sie ihn über eine Befehlszeile aus, um die Liste der installierten Module und verfügbaren Upgrades anzuzeigen. Hier ist zum Beispiel die abgekürzte Ausgabe von meinem cpan:

cpan[7]> r

Package namespace         installed    latest  in CPAN file
App::Cpan                    1.5701      1.61  BDFOY/App-Cpan-1.61.tar.gz
DBD::mysql                    4.020     4.022  CAPTTOFU/DBD-mysql-4.022.tar.gz
DBI                           1.616     1.623  TIMB/DBI-1.623.tar.gz
DB_File                       1.821     1.827  PMQS/DB_File-1.827.tar.gz
Error                       0.17010   0.17019  SHLOMIF/Error-0.17019.tar.gz
Eval::Closure                  0.06      0.08  DOY/Eval-Closure-0.08.tar.gz
....

Nehmen Sie Eval::Closurefür dieses Beispiel das Modul. Angenommen, Sie lassen den perl -MCPAN -e 'upgrade'Befehl abschließen und haben jetzt Version 0.08 installiert.

Wenn Sie sich Synaptic ansehen, wird in diesem Fall angezeigt, dass die neueste Version im Repository immer noch 0,06 ist (insbesondere in meinem Fall 0,06-1).

Sie können ein Rollback auf Ihre Systemversion durchführen, indem Sie den folgenden Befehl ausführen:

sudo apt-get install --reinstall libeval-closure-perl

Wenn Sie Perl-Module manuell installiert haben und auf eine frühere Version zurücksetzen möchten, müssen Sie sie erneut herunterladen (entweder von source.cpan.org oder anderswo) und manuell neu installieren.

Zusammenfassend: Das Aktualisieren von Perl-Modulen in CPAN sollte sich nicht auf Ihr System-Repository auswirken.

Viel Glück. Keine Panik.

Kevin Bowen
quelle
Hervorragende und gründliche Antwort! "Keine Panik" ist hier der Schlüsselbegriff. Ich habe viele Ausgaben gesehen und gelesen, wie man Argumente verwendet, um das Modul zu spezifizieren, also bin ich zu schnell zu Schlussfolgerungen gesprungen. Ich war überrascht, dass ich kaum HD-Speicherplatz verwendet habe, aber ich sah immer noch einige Module, die ich nicht erkannte (wahrscheinlich aufgrund von Abhängigkeiten). Gut zu wissen, dass dies für mich keine Arbeit erfordert!
Paulrehkugler
0

Ich würde empfehlen, Folgendes zu tun: apt-get remove <installed-packages> && apt-get autoremove(um Abhängigkeiten zu entfernen) && apt-get purge <installed-packages>(um verbleibende Konfigurationsdateien zu entfernen), dann können Sie die Ordner entfernen, die Sie nicht benötigen, aber es sollte bereits für Sie erledigt sein :)

Stefan
quelle
2
Das OP hat dies über CPAN getan. Eine Bereinigung hilft nicht, da diese Module nicht unter Paketverwaltung stehen.
Kevin Bowen