Loại bỏ các gói bị hỏng


9

Gần đây trong một cơn thất vọng với việc thiết lập phpmyadmin, tôi quyết định làm lại từ đầu.

Thật không may, trong giai đoạn gỡ cài đặt, tôi đã được nhắc với mật khẩu root cho mysql mà tôi không có trong tay vào lúc đó. Đủ để nói, nó đã thông báo cho tôi rằng sẽ có các thành phần dư lượng vì nó không thể làm sạch đúng các đầu nối cơ sở dữ liệu của nó.

Khi tôi trở về nhà, tôi đã cố gắng gỡ bỏ gói aptitude purgemà qua đó hóa ra không mạnh hơn aptitude removeở chỗ nó thấy phpmyadmin, đã cố xóa nó và thất bại vì các thư mục liên quan đến gói đã bị xóa khỏi lần thử trước đó của tôi.

Tôi đã cố gắng cài đặt lại phpmyadmin, nhưng aptitude chỉ đơn giản tuyên bố rằng không có bản cập nhật nào và không làm gì cả, nếu có bản cập nhật, tôi có thể gặp phải vấn đề tương tự.

Về vấn đề này, tôi đã tiến hành dọn sạch mysql bằng cách loại bỏ cơ sở dữ liệu mà nó sử dụng và làm sạch nó khỏi các bảng người dùng. Tuy nhiên tôi không biết những gì còn lại từ gói, hoặc thậm chí làm thế nào để làm sạch các móc trong năng khiếu.

Kết quả của 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

Theo lời khuyên của Gile, tôi đã cố gắng cài đặt lại 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#

Dường như phpmyadmin đã xóa sạch 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#

Đã cố gắng dpkg từ tài liệu lưu trữ theo đề xuất của 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#

Tôi có một máy chủ web chạy trên php, nhưng tôi sẵn sàng mạo hiểm thời gian chết để giải quyết vấn đề này.


Sao chép-dán các lệnh chính xác bạn đã thử và toàn bộ đầu ra bạn nhận được. Chúng tôi có thể có thể giúp bạn, nhưng không phải là không nhìn thấy các thông báo lỗi chính xác.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


7

phpmyadminphụ thuộc vào dbconfig-common, trong đó có chứa /usr/share/dbconfig-common/dpkg/prerm.mysql. Có vẻ như bạn đã quản lý để gỡ cài đặt dbconfig-commonmà không cần gỡ cài đặt phpmyadmin, điều này không nên xảy ra (bạn đã thử làm --forcegì chưa?).

Lời khuyên của tôi là trước tiên hãy thử aptitude reinstall dbconfig-common. Nếu nó hoạt động, bạn nên có một hệ thống ở trạng thái nhất quán để bạn có thể thử aptitude purge phpmyadminlại.

Một điều khác bạn có thể làm là bình luận ra dòng vi phạm /var/lib/dpkg/info/phpmyadmin.prerm. Điều này có khả năng làm cho bạn có thể gỡ cài đặt phpmyadmin. Tôi nghi ngờ bạn đã làm những gì dòng đó được cho là sẽ làm khi bạn chỉnh sửa các bảng mysql đó một cách thủ công, nhưng tôi không biết phpmyadminhoặc quản trị viên cơ sở dữ liệu nói chung, vì vậy tôi chỉ đoán.

Sự khác biệt giữa removepurgeremovechỉ loại bỏ các chương trình và các tập tin dữ liệu của nó (những thứ bạn có thể tải lại), trong khi purgelần đầu tiên làm những gì removekhông thì cũng loại bỏ các file cấu hình (những thứ bạn có thể đã thay đổi nội dung tại địa phương). Nếu removethất bại, thì cũng sẽ như vậy purge.


Gần đây tôi đã thử đề xuất cho bạn về việc cài đặt lại dbconfig-common, nhưng không có kết quả. Tôi đã cập nhật câu hỏi của mình với kết quả của nỗ lực đó.
Ken

@Ken: Hãy thử dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb. Nếu bạn không có các cuộc tranh luận trong bộ nhớ cache của mình, hãy tải xuống từ gói.debian.org . Nếu có thông báo lỗi, hãy đăng chúng và tôi (hoặc người khác) có thể giúp bạn với chúng.
Gilles 'SO- ngừng trở nên xấu xa'

Đã cố gắng vô ích. Có vẻ như một đàn cào cào đã được tung ra trên máy chủ Debian sạch của tôi. Câu hỏi đã được cập nhật để phản ánh nỗ lực mới nhất này.
Ken

@Ken: Bạn cũng cần phải cài đặt các phụ thuộc php5-mcrypt. Năng khiếu sẽ làm công việc cho bạn; bạn có thể thử, nhưng tôi nghĩ nó sẽ từ chối nhúc nhích cho đến khi bạn mang php5myadminđến trạng thái tốt. dpkgở mức thấp hơn và có thể hoạt động ngay cả trên cơ sở dữ liệu gói bị hỏng một phần.
Gilles 'SO- ngừng trở nên xấu xa'

Trong nỗ lực cài đặt php5-mcrypt, đầu tiên, nó đã nhắc gỡ bỏ phpmyadmindbconfig-common. Tôi không thể nhận được bất kỳ giải pháp nào khác vì vậy tôi nghĩ rằng nó sẽ rơi thẳng vào mặt nó khi tôi đồng ý. Ngược lại, chỉ đơn giản là hành động mà php5-mycrypt được 'đề xuất' để cài đặt cho phép khả năng làm sạch đúng cách các hook và gỡ bỏ phpmyadmindbconfig-common. Bây giờ tôi đã cài đặt lại chúng cùng với phpmyadmin(mặc dù thông qua một tar để kiểm soát nhiều hơn). Có vẻ như phiên bản mới nhất không yêu cầu mysql tự tổ chức. Cảm ơn bạn Giles đã loại bỏ cào cào khỏi máy chủ của tôi!
Ken

3

Đôi khi hệ thống quản lý gói bị hỏng (thường nằm trong chuỗi phụ thuộc vòng tròn) đến nỗi sự kết hợp duy nhất của các lệnh tôi đã tìm thấy để loại bỏ các gói có vấn đề là:

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • HOẶC LÀ dpkg --remove --force-remove-reinstreq <packagename>
  • Sau đó apt-get install <packagename>để cài đặt lại gói

Đôi khi, tệp ghi đè trạng thái cũng có thể cần phải được sửa và quy trình trên có thể phát sinh lỗi liên quan đến điều đó .. Cách khắc phục tệp ghi đè trạng thái tùy thuộc vào việc đó có phải là lỗi gắn cờ người dùng hay không.

Nói chung là:

  • các tập tin ghi đè trạng thái là trong: /var/lib/dpkg/statoverride
  • Bạn có thể cập nhật nó bằng cách chạy: dpkg-statoverride --remove <stateoverride-filename>
  • Bạn thậm chí có thể chỉnh sửa chúng bằng tay nếu bạn biết bạn đang làm gì

2

(Tôi sẽ cho rằng bạn có ý aptitude purgeapt-get remove, bởi vì các lệnh bạn trích dẫn không tồn tại)

Hãy thử dpkg --purge phpmyadmin. Đó là cấp độ thấp hơn các công cụ khác, vì vậy có thể hiệu quả hơn trong trường hợp này.


Nó cung cấp kết quả tương tự nhưng không có phản hồi dài dòng theo yêu cầu của năng khiếu. Cảm ơn đã bắt được băm tên của tôi.
Ken

Tôi đã gặp phải vấn đề tương tự như vậy, nhưng thật không may, tôi đã biên dịch PHP, Apache một cách thủ công và hơn thế nữa là cài đặt chúng bằng cách thêm mô-đun php5-mcrypt (có mọi thứ tôi đề cập như một phụ thuộc) sẽ dẫn đến một mớ hỗn độn và trùng lặp không mong muốn. Có không có cách nào khác?
ken

0

Bạn có thể muốn chạy 'apt-get -f install' để sửa các lỗi sau:

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

Tôi đã phải đối mặt với vấn đề trên, sử dụng vấn đề lệnh "sudo dpkg --purge postgresql-9.1"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.