Debianにパッケージをインストールするためのスクリプトヘルプ(インストールされていない場合のみ)

Debianにパッケージをインストールするためのスクリプトヘルプ(インストールされていない場合のみ)

私はDebian形式のgitパッケージ(.deb)を構築するスクリプトを書いています。このパッケージには次の Debian パッケージが必要です。

cmake、libturbojpeg0-dev、libjpeg62-turbo-dev、libglx-dev、opencl-headers、libgl-dev、libegl-dev、libx11-dev、libxtst-dev、libglu1-mesa-dev、libxcb-vs glx0-devとlibx11-xcb-dev

だから私はこれを使用しています:

for file in cmake libturbojpeg0-dev libjpeg62-turbo-dev libglx-dev opencl-headers libgl-dev libegl-dev libx11-dev libxtst-dev libglu1-mesa-dev libxcb-keysyms1-dev libxcb-glx0-dev libx11-xcb-dev; do apt -y install $file;done

私の質問はパッケージがインストールされていることを確認し、そうでない場合はどのようにインストールできますか?このような

dpkg -l packagename

インストールされている場合は次の手順に進み、インストールされていない場合はを使用してくださいapt -y install。ありがとう

答え1

mk-build-depsこれを行うには、スクリプトを直接作成するのではなく、パッケージ制御ファイルにビルドの依存関係を一覧表示し(またはパッケージ解析ビルドツール)を使用する必要があります。例えば pbuildersbuild等。 )。バラよりdpkg-checkbuilddepsによって検出された、満たされていないビルド依存関係を自動的にインストールします。もっと学ぶ。

これを望まない場合は、必要な状態を説明し、apt次のことを処理してください。

sudo apt-get install --no-install-recommends cmake libturbojpeg0-dev libjpeg62-turbo-dev libglx-dev opencl-headers libgl-dev libegl-dev libx11-dev libxtst-dev libglu1-mesa-dev libxcb-keysyms1-dev libxcb-glx0-dev libx11-xcb-dev

aptインストールされたパッケージは再インストールされませんが、システムで設定されたリポジトリの最新の候補バージョンにすべてのパッケージをアップグレードします(この--no-upgrade機能はこのオプションを使用して無効にできます)。

もしあなたなら本物dpkg -l各パッケージに対して実行できるスクリプトを直接作成してフィルタリングする^iiには、一致しないパッケージをインストールする必要があります。

for package in …; do
    if ! dpkg -l "$package" | grep -q ^ii; then
        sudo apt-get install --no-install-recommends "$package"
    fi
done

--no-install-recommendsビルド依存関係に正確に必要な弱い依存関係のインストールをスキップしてください。)

関連情報