apt-get hang ketika memutakhirkan mysql-server-5.1

9

Ketika saya mencoba melakukan hal berikut:

sudo apt-get update
sudo apt-get upgrade

pada instalasi Ubuntu Server 10.04 saya, ia hang di baris berikut:

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

Aku bahkan tidak bisa CTRL-C keluar dari itu! Saya akhirnya harus mematikan sesi saya dan masuk dari terminal yang berbeda dan proses pemutakhiran masih berjalan. Saya telah mem-boot ulang beberapa kali dan ketika saya kembali dan mencoba lagi itu memberi tahu saya:

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

Setelah saya lakukan itu saya kembali pada titik awal dan membeku ketika saya mencoba untuk meng-upgrade mySQL.

rampok
sumber
2
@nik: dan? dia seharusnya tidak mengajukan satu pertanyaan di dua tempat? itu baik untuk memposting di dua tempat? Anda menunjukkan bahwa Anda tahu cara menggunakan Google?
msw
2
@ msw, Itu bukan komentar negatif atau pamer. Bahkan, saya pikir saya menemukan referensi lain untuk masalah yang sama .. tetapi, ternyata tidak seperti itu.
nik
@ msw: Cross-Posting adalah ... kontroversial. Tentu saja itu memaksimalkan kemungkinan bahwa Anda mendapatkan jawaban, tetapi akan ada juga 'tim' yang berbeda mengerjakan hal yang sama, mungkin muncul dengan saran yang sama dan hanya membuang-buang waktu mereka.
Bobby
Alasan saya memposting di sini adalah karena saya tidak mendapatkan satu tanggapan di ubuntuforums.org. Tidak perlu dikatakan lagi, saya tidak akan menggunakannya sebagai sumber daya teknologi mulai sekarang :)
Rob

Jawaban:

2

Cobalah naik ke level di bawah apt, setelah mencadangkan basis data Anda:

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

menambahkan :

Karena dpkg -rtersedak coba dpkg --purgedan gagal yang mendapatkan isi paket dengan dpkg -L mysql-server-5.1zap mereka dan kemudian muck tentang /var/lib/dpkg.

Saya belum pernah melihat hal-hal berbulu seperti itu, maaf.

jika pada awalnya Anda tidak berhasil

Aku agak berpikir keras di sini, maafkan aku. Paket meta-server mysql-server berisi atau membutuhkan paket-paket ini:

libdbd-mysql-perl
libdbi-perl
libhtml-template-perl
libnet-daemon-perl
libplrpc-perl
mysql-klien-5.1
mysql-client-core-5.1
mysql-server
mysql-server mysql-server-5.1
-mysql

Meta-data untuk manajemen paket dipisahkan secara menyenangkan, ada repositori sentral tetapi paket berdiri sendiri. /var/cache/apt/archivesDi sinilah *.debfile yang telah diinstal hidup.

Pertama, paksakan dpkg untuk melupakan paket-paket ini (dengan risiko gagal menghapus beberapa file yang akan kita ganti).

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

Kemudian dapatkan file deb yang diperlukan untuk instalasi penuh:

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

dan kemudian coba pasang satu per satu:

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

jika Anda memiliki masalah di sana, coba:

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

Dan coba dan temukan baris yang relevan dari miliaran di logfile dan poskan di sini. Semoga beruntung dan berkah Tuhan.

msw
sumber
Ketika saya melakukan "dpkg -r mysql-server" dikatakan tidak diinstal. Jadi saya kemudian mencoba "dpkg -r mysql-server-5.1" dan dikatakan: Paket dalam keadaan tidak konsisten yang sangat buruk - Anda harus menginstalnya kembali sebelum mencoba menghapus.
Rob
Saya berasumsi Anda mencoba "dpkg -r mysql-server-5.1" dan gagal?
msw
Ya itu gagal. Itu mengakui bahwa itu ada di sana, tetapi mengatakan "Paket dalam keadaan tidak konsisten yang sangat buruk - Anda harus menginstalnya kembali sebelum mencoba menghapus."
Rob
"dpkg --purge" memberikan kesalahan yang sama. Jadi haruskah saya menghapus semua file yang terdaftar dengan "dpkg -L mysql-server-5.1"? Dan apa yang Anda maksud dengan "muck" tentang di / var / lib / dpkg?
Rob
menambahkan fase berikutnya
msw
6

Rupanya pembaruan sedang menunggu server untuk memulai dan untuk beberapa alasan tidak. Untuk memperbaiki masalah ada beberapa kemungkinan.

Yang termudah:

  1. Buka terminal baru, dan jalankan:

    sudo services mysql start
    

Lebih rumit tetapi kadang-kadang diperlukan: (ini berguna ketika Anda tidak memiliki akses ke terminal lain):

  1. Tekan "^ z" ( Ctrl+ Z) yang akan "BERHENTI" pekerjaan Anda. Lalu lari:

    sudo services mysql start
    
  2. Setelah server dimulai ketik yang berikut ini dan tekan Enter:

    fg 
    

    Ini akan menempatkan pekerjaan "STOPPED" Anda kembali di latar depan dan melanjutkan di mana ia tinggalkan.

Mat
sumber
Dalam kasus saya, memang menunggu server untuk memulai.
izak
Meskipun perintah mulai mengatakan itu sudah berjalan, dalam beberapa detik apt-get lanjut baik-baik saja. Terima kasih
Liam Wheldon
2

Saya mengalami masalah ini karena itu adalah salinan dari VM jadi saya telah mengubah alamat IP server tetapi tidak mengubah bind-address di file my.cnf. Setelah saya mengubah alamat-bind agar sesuai, pembaruan tidak macet dan berhasil diselesaikan.

Andrew
sumber
1

Saya menghadapi masalah yang sama dan menghabiskan lebih dari satu hari untuk men-debug-nya.

Ketika saya menghapus direktori database /var/lib/mysql/,, instalasi berjalan dengan lancar.

Puru Choudhary
sumber
2
Itu harus dilakukan dengan hati-hati, kan?
slhck
1

Saya mengalami masalah persis ini tetapi tidak ada solusi yang ada yang cocok. Memaksa pencopotan seharusnya tidak diperlukan dalam * nix apa pun dan jelas bukan KISS. Dalam kasus saya, saya menemukan bahwa penyebabnya sederhana. MySQL menolak untuk memulai karena masih berjalan! Ketika apt mencoba menghentikan MySQL, itu aktif dan tidak pernah benar-benar berhenti.

Seperti biasa, pastikan Anda memiliki cadangan!

Hentikan layanan:

sudo service mysql stop

Pastikan layanan tidak lagi berjalan:

sudo ps ax | grep mysql

Jika masih berjalan, beri waktu:

sudo kill <pid>

Tetapi pada akhirnya, jika masih berjalan, Anda harus membunuhnya secara agresif:

sudo kill -9 <pid>

Setelah Anda mengonfirmasi itu tidak lagi berjalan, Anda dapat melanjutkan dengan pembaruan.

Setelah pembaruan selesai, terutama jika Anda harus membunuh -9, pastikan untuk menjalankan mysqlcheck untuk memastikan bahwa apa pun yang menyebabkan layanan tidak berhenti bukanlah tabel yang rusak atau rusak. Juga pastikan Anda memiliki cadangan reguler (dan pastikan cadangan itu benar-benar berfungsi!).

zTricky
sumber
0

Dalam kasus saya ada masalah dengan /etc/mysql/my.cnf yang ada. Memeriksa log kesalahan di /var/log/mysql/error.log terungkap:

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

Jelas mungkin ada masalah yang berbeda dengan my.cnf, tetapi dalam kasus saya, kami mencoba untuk mengikat ke alamat IP lama. Mengubah ke:

bind 127.0.0.1

memperbaikinya dan mulai tidak ada masalah.

rainkinz
sumber