it-swarm.dev

Jak upgradovat jeden balíček pomocí apt-get?

Jak mohu aktualizovat jeden balíček? Pokud man apt-get říká apt-get upgrade nebere balíček/seznam balíčků jako parametr:

pgrade

upgrade se používá k instalaci nejnovějších verzí všech balíčků aktuálně nainstalovaných v systému ze zdrojů vyjmenovaných v /etc/apt/sources.list. Aktuálně nainstalované balíčky s novými dostupnými verzemi jsou stahovány a upgradovány; za žádných okolností nejsou aktuálně nainstalované balíčky odstraněny nebo balíčky, které ještě nejsou nainstalovány, jsou načteny a nainstalovány. Nové verze aktuálně nainstalovaných balíčků, které nelze upgradovat bez změny stavu instalace jiného balíčku, zůstanou v aktuální verzi. Nejprve je třeba provést aktualizaci, aby apt-get věděl, že jsou k dispozici nové verze balíčků.

871
lurscher

Stačí udělat apt-get install --only-upgrade <packagename>. Tím se upgraduje pouze tento jediný balíček a pouze pokud je nainstalován.

Pokud si přejete nainstalovat balíček, pokud neexistuje, nebo jej upgradovat, pokud ano, můžete vynechat --only-upgrade.

1078
Josh

Za účelem aktualizace jednoho balíčku pomocí rozhraní CLI:

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

např. 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.
136
Ian

Mohu myslet na dva možné způsoby:

  1. Sudo apt-get install nameofpackage

    Tím dojde k aktualizaci balíčku, i když je již nainstalován:

    ~$ 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. PoužitímSynaptic Package Manager: Klikněte pravým tlačítkem → Označit pro upgrade:

    enter image description here

    Poznámka: Někdy může vyžadovat další balíčky nebo závislosti, je to normální.

58
Binarylife

Podle mých zkušeností s Ubuntu 12.04 LTS nebude pomocí níže uvedeného příkazu upgradovat balíček, pokud používáte samostatný PPA -

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

Podobně jsem nechtěl spustit příkaz upgrade, který by upgradoval všechny balíčky na mém serveru -

Sudo apt-get dist-upgrade

Například mám nainstalován PHP 5.3) a přidal jsem PPD ondrej do mých apt.sources pomocí -

Sudo add-apt-repository ppa:ondrej/php5

Pokud utíkám

Sudo apt-get install php5

pouze přeinstaluje PHP 5.3.

Nejprve si musím zjistit číslo verze, kterou mám upgradovat, pomocí

Sudo apt-cache policy php5

Zobrazí se všechna dostupná čísla verzí. Měli byste najít číslo verze, na kterou chcete upgradovat, a zkopírovat celý řetězec, který na něj odkazuje. Například řetězec PHP 5.5 na Ubuntu je "5.5.16 + dfsg-1 + deb.sury.org ~ přesný + 2").

Nyní můžete spustit příkaz apt-get install s konkrétním číslem verze a voila!

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

Přidal jsem to pouze proto, že jsem nemohl najít tyto informace nikde jinde!

26
chopsuei3

Na Ubuntu 9.04 Jaunty,

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

výnosy:

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

Příkaz

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

pracoval v mém případě.

17
golem

Řešení příkazového řádku, které nenainstaluje balíček, pokud již neexistuje:

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

To lze snadno provést do skriptu, např .:

pgrade-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
10
Shane

Stará, ale příjemná otázka, dávám svobodu přidávat aktualizovanou odpověď ... Pro modernější distribuce, kde je zahrnut apt obal, je to jednoduché jako:

Sudo apt upgrade <package-name>
2
xCovelus

Chcete-li upgradovat jeden balíček na Ubuntu 18.04 LTS:

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

Postup upgradu více balíčků:

Sudo apt update && Sudo apt install --only-upgrade <package1> <package2> <package3>
0
krk