PC-BSD: administrace a instalace balíčků

13. 5. 2013
Doba čtení: 6 minut

Sdílet

V druhém díle našeho seriálu o operačním systému PC-BSD se budeme společně zabývat dalšími dvěma způsoby administrace a instalace balíčků prostřednictvím binárních balíčků a FreeBSD portů. Ty připomínají třeba balíčkovacího správce equo ze Sabayonu nebo velmi rozšířený aptitude z Debianu či Ubuntu.

 Dalším způsobem instalace a manipulace s balíčky je systém převzatý z FreeBSD – PKGNG. Jedná se o novější a jednodušší náhradu předchozího systému. Ten instaluje binární balíčky podobným způsobem, jako třeba equo ze Sabayonu nebo aptitude z Debianu. Pro instalaci používá tento systém repozitáře, které je možné nastavit úpravou souboru /usr/local/etc/pkg.conf. Jeho výchozí obsah vypadá např. takto:

packagesite: http://getmirror.PC-BSD.org/packages/9.1-RELEASE/amd64
HTTP_MIRROR: http
PUBKEY: /usr/local/etc/pkg-pubkey.cert
PKG_CACHEDIR: /usr/local/tmp

Další možností nastavení repozitáře je změna/vytvoření proměnné prostředí PACKAGESITE.

Tento správce balíčků má velmi mnoho možností a parametrů a nemělo by smysl si zde všechny vyjmenovávat. Proto opět uvedu jednoduchý příklad a odkážu na příručku FreeBSD 9.1 nebo web MeBSD.com.

Lokální nápovědu lze vyvolat příkazem:

~% pkg help akce (např. delete, info, install, search atd.)

Pro srovnání provedu pomocí tohoto správce instalaci editoru Pinta. Jako první si ověříme, že daný balíček je k dispozici a můžeme k tomu využít hned několik parametrů:

~% pkg search pinta
pinta-1.4                      Simple Gtk# Paint Program

~% pkg search -s pinta
pinta-1.4 flat size is: 2 MB
pinta-1.4 package size is: 589 kB

~% pkg search -f pinta
Name           : pinta
Version        : 1.4
Origin         : graphics/pinta
Prefix         : /usr/local
Categories     : graphics
Licenses       : MIT
Maintainer     : mono@FreeBSD.org
WWW            : http://pinta-project.com/
Comment        : Simple Gtk# Paint Program
Flat size      : 2 MB
Pkg size       : 589 kB
Description    :
Pinta is a drawing/editing program modeled after Paint.NET. Its goal is to
provide a simplified alternative to GIMP for casual users.

WWW: http://pinta-project.com/

~% pkg search -o pinta
pinta-1.4: graphics/pinta

~% pkg search -p pinta
pinta-1.4: /usr/local

Instalace se provede příkazem:

~% sudo pkg install pinta
Password:
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
The following packages will be installed:

    Installing mono: 3.0.3_1
    Installing gtk-sharp: 2.12.10_1
    Installing mono-addins: 0.6.2
    Installing pinta: 1.4

The installation will require 235 MB more space

54 MB to be downloaded

Proceed with installing packages [y/N]: y
mono-3.0.3_1.txz            100%   51MB 945.3KB/s   1.3MB/s   00:55
gtk-sharp-2.12.10_1.txz     100% 2833KB 944.5KB/s 463.4KB/s   00:03
mono-addins-0.6.2.txz       100%  378KB 377.7KB/s 377.7KB/s   00:01
pinta-1.4.txz               100%  590KB 589.8KB/s 589.8KB/s   00:01
Checking integrity... done
Installing mono-3.0.3_1... done
Installing gtk-sharp-2.12.10_1... done
Installing mono-addins-0.6.2... done
Installing pinta-1.4... done

Jak je vidět z výpisu, stahovaný balík má 54 MB, tedy cca polovinu oproti PBI, a celková velikost včetně instalovaných závislostí je 235 MB, což je ve srovnání s PBI cca 47 %. Takto instalované aplikace se automaticky objeví v hlavním menu GNOME a je možné je odtud spouštět.

Vzhledem k tomu, že tento způsob instaluje binární balíčky, je instalace po stažení velmi rychlá. Proto bude nejspíš využíván nejčastěji, pokud nebude nezbytné využít PBI nebo další způsob, kterým jsou porty.

Tato správa balíčků pochází z FreeBSD a automaticky přebírá všechny porty z jeho aktuální verze. Instalace aplikací z portů je velmi odlišná od výše uvedených možností. Jedná se totiž o instalaci ze zdrojových kódů, které je nutné kompilovat. Z toho vyplývá, že při instalaci větších aplikací může docházet k výraznému zatížení stroje a instalace může trvat delší dobu. Na druhou stranu tento způsob instalace umožňuje konfigurovat u instalované aplikace spoustu věcí, pokud je to nutné a vhodné. Výhodou portů je, že je v nich velmi rozsáhlá sada aplikací (přes 24 000 položek).

Jako první je nutné sestavu portů stáhnout a rozbalit na lokální systém. To je možné udělat dvěma způsoby. Prvním je pomocí Ovládacího panelu PC-BSD → Správce systému. Na záložce Úlohy jsou dvě položky – Stáhnout zdrojový kód Systému a Fetch Ports Tree. Druhou možností je spustit příkaz

~% sudo portsnap fetch extract update

Stažení balíku není žádný velký problém, vzhledem k jeho velikosti cca 68 MB. Rozbalení na lokální systém vzhledem k počtu souborů už ale nějakou dobu trvá. Celý strom portů se rozbalí do adresáře /usr/ports, kde jsou další podadresáře s tématickými kategoriemi a v nich potom jednotlivé aplikace.

Nad stromem portů je definováno jednoduché vyhledávání, ke kterému slouží dva příkazy:

~% cd /usr/ports
~% make quicksearch name=pinta
Port:   pinta-1.4
Path:   /usr/ports/graphics/pinta
Info:   Simple Gtk# Paint Program

# cd /usr/ports
# make search name=pinta
Port:   pinta-1.4
Path:   /usr/ports/graphics/pinta
Info:   Simple Gtk# Paint Program
Maint:  mono@FreeBSD.org
B-deps: atk-2.0.1 bitstream-vera-1.10_5 cairo-1.10.2_5,2 compositeproto-0.4.2
cups-client-1.5.4_1 damageproto-1.2.1 desktop-file-utils-0.18
encodings-1.0.4,1 expat-2.0.1_2 fixesproto-5.0 font-bh-ttf-1.0.3
font-misc-ethiopic-1.0.3 font-misc-meltho-1.0.3 font-util-1.2.0
fontconfig-2.9.0,1 freetype2-2.4.11 gamin-0.1.10_4 gdk-pixbuf-2.23.5_3
gettext-0.18.1.1 gio-fam-backend-2.28.8_1 glib-2.28.8_5 gmake-3.82_1
gobject-introspection-0.10.8_3 gtk-2.24.6_2 gtk-sharp-2.12.10_1
gtk-update-icon-cache-2.24.6_1 hicolor- icon-theme-0.12 inputproto-2.0.2
intltool-0.41.1 jasper- 1.900.1_10 jbigkit-1.6 jpeg-8_4 kbproto-1.0.5
libICE- 1.0.7,1 libSM-1.2.0,1 libX11-1.4.4,1 libXau-1.0.6 libXcomposite-0.4.3,1
libXcursor-1.1.12 libXdamage-1.1.3 libXdmcp-1.1.0 libXext-1.3.0_1,1
libXfixes-5.0 libXft-   2.1.14 libXi-1.4.5,1 libXinerama-1.1.1,1
libXrandr-1.3.2 libXrender-0.9.6 libXt-1.1.1,1 libffi-3.0.11 libfontenc-1.1.0
libglade2-2.6.4_5 libiconv-1.14 libpthread-stubs-0.3_3 libxcb-1.7
libxml2-2.7.8_5 mkfontdir-1.0.6 mkfontscale-1.0.9 mono-3.0.3_1
mono-addins-0.6.2 p5-XML-LibXML-2.0004,1 p5-XML-NamespaceSupport-1.11
p5-XML-Parser-2.41_1 p5-XML-SAX-0.99 p5-XML-SAX-Base-1.08 pango-1.28.4_1
pcre-8.32 perl-5.14.2_2 pixman-0.24.2 pkgconf-0.8.9 png-1.5.14
python27-2.7.3_6 randrproto-1.3.2 renderproto-0.11.1 shared-mime-info-1.0_2
tiff-4.0.3 xcb-util-0.3.9_1,1 xcb-util-renderutil-0.3.8 xextproto-7.2.0
xineramaproto-1.2.1 xmlcatmgr-2.2 xorg-fonts-truetype-7.5.1 xproto-7.0.22

R-deps: atk-2.0.1 bitstream-vera-1.10_5 cairo-1.10.2_5,2 compositeproto-0.4.2
 cups-  client-1.5.4_1 damageproto-1.2.1 desktop-file-utils-0.18
encodings-1.0.4,1 expat-2.0.1_2 fixesproto-5.0 font-bh-ttf-1.0.3
font-misc-ethiopic-1.0.3 font-misc-meltho-1.0.3 font-util-1.2.0
fontconfig-2.9.0,1 freetype2-2.4.11 gamin-0.1.10_4 gdk-pixbuf-2.23.5_3
gettext-0.18.1.1 gio-fam-backend-2.28.8_1 glib-2.28.8_5
gobject-introspection-  0.10.8_3 gtk-2.24.6_2 gtk-sharp-2.12.10_1
gtk-update-icon-cache-2.24.6_1 hicolor-icon-theme-0.12 inputproto-2.0.2
jasper-1.900.1_10 jbigkit-1.6 jpeg-8_4 kbproto-1.0.5 libICE-1.0.7,1
libSM-1.2.0,1 libX11-1.4.4,1 libXau-1.0.6 libXcomposite-0.4.3,1 libXcursor-1.1.12
libXdamage-1.1.3 libXdmcp-1.1.0 libXext-1.3.0_1,1 libXfixes-5.0
libXft-2.1.14 libXi-1.4.5,1 libXinerama-1.1.1,1 libXrandr-1.3.2
libXrender-0.9.6 libXt-1.1.1,1 libffi-3.0.11 libfontenc-1.1.0
libglade2-2.6.4_5 libiconv-1.14 libpthread-stubs-0.3_3 libxcb-1.7
libxml2-2.7.8_5 mkfontdir-1.0.6 mkfontscale-1.0.9 mono-3.0.3_1
mono-addins-0.6.2 p5-XML-LibXML-2.0004,1 p5-XML-NamespaceSupport-1.11
p5-XML-SAX-0.99 p5-XML-SAX-Base-1.08 pango-1.28.4_1 pcre-8.32 perl-5.14.2_2
pixman-0.24.2 pkgconf-0.8.9 png-1.5.14 python27-2.7.3_6 randrproto-1.3.2
renderproto-0.11.1 shared-mime-info-1.0_2 tiff-4.0.3 xcb-util-0.3.9_1,1
xcb-util-renderutil-0.3.8 xextproto-7.2.0 xineramaproto-1.2.1
xmlcatmgr-2.2 xorg-fonts-truetype-7.5.1 xproto-7.0.22

WWW:    http://pinta-project.com/

Hledání je samozřejmě možné i pomocí běžného systémového příkazu:

~% whereis pinta
pinta: /usr/ports/graphics/pinta

Instalaci pomocí portů opět předvedu na jednoduchém příkladě a to sice MPD – serveru pro přehrávání hudebních souborů. Ten je v portech v adresáři /usr/ports/audio/musicpd. Obsah tohoto adresáře je vidět na následujícím obrázku. Jsou v něm čtyři soubory a jeden podadresář.

Soubor Makefile je poměrně obsáhlý a slouží k vlastnímu překladu. Ještě ho doplňují soubory z adresáře files, kde jsou různé patche, které slouží k tomu, aby bylo možné danou aplikaci instalovat a spouštět na systému FreeBSD. Obsah ostatních tří souborů je v přílohách  distinfo.txt, pkg-descr.txt a pkg-plist.txt.

Instalace se nejlépe spustí příkazem pro konfiguraci:

~% make configure

Objeví se formulář jako na obrázku. V něm je pak možné nastavit, s jakými parametry se bude aplikace kompilovat. Po nastavení požadovaných parametrů se stiskem OK spustí konfigurace a stahování potřebných balíčků. Pokud má instalovaná aplikace nějaké závislosti, které nejsou zatím instalované, bude se stahovat více balíčků. Je také možné, že se objeví více konfiguračních formulářů. Během konfigurace se v adresáři aplikace vytvoří podadresář work, který obsahuje zdrojové soubory aplikace. Všechny komprimované balíčky, které se stáhnou během konfigurace, se ukládají do adresáře /usr/ports/disfiles. Pokud konfigurace skončí úspěšně, je možné provést instalaci příkazem

~% make install, popř. make install clean

Příkaz clean zajistí smazání adresáře work se zdrojovými soubory aplikace. Obsah adresáře distfiles se tím nezmění. Příkaz je možné zjednodušit a zadat rovnou s automatickou konfigurací:

~% make install clean

Po úspěšné instalaci je možné ověřit přítomnost nového balíku pomocí příkazů

bitcoin_skoleni

~% pkg info -g music\*
musicpd-0.17.2_2               A remote-controllable music daemon

nebo

~% pkg info -gf music\*
Name           : musicpd
Version        : 0.17.2_2
Origin         : audio/musicpd
Prefix         : /usr/local
Categories     : ipv6 audio
Licenses       : GPLv2
Maintainer     : crees@FreeBSD.org
WWW            : http://www.musicpd.org/
Comment        : A remote-controllable music daemon
Options        :
    AAC: off
    AO: off
    ARCHIVE: off
    AVAHI: off
    CUE: off
    FFMPEG: on
    FLAC: on
    HTTPD: off
    ID3TAG: on
    IPV6: on
    JACK: off
    LAME: off
    LASTFM: off
    MIKMOD: off
    MMS: off
    MODPLUG: off
    MUSEPACK: off
    PULSEAUDIO: off
    SAMPLERATE: off
    SHOUTCAST: off
    SNDFILE: on
    TREMOR: off
    VORBIS: on
    WAV: on
Flat size      : 473 kB
Description    :
Music Player Daemon (MPD) allows remote access for playing music (MP3, MP4, Ogg, Flac, and more) and    managing playlists.  The design focus is on integrating a computer into a stereo system that provides control   for     music playback over a local network.

WWW: http://www.musicpd.org/

V následujícím dílu dokončím kapitolu o administraci balíčků a zaměřím se na souborový systém ZFS.

Autor článku