Jak cofnąć przypadkową instalację wszystkich modułów Perla?

8

I próbował uaktualnić swoje moduły Perl przez CPAN, ale nie dostarczyć regex / nazwę modułu, aby uaktualnić: perl -MCPAN -e 'upgrade'; Mogę założyć tylko najgorsze (co wydaje się być obsługiwane przez dane wyjściowe perldoc perllocal), tj. Instalują się wszystkie moduły Perla z CPAN.

Jak mogę cofnąć ten bałagan? Chyba mogę to usunąć /usr/local/share/perl, ale jakie są tego konsekwencje?

Edycja: Nadal mam 95% wolnego miejsca na dysku twardym, więc nie jest to duży problem. Po prostu nie chcę dużo niepotrzebnego bałaganu. Zastanawiam się nad rmtym katalogiem, wykonaniem dpkg --purge perli ponownym apt-getprocesem instalacji CPAN. Ale czy jest to naprawdę konieczne, czy mogę po prostu usunąć niepotrzebne moduły /usr/local/share/perl?

paulrehkugler
źródło
Niektórzy uważają, że tak naprawdę nie jest dobrym pomysłem bezpośrednie usuwanie plików systemowych (i folderów). Być może lepiej jest użyć rzeczy takich jak apt-getlub Synaptic, aby system dokładnie usunął i zaktualizował wymagane bazy danych.
4
@ vasa1 Moduły Perla zainstalowane w CPAN nie są śledzone w ten sposób. Katalog, w którym znajdują się moduły, prawdopodobnie należy usunąć. Lub trzeba je ręcznie usunąć za pomocą CPAN i jest to cr * pshoot, jeśli będą przestrzegać dyrektywy deinstalacyjnej, a nawet make uninstallpolecenia. Niestety jest to zupełnie inny system zarządzania pakietami. stackoverflow.com/questions/2626449/…
Kevin Bowen
@maggotbrain, dzięki! Nie wiedziałem tego (Jedyny Perl, którego używam do drobiazgów, jest dostarczany z systemem operacyjnym).

Odpowiedzi:

5

Patrząc na to nieco bliżej, nie sądzę, że musisz lub powinieneś usunąć katalogi lub pliki w systemie.

Uruchomienie polecenia perl -MCPAN -e 'upgrade'z wiersza poleceń nie spowoduje zainstalowania dodatkowych modułów w systemie.

Będzie próbował jedynie zaktualizować zainstalowane moduły, poprzez system zarządzania pakietami CPAN, a nie przez Synaptic .

Jest to podobne do uruchamiania polecenia „r”, a następnie uruchamiania polecenia uaktualnienia w cpan[1]>wierszu polecenia. Zobacz tutaj .

CPAN i Synaptic to dwa osobne i odrębne systemy zarządzania pakietami.

To nie zainstaluje wszystkich możliwych modułów Perla z CPAN. Nie zmieni też istniejącego pakietu systemowego dB. Więc na pewno możesz to bezpiecznie wycofać.

Jest to jednak nadal potencjalnie ryzykowne, jeśli aplikacja lub system zależy od konkretnej wersji modułu Perla.

Jeśli przerwałeś proces aktualizacji, istnieje duże prawdopodobieństwo, że uniknąłeś uszkodzenia systemu.

Opcje odzyskiwania:

Z poziomu wiersza poleceń uruchom cpani uruchom polecenie r, aby wyświetlić listę zainstalowanych modułów i dostępnych aktualizacji. Na przykład, oto skrócone wyjście z mojego 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
....

Weźmy Eval::Closuremoduł dla tego przykładu. Powiedzmy, że pozwoliłeś na perl -MCPAN -e 'upgrade'wykonanie polecenia i masz już zainstalowaną wersję 0.08.

Patrząc na Synaptic, w tym przypadku pokaże, że najnowsza wersja w repozytorium nadal będzie wynosić 0,06 (konkretnie, w moim przypadku, 0,06-1).

Możesz przywrócić do wersji systemu, uruchamiając następujące polecenie:

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

Jeśli ręcznie zainstalowałeś moduły Perla i chcesz przywrócić je do poprzedniej wersji, musisz pobrać je ponownie (z source.cpan.org lub z innego miejsca) i ręcznie zainstalować ponownie.

Podsumowując: Aktualizacja modułów Perla w CPAN nie powinna wpływać na repozytorium systemu.

Powodzenia. Nie panikuj.

Kevin Bowen
źródło
Doskonała i dokładna odpowiedź! „Nie panikuj” jest tutaj kluczowym zwrotem. Widziałem wiele wyników i czytałem o używaniu argumentów do określenia modułu, więc zbyt szybko przeskoczyłem do wniosków. I był zaskoczony, że kiedyś prawie żadnego miejsca HD, ale wciąż widział niektóre moduły nie poznałam (prawdopodobnie ze względu na zależności). Dobrze wiedzieć, że nie wymaga to ode mnie pracy!
paulrehkugler
0

Poleciłbym zrobić: apt-get remove <installed-packages> && apt-get autoremove(aby usunąć zależności) && apt-get purge <installed-packages>(aby usunąć pliki konfiguracyjne po remaningu), możesz usunąć foldery, których nie potrzebujesz, ale to już powinno być zrobione dla ciebie :)

Stefan
źródło
2
PO dokonało tego za pośrednictwem CPAN. Czyszczenie nie pomoże, ponieważ moduły te nie podlegają zarządzaniu pakietami.
Kevin Bowen,