Hlavní navigace

Solaris Packaging - jednoduchý návod

Peter Ronai

Robíte s Linuxom nejakú dobu a chcete skúsiť niečo nové. Skúsite Solaris a zistíte, že niektoré veci su predsalen odlišné. Tak napríklad packaging je vec, ktorej sa skusený správca tažko vyhne. Vec pomerne jednoduchá a neproblémová, ale pre našinca nová, iná. Cielom tohoto článku je popísať, ako tvoriť pkg file na Solarise.

Predpokladané auditórium sa skladá z ľudí pochopivších jadro problematiky ako takej (Pre-requisites: Správa balíčků s RPM I a II).

Pre linuxáka, ktorý by chcel skúsiť niečo nové, je Solaris x86 pomerne dostupným riešením. Je množstvo vecí, ktoré fungujú na Solarise podobne alebo rovnako (SCO potvrdí ;-) ). Oba systémy vychádzajú zo spoločných základov správania sa a implementácie, majú však za sebou oddelený vývoj a rozličný backround. Z toho potom vyplýva rozličné riešenie podobných problémov.

Iste mi dáte za pravdu, že make install na prehľadnosti nainštalovaných vecí nepridá. Na riešenie tohoto problému existuje packaging. Nebudeme zabiehať do pripodrobných historických detailov, ale je vhodné spomenúť, že Solaris používa sys V packaging. Na rozdiel od na Linuxe mne známeho rpm sa balík robí až z existujúcich bináriek a teda je predovšetkým na tvorcovi balíka, aby izoloval komponenty do oddeleného adresára a vytvoril všetky náležitosti v oddelenom adresári. Skúsený užitateľ iste vtipne poznamená paralelu s BSD. Predpokladajme teda, že túto záležitosť sme elegantne zvládli (zopar trikov si popíšeme neskôr). Je treba vytvoriť pomyslenú dátovú štruktúru na systéme v oddelenom adresári a táto bude zachovaná v balíku ako takom. Sú balíky, ktoré majú presné umiestnenie a zmena tohoto umiestnenia by im škodila, sú iné, ktoré zmenu znesú. Vychádzajúc z podmienok, ktoré nám aplikácia dovoľuje vytvoríme do adresárovej hĺbky čo najkratšiu štruktúru, ktorá musí zostať nemenná. Neskôr do konfiguračného súboru pridáme predponu ako default path (=východiskovú lokáciu) pre strom dát, ktorý sme vytvorili. Tento postup môže byť z rôznych dôvodov nepohodlný až nemožný, a tak máme tiež možnosť použiť existujúce štruktúry z nainštalovaných programov (napr. pokiaľ sme použili make install) prípadne môžeme premapúvať existujúce súbory v konfigurácii.

Predpokladám teda, že máme balík pripravený na zabalenie (t.j. máme binárky v separátnom strome alebo vieme, kde na systéme presne sú), musíme ho však opatriť potrebnými informáciami. Na toto slúžia súbory pkginfo a prototype.
Súbor pkginfo je v podstate veľmi jednoduchý súbor popisujúci balík ako taký. Jeho syntax sa skladá zo súboru premenných a ich hodnôt.

PKG = Názov balíka (napr SUNWlibC)
NAME = Názov, zvyčajne sa zhoduje s DESC
ARCH = Architektúra, pre väčšinu čitatelov i386
VERSION = Verzia
CATEGORY = Kategória je povinná, zvyčajne sa
  sem dáva application ako default
VENDOR = Kto napísal software
EMAIL = E-mail
DESC = Popis, zvyčajne sa zhoduje s NAME
PSTAMP = Značka toho kto balík balil
BASEDIR = prefix kde sa má balík defaultne nainštalovať
CLASSES = pre nás stačí dať none*

* možnosť profilovať balík na jednotlivé classy, ktore majú postupnosť pri instálacii – ocení, kto chce urobiť balík z oracle klienta, viac o classoch sun tutorial.

Ako príklad si zoberme tento jednoduchý pkginfo súbor:

PKG="PRONglib"
NAME="Glib, basic library needed by Gnome"
ARCH="i386"
VERSION="2.2.1"
CATEGORY="application"
VENDOR="GNU"
EMAIL="support@domena.com"
DESC="Glib, basic library needed by Gnome"
PSTAMP="Dzony"
BASEDIR="/usr/local"
CLASSES="none"

Samozrejme toto nie sú všetky prípustné parametre, pre tvorbu jednoduchého balíka však postačia.

Keď máme pkginfo vytvoríme si ešte prototype. Na to slúži utilitka pkgproto, ktorá očakáva na vstupe cestu k súboru a na výstupe vypisuje typ, triedu (none), cestu, chmod a vlastníka súboru. Tento výstup presmerujeme do súboru prototype. Na vrch pridáme riadok s informáciou kde je pkginfo a nutné podmienky pre balík sme splnili.

i pkginfo=./pkginfo
f none booklist.txt 0644 bin bin
d none books 0755 bin bin
d none books/ABOUTDOC 0755 bin bin
d none books/ABOUTDOC/ebt 0755 bin bin
f none books/ABOUTDOC/ebt/ABOUTDOC.dat 0644 bin bin
f none books/ABOUTDOC/ebt/ABOUTDOC.edr 0644 bin bin
f none books/ABOUTDOC/ebt/ABOUTDOC.tag 0644 bin bin
s none books/ABOUTDOC/ebt/search.tdr=./toc.tdr
f none books/ABOUTDOC/ebt/toc.tdr 0644 bin bin
d none books/ABOUTDOC/index 0755 bin bin
f none books/ABOUTDOC/index/index.dat 0644 bin bin
f none books/ABOUTDOC/index/vocab.dat 0644 bin bin
f none books/ABOUTDOC/styles.ent 0644 bin bin

Keď sa pozrieme bližšie na prvý riadok výpisu, všimneme si ze súbor pkginfo je naznačený inou syntaxou ako ostatné súbory. Je logické, že popis práv nie je nutný keďže pkginfo nie je priamo obsiahnutý v balíku. Namiesto toho je tam = a cesta. Toto je spôsob, ako premapovať do balíka súbory, ktore chceme mať v balíku na inom mieste, ako sú momentálne, resp. nachádzajú sa inde na fs.

Samozrejme je možné tiež použiť závislosti, pred a po inštalačné a deinštalačné skripty atď. Keďže je okolo toho celá exaktná veda, doporučím vybrať si len to, čo vás zaujíma a nájdete to na docs.sun.com.

Predpokladajme, že (tí najsnaživejší už prečítali Originálny návod a píšu obsiahlu kritiku na môj článok) sme teda pridali všetky info súbory, ktore sme chceli. V tom prípade nám zostáva už len vytvoria balík pkgmk -r`pwd`; cd /var/spool/pkg; pkgtrans -s `pwd` /export/pkgrepos/glib-2.2.1-intel. pkgmk pridá k súborom checksumy a celý content zabalí a „spoolne“ (spravte si pkginfo -d/var/spool/pkg -l a pozrite sa na status). Balíky na inštalačnom CD solarisu sú v takejto forme. Pokial je nám bližšia možnosť uschovať balíky do pkg súboru, použijeme príkaz pkgtrans.

Keď som hovoril na začiatku článku o trikoch, podviedol som vás. Okrem best practises, tak ako pri rpm, nie sú žiadne triky, ktoré vytiahnem ako čarodejník z rukáva. Možete si myslím ale ušetriť kopec námahy, ak pomyslíte na nasledujúcich pár bodov.
Neexistuje žiadna zaručená metóda na zistenie polohy súborov po make install, ale mnoho ľudí, keď nie je možné spraviť make prefix=$PATH2inst install používa chroot. To je však vhodné len ak robíte väčšie množstvo balíkov pretože chroot prostredie treba vytvoriť (libky, základné binárky atd.). Pokiaľ kompilujete balík na Solarise, skúste si aspoň trial verziu Forte Compilera, Sun kompiluje všetko ním a C++ závislosť na kompileri nám je všetkým známa. Solaris je záludný mnohými neuvedenými PATH a teda pre správnu kompiláciu budete musieť zmeniť niekoľko systémových premenných. Myslite potom na stav systému, ako je v okamihu kompilácie a aký môže byť v okamihu inštalácie, je ľahko možné, že bude treba zmeniť systémový LD_LIBRARY_PATH cez crle, nastaviť PATH a pod. Používajte postinstall skripty. Dajte si pozor na ownera súborov pred vytvorením súboru prototype, pretože nechcete inštalovať do /usr ako user jano. Neuvádzajte sharované adresáre do vlastníctva packagu – znamená to zmenu atribútov pri inštalácii, čo nie je vždy vhodné.

Dalšie zdroje informácií:

Rýchly tutorial na www.sunfreewa­re.com/pkgadd­.html
Tutorial na docs.sun.com/db/doc/­806–7008

Našli jste v článku chybu?

16. 11. 2005 20:55

Výborná alternativa na manipulaci se symlinky je projekt stow. Fakt doporučuju!

15. 7. 2005 8:54

skywaker (neregistrovaný)
a este nieco na tento portal som sa dostal len nahodou takze mi poslite mail vesi.lukas@post.sk
Vitalia.cz: 7 druhů hotových těst na vánoční cukroví

7 druhů hotových těst na vánoční cukroví

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka