Kiedy użyłbyś apt-get remove over apt-get autorove?

16

Rozumiem, że apt-get removeusuwa pakiety i apt-get autoremovema na celu usunięcie wszystkich pakietów, które zostały zainstalowane w celu spełnienia zależności dla danego pakietu. Na przykład, jeśli zainstalowałem LibreOffice i miał on zależności od powiedzmy Java i zainstalowałem go jako część instalacji podczas uruchamiania polecenia apt-get libreoffice, dlaczego miałbym uruchomić polecenie, apt-get remove libreofficea następnie apt-get autoremove? Czy nie jestem w stanie po prostu uruchomić polecenia apt-get autoremove libreoffice? Albo jest połączenie apt-get removei apt-get autoremovedo innych celów?

PeanutsMonkey
źródło

Odpowiedzi:

11

To zależy od tego, jak bardzo ufasz modułowi do śledzenia zależności. Chociaż prawie zawsze są poprawne, są chwile, w których chciałbyś pozostać zależnością, szczególnie gdy jesteś programistą lub zaawansowanym użytkownikiem instalującym oprogramowanie, którego nie ma w repozytorium.

Jeśli zawsze instalujesz oprogramowanie przez apt-get, bez wyjątku, i ufasz, że wszystkie zależności są poprawne (którymi zwykle są), możesz użyć apt-get autoremovei zyskać niewielką ilość miejsca na dysku i zmniejszyć narażenie na potencjalne luki w zabezpieczeniach, mając usuwa pakiety, które nie mają już pakietów, które ich potrzebują.

Ale jeśli instalujesz oprogramowanie ręcznie, tworzysz oprogramowanie lub nie chcesz radzić sobie z możliwym błędem zależności, to nie używanie autorove do usuwania potencjalnie nieużywanych pakietów jest prawdopodobnie bezpieczniejszym wyborem. Niezależnie od tego, czy korzystasz apt-get autoremoveod czasu do czasu, czy nie, zawsze usuniesz oprogramowanie, którego używaszapt-get remove Package

Na przykład, jeśli zainstaluję AwesomePackage, może to zależeć AwesomeLibrary, a zatem AwesomeLibraryzostanie automatycznie zainstalowane jako zależność . Kiedy AwesomePackageusunę za pomocą autoraove, dopóki żaden inny pakiet AwesomeLibrarynie będzie zależny, zostanie również odinstalowany. Ale jeśli SuperPackageteż wymaga AwesomeLibrary, lub gdybym sam zainstalował się AwesomeLibraryjawnie, zamiast automatycznie wprowadzać go jako zależność ( apt-get install AwesomeLibrary), autorove nie pozbyłby się go.

Powodem, dla którego nie jest to domyślne, jest to, że AwesomeLibrarynieużywanie w systemie jest bardzo drobnym problemem. Prawie nigdy nie spowoduje problemów, a większość zależności nie zajmuje dużo miejsca. Istnieją wyjątki, ale czasy, w których usunięcie zależności spowoduje problemy, będą większe niż czasy, w których rozwiąże lub zapobiegnie problemowi.

Myrddin Emrys
źródło
Przepraszam Myrddin Emrys. Zgubiłeś mnie tam. Pozwól, że spróbuję zrozumieć, co powiedziałeś. Na przykład, jeśli zainstalowałem libreoffice przy użyciu apt-get, zainstalowałbym całą gamę zależności, zakładając, że nie zainstalowałem ich jeszcze. Teraz, gdy zdecyduję się pozbyć libreoffice, zakładam, że bym uciekłapt-get remove libreoffice
PeanutsMonkey
Jeśli chciałem, aby zależności, które zainstalował, pozostały, czy to prawda? Gdybym chciał pozbyć się zarówno libreoffice, jak i powiązanych z nim zależności, zakładając, że nie był używany przez inny program, czy biorę to, czy uruchomiłbym polecenie apt-get autoremovelibreoffice? Czy to jest poprawne?
PeanutsMonkey,
To jest absolutnie poprawne @PeanutsMonkey. Autoremove usunie również inne pakiety , od których zależny jest pakiet nazwany, jeśli nie są już przez nic wymagane i nie zostały specjalnie zainstalowane celowo.
Myrddin Emrys
W rzeczywistości nie jest to absolutnie poprawne; W odpowiedzi miałem niepoprawną składnię (jak wskazał @cooper). Poprawiłem to w powyższej odpowiedzi. apt-get autoremoveto osobne polecenie apt-get remove Package, przepraszam za początkowe dezinformacje.
Myrddin Emrys
Dzięki, Myrddin Emrys. Przepraszam, jeśli jestem n00b. Kiedy tak mówisz There are exceptions, but the times when removing a dependancy will cause problems outnumber the times when it will solve or prevent a problem. Co miałeś dokładnie na myśli?
PeanutsMonkey,
12

Można znaleźć opis Usuń , autoremove , czystki , czystym i Autoclean , jak i składni w manpages dla apt-get: man apt-get.

Jeśli nadal nie jesteś pewien po przeczytaniu go (byłem) najlepszym sposobem na wyjaśnienie tego jest wypróbowanie go.

Poniżej znajduje się przykład pełnego drzewa zależności dla vima :

drzewo zależności vim

Możesz to uzyskać za pomocą:

apt-rdepends -d vim > vim.dot
dotty vim.dot

Możesz również uzyskać listę bezpośrednich zależności za pomocą apt-cache depends( więcej informacji zawiera sekcja Deklarowanie relacji między pakietami ):

$ apt-cache depends vim
vim
  Depends: vim-common
  Depends: vim-runtime
  Depends: libacl1
  Depends: libc6
  Depends: libgpm2
  Depends: libselinux1
  Depends: libtinfo5
  Suggests: <ctags>
    exuberant-ctags
  Suggests: vim-doc
  Suggests: vim-scripts

Wygląda więc na to, że vim zależy od wielu pakietów, spróbujmy go zainstalować apt-get installi zobaczmy, co się stanie:

$ sudo apt-get install vim
...
The following extra packages will be installed:
  vim-common vim-runtime
Suggested packages:
  ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim vim-common vim-runtime
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
After this operation, 25.1 MB of additional disk space will be used.
Do you want to continue [Y/n]? n

Aby vim działał, potrzebujemy pakietów vim-common i vim-runtime i apt-getzajmiemy się tym. Możemy to zweryfikować za pomocą dpkg -s pkg...(zobacz man dpkgwięcej informacji o statusach):

$ sudo dpkg -s libc6
Package: libc6
Status: install ok installed        // we already have it, no need to install

$ sudo dpkg -s vim-common
Package: vim-common
Status: deinstall ok config-files   // we don't have it, have to install

Tak jak sprawdziliśmy, od czego zależy vim , możemy również sprawdzić, jakie inne rzeczy zależą od tych samych pakietów, z których korzysta vimapt-cache rdepends . Powinniśmy zobaczyć vim wśród (prawdopodobnie) innych rzeczy:

$ apt-cache rdepends vim-common
vim-common
Reverse Depends:
  vim-latexsuite
  vim-addon-manager
  vim-tiny
  vim-nox
  vim-gtk
  vim-gnome
 |vim-dbg
  vim-athena
  vim                               // there it is

Kontynuujmy instalację. Po zainstalowaniu vima możemy poczuć różnicę między remove a autorove . Spróbujmy najpierw usunąć :

$ sudo apt-get remove vim
...
The following packages will be REMOVED:
  vim
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,922 kB disk space will be freed.
Do you want to continue [Y/n]? n

apt-get removeby następnie usunąć vim , ale nie jego zależności pozostawiając je za sobą . Spróbujmy teraz usunąć jedną z zależności vima :

$ sudo apt-get remove vim-runtime
...
The following packages will be REMOVED:
  vim vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 24.8 MB disk space will be freed.
Do you want to continue [Y/n]? n

Spowoduje to usunięcie zależności vim-runtime, a także pakietu od niego zależnego , mianowicie vim . Z ciekawości zobaczmy, co by się stało, gdybyśmy usunęli zależność niższą w drzewie zależności vima :

$ sudo apt-get remove libgpm2
...
The following packages were automatically installed and are no longer required:
  libgtkglext1 libqtassistantclient4 libtiff-tools libtiff5 python-qt4
  python-sip python-sqlalchemy python-sqlalchemy-ext
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  anki cheese gimp gimp-gmic gimp-plugin-registry gnome-control-center      // !
  gnome-media gnome-video-effects gstreamer0.10-plugins-good libaa1         // !
  libcheese-gtk21 libcheese3 libgpm2 mplayer quodlibet vim vlc w3m          // !
0 upgraded, 0 newly installed, 18 to remove and 0 not upgraded.
After this operation, 63.1 MB disk space will be freed.
Do you want to continue [Y/n]? n

Usunąłby vima i wiele gadżetów!

Kontynuujmy apt-get remove vimwtedy. Gdy to zrobimy, powinniśmy mieć trochę resztek. Jeśli teraz spróbujemy napisać , możemy zobaczyć:

$ sudo apt-get autoremove
...
The following packages will be REMOVED:
  vim-common vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 23.2 MB disk space will be freed.
Do you want to continue [Y/n]? y

Są to dwa pakiety, które zostały apt-get removepo sobie, chociaż nic więcej ich nie potrzebowało.

Eksperymentowane z apt-get 0.9.7.9.

Johnny Baloney
źródło
4

Zgodnie z tym: http://ubuntuforums.org/showthread.php?t=996053 autorove usunie wszystkie pakiety, których inne programy nie potrzebują. Zrobiłbyś „apt-get autorove”, a nie „apt-get autorove libreoffice”. Również usunięcie niepotrzebnych pakietów nie tylko zwalnia trochę miejsca na dysku, ale zmniejsza „powierzchnię ataku” twojego systemu.

conspiritech
źródło
Widzę, że nieużywane biblioteki mogą być wektorem ataku, ale wydaje mi się, że jest to bardzo niewielki problem w stosunku do znacznego bólu związanego z niewłaściwym usunięciem (co widziałem, że zdarza się więcej niż raz). Dziękuję za informację o użytkowaniu jednak ... Właściwie opisałem autorove niewłaściwie (sam tego nie używam, więc nie zdawałem sobie sprawy), dziękuję za korektę.
Myrddin Emrys
3

removeusunie określony program, ale autoremoveobejmie zależności, które w innym przypadku nie będą już używane.

Ponadto, jeśli chcesz zwolnić miejsce na dysku, przydatne i bezpieczne polecenie to ...

sudo apt-get clean

To usuwa pamięć podręczną aptitude w / var / cache / apt / archives

Kobaltz
źródło
Przepraszam za bycie takim n00b, ale nie do końca to rozumiem. Więc jeśli uruchomię polecenie apt-get remove libreoffice, przyjmuję, że po prostu usunie libreoffice. Czy to prawda? Jednak jeśli uruchomię polecenie apt-get autoremove libreoffice, to nie tylko usunie libreoffice, ale także jego zależności?
PeanutsMonkey,
To jest poprawne. Powiedzmy, że instaluję neverballi neverballzależy od pakietu o nazwie libisfun. Jeśli apt-get remove neverballto zrobię, usunie tylko neverballpakiet. Gdybym apt-get autoremove neverballwtedy będzie usunąć neverball, a libisfunjeśli libisfunnie jest zależna od innych aplikacji.
kobaltz