Menghapus paket yang rusak

9

Baru-baru ini dalam frustrasi dengan mendapatkan pengaturan phpmyadmin, saya memutuskan untuk memulai dari awal.

Sayangnya, selama fase uninstall, saya diminta dengan kata sandi root untuk mysql yang tidak saya miliki saat itu. Cukuplah untuk mengatakan, itu memberitahu saya bahwa akan ada komponen residu karena tidak dapat membersihkan konektor database dengan benar.

Ketika saya tiba di rumah, saya mencoba untuk menghapus paket aptitude purgeyang ternyata tidak lebih ampuh daripada aptitude removemelihat phpmyadmin, mencoba untuk menghapusnya, dan gagal karena direktori yang terkait dengan paket sudah dihapus dari upaya saya sebelumnya.

Saya mencoba menginstal ulang phpmyadmin, tetapi aptitude hanya menyatakan bahwa tidak ada pembaruan yang tersedia, dan tidak melakukan apa pun, jika ada pembaruan, saya mungkin akan mengalami masalah yang sama.

Dalam hal ini, saya mulai membersihkan mysql dengan menjatuhkan database yang digunakan, dan membersihkannya dari tabel pengguna. Namun saya tidak tahu apa lagi yang tersisa dari paket, atau bahkan cara membersihkan kait di aptitude.

Hasil dari dpkg --purge

ickronia:/home/ken# dpkg --purge phpmyadmin
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--purge):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
phpmyadmin

Setelah mengikuti saran Gile, saya mencoba menginstal ulang dependensi dbconfig-common

ickronia:/home/ken# aptitude reinstall dbconfig-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
dbconfig-common is not currently installed, so it will not be reinstalled.
dbconfig-common is not currently installed, so it will not be reinstalled.
The following packages are BROKEN:
  phpmyadmin
0 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 0B will be used.
The following packages have unmet dependencies:
  phpmyadmin: Depends: php5-mcrypt but it is not installable
              Depends: dbconfig-common but it is not installable
              Depends: libjs-mootools (>= 1.2.4.0~debian1-1) which is a virtual  package.
The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] y
The following packages will be REMOVED:
  phpmyadmin{a}
0 packages upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 17.7MB will be freed.
Do you want to continue? [Y/n/?] y
Writing extended state information... Done
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--remove):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
 phpmyadmin
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done

ickronia:/home/ken#

Tampaknya phpmyadmin telah membersihkan dbconfig-common

ickronia:/usr/share/dbconfig-common# ls -alF
total 12
drwxr-xr-x  3 root root 4096 2011-02-09 08:09 ./
drwxr-xr-x 98 root root 4096 2011-01-20 21:42 ../
drwxr-xr-x  3 root root 4096 2011-01-05 11:08 data/
ickronia:/usr/share/dbconfig-common#

Mencoba untuk dpkg dari arsip seperti yang disarankan oleh Giles

ickronia:/usr/share/dbconfig-common# dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb
Selecting previously deselected package dbconfig-common.
(Reading database ... 27161 files and directories currently installed.)
Unpacking dbconfig-common (from .../dbconfig-common_1.8.46_all.deb) ...
Selecting previously deselected package php5-mcrypt.
Unpacking php5-mcrypt (from .../php5-mcrypt_5.3.3-6_i386.deb) ...
Selecting previously deselected package libjs-mootools.
Unpacking libjs-mootools (from .../libjs-mootools_1.2.5~debian1-2_all.deb) ...
Setting up dbconfig-common (1.8.46) ...
dpkg: dependency problems prevent configuration of php5-mcrypt:
 php5-mcrypt depends on libltdl7 (>= 2.2.6b); however:
  Package libltdl7 is not installed.
 php5-mcrypt depends on libmcrypt4; however:
  Package libmcrypt4 is not installed.
dpkg: error processing php5-mcrypt (--install):
 dependency problems - leaving unconfigured
Setting up libjs-mootools (1.2.5~debian1-2) ...
Processing triggers for man-db ...
Processing triggers for libapache2-mod-php5 ...
Reloading web server config: apache2.
Errors were encountered while processing:
 php5-mcrypt
ickronia:/usr/share/dbconfig-common#

Saya memiliki server web yang berjalan di php, tetapi saya bersedia mengambil risiko downtime untuk menyelesaikan masalah ini.

Ken
sumber
Salin-tempel perintah yang tepat yang Anda coba dan seluruh hasil yang Anda dapatkan. Kami mungkin dapat membantu Anda, tetapi tidak tanpa melihat pesan kesalahan yang sebenarnya.
Gilles 'SO- stop being evil'

Jawaban:

7

phpmyadmintergantung pada dbconfig-common, yang berisi /usr/share/dbconfig-common/dpkg/prerm.mysql. Sepertinya Anda telah berhasil menghapus dbconfig-commontanpa menghapus phpmyadmin, yang seharusnya tidak terjadi (apakah Anda mencoba --forcesesuatu?).

Saran saya adalah coba dulu aptitude reinstall dbconfig-common. Jika berhasil, Anda harus memiliki sistem dalam kondisi konsisten yang dapat Anda coba aptitude purge phpmyadminlagi.

Hal lain yang dapat Anda lakukan adalah mengomentari baris yang menyinggung masuk /var/lib/dpkg/info/phpmyadmin.prerm. Ini mungkin membuat Anda dapat menghapus instalan phpmyadmin. Saya curiga Anda melakukan apa yang seharusnya dilakukan baris itu ketika Anda mengedit tabel mysql secara manual, tapi saya tidak tahu phpmyadminatau admin database secara umum, jadi saya hanya menebak.

Perbedaan antara removedan purgeitu removehanya menghapus program dan file datanya (hal-hal yang dapat Anda unduh ulang), sementara purgepertama-tama melakukan apa yang removekemudian juga menghapus file konfigurasi (hal-hal yang mungkin telah Anda edit secara lokal). Jika removegagal, maka akan purge.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Saya baru-baru ini mencoba saran Anda tentang menginstal ulang dbconfig-common, tetapi tidak berhasil. Saya telah memperbarui pertanyaan saya dengan hasil dari upaya itu.
Ken
@ Ken: Coba dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb. Jika Anda tidak memiliki deb di cache, download mereka dari packages.debian.org . Jika ada pesan kesalahan, poskan itu dan saya (atau orang lain) mungkin membantu Anda.
Gilles 'SO- stop being evil'
Diusahakan tidak berhasil. Sepertinya segerombolan belalang telah dilepaskan di server Debian saya yang bersih. Pertanyaan telah diperbarui untuk mencerminkan upaya terbaru ini.
Ken
@ Ken: Anda perlu menginstal dependensi php5-mcryptjuga. Bakat akan melakukan pekerjaan untuk Anda; Anda dapat mencoba, tetapi saya pikir itu akan menolak untuk bergerak sampai Anda membawa php5myadminke kondisi yang baik. dpkglebih rendah dan dapat beroperasi bahkan pada basis data paket yang rusak sebagian.
Gilles 'SO- stop being evil'
Dalam mencoba menginstal php5-mcrypt, itu pertama-tama meminta penghapusan phpmyadmindan dbconfig-common. Saya tidak bisa mendapatkan solusi lain jadi saya pikir itu akan jatuh datar ketika saya setuju. Sebaliknya, hanya tindakan yang php5-mycrypt 'disarankan' untuk instalasi yang diizinkan untuk membersihkan kait dengan benar dan menghapus phpmyadmindan dbconfig-common. Saya sekarang telah menginstalnya bersama phpmyadmin(meskipun melalui tar untuk kontrol lebih lanjut). Tampaknya versi terbaru tidak memerlukan mysql untuk pengaturan sendiri. Terima kasih Giles karena telah menghapus belalang dari server saya!
Ken
3

Kadang-kadang sistem manajemen paket sangat rusak (sering dalam rantai ketergantungan melingkar) sehingga satu-satunya kombinasi perintah yang saya temukan untuk menghapus paket yang bermasalah adalah:

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • ATAU dpkg --remove --force-remove-reinstreq <packagename>
  • Kemudian apt-get install <packagename>untuk menginstal ulang paket

Kadang-kadang, file state-override mungkin juga perlu diperbaiki, dan prosedur di atas dapat memunculkan kesalahan mengenai hal itu .. Bagaimana cara memperbaiki file override negara tergantung pada apakah itu merupakan kesalahan yang menandai pengguna atau tidak.

Umumnya:

  • state override files berada di: /var/lib/dpkg/statoverride
  • Anda dapat memperbaruinya dengan menjalankan: dpkg-statoverride --remove <stateoverride-filename>
  • Anda bahkan dapat mengeditnya dengan tangan jika Anda tahu apa yang Anda lakukan
Chux Uzoeto
sumber
2

(Saya akan menganggap Anda bermaksud aptitude purgedan apt-get remove, karena perintah yang Anda kutip tidak ada)

Coba dpkg --purge phpmyadmin. Ini tingkat yang lebih rendah dari alat lain, jadi mungkin lebih efektif dalam hal ini.

tepang
sumber
Ini memberikan hasil yang sama tetapi tanpa umpan balik verbal yang dibutuhkan oleh aptitude. Terima kasih telah menangkap cincang nama perintah saya.
Ken
Saya mendapatkan apa yang terasa seperti masalah yang sama tetapi sayangnya saya telah secara manual mengompilasi PHP, Apache, dan lebih menginstalnya dengan menambahkan modul php5-mcrypt (yang memiliki semua yang saya sebutkan sebagai ketergantungan) akan menghasilkan agak berantakan dan duplikasi yang tidak diinginkan. Apakah tidak ada jalan lain?
ken
0

Anda mungkin ingin menjalankan 'apt-get -f install' untuk memperbaikinya:

The following packages have unmet dependencies:
 postgresql-client-9.1 : Breaks: postgresql-9.1 (< 9.1.11-0ubuntu0.12.04) but 9.1.10-0ubuntu12.04 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Saya menghadapi masalah di atas, menggunakan "sudo dpkg --purge postgresql-9.1" masalah perintah terpecahkan

manjunath.k
sumber