Bagaimana perbedaan berbagai perintah penghapusan paket APT?

17

Apa perbedaan antara perintah-perintah ini?

  1. sudo apt-get autoremove --purge packagenames
  2. sudo apt-get remove --purge packagenames
  3. sudo apt-get purge purge packagenmaes
  4. sudo apt-get remove packagenames
  5. sudo apt-get autoremove
sajjad
sumber

Jawaban:

24

Jawaban cepat

  • remove batalkan pencopotan paket yang diberi nama setelahnya.
  • autoremovebatalkan instal semua paket yang diinstal secara otomatis yang tidak lagi diperlukan. Tidak benar untuk mencantumkan nama paket setelah autoremove; mereka akan diabaikan (dan semua paket yang memenuhi syarat akan dihapus), yang mungkin bukan yang Anda inginkan.
  • --purgemenyebabkan file konfigurasi seluruh sistem yang terkait dengan paket yang dihapus juga dihapus. Itu harus disertai dengan perintah, seperti removeatau autoremove. The --purgebendera memodifikasi aksi perintah; itu tidak bertindak sendiri.
  • purgeberarti hal yang sama dengan --purge remove(yang sama dengan remove --purge). Tidak benar mengatakan purgedua kali; yang kedua purgeditafsirkan sebagai nama paket yang akan purged, yang mungkin bukan yang Anda inginkan.

Jawaban Lengkap

Untuk memahami apa yang dilakukan perintah-perintah itu dan bagaimana mereka berbeda, ada baiknya (dan mungkin bahkan penting) untuk memahami dua konsep:

  1. perbedaan antara paket yang diinstal secara manual dan yang diinstal secara otomatis
  2. perbedaan antara file paket paket dan file konfigurasinya

Diinstal Secara Manual vs Diinstal Secara Otomatis

Paket yang diinstal dapat diinstal secara manual atau otomatis .

Ketika Anda menentukan paket untuk instalasi, dan itu diinstal, itu diinstal secara manual .

Tetapi paket lain juga dapat diinstal. Sebagian besar paket memiliki dependensi - paket lain yang harus diinstal, agar paket tersebut berfungsi sebagaimana dimaksud. Ketika Anda menginstal sebuah paket, dependensinya (yaitu, paket lain yang bergantung padanya) diinstal, kecuali yang sudah diinstal sebelumnya.

Ketika sebuah paket tidak ditentukan oleh Anda untuk diinstal, tetapi sebaliknya diinstal sebagai ketergantungan dari paket yang Anda tentukan untuk diinstal, paket itu secara otomatis diinstal.

Harap dicatat bahwa ketika Anda memiliki dua paket diinstal dan salah satunya adalah ketergantungan yang lain, itu tidak berarti ketergantungan diinstal secara otomatis. Kemungkinan dependensi diinstal secara manual (mis. Ditentukan oleh Anda, misalnya, diinstal sebelum atau bersamaan dengan paket yang bergantung padanya).

Akhirnya:

  • Jika Anda mencoba menginstal secara manual paket yang sudah diinstal, paket itu tetap terpasang. Tetapi jika itu secara otomatis diinstal, perubahan dibuat - mencoba untuk menginstalnya secara manual akan menandainya sebagai diinstal secara manual.
  • Anda dapat menandai setiap paket sebagai yang diinstal secara manual atau otomatis (dengan apt-markperintah), tidak peduli bagaimana atau dalam keadaan apa mereka benar-benar diinstal.
  • Paket yang sudah diinstal sebelumnya dengan sistem Ubuntu Anda tidak semuanya diinstal secara otomatis; beberapa di antaranya ditandai secara otomatis dan sebagian lainnya ditandai secara manual. Ini untuk memenuhi logika di balik membedakan antara paket yang diinstal secara manual dan otomatis - gagasan bahwa beberapa paket hanya diperlukan untuk melayani yang lain.

Biasanya, untuk setiap paket yang diinstal secara otomatis, Anda akan memiliki setidaknya satu paket yang diinstal secara manual yang bergantung padanya (dan yang menyebabkannya diinstal secara otomatis). Namun, jika Anda kemudian menghapus semua paket yang diinstal secara manual yang bergantung pada paket yang diinstal secara otomatis, paket yang diinstal secara otomatis tidak lagi diperlukan, tetapi masih akan diinstal.

apt-get autoremove menghapus paket yang diinstal secara otomatis yang tidak lagi memiliki paket yang diinstal secara manual tergantung pada mereka.

Paket File dan File Konfigurasi

Paket menyediakan file yang dimaksudkan untuk, dan untuk tetap, sama di setiap sistem tempat versi paket itu diinstal. File tersebut menyediakan file yang dapat dieksekusi, sumber daya, dokumentasi, dan "aset" lainnya untuk program yang diinstal. Kami biasanya menyebut ini "file" yang disediakan paket.

Tetapi sebuah paket menyediakan file lain juga, yang dimaksudkan untuk (mungkin) diubah. Ini disebut file konfigurasi global (atau seluruh sistem). Mereka hampir selalu diinstal di /etcdirektori, dan mereka dapat secara otomatis dan manual dimodifikasi untuk mengubah perilaku program yang diinstal. Misalnya, sudomemiliki file konfigurasi /etc/sudoers, dan direktori untuk file konfigurasi lainnya /etc/sudoers.d. File itu, dan file apa pun yang ditambahkan ke direktori itu, menentukan siapa yang diizinkan untuk menggunakan sudocara apa.

Biasanya diinginkan untuk menghapus instalan sebuah paket dan kemudian menginstalnya kembali tidak boleh mengubah cara perilakunya (kecuali file paketnya rusak dan itu sebabnya Anda menginstalnya kembali, tentu saja). Oleh karena itu, biasanya ketika sebuah paket dihapus, file paketnya dihapus tetapi file konfigurasi seluruh sistemnya tidak tersentuh.

Ketika Anda menghapus paket tanpa menentukan bahwa file konfigurasi seluruh sistemnya juga seharusnya dihapus, itu disebut "menghapus" paket.

Jika Anda juga ingin menghapus file konfigurasi sistem secara keseluruhan paket ketika Anda menghapus paket, itu disebut "membersihkan" paket.

apt-get removeakan menghapus paket; yaitu, ia akan menghapus paket tetapi meninggalkan file konfigurasi sistem secara keseluruhan.

apt-get purgeakan membersihkan paket; yaitu, ia akan menghapus paket dan juga memastikan untuk menghapus file konfigurasi sistem secara keseluruhan.

Cara lain untuk membersihkan paket adalah dengan menggunakan --purgeflag. Itu tidak mengatakan apt-getapa yang harus dilakukan; sebagai gantinya, ia memodifikasi istilah apa (atau "perintah") seperti removemenyuruhnya melakukannya. The --purgeflag menyebabkan setiap uninstallations paket harus disertai dengan penghapusan file konfigurasi systemwide untuk paket (s) yang dihapus. Dengan kata lain, --purgebendera mengubah penghapusan menjadi pembersihan.

Mengapa kita memiliki --purgebendera ketika kita memiliki purgeperintah? Lagi pula, tidak sudo apt-get --purge remove packagenamesetara dengan sudo apt-get purge packagename. Mereka setara. Dimana --purgeberguna yaitu ketika Anda ingin mengubah perilaku perintah lain dari remove.

Misalnya, Anda ingin menghapus instalasi paket yang diinstal secara otomatis yang tidak lagi diperlukan (karena tidak ada lagi paket yang diinstal secara manual tergantung pada paket tersebut), tetapi Anda tidak hanya ingin menghapus paket yang diinstal secara otomatis ini, Anda juga ingin menghapus file konfigurasi seluruh sistem mereka. Maka Anda dapat menjalankan:

sudo apt-get --purge autoremove

Mari pertimbangkan satu lagi penggunaan --purge. Ada bendera yang disebut --reinstall, yang mengubah instalasi menjadi instalasi ulang. Ini untuk mengatakan bahwa, biasanya, ketika Anda mencoba untuk menginstal paket yang sudah diinstal, entah tidak akan terjadi apa-apa, atau (jika paket ditandai secara otomatis diinstal) paket akan ditandai secara manual diinstal. Tetapi dengan --reinstallflag tersebut, menginstal paket yang sudah diinstal menyebabkannya dihapus dan kemudian diinstal kembali :

sudo apt-get --reinstall install packagename

Tapi misalkan Anda ingin menghapus file konfigurasi seluruh sistem dari paket yang Anda instal ulang. Ini agak umum; ketika sebuah paket tidak berfungsi dan Anda tidak tahu mengapa, Anda dapat mencoba menginstalnya kembali, dan juga menghapus file konfigurasinya sehingga konfigurasinya diatur ulang ke default. Untuk mencapai ini, Anda dapat menjalankan:

sudo apt-get --purge --reinstall install packagename

The --reinstallbergantian instalasi ke instalasi ulang (yaitu, penghapusan diikuti oleh instalasi), dan --purgeternyata bagian penghapusan instalasi ulang ke pembersihan.

Perilaku Contoh Anda

Sekarang harus jelas apa yang masing-masing apt-getperintah contoh Anda lakukan:

  • sudo apt-get autoremove --purge packagenames

    Pembersihan ini secara otomatis menginstal paket yang tidak lagi memiliki paket yang diinstal secara manual yang bergantung padanya. Yaitu, itu menghapus instalasi paket-paket (yang mengharuskan menghapus file paket mereka), dan itu menghapus file konfigurasi seluruh sistem mereka juga.

    Di sini, packagenamestidak melakukan apa pun. Secara khusus, jika Anda bermaksud untuk hanya menghapus paket yang namanya terdaftar di sana, maka ini tidak akan berlaku seperti yang Anda inginkan.

  • sudo apt-get remove --purge packagenames

    Ini membersihkan packagenames; dengan asumsi packagenamesadalah daftar nama paket yang dipisahkan oleh spasi, itu akan membersihkan semuanya. Yaitu, itu akan menghapus instalan mereka (yang berarti menghapus file paket mereka), dan juga akan menghapus file konfigurasi sistem mereka.

    Jika salah satu paket yang terdaftar di packagenamestidak diinstal, keberadaannya dalam daftar tidak akan berpengaruh (kecuali bahwa Anda akan diberitahu itu tidak diinstal). Jika Anda mencantumkan nama paket yang bukan nama paket aktual, perintah akan gagal dengan kesalahan.unable to locate packagename

  • sudo apt-get purge purge packagenmaes

    Jika Anda menghapus salah satu kemunculan purgedalam perintah itu, itu akan sama dengan yang sebelumnya. Seperti berdiri, ia mencoba untuk membersihkan paket yang disebut purge, dan juga untuk membersihkan paket yang terdaftar di packagenames. Karena purgebukan nama paket apa pun, itu akan gagal dengan pesan kesalahan.

  • sudo apt-get remove packagenames

    Ini menghapus paket yang terdaftar di packagenames, yang mengharuskan menghapus file paket mereka. Ini tidak menghapus file konfigurasi seluruh sistem mereka (karena itu hanya penghapusan, bukan pembersihan).

  • sudo apt-get autoremove

    Mencopot pemasangan ini secara otomatis menginstal paket yang tidak lagi memiliki paket yang diinstal secara manual yang bergantung padanya. Ini berarti menghapus file paket mereka, tetapi bukan file konfigurasi sistem mereka (yaitu, itu adalah penghapusan tetapi bukan pembersihan).

Untuk informasi lebih lanjut tentang cara menggunakan apt-get, saya sarankan halaman manualnya . Untuk informasi yang lebih umum, lihat panduan ini .

Eliah Kagan
sumber