aptは「不安定なCLIインターフェイス」警告を表示します


63

私はこの行を書いたパッケージの情報を含むファイルを読む必要があるスクリプトを書いています

apt show $PACKAGE_NAME > pack_info.txt

しかし、これはpack_info.txtファイルを作成せず、常にこの警告を出します:

警告:aptには安定したCLIインターフェースがありません。スクリプトでは注意して使用してください。

当面、私は両方のリダイレクトしようとしたSTDOUTSTDERR使用して&>、それがファイル与えるために働いたpack_info.txt私たちが必要とします。

私もコンテンツを取得しようとしましたがdpkg、それもうまくいきました:

dpkg -s $PACKAGE_NAME > pack_info.txt

警告もエラーも表示されないのは良いことです。

dpkgを使いたくなく、aptのSTDOUTだけをファイルにリダイレクトしたいのは悪いことです。

だから、私は尋ねる3つの質問があります:

  1. Stable CLI Interfaceとはどういう意味ですか?
  2. スクリプトでこのようなコマンドを安全かつエラーなしで使用するにはどうすればよいですか?[例で説明してください]
  3. STDOUTのみをapt showファイルにリダイレクトする方法はありますか?

回答:


80

aptターミナルのためであるとしながら、美しい出力を与えるapt-getapt-cache、スクリプトのためのものであり、安定した、解析可能な出力を与えます。apt showしたがって、コマンドに相当するスクリプトは次のとおりです。

apt-cache show $PACKAGE_NAME >pack_info.txt

質問に1つずつ答えます。

安定したCLIインターフェースとはどういう意味ですか?

aptの出力はスクリプトではうまく使用できません。たとえば、apt install(と比較してapt-get install)スクリプトには役に立たない進行状況バーが表示され、出力の解析時にエラーがスローされる場合があります。apt show firefoxスクリプトではまったく役に立たない追加レコードのヒントが表示されますが、そこにあるすべてのレコードを出力するだけapt-cache show firefoxです。それについて何man aptを言わなければならないか見てみましょう:

傾向(8)コマンドラインは、エンドユーザツールとして設計され、それはバージョン間の動作を変更してもよいです。下位互換性を損なわないように努めていますが、変更がインタラクティブな使用に有益と思われる場合でも、これは保証されません。

apt(8)のすべての機能は、apt -get(8)やapt-cache(8)などの専用APTツールでも使用できます。 apt(8)は、一部のオプションのデフォルト値を変更するだけです(apt.conf(5)、特にBinaryスコープを参照)。したがって、可能な限り後方互換性を維持するため、スクリプトでこれらのコマンドを使用することをお勧めします(いくつかの追加オプションを有効にして)。


スクリプトでこのようなコマンドを安全かつエラーなしで使用するにはどうすればよいですか?

plainの代わりにapt-getまたはをapt-cacheそれぞれ使用しますapt。:) 同等のリストについては、この回答を参照してください。


aptショーのSTDOUTのみをファイルにリダイレクトする方法はありますか?

あなたはすでに正しくそれをしました:>fileまたは1>filestdoutを2>fileリダイレクトし、stderrを&>fileリダイレクトし、両方にリダイレクトしfileます。

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