Szükséges csomagok
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:
[root@freebsd:/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:
[root@freebsd:/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:
[root@freebsd:/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):
[root@freebsd:/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.