Jedním ze způsobů, jak zajistit instalaci aplikací Pythonu na operační systémy založené na Debianu (jako je Debian nebo Elementary OS), je použití nástroje dh_virtualenv. Vytváří soubor .deb balíček, který obaluje virtuální prostředí Pythonu kolem aplikace a nasazuje ji po instalaci.
V tomto článku vysvětlím, jak jej použít, na příkladu vytvoření balíčku obsahujícího nástroj HTTPie pro testování HTTP API z příkazového řádku bez nutnosti aktivace virtuálního prostředí.
Balení s dh_virtualenv
Nejprve musíte nainstalovat nástroje, které dh_virtualenv potřebuje. Dokumentace dh_virtualenv poskytuje všechny možnosti instalace. Na mém systému založeném na Debianu jsem zadal:
apt-get install dh-virtualenv devscripts
I když balíček devscripts není vyžadován, zjednoduší provádění následujících operací.
Nyní vytvořte adresář pro uchování zdrojů. Protože se jedná o místní, neoficiální, balíček HTTPie, nazval jsem jej myhttp . Dále vytvoříme nějaké soubory uvnitř myhttp poskytnout metadata systému sestavení Debianu.
Nejprve vytvořte debian/control soubor:
Zdroj:myhttp
Sekce:python
Priorita:extra
Správce:Jan Doe
Závisí na sestavení:debhelper (>=9), python3.7, dh-virtualenv (>=0,8)
Standardní verze:3.9.5
Balík:myhttp
Architektura:libovolná
Předběžná závislost:dpkg (>=1.16.1), python3.7, ${misc:Pre-Depends}
Závisí:${misc:Depends}
Popis:http klient
Užitečné pro práciO čem tedy všechny tyto informace jsou? Jak uvádí dokumentace k Debianu:
"Řádky 1–7 jsou řídicí informace pro zdrojový balík. Řádky 9–13 jsou řídicí informace pro binární balík.”
Tady je můj názor:
- v sekci hodnota je v našem případě většinou bezvýznamná, ale musí tam být. Je smysluplné poskytnout informace řízenému instalačnímu programu uživatelského rozhraní, které nejsou pro tento balíček relevantní.
- Další Priorita hodnota je správná priorita pro balíčky třetích stran, jako je tento.
- Důrazně doporučujeme zadat skutečné kontaktní údaje do Správce pole. Nemusí to však být váš osobní e-mail -- "Tým infrastruktury
", například pokud je balíček spravován týmem a chcete, aby být zaslány na e-mailový alias týmu. - Závisí na sestavení pole označuje, že k sestavení balíčku potřebujete debhelper, python a dh-virtualenv:proces sestavení balíčku zajistí, že tyto závislosti budou nainstalovány v době sestavení balíčku.
- verze standardů je převážně pro lidskou spotřebu. Označuje průvodce, kterým se řídíte. Tato příručka je založena na oficiální dokumentaci dh-virtualenv, která je založena na příručce 3.9.5 z Debianu. Téměř vždy je nejlepší volbou pojmenovat binární a zdrojový balíček stejně.
- Architektura pole by mělo být Jakékoli protože virtuální prostředí může obsahovat některé soubory specifické pro architekturu:jinak by bylo lepší vybrat pole jako všechny .
- Ponechte předzávislosti list as-is:pre-depends je docela přísná forma závislostí a je vzácné, že potřebujete něco víc, než je zde navrhované minimum. Závislosti jsou obvykle přesně vypočítány systémem sestavení, takže není důvod je specifikovat ručně.
- Pokud je váš balíček převážně pro interní použití, použijte Popis může specifikovat pouze minimální informace a odkaz na firemní wiki; jinak by mohlo být užitečné více podrobností.
Poté vytvořte debian/compat soubor, který existuje většinou pro historické účely:
$ echo "9" > debian/compat
Dále vytvořte changelog, který uživatelům balíčků řekne, co se změnilo od posledního vydání. Nejjednodušší způsob je použít dch --create vytvořte šablonu a poté vyplňte hodnoty.
Vyplněno to vypadá takto:
myhttp (2.0.0-1) stabilní; urgency=medium
* První vydání.
-- Jan DoePá, 27. března 2020 01:09:22 +0000 Nyní musíte nástroji sdělit, aby nainstaloval HTTPie, ale kterou verzi?
Vytvořte requirements.in soubor, který má volné verze:
httpie
Obecně bude soubor volných požadavků obsahovat pouze přímé závislosti vašeho projektu a v případě potřeby bude specifikovat minimální verze. Není vždy nutné specifikovat minimální verze:nástroje jsou obvykle zaměřeny na zpřísnění závislostí směrem k „nejnovější možné verzi“. V případě, že váš balíček Debianu odpovídá jednomu internímu balíčku Pythonu, což je běžný případ v interních aplikacích, bude soubor volných požadavků vypadat podobně:jen jeden řádek s názvem balíčku.
Poté použijte pip-compile (který je dostupný po instalaci balíčku PyPI pip-tools ):
$ pip-compile requirements.in > requirements.txt
Tím vytvoříte soubor s přísnou závislostí s názvem requirements.txt :
#
# Tento soubor je automaticky generován pip-compile
# Chcete-li aktualizovat, spusťte:
#
# požadavky na kompilaci pip.in
#
certifi==2019.11.28 # prostřednictvím požadavků
chardet==3.0.4 # prostřednictvím požadavků
httpie==2.0.0 # via -r požadavky.in
# prostřednictvím požadavků
pygments==2.6.1 # přes httpie
requests==2.23.0 # přes httpie
urllib3==1.25.8 # přes požadavkyNakonec napište debian/rules soubor pro vytvoření balíčku. Protože dh_virtualenv dělá veškerou tvrdou práci, soubor pravidel je jednoduchý:
#!/usr/bin/make -f
%:
dh $@ --with python-virtualenv --python /usr/bin/python3.7Nezapomeňte zadat interpret Pythonu. Ve výchozím nastavení použije interpret v /usr/bin/python , což je Python 2, ale měli byste používat podporovanou verzi Pythonu.
Zápis je dokončen; vše, co zbývá, je sestavit balíček:
$ debuild -b -us -uc
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Tím vytvoříte soubor v nadřazeném adresáři s názvem jako myhttp_2.0.0-1_amd64.deb . Tento soubor lze nainstalovat na jakýkoli kompatibilní operační systém.
Obecně je nejlepší vytvářet balíčky Debianu, které jsou určeny pro konkrétní platformu, jako je Debian 10.0, na stejné platformě.
Tento balíček Debianu můžete uložit do úložiště a nainstalovat na všechny relevantní systémy, například pomocí Ansible.
Závěr
Balení aplikací pro operační systémy založené na Debianu je vícestupňový proces. Pomocí dh_virtualenv bude proces přímočarý.
Linux