Nie można ponownie zainstalować serwera mysql po wyczyszczeniu

29

Niedawno zrobiłem nową instalację Ubuntu 16.04. Zainstalowałem również mysql-serveri mysql-client(ich domyślna wersja 5.7.12) przez apt-get install.

Ponieważ w 5.7.12 pojawiały się problemy, postanowiłem go odinstalować. apt-get remove mysql-server mysql-clientNajpierw spróbowałem, ale zobaczyłem, że artefakty takie jak /etc/mysqli /var/lib/mysqlnie zostały usunięte.

Potem spróbowałem apt-get --purge removed mysql-server mysql-client, ale nadal nie było różnicy.

Więc ręcznie je usunąłem (przez rm -rf). Ręcznie usunąłem również wszystkie *mysql*pliki /usr/pochodzące z tych mysql-*pakietów zależności, takich jak mysql-common.

Jednak teraz, gdy chcę ponownie zainstalować mysql-server and -client, okazuje się, że nie mogę.

W rzeczywistości jestem teraz w stanie, w którym nie mogę apt-get remove mysql-serverani apt-get install mysql-server!

Jak naprawić sytuację, w której się znajduję? Jeśli moje lokalne metadane repozytorium pakietów uległy uszkodzeniu, jak to naprawić?

Nie chciałbym ponownie instalować całego błogosławionego systemu operacyjnego ze wszystkimi innymi aplikacjami i środowiskiem, jeszcze raz z tego powodu mysql-server.

Na przykład występuje błąd, który pojawia się przy próbie usunięcia 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)

Podczas próby instalacji pojawia się ten błąd:

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

Oto wynik 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)
Złupić
źródło
Wygląda na to, mysql-server-5.7jest w złym stanie, spróbuj go ponownie zainstalować: sudo apt-get install --reinstall mysql-server-5.7.
fkraiem 27.04.16
Nie ma znaczenia, otrzymuję ten sam wiersz błędu: ... invoke-rc.d: initscript mysql, action "start" failed. ...otrzymuję inne smaki poleceń instalacyjnych.
Harry
Spróbuj go usunąć, a następnie ... sudo apt-get remove --purge mysql-server-5.7. Zauważ, że tak naprawdę mysql-server-5.7mówimy, nie mysql-server.
fkraiem 27.04.16
@Harry Wiele razy uruchamiam ponownie system, aby pozbyć się tego rodzaju błędów.
stokrotka
Mój problem rozwiązano, śledząc ten post
Raizal IN Pregnanta,

Odpowiedzi:

80

Edytowano 10 stycznia 2017 r . : To jest główna recenzja tego postu w celu rozwiązania poważnych problemów w tym poście.

Błąd w sercu

Problem polega na tym, że pakiet nadal znajduje się w systemie w stanie częściowo zainstalowanym i częściowo skonfigurowanym i należy go wyraźnie usunąć.

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)

To, co tak naprawdę mówi, to to, że pakiet mysql-server-5.7jest zależny mysql-server, jest już zainstalowany, ale nie jest skonfigurowany. Musisz to purgezrobić, aby usunąć pozostawione przez ciebie bułkę tartą mysql-server-5.7.

sudo apt purge mysql-server mysql-server-5.7

Racjonalne uzasadnienie

Gdy instalujesz oprogramowanie za pomocą apt, automatycznie obsługuje on również zależności.

Po usunięciu niektórych pakietów może nie obsługiwać tych samych zależności. W przypadku tego postu ta zależność jest następująca mysql-server-5.7.

Możesz sprawdzić stan pakietu, wydając następujące polecenie.

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

Zwykle jeśli zobaczysz kod unlub rcpo lewej stronie nazwy pakietu, będziesz w stanie stwierdzić, czy rzeczywiście jest to uszkodzony pakiet.

Kiedy doświadczyłem tego problemu, było z libapache2-mod-phpi libapache2-mod-php7.0. To był mój wynik.

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)

W moim przypadku twierdził, że status mojego pakietu jest nieznany i że nie jest zainstalowany (kod un) w moim systemie.

Kiedy mówisz aptdo removeczegoś, to może pozostawić pakiety, pliki konfiguracyjne i inne przedmioty, które mogą być problematyczne podczas zautomatyzowanych instalacjach.

Kiedy mówisz aptdo purgeczegoś, to robi to najlepiej usunąć okruszki, które removemogły pozostawione.

Pierwotnie powiedziałem, że zakładam, że proces nadal działa, ale najprawdopodobniej był nieaktywny lub martwy.

Najlepszym sposobem sprawdzenia, czy usługa zakłóca usunięcie pakietu, jest najpierw sprawdzenie tej usługi.

1) Badanie mysqlusługi

Korzystając z podanego nam przez nas błędu systemowego apt, możemy go rzeczywiście systemctlsprawdzić, sprawdzając status mysqlusługi

sudo systemctl status [pattern]

W naszym przypadku chcemy sprawdzić, czy mysql działa, więc możemy wpisać

systemctl status mysql.service

Powinieneś zobaczyć to wyjście, jeśli usługa jest uruchomiona

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

Uwaga: jeśli usługa nie działa, zobaczysz krótki komunikat informujący, że usługa o tej nazwie nie działa, a następnie przejdź do kroku 3.

2) Zatrzymywanie korzystania z mysqlusługisystemctl

Uwaga: [wzorzec] musi być nazwą wymienioną przez servicelub initctl. powodem patternjest to, że systemctlużywa dopasowania wyrażenia regularnego, więc bądź ostrożny, jeśli musisz użyć killargumentu.

sudo systemctl stop [pattern]

gdzie patternreprezentuje nazwę demona / usługi mysql. jeśli stop nie działa spróbuj

sudo systemctl kill [pattern]

Na przykład

sudo systemctl stop mysql

3) Odinstalowywanie / czyszczenie mysql

jeśli musisz całkowicie wyczyścić, najpierw upewnij się, że usługa lub proces zostały zatrzymane, a następnie upewnij się, że usuwasz odpowiednie pliki i katalogi!

Uwaga: upewnij się, że wybierasz odpowiednią mysqlwersję. Na przykład, jeśli używasz wersji 5.5, odpowiednio dostosuj numer wersji.

UWAGA: następujące kroki usuną twoje dane! (aby wykonać kopię zapasową, należy wykonać pierwsze polecenie)

źródło: Jak odinstalować 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) Naprawianie uszkodzonych pakietów i obsługa brakujących zależności

Jeśli wykonanie powyższych czynności nie działa, może trzeba uruchomić aptz --fix-brokenopcją naprawy wszelkich szkód wyrządzonych.

Pamiętaj, aby apt updatenajpierw, a potemapt install

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

5) Gdy wszystko inne zawiedzie, zbuduj i zainstaluj mysqlsiebie

Jeśli żadne z powyższych nie zadziała, będziesz musiał ręcznie pobrać źródło, skompilować i użyć make lub bash, aby zainstalować stamtąd (nie tak bolesne, jak się wydaje, ponieważ wszystko jest zautomatyzowane).

David Foerster
źródło
„16.04 jest teraz pełen mnóstwa błędów”. Działa dla mnie, w tym MySQL. Wydaje mi się, że większość problemów, które tu widzimy, wynika z tego, że ludzie robią coś źle, na przykład próbując znaleźć rmpliki należące do pakietów.
fkraiem 27.04.16
1
Doskonały kolego z pracy! Dziękuję Ci. zmarnowałem cały dzień, stosując głupie instrukcje. Teraz to zadziałało!
Renjith VR
Postępowałem zgodnie z instrukcjami i sudo systemctl stop mysql wydawał się działać. Jednak po ponownym uruchomieniu został ponownie uszkodzony. start lub stop nie działa. sudo systemctl status mysql pokazuje: Aktywne: dezaktywacja (stop-sigterm) od Pon 2016-06-27 11:05:22 BST; 8min temu Czy NAPRAWDĘ muszę czekać 10 minut na zatrzymanie mysql? Czy nie jesteś zaskoczony, że ludzie oczyszczają usługi, które nie zostały całkowicie zatrzymane? Czy to możliwe, że Ubuntu 16.04 to naprawi? Jakie są opcje, wracając do poprzedniej wersji LTS lub innej dystrybucji?
ruby_object
Dzięki usunięcie i ponowne zainstalowanie w ten sposób działało idealnie!
Louwki,
5
Uwaga: sudo rm -rf /var/lib/mysqlusunie wszystkie bazy danych w domyślnej lokalizacji. Najpierw wykonaj kopię zapasową!
sierpnia
7

Problem z pierwszym postem polega na tym, że nie można rekonfigurować dobrze meta-pakietu, nie dla elementów sql. Musisz podać bieżący element wydania.

Powiedz użycie;

apt search mysql-server

To powinno wyświetlić listę pakietów, a mianowicie

„mysql-server-5.7” „mysql-server-core-5.7” lub nowsze wersje

następnie;

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

gotowy.

e8hffff
źródło
4

To jest właściwe rozwiązanie dla Ciebie

Najpierw musisz usunąć wszystkie pakiety mysql-server:

UWAGA: następujące kroki usuną twoje dane! Najpierw wykonaj kopię zapasową!

sudo rm -rf /var/lib/mysql

Następnie zainstaluj:

sudo apt-get install lamp-server^

Lub możesz zrobić:

sudo apt-get install mysql-server
Rohan
źródło
0

zobaczyłem to

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.

jako wskazówka, że ​​nadal istniał błędny skrypt startowy.

Szukaj /etc/init.d/mysqli wszelkie dowiązania symboliczne do niego. Usunięcie ich pojawiło się, aby naprawić problemy z ponowną instalacją po czyszczeniu.

ghatzhat
źródło
0

Ten błąd wystąpił także podczas przełączania z MySQL na MariaDB ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071 ).

Pliki danych binarnych MySQL nie były kompatybilne z MariaDB, więc wróciłem do MySQL, ponieważ nie miałem czasu zadzierać z mysqldump.

Najpierw musiałem przenieść dane MariaDB /var/lib/mysql, a następnie zainstalować MySQL, a następnie przenieść moje oryginalne dane /var/lib/mysql-5.7(ta kopia zapasowa została utworzona automatycznie przed błędem) do /var/lib/mysql.

baptx
źródło
-2

Spróbuj apt-get -f installnaprawić uszkodzony pakiet SQL, a jeśli nadal masz problem z menedżerem pakietów, pobierz kod źródłowy serwera SQL i skompiluj go !! Ale wypróbuj powyższą komendę, a także użyj, dpkg -l | grep sqlaby dowiedzieć się, czy menedżer pakietów nadal myśli, że używasz SQL, czy nie.

Ali Ghasempour
źródło
Nie działał. Podałem również błąd, który pojawia się podczas próby zainstalowania pakietu.
Harry
@Harry Powinieneś uruchomić apt-get -f installsię sam, bez podawania nazwy pakietu.
fkraiem 27.04.16
Jak powiedział fkraim, używaj go bez nazwy pakietu ...
Ali Ghasempour 27.04.16
Dołączono wyjście apt-get install -f, bez zmian.
Harry
Wypróbuj aplikację synaptyczną i sprawdź, czy jest zepsuty pakiet, czy nie (w lewej kolumnie) [jeśli masz komputer stacjonarny]
Ali Ghasempour 27.04.2016