アプリをインストールしようとすると、「別のアプリが現在yumロックを保持しています。終了するのを待っています...」というメッセージが頻繁に表示され、yumを手動で強制終了する必要があります。どうすればそれを回避できますか? yumのロックを解除する簡単な方法はありますか?
実行できるyumのインスタンスは1つだけのようです。他のパッケージマネージャー(apt-get、pacman)と同じですか?
PackageKitが原因だと思います。 PackageKitをチェックして無効にする必要があります(私はそれがCentOS 7でsystemctl
を使用していると想定しています。それ以外の場合はservice
とchkconfig
を使用できます)(コメントで述べたように、サービス名前はpackagekit
ではなくpackagekitd
):
systemctl stop packagekit
systemctl disable packagekit
別のアプローチ(CentOS/RHEL 6、Fedora 19以前)では、/etc/yum/pluginconf.d/refresh-packagekit.conf
テキストエディタで変更し、enabled=1
〜enabled=0
。
または、完全に削除することもできます。
yum remove PackageKit
この問題を解決するには、次のようにします。
cd /var/run
rm -f yum.pid
後でyumを更新することもできます
yum -y update
2つの簡単な手順に従って、yumのロックを解除できます。
1)ps aux | grep yum
を実行して、yumをロックしているプロセスを確認します。 2)kill <process_id>
はプロセスを強制終了します。
再度ps aux | grep yum
を実行して、プロセスが強制終了されているかどうかを確認します。 Yumプロセスを終了するとロックが解除されます。
systemctl disable packagekit
十分ではありません。パッケージキットは再起動時に実行されます。 mask
コマンドの代わりにdisable
コマンドを使用します。
[root@localhost yum.repos.d]# systemctl mask packagekit
Created symlink from /etc/systemd/system/packagekit.service to /dev/null.
その後、再起動時に表示されます...
[sri@localhost ~]$ systemctl status packagekit
● packagekit.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)
私の場合、VPN(オープンVPN)経由でサーバーに接続していました。 Sudo yum -y update
を実行すると、open-VPNとともにすべてのパッケージが更新されていました。 open-VPNパッケージが更新されると、VPNから切断されました。再度ログインして、yumの更新を再試行したところ、別のプロセスがyumロックを保持していると表示されました。
ps ax | grep yum
で確認したところ、古いプロセスがまだ実行されていました。 「終了」するまで5分待ったが、プロセスは実行を続けた。それから、殺すことで「引き金を引く」ことができると思ったので、走った
kill <PID of the yum update process>
それはプロセスを殺しませんでした。それを数回試しましたが、まだ成功していません。
最後に、次のコマンドを実行してプラグを抜く必要がありました。
kill -9 <PID of the yum update process>
Yumアップデートをもう一度試しましたが、同じ問題が発生しました。次に実行しました:
rm -f /var/run/yum.pid
そして、更新を試み、この出力を得ました:
Loaded plugins: fastestmirror
Setting up Update Process
Loading mirror speeds from cached hostfile
* base: mirror.sigmanet.com
* epel: mirror.sjc02.svwh.net
* extras: mirrors.vpsie.com
* updates: mirror.pac-12.org
No Packages marked for Update
すべてが良いと信じていますが、私はプラグを抜くのが好きではありませんでした!