Неможливо встановити mysql-сервер після його очищення


29

Нещодавно я зробив нову установку Ubuntu 16.04. Я також встановив mysql-serverі mysql-client(за замовчуванням версія 5.7.12) через apt-get install.

Оскільки 5.7.12 показував деякі проблеми, я вирішив видалити його. Я спробував apt-get remove mysql-server mysql-clientспочатку, але побачив, що артефакти подобаються /etc/mysqlі /var/lib/mysqlне видаляються.

Потім я спробував apt-get --purge removed mysql-server mysql-client, але все одно ніякої різниці.

Отже, я вручну їх видалив (через rm -rf). Я також вручну видалив усі *mysql*файли, /usr/що входили до них із будь-яких mysql-*пакунків залежності mysql-common.

Однак зараз, коли я хочу повторно встановити mysql-server and -client, я виявляю, що не можу.

Насправді зараз я перебуваю в стані, коли не можу ні apt-get remove mysql-serverні, ні apt-get install mysql-server!

Як виправити ситуацію, в якій я перебуваю? Якщо метадані мого локального репозиторію пакунків пошкоджені, як я його відновити?

Мені б не хотілося ще раз встановити всю благословенну ОС із усіма іншими моїми програмами та оточенням, ще раз через це mysql-server.

Наступним є, наприклад, помилка, яку я отримую при спробі видалити 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)

І при спробі встановлення я отримую цю помилку:

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

Ось результат 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)

Схоже , mysql-server-5.7знаходиться в поганому стані, спробуйте перевстановити його: sudo apt-get install --reinstall mysql-server-5.7.
fkraiem

Не має різниці, я отримую той самий рядок помилки: ... invoke-rc.d: initscript mysql, action "start" failed. ...що я отримую з іншими ароматами команд установки.
Гаррі

Спробуйте видалити його, а потім ... sudo apt-get remove --purge mysql-server-5.7. Зауважте, що це дійсно mysql-server-5.7ми говоримо, ні mysql-server.
fkraiem

@Harry Багато разів перезавантажую систему, щоб позбутися від подібних помилок.
ромашка

Мою проблему вирішили, дотримуючись цього поста
Raizal IN Pregnanta

Відповіді:


80

Відредаговано 10 січня 2017 року . Це основний огляд цієї публікації для виправлення серйозних проблем у цій публікації.

Помилка на серці

Проблема полягає в тому, що пакет все ще знаходиться в системі в напівінстальованому та напівконфігурованому стані і його потрібно явно видалити.

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)

Що насправді говорить про те, що пакет mysql-server-5.7є залежністю mysql-server, він уже встановлений, але не налаштований. Тож вам потрібно, щоб purgeприбрати ті сухарі, які залишилися mysql-server-5.7.

sudo apt purge mysql-server mysql-server-5.7

Обґрунтування

Коли ви встановлюєте програмне забезпечення за допомогою apt, воно автоматично обробляє залежності і для вас.

Коли ви видаляєте певні пакети, вони можуть не обробляти ті самі залежності. У випадку цієї посади така залежність є mysql-server-5.7.

Ви можете перевірити стан пакету, видавши таку команду.

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

Зазвичай, якщо ви побачите код unабо rcзліва від імені пакета, ви зможете сказати, чи справді це зламаний пакет.

Коли я пережив це питання, це було з libapache2-mod-phpі libapache2-mod-php7.0. Це був мій вихід.

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)

У моєму випадку він стверджував, що стан мого пакету невідомий і він не встановлений (код un) у моїй системі.

Коли ви говорите , aptщоб removeщо - то, він може залишити пакети, файли конфігурації, а також інші предмети , які можуть бути проблематичними під час автоматизованих установок.

Коли ви говорите , aptщоб purgeщо - то він робить це краще , щоб видалити будь-які сухарі , які , removeможливо , залишили позаду.

Спочатку я заявив, що припускаю, що процес все ще триває, але, швидше за все, він був неактивним або мертвим.

Найкращий спосіб перевірити, чи заважає служба видалення вашого пакета, - це спочатку перевірити цю послугу.

1) Розслідування mysqlслужби

Використовуючи системну помилку, надану нам компанією apt, ми можемо фактично використати systemctlдля дослідження помилки, перевіривши стан mysqlслужби

sudo systemctl status [pattern]

У нашому випадку ми хочемо перевірити, чи працює міскель, щоб він міг набрати

systemctl status mysql.service

Ви повинні побачити цей вихід, якщо служба працює

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

Примітка: Якщо послуга померла, ви побачите коротке повідомлення, яке вказує на те, що немає служби під цим іменем, і перейдіть до кроку 3.

2) Припинення користування mysqlпослугоюsystemctl

Примітка: [шаблон] має бути ім'ям, переліченим serviceабо initctl. Я використовую причину patternтому, що systemctlвикористовує відповідність регулярних виразів, тому будьте обережні, якщо вам потрібно використовувати killаргумент.

sudo systemctl stop [pattern]

де patternпозначає ім'я демона / служби служби mysql. якщо зупинка не працює, спробуйте

sudo systemctl kill [pattern]

Наприклад

sudo systemctl stop mysql

3) Видалення / очищення mysql

якщо вам потрібно повністю очистити, переконайтеся, що служба чи процес спочатку припинено, а потім переконайтесь, що ви видаляєте потрібні файли та каталоги!

Примітка. Переконайтеся, що ви орієнтовані на правильну mysqlверсію. Наприклад, якщо ви використовуєте 5.5, відрегулюйте номер версії відповідно.

ПОПЕРЕДЖЕННЯ. Наступними кроками буде видалено ваші дані! (для створення резервної копії повинна бути виконана перша команда)

Джерело: Як видалити 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) Виправлення зламаних пакетів та обробка відсутніх залежностей

Якщо попередні кроки не спрацювали для вас, можливо, вам доведеться запустити aptз --fix-brokenможливістю відновлення завданих пошкоджень.

Переконайтеся, що apt updateспочатку, а потімapt install

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

5) Коли все інше не вдається, побудуйте та встановіть mysqlсебе

Якщо жоден із перерахованих вище не працює, вам доведеться вручну завантажити джерело, компілювати та використовувати make or bash для встановлення звідти (не так болісно, ​​як це звучить з моменту його автоматизації).


"16.04 зараз рясніє вадами помилок." Для мене працює, включаючи MySQL. Мені здається, що більшість проблем, які ми бачимо тут, виникають у тому, що люди роблять щось не так, як-от спроби rmфайлів, що належать до пакетів.
fkraiem

1
Відмінний товариш по роботі! Дякую тобі. я витратив цілий день, використовуючи кілька дурних інструкцій. Тепер це спрацювало!
Renjith VR

Я дотримувався ваших вказівок і sudo systemctl stop mysql, здавалося, працює. Однак після перезавантаження її знову зламали. пуск або зупинка не працює. sudo systemctl status mysql показує: Активний: деактивація (стоп-сигтерм) з пн 2016-06-27 11:05:22 BST; 8min тому Чи я дійсно повинен зачекати 10 хвилин, щоб mysql зупинився? Ви не здивовані, що люди очищають послугу, яка не припиняється повністю? Чи можливо, Ubuntu 16.04 це виправить? Які варіанти, повертаючись до попередньої версії LTS або іншого дистрибутива?
ruby_object

Завдяки видаленню та перевстановленню цей спосіб спрацював ідеально!
Лувки

5
Примітка: sudo rm -rf /var/lib/mysqlвидалить усі ваші бази даних у стандартному розташуванні. Зробіть резервну копію спочатку!
Августо

7

Проблема з першим повідомленням полягає в тому, що ви не можете перенастроїти мета-пакет добре не для елементів sql. Потрібно вказати поточний елемент випуску.

Скажіть використання;

apt search mysql-server

Це має відображати перелік пакетів, а саме

"mysql-server-5.7" "mysql-server-core-5.7" або новіших версій

потім;

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

зроблено.


4

Це правильне рішення для вас

По-перше, вам доведеться видалити всі пакети mysql-сервера:

ПОПЕРЕДЖЕННЯ: наступні кроки видалять ваші дані! Спершу зробіть резервну копію!

sudo rm -rf /var/lib/mysql

Потім встановіть:

sudo apt-get install lamp-server^

Або ви можете зробити:

sudo apt-get install mysql-server

0

Я це бачив

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.

як підказки, що досі існував помилковий сценарій запуску.

Шукайте /etc/init.d/mysqlі будь-які посилання на нього. Видалення цих даних виявило для усунення моїх проблем із перевстановленням після очищення.


0

Ця помилка трапилася також при переході з MySQL на MariaDB ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071 ).

Файли бінарних даних MySQL не сумісні з MariaDB, тому я перейшов на MySQL, тому що не встиг возитися з mysqldump.

Спочатку мені довелося перенести дані MariaDB /var/lib/mysql, а потім встановити MySQL, а потім перенести мої вихідні дані /var/lib/mysql-5.7(ця резервна копія була створена автоматично перед помилкою) до /var/lib/mysql.


-2

Спробуйте apt-get -f installвиправити зламаний пакет SQL, і якщо у вас все ще виникають проблеми з менеджером пакунків, завантажте вихідний код сервера SQL і скомпілюйте його !! Але спробуйте вищезгадану команду, а також використовуйте, dpkg -l | grep sqlщоб дізнатися, менеджер пакунків все ще думає, що ви SQL чи ні ..


Не працює. Я також включив помилку, яку я отримую при спробі встановити пакет.
Гаррі

@Harry Ви повинні працювати apt-get -f installсамостійно, не вказуючи назву пакета.
fkraiem

Як сказав fkraim, використовуйте його з назвою пакета ...
Алі Гассампур

Додано вихід apt-get install -f, без змін.
Гаррі

Спробуйте синаптичну програму та переконайтесь, що пакет зламаний чи ні (у лівій колонці) [якщо у вас робочий стіл]
Алі Гассампур
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.