「ヤムロック」の手間を回避するには?


31

アプリをインストールしようとすると、「別のアプリが現在yumロックを保持しています。終了を待っています...」というメッセージが頻繁に表示され、yumを手動で強制終了する必要があります。どうすればそれを回避できますか?yumのロックを解除する簡単な方法はありますか?

yumの1つのインスタンスのみを実行できるようです。他のパッケージマネージャー(apt-get、pacman)と同じですか?


私の場合、VPN経由でサーバーに接続していました。実行するとsudo yum -y update、すべてのパッケージがopen-VPNとともに更新されていました。open-VPNパッケージが更新されると、VPNから切断されました。再度ログインし、yumの更新を再試行しますが、同じことが表示されます。
アルン

回答:


24

PackageKitが原因だと思います。PackageKitを確認して無効にする必要があります(CentOS 7でありsystemctl、そうでない場合はserviceand を使用できますchkconfig)(コメントに記載されているように、サービス名はpackagekitそうではありませんpackagekitd):

systemctl stop packagekit
systemctl disable packagekit

別のアプローチ(CentOS / RHEL 6、Fedora 19以前)では/etc/yum/pluginconf.d/refresh-packagekit.conf、テキストエディターで開き、に変更enabled=1enabled=0ます。

または、完全に削除できます。

yum remove PackageKit

3
それは呼ばれているpackagekit.service私のCentOSに7上
ヴァディムコトフ

私の場合、systemctl stop packagekitを実行しただけで、yumロックが解放されました。
Tヘロン

9

問題を解決するには、次を実行します。

cd /var/run
rm -f yum.pid

後でyumを更新することもできます

yum -y update

1
これは症状と戦っていて、本当の原因を修正していません。
アクセルベッ

4

次の2つの簡単な手順でyumのロックを解除できます。

1)実行ps aux | grep yumして、yumをロックしているプロセスを確認します。2)kill <process_id>プロセスを強制終了します。

再度実行ps aux | grep yumして、プロセスが強制終了されたかどうかを確認します。Yumはプロセスを強制終了するとロック解除されます。


3
これは「機能します」が、おそらく悪い習慣です
デイブクシノー

1
これは特定の状況で機能します。独自のyumコマンドを開始する前に、systemdがpackagekitプロセスを再起動する状況に遭遇しました。はい、また、パッケージキットを実行しないように優雅に伝えるのではなく、PIDを強制終了するのはおそらく悪い習慣です。
0xSheepdog

1

私の場合、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

すべてが良いと信じていますが、私は非常に多くのものにプラグを引っ張るのが好きではありませんでした!


0

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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.