Como atualizar um único pacote usando apt-get?

Como faço para atualizar um único pacote? Quanto man apt-get indica apt-get upgrade não leva um pacote / lista de pacotes como parâmetro:

actualizar

upgrade é usado para instalar as versões mais recentes de todos os pacotes atualmente instalados no sistema a partir das fontes enumeradas em /etc/apt/sources.list. Os pacotes atualmente instalados com novas versões disponíveis são recuperados e atualizados; sob nenhuma circunstância os pacotes atualmente instalados são removidos ou os pacotes ainda não instalados recuperados e instalados. Novas versões de pacotes atualmente instalados que não podem ser atualizadas sem alterar o status de instalação de outro pacote serão deixadas em sua versão atual. Uma atualização deve ser realizada primeiro para que o apt-get saiba que novas versões de pacotes estão disponíveis.

Você só precisa fazer apt-get install --only-upgrade <packagename>. Isso atualizará apenas esse pacote único e somente se estiver instalado.

Se você deseja instalar o pacote se ele não existir, ou atualizá-lo se existir, você pode deixar de fora --only-upgrade.

A fim atualizar um único pacote usando o CLI:

sudo apt-get install --only-upgrade <packagename>

como., sudo apt-get install --only-upgrade ack

Reading package lists... DoneBuilding dependency tree       Reading state information... DoneSkipping **ack**, it is not installed and only upgrades are requested.0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Existem duas maneiras possíveis de pensar:

  1. sudo apt-get install nameofpackage

    Isso atualizará o pacote mesmo que já esteja instalado:

    ~$ sudo apt-get install emeseneReading package lists... DoneBuilding dependency tree       Reading state information... DoneThe following packages will be upgraded:  emesene1 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. MearSynaptic Package Manager: Clique com o botão direito do mouse em marca para atualização:

    Notar: Às vezes pode pedir pacotes adicionais ou dependências, é normal.

Na minha experiência no Ubuntu 12.04 LTS, usar o comando abaixo não atualizará o pacote se estiver usando um PPA separado -

sudo apt-get --only-upgrade install <packagename>

Da mesma forma, eu não queria executar o comando de atualização, que atualizaria todos os pacotes no meu servidor -

sudo apt-get dist-upgrade

Por exemplo, eu tenho o PHP 5.3 instalado e adicionei o ondrej PPA ao meu apt.fontes usando -

sudo add-apt-repository ppa:ondrej/php5

Se eu correr

sudo apt-get install php5

ele apenas reinstalará o PHP 5.3.

Eu tenho que, primeiro, determinar o número da versão para atualizar, usando

sudo apt-cache policy php5

Isso listará todos os números de Versão disponíveis. Você deve encontrar o número da versão para a qual deseja atualizar e, em seguida, copiar toda a string que faz referência a ele. Por exemplo, a string para PHP 5.5 No Ubuntu é "5.5.16 + dfsg-1+deb.sury.org ~ preciso + 2".

Agora, você pode executar o comando apt-get install com o número da versão específica e pronto!

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

Eu só adicionei isso porque não consegui encontrar essas informações em nenhum outro lugar!

No Ubuntu 9.04 Jaunty,

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

rendimento:

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

Comando

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

funcionou no meu caso.

Para uma solução de linha de comando que não instala o pacote se ele ainda não existir:

dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>

Isso pode ser facilmente transformado em um script, por exemplo.:

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

Para atualizar um único pacote no Ubuntu 18.04 LTS:

sudo apt update && sudo apt install --only-upgrade <packagename>

Para atualizar vários pacotes:

sudo apt update && sudo apt install --only-upgrade <package1> <package2> <package3>