以下のように、「packages.txt」(または必要なもの)からapt-getパッケージを一括インストールしています。ファイルを使用したapt-getによるパッケージのインストール。
"terminator" apt パッケージをコメントアウトします。
iceweasel
#terminator
vim
エラー発生:
The command '/bin/sh -c xargs -a /tmp/packages.txt apt-get install -y' returned a non-zero code: 123
逆に、ここのようにDockerfileの代わりにPythonに「requirements.txt」と入力した場合#
。
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /tmp/requirements.txt
"requirements.txt"の使用:
python3-pip
mysql-client
#mysql-server
libmysqlclient-dev
python3-dotenv
結果:mysql-server
スキップしました。
「packages.txt」で適切なパッケージをどのようにコメントアウトしますか?
答え1
パケットを送信する前にパケットのリストをフィルタリングしてくださいxargs
。
grep -v '^#' /tmp/packages.txt | xargs -r sudo apt-get install -y
呼び出し-r
に追加すると、すべての行がコメントアウトされたときに何も起こらないようにします。xargs
packages.txt
答え2
プレーンテキストファイルの処理を避けたい場合は、次のようにpackages.txt
開発しました。sysdep
ツールまさにこの目的のためです。toml
プレーンテキストファイルの代わりにファイルから読み取る簡単なツールです。これは次のtoml
ようなものを作成しますapt
。pyproject.toml
cargo.toml
次にダウンロード
curl -L https://github.com/Benjamin-Tan/sysdep/releases/latest/download/sysdep-$(arch)-unknown-linux-gnu.tar.gz | tar -xz -C ~/.local/bin
作る
system_dependencies.toml
[dependencies] apt = ["libpackage", "libpackage2"]
sysdep list
依存関係をリストするには、「libpackage」、「libpackage2」を表示する必要があります。sysdep install
インストールしてくださいsysdep
追加オプションを示すヘルプページ