Làm thế nào để sửa chữa cài đặt gói bị hỏng (mysql)


15

Sau khi nâng cấp lên Ubuntu 16.04, tôi nhận thấy mysql đang có những lỗi không đáng có. Tin tưởng, đó là một thiết lập bị hỏng, tôi đã thử chạy một cuộc thanh trừng mysql. Điều đó dường như không xóa tất cả mọi thứ, vì vậy tôi đã cố gắng tự làm điều đó:

sudo rm -r /etc/mysql
sudo rm -r /usr/share/mysql-workbench
sudo rm -r /usr/share/mysql
sudo rm -r /usr/share/mysql-common

Đây là một sai lầm. Đừng bao giờ thử làm điều này. Bây giờ mysql thậm chí sẽ không cài đặt chính xác. Tôi đã thử cài đặt lại các phụ thuộc:

sudo apt-get install --reinstall $(apt-cache depends mysql-server | grep -Po 'Depends:\s+\K[^ ]+$' | tr '\n' ' ' )

Và bản thân các gói:

sudo apt install mysql-workbench mysql-server --reinstall

Nhưng tôi nhận được tất cả các loại lỗi khó hiểu, chẳng hạn như:

sudo apt-get install --reinstall mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not         upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
E: Internal Error, No file name for mysql-server:amd64

Và gỡ cài đặt

sudo apt-get remove mysql-common
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libmysqlclient20 : Depends: mysql-common (>= 5.5) but it is not going to be installed
 mariadb-client-core-10.0 : Depends: mariadb-common (>= 10.0.24-7) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Hoặc nếu tôi cấu hình lại

sudo dpkg --configure -a
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server

Hoặc nếu tôi buộc cài đặt:

sudo apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

Hoặc nếu tôi thực hiện một cuộc thanh trừng:

sudo apt-get -f purge mysql-server 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  mysql-server*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 159 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 348226 files and directories currently installed.)
Removing mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 mysql-server-5.7
E: Sub-process /usr/bin/dpkg returned an error code (1)

Là apt không thể phục hồi từ một phần cài đặt? Tôi có phải cài đặt lại hệ điều hành không ??


bạn đã thử làm một cách tiếp cận đơn giản hơn sudo apt-get install --reinstall mysqlchưa?
Videonauth

Tôi đã cập nhật để bao gồm các lỗi từ những lỗi đó
Jonathan

Có lẽ bạn muốn tham gia trò chuyện và chúng tôi xem liệu chúng tôi có thể sắp xếp việc này không.
Videonauth

Câu trả lời:


22

Thực hiện như sau để dọn sạch các gói bị hỏng:

sudo apt-get clean
sudo apt-get update
sudo dpkg -r mysql-client-5.7
sudo dpkg -r mysql-server-5.7
sudo dpkg -r libmysqlclient20:i386
sudo dpkg -r libmysqlclient20:amd64
sudo dpkg -r libmysqlclient18:amd64
sudo dpkg -r mysql-common
sudo dpkg -r mysql 

Sau đó cài đặt lại với:

sudo apt-get install mysql mysql-client* mysql-server*

cảm ơn rất nhiều!! loại bỏ các phụ thuộc từng cái một là lựa chọn duy nhất để thoát khỏi apt-bị mắc kẹt
stackMonk

+1 cho điều này. Cảm ơn đã đề cập đến ngăn xếp hoàn chỉnh của các gói sẽ được gỡ bỏ để MySQL gỡ bỏ. Nó làm việc cho tôi quá.
Parveen Verma

Trên Ubuntu 18.04 của tôi, việc cố gắng loại bỏ mysqlclient (chạy lệnh thứ 3) đã tạo ra rằng: các vấn đề phụ thuộc ngăn chặn việc loại bỏ mysql-client-5.7: mysql-server-5.7 phụ thuộc vào mysql-client-5.7 (> = 5.7.26-0ub Ubuntu0.18.04. 1). dpkg: gói xử lý lỗi mysql-client-5.7 (--remove): các vấn đề phụ thuộc - không xóa lỗi đã gặp phải trong khi xử lý: mysql-client-5.7, nhưng chạy sudo apt purge mysql-server mysql-server-5.7 mysql-server- core-5.7 kể từ đây, Askubfox.com/questions/760724/16-04-upTHER-broke-mysql-server dường như đã xóa phiên bản
Carmine

bây giờ tôi đã có một loạt lỗi khi tôi đang cố gắng cài đặt sudo apt cài đặt openjdk-8-jre openjdk-8-jdk.
Xe cộ

Tôi đã có thể tìm thấy quy trình trước đây đã chặn bất kỳ nỗ lực nào của tôi để dọn sạch bản cập nhật của mysql, thực sự tôi đã dừng một cá thể đang chạy trong hệ thống của mình, sau đó tôi thanh trừng như từ giải pháp khác được liên kết. Sau đó tôi chắc chắn rằng hệ thống của tôi đã được cập nhật. Quả thực tôi phát hiện ra bằng cách nào đó tôi bỏ lỡ nhiều cập nhật. Sau đó, cho đến nay việc cài đặt java sdk yêu cầu bản thân mysql dường như đã được tiến hành tốt
Carmine

13

Cảm ơn @Videonauth

sudo dpkg -r mysql-client-5.7
sudo dpkg -r mysql-server-5.7
sudo dpkg -r libmysqlclient20:i386
sudo dpkg -r libmysqlclient20:amd64
sudo dpkg -r libmysqlclient18:amd64
sudo dpkg -r mysql-common

Sau đó chạy:

sudo apt-get purge mysql\* mariadb\* libmysql\* libmariadb\*

Nếu bất cứ điều gì thất bại, chỉ cần chạy sudo dpkg -r <failedpackage>và nếu THAT thất bại, chỉ cần loại bỏ các gói phụ thuộc vào nó. Nếu bạn lặp lại, cuối cùng apt-get sẽ hoạt động trở lại.

Xem thêm Sự khác biệt giữa dpkg và aptitude / apt-get là gì?


Loại bỏ các gói libmysqlclient đó, mặc dù các gói khác dựa vào chúng và thanh trừng mọi thứ đã làm được điều đó. Mặc dù bây giờ tôi nhận được lỗi mysql_upTHER.
skerit

Tôi không bao giờ có lỗi mysql_upTHER. Nhưng bạn có thể phải loại bỏ các gói thậm chí nhiều hơn . Tôi cho rằng nó phụ thuộc vào gói nào bị hỏng. Có một cách để tìm kiếm tất cả các gói được cài đặt có liên quan đến mysql nhưng tôi quên mất. Tôi nghĩ rằng đó là một lệnh danh sách dpkg được chuyển qua grep
Jonathan

9

Thử đi,

chạy lệnh này để lọc mysql, thay thế phiên bản 5.7 bằng phiên bản đã cài đặt của bạn

sudo apt purge mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7 mysql-server

chạy cái này để dọn dẹp và cập nhật các gói

sudo apt update && sudo apt dist-upgrade && sudo apt autoremove && sudo apt -f install

cuối cùng cài đặt mysql

sudo apt install mysql-server

Điều này làm việc cho tôi.


1
Điều này làm việc cho tôi, nơi câu trả lời được chọn không (nó thất bại sudo dpkg -r mysql-client-5.7)
jeff-h

cảm ơn bạn! Tôi đã tìm kiếm một giải pháp trong nhiều giờ và đây là câu trả lời duy nhất hoạt động!
mirza

1
Điều này làm việc cho tôi. Hướng dẫn này cũng giúp.
Waweru

4

Sau khi xóa mysqlnhư đã trình bày ở trên, bạn phải cài đặt mysql theo cách này:

sudo apt-get install mysql-common 
sudo apt-get install mysql-server

Khi bạn cài đặt theo cách này, bạn sẽ không gặp lỗi cài đặt.


cái này hiệu quả với tôi
user1735921

2

Tôi không biết lý do chính xác, nhưng tất cả các phương pháp này không hiệu quả với tôi. Trong trường hợp của tôi, quy trình khắc phục sự cố là:

sudo apt-get purge mysql-*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get dist-upgrade

sudo rm -rf /etc/mysql
sudo rm -rf /var/lib/mysql*

khởi động lại !

Cuối cùng, tôi đã có thể chạy sudo apt-get install mysql-server!


Cảm ơn nó đã làm việc cho tôi
Nijo

1

Điều này làm việc cho tôi

sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get dist-upgrade

sau đó tôi đã cài đặt lại mysql với

sudo apt-get install mysql-server và bây giờ nó hoạt động tốt.


0

Lệnh sudo dpkg -r không hoạt động đối với tôi ..

Tôi đã sử dụng sudo apt-get purge mysql-*để gỡ cài đặt tất cả các số trang bị hủy bỏ và sau đó cài đặt lại chúng

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.