ไม่สามารถติดตั้ง mysql-server ใหม่หลังจากล้างข้อมูล


29

ฉันเพิ่งติดตั้ง Ubuntu 16.04 ใหม่ ฉันยังมีการติดตั้งmysql-serverและmysql-client(รุ่นเริ่มต้นของพวกเขา 5.7.12) apt-get installผ่าน

เนื่องจาก 5.7.12 แสดงปัญหาบางอย่างฉันจึงตัดสินใจถอนการติดตั้ง ฉันลองapt-get remove mysql-server mysql-clientก่อน แต่เห็นสิ่งประดิษฐ์ที่ชอบ/etc/mysqlและ/var/lib/mysqlไม่ถูกลบออก

ฉันลองแล้วapt-get --purge removed mysql-server mysql-clientแต่ก็ยังไม่แตกต่างกัน

ดังนั้นฉันลบพวกเขาเอง (ผ่านrm -rf) ฉันยังเอาออกทั้งหมดด้วยตนเอง*mysql*ไฟล์ภายใต้/usr/ที่มาจากแพคเกจการพึ่งพาเช่นmysql-*mysql-common

อย่างไรก็ตามตอนนี้เมื่อฉันต้องการติดตั้งmysql-server and -clientใหม่ฉันพบว่าฉันไม่สามารถทำได้

ในความเป็นจริงตอนนี้ผมอยู่ในสภาพที่ฉันสามารถทำได้ทั้งapt-get remove mysql-serverมิได้apt-get install mysql-server!

แก้ไขสถานการณ์ที่ฉันอยู่ได้อย่างไร หากข้อมูลเมตาที่เก็บแพ็กเกจท้องถิ่นของฉันเสียหายฉันจะซ่อมแซมได้อย่างไร?

ฉันเกลียดที่จะติดตั้งระบบปฏิบัติการทั้งความสุขกับทุกแอปอื่น ๆ mysql-serverของฉันและสิ่งแวดล้อมอีกครั้งหนึ่งเพียงเพราะ

ตัวอย่างต่อไปนี้เป็นข้อผิดพลาดที่ฉันได้รับเมื่อฉันพยายามลบ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)

และเมื่อพยายามติดตั้งฉันได้รับข้อผิดพลาดนี้:

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

นี่คือผลลัพธ์ของ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)

ดูเหมือนว่าอยู่ในสภาพที่ไม่ดีพยายามที่จะติดตั้ง:mysql-server-5.7 sudo apt-get install --reinstall mysql-server-5.7
fkraiem

ไม่แตกต่างฉันได้รับบรรทัดข้อผิดพลาดเดียวกัน: ... invoke-rc.d: initscript mysql, action "start" failed. ...ฉันได้รับพร้อมกับคำสั่งการติดตั้งรสชาติอื่น ๆ
แฮร์รี่

พยายามที่จะเอามันแล้ว sudo apt-get remove --purge mysql-server-5.7... ทราบว่านี้เป็นจริงที่เรากำลังพูดถึงไม่ได้mysql-server-5.7 mysql-server
fkraiem

@ แฮร์รี่หลายครั้งที่ฉันรีสตาร์ทระบบเพื่อกำจัดข้อผิดพลาดประเภทนี้
เดซี่

ปัญหาของฉันแก้ไขได้โดยทำตามโพสต์
Raizal ใน Pregnanta

คำตอบ:


80

แก้ไข 10 มกราคม 2017 : นี่คือการตรวจสอบที่สำคัญของโพสต์นี้เพื่อแก้ไขปัญหาร้ายแรงในโพสต์นี้

ข้อผิดพลาดที่หัวใจ

ปัญหาคือแพคเกจยังคงอยู่ในระบบในสถานะครึ่งติดตั้งและกำหนดค่าครึ่งและต้องถูกลบออกอย่างชัดเจน

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)

สิ่งที่พูดจริง ๆ คือแพคเกจmysql-server-5.7เป็นการอ้างอิงสำหรับmysql-serverติดตั้งแล้ว แต่ไม่ได้กำหนดค่า ดังนั้นคุณต้องเพื่อลบสวดมนต์เหล่านั้นทิ้งไว้ข้างหลังpurgemysql-server-5.7

sudo apt purge mysql-server mysql-server-5.7

หลักการและเหตุผล

เมื่อคุณติดตั้งซอฟต์แวร์โดยใช้ซอฟต์แวร์aptจะจัดการการขึ้นต่อกันของคุณโดยอัตโนมัติเช่นกัน

เมื่อคุณลบแพคเกจบางอย่างมันอาจไม่จัดการการอ้างอิงที่เหมือนกันเหล่านั้น ในกรณีที่มีการโพสต์นี้, mysql-server-5.7การพึ่งพาที่เป็น

คุณสามารถตรวจสอบเพื่อดูสถานะแพคเกจโดยการออกคำสั่งดังต่อไปนี้

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

โดยปกติถ้าคุณเห็นรหัสunหรือrcด้านซ้ายของชื่อแพ็คเกจคุณจะสามารถบอกได้ว่าจริง ๆ แล้วเป็นแพคเกจที่ใช้งานไม่ได้

เมื่อผมมีประสบการณ์ปัญหานี้มันก็มีและlibapache2-mod-php libapache2-mod-php7.0นี่คือผลลัพธ์ของฉัน

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)

ในกรณีของฉันมันอ้างว่าสถานะของแพ็คเกจของฉันไม่เป็นที่รู้จักและไม่ได้ติดตั้ง (รหัสun) ในระบบของฉัน

เมื่อคุณบอกaptไปremoveบางสิ่งบางอย่างก็สามารถออกจากแพคเกจแฟ้มการกำหนดค่าและรายการอื่น ๆ ที่อาจจะเป็นปัญหาในระหว่างการติดตั้งอัตโนมัติ

เมื่อคุณบอกaptไปpurgeบางสิ่งบางอย่างมันไม่ได้ดีที่สุดที่จะลบสวดมนต์ใด ๆ ที่removeอาจจะมีอยู่ข้างหลังซ้าย

ฉันแจ้งว่าตอนแรกฉันคิดว่ากระบวนการยังทำงานอยู่ แต่ส่วนใหญ่เป็นไปไม่ได้ใช้งานหรือตายไป

วิธีที่ดีที่สุดในการตรวจสอบว่าบริการรบกวนการลบแพ็คเกจของคุณหรือไม่คือตรวจสอบบริการนั้นก่อน

1) การตรวจสอบmysqlบริการ

การใช้ข้อผิดพลาดของระบบที่มอบให้กับเราโดยaptเราสามารถใช้systemctlเพื่อตรวจสอบข้อผิดพลาดโดยการตรวจสอบสถานะของmysqlบริการ

sudo systemctl status [pattern]

ในกรณีของเราเราต้องการดูว่า mysql ทำงานอยู่หรือไม่เพื่อพิมพ์ได้

systemctl status mysql.service

คุณควรเห็นผลลัพธ์นี้หากบริการกำลังทำงาน

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

หมายเหตุ: หากบริการไม่ทำงานคุณจะเห็นข้อความสั้น ๆ ระบุว่าไม่มีชื่อบริการกำลังทำงานอยู่จากนั้นข้ามไปที่ขั้นตอนที่ 3

2) การหยุดmysqlบริการโดยใช้systemctl

หมายเหตุ: [รูปแบบ] จะต้องได้รับโดยมีรายชื่อหรือservice initctlเหตุผลที่ฉันใช้patternเพราะsystemctlใช้การจับคู่ regex ดังนั้นระวังถ้าคุณต้องใช้killอาร์กิวเมนต์

sudo systemctl stop [pattern]

โดยที่patternแสดงถึง mysql daemon / ชื่อบริการ ถ้าหยุดไม่ทำงานลอง

sudo systemctl kill [pattern]

ตัวอย่างเช่น

sudo systemctl stop mysql

3) ถอนการติดตั้ง / กำจัด mysql

หากคุณจำเป็นต้องล้างข้อมูลทั้งหมดให้แน่ใจว่าบริการหรือกระบวนการหยุดก่อนจากนั้นตรวจสอบให้แน่ใจว่าคุณได้ลบไฟล์และไดเรกทอรีที่ถูกต้อง!

หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณกำหนดเป้าหมายmysqlเวอร์ชันที่ถูกต้อง ตัวอย่างเช่นถ้าคุณใช้ 5.5 ให้ปรับหมายเลขเวอร์ชันให้เหมาะสม

คำเตือน:ขั้นตอนต่อไปนี้จะลบข้อมูลของคุณ! (คำสั่งแรกจะต้องดำเนินการเพื่อทำการสำรองข้อมูล)

แหล่งที่มา: ฉันจะถอนการติดตั้ง 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) การแก้ไขแพ็คเกจที่เสียหายและการจัดการการพึ่งพาที่ขาดหายไป

หากขั้นตอนก่อนหน้านี้ไม่ได้ผลสำหรับคุณคุณอาจจำเป็นต้องใช้aptกับ--fix-brokenตัวเลือกในการซ่อมแซมความเสียหายใด ๆ ที่ทำ

ตรวจสอบให้แน่ใจapt updateก่อนแล้วapt install

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

5) เมื่อสิ่งอื่นล้มเหลวให้สร้างและติดตั้งmysqlด้วยตนเอง

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


"16.04 เต็มไปด้วยข้อบกพร่องมากมายในตอนนี้" ทำงานได้ดีสำหรับฉันรวมถึง MySQL สำหรับฉันดูเหมือนว่าปัญหาส่วนใหญ่ที่เราเห็นที่นี่เกิดขึ้นจากคนที่ทำสิ่งผิดปกติเช่นพยายามrmไฟล์ที่เป็นของแพ็คเกจ
fkraiem

1
เพื่อนร่วมงานยอดเยี่ยม! ขอขอบคุณ. ฉันเสียทั้งวันโดยใช้คำแนะนำโง่ ๆ ตอนนี้ใช้งานได้!
Renjith VR

ฉันได้ทำตามคำแนะนำของคุณและ sudo systemctl หยุด mysql ดูเหมือนจะทำงาน อย่างไรก็ตามหลังจากรีบูตเครื่องมันก็เสียอีกครั้ง เริ่มหรือหยุดไม่ทำงาน สถานะ sudo systemctl แสดง mysql: ใช้งานอยู่: ปิดใช้งาน (หยุดทำงาน sigterm) ตั้งแต่จันทร์ 2016-06-27 11:05:22 BST; 8 นาทีที่แล้วฉันต้องรอ 10 นาทีเพื่อให้ mysql หยุดทำงานหรือไม่ คุณไม่แปลกใจเลยที่คนล้างบริการที่ไม่ได้หยุดอย่างสมบูรณ์หรือ เป็นไปได้หรือไม่ว่า Ubuntu 16.04 จะแก้ไขได้หรือไม่ ตัวเลือกอะไรบ้างที่จะกลับไปเป็นเวอร์ชั่น LTS ก่อนหน้าหรือดิสทริบิวอื่น?
ruby_object

ขอบคุณที่ลบและติดตั้งใหม่ด้วยวิธีนี้ทำงานได้อย่างสมบูรณ์แบบ!
Louwki

5
หมายเหตุ: sudo rm -rf /var/lib/mysqlจะลบฐานข้อมูลทั้งหมดของคุณในตำแหน่งเริ่มต้น สำรองข้อมูลก่อน!
ออกัสโต

7

ปัญหาของการโพสต์แรกคือคุณไม่สามารถกำหนดค่าเมตาแพคเกจใหม่ได้ดีไม่ใช่สำหรับรายการ sql คุณต้องระบุรายการวางจำหน่ายปัจจุบัน

ใช้งานได้

apt search mysql-server

ที่ควรแสดงรายการแพ็คเกจคือ

"mysql-server-5.7" "mysql-server-core-5.7" หรือใหม่กว่า

แล้ว;

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

เสร็จแล้ว


4

นี่คือทางออกที่ถูกต้องสำหรับคุณ

ก่อนอื่นคุณจะต้องลบแพ็คเกจทั้งหมดของ mysql-server:

คำเตือน: ขั้นตอนต่อไปนี้จะลบข้อมูลของคุณ! สำรองข้อมูลก่อน!

sudo rm -rf /var/lib/mysql

จากนั้นติดตั้ง:

sudo apt-get install lamp-server^

หรือคุณสามารถทำ:

sudo apt-get install mysql-server

0

ฉันเห็นสิ่งนี้

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.

เป็นเบาะแสว่ายังมีสคริปต์เริ่มต้นทำงานผิดพลาดที่มีอยู่

มองหา/etc/init.d/mysqlและเชื่อมโยงไปถึงมัน การลบสิ่งเหล่านี้ดูเหมือนจะแก้ไขปัญหาการติดตั้งใหม่หลังจากล้างข้อมูล


0

ข้อผิดพลาดนี้ก็เกิดขึ้นเมื่อเปลี่ยนจาก MySQL เป็น MariaDB ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071 )

ไฟล์ข้อมูลไบนารีของ MySQL ไม่รองรับ MariaDB ดังนั้นฉันจึงเปลี่ยนกลับไปเป็น MySQL เพราะฉันไม่มีเวลายุ่งกับ mysqldump

ครั้งแรกที่ฉันต้องย้ายข้อมูล MariaDB ห่างจาก/var/lib/mysqlแล้วติดตั้ง MySQL และจากนั้นย้ายข้อมูลเดิมของฉันจาก/var/lib/mysql-5.7(การสำรองข้อมูลนี้ถูกสร้างขึ้นโดยอัตโนมัติก่อนที่จะเกิดข้อผิดพลาด) /var/lib/mysqlเพื่อ


-2

ลองapt-get -f installแก้ไขแพ็คเกจ SQL ที่ใช้งานไม่ได้และถ้าคุณยังมีปัญหากับตัวจัดการแพ็คเกจดาวน์โหลดซอร์สโค้ดเซิร์ฟเวอร์ SQL และคอมไพล์มัน !! แต่ลองคำสั่งข้างต้นและใช้dpkg -l | grep sqlเพื่อค้นหาตัวจัดการแพคเกจยังคิดว่าคุณ SQL หรือไม่ ..


ไม่ทำงาน. ฉันได้รวมข้อผิดพลาดที่ฉันได้รับเมื่อพยายามติดตั้งแพ็คเกจ
แฮร์รี่

@Harry คุณควรรันapt-get -f installด้วยตัวเองโดยไม่ต้องระบุชื่อแพ็คเกจ
fkraiem

อย่างที่ fkraim บอกให้ใช้โดยไม่ใช้ชื่อแพ็คเกจ ...
Ali Ghasempour

ผนวกเอาต์พุตของapt-get install -fไม่มีการเปลี่ยนแปลง
แฮร์รี่

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