Как я обновляю единственный пакет? До man apt-get
говорит apt-get upgrade
не берет пакет/список пакетов как параметр:
обновление
обновление используется для установки новейших версий всех пакетов, в настоящее время устанавливаемых в системе из источников, перечисленных в
/etc/apt/sources.list
. Пакеты, в настоящее время устанавливаемые с новыми доступными версиями, получены и обновлены; ни при каких обстоятельствах не в настоящее время устанавливаемые пакеты, удаленные или пакеты, не уже установленные полученный и установленный. Новые версии в настоящее время устанавливаемых пакетов, которые не могут быть обновлены, не изменяя состояние установки другого пакета, оставят в их текущей версии. Обновление должно быть выполнено сначала так, чтобы склонный - добрались, знает, что новые версии пакетов доступны.
Просто необходимо сделать apt-get install --only-upgrade <packagename>
. Это обновит только, что единственный пакет, и только если он установлен.
Если Вы хотите установить пакет, если он не существует или обновляет его, если он делает, можно не учесть --only-upgrade
.
Существует два возможных способа, которыми я могу думать:
sudo apt-get install nameofpackage
Это обновит пакет, даже если будет уже установлен:
~$ sudo apt-get install emesene
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
emesene
1 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.
Need to get 1,486 kB of archives.
After this operation, 696 kB disk space will be freed.
Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
ИспользуяSynaptic Package Manager
: Право click→Mark для обновления:
Примечание: Иногда это может просить дополнительные пакеты или зависимости, это нормально.
Старый но деликатный вопрос, я беру свободу добавления обновленного ответа... Для более современных дистрибутивов, где способная обертка включена, столь же простая как:
sudo apt upgrade <package-name>
Обновить единственный пакет на Ubuntu 18.04 LTS:
sudo apt update && sudo apt install --only-upgrade <packagename>
Для обновления нескольких пакетов:
sudo apt update && sudo apt install --only-upgrade <package1> <package2> <package3>
Для обновления единственного пакета с помощью CLI:
sudo apt-get install --only-upgrade <packagename>
например, sudo apt-get install --only-upgrade ack
Reading package lists... Done
Building dependency tree
Reading state information... Done
Skipping **ack**, it is not installed and only upgrades are requested.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Для решения для командной строки, которое не устанавливает пакет, если он уже не существует:
dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>
Это может легко быть превращено в сценарий, например:
обновление-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
По моему опыту, на Ubuntu 12.04 LTS, с помощью команды ниже не обновит пакет при использовании отдельного PPA -
sudo apt-get --only-upgrade install <packagename>
Так же я не хотел выполнять команду обновления, которая обновит все пакеты на моем сервере -
sudo apt-get dist-upgrade
Например, мне установили PHP 5.3 и добавил ondrej PPA к моему apt.sources, использующему -
sudo add-apt-repository ppa:ondrej/php5
Если я работаю
sudo apt-get install php5
это просто переустановит PHP 5.3.
Я должен, во-первых, определить номер версии для обновления до, с помощью
sudo apt-cache policy php5
Это перечислит все доступные номера версий. Необходимо найти номер версии, который Вы хотите обновить до и затем скопировать целую строку, которая ссылается на него. Например, строка для PHP 5.5 на Ubuntu "5.5.16+dfsg-1+deb.sury.org~precise+2".
Теперь, можно работать, Кв. - получают команду установки с определенным номером версии, и вуаля!
sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2
Я только добавил это, потому что я не мог найти эту информацию где-либо еще!
На бойкой Ubuntu 9.04,
apt-get --only-upgrade install <package>
урожаи:
E: Sense only is not understood, try true or false.
Команда
apt-get --only-upgrade true install <package>
работавший в моем случае.