A FreeBSD ports adatbázisában jelenleg 19 ezer csomag található, ezek mindegyikére természetesen nincs szükségünk, s elsőképp érdemes feltelepíteni olyan csomagokat, amelyek megkönnyítik a csomagkezelést – mint folyamatot.
A ports adatbázis kezelése
A FreeBSD csomagkezelése eléggé rendhagyónak tekinthető, mivel alapvetően forrás alapú – vagyis a csomagok nagy részét le kell fordítanunk, ha használni szeretnénk – innen a port név, amely a FreeBSD alaprendszerre portolt alkalmazásokat jelenti. Természetesen létezik szinte az összes ports programnak bináris terjesztése, ezeket is használhatjuk, de a ports alapvetően a forrásból való fordításra készült, minden egyes könyvtárban van egy Makefile, amelyet fel tudunk használni a fordításhoz a klasszikus make használatával:
/usr/ports/ports-mgmt/portaudit]$ make
===> Vulnerability check disabled, database not found
===> Extracting for portaudit-0.5.12
===> Patching for portaudit-0.5.12
===> Configuring for portaudit-0.5.12
===> Building for portaudit-0.5.12
[root@freebsd:/usr/ports/ports-mgmt/portaudit]$ make install
===> Installing for portaudit-0.5.12
===> Generating temporary packing list
===> Checking if ports-mgmt/portaudit already installed
===> To check your installed ports for known vulnerabilities now, do:
/usr/local/sbin/portaudit -Fda
===> Compressing manual pages for portaudit-0.5.12
===> Registering installation for portaudit-0.5.12
[root@freebsd:/usr/ports/ports-mgmt/portaudit]$ make clean
===> Cleaning for portaudit-0.5.12
A művelet nem túl nehéz, de minek szenvedni, amikor használhatjuk erre a portupgrade programot is, amit már feltelepítettünk:
/usr/ports/ports-mgmt/portaudit]$ portinstall -i portsearch
---> Session started at: Fri, 08 Aug 2008 21:44:13 +0200
[Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... - 22 packages found (-1 +1) (...). done]
Install 'ports-mgmt/portsearch'? [yes]
[Gathering depends for ports-mgmt/portsearch done]
---> Fresh installation of ports-mgmt/portsearch started at: Fri, 08 Aug 2008 21:44:15 +0200
[...]
---> Listing the results (+:done / -:ignored / *:skipped / !:failed)
+ ports-mgmt/portsearch
---> Packages processed: 1 done, 0 ignored, 0 skipped and 0 failed
---> Session ended at: Fri, 08 Aug 2008 21:44:34 +0200 (consumed 00:00:20)
Gondolom már éppen felmerült a kérdés, hogy mivel tudunk keresni a 19 ezer csomag között… a válasz a portsearch, amely ezen probléma megoldására született, használata egyszerű, bár az első használat eltart egy ideig, ugyanis beindexeli a ports adatbázist:
/usr/ports/ports-mgmt/portaudit]$ portsearch -u -vv
Creating store
Previous store does not exist, creating from scratch
==> accessibility/accerciser
==> accessibility/at-poke
[...]
==> x11-wm/xmonad
==> x11-wm/xmonad-contrib
Amíg dolgozik, addig térjünk vissza a make parancs segítségével feltelepített portsaudit programra, amely a feltelepített csomagok biztonsági hibáit figyeli napi rendszerességgel, és erről a napi összefoglaló levélben olvashatunk, amelyet a root felhasználó kap meg az éjjel három órakor induló karbantartási műveletek eredményeképp. A portaudit másik feladata, hogy egy program feltelepítése előtt figyelmeztessen annak – még nem javított – biztonsági hibájára.
Ha a portsearch végzett a csomagok feldolgozásával, akkor nézzük, mire képes (a részletes használati útmutató a program man oldalán):
/usr/ports/ports-mgmt/portaudit]$ portsearch -n apache-2.2
Port: apache-2.2.9
Path: /usr/ports/www/apache22
Info: Version 2.2 of Apache web server with prefork MPM.
Maint: clement@FreeBSD.org
B-deps: autoconf-2.61_2 autoconf-wrapper-20071109 expat-2.0.1 libiconv-1.11_1 libtool-1.5.26 m4-1.4.11,1 perl-5.8.8_1
R-deps: expat-2.0.1 libiconv-1.11_1 perl-5.8.8_1
WWW: http://httpd.apache.org/
1 ports
A kapott eredmény minden lényeges információt megad, ami zavaró lehet, az a B-deps és az R-deps, amelyek a ports két függőségét mutatja:
- a B-deps azokat a csomagokat, amelyek a fordításhoz szükségesek
- az R-deps pedig azokat, amelyek a program futásakor szükségesek
A leglényegesebb dolog mindig a port neve, amely jelen esetben az apache-2.2.9, ezt a nevet megadva tudjuk feltelepíteni.