Khi nào bạn sẽ sử dụng apt-get remove trên apt-get autoremove?


16

Tôi hiểu rằng apt-get removeloại bỏ các gói và apt-get autoremovelà loại bỏ bất kỳ gói nào đã được cài đặt để đáp ứng sự phụ thuộc cho một gói nhất định. Vì vậy, ví dụ nếu tôi đã cài đặt LibreOffice và nó có phụ thuộc vào Java và đã cài đặt nó như là một phần của cài đặt khi tôi chạy lệnh apt-get libreoffice, tại sao tôi lại chạy lệnh apt-get remove libreofficetheo sau apt-get autoremove? Tôi không thể đơn giản chạy lệnh apt-get autoremove libreoffice? Hay là sự kết hợp apt-get removeapt-get autoremovecho một mục đích khác nhau?

Câu trả lời:


11

Nó phụ thuộc vào mức độ bạn tin tưởng theo dõi phụ thuộc. Mặc dù hầu như luôn luôn đúng, có những lúc bạn muốn duy trì sự phụ thuộc, đặc biệt khi bạn là nhà phát triển hoặc người dùng quyền lực cài đặt phần mềm không có trong kho lưu trữ.

Nếu bạn luôn cài đặt phần mềm thông qua apt-get, không có ngoại lệ và tin tưởng tất cả các phụ thuộc là chính xác (thường là như vậy), thì bạn có thể sử dụng apt-get autoremovevà có được một lượng nhỏ dung lượng ổ đĩa và giảm tiếp xúc với các lỗ hổng bảo mật tiềm năng bằng cách có nó loại bỏ các gói không còn có bất kỳ gói nào cần chúng.

Nhưng nếu bạn cài đặt phần mềm theo cách thủ công, hoặc phát triển phần mềm hoặc không muốn xử lý lỗi phụ thuộc có thể xảy ra, thì việc không sử dụng autoremove để xóa các gói không sử dụng có thể là lựa chọn an toàn hơn. Bất kể bạn có sử dụng apt-get autoremovemọi lúc mọi nơi hay không, bạn sẽ luôn xóa phần mềm bằng cách sử dụngapt-get remove Package

Ví dụ, nếu tôi cài đặt AwesomePackage, nó có thể phụ thuộc vào AwesomeLibrary, và do đó AwesomeLibrarysẽ được tự động cài đặt như một dependancy . Khi tôi loại bỏ AwesomePackagebằng cách sử dụng autoremove, miễn là không có gói nào khác phụ thuộc AwesomeLibraryvào nó, nó cũng sẽ được gỡ cài đặt. Nhưng nếu SuperPackagecũng yêu cầu AwesomeLibrary, hoặc nếu tôi đã tự cài đặt AwesomeLibrarymột cách rõ ràng thay vì tự động đến như một phần phụ thuộc ( apt-get install AwesomeLibrary), thì autoremove sẽ không thoát khỏi nó.

Lý do nó không phải là mặc định là vì có AwesomeLibrarytrên hệ thống, không được sử dụng, là một vấn đề rất nhỏ. Nó gần như sẽ không bao giờ gây ra vấn đề và hầu hết những người phụ thuộc không chiếm nhiều không gian. Có những trường hợp ngoại lệ, nhưng thời gian khi loại bỏ một phụ thuộc sẽ gây ra nhiều vấn đề hơn so với những lần nó sẽ giải quyết hoặc ngăn chặn một vấn đề.


Xin lỗi Myrddin Emrys. Bạn mất tôi ở đó. Vì vậy, hãy để tôi thử và hiểu những gì bạn nói. Vì vậy, ví dụ nếu tôi cài đặt libreoffice bằng apt-get, nó sẽ cài đặt cả đống phụ thuộc giả sử tôi chưa cài đặt chúng. Bây giờ nếu sau đó tôi quyết định loại bỏ libreoffice, tôi cho rằng tôi sẽ chạyapt-get remove libreoffice
PeanutsMonkey

Nếu tôi muốn các phụ thuộc mà nó cài đặt vẫn còn chính xác? Nếu tôi muốn loại bỏ cả libreoffice và các phụ thuộc liên quan của nó giả sử rằng không có chương trình nào khác sử dụng, tôi có nhận nó tôi sẽ chạy lệnh apt-get autoremovelibreofficekhông? Đúng không?
PeanutsMonkey

Điều đó hoàn toàn chính xác @PeanutsMonkey. Autoremove cũng sẽ xóa các gói khác mà gói được đặt tên phụ thuộc vào, nếu chúng không còn được yêu cầu bởi bất cứ thứ gì và không được cài đặt riêng trên mục đích.
Myrddin Emrys

Thật ra, điều đó không hoàn toàn chính xác; Tôi đã có một số cú pháp không chính xác trong câu trả lời của mình (như @cooper đã chỉ ra). Tôi đã sửa điều này trong câu trả lời ở trên. apt-get autoremovelà một lệnh riêng biệt apt-get remove Package, tôi xin lỗi vì thông tin sai lệch ban đầu.
Myrddin Emrys

Cảm ơn Myrddin Emrys. Xin lỗi nếu tôi là một n00b. Khi bạn nói điều đó There are exceptions, but the times when removing a dependancy will cause problems outnumber the times when it will solve or prevent a problem. bạn có ý nghĩa gì chính xác?
PeanutsMonkey

12

Bạn có thể tìm thấy mô tả loại bỏ , autoremove , thanh lọc , dọn dẹpautoclean , cũng như cú pháp trong các trang hướng dẫn cho apt-get : man apt-get.

Nếu bạn vẫn không chắc chắn sau khi đọc nó (tôi đã), cách tốt nhất để làm rõ nó là dùng thử.

Dưới đây là một ví dụ về cây phụ thuộc đầy đủ cho vim :

cây phụ thuộc vim

Bạn có thể lấy nó với:

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

Bạn cũng có thể nhận danh sách các phụ thuộc ngay lập tức bằng cách sử dụng apt-cache depends(xem Khai báo mối quan hệ giữa các gói để biết thêm):

$ 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

Vì vậy, có vẻ như vim phụ thuộc vào một số gói, hãy thử cài đặt nó apt-get installvà xem điều gì xảy ra:

$ 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

Để làm cho vim hoạt động, chúng ta cần các gói vim-commonvim-runtimeapt-getsẽ chăm sóc nó. Chúng tôi có thể xác minh nó với dpkg -s pkg...(xem man dpkgđể biết thêm thông tin về các trạng thái):

$ 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

Giống như chúng tôi đã kiểm tra những gì vim phụ thuộc vào, chúng tôi cũng có thể kiểm tra những thứ khác phụ thuộc vào cùng các gói như vim sử dụng apt-cache rdepends. Chúng ta sẽ thấy vim trong số (có thể) những thứ khác:

$ 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

Hãy tiếp tục cài đặt. Một khi chúng ta đã cài đặt vim chúng ta có thể trải nghiệm sự khác biệt giữa loại bỏautoremove . Hãy thử xóa trước:

$ 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 removesau đó sẽ loại bỏ vim nhưng không phụ thuộc vào nó . Bây giờ chúng ta hãy cố gắng loại bỏ một trong các phụ thuộc của vim :

$ 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

Điều này sẽ loại bỏ vim-runtime phụ thuộc cũng như gói phụ thuộc vào nó , cụ thể là vim . Vì tò mò, chúng ta hãy xem điều gì sẽ xảy ra nếu chúng ta loại bỏ một phụ thuộc thấp hơn trên cây phụ thuộc của vim :

$ 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

Nó sẽ loại bỏ vim và rất nhiều goodies!

Hãy tiếp tục apt-get remove vimsau đó. Một khi chúng ta đã làm nó, chúng ta nên có một số thức ăn thừa. Nếu bây giờ chúng ta thử autoremove, chúng ta có thể thấy:

$ 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

Đây là hai gói apt-get removecòn lại mặc dù không có gì khác cần chúng.

Đã thử nghiệm với apt-get 0.9.7.9.


4

Theo đó: http://ubuntuforums.org/showthread.php?t=996053 autoremove sẽ xóa tất cả các gói mà các chương trình khác không cần. Bạn sẽ làm 'apt-get autoremove', không phải 'apt-get autoremove libreoffice'. Ngoài ra, việc loại bỏ các gói không cần thiết không chỉ giải phóng một ít dung lượng đĩa, nó làm giảm 'bề mặt tấn công' của hệ thống của bạn.


Tôi có thể thấy rằng các thư viện không sử dụng có thể là một vectơ tấn công, nhưng dường như đó là một vấn đề rất nhỏ đối với tôi, liên quan đến nỗi đau đáng kể của việc loại bỏ không đúng cách (điều mà tôi đã thấy xảy ra nhiều hơn một lần). Cảm ơn bạn về thông tin về cách sử dụng tuy nhiên ... Tôi thực sự đã mô tả autoremove không đúng cách (tôi không sử dụng nó cho mình, vì vậy đã không nhận ra), cảm ơn bạn đã sửa chữa.
Myrddin Emrys

3

removesẽ xóa chương trình đã chỉ định trong khi autoremovesẽ bao gồm các phụ thuộc khác nếu không sử dụng nữa.

Ngoài ra, nếu bạn muốn giải phóng dung lượng ổ đĩa, một lệnh hữu ích và an toàn là ...

sudo apt-get clean

Điều đó loại bỏ bộ đệm aptitude trong / var / cache / apt / archives


Xin lỗi vì đã là n00b nhưng tôi không hoàn toàn làm theo. Vì vậy, nếu tôi chạy lệnh apt-get remove libreoffice, tôi sẽ nhận ra rằng nó sẽ đơn giản loại bỏ libreoffice. Có đúng không? Tuy nhiên, nếu tôi chạy lệnh apt-get autoremove libreoffice, điều đó sẽ không chỉ loại bỏ libreoffice mà còn phụ thuộc vào nó?
PeanutsMonkey

Đúng rồi. Vì vậy, hãy nói rằng tôi cài đặt neverballneverballphụ thuộc vào một gói được gọi libisfun. Nếu tôi apt-get remove neverballthì nó sẽ loại bỏ chỉ neverballgói. Nếu tôi apt-get autoremove neverballthì nó sẽ loại bỏ neverballlibisfunnếu libisfunkhông phụ thuộc vào bất kỳ ứng dụng nào khác.
kobaltz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.