Instalace a update software ve FreeBSD


1. Porty, databáze balíčků
2. Aktualizace stromu portů
3. Instalace balíčků
4. Odinstalace balíčků
5. Zjistění verzí balíčků
6. Security a update
7. Aktualizace balíčků
8. Řesení problémů
1. Kolekce portů a balíků FreeBSD nabízí uživatelům a správcům jednoduchý způsob instalace aplikací. Strom portů je umístěn v adresáři /usr/ports/… a obsahuje zdrojové kody jednotlivých aplikací. Překlad aplikace je zjednodušen na pouhé stažení portu, jeho rozbalení a napsání make v adresáři portu. Makefile každého portu automaticky stáhne zdrojové texty dané aplikace z lokálního disku, CD-ROM nebo přes FTP, rozbalí je, aplikuje potřebné změny a přeloží. Pokud vše proběhne správně, make install aplikaci nainstaluje a zaregistruje v systému balíků. Balíčky a jejich závislosti jsou udržované pomocí databáze pkgdb. Tato databáze obsahuje přehled o všech nainstalovaných aplikacích a sdílených balíčcích. Nachádzí sa v adresáři /var/db/pkg. Databázi tvoří soubor pkg.db a adresárová struktura s podadresářema nazvanýma podle jednotlivých balíků, kde jsou zapsané všechny údaje o instalovaných balících a závislostech.
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html
http://www.freebsd.cz/cs/ports/index.html
/etc/make.conf
SUP_UPDATE=yes
SUP=/usr/local/bin/cvsup
SUPFLAGS=-g -L 1 -z
SUPHOST=cvsup.cz.FreeBSD.org
SUPFILE=/usr/sup/stable-supfile
PORTSSUPFILE=/usr/sup/ports-supfile
DOCSUPFILE=/usr/sup/doc-supfile
2. Strom portů se udržuje v aktuálním stavu utilitou CVSUP.
Instalace cvsup v „text mode“:
pkg_add -r cvsup-without-gui
nebo
cd /usr/ports/net/cvsup-without-gui
make install clean
Synchronizaci port collection provedeme( proti CVSup server)
/usr/local/bin/cvsup -g -L 2 -h cvsup.cz.freebsd.org /usr/share/examples/cvsup/ports-supfile
Automatické aktualizace se spoustějí z cronu (doplnit do /etc/crontab).
Aktuální databázi balíků si systém stáhne po zadání pkgdb -f
3. Balíček si přidáme pomocí příkazu pkg_add nebo příkazem make install v patřičném adresáři stromu portů.
Syntaxe příkazu pkg_add:
pkg_add -r název_balíku
Parametr -r znamená, že se má hledat jakýkoliv balík s příbuzným názvem. V opačném případe je nutné zadat přesný název balíku s číslem verze. Přes FTP se stáhne požadovaný balíček. Cesta k FTP mirroru s balíčky je v systému nadefinovaná ako proměnná PACKAGESITE a je možné ji měnit pomocí přikazu setenv.
setenv PACKAGESITE ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/
Druhou možností je instalace software ze stromu portů
/usr/ports – strom s jednotlivými porty
/usr/ports/Index.db – seznam portů
/usr/ports/…/nazev
make
make install
make clean
(make install clean)
Seznam instalovaných package zjistíme příkazem pkg_glob, případně find /var/db/pkg -mtime 5 -maxdepth 1 , zjistí, které porty byly nainstalovány za posledních 5 dní.

4. Odinstalace balíku a vyřazení z databáze:
pkg_delete -x název_balíku
Přepínač -x znamená odinstalaci všech balíků s názvem obsahujícím uvedený řetězec.
Dalším užitečným programem portupgrade je pkg_deinstall. Klasický pkg_delete neumí odinstalovat program včetně jeho závislostí. Pomocí pkg_deinstall -rR balik tu možnost máte.
Jestliže máte nainstalovaný portupgrade, může se vám hodit i port pkg_cutleaves nacházející se v sysutils. Jedná se o perlový skript, který pomáhá odstranit ze systému odpadlé programy
Příkaz portsclean umí vyčistit porty od work adresářů, smazat nepotřebné tgz soubory z /usr/ports/distfiles nebo je smazat přímo všechny.
Druhou možností odinstalace nebo reinstalace software ze stromu portů
make deinstall
make reinstall

5. Obsah databáze balíčků si můžeme vypsat pomocí příkazů:
pkg_info
pkg_info | grep nazev
pkg_info -W
soubor – zjistí pro daný soubor (jeho plné jméno včetně cesty) balík, ke kterému patří.
6. Jestli jsou naistalované balíčky aktuální zjistíme příkazem
pkg_version
Vypíse nám nainstalované balíčky a symboly < nebo = označí jestli jsou aktuální
Dalším způsobem jak zjistit verze nainstalovaných balíčků je příkaz portversion
Nejdříve vytvoříme index
/usr/ports
portsdb -u (portsdb -Uu)
pak
portversion -l „<“
nebo
portversion -v | grep „<„
Další utilitou pro zjištění aktuálnosti balíčků a jejich zranitelnosti je portaudit
Instalace:
cd /usr/ports/security/portaudit
make install clean

Po instalaci vám portaudit nainstaluje skript do /usr/local/etc/periodic/security. Díky tomuto skriptu vám periodic – položka v /etc/cron zahrne zmíněný skript do security run output.
7. Aktualizace balíčků se provádí příkazem portupgrade. Nejprve je třeba zaktualizovat strom portů přes CVSUP a databázi portů přes portsdb -Uu. Samotná aktualizace balíčku se provádí např. následně:
portupgrade apache
Pokud chceme aktualizovat všechny aplikace použijeme příkaz:
cd /usr/ports
portupgrade -a
případne
portupgrade -arR
kde si portupgrade pri kompiláci najdřív zjistí závislosti kompiláce (build dependencies, přepínač -R) a závislostí pro běh (přepínač -r).
V případe, že nechceme najednou zkompilovat všechno, ale chceme stáhnout všechny potřebné zdrojáky včetně zdrojáků závislých komponent , použijeme příkaz
portupgrade -aFrR
který nejdřív stáhne zdrojáky do /usr/ports/distfiles (-F je Fetch). A následný příkaz
portupgrade -arR
se již nezdržuje a bere zdrojáky přímo z distfiles, což proces upgradování zrychlí. Prepínač -n je možné použít pro simulaci upgrade.
8. Jednou z nevýhod balíčkovacího systému je to, že při ručních upgradech a instalacích se ne vždy správně upraví všechny závislosti. Pak se tedy objeví závislosti na balíčcích, které v systému nejsou (obvykle jsou v jiné verzi), a ty se pak obtížně dohledávají. Pokud vše funguje, nemusí takový stav vadit. Jednoduchou nápravu lze provést příkazem v režimu manuálních oprav. Tento nástroj detekuje vadné závislosti, a nabídne vám akci, co s nimi provést. V ideálním případě je k dispozici jiná verze, na kterou můžete závislost změnit (jedná se pravděpodobně o balík, se kterým závislý software ve skutečnosti funguje). Pokud ale k dispozici není, můžete novou závislost zadat sami, nebo ji jednoduše smazat.
pkgdb -F
V případě že se vám nepodaří opravit závislosti příkazem pkgdb –F nebo máte koruptovanou databázi zkuste /usr/local/sbin/pkgdb -fu nebo se dá se smazat databáze /var/db/pkg/pkgdb.db a stejným příkazem ji vytvořit znovu.
,