2016-04-06 12 views
1

ubuntuパッケージにアップグレードが必要かどうかを確認するには、bash行が必要です。ubuntuパッケージに新しいバージョンがあるかどうかを確認する条件がある場合はBash?

たとえば、 'firefox'パッケージにdpkgまたはapt-getコマンドを使用してアップグレードが必要かどうかを確認したいとします。

Hypthetical例:

# Hypothetical example pseudo-code 
if [[ $(firefox_needs_upgrade) ]]; then echo "Firefox needs upgrading";fi 

答えて

0

バッシュ機能:

apt_needs_upgrade() { 

    NEEDS_UPGRADE=$(/usr/lib/update-notifier/apt-check -p 2>&1 >/dev/null | grep "^$1$" | wc -l) 

    if [ "$NEEDS_UPGRADE" == 1 ]; then 
     return 0; # 0 means true in bash!!! 
    else 
     return 1; # false 
    fi; 
} 

使用:

if apt_needs_upgrade "firefox"; then 
    echo "Needs upgrading" 
else 
    echo "No need to upgrade" 
fi; 
0

OK]をクリックしてテストされたコードで私の答えを編集しました。それは多分それを行うには、よりきれいな方法です:

#retrieving info about the package 
dpkg -l $1 >/dev/null 

if [ $? -ne 0 ] 
then 

echo "$1 not installed or issue retrieving informations" 
exit 

else 

#We check if pkg is upgradable 
UPGRADABLE=$(apt-get -s upgrade -u | egrep -c "^Conf $1 |^Inst $1 ") 

if [ $UPGRADABLE -gt 0 ] 
then 
    echo "$1 need an upgrade" 
else 
    echo "$1 up to date" 
fi 

fi 

用法:

# /tmp/check.sh openssh-server 
openssh-server need an upgrade 
+0

このコードは_why_に関する 追加のコンテキストを提供し、質問に答える、および/またはそれが 質問が大幅に長期的 値を改善する回答_how_かもしれないが。あなたの答えを[編集]して、説明を加えてください。 特に、 'apt-get'からのエラー終了がアップグレードが必要であることを示唆し、単に' if apt-get ...; 'の代わりにそのような厄介な表現を使用する理由を説明する必要があります。 –

+0

動作しません。それを試してみました。 –

+0

正しく動作しない場合、誤検出が発生します。例 "firefox"が渡されたときの "firefox-utils" –

2

これはあなたのために働く必要があります。

#!/bin/bash 
PACKAGE="firefox" 
TMP_FILE="/tmp/upgrade_list" 

apt-get -yqq update 
apt-get -sqq upgrade | grep Inst > ${TMP_FILE} 
grep -qi ${PACKAGE} ${TMP_FILE} 

if [ $? == 0 ] 
then 
    echo "${PACKAGE} needs to be upgraded" 
fi 
+0

試してみるとうまくいきません。 "$ {TMP_FILE}"はファイルに何も書いていないのですか? –

+0

私のubuntuボックスでスクリプトは正常に動作していますが、エラーメッセージが出ますか?スクリプトをどのように実行しましたか? – obo

2

次のコマンドはあなたを助けるでしょう: -
は/ usr/lib/update-notifier/apt-check - 人間可読
または
cat/var/libに/更新通知/アップデート-利用可能

あなたは下のリンクをチェックすることができます詳細については: -

https://askubuntu.com/questions/49958/how-to-find-the-number-of-packages-needing-update-from-the-command-line

おかげ&よろしく、
Alok Thaker

+0

私は、特定のパッケージに興味があり、それを処理するためのbash if条件があります。 –

+0

あなたが提供したリンクに基づいて、私はチェックを正しく行うためのbash関数を書いています。 ) –

関連する問題