Perbedaan antara pembersihan dan dpkg -P?

9

Saya harus menghapus phpmyadmin dari server produksi dan googled untuk itu dan menggunakan ini:

sudo dpkg -P phpmyadmin

Yah, ini bekerja dengan baik, tetapi tampaknya semua orang di Ubuntu menggunakan pembersihan sebagai gantinya

sudo apt-get purge phpmyadmin 

Apakah saya melakukan kesalahan? Adakah konsekuensi yang harus saya ketahui (ini adalah server produksi saya) Apakah semua bit phpmyadmin benar-benar dihapus melalui dpkg -P?

Houman
sumber
Dari halaman manual dpkg, tertulis "-P, --purge package", jadi -P adalah singkatan dari 'purge', jadi, kalau dipikir-pikir, itu pasti sama saja. Saya pribadi menggunakan 'apt-get purge'
hytromo

Jawaban:

5

dpkgdan apt-getada 2 cara berbeda untuk menginstal perangkat lunak. Pada dasarnya apt-get, aptitude, dan synaptic dibangun di atas program manajemen paket dpkg debian. Mereka semua melakukan fungsi dasar yang sama - manajemen paket, tetapi memiliki beberapa fitur tambahan. Salah satu fitur tambahan dari apt-get adalah ia akan menginstal dependensi dan dpkg tidak.

Mengenai -p / bersihkan ...

The -Pdalam dpkgberarti --purgedan akan menghapus segala sesuatu, termasuk setttings dan file konfigurasi. Dari manual:

-r, --remove, -P, --purge package...|-a|--pending

          Remove  an  installed  package. -r or --remove remove everything
          except conffiles. This may avoid having to reconfigure the pack‐
          age  if  it  is  reinstalled later. (Conffiles are configuration
          files that are listed in the DEBIAN/conffiles control file).  -P
          or  --purge  removes  everything,  including conffiles. If -a or
          --pending is given instead of a package name, then all  packages
          unpacked,   but   marked   to  be  removed  or  purged  in  file
          /var/lib/dpkg/status, are removed or purged, respectively. Note:
          some  configuration  files might be unknown to dpkg because they
          are created and handled  separately  through  the  configuration
          scripts. In that case, dpkg won't remove them by itself, but the
          package's postrm script (which is called by dpkg), has  to  take
          care of their removal during purge. Of course, this only applies
          to files in system directories, not configuration files  written
          to individual users' home directories.

          Removing of a package consists of the following steps:

          1. Run prerm script

          2. Remove the installed files

          3. Run postrm script

Hal yang sama berlaku untuk purgedi apt-get.

 remove
       remove is identical to install except that packages are removed
       instead of installed. Note the removing a package leaves its
       configuration files in system. If a plus sign is appended to the
       package name (with no intervening space), the identified package
       will be installed instead of removed.


 purge
       purge is identical to remove except that packages are removed and
       purged (any configuration files are deleted too).

Pada dasarnya ini adalah opsi yang sama. Pikiran Anda: penghapusan dependensi tidak terjadi dengan dpkg. apt-get memang menghapus dependensi

Dokumentasi dari komentar oleh Lekensteyn:

Rinzwind
sumber
+1 akan menulis jawaban yang sama. Dokumentasi: debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html . Hal ketergantungan harus disorot. Contoh: menghapus php5juga akan menyebabkan phpmyadmindihapus (dengan asumsi tidak ada SAPI PHP lainnya). aptdapat menangani ini, dpkgtidak bisa melakukannya sendiri.
Lekensteyn
Lekensteyn yang sangat baik. Masih mencari (karena dependensi thingy mengganggu saya). Menambahkannya di :) Jangan ragu untuk mengedit jawaban saya jika Anda memiliki lebih banyak: D
Rinzwind
Tidak masalah :) Jika seseorang mengenai masalah ketergantungan setelah menggunakan dpkgsecara langsung, dia dapat memperbaikinya dengan sudo apt-get install -f(seperti yang disarankan oleh dpkg)
Lekensteyn
Terima kasih semuanya atas saran Anda. Jadi, apakah saya melakukan sudo apt-get install -f phpmyadmindalam kasus saya untuk memastikan dependensi dihapus? Bagaimana jika dependensi dibagikan?
Houman
@Memiliki Ketergantungan yang tidak diinstal secara manual akan dihapus ketika tidak ada paket yang diinstal bergantung padanya.
nanofarad