ファイルを使用してapt-getでパッケージをインストールする


9

brewfiles、caskfiles、dockerfiles、package.jsonなどのパッケージファイルを使用して、新しいマシンにパッケージをインストールすると非常に便利です。

apt-getの代替手段はありますか?
コマンドラインで使用するだけなので、

apt-get install pkg1 pkg2 pkg3…


2
必要ですか?あなたは使用することができますxargsxargs -P1 apt-get install < list-of-packages
muru

@muruよく、私はxargsがどのように動作するのか本当にわかりません(現在のところ人間を読んでいます)が、パッケージを1つのファイルに集中化するための解決策ではないと思いますか?3つのパッケージを含む.txtファイルを使用すると、このコマンド(Debianでテスト済み)では機能しないため、<の後のファイルを手動でリストする必要があります
thibmaek

1
これ<はシェルのリダイレクトです。複数のファイルの場合、使用:cat file1 file2 .. | xargs -P1 apt-get install
muru

回答:


13

質問のコメントで指定されているように、packages.txtインストールするパッケージをリストしたと呼ばれる単純なテキストファイルを作成できます。

iceweasel
terminator
vim

次に、次のコマンドを実行します。

cat packages.txt | xargs sudo apt-get install

xargsは、packages.txtファイルからコマンドラインにパッケージ名を渡すために使用されます。manページから:

xargsは標準入力から項目を読み取り、ブランク(二重引用符または単一引用符またはバックスラッシュで保護できます)または改行で区切られ、コマンド(デフォルトは/ bin / echo)を1回以上実行します。標準入力から読み取られたアイテム。


9

@ ortomala-lokniの答えを少し改善して、ファイルを引数として直接与えることができますxargs

xargs -a packages.txt sudo apt-get install

オプションでxargs、に空白以外の文字が含まれていない場合に-rapt-get呼び出しがまったく実行されないようにするオプションを指定できますpackages.txt


これはAlpine / BusyBoxの特殊性かもしれ-aませんが、argは文書化されておらず、そこで機能しないようです:xargs: unrecognized option: a。示す私のバージョンの出力があるBusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.
テイラーEdmiston

受け入れられた回答を使用すると、aptのY / nクエリが中止されました。これを使用するとうまくいきました。ありがとう!
OK Letsdothis

1

ここに画像の説明を入力してください

私にとっては両方の方法で動作します。最新のxargsがあることを確認するか、またはヘルプオプション(xargs --help)で-aオプションがあるかどうかを確認してください


5
この回答にはアクセシビリティの問題があります。画像内のテキストは、視覚障害者には読めません。
ctrl-alt-delor 2018

0

より一般的なスクリプトソリューションと同様に、debパッケージを作成できます。

必要になるだろう

  • equivs-build、debをビルドします。debには依存関係のみを含めることができます。これは単純化されたdebビルダーです。
  • gdebi debをインストールします。

これは、すべてのdebianベースのシステム(apt / deb-filesを使用するシステム)で機能します。

シェルスクリプトとは対照的に、debファイルでそれを行う利点は、元に戻すのがはるかに簡単で、debをアンインストールするか、debを再構成して再インストールできることです(これにより、ファイルが追加および削除)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.