Kapan Anda akan menggunakan apt-get remove over apt-get autoremove?

16

Saya mengerti bahwa apt-get removemenghapus paket dan apt-get autoremovemenghapus semua paket yang diinstal untuk memenuhi ketergantungan untuk paket yang diberikan. Jadi misalnya jika saya menginstal LibreOffice dan memiliki dependensi pada katakanlah Java dan menginstalnya sebagai bagian dari instalasi ketika saya menjalankan perintah apt-get libreoffice, mengapa saya menjalankan perintah yang apt-get remove libreofficediikuti apt-get autoremove? Apakah saya tidak dapat menjalankan perintah apt-get autoremove libreoffice? Atau apakah kombinasi dari apt-get removedan apt-get autoremoveuntuk tujuan yang berbeda?

Kacang Kacang Tanah
sumber

Jawaban:

11

Itu tergantung pada seberapa banyak Anda mempercayai pelacak ketergantungan. Meskipun hampir selalu benar, ada kalanya Anda ingin ketergantungan tetap, terutama ketika Anda adalah seorang pengembang atau pengguna daya yang memasang perangkat lunak yang tidak ada dalam repositori.

Jika Anda selalu menginstal perangkat lunak melalui apt-get, tanpa pengecualian, dan percaya semua ketergantungan benar (seperti biasanya), maka Anda dapat menggunakan apt-get autoremovedan mendapatkan sejumlah kecil ruang drive dan mengurangi paparan lubang keamanan potensial dengan memiliki itu menghapus paket yang tidak lagi memiliki paket yang membutuhkannya.

Tetapi jika Anda menginstal perangkat lunak secara manual, atau mengembangkan perangkat lunak, atau tidak ingin berurusan dengan kemungkinan kesalahan ketergantungan, maka tidak menggunakan autoremove untuk menghapus paket yang mungkin tidak digunakan mungkin merupakan pilihan yang lebih aman. Terlepas dari apakah Anda menggunakan apt-get autoremovesekarang dan kemudian atau tidak, Anda akan selalu menghapus perangkat lunak yang digunakanapt-get remove Package

Sebagai contoh, jika saya menginstal AwesomePackage, mungkin tergantung pada AwesomeLibrary, dan dengan demikian AwesomeLibraryakan diinstal secara otomatis sebagai ketergantungan . Ketika saya menghapus AwesomePackagemenggunakan autoremove, selama tidak ada paket lain AwesomeLibrarysebagai ketergantungan itu akan dihapus juga. Tetapi jika SuperPackagejuga membutuhkan AwesomeLibrary, atau jika saya telah menginstal AwesomeLibrarysendiri secara eksplisit daripada harus datang secara otomatis sebagai dependance ( apt-get install AwesomeLibrary), maka autoremove tidak akan menyingkirkannya.

Alasannya bukan default adalah bahwa memiliki AwesomeLibrarypada sistem, tidak digunakan, adalah masalah yang sangat kecil. Ini hampir tidak akan pernah menyebabkan masalah, dan sebagian besar ketergantungan tidak memakan banyak ruang. Ada pengecualian, tetapi saat-saat ketika menghapus ketergantungan akan menyebabkan masalah melebihi waktu ketika itu akan memecahkan atau mencegah masalah.

Myrddin Emrys
sumber
Maaf, Myrddin Emrys. Anda kehilangan saya di sana. Jadi izinkan saya mencoba dan memahami apa yang Anda katakan. Jadi misalnya jika saya menginstal libreoffice menggunakan apt-get, itu akan menginstal sejumlah besar dependensi dengan asumsi saya belum menginstalnya. Sekarang jika saya kemudian memutuskan untuk menyingkirkan libreoffice, saya berasumsi saya akan lariapt-get remove libreoffice
PeanutsMonkey
Jika saya ingin dependensi yang diinstal tetap ada, apakah itu benar? Jika saya ingin membebaskan diri dari libreoffice dan dependensi yang terkait dengan asumsi tidak digunakan oleh program lain, saya pikir saya akan menjalankan perintah apt-get autoremovelibreoffice? Apakah itu benar?
PeanutsMonkey
Itu benar @PeanutsMonkey. Autoremove juga akan menghapus paket lain yang bergantung pada paket yang disebutkan, jika mereka tidak lagi diperlukan oleh apa pun dan tidak diinstal secara terpisah dengan sengaja.
Myrddin Emrys
Sebenarnya, itu tidak sepenuhnya benar; Saya memiliki beberapa sintaks yang salah dalam jawaban saya (seperti @ cooper tunjukkan). Saya telah memperbaikinya dalam jawaban di atas. apt-get autoremoveadalah perintah terpisah dari apt-get remove Package, saya minta maaf atas kesalahan informasi awal.
Myrddin Emrys
Terima kasih Myrddin Emrys. Maaf jika saya menjadi n00b. Ketika Anda mengatakan bahwa There are exceptions, but the times when removing a dependancy will cause problems outnumber the times when it will solve or prevent a problem. Apa maksudmu sebenarnya?
PeanutsMonkey
12

Anda dapat menemukan deskripsi menghapus , autoremove , pembersihan , bersih dan autoclean , serta sintaks di halaman manual untuk apt-get: man apt-get.

Jika Anda masih tidak yakin setelah membacanya (saya), cara terbaik untuk memperjelasnya adalah dengan mencobanya.

Di bawah ini adalah contoh pohon ketergantungan penuh untuk vim :

vim-dependency-tree

Anda bisa mendapatkannya dengan:

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

Anda juga bisa mendapatkan daftar dependensi langsung menggunakan apt-cache depends(lihat Mendeklarasikan hubungan antar paket untuk info lebih lanjut):

$ 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

Jadi sepertinya vim tergantung pada sejumlah paket, mari kita coba untuk menginstalnya apt-get installdan lihat apa yang terjadi:

$ 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

Untuk mendapatkan vim agar berfungsi, kita membutuhkan paket vim-common dan vim-runtime dan apt-getakan mengatasinya. Kami dapat memverifikasinya dengan dpkg -s pkg...(lihat man dpkginfo lebih lanjut tentang status):

$ 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

Sama seperti kami memeriksa vim tergantung pada apa, kami juga dapat memeriksa hal-hal lain yang bergantung pada paket yang sama seperti vim yang digunakan apt-cache rdepends. Kita harus melihat vim di antara (mungkin) hal-hal lain:

$ 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

Mari kita lanjutkan dengan instalasi. Setelah kami menginstal vim, kami dapat mengalami perbedaan antara menghapus dan autoremove . Mari kita coba hapus dulu:

$ 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 removekemudian akan menghapus vim tetapi tidak ketergantungannya meninggalkan mereka . Sekarang mari kita coba untuk menghapus salah satu dependensi 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

Ini akan menghapus dependensi vim-runtime serta paket yang bergantung padanya , yaitu vim . Karena penasaran, mari kita lihat apa yang akan terjadi jika kita menghapus dependensi yang lebih rendah pada pohon dependensi 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

Itu akan menghapus vim dan banyak barang!

Mari kita lanjutkan apt-get remove vim. Setelah kita selesai melakukannya kita harus memiliki sisa makanan. Jika sekarang kita mencoba autoremove kita dapat melihat:

$ 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

Ini adalah dua paket yang apt-get removetertinggal walaupun tidak ada lagi yang membutuhkannya.

Bereksperimen dengan apt-get 0.9.7.9.

Johnny Baloney
sumber
4

Menurut ini: http://ubuntuforums.org/showthread.php?t=996053 autoremove akan menghapus semua paket yang tidak dibutuhkan oleh program lain. Anda akan melakukan 'apt-get autoremove', bukan 'apt-get autoremove libreoffice'. Juga menghapus paket yang tidak dibutuhkan tidak hanya membebaskan sedikit ruang disk, itu mengurangi 'permukaan serangan' dari sistem Anda.

conspiritech
sumber
Saya dapat melihat bahwa perpustakaan yang tidak digunakan dapat menjadi vektor serangan, tetapi tampaknya menjadi masalah yang sangat kecil bagi saya, relatif terhadap rasa sakit yang signifikan dari penghapusan yang tidak benar (yang saya lihat terjadi lebih dari satu kali). Terima kasih atas info tentang penggunaannya namun ... Saya sebenarnya telah menggambarkan autoremove secara tidak patut (saya tidak menggunakannya sendiri, jadi tidak menyadari), terima kasih atas koreksinya.
Myrddin Emrys
3

removeakan menghapus program yang ditentukan sedangkan autoremoveakan menyertakan dependensi yang jika tidak digunakan lagi.

Juga, Jika Anda ingin membebaskan ruang drive, perintah yang berguna dan aman adalah ...

sudo apt-get clean

Itu menghapus cache aptitude di / var / cache / apt / arsip

kobaltz
sumber
Maaf karena n00b seperti itu tapi saya tidak cukup mengikuti itu. Jadi jika saya menjalankan perintah apt-get remove libreoffice, saya menganggapnya hanya akan menghapus libreoffice. Apakah itu benar? Namun jika saya menjalankan perintah apt-get autoremove libreoffice, itu tidak hanya menghapus libreoffice tetapi juga ketergantungannya?
PeanutsMonkey
Itu benar. Jadi katakanlah saya menginstal neverballdan neverballtergantung pada paket yang disebut libisfun. Jika saya apt-get remove neverballmaka hanya akan menghapus neverballpaket. Jika saya apt-get autoremove neverballmaka akan menghapus neverballdan libisfunjika libisfuntidak tergantung pada aplikasi lain.
kobaltz