Cara memperbaiki instalasi paket yang rusak (mysql)

15

Setelah memutakhirkan ke Ubuntu 16.04, saya perhatikan mysql mengalami kesalahan yang membingungkan. Yakin, itu adalah pengaturan yang rusak, saya mencoba menjalankan pembersihan mysql. Tampaknya itu tidak menghapus semuanya, jadi saya mencoba melakukannya sendiri:

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

Ini adalah kesalahan. Jangan pernah mencoba melakukan ini. Sekarang mysql bahkan tidak akan menginstal dengan benar. Saya sudah mencoba menginstal ulang ketergantungan:

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

Dan paketnya sendiri:

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

Tapi saya mendapatkan semua jenis kesalahan samar, seperti:

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

Dan mencopot pemasangan

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.

Atau jika saya mengkonfigurasi ulang

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

Atau jika saya Paksa menginstal:

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)

Atau jika saya melakukan pembersihan:

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)

Apakah tidak dapat memulihkan dari pemasangan sebagian? Apakah saya harus menginstal ulang OS ??

Jonathan
sumber
sudahkah Anda mencoba melakukan pendekatan yang lebih sederhana sudo apt-get install --reinstall mysql?
Videonauth
Saya memperbarui untuk memasukkan kesalahan dari mereka
Jonathan
Mungkin Anda ingin mengobrol dan kami melihat apakah kami dapat menyelesaikannya.
Videonauth

Jawaban:

22

Lakukan hal berikut untuk membersihkan paket yang rusak:

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 

Setelah itu pasang kembali dengan:

sudo apt-get install mysql mysql-client* mysql-server*
Videonauth
sumber
Terima kasih banyak!! menghapus dependensi satu per satu adalah satu-satunya pilihan untuk keluar dari apt-macet
stackMonk
+1 untuk ini. Terima kasih telah menyebutkan setumpuk paket yang harus dihapus untuk dihapus oleh MySQL. Ini juga berhasil untuk saya.
Parveen Verma
Di ubuntu 18.04 saya mencoba menghapus mysqlclient (menjalankan perintah ke-3) menghasilkan: masalah dependensi mencegah penghapusan mysql-client-5.7: mysql-server-5.7 bergantung pada mysql-client-5.7 (> = 5.7.26-0ubuntu0.18.04. 1). dpkg: paket pemrosesan kesalahan mysql-client-5.7 (--remove): masalah ketergantungan - tidak menghapus Kesalahan yang ditemui saat memproses: mysql-client-5.7, tetapi menjalankan sudo apt membersihkan mysql-server mysql-server-5.7 mysql-server- core-5.7 dari sini askubuntu.com/questions/760724/16-04-upgrade-broke-mysql-server tampaknya menghapus instance
Carmine
sekarang saya mendapat banyak kesalahan karena saya mencoba untuk menginstal sudo apt install openjdk-8-jre openjdk-8-jdk.
Carmine
Saya dapat menemukan proses yang sebelumnya memblokir setiap upaya saya untuk membersihkan pembaruan mysql, memang saya menghentikan contoh yang berjalan di sistem saya, kemudian saya membersihkan dari solusi lain yang ditautkan. Setelah itu saya memastikan sistem saya diperbarui. Memang saya menemukan entah bagaimana saya kehilangan banyak pembaruan. Setelah itu sekarang sejauh instalasi java SDK yang membutuhkan dirinya sendiri contoh mysql tampaknya berjalan dengan baik
Carmine
13

Terima kasih kepada @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

Kemudian jalankan:

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

Jika ada yang gagal, jalankan saja sudo dpkg -r <failedpackage> dan jika ITU gagal cukup hapus paket yang bergantung padanya. Jika Anda ulangi, pada akhirnya apt-get akan bekerja lagi.

Lihat juga Apa perbedaan antara dpkg dan aptitude / apt-get?

Jonathan
sumber
Menghapus paket-paket libmysqlclient, meskipun paket lain mengandalkan mereka, dan membersihkan semuanya melakukan trik. Meskipun sekarang saya mendapatkan kesalahan mysql_upgrade.
skerit
Saya tidak pernah mendapatkan kesalahan mysql_upgrade. Tetapi Anda mungkin harus menghapus lebih banyak paket. Saya kira itu tergantung pada paket mana yang rusak. Ada cara untuk mencari semua paket yang diinstal yang terkait dengan mysql tapi saya lupa caranya. Saya pikir ini adalah perintah daftar dpkg yang disalurkan melalui grep
Jonathan
9

Coba ini,

jalankan perintah ini untuk membersihkan mysql, ganti versi 5.7 dengan versi yang Anda instal

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

jalankan ini untuk membersihkan dan memperbarui paket

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

akhirnya instal mysql

sudo apt install mysql-server

ini bekerja untuk saya.

rahul
sumber
1
Ini bekerja untuk saya, di mana jawaban yang dipilih tidak (gagal sudo dpkg -r mysql-client-5.7)
jeff-h
Terima kasih! Saya mencari solusi selama berjam-jam dan ini adalah satu-satunya jawaban yang berhasil!
mirza
1
Ini berhasil untuk saya. Tutorial ini juga membantu.
nwaweru
4

Setelah membersihkan mysqlseperti yang ditunjukkan di atas, Anda harus menginstal mysql dengan cara ini:

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

Ketika Anda menginstal cara ini, Anda tidak akan memiliki kesalahan instalasi.

Tomek
sumber
ini bekerja untuk saya
user1735921
2

Saya tidak tahu alasan pastinya, tetapi semua metode ini tidak berhasil untuk saya. Dalam kasus saya, prosedur yang memperbaiki masalah adalah:

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*

dan reboot !

akhirnya, saya sudah bisa lari sudo apt-get install mysql-server!

s1l3n0
sumber
Terima kasih itu berhasil untuk saya
Nijo
1

Ini berhasil untuk saya

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

kemudian setelah itu saya menginstal mysql lagi dengan

sudo apt-get install mysql-server dan sekarang ini berfungsi dengan baik.

Jayakrishnan Menon
sumber
0

Perintah sudo dpkg -r tidak bekerja untuk saya ..

Saya biasa sudo apt-get purge mysql-*menghapus semua halaman yang dirilis dan menginstalnya kembali

Ruijie Yuan
sumber