Come riparare l'installazione di pacchetti corrotti (mysql)


15

Dopo l'aggiornamento a Ubuntu 16.04, ho notato che mysql stava riscontrando errori da capogiro. Convinto, era un setup rotto, ho provato a eseguire una purga di mysql. Questo non sembra eliminare tutto, quindi ho provato a farlo da solo:

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

Questo è stato un errore. Non tentare MAI di farlo. Ora mysql non verrà nemmeno installato correttamente. Ho provato a reinstallare le dipendenze:

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

E i pacchetti stessi:

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

Ma ottengo tutti i tipi di errori criptici, come:

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

E disinstallazione

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.

O se riconfiguro

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

O se imposto l'installazione:

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)

O se faccio una purga:

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)

Apt non è in grado di ripristinare da un'installazione parziale? Devo reinstallare il sistema operativo ??


hai provato a seguire un approccio più semplice sudo apt-get install --reinstall mysql?
Videonauth,

Ho aggiornato per includere gli errori da quelli
Jonathan

Forse vuoi entrare in chat e vediamo se riusciamo a risolvere questo problema.
Videonauth,

Risposte:


22

Procedi come segue per ripulire i pacchetti rotti:

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 

Dopodiché reinstallalo con:

sudo apt-get install mysql mysql-client* mysql-server*

molte grazie!! la rimozione delle dipendenze una per una è l'unica opzione per uscire da apt-get stuck
stackMonk

+1 per questo. Grazie per aver menzionato lo stack completo di pacchetti da rimuovere per la rimozione di MySQL. Ha funzionato anche per me.
Parveen Verma,

Sul mio Ubuntu 18.04, provare a rimuovere mysqlclient (eseguendo il 3o comando) ha prodotto questo: problemi di dipendenza impediscono la rimozione di mysql-client-5.7: mysql-server-5.7 dipende da mysql-client-5.7 (> = 5.7.26-0ubuntu0.18.04. 1). dpkg: pacchetto di elaborazione errori mysql-client-5.7 (--remove): problemi di dipendenza - non rimozione Si sono verificati errori durante l'elaborazione: mysql-client-5.7, ma sudo apt purge mysql-server mysql-server-5.7 mysql-server- core-5.7 da qui askubuntu.com/questions/760724/16-04-upgrade-broke-mysql-server sembra che abbia eliminato l'istanza
Carmine,

ora ho avuto un sacco di errori mentre stavo cercando di installare sudo apt install openjdk-8-jre openjdk-8-jdk.
Carmine,

Sono stato in grado di trovare il processo che precedentemente stava bloccando uno qualsiasi dei miei tentativi di ripulire l'aggiornamento di mysql, in effetti ho bloccato un'istanza in esecuzione nel mio sistema, quindi ho eliminato come dall'altra soluzione collegata. Dopodiché mi sono assicurato che il mio sistema fosse aggiornato. In effetti ho scoperto che in qualche modo mi mancano molti aggiornamenti. Dopo di che ormai finora l'installazione di Java SDK che si richiede istanza di MySQL sembra procedeva bene
Carmine

13

Grazie a @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

Quindi in esecuzione:

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

Se qualcosa non riesce, basta eseguire sudo dpkg -r <failedpackage>e se quello non riesce basta rimuovere il pacchetto che dipende da esso. Se ripeti, alla fine apt-get funzionerà di nuovo.

Vedi anche Qual è la differenza tra dpkg e aptitude / apt-get?


Rimuovere quei pacchetti libmysqlclient, anche se altri pacchetti si basano su di essi, e cancellare tutto ha fatto il trucco. Anche se ora ricevo errori mysql_upgrade.
skerit,

Non ho mai avuto errori mysql_upgrade. Ma potresti dover rimuovere ancora più pacchetti. Suppongo che dipenda da quale pacchetto è stato danneggiato. C'è un modo per cercare tutti i pacchetti installati che sono correlati a mysql ma dimentico come. Penso che sia un comando dell'elenco dpkg inoltrato tramite grep
Jonathan,

9

Prova questo,

eseguire questo comando per eliminare mysql, sostituire la versione 5.7 con la versione installata

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

esegui questo per ripulire e aggiornare i pacchetti

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

infine installa mysql

sudo apt install mysql-server

questo ha funzionato per me.


1
Questo ha funzionato per me, dove la risposta selezionata non ha funzionato (fallito sudo dpkg -r mysql-client-5.7)
jeff-h

grazie! Stavo cercando una soluzione da ore e questa è l'unica risposta che funziona!
mirza,

1
Questo ha funzionato per me. Questo tutorial ha anche aiutato.
nwaweru,

4

Dopo aver eliminato mysqlcome mostrato sopra, è necessario installare mysql in questo modo:

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

Quando si installa in questo modo non si verificherà un errore di installazione.


questo funziona per me
user1735921

2

Non conosco il motivo esatto, ma tutti questi metodi non hanno funzionato per me. Nel mio caso, la procedura che ha corretto il problema era:

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*

e riavvia !

finalmente sono stato in grado di correre sudo apt-get install mysql-server!


Grazie ha funzionato per me
Nijo

1

Questo ha funzionato per me

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

poi ho installato nuovamente mysql con

sudo apt-get install mysql-server e ora funziona benissimo.


0

Il comando sudo dpkg -r non funziona per me ..

Ho usato sudo apt-get purge mysql-*per disinstallare tutto il pageage rinviato e quindi reinstallarli

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.