Hlavní navigace

FreeBSD porty - Ako na to

3. 1. 2005
Doba čtení: 4 minuty

Sdílet

Už ste sa niekedy stretli so situáciou, že sa v strome FreeBSD portov nenachádzala váša obľúbená aplikácia? Alebo, že sa tam nachádzala, ale bola už stará? Čo tak portnúť niečo do FBSD?

FreeBSD spravovací systém balíčkov – portov – sa považuje za jeden z najlepších medzi unix-like systémami. Je to systém mnohých adresárov v /usr/ports, ktoré obsahujú presne upravené Makefily, podľa ktorých sa budú kompilovať zdrojáky jednotlivých aplikácií. Okrem portov FreeBSD samozrejme prichádza aj s predkompilovanými packagemi. Snáď všetky významné aplikácie, ktoré ľudia používajú, sú portovanie do FreeBSD systému, no občas sa stane, že sa v ňom niečo nenájde. Možno sa už niekto z vás zaujímal, či je možné nejako prispieť k vývoju portov. To, samozrejme vo FreeBSD, možné je. Každý môže prispieť do tohto systému novým portom, alebo sa uchytiť takého, ktorý bol bývalým maintainerom zabudnutý. Na to netreba žiadne špeciálne práva k prístupu k cvs.

Takže ak sa naozaj zaujímate o portovanie balíčkov do FreeBSD, ste na správnom mieste :). Nebude to tu nič extra detailné, čiže ak sa chcete dozvedieť viac, preklikajte sa z freebsd.org na porter's handbook, kde je presnejší popis spôsobu portovania.

Najzákladnejším a najdôležitejším faktom úspešného vytvorenia nového portu je tvorba tzv. Makefile. Tento súbor je hlavným riadiacim činiteľom pri kompilácii a inštalácii portu. V podstate to je súbor jazyka používaného utilitou make(1) a má podobnú syntax ako shell skript, ktorý obsahuje mnoho premenných.

Minimálny Makefile vyzerá približne takto:

# New ports collection makefile for:   test
# Date created:        20 December 2004
# Whom:                somebody
#
# $FreeBSD$
#

PORTNAME=      test
PORTVERSION=   1.1a
CATEGORIES=    games
MASTER_SITES=  ftp://somewhere.org/files/test

MAINTAINER=    somebody@somewhere.org
COMMENT=       Testing port

MAN1=          test.1
MANCOMPRESSED= yes
USE_IMAKE=     yes

.include <bsd.port.mk>

riadok $FreeBSD$ sa upraví v čase, kedy bude váš port commitnutý do cvs, čiže o tento riadok sa vôbec nemusíte starať.

Každý port by mal obsahovať súbor s názvom „pkg-descr“. Tento súbor v sebe obsahuje dlhší popis toho, čo konkrétny balíček robí. Nie je to však manuál čiže z neho nerobte siahodlhý zoznam funkcií. Mal by v sebe tiež obsahovať link na homepage projektu, ktorý býva spomenutý takmer na konci a má mať prefix „WWW:“, aby všetky automatické veci fungovali tak, ako majú. A na samotnom konci maintainerov e-mail.

This is a port of test, in which a cat chases
a poor mouse all over the screen.
 :
(etc.)

WWW: http://www.oneko.org/

- Somebody
somebody@somewhere.org

Ďalším dôležitým súborom, ktorý by mal byt obsiahnutý v porte, je „pkg-plist“. Je to zoznam všetkých filov, ktoré port nainštaluje. Niekedy sa nazýva aj „packing list“. Cesty v ňom sú relatívne k inštalačnej ceste, obyčajne /usr/local alebo /usr/X11R6. Ak používate MANn premenné, tieto by tam nemali byť obsiahnuté. Ak port vytvára nejaké adresáre, tie by mali byt listované za spojením „@dirrm“, aby pri odinštalovaní boli správne odstránené. Tiež sa osvedčuje uchovávať tento súbor abecedne usporiadaný, pretože to môže celkom dopomôcť pri upgradovaní samotného portu. Je dôležité, aby tento súbor neobsahoval veci, ktoré port nenainštaluje, a naopak, aby obsahoval všetko, čo port nainštaluje.

bin/test
lib/X11/app-defaults/test
lib/X11/test/cat1.xpm
lib/X11/test/cat2.xpm
lib/X11/test/mouse.xpm
@dirrm lib/X11/test

Ak port inštaluje iba zopár filov a chcete sa vyhnúť vytváraniu pkg-plistu, je možné tieto súbory zapísať priamo do Makefile-u pomocou premenných PLIST_FILES a PLIST_DIRS. Samozrejme, že keď port nevytvorí žiadne adresáre, PLIST_DIRS môže zostať unsetnutý, resp. prázdny.

PLIST_FILES=    bin/test \
                lib/X11/app-defaults/test \
                lib/X11/test/cat1.xpm \
                lib/X11/test/cat2.xpm \
                lib/X11/test/mouse.xpm
PLIST_DIRS=     lib/X11/test

Ďalším krokom k vytvoreniu nového portu je downloadnutie samotného source balíčka a jeho umiestnenie do /usr/ports/dis­tfiles. Toto je pomerne dôležité, pretože musíme vytvoriť súbor s menom „distinfo“, ktory obsahuje md5 sumy pre kontrolu správnosti. Ak sme takto urobili, napíšeme uz len „make makesum“ a súbor distinfo sa nám sám vygeneruje.

root_podpora

MD5 (misc/test0.52.tar.gz) = eba528fa8613dc5bfb0615a69c11f053
SIZE (apache2/test0.52.tar.gz) = 6918995 

Pokiaľ sme všetky tieto kroky splnili, už nám len zostava odskúšanie samotného portu. Bude to spočívať v niekoľkých krokoch, ktoré proste spravíte, a ak všetko dopadne tak, ako ste predpokladali, úspešne sa vám podaril váš cieľ. Pozorujte, či náhodou nedostávate nejaké upozornenia, ak áno, je potrebné, aby ste ich eliminovali.

  1. make install
  2. make package
  3. make deinstall
  4. pkg_add package-name
  5. make deinstall
  6. make reinstall
  7. make package

Tak, a teraz ste šťastní, že sa vám podarilo portnut niečo do FreeBSD. Ale to, že sa vám to podarilo, zatiaľ žiadny iný užívateľ tohto výborného systému nemôže nijako využiť a je teda potrebné submitnut váš port do hlavného stromu portov. Toto sa robí cez send-pr(1). Pre bližšie info si pozrite porter's handbook (/usr/ports/Mk/bsd­.port.mk).

Byl pro vás článek přínosný?