Egy adott verzió telepítése az apt-get segítségével Ubuntu/Debian rendszeren

Linux 2 perc olvasás

Ubuntun és Debianon az apt-get install (vagy az újabb apt install) alapértelmezés szerint a tárolókban elérhető legújabb verziót telepíti. Ez a legtöbbször így helyes, mert a legújabb verzió tartalmazza a biztonsági javításokat. Néha azonban egy konkrét verzióra van szükség: egy alkalmazás csak egy adott verzióval kompatibilis, egy frissítés hibát hozott, és vissza kell állni az előzőre, vagy több szerveren ugyanazt a verziót kell futtatni.

Az alábbi parancsokhoz root vagy sudo jogosultság kell, ezért saját KVM VPS-en vagy dedikált szerveren használhatók.

1. Nézze meg, milyen verziók érhetők el

Frissítse a csomaglistát, majd kérdezze le a csomag verzióit:

sudo apt-get update
apt-cache policy nginx

A kimenetben az Installed sor a telepített, a Candidate sor az alapértelmezésként települő verziót mutatja, alatta pedig a tárolókban elérhető összes verzió szerepel. Egy Debian 13-as tesztgépen a bind9-host csomagnál (a dig és a host parancs része):

bind9-host:
  Installed: 1:9.20.30-1~deb13u1
  Candidate: 1:9.20.30-1~deb13u1
  Version table:
 *** 1:9.20.30-1~deb13u1 500
        500 mirror+file:/etc/apt/mirrors/debian-security.list trixie-security/main arm64 Packages
        100 /var/lib/dpkg/status
     1:9.20.26-1~deb13u1 500
        500 mirror+file:/etc/apt/mirrors/debian.list trixie/main arm64 Packages

A telepített verzió a biztonsági tárolóból (trixie-security) jött, a kiadáskori verzió a fő tárolóban (trixie/main) még elérhető. Ugyanezt rövidebb formában az apt list -a nginx vagy az apt-cache madison nginx parancs is kiírja.

2. Telepítse a kívánt verziót

A csomag neve után egyenlőségjellel adja meg a verziót, pontosan úgy, ahogy az előző parancs kiírta, a revíziószámmal és ha van, az elején álló 1: (epoch) résszel együtt:

sudo apt-get install nginx=1.24.0-2ubuntu7
sudo apt-get install bind9-host=1:9.20.26-1~deb13u1

A verziószám itt csak példa, a sajátját az apt-cache policy kimenetéből másolja ki. Ha a kért verzió régebbi a telepítettnél, az apt rákérdez a visszaléptetésre (downgrade); nem interaktív futtatáskor ehhez az --allow-downgrades kapcsoló kell.

3. Rögzítse a verziót

Ha a csomagot nem rögzíti, a következő apt upgrade vagy az automatikus frissítés újra a legújabb verzióra cseréli. A rögzítés:

sudo apt-mark hold nginx
apt-mark showhold
sudo apt-mark unhold nginx

Az első parancs rögzíti a csomagot, a második kilistázza a rögzített csomagokat, a harmadik feloldja a rögzítést. A teszten a rögzített csomagokat a frissítés a The following packages have been kept back: sorban felsorolta, és nem frissítette. Egy rögzített csomag nem kap biztonsági frissítést sem, ezért ezt csak átmeneti megoldásként használja. A rendszer frissítéséről a rendszerfrissítési útmutatónkban olvashat.

Gyakori hibák

  • E: Version '...' for '...' was not found: a megadott verzió nincs a tárolókban. Ubuntu és Debian alatt a tárolók általában csak a kiadáskori és a legutóbbi frissített verziót tartják meg, a köztes verziók eltűnnek. Ellenőrizze a pontos verziószámot, vagy használja a szoftver gyártójának saját tárolóját, amely gyakran több régebbi verziót is kínál.
  • Függőségi hiba (Depends: ... but ... is to be installed): a csomag más csomagok azonos verzióját igényli. A teszten a bind9-host visszaléptetése így állt le: bind9-host : Depends: bind9-libs (= 1:9.20.26-1~deb13u1) but 1:9.20.30-1~deb13u1 is to be installed. Ilyenkor a függőséget is adja meg ugyanabban a parancsban: sudo apt-get install --allow-downgrades bind9-host=1:9.20.26-1~deb13u1 bind9-libs=1:9.20.26-1~deb13u1; ez a teszten mindkettőt visszaléptette.
  • Egy már letöltött .deb fájl telepítése: ha a régi verzió .deb csomagja megvan (például a /var/cache/apt/archives/ könyvtárban), az sudo apt install ./csomag.deb paranccsal telepítheti, így az apt a függőségeket is feloldja.

Ellenőrzés

A telepítés után az apt-cache policy csomagnev kimenetének Installed sora mutatja a tényleges verziót, a programok többsége pedig a --version kapcsolóval (például nginx -v) is kiírja.

Vissza: Linux leírások (62)