การลบแพ็คเกจที่เสียหาย


9

เมื่อเร็ว ๆ นี้ด้วยความหงุดหงิดกับการติดตั้ง phpmyadmin ฉันตัดสินใจเริ่มจากศูนย์

น่าเสียดายในระหว่างขั้นตอนการถอนการติดตั้งฉันได้รับแจ้งด้วยรหัสผ่านรูทสำหรับ mysql ซึ่งฉันไม่ได้มีในขณะนั้น พอจะบอกได้ว่ามันแจ้งฉันว่าจะมีส่วนประกอบตกค้างเพราะมันไม่สามารถทำความสะอาดตัวเชื่อมต่อฐานข้อมูลได้อย่างเหมาะสม

เมื่อฉันกลับถึงบ้านฉันพยายามที่จะลบแพคเกจaptitude purgeซึ่งทำให้ไม่มีประสิทธิภาพเกินกว่าaptitude removeที่มันเห็น phpmyadmin พยายามที่จะลบมันและล้มเหลวเนื่องจากไดเรกทอรีที่เกี่ยวข้องกับแพคเกจถูกลบออกไปจากความพยายามก่อนหน้าของฉัน

ฉันพยายามติดตั้ง phpmyadmin อีกครั้ง แต่ความถนัดก็บอกว่าไม่มีการอัพเดทและไม่ทำอะไรเลยถ้ามีการอัพเดทฉันอาจเจอปัญหาเดียวกันโดยไม่คำนึงถึง

ในเรื่องนี้ฉันดำเนินการเพื่อล้าง mysql โดยวางฐานข้อมูลที่ใช้และทำความสะอาดจากตารางผู้ใช้ อย่างไรก็ตามฉันไม่ทราบว่ามีอะไรเหลืออยู่จากแพ็คเกจหรือวิธีทำความสะอาดตะขอด้วยความถนัด

ผลของการ 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

ตามคำแนะนำของ Gile ฉันพยายามติดตั้ง 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#

ดูเหมือนว่า phpmyadmin จะถูกลบออกอย่างสมบูรณ์ 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#

พยายามที่จะ dpkg จากคลังเก็บตามที่ไจล์สแนะนำ

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#

ฉันมีเว็บเซิร์ฟเวอร์ที่ทำงานบน php แต่ฉันยินดีที่จะเสี่ยงต่อการหยุดทำงานเพื่อแก้ไขปัญหานี้


คัดลอกวางคำสั่งที่แน่นอนที่คุณพยายามและผลลัพธ์ทั้งหมดที่คุณได้รับ เราอาจช่วยคุณได้ แต่ไม่เห็นข้อความแสดงข้อผิดพลาดที่แน่นอน
Gilles 'หยุดชั่วร้าย'

คำตอบ:


7

phpmyadminขึ้นอยู่กับที่มีdbconfig-common /usr/share/dbconfig-common/dpkg/prerm.mysqlดูเหมือนว่าคุณจะถอนการติดตั้งdbconfig-commonโดยไม่ถอนการติดตั้งphpmyadminซึ่งไม่ควรเกิดขึ้น (คุณลองทำ--forceอะไรบ้าง)

aptitude reinstall dbconfig-commonคำแนะนำของฉันคือครั้งแรกลอง หากใช้งานได้คุณควรมีระบบในสถานะที่สอดคล้องกันซึ่งคุณสามารถลองaptitude purge phpmyadminอีกครั้ง

/var/lib/dpkg/info/phpmyadmin.prermสิ่งที่คุณสามารถทำได้ก็คือการแสดงความคิดเห็นออกบรรทัดที่กระทำผิดใน นี่น่าจะทำให้คุณสามารถถอนการติดตั้งphpmyadminได้ ฉันสงสัยว่าคุณทำในสิ่งที่บรรทัดนั้นควรจะทำเมื่อคุณแก้ไขตาราง mysql เหล่านั้นด้วยตนเอง แต่ฉันไม่รู้phpmyadminหรือผู้ดูแลระบบฐานข้อมูลโดยทั่วไปดังนั้นฉันจึงคาดเดาเท่านั้น

ความแตกต่างระหว่างremoveและpurgeคือremoveเพียงแค่ลบโปรแกรมและไฟล์ข้อมูล (สิ่งที่คุณสามารถดาวน์โหลดได้อีกครั้ง) ในขณะที่purgeก่อนอื่นสิ่งที่removeทำแล้วยังลบไฟล์การกำหนดค่า (สิ่งที่คุณอาจแก้ไขภายใน) หากremoveล้มเหลวจะทำpurgeเช่นนั้น


ฉันเพิ่งลองคุณแนะนำเกี่ยวกับการติดตั้ง dbconfig-common แต่จะไม่มีประโยชน์ ฉันได้อัปเดตคำถามของฉันด้วยผลลัพธ์ของความพยายามนั้น
เคน

@Ken: dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.debลอง หากคุณไม่ได้มีบส์ในแคชของคุณดาวน์โหลดได้จากpackages.debian.org หากมีข้อความแสดงข้อผิดพลาดให้โพสต์ข้อความเหล่านั้นและฉัน (หรือคนอื่น) อาจช่วยคุณได้
Gilles 'หยุดชั่วร้าย'

พยายามที่จะไม่มีประโยชน์ ดูเหมือนว่าฝูงตั๊กแตนถูกปล่อยออกมาบนเซิร์ฟเวอร์ Debian ที่สะอาดของฉัน คำถามได้รับการอัปเดตเพื่อแสดงถึงความพยายามล่าสุดนี้
เคน

@ เคน: คุณต้องติดตั้งการพึ่งพาphp5-mcryptเช่นกัน ความถนัดจะทำงานให้คุณ คุณสามารถลอง แต่ฉันคิดว่ามันจะปฏิเสธที่จะขยับเขยื่อนจนกว่าคุณphp5myadminจะนำไปสู่สถานะที่ดี dpkgอยู่ในระดับที่ต่ำกว่าและสามารถทำงานได้แม้ในฐานข้อมูลแพ็กเกจที่ขาด
Gilles 'ดังนั้นหยุดความชั่วร้าย'

ในความพยายามที่จะติดตั้งphp5-mcryptได้รับแจ้งครั้งแรกที่การกำจัดของและphpmyadmin dbconfig-commonฉันไม่สามารถหาวิธีแก้ไขปัญหาอื่น ๆ ได้ดังนั้นฉันคิดว่ามันจะราบเรียบบนใบหน้าเมื่อเห็นด้วย ตรงกันข้ามเพียงการกระทำที่ php5-mycrypt ถูก 'ปัญหา' สำหรับการติดตั้งความถนัดได้รับอนุญาตอย่างถูกต้องทำความสะอาดตะขอและลบและphpmyadmin dbconfig-commonฉันได้ตั้งแต่ตอนนี้ติดตั้งใหม่พร้อมกับphpmyadmin(แม้ว่าผ่าน tar สำหรับการควบคุมเพิ่มเติม) ดูเหมือนว่าเวอร์ชันล่าสุดไม่จำเป็นต้องใช้ mysql สำหรับองค์กรของตัวเอง ขอบคุณไจล์สสำหรับการลบตั๊กแตนออกจากเซิร์ฟเวอร์ของฉัน!
เคน

3

บางครั้งระบบการจัดการแพ็กเกจจะใช้งานไม่ได้ (มักจะอยู่ในห่วงโซ่การพึ่งพาแบบวงกลม) ซึ่งคำสั่งเดียวที่ฉันพบเพื่อลบแพ็กเกจที่มีปัญหาคือ:

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • หรือ dpkg --remove --force-remove-reinstreq <packagename>
  • จากนั้นapt-get install <packagename>ให้ติดตั้งแพคเกจอีกครั้ง

บางครั้งไฟล์ state-override อาจต้องได้รับการแก้ไขและขั้นตอนข้างต้นอาจทำให้เกิดข้อผิดพลาดเกี่ยวกับว่า .. วิธีแก้ไขไฟล์ override จะขึ้นอยู่กับว่าเป็นข้อผิดพลาดในการตั้งค่าสถานะผู้ใช้หรือไม่

โดยทั่วไป:

  • ไฟล์การแทนที่สถานะอยู่ใน: /var/lib/dpkg/statoverride
  • คุณสามารถอัปเดตได้โดยเรียกใช้: dpkg-statoverride --remove <stateoverride-filename>
  • คุณสามารถแก้ไขได้ด้วยตนเองถ้าคุณรู้ว่าคุณกำลังทำอะไรอยู่

2

(ฉันจะถือว่าคุณหมายถึงaptitude purgeและapt-get removeเนื่องจากคำสั่งที่คุณอ้างถึงไม่มีอยู่)

ลองdpkg --purge phpmyadminดู เป็นระดับที่ต่ำกว่าเครื่องมืออื่น ๆ ดังนั้นอาจมีประสิทธิภาพมากกว่าในกรณีนี้


มันให้ผลลัพธ์เดียวกัน แต่ไม่มีข้อเสนอแนะ verbose ตามความถนัด ขอขอบคุณที่ติดตามชื่อคำสั่งของฉัน
เคน

ฉันมีสิ่งที่รู้สึกเหมือนเป็นปัญหาเดียวกัน แต่น่าเสียดายที่ฉันรวบรวม PHP, Apache และอื่น ๆ ด้วยตนเองดังนั้นการติดตั้งสิ่งเหล่านี้โดยการเพิ่มโมดูล php5-mcrypt (ซึ่งมีทุกอย่างที่ฉันพูดถึงการพึ่งพา) จะส่งผลให้ค่อนข้างยุ่ง และการทำซ้ำที่ไม่พึงประสงค์ ไม่มีทางอื่นหรือ
เคน

0

คุณอาจต้องการเรียกใช้ 'apt-get -f install' เพื่อแก้ไขสิ่งเหล่านี้:

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).

ฉันประสบปัญหาข้างต้นโดยใช้ "sudo dpkg --purge postgresql-9.1" แก้ไขปัญหาคำสั่งแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.