Jak naprawić uszkodzoną instalację pakietu (mysql)

15

Po aktualizacji do Ubuntu 16.04 zauważyłem, że mysql ma zadziwiające błędy. Przekonany, że to była zepsuta konfiguracja, próbowałem uruchomić czystkę mysql. To nie wydawało się usuwać wszystkiego, więc próbowałem to zrobić sam:

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

To był błąd. Nigdy nie próbuj tego robić. Teraz mysql nawet nie zostanie poprawnie zainstalowany. Próbowałem ponownie zainstalować zależności:

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

I same pakiety:

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

Ale dostaję różnego rodzaju tajemnicze błędy, takie jak:

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

I odinstalowywanie

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.

Lub jeśli ponownie skonfiguruję

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

Lub jeśli wymuszę instalację:

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)

Lub jeśli zrobię czystkę:

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)

Czy apt nie może odzyskać systemu po częściowej instalacji? Czy muszę ponownie instalować system operacyjny?

Jonathan
źródło
próbowałeś zrobić prostsze podejście sudo apt-get install --reinstall mysql?
Videonauth
Zaktualizowałem, aby uwzględnić błędy z tych
Jonathan
Może chcesz wejść na czat i zobaczymy, czy możemy to rozwiązać.
Videonauth

Odpowiedzi:

22

Wykonaj następujące czynności, aby usunąć uszkodzone pakiety:

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 

Następnie zainstaluj ponownie za pomocą:

sudo apt-get install mysql mysql-client* mysql-server*
Videonauth
źródło
wielkie dzięki!! usuwanie zależności jeden po drugim jest jedyną opcją na wyjście z apt-get utknął
stackMonk
+1 za to. Dziękujemy za podanie pełnego stosu pakietów do usunięcia dla MySQL do usunięcia. Dla mnie też zadziałało.
Parveen Verma
Na moim Ubuntu 18.04 próba usunięcia mysqlclient (uruchomiona trzecia komenda) spowodowała, że: problemy z zależnością uniemożliwiają usunięcie mysql-client-5.7: mysql-server-5.7 zależy od mysql-client-5.7 (> = 5.7.26-0ubuntu0.18.04. 1). dpkg: pakiet przetwarzania błędów mysql-client-5.7 (--remove): problemy z zależnością - nie usuwane Napotkano błędy podczas przetwarzania: mysql-client-5.7, ale z uruchomionym sudo apt purge mysql-server-5.7 mysql-server- rdzeń-5.7 od tego momentu askubuntu.com/questions/760724/16-04-upgrade-broke-mysql-server wydaje się, że usunął instancję
Carmine
teraz dostałem sporo błędów podczas próby instalacji sudo apt install openjdk-8-jre openjdk-8-jdk.
Carmine
Byłem w stanie znaleźć proces, który wcześniej blokował moją próbę wyczyszczenia aktualizacji mysql, rzeczywiście zatrzymałem instancję działającą w moim systemie, a następnie usunąłem ją z innego połączonego rozwiązania. Następnie upewniłem się, że mój system został zaktualizowany. Rzeczywiście dowiedziałem się, jakoś tęsknię za wieloma aktualizacjami. Po tym, jak do tej pory, instalacja java sdk, która wymaga samej instancji mysql, wydaje się przebiegać dobrze
Carmine
13

Dzięki @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

Następnie uruchom:

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

Jeśli coś się nie powiedzie, po prostu uruchom, sudo dpkg -r <failedpackage>a jeśli TO się nie powiedzie, po prostu usuń zależny od niego pakiet. Jeśli powtórzysz, w końcu apt-get znów zacznie działać.

Zobacz także Jaka jest różnica między dpkg a aptitude / apt-get?

Jonathan
źródło
Usunięcie tych pakietów libmysqlclient, mimo że inne pakiety na nich polegają, i usunięcie wszystkiego załatwiło sprawę. Chociaż teraz dostaję błędy mysql_upgrade.
skerit
Nigdy nie dostaję błędów mysql_upgrade. Ale może być konieczne usunięcie jeszcze większej liczby pakietów. Przypuszczam, że to zależy od tego, która paczka uległa uszkodzeniu. Istnieje sposób wyszukiwania wszystkich zainstalowanych pakietów związanych z mysql, ale nie pamiętam, jak to zrobić. Myślę, że to polecenie listy dpkg przesyłane przez grep
Jonathan
9

Spróbuj tego,

uruchom to polecenie, aby wyczyścić mysql, zastąp wersję 5.7 zainstalowaną wersją

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

uruchom to, aby wyczyścić i zaktualizować pakiety

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

na koniec zainstaluj mysql

sudo apt install mysql-server

to zadziałało dla mnie.

Rahul
źródło
1
To zadziałało dla mnie, gdy wybrana odpowiedź nie (nie udało się sudo dpkg -r mysql-client-5.7)
jeff-h
Dziękuję Ci! Szukałem rozwiązania przez wiele godzin i to jest jedyna odpowiedź, która działa!
mirza
1
To zadziałało dla mnie. Ten samouczek również pomógł.
nwaweru
4

Po wyczyszczeniu, mysqljak pokazano powyżej, musisz zainstalować mysql w ten sposób:

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

Podczas instalacji w ten sposób nie wystąpi błąd instalacji.

tomek
źródło
to działa dla mnie
user1735921
2

Nie znam dokładnego powodu, ale wszystkie te metody nie działały dla mnie. W moim przypadku procedura, która rozwiązała problem, to:

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*

i uruchom ponownie !

wreszcie mogłem biegać sudo apt-get install mysql-server!

s1l3n0
źródło
Dzięki, że zadziałało dla mnie
Nijo
1

To zadziałało dla mnie

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

potem ponownie zainstalowałem mysql z

sudo apt-get install mysql-server a teraz działa dobrze.

Jayakrishnan Menon
źródło
0

Polecenie sudo dpkg -r nie działa dla mnie ..

Kiedyś sudo apt-get purge mysql-*odinstalowywałem wszystkie powiązane strony, a następnie je ponownie instalowałem

Ruijie Yuan
źródło