Không thể cài đặt lại máy chủ mysql sau khi thanh lọc


29

Gần đây tôi đã cài đặt Ubuntu 16.04 mới. Tôi cũng đã cài đặt mysql-servermysql-client(phiên bản mặc định của họ 5.7.12) thông qua apt-get install.

Vì 5.7.12 đang hiển thị một số vấn đề, tôi quyết định gỡ cài đặt nó. Tôi đã thử apt-get remove mysql-server mysql-clientđầu tiên nhưng thấy rằng các đồ tạo tác thích /etc/mysql/var/lib/mysqlkhông bị xóa.

Sau đó tôi đã thử apt-get --purge removed mysql-server mysql-client, nhưng vẫn không có sự khác biệt.

Vì vậy, tôi tự gỡ bỏ chúng (thông qua rm -rf). Tôi cũng tự xóa tất cả *mysql*các tệp theo /usr/đó đến từ bất kỳ mysql-*gói phụ thuộc nào như mysql-common.

Tuy nhiên, bây giờ, khi tôi muốn cài đặt lại mysql-server and -client, tôi thấy rằng tôi không thể.

Trong thực tế, bây giờ tôi đang ở trong một tiểu bang nơi tôi có thể không apt-get remove mysql-serverhay apt-get install mysql-server!

Làm thế nào để khắc phục tình trạng tôi đang ở? Nếu siêu dữ liệu kho lưu trữ gói cục bộ của tôi bị hỏng, làm cách nào để sửa chữa nó?

Tôi ghét cài đặt lại toàn bộ hệ điều hành may mắn với tất cả các ứng dụng và môi trường khác của tôi, một lần nữa chỉ vì mysql-server.

Ví dụ, đây là lỗi tôi gặp phải khi cố xóa mysql-server:

$ apt-get remove  mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7
Use 'apt autoremove' to remove them.
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] 
(Reading database ... 237601 files and directories currently installed.)
Removing mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)

Và khi cố gắng cài đặt, tôi gặp lỗi này:

$ apt-get -f install mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  mysql-server
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/10.1 kB of archives.
After this operation, 159 kB of additional disk space will be used.
Selecting previously unselected package mysql-server.
(Reading database ... 237599 files and directories currently installed.)
Preparing to unpack .../mysql-server_5.7.12-0ubuntu1_all.deb ...
Unpacking mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)

Đây là đầu ra của apt-get install -f:

$ apt-get install -f 
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) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)

Có vẻ như mysql-server-5.7đang ở trạng thái xấu, hãy thử cài đặt lại : sudo apt-get install --reinstall mysql-server-5.7.
fkraiem

Không có sự khác biệt, tôi nhận được cùng một dòng lỗi: ... invoke-rc.d: initscript mysql, action "start" failed. ...tôi đang nhận được với các hương vị khác của các lệnh cài đặt.
Harry

Cố gắng loại bỏ nó, sau đó ... sudo apt-get remove --purge mysql-server-5.7. Lưu ý rằng đây thực sự là mysql-server-5.7chúng ta đang nói về, không phải mysql-server.
fkraiem

@Harry Nhiều lần, tôi khởi động lại hệ thống để thoát khỏi loại lỗi này.
cúc

Vấn đề của tôi đã được giải quyết bằng cách theo dõi bài đăng
Raizal IN mang thai

Câu trả lời:


80

Chỉnh sửa ngày 10 tháng 1 năm 2017 : Đây là một đánh giá chính của bài đăng này để khắc phục các vấn đề nghiêm trọng trong bài đăng này.

Lỗi tại trái tim

Vấn đề là gói vẫn nằm trên hệ thống ở trạng thái nửa cài đặt và nửa cấu hình và cần được loại bỏ rõ ràng.

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)

Những gì nó thực sự nói là gói mysql-server-5.7là một phụ thuộc cho mysql-server, đã được cài đặt, nhưng không được cấu hình. Vì vậy, bạn cần phải purgeloại bỏ những mẩu vụn bánh mì còn sót lại mysql-server-5.7.

sudo apt purge mysql-server mysql-server-5.7

Cơ sở lý luận

Khi bạn cài đặt phần mềm bằng cách sử dụng apt, nó cũng tự động xử lý các phụ thuộc cho bạn.

Khi bạn loại bỏ các gói nhất định, nó có thể không xử lý các phụ thuộc tương tự. Trong trường hợp của bài này, sự phụ thuộc đó là mysql-server-5.7.

Bạn có thể kiểm tra để xem trạng thái gói bằng cách ban hành lệnh sau.

dpkg-query -l [package-name-here]

Thông thường nếu bạn thấy mã unhoặc rcbên trái của tên gói, bạn sẽ có thể biết liệu đó có thực sự là một gói bị hỏng hay không.

Khi tôi gặp vấn đề này, nó đã với libapache2-mod-phplibapache2-mod-php7.0. Đây là đầu ra của tôi.

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                        Version            Architecture       Description
+++-===========================-==================-==================-============================================================
un  libapache2-mod-php          <none>             <none>             (no description available)

Trong trường hợp của tôi, nó tuyên bố rằng trạng thái của gói của tôi là không xác định và nó không được cài đặt (mã un) trên hệ thống của tôi.

Khi bạn nói aptvới removemột cái gì đó, nó có thể để lại các gói, tệp cấu hình và các mục khác có thể có vấn đề trong quá trình cài đặt tự động.

Khi bạn nói aptvới purgemột cái gì đó, tốt nhất là loại bỏ bất kỳ mẩu vụn bánh mì nào removecó thể bị bỏ lại.

Ban đầu tôi tuyên bố rằng tôi giả sử quy trình vẫn đang chạy, nhưng rất có thể nó không hoạt động hoặc đã chết.

Cách tốt nhất để kiểm tra xem dịch vụ có can thiệp vào việc xóa gói của bạn hay không là kiểm tra dịch vụ đó trước.

1) Điều tra mysqldịch vụ

Sử dụng lỗi hệ thống do chúng tôi cung cấp apt, chúng tôi thực sự có thể sử dụng systemctlđể điều tra lỗi bằng cách kiểm tra trạng thái mysqldịch vụ

sudo systemctl status [pattern]

Trong trường hợp của chúng tôi, chúng tôi muốn xem nếu mysql đang chạy để có thể nhập

systemctl status mysql.service

Bạn sẽ thấy đầu ra này nếu dịch vụ đang chạy

systemctl status mysql
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2017-01-10 23:10:06 EST; 1h 3min ago
 Main PID: 1206 (mysqld)
   CGroup: /system.slice/mysql.service
           └─1206 /usr/sbin/mysqld

lưu ý: Nếu dịch vụ đã chết, bạn sẽ thấy một thông báo ngắn cho biết rằng không có dịch vụ nào có tên đó đang chạy và sau đó chuyển sang bước 3.

2) Dừng mysqldịch vụ bằng cách sử dụngsystemctl

lưu ý: [mẫu] phải là tên được liệt kê bởi servicehoặc initctl. Lý do tôi sử dụng patternlà vì systemctlsử dụng kết hợp regex, vì vậy hãy cẩn thận nếu bạn phải sử dụng killđối số.

sudo systemctl stop [pattern]

trong đó patternđại diện cho tên dịch vụ / daemon mysql. nếu dừng không hoạt động hãy thử

sudo systemctl kill [pattern]

Ví dụ

sudo systemctl stop mysql

3) Gỡ cài đặt / thanh lọc mysql

nếu bạn cần thanh lọc hoàn toàn, hãy đảm bảo rằng dịch vụ hoặc quy trình được dừng trước tiên và sau đó đảm bảo bạn đang xóa đúng tệp và thư mục!

Lưu ý: Đảm bảo bạn đang nhắm mục tiêu mysqlphiên bản chính xác . Ví dụ: nếu bạn sử dụng 5.5, hãy điều chỉnh số phiên bản một cách thích hợp.

CẢNH BÁO: các bước sau sẽ xóa dữ liệu của bạn! (lệnh đầu tiên phải được thực thi để thực hiện sao lưu)

nguồn: Làm cách nào để gỡ cài đặt MySQL?

tar -zcvf ~/msql_backup.tar.gz /etc/mysql /var/lib/mysql 
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-5.7 mysql-client-core-5.7
sudo rm -rfv /etc/mysql /var/lib/mysql
sudo apt autoremove
sudo apt autoclean

4) Sửa chữa các gói bị hỏng và xử lý các phụ thuộc bị thiếu

Nếu các bước trước không hiệu quả với bạn, bạn có thể cần phải chạy aptvới --fix-brokentùy chọn để sửa chữa bất kỳ thiệt hại nào.

Hãy chắc chắn apt updatetrước và sau đóapt install

sudo apt update    
sudo apt install mysql-server mysql-client --fix-broken --fix-missing

5) Khi thất bại, xây dựng và cài đặt mysqlchính mình

Nếu không có cách nào ở trên hoạt động, bạn sẽ phải tải xuống thủ công nguồn, biên dịch và sử dụng make hoặc bash để cài đặt từ đó (không gây đau đớn như âm thanh vì nó hoàn toàn tự động).


"16.04 hiện đang bị vô số lỗi." Làm việc cho tôi, bao gồm cả MySQL. Dường như với tôi rằng hầu hết các vấn đề chúng ta thấy ở đây phát sinh từ những người làm sai, như cố gắng gửi rmcác tệp thuộc về các gói.
fkraiem

1
Bạn thân làm việc tuyệt vời! cảm ơn bạn. tôi đã lãng phí cả ngày của mình bằng cách sử dụng một số hướng dẫn ngu ngốc. Bây giờ điều này đã làm việc!
Đổi mới VR

Tôi đã làm theo hướng dẫn của bạn và sudo systemctl dừng mysql dường như hoạt động. Tuy nhiên sau khi khởi động lại nó đã bị hỏng một lần nữa. bắt đầu hoặc dừng lại không hoạt động. trạng thái sudo systemctl mysql hiển thị: Hoạt động: hủy kích hoạt (stop-sigterm) kể từ Thứ Hai 2016-06-27 11:05:22 BST; 8 phút trước Tôi có THỰC SỰ phải đợi 10 phút để mysql dừng lại không? Bạn có ngạc nhiên khi mọi người thanh lọc một dịch vụ không hoàn toàn dừng lại không? Có thể Ubuntu 16.04 sẽ sửa nó không? Các tùy chọn, quay trở lại phiên bản LTS trước hoặc bản phân phối khác là gì?
ruby_object

Cảm ơn loại bỏ và cài đặt lại cách này hoạt động hoàn hảo!
Louwki

5
lưu ý: sudo rm -rf /var/lib/mysqlsẽ xóa tất cả cơ sở dữ liệu của bạn ở vị trí mặc định. Làm sao lưu trước!
augusto

7

Vấn đề với bài đăng đầu tiên là bạn không thể cấu hình lại gói meta không dành cho các mục sql. Bạn cần chỉ định mục phát hành hiện tại.

Nói sử dụng;

apt search mysql-server

Điều đó sẽ hiển thị một danh sách các gói cụ thể

"mysql-server-5.7" "mysql-server-core-5.7" hoặc các phiên bản mới hơn

sau đó;

dpkg-reconfigure --force mysql-server-5.7 mysql-server-core-5.7

làm xong.


4

Đây là giải pháp chính xác cho bạn

Đầu tiên, bạn sẽ phải xóa tất cả các gói máy chủ mysql:

CẢNH BÁO: các bước sau sẽ xóa dữ liệu của bạn! Làm một bản sao lưu trước!

sudo rm -rf /var/lib/mysql

Sau đó cài đặt:

sudo apt-get install lamp-server^

Hoặc bạn có thể làm:

sudo apt-get install mysql-server

0

Tôi đã thấy nó

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.

như một manh mối cho thấy vẫn còn tồn tại một kịch bản khởi nghiệp sai lầm.

Hãy tìm /etc/init.d/mysqlvà bất kỳ symlink đến nó. Loại bỏ những thứ này xuất hiện để khắc phục sự cố cài đặt lại sau khi thanh lọc của tôi.


0

Lỗi này cũng xảy ra khi chuyển từ MySQL sang MariaDB ( https://bugs.launchpad.net/ubfox/+source/mysql-5.7/+orms/1490071 ).

Các tệp dữ liệu nhị phân của MySQL không tương thích với MariaDB, vì vậy tôi đã quay lại với MySQL vì tôi không có thời gian để làm phiền với mysqldump.

Đầu tiên tôi phải chuyển dữ liệu MariaDB ra khỏi /var/lib/mysql, sau đó cài đặt MySQL và sau đó di chuyển dữ liệu gốc của tôi từ /var/lib/mysql-5.7(bản sao lưu này được tạo tự động trước khi xảy ra lỗi) /var/lib/mysql.


-2

Cố gắng apt-get -f installsửa gói SQL bị hỏng của bạn và nếu bạn vẫn gặp sự cố với trình quản lý gói tải xuống mã nguồn máy chủ SQL và biên dịch nó !! Nhưng hãy thử lệnh trên và cũng sử dụng dpkg -l | grep sqlđể tìm hiểu trình quản lý gói vẫn nghĩ bạn SQL hay không ..


Đã không làm việc. Tôi cũng đã bao gồm lỗi tôi gặp phải khi cố gắng cài đặt gói.
Harry

@Harry Bạn nên tự chạy apt-get -f install, mà không chỉ định tên gói.
fkraiem

Như fkraim đã nói hãy sử dụng nó với tên gói ...
Ali Ghasempour

Nối đầu ra apt-get install -f, không thay đổi.
Harry

Hãy thử ứng dụng synap và kiểm tra xem nó có bị hỏng gói hay không (trên cột bên trái) [nếu bạn có máy tính để bàn]
Ali Ghasempour
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.