強制apt-getプロンプトはい/いいえ

強制apt-getプロンプトはい/いいえ

apt-getはい/いいえメッセージを強制的に表示する方法はありますか?オプションがありますが、存在しないか同様のオプションが--force-yesあるようです。--force-promptすべての依存関係がインストールされているパッケージをインストールしようとすると、はい/いいえプロンプトが表示されず、インストールが開始されます。潜在的な依存関係が事前にインストールされているかどうかわからないため、依存関係が存在するかどうか、およびどの依存関係がインストールされているかを確認したい場合は、これが問題になる可能性があります。

メモ:「apt-get install」は、いつ継続するかを確認するように要求しますか?プロンプトが表示される標準条件を説明するので、やや関連しています。強制する方法を知りたいです。

答え1

現在、apt-get実装ではこれを行うことができないため、機能要求を送信して管理者にアピールする必要があります。 apt-getの現在の動作は、インストールされているパッケージのリストがインストールされるパッケージのリストと同じであり、他のパッケージがアップグレードまたは中断の影響を受けないように明示的に要求する場合、apt-get は、ユーザーが何をするかをすでに決定していると仮定します。、パッケージを実際にインストールせずに何が起こるのかわからない場合、または分析したい場合は、次のことを使用できます。コスタスがおすすめ-s, --simulate, --just-print, --dry-run, --recon, --no-act

インストールするパッケージのバージョン(この場合はバグ)を分析し、実際にインストールする前に警告できるapt-listbugsなどの他のツールがあります。

答え2

yesこのコマンドはインストール時にのみ想定されます。パック(コマンドラインから始まる)とすべての依存関係システムはすでに必要なパッケージを除いて何もインストールする必要はありません。

つまり、「見たものがないと(追加パッケージなし)、ヒントもありません(質問がない)」です。

テスト目的でキーを使用できます-s, --simulate, --just-print, --dry-run, --recon, --no-act

答え3

古い質問のようです。しかし、今は同様の状況です。通常私は何かを使用sudo aptitude install -P PACKAGE_NAMEし、インストールする前に常に尋ねます。ただし、現在Debianのデフォルトのパッケージマネージャにはapt|apt-getこの機能はありません。もちろん、まだインストールしてaptitude使用することができます...しかし、インストールする前に尋ねる小さなsh / bashラッパー関数/スクリプトを作成しましたapt-get。本当にプリミティブなので、端末に関数として書きました。

$ f () { sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf'; read -p 'Do You want to continue (y/N): ' ans; case $ans in [yY] | [yY][eE][sS]) sudo apt-get -y install "$@";; *);; esac; }

もう少し明確に説明すると、次のようになります。

f () {
  # Do filtered simulation - without lines contains 'Inst' and 'Conf'
  sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';

  # Interact with user - If You want to proceed and install package(s),
  # simply put 'y' or any other combination of 'yes' answer and tap ENTER.
  # Otherwise the answer will be always not to proceed.
  read -p 'Do You want to continue (y/N): ' ans;
  case $ans in
    [yY] | [yY][eE][sS])
      # Because we said 'yes' I put -y to proceed with installation
      # without additional question 'yes/no' from apt-get 
      sudo apt-get -y install "$@";
    ;;
    *)
      # For any other answer, we just do nothing. That means we do not install
      # listed packages.
    ;;
  esac
}

この機能をsh / bashスクリプトとして使用するには、スクリプトファイル(my_apt-get.sh例:コンテンツを含むスクリプトファイル)を作成します(注:リストには短くするためのコメントは含まれていません;-)。

#!/bin/sh

f () {
  sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';
  read -p 'Do You want to continue (y/N): ' ans;
  case $ans in
    [yY] | [yY][eE][sS])
      sudo apt-get -y install "$@";
    ;;
    *)

    ;;
  esac
}

f "$@"

次に、たとえば~/bin/実行可能にします$ chmod u+x ~/bin/my_apt-get.sh。ディレクトリが変数~/binに含まれている場合は、PATH次のように簡単に実行できます。

$ my_apt-get.sh PACKAGE_NAME(S)_TO INSTALL

注:

  • このコードはを使用しますsudo。アカウントを使用している場合はroot調整が必要な場合があります。
  • コードはシェルのオートコンプリートをサポートしていません。
  • コードがシェルモード(例:「!」、「*」、「?」、...)でどのように機能するかわかりません。

関連情報