GNU/Linux >> Znalost Linux >  >> Debian

Debian – Jak nainstalovat novější verze softwaru, než jaké nabízí Debian?

Předpokládejme, že chci novější verzi softwaru, než je dostupná pro mou aktuální verzi operačního systému, co mohu dělat?

Případy ke zvážení:

  1. Pro tuto verzi operačního systému jsou k dispozici polooficiální/oficiální zdroje dalších balíčků
    . Např. backports.org pro Debian
    nebo PPA pro Ubuntu.
  2. Pro tuto
    verzi operačního systému nejsou k dispozici žádné novější verze balíčku, ale pro
    novější verze operačního systému jsou k dispozici novější verze. Toto je standardní případ pro
    backporting.
  3. Nejsou k dispozici žádné zabalené verze novějších verzí
    softwaru. Dostupné možnosti jsou zabalit novější
    verzi.

Přijatá odpověď:

(Pokud máte otázky/komentáře k této odpovědi, přidejte komentář. Nebo, pokud máte dostatečný počet zástupců, můžete mi napsat ping v chatu.)

Přímá instalace binárních balíčků z novější verze Debianu – není řešení.

Předpokládejme, že používáte nějakou verzi distribuce založené na Debianu. Chcete novější verzi balíčku, než je vám k dispozici. První věc, kterou se každý začátečník pokusí udělat, je nainstalovat binární balíček přímo do vaší verze Debianu. To může nebo nemusí fungovat v závislosti na verzi, kterou používáte, a na tom, o kolik je balíček novější. Obecně tento postup nebude fungovat dobře.

Zvažte například případ, kdy se pokoušíte nainstalovat binární balíček z testing/unstable přímo na stable. To s největší pravděpodobností nedopadne dobře, pokud se testování/nestabilita nestane v tu chvíli velmi blízko stabilní. Důvod souvisí s povahou binární distribuce založené na Linuxu, jako je Debian. Takové operační systémy silně závisí na sdílených knihovnách a tyto závislosti jsou často velmi úzce závislé na verzi; často mnohem více, než je nutné. Debian v současné době nemá dobrý způsob, jak „utěsnit“ závislosti verzí – zkrácený způsob, jak říci, že závislost na verzi je přesně tak omezující, jak je potřeba.

Co to znamená pro uživatele? Předpokládejme například, že se pokoušíte nainstalovat, řekněme slrn z nestabilního Debianu na stabilní Debian. Jak by to vypadalo?

# apt-get install slrn/unstable
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Selected version '1.0.1-10' (Debian:testing [amd64]) for 'slrn'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 slrn : Depends: libc6 (>= 2.15) but 2.13-38+deb7u1 is to be installed
E: Unable to correct problems, you have held broken packages.

Navzdory chybě vytvořené apt , zde nejsou žádné rozbité balíčky. Takže, co se pokazilo? Problém je v tom, že verze libc6 že nestabilní slrn byl zkompilován proti je jiný (a má vyšší číslo verze) než ten, který je k dispozici na Debian stable. (libc6 je knihovna GNU C. Knihovna C je ústřední pro jakýkoli operační systém typu Unix a knihovna GNU C je verze, kterou operační systémy založené na Linuxu obecně používají.)

Proto nestabilní slrn vyžaduje verzi libc6 s vyšším číslem než je k dispozici pro stabilní. Všimněte si, že protože balíček byl zkompilován proti vyšší verzi knihovny, nemusí nutně vyžadovat vyšší verzi této knihovny, ale často tomu tak je.

Syntaxe

apt-get install slrn/unstable

znamená:použijte nestabilní slrn ale pro všechny ostatní balíčky používejte pouze verze ze stable. Přesněji řečeno, používá prioritní čísla. Viz man apt_preferences pro podrobnosti.

Jeden může také udělat

apt-get install -t unstable slrn

Je mnohem pravděpodobnější, že to bude fungovat, ale obecně to nechcete dělat. Proč?

To znamená:dočasně léčit vše balíčky v nestabilním stavu na stejné úrovni jako balíčky ve stabilním stavu. Proto to stáhne nestabilní slrn 's závislosti od unstable, pokud mají vyšší číslo verze, a obecně budou. To bude obecně zahrnovat knihovnu GNU C z důvodů již vysvětlených. Nyní bude tento přístup obecně „úspěšný“ v tom, že závislosti budou splněny podle definice (nestabilní slrn má závislosti, které jsou splněny v unstable), ale skončíte se směsí balíčků, které jsou náhle nuceny běžet s verzemi knihoven odlišnými od toho, pro co byly vytvořeny. Tohle pravděpodobně neskončí dobře.

Související:limit najít výstup A vyhnout se signálu 13?

Odpověď je... ZPĚTNÉ PORTY!

Jaký je tedy správný způsob, jak to udělat? Jde o přebudování zdrojů Debianu z novějších verzí na vašem systému, lidově známé jako „backporting“.
Zvažte následující případy:

Pro tuto verzi Debianu jsou k dispozici polooficiální/oficiální zdroje dodatečných balíčků.

Prvním místem, kam se podívat, je Debian Backports, což je oficiální stránka pro backporty Debianu.

Pro konkrétní příklad:

Přidejte příslušný řádek backports pro své vydání a aktualizaci, abyste našli nové balíčky a poté něco nainstalujte explicitně ze backports (protože backporty jsou ve výchozím nastavení deaktivovány).

echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/stretch-backports.list
sudo apt-get update
sudo apt-get install -t stretch-backports git

Získáte tak nejnovější stabilní verzi git, která má užitečné novější funkce než stabilní, která je součástí stretch (např. 'include', která vám umožňuje kombinovat více konfiguračních souborů nebo změnit vaše uživatelské jméno pro ~/work/projects/ vs ~/personal/ projekty/).

Dalším místem, kam se můžete podívat, jsou různé PPA od správců Ubuntu. Můžete vyhledat „packagename PPA“.

Pro tuto verzi operačního systému nejsou k dispozici žádné novější verze balíčku, ale pro novější verze/vydání operačního systému jsou k dispozici novější verze. Toto je standardní případ pro backporting.

Backporting znamená, že znovu sestavíte zdroje Debianu z novější verze Debianu na verzi, kterou používáte. Tento postup může být snadný nebo obtížný v závislosti na balení. Zde je nástin toho, jak to udělat.

Stručný návod na backporting pro začátečníky

Pro upřesnění předpokládám, že používáte aktuální stabilní verzi Debianu, která je momentálně sípavá. Použiji balíček slrn jako příklad.

Nejprve si všimněte, že všechny soubory balíčků Debianu jsou uloženy v debian/ podadresář zdrojového adresáře.

Prvním krokem je zkontrolovat, zda je k dispozici novější verze. Můžete to udělat pomocí apt-cache policy .

apt-cache policy slrn

slrn:
  Installed: 1.0.0~pre18-1.3
  Candidate: 1.0.0~pre18-1.3
  Version table:
     1.0.1-10 0
         50 http://debian.lcs.mit.edu/debian/ testing/main amd64 Packages
         50 http://debian.lcs.mit.edu/debian/ unstable/main amd64 Packages
 *** 1.0.0~pre18-1.3 0
        500 http://debian.lcs.mit.edu/debian/ wheezy/main amd64 Packages
        100 /var/lib/dpkg/status
     1.0.0~pre18-1.1 0
        500 http://debian.lcs.mit.edu/debian/ squeeze/main amd64 Packages

Rádi bychom backportovali 1.0.1-10 .

KROK 1:

Poznámka:Ujistěte se, že deb-src řádky pro zdrojovou verzi, kterou chcete stáhnout, se objeví ve vašem /etc/apt/sources.list . Pokud si například chcete stáhnout nestabilní verzi slrn , potřebujete deb-src linka pro nestabilní, nebo to nebude fungovat. Všimněte si, že nepotřebujete odpovídající deb řádky ke stažení zdrojů, ačkoli apt-cache policy používá tyto informace, takže pokud nemáte odpovídající deb řádky, pak apt-cache policy vám nezobrazí relevantní verze. Pokud máte deb řádky, nezapomeňte připnout novější verze pomocí záznamu v /etc/apt/preferences nebo podobné. Záznam v /etc/apt/preferences takto (pro nestabilní) bude fungovat například.

Package: *
Pin: release a=unstable
Pin-Priority: 50

Pokud přidáte řádky do /etc/apt/sources.list , nezapomeňte spustit apt-get update poté.

Stáhněte si zdroje pro slrn . Dobré místo je /usr/local/src/slrn .

apt-get source slrn=1.0.1-10

KROK 2:

Mírně změňte číslo verze, abyste odlišili váš backport od upstream verze. Spusťte dch --bpo , což automaticky přidá záznam do debian/changelog soubor s příslušným číslem verze, například

slrn (1.0.1-10~bpo10+1) UNRELEASED; urgency=low

  * Backport to buster.

 -- User <[email protected]>  Sun, 02 Feb 2014 23:54:13 +0530

KROK 3:

Pokuste se vytvořit zdroje. Pokud balíčky požadované pro sestavení nejsou k dispozici, pokus selže. Změňte adresář na zdrojový adresář. Použijte debuild z devtools balíček.

cd slrn-1.0.1/
debuild -uc -us

Pokud jsou závislosti sestavení splněny, pak se zdroje sestaví a vytvoří nějaké debs na úrovni nad zdrojovým adresářem; v tomto případě /usr/local/src/slrn .

KROK 4:

Předpokládejme, že nejsou splněny závislosti sestavení. Poté se musíte pokusit nainstalovat závislosti sestavení. To může nebo nemusí fungovat, protože závislosti nemusí být dostupné pro vaši verzi, nebo pokud jsou dostupné, nemusí být dostupné ve správné verzi.

Poznámka:Bohužel není neobvyklé, že balíčky Debianu vyžadují verze závislostí sestavení, které jsou vyšší, než je nutné. V Debianu neexistuje žádný automatický způsob, jak to zkontrolovat, a správci balíčků to často nezajímá, pokud to funguje na odpovídající verzi/vydání. Proto zaujměte skeptický postoj k závislým verzím a používejte zdravý rozum. Například široce používané balíčky jako Python a nástroje GNU nebudou záviset na velmi specifických verzích svých závislostí, bez ohledu na to, co uvádí balíček Debian.

Související:Debian – Jak můžeme předpovědět, kdy vyjde další vydání Debianu?

V každém případě je můžete zkusit nainstalovat takto

apt-get build-dep slrn=1.0.1-10

Pokud se to podaří, zkuste balíček sestavit znovu (KROK 2). Pokud selže, je potřeba další práce. Všimněte si, že debuild podívá se na Build Dependencies v debian/control soubor a v případě potřeby je můžete změnit. Pojďme si o tom tedy nyní promluvit. Zde jsou Build Dependencies for slrn.

Build-Depends: debhelper (>=9), libslang2-dev, libuu-dev,
 exim4 | mail-transport-agent, libgnutls-openssl-dev, po-debconf, autoconf,
 libcanlock2-dev, autotools-dev, dpkg-dev (>= 1.16.0), chrpath, dh-autoreconf, inn2-inews

Alternativa k použití apt-get build-dep je nainstalovat je ručně, provedením

apt-get install debhelper libslang2-dev ...

Pokud začnete měnit tyto hodnoty v řídicím souboru, měli byste přejít na ruční instalaci, protože poté apt-get build-dep už nebude dělat správnou věc.

Nejsou k dispozici žádné zabalené verze novějších verzí softwaru. Dostupné možnosti jsou zabalit novější verzi.

V mnoha případech lze znovu použít obaly z dřívějších verzí softwaru ve spojení s novějšími zdroji. Tento přístup může narazit na problémy, zejména záplaty, které byly aplikovány na dřívější verze softwaru, zde nemusí platit, takže je možná budete muset znovu synchronizovat se zdroji. Zdrojový formát 3.0 (quilt), který se nyní stává standardem, používá quilt a záplaty jsou umístěny v debian/patches adresář.

Podrobná diskuse o těchto otázkách je však mimo rozsah tohoto příspěvku.


Debian
  1. Jak nainstalovat Docker a Docker Compose na Debian 11

  2. Jak nainstalovat balíčky Debianu offline

  3. Jak nainstalovat balíčky RPM na Debian 11 Bullseye

  1. Jak nainstalovat Javu na Debian 9

  2. Jak nainstalovat R na Debian 9

  3. Jak nainstalovat Apache Maven na Debian 9

  1. Jak nainstalovat Git na Debian 10 Linux

  2. Jak nainstalovat Apache Maven na Debian 10

  3. Jak nainstalovat R na Debian 10