apt-get hangs เมื่ออัพเกรด mysql-server-5.1


9

เมื่อฉันพยายามทำต่อไปนี้:

sudo apt-get update
sudo apt-get upgrade

ในการติดตั้ง Ubuntu Server 10.04 ของฉันมันค้างที่บรรทัดต่อไปนี้:

Preparing to replace mysql-server-5.1 5.1.41-3ubuntu12.1 (using .../mysql-server-5.1_5.1.41-3ubuntu12.3_i386.deb)

ฉันไม่สามารถ CTRL-C จากมันได้! ฉันต้องฆ่าเซสชันและลงชื่อเข้าใช้จากเทอร์มินัลอื่นและกระบวนการอัปเกรดยังคงทำงานอยู่ ฉันบูตเครื่องใหม่หลายครั้งและเมื่อฉันกลับไปลองใหม่อีกครั้งเครื่องก็บอกฉันว่า:

E: dpkg was interrupted, you must manually run 'sudo --configure -a' to correct the problem.

เมื่อฉันทำฉันกลับมาที่จตุรัสหนึ่งและค้างเมื่อฉันพยายามอัพเกรด mySQL


1
และนี่จะเป็นคุณด้วย ... newyork.ubuntuforums.org/showthread.php?t=1514195
nik

2
@nik: และ? เขาไม่ควรถามคำถามหนึ่งข้อในสองแห่งใช่ไหม มันเป็นการดีที่จะโพสต์ในสองแห่ง? คุณแสดงให้เห็นว่าคุณรู้วิธีใช้งาน Google หรือไม่?
msw

2
@msw มันไม่ได้เป็นความคิดเห็นเชิงลบหรือการแสดงออก ในความเป็นจริงฉันคิดว่าฉันพบอีกการอ้างอิงถึงปัญหาที่คล้ายกัน .. แต่กลับกลายเป็นว่าไม่ใช่อย่างนั้น
nik

@msw: การโพสต์ข้ามคือ ... แย้ง แน่นอนว่ามันเป็นไปได้ที่คุณจะได้รับคำตอบ แต่จะมี 'ทีม' ที่แตกต่างกันในการทำงานในสิ่งเดียวกันอาจเกิดขึ้นกับคำแนะนำเดียวกันและเสียเวลาของพวกเขา
Bobby

เหตุผลที่ฉันโพสต์ที่นี่เพราะฉันไม่ได้รับการตอบสนองเดียวใน ubuntuforums.org จำเป็นต้องพูดฉันจะไม่ใช้พวกเขาเป็นทรัพยากรเทคโนโลยีจากนี้ :)
ร็อบ

คำตอบ:


2

ลองทำระดับที่ต่ำกว่าฉลาดหลังจากสำรองฐานข้อมูลของคุณ:

sudo dpkg -r mysql-server
sudo apt-get check    # verify that apt's metadata is okay
sudo apt-get install mysql-server

เพิ่ม :

เนื่องจากdpkg -rสำลักพยายามdpkg --purgeและล้มเหลวที่ได้รับเนื้อหาของแพคเกจที่มีdpkg -L mysql-server-5.1กำลังใจพวกเขาแล้วโคลนเกี่ยวกับสิ่ง/var/lib/dpkgต่อไปนี้

ฉันไม่เคยเห็นสิ่งที่จะได้รับขนขอโทษ

ถ้าตอนแรกคุณไม่ประสบความสำเร็จ

ฉันกำลังคิดออกมาดัง ๆ ที่นี่ยกโทษให้ฉัน เมตาแพ็คเกจ mysql- เซิร์ฟเวอร์มีหรือต้องการแพ็คเกจเหล่านี้:

libdbd-mysql-perl
libdbi-perl
libhtml-template-perl
libnet-daemon-perl
libplrpc-perl
mysql-client-5.1
mysql-client-core-5.1
mysql- เซิร์ฟเวอร์
mysql-server-5.1
mysql-core-5.1

meta-data สำหรับการจัดการบรรจุภัณฑ์ได้รับการแยกออกมาอย่างน่ายินดีมีที่เก็บส่วนกลาง แต่แพคเกจนั้นอยู่คนเดียว /var/cache/apt/archivesเป็นที่ซึ่ง*.debไฟล์ที่ติดตั้งใช้งานจริง

ก่อนอื่นบังคับให้ dpkg ลืมแพ็คเกจเหล่านี้ (เสี่ยงต่อความล้มเหลวในการลบไฟล์บางไฟล์ที่เราจะทำการแทนที่ต่อไป)

for i in mysql-server-core-5.1 mysql-server-5.1 ... ; do
    sudo dpkg -r --force-remove-reinstreq $i
done

จากนั้นรับไฟล์. deb ที่จำเป็นสำหรับการติดตั้งแบบสมบูรณ์:

sudo apt-get install --download-only mysql-server

แล้วลองติดตั้งทีละตัว:

cd /var/cache/apt/archives
sudo dpkg -i mysql-server-core-5.1_5.1.41-3ubuntu12.3_i386.deb

หากคุณมีปัญหาลอง:

sudo dpkg -D77777 -i mysql-server-core-5.1... > 2>&1 /tmp/dpkg.log.$$

และลองหาบรรทัดที่เกี่ยวข้องจาก zillion ในล็อกไฟล์แล้วโพสต์ไว้ที่นี่ ขอให้โชคดีและโชคดี


เมื่อฉันทำ "dpkg -r mysql-server" มันแจ้งว่าไม่ได้ทำการติดตั้ง ดังนั้นฉันจึงลอง "dpkg -r mysql-server-5.1" และมันบอกว่า: แพ็คเกจอยู่ในสถานะที่ไม่สอดคล้องกันมาก - คุณควรติดตั้งใหม่ก่อนที่จะทำการลบ
Rob

ฉันคิดว่าคุณลอง "dpkg -r mysql-server-5.1" และล้มเหลว?
msw

ใช่มันล้มเหลว มันรับรู้ว่ามี แต่บอกว่า "แพ็คเกจอยู่ในสถานะที่ไม่สอดคล้องกันมาก - คุณควรติดตั้งใหม่ก่อนที่จะทำการลบ"
Rob

"dpkg --purge" ให้ข้อผิดพลาดเดียวกัน ดังนั้นฉันควรลบไฟล์ทั้งหมดที่แสดงรายการด้วย "dpkg -L mysql-server-5.1" หรือไม่ และคุณหมายถึงอะไร "muck" เกี่ยวกับใน / var / lib / dpkg?
Rob

เพิ่มเฟสถัดไป
msw

6

เห็นได้ชัดว่าการอัปเดตกำลังรอให้เซิร์ฟเวอร์เริ่มต้นและด้วยเหตุผลบางอย่าง เพื่อแก้ไขปัญหามีความเป็นไปได้หลายประการ

ง่ายที่สุด:

  1. เปิดเทอร์มินัลใหม่และเรียกใช้:

    sudo services mysql start
    

ซับซ้อนมากขึ้น แต่บางครั้งก็จำเป็น: (สิ่งนี้มีประโยชน์เมื่อคุณไม่สามารถเข้าถึงเทอร์มินัลอื่น):

  1. กด "^ z" ( Ctrl+ Z) ซึ่งจะ "หยุด" งานของคุณ จากนั้นเรียกใช้:

    sudo services mysql start
    
  2. เมื่อเซิร์ฟเวอร์เริ่มพิมพ์ต่อไปนี้และกด Enter:

    fg 
    

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


ในกรณีของฉันมันกำลังรอให้เซิร์ฟเวอร์เริ่มทำงาน
izak

แม้ว่าคำสั่งเริ่มต้นจะกล่าวว่ามันกำลังทำงานอยู่ภายในไม่กี่วินาที apt-get ต่อไปได้ดี ขอบคุณ
Liam Wheldon

2

ฉันมีปัญหานี้เพราะเป็นสำเนาของ VM ดังนั้นฉันจึงเปลี่ยนที่อยู่ IP ของเซิร์ฟเวอร์ แต่ไม่ได้เปลี่ยนที่อยู่ผูกไว้ในไฟล์ my.cnf เมื่อฉันเปลี่ยนที่อยู่ผูกเพื่อให้ตรงกันการอัปเดตก็ไม่หยุดและเสร็จสมบูรณ์


1

ฉันประสบปัญหาเดียวกันและใช้เวลามากกว่าหนึ่งวันในการดีบัก

เมื่อฉันลบไดเรกทอรีฐานข้อมูล/var/lib/mysql/การติดตั้งก็ราบรื่น


2
ควรทำด้วยความระมัดระวังใช่มั้ย
slhck

1

ฉันมีปัญหาตรงนี้ แต่ไม่มีวิธีแก้ปัญหาใดที่เหมาะสม การบังคับให้ถอนการติดตั้งนั้นไม่จำเป็นใน * nix ใด ๆ และไม่ใช่ KISS ในกรณีของฉันฉันพบว่าสาเหตุนั้นง่าย MySQL ไม่ยอมเริ่มเพราะมันยังทำงานอยู่! เมื่อ apt พยายามหยุด MySQL มันทำงานอยู่และไม่หยุดจริงๆ

เช่นเคยตรวจสอบให้แน่ใจว่าคุณมีข้อมูลสำรอง!

หยุดบริการ:

sudo service mysql stop

ตรวจสอบให้แน่ใจว่าบริการไม่ได้ทำงานอีกต่อไป:

sudo ps ax | grep mysql

หากยังทำงานอยู่ให้เวลา:

sudo kill <pid>

แต่ในที่สุดถ้ามันยังทำงานอยู่คุณจะต้องฆ่ามันอย่างจริงจัง:

sudo kill -9 <pid>

เมื่อคุณยืนยันแล้วว่ามันไม่ทำงานอีกต่อไปคุณสามารถทำการอัปเดตต่อไปได้

หลังจากการอัปเดตเสร็จสมบูรณ์โดยเฉพาะถ้าคุณต้องฆ่า -9 อย่าลืมรัน mysqlcheck เพื่อให้แน่ใจว่าสิ่งที่อาจทำให้บริการไม่หยุดไม่ใช่โต๊ะที่เสียหายหรือเสียหาย ตรวจสอบให้แน่ใจว่าคุณมีการสำรองข้อมูลปกติ (และตรวจสอบให้แน่ใจว่าการสำรองข้อมูลเหล่านั้นใช้งานได้จริง!)


0

ในกรณีของฉันมีปัญหากับ /etc/mysql/my.cnf ที่มีอยู่ การตรวจสอบบันทึกข้อผิดพลาดใน /var/log/mysql/error.log เปิดเผย:

150112  5:45:47 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
150112  5:45:47 [ERROR] Do you already have another mysqld server running on port: 3306 ?
150112  5:45:47 [ERROR] Aborting

150112  5:45:47  InnoDB: Starting shutdown...
150112  5:45:52  InnoDB: Shutdown completed; log sequence number 0 1883376705
150112  5:45:52 [Note] /usr/sbin/mysqld: Shutdown complete

เห็นได้ชัดว่าอาจมีปัญหาที่แตกต่างกับ my.cnf แต่ในกรณีของฉันมันก็คือว่าเรากำลังพยายามที่จะผูกกับที่อยู่ IP เก่า เปลี่ยนเป็น:

bind 127.0.0.1

แก้ไขว่าและมันเริ่มต้นขึ้นไม่มีปัญหา

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