Bashスクリプトで適切なインストールを実行するには?

Bashスクリプトで適切なインストールを実行するには?

いくつかのインストールを含む新しい仮想マシンを設定するためのスクリプトを作成しようとしていますが、インストールコマンド(apt-get --yes install <package>)をスクリプトに入れると常に失敗します。

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

sudo ./setup.shスクリプトはルート()として実行されます。

aptプロセスを確認すると、次のような結果が得られます。

4 S root      2227     1  0  80   0 -  1126 -      07:33 ?        00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily update

0 S root      2231  2227  0  80   0 -  1126 -      07:33 ?        00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update

問題は、これがスクリプトでaptsを実行したときにのみ発生することです。同じコマンドを手動で実行すると、この問題は発生しません。シェルスクリプトはapt installを別々に実行しますか?

aptとにかく、インストーラをロックせずyumにシェルスクリプトでインストーラを実行する最良の方法は何ですか?

答え1

sudo apt-get install <package> -yスクリプトに書き込む必要があります。スクリプトの実行./setup.sh

しかし、もちろん、ユーザーはsudoer(sudoアクセス)でなければなりません。

答え2

これは、インストール後にbashスクリプトをさらに実行するか、これらのプロセス名が存在しなくなるまで待つ必要があることを示します(aptはロックを取得できません)。あなたはそれについて悪意のあるプロセスを終了し、ロックファイルを削除してから、更新が適切に受け取られるか完了するまで待つことができます。

失敗を引き起こす可能性がある - apt-getを実行すると、他のパッケージをインストールするときに何かをインストールします(そうしないで依存関係を使用してください)。

関連情報