abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 15:00 | Nová verze

    Po po téměř roce vývoje od vydání verze 5.38 byla vydána nová stabilní verze 5.40 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 75 vývojářů. Změněno bylo přibližně 160 tisíc řádků v 1 500 souborech. Přehled novinek a změn v podrobném seznamu.

    Ladislav Hagara | Komentářů: 0
    dnes 12:00 | Zajímavý článek

    Uroš Popović popisuje, jak si nastavit Linux na desce jako Raspberry Pi Zero, aby je šlo používat jako USB „flešku“.

    Fluttershy, yay! | Komentářů: 1
    dnes 08:44 | Zajímavý software

    Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).

    Fluttershy, yay! | Komentářů: 1
    dnes 02:22 | Nová verze

    Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    8.6. 17:55 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.

    Ladislav Hagara | Komentářů: 8
    7.6. 14:55 | IT novinky

    Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.

    Ladislav Hagara | Komentářů: 20
    7.6. 11:44 | Zajímavý software

    NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    7.6. 10:55 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.

    Ladislav Hagara | Komentářů: 0
    6.6. 20:55 | IT novinky

    IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.

    Ladislav Hagara | Komentářů: 0
    6.6. 10:44 | Zajímavý článek

    Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.

    Ladislav Hagara | Komentářů: 42
    Rozcestník

    Balíčky pro Debian - 10 (speciální balíčky)

    9. 10. 2008 | Michal Čihař | Návody | 3653×

    Balíček pro jednoduchý program už umíme, dnes se podíváme na některé speciální balíčky, které budou potřebovat trochu zvláštní péče (knihovny, moduly pro Python, práce s databázemi).

    Obsah

    Sdílené knihovny

    link

    Jak se rozdělují soubory do balíčků knihoven, již bylo popsáno v díle věnujícím se programu dh_install (instalace souborů), takže už víme, že při balení knihovny budeme mít nejméně dva balíčky - libbar0 a libbar-dev. Kromě nich je ještě dobré vytvořit balíček s ladicími informacemi libbar0-dbg (k tomu nám pomůže dh_strip popsaný dříve), a pokud knihovna obsahuje i větší množství dat, můžeme je od ní oddělit do balíčku libbar-common.

    Balíčků nám tedy může vzniknout mnoho a určitě by mezi nimi měly být nějaké závislosti, abychom vždy dostali funkční balíček. Pro vývojový balíček budeme potřebovat knihovnu ve stejné verzi, proto musí záviset na libbar0 (= ${binary:Version}). Balíček s daty je sice samostatně celkem k ničemu, ale i přes to si ho někdo může chtít nainstalovat bez knihovny (například může chtít použít data v něm obsažená v jiném programu), a proto použijeme jen doporučení (Suggests) na libbar0. Vlastní knihovna oproti tomu data určitě potřebovat bude, proto zde závislost musíme zavést. Podle charakteru dat musíme vybrat, jak striktně budeme vyžadovat stejnou verzi. Obvykle se ovšem používá závislost na stejné nebo novější verzi, tedy libbar-common (>= ${source:Version}). Poslední je balíček s ladicími symboly, a ten samozřejmě nemá smysl s jinou verzí knihovny, než ze které byl vytvořen - libbar0 (= ${binary:Version}).

    Ostatní problémy, se kterými se můžete setkat při vytváření balíčků knihovny, se již nijak neliší od jiných balíčků, ale na správné závislosti je třeba si dávat pozor.

    Moduly a skripty v Pythonu

    link

    Moduly pro Python by v systému měly být k dispozici pokud možno pro všechny nainstalované verze Pythonu a měly by být zkompilované do byte-kódu. To je asi hlavní požadavek, který dal vzniknout dvěma programům pro přípravu pythonních balíčků - python-central a python-support. Oba v současné době nabízejí srovnatelné možnosti a jediný důvod, proč budu dále popisovat python-central, je ten, že jej používám; python-support by posloužil stejně dobře. Mezi autory těchto programů sice panuje menší nevraživost, ale to nevadí tomu, aby vám kterýkoliv z nich dobře posloužil.

    Oba dva přesunou moduly do svého adresáře a při instalaci je zkompilují do byte-kódu a nějakým způsobem je předhodí Pythonu. Toto samozřejmě funguje jen pro moduly, které jsou napsané jen v Pythonu a neobsahují žádnou kompilovanou část. Tyto kompilované je potřeba při vytváření balíčku zkompilovat pro všechny podporované verze Pythonu. Program pyversions nám prozradí, které verze jsou v současné době podporované, a v debian/rules se pak podle toho musíme zařídit a použít všechny verze Pythonu, takže kompilace bude vypadat například následovně:

    PYVERSIONS=$(shell pyversions -r)
    ...
    build-stamp:
        dh_testdir
        # Build normal modules
        set -e; \
        for python in $(PYVERSIONS) ; do \
            $$python setup.py build ; \
        done
    

    Dále ve finální fázi vytváření balíčku musíme spustit pomocný skript dh\_pycentral, který nám dopočítá některé substituční proměnné pro debian/control a vygeneruje skriptíky pro správné nainstalování modulů v systému.

    V souboru debian/control musíme kromě nových závislostí (python-all-dev a python-central) uvést několik nových polí:

    Source: python-bar
    ...
    XS-Python-Version: all
    
    Package: python-bar
    ...
    Provides: ${python:Provides}
    XB-Python-Version: ${python:Versions}
    Depends: ${shlibs:Depends}, ${python:Depends}
    

    Pole XS-Python-Version u zdrojového balíčku určuje, pro které verze Pythonu balíček je možné balíček zkompilovat. Obvykle je to možné pro všechny a můžeme tedy použít hodnotu all. U binárního balíčku se pak do XB-Python-Version doplní, pro které verze Pythonu byl balíček zkompilován, a v závislostech používáme další nově vygenerované proměnné.

    To by pro základní moduly pro Python mělo stačit, podrobnější popis Problematiky naleznete na wiki.

    Démoni

    link

    Poslední případ balíčku, který si dnes popíšeme, jsou démoni. Tedy spíš cokoliv, co se spouští při startu systému a má spouštěcí skript. Nejdůležitější část je vytvořit tento spouštěcí skript; vlastní instalaci a zařazení do startovací sekvence již zařídí dh_installinit. Spouštěcí skript umístíme do zdrojového balíčku jako debian/binární-balíček.init.

    Pokud démon má nějaké parametry z příkazové řádky, je vhodné dát uživateli možnost je změnit v konfiguračním souboru umístěném do /etc/default/. Tento adresář obsahuje části skriptů, které jsou obvykle ve spouštěcím skriptu použity právě pro specifikaci parametrů spouštěných služeb. Pokud ve zdrojovém balíčku budeme mít soubor debian/binární-balíček.default, nainstaluje ho dh_installinit jako /etc/default/binární-balíček a pak ho můžeme ze spouštěcího skriptu použít.

    Jak by tedy spouštěcí skript měl vypadat? Protože Debian dodržuje zásady LSB, měl by obsahovat standardní hlavičku s informace o službě, kterou poskytuje. Pokud jsme vytvářeli balíček programem dh_make, ten nám vytvořil ukázkový spouštěcí skript jako debian/init.d.ex a tento nám může dobře posloužit jako základ pro další práci.

    Používání databáze

    link

    Pokud program používá databázi, máme také možnost tyto databázi vytvářet v rámci skriptíků spouštěných při instalaci a vytvořit konfigurační soubor s přístupovými parametry do databáze. Veškerou tuto činnost má na starosti balíček dbconfig-common. Ten v současné době podporuje MySQL, PostgreSQL a SQLite a umožní základní nastavení databáze, vytvoření uživatelů a na případné dotazy se ptá uživatele pomocí debconfu.

    Kompletní návod k použití zde vypisovat nebudu, ale v zásadě je použití jednoduché a ukážeme si ho na příkladu pro MySQL (pro jiné databáze stačí změnit mysql v následujících příkladech za odpovídající text). Přidáme skript pro vytváření potřebných tabulek do balíčku jako /usr/share/dbconfig-common/data/jméno_balíčku/install/mysql a ve skriptíkách přidat volání dbconfig-common. Do jméno_balíčku.config přijde jen konfigurace:

    . /usr/share/debconf/confmodule
    if [ -f /usr/share/dbconfig-common/dpkg/config.mysql ]; then
            . /usr/share/dbconfig-common/dpkg/config.mysql
            dbc_go jméno_balíčku $@
    fi
    

    V jméno_balíčku.postinst pak můžeme i třeba vygenerovat konfigurační soubor v PHP (dbconfig-common nabízí i jiné formáty):

    . /usr/share/dbconfig-common/dpkg/postinst.mysql
    dbc_generate_include_owner=www-data
    dbc_generate_include=php:/etc/jméno_balíčku/config-db.php
    dbc_go jméno_balíčku $@
    

    Pak už jen stačí zařídit, aby se vygenerovaný soubor nějak použil v aplikaci a vše by mělo automaticky fungovat. Podotýkám, že toto je nejjednodušší použití, ale je možné dělat i mnohem složitější operace, včetně aktualizace struktury databáze při aktualizaci na novou verzi.

    Nejčtenější články posledního měsíce

    Týden na ITBiz: Výkonný elektromagnet z 3D tiskárny
    Týden na ITBiz: Polovina českých firem si není jistá blízkou budoucnosti svého oboru, většina ale počítá s velkým vlivem AI
    Událo se v týdnu 21/2024

    Nejkomentovanější články posledního měsíce

    Týden na ITBiz: Platby výkupného za ransomware vzrostly za poslední rok na pětinásobek
    Týden na ScienceMag.cz: Neutronové molekuly – neutrony se mohou vázat na kvantové tečky
    Týden na ScienceMag.cz: Postoupili ve snaze najít kvantovou povahu gravitace
      všechny statistiky »

    Seriál Balíčky pro Debian (dílů: 12)

    Balíčky pro Debian - 1 (úvod) (první díl)
    <—« Balíčky pro Debian - 9 (užitečné nástroje)
    »—> Balíčky pro Debian - 11 (repozitáře a upload do distribuce)
    Balíčky pro Debian - 12 (závěr aneb co se jinam nevešlo) (poslední díl)

    Související články

    Na co se často ptáme: Balíčkovací systémy
    Seriál: Instalace softwaru v Linuxu
    Seriál: Gentoo ebuild
    Seriál: Rukověť baliče RPM
    Seriál: Balíčkovací systém Arch Linuxu
    Smart Package Manager - instalujeme chytře
    Zdroje balíčkov pre Ubuntu
    Balíčkovací systém Mandrake Linuxu
    Balíčkovací systém Gentoo Linuxu

    Odkazy a zdroje

    Návod pro začínajícího balíčkáře
    Příručka vývojáře
    Zásady Debianu
    Dokumentace pro vývojáře

    Další články z této rubriky

    VDR a DVB-T2, část 2.
    VDR a DVB-T2, část 1.
    Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
    MapTiler – proměňte obrázek v zoomovatelnou mapu
    Syncthing
           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    9.10.2008 01:09 Jirka P
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 10 (speciální balíčky)
    Překlep: s/libbar-bar/libbar-dbg/

    MMCH, ta závislost (Suggests:) mezi daty a knihovnou je standardní praxe? V archivu jsem na toto téma našel všehochuť, od Depends: libbar0 přes Recommends a Suggests až po Conflicts: libbar0 (< x). Dá se nějak zařídit, pokud jsou data a "knihovna" v jiném balíčku (případ některých her), aby data šla nainstalovat samostatně, ale do testingu šly ty balíčky pouze v kompatibilních verzích (a nestalo se tedy, že nová data vyhodí starou binárku)?
    9.10.2008 01:44 Jirka P
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 10 (speciální balíčky)
    Ještě ty -dbg balíčky: nestálo by za to (nedá se zařídit) mít i -dbg balíčky se soname? Když mi segfaultne program, který ještě nepřešel na libbar1 (používá libbar0), je mi libbar-dbg pro libbar1 platný jak mrtvýmu zimník. Jaký jsou pravidla pro mazání z testingu, umožňovaly by to?
    9.10.2008 10:46 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 10 (speciální balíčky)
    No v článku to tak bylo zamýšleno :-). Je to čistě na tom, kdo balíčky vytváří a na tom co považuje za pravděpodobnější (ostatně to samé platí pro -dev balíčky).
    9.10.2008 10:37 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 10 (speciální balíčky)
    Spíš s/libbar0-bar/libbar0-dbg/ ne? :-)

    Knihovna obvykle musí mít data, takže závislost z knihovny na data musí být Depends. Opačně to není nutné, protože data je třeba možná použít i v něčem jiném (at už to je jakkoliv pravděpodobné). A ani to není dobré, protože by vzniknul kruh závislostí a to může způsobit problémy při instalaci. To jestli tam bude Suggests nebo Recommends, je víceméně na správci. Konflikt může být na místě pokud nová verze dat nějak rozbíjí knihovnu, ale spíš bych to řešil závislostí knihovny na správné verzi dat.

    No pokud jsou data ve stejném zdrojovém balíčku, tak se nemůže stát, že budou migrovat samostatně. Jinak je potřeba mít závislosti tak, aby samostatná migrace nemohla nastat.
    9.10.2008 15:13 Jirka P
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 10 (speciální balíčky)
    Opačně to není nutné, protože data je třeba možná použít i v něčem jiném (at už to je jakkoliv pravděpodobné).
    Tady bych byl opatrný, pokud maintainer myslí, že libbar0-data je možno použít i jinak než v libbar0, měl by zároveň garantovat nějakou funkčnost balíku libbar0-data. Což ho omezuje v takových akcích jako smazání půlky souborů v nějaké revizi.
    A ani to není dobré, protože by vzniknul kruh závislostí a to může způsobit problémy při instalaci.
    Dost by mě zajímalo, čím a jaké problémy to způsobuje. Vím, že o tom čas od času jistý B.A. vyvolá na -⁠devel flame, ale ty jeho zdůvodnění jsou tak trochu divný. Že cokoli rozbije dist-upgrade nic neznamená, dist-upgrade je rozbitý sám o sobě. Že to zvětšuje složitost vyhodnocování a splňování závislostí prostě není pravda. Problémy s pořadím spouštění instalačních skriptů sice můžou být, ale ne pokud jeden z těch balíků ty skripty nemá atd.
    Jinak je potřeba mít závislosti tak, aby samostatná migrace nemohla nastat.
    No jo, ale jak to udělat?
    9.10.2008 18:27 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 10 (speciální balíčky)
    Dost by mě zajímalo, čím a jaké problémy to způsobuje. Vím, že o tom čas od času jistý B.A. vyvolá na -⁠devel flame, ale ty jeho zdůvodnění jsou tak trochu divný. Že cokoli rozbije dist-upgrade nic neznamená, dist-upgrade je rozbitý sám o sobě. Že to zvětšuje složitost vyhodnocování a splňování závislostí prostě není pravda. Problémy s pořadím spouštění instalačních skriptů sice můžou být, ale ne pokud jeden z těch balíků ty skripty nemá atd.
    Spíš bych ten problém formuloval opačně: jaký je dobrý důvod k vytvoření kruhové závislosti? V mnoha případech sice problém nezpůsobí, ale to není důvod jich mít v distribuci stovky a komplikovat tak jakýkoliv upgrade.
    Jinak je potřeba mít závislosti tak, aby samostatná migrace nemohla nastat.
    No jo, ale jak to udělat?
    Při migraci se kontroluje jestli se nerozbijí závislosti jiných balíčků, takže pokud potřebuju nějakou verzi dat, stačí to dát do závislostí, např.:
    Package: program
    Depends: data (>= 1.0), data (<< 1.1)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.