Как да актуализирам един пакет? Доколкото man apt-get
казва, apt-get upgrade
не приема пакет/списък от пакети като параметър:
upgrade
upgrade се използва за инсталиране на най-новите версии на всички пакети инсталирани в момента в системата от източниците, изброени в
/etc/apt/sources.list
. Пакетите, които в момента са инсталирани с нови налични версии се извличат и обновяват; при никакви обстоятелства се премахват инсталираните в момента пакети или пакети, които още не са инсталирани, се извличат и инсталират. Нови версии на инсталираните в момента пакети, които не могат да бъдат надградени, без да се промени статусът на инсталиране на друг пакет, ще бъдат оставени с текущата си версия. Актуализация трябва да се извърши първо, за да може apt-get да знае, че новите версии на пакетите са налични.
Просто трябва да направите apt-get install --only-upgrade <packagename>
. Това ще доведе до обновяване само на този единствен пакет и само ако той е инсталиран.
Ако искате да инсталирате пакета, ако не съществува, или да го надстроите, ако съществува, можете да пропуснете --only-upgrade
.
Има два възможни начина, за които се сещам:
sudo apt-get install nameofpackage
Това ще обнови пакета, дори ако вече е инсталиран:
~$ sudo apt-get install emesene
Четене на списъци с пакети... Готово
Изграждане на дърво на зависимостите
Четене на информация за състоянието... Готово
Следните пакети ще бъдат надградени:
emesene
1 надграден, 0 новоинсталиран, 0 за премахване и 5 не са надградени.
Необходимо е да се получат 1 486 kB архиви.
След тази операция ще бъде освободено 696 kB дисково пространство.
Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
Synaptic Package Manager
: Щракнете с десния бутон на мишката върху→Маркирай за обновяване:Забележка: Понякога може да се поискат допълнителни пакети или зависимости, това е нормално.
За решение с команден ред, което не инсталира пакета, ако той вече не съществува:
dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>
Това лесно може да се превърне в скрипт, например:
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