利用可能なアップデートがあるかどうかを知る方法は?


8

12.04 LTS ubuntuサーバーを実行しています。そして、アップデートが利用可能になったときに通知を受けることができればいいと思います。しかし、私は知る方法を見つけることができません...

apt-getmanページを見てみました。それからapt-get -s upgrade、質問をブロックせずにスクリプトでapt-get出力を取得するために使用できました。

今、私は違いがはっきりとわかります:

更新が利用可能です:

apt-get -s upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  dpkg dpkg-dev libdpkg-perl
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst dpkg [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Conf dpkg (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Inst dpkg-dev [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all]) []
Inst libdpkg-perl [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf libdpkg-perl (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf dpkg-dev (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])

更新は利用できません:

apt-get -s upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

しかし、そこからどうすればよいかわかりません。利用可能なアップデートがあるかどうかをbashスクリプト(またはphpスクリプト)から確認するにはどうすればよいですか?

編集:

これが私の現在のbashコードです。それは動作しません。

updates_available=`/etc/update-motd.d/90-updates-available`

if [ "${updates_available}" = "0 packages can be updated. 0 updates are security updates." ];
then
   echo "No updates are available"
else
   echo "There are updates available"
fi

まあそれ0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.は更新がないかどうかだけ言うつもりです。
Nattgew 2014

回答:


18

manページを読んで motd(5)pam_motd(8)update-motd(5)。私のシステムで/etc/update-motd.d/90-updates-availableは、/usr/lib/update-notifier/update-motd-updates-availableログインしたときにこれを表示するinvokes :

19 packages can be updated.
12 updates are security updates.

少し深く掘り下げて、「...- updates-available」スクリプトがを呼び出します/usr/lib/update-notifier/apt-check --human-readable。それ(python)を読むと、人間が読めるフラグを省略すると、「19; 12」がstderrに出力されることがわかります。これでこれをつかむことができます:

IFS=';' read updates security_updates < <(/usr/lib/update-notifier/apt-check 2>&1)
echo $updates
echo $security_updates 
19
12

今あなたは言うことができます:

if (( updates == 0 )); then
    echo "No updates are available"
else
    echo "There are updates available"
fi

これで、if [ / etc / update-motd.d / 90-updates-available をテストできます `=" 0個のパッケージを更新できます。0個の更新はセキュリティ更新です。 " ]; その後... fi`
Adeline

残念ながら、チェックは機能しません(以前の返信で忘れた引用を追加しました)。新しい行に何か関係があるのではないかと思います。私はあなたの返信から導き出したコードで私の投稿を更新しました。
Adeline 2014

洗練された答え。
グレン・ジャックマン14

@glennjackman、素晴らしい回答です。私はgoogle.com/search?q=apt-get+check+if+updates+are+available #ImNotHelpfulToday =)で答えようとしていました
0xSheepdog
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.