Ako môžem aktualizovať jeden balík? Pokiaľ man apt-get
hovorí, apt-get upgrade
neprijíma balík/seznam balíkov ako parameter:
upgrade
upgrade sa používa na inštaláciu najnovších verzií všetkých balíkov aktuálne nainštalovaných v systéme zo zdrojov vymenovaných v
/etc/apt/sources.list
. Aktuálne nainštalované balíky s novým dostupnými verziami sa načítajú a aktualizujú; v žiadnom prípade sa neaktualizujú sa aktuálne nainštalované balíky odstránia alebo sa odstránia balíky, ktoré ešte nie sú nainštalované, načítajú a inštalujú. Nové verzie aktuálne nainštalovaných balíkov, ktoré nie je možné aktualizovať bez zmeny stavu inštalácie iného balíka, budú ponechané v ich aktuálnej verzii. Aktualizácia musí byť vykonaná ako prvá, aby apt-get vedel, že nové verzie balíkov sú k dispozícii.
Stačí vykonať apt-get install --only-upgrade <packagename>
. Tým sa aktualizuje len tento jediný balík, a to len vtedy, ak je nainštalovaný.
Ak chcete nainštalovať balík, ak neexistuje, alebo ho aktualizovať, ak existuje, môžete vynechať --only-upgrade
.
Napadajú ma dva možné spôsoby:
sudo apt-get install nameofpackage
Týmto spôsobom sa balík aktualizuje, aj keď je už nainštalovaný:
~$ sudo apt-get install emesene
Čítanie zoznamov balíkov... Hotovo
Vytvorenie stromu závislostí
Čítanie informácií o stave... Hotovo
Budú aktualizované nasledujúce balíky:
emesene
1 aktualizovaný, 0 novo nainštalovaných, 0 na odstránenie a 5 neaktualizovaných.
Je potrebné získať 1 486 kB archívov.
Po tejto operácii sa uvoľní 696 kB miesta na disku.
Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1 486 kB]
Synaptic Package Manager
: Kliknite pravým tlačidlom myši→označiť na aktualizáciu:Poznámka: Niekedy môže požiadať o ďalšie balíky alebo závislosti, to je normálne.
Riešenie príkazového riadku, ktoré neinštaluje balík, ak ešte neexistuje:
dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>
Tento postup sa dá ľahko vytvoriť do skriptu, napr:
upgrade-package.sh:
#!/bin/bash
[[ -z $1 ]] && { echo "Usage: $(basename $0) package"; exit 1; }
if dpkg -s "$1" 2>/dev/null | grep -q Status.*installed; then
echo "Attempting to upgrade $1"
sudo apt-get install "$1"
else
echo "Package $1 is not installed"
fi