freebsd-update -r 9.2-RELEASE upgrade - cast 3, vlastni patche
Dan Lukes
dan at obluda.cz
Fri Mar 7 01:17:01 CET 2014
V nekterych pripadech jsou reakce oficialniho vyvojarskeho tymu velmi
jemne reseno "nedostatecne vcasne".
Nekdy jsou to i chyby bezpecnostni, casteji ale funkcni, tykajic se
funkce neceho, co neni dostatecne v centru zajmu. Nekde jsou to chyby v
ovladani konkretniho hardwaru, nekdy chyby, ktere jsou zpusobile zkratit
realnou zivodnost hardwaru.
Jeste tragictejsi je situace u "feature request" - pokud neco
potrebujete a netrefite se nahodou do noty zadnemu z vyvojaru, tak to do
systemu proste nedostanete.
To vsechno vede k myslence vlastnich patchu jak v zdrojovem stromu
samotneho systemu tak ve stromu portu.
E) Vlastni patche
Cilem je vytvorit takovy system, ktery nebude branit udrzbe zdrojovych
stromu beznym zpusobem, a tim se mysli nejen pouziti 'svn' ale i to aby
se update provadel stejnym prikazem jako "normalne".
Resenim je umistit do /usr/src a /usr/ports soubor BSDMake
Ten ma pri spousteni 'make' prednost pred Makefile a tak ho lze pouzit
jako "hook", ktery nam umozni vkladat operace podle potreby.
Moje jsou tady:
> http://www.freebsd.cz/~dan/usr::src::BSDmakefile
> http://www.freebsd.cz/~dan/usr::ports::BSDmakefile
Oba potrebuji seznam patchu, ktere maji aplikovat. Ty ja mam v
/etc/make.conf a vypada to takto:
> LOCAL_SRC_PATCHES =/usr/src/patch-OPENSSH-AUTH /usr/src/patch-ATAPICD /usr/src/patch-UHID
> LOCAL_SRC_PATCHES+=/usr/src/patch-LIBALIAS+NATD /usr/src/patch-ETC-PROFILE
> LOCAL_SRC_PATCHES+=/usr/src/patch-INSTALL /usr/src/patch-confGENERIC
> LOCAL_SRC_PATCHES+=/usr/src/patch-NAMED /usr/src/patch-EAPOL_TEST
> LOCAL_SRC_PATCHES+=/usr/src/patch-acpi-video /usr/src/patch-acpidump-TCPA
> LOCAL_SRC_PATCHES+=/usr/src/patch-MERGEMASTER /usr/src/patch-module-ixgbe /usr/src/patch-re
> LOCAL_SRC_PATCHES+=/usr/src/patch-sysinstall /usr/src/patch-du /usr/src/patch-CRYPT_BLF
> LOCAL_SRC_PATCHES+=/usr/src/patch-hddsecurity /usr/src/patch-usb-QUIRKS
> LOCAL_SRC_PATCHES+=/usr/src/patch-fs::nfsserver::nfs_nfsdserv.c /usr/src/patch-NOSVN
> LOCAL_SRC_PATCHES+=/usr/src/patch-ETC-NTP.CONF
>
> LOCAL_PORTS_PATCHES =/usr/ports/patch-OPENSSL /usr/ports/patch-libreoffice
Jednotlive patche najdete take na http://www.freebsd.cz/~dan/ ale co
ktery resi uz sem psat nebudu. V pripade zajmu tomu venuju samostatny mail.
F) Vlastni patche portu
To je neco jineho nez patche stromu portu popsane v bodu (E). Zde
nemluvime o zmenach souboru patricich do stromu portu, ale o pridani
vlastniho patche k nejakemu portu.
To je nastesti jednoduche. Kazdy port ma FreeBSD-specific patche v
podadresari files/
Takze pokud chcete pridat nejaky svuj, proste ho vlozite tam.
Z praktickych duvodu doporucuju dodrzovat nejakou vhodnou konvenci pri
pojmenovavani tech souboru tak, abyste je dokazali "oslovit" najednou -
treba kdyz je budete chtit nekam okopirovat.
Vsechny me patche ve stromu portu maji nazev zacinajici patch-DAN- nebo
patch-~DAN- (ta druha proto, ze nekdy si potrebuju byt jisty, ze se muj
patch aplikuje az jako posledni a ony se aplikuji abecedne podle nazvu
souboru).
G) Vlastni porty
Nekdy proste neni ve stromu portu ten port, ktery potrebujete. Treba vas
vlastni program.
Pro tyto pripady existuje /usr/ports/local ale jeho pouziti neni tak
trivialni jak by mohlo byt.
Do /etc/make.conf pridejte
> VALID_CATEGORIES=local
> .if ${.CURDIR} == /usr/ports
> SUBDIR+=local
> .endif
Do /usr/ports/local pridejte soubor Makefile vypadajici nejak takhle:
> COMMENT = Local ports
>
> SUBDIR += rad_eap_test
> SUBDIR += nagvis
> SUBDIR += sleuth
> SUBDIR += waitfornetwork
> SUBDIR += pam_af
> SUBDIR += p5-Config-File
> SUBDIR += check_mssql
>
> .include <bsd.port.subdir.mk>
Pricemz jednotlive 'SUBDIR' odpovidaji podadresarum jednotlivych vasich
portu (v prikladu tedy 7 vlastnich portu).
Do podadresaru uz umistujte vlastni porty zpusobem obdobnym jako je tomu
u portu standardnich. V jejich Makefile uvedte
> CATEGORIES= local
Pokud mate vlastni porty tak pri aktualizaci stromu portu urcite
zapomente na 'make fetchindex'. Rozhodne musite pouzit 'make index'.
--------------------------------------------------------------------
Pokud je ten-ktery bod nejasny, nebo nejaky zcela chybi, ptejte se.
Tak - to mame vlastni patche existujicich souvory v /usr/src a
/usr/ports, dale vlastni patche pro jednotlive porty a nakonec - vlastni
porty.
Neni toho uz docela dost ? A to je porad jen dost hruba osnova. To jsem
nejake skoro ctyri hodiny sepisoval know-how jehoz ziskani trvalo
desetileti. Ze ja se dal na to vzdelavani misto toho, abych to za tezky
penize prodaval ...
Tak pokud se nekdo tim smerem vydate a bude vam to k uzitku, tak mi pak
aspon dejte vedet, ze vam to k necemu bylo.
Do popisu k cemu je ten-ktery patch v systemu se mi ted uz fakt nechce.
Pritom ale treba takovy patch-re prodluzuje zivotnost interni EEPROM
sitovych karet if_re a ty jsou zrovna v kde-cem.
Tak treba po nejaky ty pauze. Vetsi sance bude pokud alespon nekdo
rekne, ze by mu to k necemu bylo. At zbytecne netravim spoustu casu
sepisovanim neceho, co nikdo neupotrebi.
Dan
More information about the Users-l
mailing list