利用可能な更新を一覧表示しますが、インストールしないでください

パッケージの更新がある場合に、cron実行レポートスクリプトから通知を受け取りたいです。 apt-getに利用可能なアップデートのリストを表示させる方法はありますが、それ以上何もしませんか?

回答

apt

aptの最新バージョンには、これに固有のスイッチがあります:

apt list --upgradable

apt-get

古いapt-getコマンドの場合-uスイッチには、アップグレード可能なパッケージのリストが表示されます。

# apt-get -u upgrade --assume-no

apt-getのマニュアルページ

-u
–show-アップグレード済み
 アップグレード済みパッケージを表示します。アップグレードするすべてのパッケージのリストを印刷します。構成アイテム:APT :: Get :: Show-Upgraded。
-assume-no  すべてのプロンプトに対して自動的に「no」。&lt ==インストールの開始を防ぐため

コメント

  • これがrootなしで実行できることを望んでいました
  • ” Y “と入力してEnterキーを押すと、このコマンドアップデートをインストールします。 ” -s “を追加することを強くお勧めします。そうしないと、この回答は誤解を招く可能性があります
  • これは非常に間違った答えです。コマンドは(追加オプションなしで)入力を待機し、ユーザーが間違った入力を入力すると、パッケージがインストールされます。これは、OPではないシステムを変更します欲しい(私のシステムで起こったばかり)
  • そしてところで:-uapt-get liのデフォルトオプションです>
  • @ThorSummoner ‘ -s ‘はあなたが望むことをします&ルートなし

回答

apt-get --just-print upgrade 

簡単に読めない、以下はapt-getの出力を解析するためのperl one linerです:

apt-get --just-print upgrade 2>&1 | perl -ne "if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}" 

これは次のように出力されます:

PROGRAM: grub-pc INSTALLED: 1.99-21ubuntu3.1 AVAILABLE: 1.99-21ubuntu3.9 

他の誰かの助けになることを願っています

コメント

  • j笑いのために:apt-get -s upgrade | awk -F ‘ [] [()] + ‘ ‘ / ^ Inst / {printf “プログラム:%s \ tcur:%s \ tavail:%s \ n “、$ 2、$ 3、$ 4} ‘
  • columnを次のように使用すると、見栄えがさらに良くなる可能性があります:apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | column -s " " -t
  • @AntonioK見栄えがいいです!
  • ‘このPerlコードが私のマシンをハッキングするのではないかと心配しています。 。;)
  • @AntonioKプログラムの名前をアルファベット順に並べ替えるにはどうすればよいですか?

回答

enzotibに触発された別のオプション:

aptitude search "~U" | wc -l

このコマンドは、aptitudeを使用して新しいパッケージを出力し、次にwcを出力します。行を数えるだけです。

補足として、~Uを一重引用符で囲まないenzotibのソリューションは機能しないことがわかりました。 (Wheezy、ZSH、適性0.6.8.2)

更新:

新しいaptを使用すると、次のことができます。

apt list --upgradeable

コメント

  • このおかげで、aptlistコマンドはまさに私が望んでいたものでした。
  • このソリューションの優れた点は、sudo / rootが不要なことです。

回答

最も簡単な方法は次のとおりです。

apt list --upgradeable

コメント

  • ミントでは機能しません。
  • ‘残念ながら’利用可能なアップグレードがあるかどうかに応じて、異なる終了コードを返します。これをスクリプトで使用できればよかったのにと思います。

回答

実行できます

aptitude -F%p --disable-columns search ~U 

または文書化されていない

/usr/lib/update-notifier/apt-check -p; echo 

apt-getシミュレーション:

apt-get -s dist-upgrade | awk "/^Inst/ { print $2 }" 

コメント

  • このaptitudeコマンドは、私にとって非常に効果的でした。ルートは必要ありません
  • apt-get -s dist-upgradeもうまく機能し、そのawkerにパイプしたときに同じ出力が得られます
  • ありがとうございます。これはかなりの依存関係地獄から抜け出しました。 dist-upgradeを試みましたが、一部のパッケージが失われなかったため、aptitudeを使用する必要がありました。 aptitude install $(apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }')がトリックを行いました!

回答

パッケージ「apticron」を見てください:

apticron-シンプル保留中のパッケージ更新についてメールで送信するツール

Apticronは、セキュリティ更新などの保留中のパッケージ更新に関するメールを毎日送信し、保留中のパッケージを適切に処理するシンプルなスクリプトです。 dselectとaptitudeによって。

https://packages.debian.org/buster/apticron

コメント

  • リンクが壊れています…

回答

apt-get update && apt-get -s upgrade 

実際にインストールせずに利用可能な更新を一覧表示します。

最初のコマンドは、シミュレートされた(つまり、-s)アップグレードの前にパッケージインデックスファイルを更新します。完了しました。 「-s」は、インストールされるが実際には何もインストールされないパケットを示すシミュレートされたアップグレードを実行します。

逆に、「-s」の代わりに「-u」は確認後に実際にインストールされます。

コメント

  • シミュレーションオプションは、-s, --simulate, --just-print, --dry-run, --recon, --no-actのいずれかでトリガーでき、偵察とドライランは私の個人的なお気に入り。

回答

可能なアップグレードに関する完全なバージョン情報が必要だったので、jasonwryanの変更を使用しました「回答:

apt-get -V -u upgrade 

シンプルでIMOの合理的な形式の出力です。

回答

apt-get update && apt-get -s -V -u upgrade 

の出力をフィルタリングするだけで、ログに優先情報のみが含まれます。

ほとんどの場合、「行の後に美しい部分が必要になります

次のパッケージがアップグレードされます。

スペースが少ない初めに。

コメント

  • こんにちは、サイトへようこそ。現状では、あなたの答えは基本的に既存のものの再ハッシュであり、したがって新しいものは何も追加されません。たとえば、出力をフィルタリングする方法を説明したり、さまざまなスイッチの機能の説明を追加したりすることで、改善できます。

回答

apt-get update > /dev/null && apt-get --just-print upgrade | grep "Inst " 

はcronメールにとって最も単純です。ユーザーの反復はなく、更新がない場合は出力がありません。

回答

別のオンラインライナーを追加し、 この回答に触発されました:

 function a { read input;dpkg -l ${input} | grep " ${input} " | awk "{$1=$2=$3=$4="";print $0}" | sed "s/^ *//";unset input;};{ apt-get --just-print upgrade 2>&1 | perl -ne "if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "$1 (\e[1;34m$2\e[0m -> \e[1;32m$3\e[0m)\n"}";} | while read -r line; do echo -en "$line $(echo $line | awk "{print $1}" | a )\n"; done;  

出力は次のようになります(色付き):

locales (2.13-38+deb7u7 -> 2.13-38+deb7u8) Embedded GNU C Library: National Language (locale) data [support] linux-headers-3.2.0-4-amd64 (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) Header files for Linux 3.2.0-4-amd64 linux-headers-3.2.0-4-common (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) Common header files for Linux 3.2.0-4 sudo (1.8.5p2-1+nmu1 -> 1.8.5p2-1+nmu2) Provide limited super user privileges to specific users 

簡単な説明が必要ない場合は、次のように使用します:

 { apt-get --just-print upgrade 2>&1 | perl -ne "if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "$1 (\e[1;34m$2\e[0m -> \e[1;32m$3\e[0m)\n"}";} | while read -r line; do echo -en "$line\n"; done;  

出力:

locales (2.13-38+deb7u7 -> 2.13-38+deb7u8) linux-headers-3.2.0-4-amd64 (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) linux-headers-3.2.0-4-common (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) sudo (1.8.5p2-1+nmu1 -> 1.8.5p2-1+nmu2) 

コメント

  • 1つのライナーは素晴らしいですが、’一部のパッケージの説明が出力されない点が異なります。

回答

apt-checkはおそらく最も効率的なスクリプト方法です。

/usr/lib/update-notifier/apt-check 2>&1 | cut -d ";" -f 1 

ごくわずかな変更で、セキュリティアップデートのみが表示されます。

/usr/lib/update-notifier/apt-check 2>&1 | cut -d ";" -f 2 

回答

@jasonwryanの回答に警告を書き込んだ後、独自の解決策を提供したいと思います:

apt-get dist-upgrade --assume-no 

残念ながら、これはdebian wheezyでは機能せず、まだアップグレードされていないいくつかのlxcコンテナーをチェックする必要がありました。このフォームは常に機能します:

apt-get dist-upgrade </dev/null 

最後に、出力を再フォーマットしたかったのです。安全性が高いと感じたため、呼び出しを再度変更することを選択しました(--dry-runを使用しますが、追加の出力はすべて無視します):

apt-get --dry-run dist-upgrade | awk " BEGIN{p=0} /^The/{p=1;t=$0} /no longer required/{p=0} #optional: /been kept back/{p=0} p && t{print t;t=""} /^ / && p{print $0} " 

返品:

The following packages have been kept back: iproute The following packages will be upgraded: unzip 

回答

これを使用したい:

apt-get -qq update && apt-get -qq -s upgrade 

次のような出力が得られます:

Inst linux-base [3.5] (4.5~deb8u1 Debian-Security:8/oldstable [all]) Conf linux-base (4.5~deb8u1 Debian-Security:8/oldstable [all]) 

利用可能な更新がある場合、および存在しない場合はなし。この方法で、監視ソリューションと簡単に組み合わせることができます。

回答

としてバリエーション私は以下を使用します:

apt-get -V -s dist-upgrade \ |grep -E "^ .*=>.*" \ |awk "BEGIN { ul=sprintf("%*s",40,""); gsub(/ /,"-",ul); printf "%-30s %-30s %-30s\n", "Package", "Installed", "Available"; printf "%-30.30s %-30.30s %-30.30s\n", ul, ul, ul; } { printf "%-30s %-30s %-30s\n", $1, substr($2,2), substr($4,1,length($4)-1) }" 

apt-updatesという名前のスクリプトに貼り付けると、

を使用すると、ユーザーに関係なくすべての更新のリストを取得できます。

特権アクセスを使用して、apt-get updateを呼び出す必要があります。

コメント

  • 出力にはパッケージ名(最初の列)のみが表示され、2番目の列には常に = “そして3番目の列は常に空です。私は’ミントにいます。

回答

あります ” ■ apt-show-versions ツール。利用可能な更新を表示するには、次のコマンドを実行します。

apt-show-versions -u 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です