Bezpiecznie odinstaluj pakiet w Gentoo


12

Chciałem odinstalować konkretny pakiet w Gentoo i przejrzałem stronę man emerge. Znalazłem --unmergeopcję:

OSTRZEŻENIE: Ta akcja może usunąć ważne pakiety! Usuwa wszystkie pasujące pakiety. Nie sprawdza to zależności, więc może usuwać pakiety niezbędne do poprawnego działania systemu. Argumentami mogą być atomy lub ebuildy. Na zależność świadomy wersji --unmerge użyć --depclean lub --prune .

Chciałbym jednak sprawdzić, czy pakiet, który chcę odinstalować, jest wymagany przez inny zainstalowany pakiet w systemie. --depcleani --prunenie zapewniaj tej funkcjonalności:

  • --depclean usuwa pakiety, które zostały zainstalowane jako zależności, ale nie są już potrzebne
  • --prune „usuwa z systemu wszystkie wersje pakietu z wyjątkiem najwyższej zainstalowanej”

Czy nie ma wersji sprawdzającej zależność --unmerge?

Odpowiedzi:


17

Nie wydaje mi się, żeby depcleandziałało tak, jak opisałeś. Robi to bez żadnych argumentów, ale jeśli podasz mu nazwę pakietu, działa to tak jak unmergez dodatkowym sprawdzaniem zależności. Od emerge(1):

Depclean służy jako wersja zależna od zależności --unmerge. Gdy otrzyma jeden lub więcej atomów, rozłączy dopasowane pakiety, które nie mają odwrotnych zależności. Użyj --depcleanrazem z, --verboseaby pokazać odwrotne zależności.

Zawsze używam --depclean( -c) do rozłączania poszczególnych pakietów; to działa dobrze


6

gentoolkit przychodzi z pomocą:

equery d <atom>

Możesz najpierw sprawdzić zależności, a następnie przejść do usunięcia pakietu po sprawdzeniu jego zależności.


5

Kolejny sposób na osiągnięcie tego samego rezultatu (chociaż nie jest to polecenie, które łączy się ze sprawdzaniem zależności):, emerge --deselect packagektóre usuwa pakiet z pliku world. Teraz uruchomienie emerge --depcleanusunie ten pakiet, jeśli nie jest wymagany przez żaden inny pakiet.


Czy to oznacza, że emerge --depcleanusuwa wszystkie pakiety, które zostały zainstalowane przy użyciu emerge --oneshot(chyba że te pakiety są potrzebne pakietowi ze świata)?
Daniel Kullmann

@danielkullmann tak. oblicza cały wykres zależności i usuwa to, czego nie wyciąga żadna paczka na świecie. Możesz użyć, emerge --noreplace --selectaby dodać już zainstalowane pakiety bez ich ponownej kompilacji, btw.
njsg,

1

Czasami emerge --unmergewyświetla ten komunikat ostrzegawczy:

 * This action can remove important packages! In order to be safer, use
 * `emerge -pv --depclean <atom>` to check for reverse dependencies before
 * removing packages.

Wygląda na to, że jest to zalecany sposób sprawdzania zależności przed rozpakowaniem pakietu. Nadal mam jednak nadzieję, że istnieje lepszy, bardziej zautomatyzowany sposób na osiągnięcie tego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.