バッチインストール用にテキストファイルに保存されているパッケージ名をコメントアウトする方法は?

バッチインストール用にテキストファイルに保存されているパッケージ名をコメントアウトする方法は?

以下のように、「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に追加すると、すべての行がコメントアウトされたときに何も起こらないようにします。xargspackages.txt

答え2

プレーンテキストファイルの処理を避けたい場合は、次のようにpackages.txt開発しました。sysdepツールまさにこの目的のためです。tomlプレーンテキストファイルの代わりにファイルから読み取る簡単なツールです。これは次のtomlようなものを作成しますaptpyproject.tomlcargo.toml

  1. 次にダウンロード

    curl -L https://github.com/Benjamin-Tan/sysdep/releases/latest/download/sysdep-$(arch)-unknown-linux-gnu.tar.gz | tar -xz -C ~/.local/bin
    
  2. 作るsystem_dependencies.toml

    [dependencies]
    apt = ["libpackage", "libpackage2"]
    
  3. sysdep list依存関係をリストするには、「libpackage」、「libpackage2」を表示する必要があります。

  4. sysdep installインストールしてください

  5. sysdep追加オプションを示すヘルプページ

関連情報