Impossibile reinstallare mysql-server dopo l'eliminazione


29

Di recente ho fatto una nuova installazione di Ubuntu 16.04. Ho anche installato mysql-servere mysql-client(la loro versione predefinita 5.7.12) tramite apt-get install.

Poiché 5.7.12 mostrava alcuni problemi, ho deciso di disinstallarlo. apt-get remove mysql-server mysql-clientPrima ho provato ma ho visto che gli artefatti piacciono /etc/mysqle /var/lib/mysqlnon vengono rimossi.

Ho quindi provato apt-get --purge removed mysql-server mysql-client, ma ancora nessuna differenza.

Quindi, li ho rimossi manualmente (via rm -rf). Ho anche rimosso manualmente tutti i *mysql*file /usr/che provenivano da qualsiasi mysql-*pacchetto di dipendenze come mysql-common.

Tuttavia, ora, quando desidero reinstallare mysql-server and -client, sto scoprendo che non posso.

In effetti, ora sono in uno stato in cui non posso né apt-get remove mysql-serverapt-get install mysql-server!

Come posso risolvere la situazione in cui mi trovo? Se i metadati del repository del mio pacchetto locale sono stati danneggiati, come posso ripararlo?

Odierei reinstallare l'intero sistema operativo benedetto con tutte le altre app e l'ambiente, ancora una volta proprio per questo mysql-server.

Quanto segue, ad esempio, è l'errore che ottengo quando provo a rimuovere 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)

E quando provo ad installare, ottengo questo errore:

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

Ecco l'output di 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)

Sembra che mysql-server-5.7è in cattivo stato, provare a reinstallarlo: sudo apt-get install --reinstall mysql-server-5.7.
fkraiem,

Non fa alcuna differenza, ottengo la stessa riga di errore: ... invoke-rc.d: initscript mysql, action "start" failed. ...che ottengo con altri tipi di comandi di installazione.
Harry,

Cercare di rimuoverlo, quindi ... sudo apt-get remove --purge mysql-server-5.7. Si noti che questo è davvero di mysql-server-5.7cui stiamo parlando, non mysql-server.
fkraiem,

@Harry Molte volte, riavvio il sistema per eliminare questo tipo di errore.
margherita,

Il mio problema è stato risolto seguendo questo post
Raizal IN Pregnanta

Risposte:


80

Modificato il 10 gennaio 2017 : questa è una recensione importante di questo post per correggere gravi problemi in questo post.

L'errore nel cuore

Il problema è che il pacchetto è ancora sul sistema in uno stato mezzo installato e mezzo configurato e deve essere rimosso esplicitamente.

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)

Ciò che sta veramente dicendo è che il pacchetto mysql-server-5.7è una dipendenza per mysql-server, è già installato, ma non è configurato. Quindi è necessario per purgerimuovere quelle briciole di pane lasciate da mysql-server-5.7.

sudo apt purge mysql-server mysql-server-5.7

Fondamento logico

Quando si installa il software utilizzando apt, gestisce automaticamente anche le dipendenze.

Quando rimuovi determinati pacchetti, potrebbe non gestire le stesse dipendenze. Nel caso di questo post, quella dipendenza è mysql-server-5.7.

Puoi verificare lo stato del pacchetto emettendo il seguente comando.

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

Di solito se vedi il codice uno rcalla sinistra del nome del pacchetto, sarai in grado di dire se si tratta effettivamente di un pacchetto non funzionante.

Quando ho riscontrato questo problema, è stato con libapache2-mod-phpe libapache2-mod-php7.0. Questa è stata la mia uscita.

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)

Nel mio caso, ha affermato che lo stato del mio pacchetto è sconosciuto e che non è installato (il codice un) sul mio sistema.

Quando dite apta removequalcosa, si può lasciare i pacchetti, i file di configurazione, e altri elementi che possono essere problematico durante le installazioni automatiche.

Quando dici apta purgequalcosa che fa, è meglio rimuovere qualsiasi pangrattato che removepotrebbe essersi lasciato alle spalle.

Inizialmente ho dichiarato di presumere che il processo fosse ancora in corso, ma molto probabilmente era inattivo o morto.

Il modo migliore per verificare se il servizio interferisce con la rimozione del pacchetto è verificare prima quel servizio.

1) Indagare sul mysqlservizio

Utilizzando l'errore di sistema fornito da noi apt, possiamo effettivamente utilizzare systemctlper indagare l'errore verificando lo stato del mysqlservizio

sudo systemctl status [pattern]

Nel nostro caso, vogliamo vedere se mysql è in esecuzione, quindi è possibile digitare

systemctl status mysql.service

Dovresti vedere questo output se il servizio è in esecuzione

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

nota: se il servizio è morto, verrà visualizzato un breve messaggio che indica che non esiste alcun servizio con quel nome in esecuzione e quindi andare al passaggio 3.

2) Interruzione del mysqlservizio tramitesystemctl

nota: [modello] deve essere il nome elencato da serviceo initctl. il motivo che uso patternè perché systemctlusa la corrispondenza regex, quindi fai attenzione se devi usare l' killargomento.

sudo systemctl stop [pattern]

dove patternrappresenta il nome demone / servizio mysql. se stop non funziona, provare

sudo systemctl kill [pattern]

Per esempio

sudo systemctl stop mysql

3) Disinstallazione / eliminazione mysql

se è necessario eliminare completamente, assicurarsi prima che il servizio o il processo venga arrestato, quindi assicurarsi di rimuovere i file e le directory corretti!

Nota: assicurati di scegliere come target la mysqlversione corretta . Ad esempio, se si utilizza 5.5, regolare il numero di versione in modo appropriato.

ATTENZIONE: i seguenti passaggi elimineranno i tuoi dati! (il primo comando deve essere eseguito per eseguire un backup)

fonte: Come disinstallare 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) Riparare i pacchetti rotti e gestire le dipendenze mancanti

Se i passaggi precedenti non hanno funzionato, potrebbe essere necessario eseguire aptcon l' --fix-brokenopzione per riparare eventuali danni arrecati.

Assicurati di apt updateprima e poiapt install

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

5) Quando tutto il resto fallisce, costruisci e installa mysqlte stesso

Se nessuna delle precedenti funzioni funziona, dovrai scaricare manualmente il sorgente, compilare e usare make o bash per installarlo da lì (non è così doloroso come sembra dal momento che è tutto automatizzato).


"16.04 è pieno di un sacco di bug in questo momento." Funziona per me, incluso MySQL. Mi sembra che la maggior parte dei problemi che vediamo qui sorgano da persone che fanno qualcosa di sbagliato, come provare a rmfile appartenenti a pacchetti.
fkraiem,

1
Ottimo compagno di lavoro! grazie. ho sprecato la mia intera giornata usando alcune stupide istruzioni. Ora ha funzionato!
Renjith VR,

Ho seguito le tue istruzioni e sudo systemctl stop mysql sembrava funzionare. Tuttavia, dopo il riavvio, è stato nuovamente interrotto. start o stop non funziona. sudo systemctl status mysql mostra: Attivo: disattivazione (stop-sigterm) da lun 2016-06-27 11:05:22 BST; 8min fa Devo davvero attendere 10 minuti affinché mysql si fermi? Non sei sorpreso che le persone eliminino un servizio che non si è fermato del tutto? È possibile che Ubuntu 16.04 lo risolva? Quali sono le opzioni, tornando alla precedente versione LTS o un'altra distribuzione?
ruby_object

Grazie alla rimozione e alla reinstallazione in questo modo ha funzionato perfettamente!
Louwki,

5
nota: sudo rm -rf /var/lib/mysqlrimuoverà tutti i database nella posizione predefinita. Fai un backup prima!
agosto

7

Il problema con il primo post è che non puoi riconfigurare bene un meta-pacchetto non per gli oggetti sql. È necessario specificare l'elemento di rilascio corrente.

Dire uso;

apt search mysql-server

Ciò dovrebbe visualizzare un elenco di pacchetti vale a dire

"mysql-server-5.7" "mysql-server-core-5.7" o versioni successive

poi;

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

fatto.


4

Questa è la soluzione giusta per te

Innanzitutto, dovrai rimuovere tutti i pacchetti di mysql-server:

ATTENZIONE: i seguenti passaggi elimineranno i tuoi dati! Prima fai un backup!

sudo rm -rf /var/lib/mysql

Quindi installare:

sudo apt-get install lamp-server^

Oppure puoi fare:

sudo apt-get install mysql-server

0

l'ho visto

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.

come indizio del fatto che esisteva ancora un copione di avvio errato.

Cerca /etc/init.d/mysqle qualsiasi link simbolico ad esso. La rimozione di questi sembrava risolvere i miei problemi di reinstallazione dopo l'eliminazione.


0

Questo errore si è verificato anche durante il passaggio da MySQL a MariaDB ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071 ).

I file di dati binari di MySQL non erano compatibili con MariaDB, quindi sono tornato a MySQL perché non avevo tempo di scherzare con mysqldump.

Per prima cosa ho dovuto spostare i dati di MariaDB lontano /var/lib/mysql, quindi installare MySQL e quindi spostare i miei dati originali da /var/lib/mysql-5.7(questo backup è stato creato automaticamente prima dell'errore) in /var/lib/mysql.


-2

Prova apt-get -f installa riparare il tuo pacchetto SQL danneggiato e se hai ancora problemi con il gestore pacchetti scarica il codice sorgente del server SQL e compilarlo !! Ma prova sopra il comando e usa anche dpkg -l | grep sqlper scoprire che il gestore pacchetti pensa ancora a SQL o no ..


Non ha funzionato. Ho anche incluso l'errore che ottengo quando provo ad installare il pacchetto.
Harry,

@Harry Dovresti correre apt-get -f installda solo, senza specificare il nome di un pacchetto.
fkraiem,

Come ha detto Fkraim, usalo senza il nome del pacchetto ...
Ali Ghasempour,

Aggiunto l'output di apt-get install -f, nessuna modifica.
Harry,

Prova l'applicazione sinaptica e verifica che ci sia un pacchetto rotto o meno (nella colonna di sinistra) [se hai il desktop]
Ali Ghasempour,
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.