web-dev-qa-db-ja.com

mysql-server-5.1をアップグレードするとapt-getがハングする

私が次のことをしようとすると:

Sudo apt-get update
Sudo apt-get upgrade

ubuntu Server 10.04のインストールでは、次の行でハングします。

Preparing to replace mysql-server-5.1 5.1.41-3ubuntu12.1 (using .../mysql-server-5.1_5.1.41-3ubuntu12.3_i386.deb)

CTRL-Cでさえ出せません!セッションを強制終了して別の端末からログインする必要があり、アップグレードプロセスはまだ実行中です。何度か再起動しましたが、戻ってもう一度試すと、次のように表示されます。

E: dpkg was interrupted, you must manually run 'Sudo --configure -a' to correct the problem.

これを行うと、最初の状態に戻り、mySQLをアップグレードしようとするとフリーズします。

9
Rob

データベースをバックアップした後、aptより下のレベルに進んでみてください。

Sudo dpkg -r mysql-server
Sudo apt-get check    # verify that apt's metadata is okay
Sudo apt-get install mysql-server

追加

dpkg -rが窒息しているので、dpkg --purgeを試してみて、失敗するとdpkg -L mysql-server-5.1でパッケージの内容を取得し、それらをザッピングしてから/var/lib/dpkgをいじくり回します。

物事がそんなに毛むくじゃらになるのを見たことがない、ごめんなさい。

最初は成功しなかった場合

私はここで声を出して考えています、許してください。 mysql-serverメタパッケージには、次のパッケージが含まれているか、必要です。

libdbd-mysql-Perl
libdbi-Perl
libhtml-template-Perl
libnet-daemon-Perl
libplrpc-Perl
mysql-client-5.1
mysql-client-core-5.1
mysql-server
mysql-server-5.1
mysql-server-core-5.1

パッケージ管理用のメタデータは楽しく分離されており、中央リポジトリがありますが、パッケージはスタンドアロンです。 /var/cache/apt/archivesは、インストールされた*.debファイルが存在する場所です。

まず、dpkgにこれらのパッケージを忘れさせる(とにかく置き換える予定のいくつかのファイルの削除に失敗するリスクがある)。

for i in mysql-server-core-5.1 mysql-server-5.1 ... ; do
    Sudo dpkg -r --force-remove-reinstreq $i
done

次に、フルインストールに必要な.debファイルを取得します。

Sudo apt-get install --download-only mysql-server

次に、それらを1つずつインストールしてみてください。

cd /var/cache/apt/archives
Sudo dpkg -i mysql-server-core-5.1_5.1.41-3ubuntu12.3_i386.deb

そこで問題が発生した場合は、次を試してください。

Sudo dpkg -D77777 -i mysql-server-core-5.1... > 2>&1 /tmp/dpkg.log.$$

そして、ログファイル内の無数の行から関連する行を見つけて、ここに投稿してみてください。幸運とゴッドスピード。

2
msw

どうやらアップデートはサーバーが起動するのを待っていますが、何らかの理由で起動しません。問題を解決するには、いくつかの可能性があります。

最も簡単:

  1. 新しいターミナルを開き、次のコマンドを実行します。

    Sudo services mysql start
    

より複雑ですが、必要な場合もあります:(これは、別の端末にアクセスできない場合に便利です):

  1. 「^ z」を押します(CtrlZ)これはあなたの仕事を「止め」ます。次に、以下を実行します。

    Sudo services mysql start
    
  2. サーバーが起動したら、次のように入力してEnterキーを押します。

    fg 
    

    これにより、「STOPPED」ジョブがフォアグラウンドに戻り、中断したところから続行されます。

6
Matt

VMのコピーであるため、この問題が発生していました。サーバーのIPアドレスを変更しましたが、my.cnfファイルのバインドアドレスは変更しませんでした。バインドアドレスを一致するように変更しましたが、更新がハングせず、正常に完了しました。

2
Andrew

同じ問題に直面し、デバッグに1日以上費やしました。

データベースディレクトリを削除すると、/var/lib/mysql/、インストールはスムーズに進みました。

1
Puru Choudhary

私はこの正確な問題を抱えていましたが、既存の解決策はどれも適切ではないようでした。 * nixでは強制的にアンインストールする必要はないはずであり、KISSではありません。私の場合、原因は単純であることがわかりました。 MySQLはまだ実行中であったため、起動を拒否していました。 aptがMySQLを停止しようとしたとき、それはアクティブであり、実際に停止することはありませんでした。

いつものように、バックアップがあることを確認してください!

サービスを停止します。

Sudo service mysql stop

サービスが実行されていないことを確認します。

Sudo ps ax | grep mysql

それがまだ実行されている場合は、しばらくお待ちください。

Sudo kill <pid>

しかし、最終的には、それがまだ実行されている場合は、積極的に強制終了する必要があります。

Sudo kill -9 <pid>

実行されていないことを確認したら、更新を続行できます。

更新が完了した後、特に-9を強制終了する必要がある場合は、必ずmysqlcheckを実行して、サービスが停止しない原因となった可能性のあるものが破損または破損したテーブルではないことを確認してください。また、定期的なバックアップがあることを確認してください(そして、それらのバックアップが実際に機能することを確認してください!)。

1
zaTricky

私の場合、既存の/etc/mysql/my.cnfに問題がありました。 /var/log/mysql/error.logのエラーログを確認すると、次のことが明らかになりました。

150112  5:45:47 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
150112  5:45:47 [ERROR] Do you already have another mysqld server running on port: 3306 ?
150112  5:45:47 [ERROR] Aborting

150112  5:45:47  InnoDB: Starting shutdown...
150112  5:45:52  InnoDB: Shutdown completed; log sequence number 0 1883376705
150112  5:45:52 [Note] /usr/sbin/mysqld: Shutdown complete

明らかに、my.cnfには別の問題がある可能性がありますが、私の場合は、古いIPアドレスにバインドしようとしていたことが原因でした。変更先:

bind 127.0.0.1

それを修正し、問題なく起動します。

0
rainkinz