Mam scenariusz, w którym chciałbym usunąć zestaw pakietów, które mogą lub nie mogą być zainstalowane, i chciałbym, aby apt-get usunął te, które są, i po cichu zignorował te, które nie są. Coś jak:
apt-get remove foo bar baz
który, gdyby zainstalowano foo i bar, ale nie był baz, usunie foo i bar bez narzekań na baz. Czy jest na to sposób?
Rzeczy, które próbowałem, ale nie działały, z cup-dbg jako moim faktycznie zainstalowanym pakietem kozła ofiarnego do usunięcia:
jcp@a-boyd:~$ sudo apt-get remove -y cups-dbg bogus-package
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package bogus-package
jcp@a-boyd:~$ sudo apt-get remove --ignore-missing cups-dbg bogus-package
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package bogus-package
jcp@a-boyd:~$ sudo apt-get remove --fix-broken cups-dbg bogus-package
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package bogus-package
Wiem, że mógłbym to zrobić za pomocą skryptu powłoki i odrobiny dpkg --list
magii, ale chciałbym uniknąć złożoności, która nie jest absolutnie konieczna.
Odpowiedzi:
Czy powrót do narzędzia niższego poziomu, takiego jak dpkg, jest opcją?
Aby usunąć pliki konfiguracyjne pakietów, użyj purge jak poniżej
źródło
Używam
apt-get remove --purge
(akaapt-get purge
) dla zależności następującej po liście pakietów. Aby obsłużyć pakiety, które nie istnieją, odfiltrowuję pakiety, które nie są zainstalowane za pomocą następującego skryptu.źródło
W przypadku Debiana ≤ 9 możliwe jest użycie
aptitude
zamiastapt-get
:Aptitude drukuje ostrzeżenia, ale mimo to usuwa pakiety:
Jeśli chcesz wyczyścić (usunąć pliki konfiguracyjne pakietu) zamiast usunąć (zachować pliki konfiguracyjne), pamiętaj, że
aptitude
usuwa tylko podane bezpośrednio pakiety, a nieużywane zależności są tylko usuwane. Możesz jednak wyczyścić wszystkie usunięte pakiety w drugim kroku:źródło
bogus-package
prostu miał złe imię. tak więc, gdybyśmy mieli 500 pakietów, lepiej byłoby też przeanalizować fałszywe pakiety i wykonać kilka sztuczek (na przykład liczby za brakującą nazwą itp.). Czy możesz udzielić wskazówek, jak to zrobić? ..Couldn't find any package whose name or description matched 'QUX' Unable to apply some actions, aborting
Kolejny mały 2-liniowy, jeśli ktoś potrzebuje użycia apt:
Wyjaśnienie:
źródło