Как обновить один пакет с помощью apt-get?

Как обновить один пакет? Что касается man apt-get говорит, что apt-get upgrade не принимает пакет /список пакетов в качестве параметра:

  

обновить

     

обновление используется для установки новейших версий всех пакетов   в настоящее время установленный в системе из источников, перечисленных в   /etc/apt/sources.list. Пакеты, установленные в настоящее время с новыми   доступные версии доступны и обновляются; ни при каких условиях   в настоящее время установлены удаленные пакеты или пакеты уже не установлены   установленный и восстановленный. Новые версии установленных в настоящее время   пакеты, которые нельзя обновить без изменения статуса установки   другого пакета останется в их текущей версии. Обновление   необходимо выполнить сначала, чтобы apt-get знал, что новые версии   пакеты доступны.

700 голосов | спросил lurscher 20 Maypm11 2011, 20:36:42

6 ответов


881

Вам просто нужно выполнить apt-get install --only-upgrade <packagename>. Это позволит обновить только один пакет и только если он установлен.

Если вы хотите установить пакет, если он не существует, или обновите его, если это произойдет, вы можете оставить --only-upgrade.

ответил Josh 20 Maypm11 2011, 20:41:10
117

Чтобы обновить один пакет с помощью 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.
ответил Ian 15 +04002012-10-15T15:22:00+04:00312012bEurope/MoscowMon, 15 Oct 2012 15:22:00 +0400 2012, 15:22:00
48

Есть два возможных способа, которыми я могу думать:

  1. 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]
    
  2. Использование Synaptic Package Manager: Щелкните правой кнопкой мыши '' Отметить для обновления :

    введите описание изображения здесь

    Примечание . Иногда он может запрашивать дополнительные пакеты или зависимости, это нормально.

ответил Binarylife 20 Maypm11 2011, 20:39:58
21

В моем опыте по 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 ~ exact + 2».

Теперь вы можете запустить команду apt-get install с определенным номером версии и voila!

sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2

Я только добавил это, потому что я не смог найти эту информацию в другом месте!

ответил chopsuei3 18 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 18 Sep 2014 20:14:14 +0400 2014, 20:14:14
15

В Ubuntu 9.04 Jaunty,

apt-get --only-upgrade install <package>

дает:

E: Sense only is not understood, try true or false.

Команда

apt-get --only-upgrade true install <package>

работал в моем случае.

ответил golem 13 PMpMon, 13 Apr 2015 21:21:19 +030021Monday 2015, 21:21:19
9

Для решения командной строки, которое не устанавливает пакет, если он еще не существует:

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
ответил Shane 22 Mayam12 2012, 11:58:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132