Dedinčan odporúča...

KTechlab logoKTechLab je program na simuláciu elektronických obvodov a PIC v reálnom čase. V ponuke programu je množstvo elektronických súčiastok (lineárne, plovodičové, či integrované obvody – analógové i číslicové) a niekoľko typov PIC. Program pre PIC...

Balíčkovanie - dpkg

Kategória: Debian GNU/Linux
Upravené: utorok, 27. máj 2008

V tejto časti prichádza na rad popis práce s najnižšou vrstvou balíčkovacieho systému Debianu, a to dpkg - Debian Package Manager, prípadne podľa manuálovej stránky package manager for Debian. Popíšem Vám výhody aj záludnosti práce na tejto vrstve.

Úplne na začiatok jednoduchá poznámka, dpkg netreba inštalovať, s pravdepodobnosťou rovnajúcou sa istote, máte tento program už nainštalovaný, pretože bez neho by ste vlastne ani Debian nenainštalovali.

Ale poďme späť k popisu, dpkg je nástroj pre inštaláciu, odstraňovanie, vytváranie a správu balíčkov. V manuálovej stránke sa dočítate, že primárnou nadstavbou nad dpkg je nástroj dselect, ale tento nástroj v dnešnom Debiane už predvolene inštalovaný nie je. Nainštalovať si ho samozrejme môžete. Základná syntax pre dpkg vyzerá takto:

dpkg [voľby] akcia 

Inštalácia balíčkov 

Nástroj dpkg je možné použiť pre pridávanie balíčkov do systému, čo využijete najmä vtedy, keď odniekaľ zoženiete balíček, ktorý v distribúcii nie je a chcete ho nainštalovať. Ak je to ojedinelý prípad (a verte mi, že pre bežného používateľa ojedinelým je), neoplatí sa Vám vytvárať si vlastné úložisko. Použijete teda dpkg a jeho akciu --install (skrátene -i):

dpkg --install meno_súboru.deb

Všimnite si, že v tomto prípade dávate príkazu meno súboru balíčka, prípadne aj s patričnou cestou, napríklad pre nainštalovanie balíčka s Operou, zo súboru v aktuálnom adresári treba zadať:

dpkg -i opera_9.50-1983.gcc4-shared-qt3_x86_64.deb

Po zadaní tohoto príkazu dpkg najprv z balíčka vytiahne riadiace súbory balíčkovacieho systému a skontroluje, či v systéme už nie je nainštalovaná iná verzia tohoto balíčka, ak je, spustí skript prerm starého balíčka. Potom vykoná skript preinst z nového balíčka. Oba tieto skripty sú (môžu byť) sú časťou balíčka a slúžia na predodinštalačnú a predinštalačnú prípravu programu (napríklad zastavenie démon a pod.). Ak tieto súbory v balíčku nie sú, nič sa nedeje a proces inštalácie pokračuje. Po vykonaní prípravných skriptov dpkg rozbalí nové súbory a súčasne zálohuje staré, aby ich pri výskyte chyby mohol obnoviť. Ak je v systéme iná verzia tohoto balíčka, pred inštaláciou ešte spustí skript postrm starého balíčka. Nakoniec nakonfiguruje novonainštalovaný balíček.

Pre prispôsobenie procesu inštalácie balíčka môžete použiť viaceré konfiguračné voľby. Začnem, napríklad, voľbou --ignore-depends, ktorá prikazuje ignorovať kontrolu závislosti na zadaných balíčkoch (--ignore-depends=balíček,...). Inými užitočnými voľbami sú --force-niečo a --refuse-niečo. Robia presne to, čo znamenajú slová force a refuse, čiže vynútiť niečo, respektíve odoprieť niečo. A to niečo môže byť jedna z nasledujúcich vecí:

  • all: zapína (vypína) všetky vynucovacie voľby;
  • depends: prepína chybové správy závislostí na varovania (čo umožňuje nainštalovanie);
  • depends-version: prepína kontrolu čísla verzie pri kontrole závislosti;
  • confnew: ak bol konfiguračný súbor zmenený, vždy nainštaluj novú verziu;
  • confold: naopak, ak bol konfiguračný súbor zmenený, vždy ponechaj pôvodnú verziu;
  • architecture: nainštaluje balíček, hoci je vytvorený pre inú architektúru.

Tento výpis --force volieb nie je kompletný, ale úplný výpis si môžete dať zobraziť pomocou voľba --force-help:

dpkg --force-help

Odstraňovanie balíčkov

Pomocu dpkg môžete zo systému balíčky aj odstraňovať. Odstraňovanie balíčkov v Debiane má dva stupne. Pri prvom stupni sú odstránené programové súbory, ale konfiguračné súbory sú ponechané. Ak sa teda niekedy neskôr rozhodnete balíček znova nainštalovať, po jeho nainštalovaní je hneď nakonfigurovaný a pripravený na použitie. Druhý stupeň odstraňuje aj konfiguračné súbory, takže je zo systému odstránené všetko, čo do neho bolo inštaláciou pridané (pozor, niektoré programy vytvárajú súbory dodatočne za behu, a tie môžu v systéme ostávať aj po úplnom odinštalovaní).

Pre odinštalovanie s ponechaním konfiguračných súborov (konfiguračné súbory sú tie, ktoré sú uvedené v riadiacom súbore debian/conffiles balíčka) slúži akcia --remove (skrátene -r), nasledovaná menom balíčka, opakujem balíčka, už nie súboru, napríklad:

dpkg --remove opera

Pre úplné odstránenie balíčka, vrátane konfiguračných súborov slúži akcia --purge (skrátene -P):

dpkg --purge opera 

Pre odinštalácie je tiež možné použiť rôzne konfiguračné voľby, z ktorých spomeniem voľbu  --auto-deconfigure (skrátene -B), ktorá sa postará o to, že budú odinštalované aj balíčky, ktoré na nami odinštalovavávanom balíčku závisia. V opačnom prípade tieto balíčky ostanú v systéme, ale ich funkčnosť je minimálne otázna.

Správa balíčkov

Spomínal som, že pomocou dpkg môžete aj spravovať balíčky v systéme. Jeho možnosti použitia sú rozsiahle, a tak sa pokúsim vypichnúť tie, ktoré môžu byť pre Vás užitočné.

Prvá vec, ktorú považujem za užitočnú, je hľadanie balíčkov. Pomocou akcie --list (skrátene -l) dostanete zoznam balíčkov, ktoré vyhovujú vyhľadávaciemu vzoru, nainštalovaných v systéme:

dpkg --list opera

Pri vyhľadávaní môžete použiť aj zástupné znaky, nasledujúci príklad vypíše všetky balíčky, ktorých meno začína na openoff (výstup som skrátil):

dpkg -l "openoff*"
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Názov                       Verzia                       Popis
+++-============================-============================-======================================
ii  openoffice.org               1:2.4.0-5                    OpenOffice.org Office suite
un  openoffice.org-1.9.125       <žiadna>                    (popis nie je k dispozícii)
ii  openoffice.org-base          1:2.4.0-5                    OpenOffice.org office suite - database
ii  openoffice.org-base-core     1:2.4.0-5                    OpenOffice.org office suite -- libdba
un  openoffice.org-bin           <žiadna>                    (popis nie je k dispozícii) 

V prvých troch stĺpcoch sú uvedené stavové informácie o danom balíčku, ktoré popíšem neskôr. Inou úlohou je zistenie stavu nejakého balíčka. Tu pomôže akcia --status (skrátene -s), ktorá vypíše stav uvedeného balíčka (napr. inštalovaný, neinštalovaný...) spolu s krátkym popisom:

dpkg --status opera

Nástroj dpkg poskytuje aj možnosti pre prehľadávanie obsahu balíčkov. Pomocou akcie --listfiles  (skrátene -L) si môžete nechať zobraziť všetky súbory, ktoré sú obsiahnuté v balíčku (tiež skrátené):

dpkg -L opera
/.
/usr
/usr/share
/usr/share/opera
/usr/share/opera/locale
/usr/share/opera/locale/pl
/usr/share/opera/locale/pl/license.txt

A načo je to dobré? napríklad, nie raz sa mi stalo, že som nainštaloval program a potom som ho nevedel nájsť v menu. Tak jednoducho spustím:

dpkg -L opera|grep menu
/usr/share/opera/ini/standard_menu.ini
/usr/share/menu
/usr/share/menu/opera 

Čím sa mi vypíšu informácie o menu. Prvý vypísaný súbor je menu v Opere, ale druhé dva popisujú kam si opera nainštalovala súbor s popisom položky menu. Potom stačí

cat /usr/share/menu/opera

a dočítam sa, že je v sekcii "Aplikácie -> Sieť -> Prehliadanie webu" menu Debian. Alebo naopak, môžete vyhľadať balíček, ktorému patrí príslušný súbor pomocu akcie --search (skrátene -S):

dpkg --search /usr/share/opera/locale/pl
opera: /usr/share/opera/locale/pl

Zálohovanie (klonovanie) inštalácie

Nie, nemám na mysli klonovanie obsahu diskov, ale prácu s balíčkovacím systémom. Pomocou dvoch nasledujúcich volieb si môžete jednoducho uložiť a potom obnoviť stavy balíčkov. Teda môžete pracovať s celým stavom balíčkovacieho systému. Zoznam nainštalovaných balíčkov systému na štandardný výstup vypíše akcia --get-selections:

dpkg --get-selections

Takto príkaz vypíše len nainštalované balíčky, ak pridáte vyhľadávací vzor, vypíše stav všetkých balíčkov, ktoré vyhovujú vzoru (skrátené):

dpkg --get-selections "openoffice*"
openoffice.org                                  install
openoffice.org-base                             install
openoffice.org-base-core                        install
openoffice.org-calc                             install
openoffice.org-common                           install
openoffice.org-core                             install
openoffice.org-draw                             install
openoffice.org-evolution                        purge

Výstup možno samozrejme presmerovať do súboru:

dpkg --get-selections > balicky.txt

a tento súbor možno použiť pre neskoršiu obnovu stavu nainštalovaných balíčkov, prípadne na nainštalovanie rovnakých balíčkov na viacerých strojoch pomocou voľba --set-selections:

dpkg --set-selections < balicky.txt 

Pred týmto príkazom je ešte dobré použi príkaz

dpkg --clear-selections

ktorý nastaví všetky balíčky, ktoré nie sú základnými balíčkami systému na odinštalovanie. Následné použitie príkazu --set-selections potom naozaj nastaví systém do želaného stavu. Pamätajte však na to, že posledné dva príkazy len nastavujú príznaky balíčkov v balíčkovacom systéme, ale samotné nič neinštalujú. Samotnú inštaláciu je potom potrebné vykonať pomocou nástrojov z vyššieho stupňa balíčkovacieho systému.

Prekonfigurovanie

Robili ste pokusy s nastavením nejakého programu a teraz nechce za nič na svete fungovať, respektíve fungovať správne? Nič si z toho nerobte, nie ste ani prvý a iste nie ani posledný. Jendoducho použite nástroj dpkg-reconfigure, ktorý vykoná poinštalačné nastavenie balíčka:

dpkg-reconfigure opera 

Toto nie je jediný nástroj, ktorý pracuje s dpkg, v systéme ich nájdete viacero. Pre motiváciu uvediem ich zoznam a manuálové stránky si prečítajte aj sami:

  • dpkg-source
  • dpkg-distaddfile
  • dpkg-deb
  • dpkg-genbuilddeps
  • dpkg-gensymbols
  • dpkg-buildpackage
  • dpkg-scansources
  • dpkg-shlibdeps
  • dpkg-trigger
  • dpkg-checkbuilddep
  • dpkg-depcheck
  • dpkg-genchanges
  • dpkg-scanpackages

  • dpkg-gencontrol
  • dpkg-architecture
  • dpkg-query
  • dpkg-split
  • dpkg-parsechangelog
  • dpkg-name 
 

Informácie o balíčkoch

dpkg si o dostupných balíčkoch uchováva niektoré užitočné údaje. Tieto informácie možno rozdeliť do troch tried: stavy, stavy výberu a príznaky.

Stavy balíčkov

  • not-installed - balíček nie je nainštalovaný;
  • config-files - v systéme ostali konfiguračné súbory;
  • half-installed - inštalácia balíčka začala, ale z nejakého dôvodu nebola dokončená;
  • unpacked - rozpakovaný balíček, ale nenakonfigurovaný;
  • half-configured - rozpakovaný balíček, konfigurácia začala, ale z nejakého dôvodu nebola dokončená;
  • installed - balíček je nainštalovaný a nakonfigurovaný.

Stavy výberu balíčkov

  • install - balíček je označený pre inštaláciu;
  • deinstall - balíček je vybratý pre odstránenie (okrem konfiguračných súborov);
  • purge - balíček je označený na odstránenie, vrátane odstránenia konfiguračných súborov.

Príznaky balíčkov

  • hold - takto označený balíček nie je spravovaný pomocou dpkg, ak to nie je vynútené voľbou --force-hold;
  • reinst-required - takto označený balíček je poškodený a vyžaduje preinštalovanie. nemôže byť odstránený, iba ka je zadaná voľba --force-remove-reinstreq.

Záver 

A to by mohlo byť zmojej strany o najnižšej vrstve balíčkovacieho systému v Debiane všetko. Nesnažil som sa podať tu vyčerpávajúci popis možností, skôr ukázať a nabudiť na ďalšie štúdium. Nabudúce sa pokúsim postúpiť vyššie a popísať nástroje rodiny apt.

Copyright © 2008 - 2012 Sprievodca dedinčana... Niektoré práva vyhradené.
Ak nie je uvedené inak, obsah podlieha licencii „Creative Commons Uveďte autora – Zachovajte licenciu 3.0 Unported

Nenasledovať tento odkaz, inak budete maž zakázaný prístup na stránku!