「続行しますか[Y / n]?」プロンプトなしでaptを使用してパッケージをインストールする方法


55

もちろん、次のように入力すると:

sudo apt-get install whatever

それはあなたに尋ねます:

Do you want to continue [Y/n]? 

続行するかどうかを確認せずにインストールする方法はありますか?私は本当にスペースを気にしません、私はそれ以上のものを持っています。


スーパーユーザーの質問superuser.com/questions/164553/...
αғsнιη

回答:


89
sudo apt-get install -y whatever

manページ(man apt-get)から:

 -y, --yes, --assume-yes

           Automatic yes to prompts; assume "yes" as answer to all prompts and
           run non-interactively. If an undesirable situation, such as
           changing a held package, trying to install a unauthenticated
           package or removing an essential package occurs then apt-get will
           abort. Configuration Item: APT::Get::Assume-Yes.

9
(どのように危険なファイルを生きるべき)
user2413

どうもありがとうございました!私は本当にそのマニュアルページをもっと頻繁に使うべきです。:)
ルーク14

2
それが彼らが@KingShimkusにいる理由です;)
リンツウィンド14

5
-yeahどんな...インストールapt-getをsudoを
BoJackホースマン

今、これだけはドッカーパッケージをアップグレードするための働いていた場合> <、ここでポップアップ何の端末で使用する場合でも、のイメージがあります前にドッカーをアップグレードしたことがない場合。--yesImgurそれはパッケージ更新時にその力の相互作用するので、非常に迷惑です。
スペンサーD

15

apt-getの場合、-yまたは--assume-yes(@rinzwindが説明したように)うまく機能するため、ここでそれが最良の答えだと思います。このようなインタラクティブな管理操作の多くには、同様のコマンドがあります。

これを行う別のかなり一般的な方法は次のようなものです:

 $ echo "y" | sudo apt-get install edamame_biscuit

(edamame-biscuitがインストールする(作成された)パッケージであり、「y」が正当な応答であると想定されます。必要に応じて「yes」または他のテキストで置き換えます。)

この方法の「機能」は、1つの対話型プロンプトのみを誤って想定している場合、これが壊れることです。「はい」と言いたくないかもしれない、潜在的に不要なプロンプトがいくつかある場合は、システムに確認せずにロールバックする状況を回避します。


13
また、yes | sudo apt-get install edamame-biscuit。Yesは、「yes」という単語を出力にスパムするコマンドです。必要に応じて他のテキストを出力することもできます。マンページを参照してください。
クロルタン

14
@Kroltan yesコマンド(デフォルト)yは、パイプバッファを埋めるのに必要な回数だけ、文字とそれに続く改行を出力します。実際に単語yesを出力するには、コマンドを使用する必要がありますyes yes
ジョナサンカレン

3
yes、私のミスはご容赦
Kroltan

4
@Braiamそれがポイントだったと思うので、誰かがこれを自分のシェルに貼り付けるだけでは何もしません。
クロルタン14

2
私は特に、「この方法の「機能」は、対話型プロンプトを1つだけと誤って想定している場合、これが壊れることです」という部分が好きです。すべてに「はい」をスパムすると、さらに危険になる可能性があります。
BeowulfNode42 14

4

まず、メッセージが表示される理由を理解しましょう。実際、パッケージにまだインストールしていない依存関係や、明示的にインストールするように指示した依存関係がない場合、aptは決して尋ねません。

➜  ~  sudo apt-get -qq install xfce4-screenshooter
Selecting previously unselected package xfce4-screenshooter.
(Reading database ... 296146 files and directories currently installed.)
Preparing to unpack .../xfce4-screenshooter_1.8.1-2_amd64.deb ...
Unpacking xfce4-screenshooter (1.8.1-2) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for mime-support (3.56) ...
Setting up xfce4-screenshooter (1.8.1-2) ...

パッケージに依存するパッケージをインストールしたい場合は言及しませんでしたが:

➜  ~  sudo apt-get -q install avis
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libjzlib-java libmina-java libslf4j-java
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Need to get 720 kB of archives.
After this operation, 1,258 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

それでも、これらのパッケージをインストールすることを暗黙的に言っているかどうかは尋ねません:

➜  ~  apt-get -q install avis libjzlib-java libmina-java libslf4j-java
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Inst libjzlib-java (1.1.3-1 Debian:testing [all])
Inst libslf4j-java (1.7.7-1 Debian:testing [all])
Inst libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Inst avis (1.2.2-2 Debian:testing [all])
Conf libjzlib-java (1.1.3-1 Debian:testing [all])
Conf libslf4j-java (1.7.7-1 Debian:testing [all])
Conf libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Conf avis (1.2.2-2 Debian:testing [all])

しかし、それでは、どうやってそれがあなたに明確に尋ねないようにするのですか?Rizwindの回答では、アドホックおよびスクリプトソリューションをカバーする必要があります(実際、このオプションはスクリプトでより多く使用されます)代わりに、apt.confファイルを変更して以下を追加できます。

APT::Get::Assume-Yes

次のようなもので十分です:

echo 'APT::Get::Assume-Yes;' | sudo tee -a /etc/apt/apt.conf.d/00Do-not-ask

注意してください、これはあなたが確認する必要がある他のよりひどいプロンプトを許可しません:

➜  ~  sudo apt-get install sonar
WARNING: The following packages cannot be authenticated!
  sonar
Install these packages without verification? [y/N] 

yes | ...この警告は無視されるため、の使用をお勧めしません。


「警告:次のパッケージは認証できません!」の場合、どうすればよいですか?私はドッカーイメージのためにこれを取得します(python:3.6-slim)。別の質問をする必要がありますか?
マーティントーマ

通常、@ MartinThomaは、更新されていないパッケージリストの問題です。インストールする前にapt-get updateを実行します。それでもメッセージが削除されない場合は、ドッカー画像を作成した方法まで可能な限り詳細に質問します。
Braiam

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