2016-04-06 6 views

Antwort

0

Bash-Funktion:

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; 
} 

Verwenden Sie es:

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

Ok bearbeitet meine Antwort mit einem getesteten Code. Es ist vielleicht eine hübsche Weise, es zu tun:

#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 

Nutzung:

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

Während dieser Code die Frage beantworten kann, zusätzlichen Kontext in Bezug auf _why_ und/oder _how_ es beantwortet die Frage deutlich seine langfristigen Wert verbessern würde. Bitte [bearbeiten] Sie Ihre Antwort, um eine Erklärung hinzuzufügen. Insbesondere sollten Sie erklären, warum ein Fehler beim Beenden von 'apt-get' bedeutet, dass ein Upgrade erforderlich ist und warum Sie einen solchen umständlichen Ausdruck anstelle von 'if apt-get ...;' verwenden. –

+0

Funktioniert nicht. Ich habe es versucht. –

+0

Funktioniert nicht korrekt, gibt falsche positive Ergebnisse. Beispiel "firefox-utils" wenn "firefox" übergeben wird. –

2

Dies sollte für Sie arbeiten:

#!/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

Versuchte es und es funktioniert nicht. apt-get -sqq upgrade ...> $ {TMP_FILE} "schreibt nichts in die Datei? –

+0

Das Skript funktioniert gut in meiner Ubuntu-Box, haben Sie eine Fehlermeldung? Wie haben Sie das Skript ausgeführt? – obo

2

folgenden Befehl würde Ihnen helfen: -
/usr/lib/update-notifier/apt-check --menschlich lesbar
oder
cat/var/lib/update-notifier/Updates verfügbare

Für weitere Informationen können Sie den Link unten überprüfen: -

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

Dank & Grüße,
Alok Thaker

+0

I ' Ich bin interessiert an einem bestimmten Paket und einer Bash, wenn Bedingung, um damit umzugehen. –

+0

Basierend auf den Links, die Sie zur Verfügung gestellt, schrieb ich eine Bash-Funktion, um die Überprüfung richtig zu machen. Danke, das ist die zweit nützlichste Antwort, meine wird die erste sein:) –

Verwandte Themen