Miten päivitän yksittäisen paketin? Sikäli kuin man apt-get
sanoo, apt-get upgrade
ei ota pakettia/pakettiluetteloa parametrina:
upgrade
upgradea käytetään kaikkien pakettien uusimpien versioiden asentamiseen. tällä hetkellä järjestelmään asennetuista lähteistä, jotka on lueteltu kohdassa
/etc/apt/sources.list
. Tällä hetkellä asennetut paketit, joissa on uudet versiot ovat saatavilla, haetaan ja päivitetään; ei missään tapauksessa. poisteta tällä hetkellä asennettuja paketteja tai paketteja, joita ei ole vielä asennettuja paketteja haetaan ja asennetaan. Tällä hetkellä asennettujen pakettien uudet versiot paketeista, joita ei voi päivittää muuttamatta asennustilaa. toisen paketin asennustilaa, jätetään niiden nykyiseen versioon. Päivitys on suoritettava ensin, jotta apt-get tietää, että uudet versiot pakettien paketit ovat saatavilla.
Sinun tarvitsee vain tehdä apt-get install --only-upgrade <packagename>
. Tämä päivittää vain kyseisen yksittäisen paketin, ja vain jos se on asennettu.
Jos haluat asentaa paketin, jos sitä ei ole olemassa, tai päivittää sen, jos sitä on, voit jättää --only-upgrade
pois.
Voin ajatella kahta mahdollista tapaa:
sudo apt-get install nameofpackage
.Tämä päivittää paketin, vaikka se olisi jo asennettu:
~$ sudo apt-get install emesene
Pakettiluetteloiden lukeminen... Valmis
Riippuvuuspuun rakentaminen
Tilatietojen lukeminen... Tehty
Seuraavat paketit päivitetään:
1 päivitetty, 0 asennettu uudelleen, 0 poistettava ja 5 ei päivitetty.
Tarvitaan 1 486 kB arkistoja.
Tämän toimenpiteen jälkeen vapautuu 696 kB levytilaa.
Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
Synaptic Package Manager
ia: Oikea klikkaus→Merkitse päivitettäväksi:Huomautus: Se on normaalia.
Komentoriviratkaisua varten, joka ei asenna pakettia, jos sitä ei ole jo olemassa:
dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>
Tästä voidaan helposti tehdä skripti, esim:
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