100%非対話型のDebian dist-upgrade


38

apt-get dist-upgradeDebianで、すべての質問に「はい」と自動的に答えるだけでなく、ポップアップにさまざまな対話型ダイアログボックスを必要とするほど洗練された質問への回答として妥当なデフォルトを使用する方法はありますか?ここで、アップグレード時に表示されるキーマップlibc6と、カーネルイメージの選択について考えています。

目標は、dist-upgrade時代遅れのマシンであっても、かなり大きなものをリモートで開始できるようにすることであり、何かが恐ろしく、悲惨なほど間違っていない限り、ベビーシッターをする必要はまったくありません。

確かにこれは可能ですか?

前もって感謝します!


Ubuntuで(dist-upgradeではなく)のみアップグレードする場合は、無人アップグレードパッケージを試してください。
ジョーリス

回答:


42

DEBIAN_FRONTEND=noninteractive(debconfプロンプトの表示を停止するように)設定してファイルに追加force-confoldforce-confdef/etc/dpkg/dpkg.cfg場合は、完全に非対話型のパッケージインストールエクスペリエンスが必要です。まだ情報の入力を要求されます任意のパッケージがリリースクリティカルバグがあり(と私が言うことオートメーション中毒の両方として Debianの開発者として)。


これは私にはうまくいきませんでした。apt-listchangesによって開かれましたless
マグネター

@magnetar:それはaptではなくapt-listchangesの問題です。apt-listchangesをアンインストールするか、適切に構成します。
ワンブル

1
試してください:env APT_LISTCHANGES_FRONTEND = none apt-get dist-upgrade -u -y
H.-Dirk Schmitt

21

Florian Lohoff 、wombleが提案したことを1つのコマンドにまとめる方法を投稿しました。

DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade

もちろん使用することもできます-o Dpkg::Options::="--force-confnew --force-confdef"(confnewについては、dpkgのマニュアルページを検索してください)。どんな場合にこれが違いを生むかはわかりません。個人的には、バニライメージを最新の状態にするために非対話型のアップグレードが必要です。この場合、常に新しい構成ファイル(なし--force-confdef)を選択するのが合理的なことだと思います。


W: --force-yes is deprecated, use one of the options starting with --allow instead.
アレックス

3

上記のwombleの答えは一般的には良いのですが、私にとってはうまくいきませんでした。100%無人で行くには追加の調査が必要でした。将来の訪問者のために物事をより簡単にするために、簡潔な方法で結果を共有すると思いました。

以下は、debian 8リリースノートのアップグレードに関する推奨事項(ほとんどの場合)に従って実行されるスクリプトで、フラグと環境変数が無人で動作します。(echosはデバッグ用であり、削除することができます-ただし、スクリプトが動かなくなった場合はどこにいるかわかるように保持することをお勧めします)

#!/bin/bash

apt-get remove apt-listchanges --assume-yes --force-yes &&

#using export is important since some of the commands in the script will fire in a subshell
export DEBIAN_FRONTEND=noninteractive &&
export APT_LISTCHANGES_FRONTEND=none &&

#lib6c was an issue for me as it ignored the DEBIAN_FRONTEND environment variable and fired a prompt anyway. This should fix it
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections &&

echo "executing wheezy to jessie" &&
find /etc/apt -name "*.list" | xargs sed -i '/^deb/s/wheezy/jessie/g' &&

echo "executing autoremove" &&
apt-get -fuy --force-yes autoremove &&

echo "executing clean" &&
apt-get --force-yes clean &&

echo "executing update" &&
apt-get update &&

echo "executing upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy upgrade &&

echo "executing dist-upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy dist-upgrade

1
注:「--force-yes Force yes。これは、潜在的に有害なことをしている場合にプロンプ​​トを表示せずにaptを続行させる危険なオプションです。非常に特別な状況を除いて使用しないでください。システム!構成アイテム:APT :: Get :: force-yes。これは非推奨になり、1.1で--allow-downgrades、-allow-remove-essential、-allow-change-held-packagesに置き換えられました。
アレックス

1

> = Apt 1.1

あなたが1.1以上のApt使用している場合は、--force-yes廃止されましたあなたが始まるオプションを使用するようにしましたので、--allow例えば、代わりに--allow-downgrades--allow-remove-essential--allow-change-held-packages

コマンドは次のとおりです。

DEBIAN_FRONTEND=noninteractive \
  apt-get \
  -o Dpkg::Options::=--force-confold \
  -o Dpkg::Options::=--force-confdef \
  -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
  dist-upgrade

注:--force-confold古いもの--force-confnewを保持し、新しい構成を保持するために使用します。

ソース:CFE-2360:apt_getパッケージモジュールのバージョンを認識させます。

関連:


-4

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

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts
       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.

参考のために、この-yオプションyum(8)も同様に機能します。


5
私はそれについて知っています。私はそのフラグを使用し、既存の構成を上書きするなどに関する標準のAPT Y / N質問に「はい」と正常に答えます。これらは私が言及している質問ではありません。apt-get -y dist-upgradeを実行しても、キーマップの変更、libc6関連のサービスの再起動など、高額なものと見なされる「ダイアログ」プロンプトが表示されます。追加のフラグを探していましたそれもオフにします。
アレックスバラショフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.