パージ後にmysql-serverを再インストールできません


29

最近、Ubuntu 16.04の新規インストールを行いました。またmysql-servermysql-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

私がいる状況をどのように修正しますか?ローカルパッケージリポジトリのメタデータが破損した場合、どうすれば修復できますか?

祝福されたOSを他のすべてのアプリや環境に再インストールするのは嫌です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

2017年1月10日編集:これは、この投稿の重大な問題を修正するためのこの投稿の主要なレビューです。

心のエラー

問題は、パッケージがまだ半分インストールされ、半分構成された状態でシステム上にあり、明示的に削除する必要があることです。

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.7mysql-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-phplibapache2-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、システムに)。

あなたが言うとき aptremove何かと、パッケージ、構成ファイル、および自動インストール中に問題となる可能性のある他のアイテムが残る可能性があります。

あなたが教えてくれたときaptpurge、それがどのパンくず削除するのが最善ですし、何かremoveの後ろに残っているかもしれませんが。

元々、プロセスはまだ実行中であると想定していましたが、ほとんどの場合、非アクティブであるか、停止しています。

サービスがパッケージの削除を妨げているかどうかを確認する最良の方法は、最初にそのサービスを確認することです。

1)調査 mysqlサービスの

から提供されたシステムエラーを使用して、サービスのステータスを確認することによりapt、実際systemctlにエラーを調査することができmysqlます。

sudo systemctl status [pattern]

この場合、mysqlが実行されているかどうかを確認したいので、次のように入力します。

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またはbashを使用する必要があります(すべて自動化されているため、それほど苦痛はありません)。


「16.04は現在、たくさんのバグに満ちています。」MySQLを含む私のために動作します。ここで見られる問題のほとんどは、rmパッケージに属するファイルをしようとするなど、何か間違ったことをしている人が原因だと思われます。
fkraiem

1
すばらしい仕事仲間!ありがとうございました。私はいくつかの愚かな指示を使用して私の一日を無駄にした。これでうまくいきました!
レンジットVR

私はあなたの指示に従いましたが、sudo systemctl stop mysqlは機能しているようです。しかし、再起動後に再び壊れました。開始または停止が機能しません。sudo systemctl status mysqlの表示:アクティブ:非アクティブ化(stop-sigterm)Mon 2016-06-27 11:05:22 BST以降。8分前mysqlが停止するまで本当に10分間待つ必要がありますか?あなたは、人々が完全に停止しなかったサービスをパージすることに驚いていませんか?Ubuntu 16.04で修正される可能性はありますか?以前のLTSバージョンまたは別のディストリビューションに戻るオプションは何ですか?
ruby_object

この方法で削除して再インストールすると、完璧に機能しました!
ロウキ

5
注:sudo rm -rf /var/lib/mysqlデフォルトの場所にあるすべてのデータベースが削除されます。最初にバックアップを行ってください!
8

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-serverのすべてのパッケージを削除する必要があります。

警告:次の手順はデータを削除します!最初にバックアップを行ってください!

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と互換性がなかったため、mysqldumpを操作する時間がなかったため、MySQLに切り替えました。

最初に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は、パッケージ名...外でそれを使用言ったように
アリGhasempour

の出力を追加し、apt-get install -f変更なし。
ハリー

[デスクトップを持っている場合]シナプスアプリケーションを試してみて、それが(左の列上の)壊れたパッケージまたはないがあると言うチェック
アリGhasempour
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.