Você só precisa fazer apt-get install --only-upgrade <packagename>
. Isso atualizará apenas esse pacote único e somente se ele estiver instalado.
Se você deseja instalar o pacote, se ele não existir, ou atualizá-lo, use o --only-upgrade
.
Como faço para atualizar um único pacote? Tanto quanto man apt-get
diz apt-get upgrade
não pega um pacote / lista de pacotes como parâmetro:
upgrade
upgrade is used to install the newest versions of all packages currently installed on the system from the sources enumerated in
/etc/apt/sources.list
. Packages currently installed with new versions available are retrieved and upgraded; under no circumstances are currently installed packages removed, or packages not already installed retrieved and installed. New versions of currently installed packages that cannot be upgraded without changing the install status of another package will be left at their current version. An update must be performed first so that apt-get knows that new versions of packages are available.
Você só precisa fazer apt-get install --only-upgrade <packagename>
. Isso atualizará apenas esse pacote único e somente se ele estiver instalado.
Se você deseja instalar o pacote, se ele não existir, ou atualizá-lo, use o --only-upgrade
.
Para atualizar um único pacote usando a CLI:
sudo apt-get install --only-upgrade <packagename>
por exemplo, 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.
Há duas maneiras possíveis de pensar:
sudo apt-get install nameofpackage
Isso atualizará o pacote mesmo se ele já estiver instalado:
~$ 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]
Usando Synaptic Package Manager
: Clique com o botão direito do mouse → Marcar para atualizar :
Nota : Por vezes, pode pedir pacotes ou dependências adicionais, é normal.
Na minha experiência no Ubuntu 12.04 LTS, usar o comando abaixo não atualizará o pacote se usar um PPA separado -
sudo apt-get --only-upgrade install <packagename>
Similarmente, eu não queria executar o comando upgrade, 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.sources usando -
sudo add-apt-repository ppa:ondrej/php5
Se eu correr
sudo apt-get install php5
apenas reinstalará o PHP 5.3.
Preciso, primeiro, determinar o número da versão para atualização, 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 o qual deseja atualizar e, em seguida, copiar a string inteira que faz referência a ela. Por exemplo, a string para PHP 5.5 no Ubuntu é "5.5.16 + dfsg-1 + deb.sury.org ~ precise + 2".
Agora, você pode executar o comando apt-get install com o número de versão específico, e voila!
sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2
Eu só adicionei isso porque não consegui encontrar essa informação em nenhum outro lugar!
No Ubuntu 9,04 desenvolto,
apt-get --only-upgrade install <package>
rendimentos:
E: Sense only is not understood, try true or false.
O 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 ainda não existir:
dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>
Isso pode ser facilmente convertido 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