web-dev-qa-db-ja.com

2つのアプリケーション/パッケージを同時にインストールする方法は?

例:FlightGear(2GB)をインストールしていますが、udftoolsをすばやくインストールする必要があるだけで、そのための巨大なFlightGearインストールを壊したくないです。

Windowsは2つのプログラムの同時インストールもサポートしていますが、Linuxで試してみると、別のユーザーとttyでも失敗します。

2つのアプリケーションを同時にインストールするにはどうすればよいですか?

7
neverMind9

できません。 APTは、他のほとんどのパッケージマネージャーと同様に、ロックを使用して、単一のパッケージ管理操作が常に進行していることを確認します。これは、一貫性を保つために行われます。パッケージデータベースの状態とパッケージの状態を一貫性のある状態に保つことが重要です。これを行う最も簡単な方法は、複数の同時変更が発生しないことを保証することです。

ロックは常に固定された場所にあります(そうでなければ、それらはそれほど役に立ちません)。したがって、 lockf のようなものを使用して、自分で使用して作業をキューに入れることができます:

lockf /var/lib/dpkg/lock apt-get update

apt-get updateを実行する前に、(必要に応じて)ロックが解放されるのを待ちます。

16
Stephen Kitt

Stephen Kittが言ったように、他のパッケージのインストールでビジーな間は、パッケージマネージャーにパッケージのインストールを要求することはできません。これは、システムの一貫性の問題を引き起こすためです。ただし、コメントでpsusiが言ったように、パッケージマネージャーがまだパッケージをダウンロードしている段階にある場合、それは完全に中断可能です。 Ctrl + C、udftoolsをインストールしてから、aptを再度呼び出して、大きなパッケージのインストールを続行できます。部分的にダウンロードされたパッケージを保持し、中断したところからダウンロードを続行する必要があります。

別のプロセスで既にシステムを変更しているときに、パッケージマネージャーを起動してインストールまたは削除できないのは、プロセスが相互に通信し、アクションを調整して利益を得るには、あまりに複雑すぎるためです。システムの一貫性。たとえば、別のプロセスがインストールプロセスのどこかにあるパッケージと競合するパッケージをインストールするように依頼するとどうなるでしょうか。インストールしようとしているパッケージがそれに依存しているために、別のプロセスがすでにチェックしていたパッケージを削除するように依頼した場合はどうなりますか?現在インストール中のパッケージの別のプロセスに依存するパッケージをインストールするように依頼したが、依存パッケージは最初にインストールされてしまいます。なぜなら、競合状態に勝って、まだ依存していないパッケージに依存するインストールスクリプトを実行するからです。インストール完了?

ロックを使用して一度に1つのプロセスを制限する方が簡単で安全です。

2
JoL

あなたの例を考えると、たとえ一般的な、または庭のフライトシミュレータが、たとえ巨大なものであっても、udftoolsが行うのと同じファイルシステムの部分に変更を加えないと想定することは妥当です。

yumがより大きなトランザクションによって占有されている場合でも、rpmを使用してパッケージのインストール、アップグレード、または消去を行うことができますyumは他のyumプロセスが尊重する必要があるロックを作成しますが、rpmはそうする必要がないためです。

同様に、dpkgを使用すると、aptとネゴシエートすることなく.debパッケージをインストールできますが、より密接に統合されている場合があります。リスクがある場合は、/var/lib/dpkg/lockを削除してください。つまり、一体何ですか? OSパッケージデータベース全体の整合性のみです!

0
Rich