diff --git a/fr_FR.ISO8859-1/books/developers-handbook/locking/chapter.xml b/fr_FR.ISO8859-1/books/developers-handbook/locking/chapter.xml index ca308534df..7456d3317d 100644 --- a/fr_FR.ISO8859-1/books/developers-handbook/locking/chapter.xml +++ b/fr_FR.ISO8859-1/books/developers-handbook/locking/chapter.xml @@ -1,335 +1,336 @@ Notes sur le verrouillage Ce chapître est maintenu par The FreeBSD SMP Next Generation Project. Envoyez leur directement les commentaires et les suggestions à &a.smp;. Ce document souligne le verrouillage utilisé dans le noyau FreeBSD pour permettre d'utiliser du vrai multi-processeur à l'intérieur du noyau. Le verrouillage peut être réalisé par différents moyens. Les structures de données puvent être protégées par des mutex ou &man.lockmgr.9; verrous. Quelques variables sont protégées simplement par l'utilisation continuelle d'opérations atomiques pour y accéder. Les mutex Un mutex est simplement un verrou utilisé pour garantir exclusion mutuelle. Spécifiquement, un mutex ne peut appartenir qu'à une entité à la fois. Si une autre entité désire obtenir un mutex déjà pris , elle doit attendre jusqu'à ce que le mutex soit relaché. Dans le noyau FreeBSD, les mutex appartiennent aux processus. Les mutex peuvent être acquis récursivement, mais ils sont conçus pour n'être pris que pendant une courte période. Spécifiquement, le détenteur ne doit pas se suspendre pendant qu'il retient un mutex. Si vous avez besoin de maintenir un verrouillage pendant une suspension, utilisez un &man.lockmgr.9; verrou ("lock"). Chaque mutex a plusieurs intérêts : Nom de la variable Nom de la variable struct mtx dans le code source du noyau. Nom logique Le nom du mutex lui est assigné par mtx_init. Ce nom est affiché dans les messages de trace KTR, témoigne des erreurs et avertissements et est utilisé pour distinguer les mutex dans les traces. Type Le type du mutex en termes de constantes nommées MTX_*. La signification de chaque constante nommée est documentée dans &man.mutex.9;. MTX_DEF Un mutex endormi MTX_SPIN Un mutex tournant MTX_COLD Ce mutex est initialisé très tard. Toutefois, il doit être déclaré via MUTEX_DECLARE, et la constante nommée MTX_COLD doit être passée à mtx_init. MTX_TOPHALF Ce mutex tournant ne désactive pas les interruptions. MTX_NORECURSE Ce mutex n'a pas la permission d'être recursif. Protégés Une liste de structures de données ou des membres de structure de données que cette entrée protège. Pour les membres de structures de données, le nom sera de la forme structure name.member name. Fonctions dépendantes Les fonctions qui peuvent seulement être appelées si ce mutex est pris. Liste du mutex Nom de la variable Nom logique Type Protégés Fonctions dépendantes sched_lock sched lock MTX_SPIN | MTX_COLD _gmonparam, cnt.v_swtch, cp_time, curpriority, mtx.mtx_blocked, mtx.mtx_contested, proc.p_contested, proc.p_blocked, proc.p_flag (P_PROFIL XXX, P_INMEM, P_SINTR, P_TIMEOUT, P_SWAPINREQ XXX, P_INMEN XXX), proc.p_nice, proc.p_procq, proc.p_blocked, proc.p_estcpu, proc.p_nativepri, proc.p_priority, proc.p_usrpri, proc.p_rtprio, proc.p_rqindex, proc.p_stats->p_prof, proc.p_stats->p_ru, proc.p_stat, proc.p_cpticks, proc.p_iticks, proc.p_uticks, proc.p_sticks, proc.p_swtime, proc.p_slptime, proc.p_runtime, proc.p_pctcpu, proc.p_oncpu, proc.p_asleep, proc.p_wchan, proc.p_wmesg, proc.p_slpq, proc.p_vmspace (XXX - in statclock), pscnt, slpque, itqueuebits, itqueues, rtqueuebits, rtqueues, queuebits, queues, idqueuebits, idqueues, switchtime, setrunqueue, remrunqueue, mi_switch, chooseproc, schedclock, resetpriority, updatepri, maybe_resched, cpu_switch, cpu_throw vm86pcb_lock vm86pcb lock MTX_DEF | MTX_COLD vm86pcb vm86_bioscall Giant Giant MTX_DEF | MTX_COLD nearly everything lots callout_lock callout lock MTX_SPIN callfree, callwheel, nextsoftcheck, proc.p_itcallout, proc.p_slpcallout, softticks, ticks
Les verrous du gestionnaire de verrous (Lock Manager) Les verrous qui sont fournis par l'interface &man.lockmgr.9; sont les verrous du gestionnaire de verrous. Ces verrous sont des verrous lecture-écriture et peuvent être retenus par un process suspendu. &man.lockmgr.9; List de verrou - + Nom de la variable Protégés + allproc_lock allproc zombproc pidhashtbl proc.p_list proc.p_hash nextpid proctree_lock proc.p_children proc.p_sibling
Variables protégées atomiquement Une variable protégée atomiquement est une variable spéciale qui n'est pas protégé par un verrou explicite. Toutefois, tous les accès de données aux variables utilisent des opérations atomiques spéciales comme décrit dans &man.atomic.9;. Très peu de variables sont traitées de cette façon, bien que les autres primitives de synchronisation comme les mutex soient implémentées avec des variables protégées atomiquement. astpending mtx.mtx_lock
diff --git a/nl_NL.ISO8859-1/books/handbook/firewalls/chapter.xml b/nl_NL.ISO8859-1/books/handbook/firewalls/chapter.xml index 1d1b784671..dda7452695 100644 --- a/nl_NL.ISO8859-1/books/handbook/firewalls/chapter.xml +++ b/nl_NL.ISO8859-1/books/handbook/firewalls/chapter.xml @@ -1,3568 +1,3582 @@ Joseph J. Barbish Bijgedragen door Brad Davis Omgezet naar SGML en bijgewerkt door Siebrand Mazeland Vertaald door René Ladan Firewalls firewall beveiliging firewalls Inleiding Firewalls bieden de mogelijkheid om inkomend en uitgaand verkeer op een systeem te filteren. Een firewall gebruikt daarvoor een of meer groepen regels (rules) om netwerkpakketten te inspecteren als ze binnenkomen of weggaan door netwerkverbindingen en staat dat verkeer dan toe of blokkeert het. De regels van een firewall kunnen één of meerdere eigenschappen van pakketten onderzoeken waaronder, maar niet uitsluitend, het protocol, het bron- of bestemmingsadres en de bron- en bestemmingspoort. Firewalls kunnen de veiligheid van een host of netwerk enorm vergroten. Ze kunnen één of meer van de volgende dingen doen: Applicaties, diensten en machines op een intern netwerk te beschermen tegen ongewild verkeer van het Internet. Toegang tot Internet voor interne hosts te limiteren of uitschakelen. Ondersteuning bieden voor netwerkadres vertaling (network address translation of NAT), waarmee er vanaf een intern netwerk met private IP adressen een Internetverbinding gedeeld kan worden met één IP adres of met een groep van publieke adressen die automatisch wordt toegewezen. Na het lezen van dit hoofdstuk weet de lezer: Hoe pakketfilteringsregels op de juiste wijze samengesteld kunnen worden; De verschillen tussen de firewalls die bij &os; worden geleverd; Hoe de OpenBSD firewall PF te gebruiken en in te stellen; Hoe IPFILTER te gebruiken en in te stellen; Hoe IPFW te gebruiken en in te stellen. Er wordt aangenomen dat de lezer van dit hoofdstuk: Basisbegrip heeft van &os; en Internetconcepten. Firewallconcepten firewall sets regels Er zijn twee basismogelijkheden om sets met regels te maken voor firewalls: inclusief of exclusief. Een exclusieve firewall staat al het verkeer door behalve het verkeer dat past bij de set met regels. Een inclusieve firewall doet het tegenovergestelde. Die staat alleen verkeer toe dat past bij de regels en blokkeert al het overige verkeer. Een inclusieve firewall biedt veel betere controle over het uitgaande verkeer, waardoor het een betere keuze is voor systemen die diensten op het publieke Internet aanbieden. Het beheert ook het type verkeer dat van het publieke Internet afkomt en toegang heeft tot uw privé-netwerk. Al het verkeer dat niet aan de regels voldoet wordt geblokkeerd en gelogd, dat is zo ontworpen. Inclusieve firewalls zijn over het algemeen veiliger dan exclusieve firewalls omdat ze het risico dat ongewenst verkeer door ze heen gaat aanzienlijk verminderen. Tenzij anders aangegeven, creëeren alle configuraties en voorbeelden van regelverzamelingen in dit hoofdstuk inclusieve firewalls. De beveiliging kan nog verder vergroot worden met een stateful firewall. Dit type firewall houdt bij welke connecties er door de firewall tot stand zijn gekomen en laat alleen verkeer door dat bij een bestaande connectie hoort of onderdeel is van een connectie in opbouw. Het nadeel van een stateful firewall is dat die kwetsbaar kan zijn voor Ontzegging van Dienst (DoS) aanvallen als er een groot aantal nieuwe verbindingen binnen korte tijd wordt opgezet. Met de meeste firewalls is het mogelijk een combinatie te maken van stateful en niet stateful gedrag om een optimale firewall voor een site te maken. Firewallsoftware &os; heeft drie soorten firewallsoftware in de basisinstallatie. Dat zijn: IPFILTER (ook bekend als IPF), IPFIREWALL (ook bekend als IPFW) en de pakketfilter van OpenBSD (ook bekend als PF). &os; heeft ook twee ingebouwde pakketten voor het regelen van verkeer (in de basis het beheersen van bandbreedtegebruik): &man.altq.4; en &man.dummynet.4;. Dummynet is traditioneel sterk verbonden met IPFW en ALTQ met PF. Het vormgeven van verkeer voor IPFILTER kan momenteel gedaan worden met IPFILTER voor NAT en filtering en IPFW met &man.dummynet.4; of door PF met ALTQ te gebruiken. IPFW en PF gebruiken allemaal regels om de toegang van pakketten tot een systeem te regelen, hoewel ze dat op andere manieren doen en ze een andere regelsyntaxis hebben. De reden dat er meerdere firewallpakketten in &os; zitten is dat verschillende mensen verschillende eisen en voorkeuren hebben. Geen enkel firewallpakket is het beste. De schrijver van dit artikel geeft de voorkeur aan IPFILTER omdat daarmee stateful regels minder complex zijn toe te passen in een omgeving waar NAT wordt gebruikt en IPF heeft een ingebouwde FTP proxy waardoor de regels voor het veilig gebruiken van FTP eenvoudiger worden. Omdat alle firewalls gebaseerd zijn op het inspecteren van aangegeven controlevelden in pakketten, moet iemand die sets van firewallregels opstelt begrijpen hoe TCP/IP werkt, welke waarde de controlevelden kunnen hebben en hoe die waarden gebruikt worden in normaal verkeer. Op de volgende webpagina wordt een prima uitleg gegeven: . John Ferrell Herzien en bijgewerkt door De OpenBSD Packet Filter (PF) en <acronym>ALTQ</acronym> firewall PF Vanaf juli 2003 is de OpenBSD firewalltoepassing PF geporteerd naar &os; en beschikbaar gekomen in de &os; Portscollectie. In 2004 was &os; 5.3 de eerste release die PF bevatte is integraal onderdeel van het basissysteem. PF is een complete en volledige firewall die optioneel ALTQ bevat (Alternate Queuing). ALTQ biedt Quality of Service (QoS) functionaliteit. het OpenBSD Project levert een uitstekend werk wat betreft het onderhouden van de PF FAQ. Zodoende zal deze sectie van het handboek zich richten op PF met betrekking tot &os; terwijl het ook wat algemene informatie over het gebruik zal geven. Voor gedetailleerde gebruikersinformatie wordt naar de PF FAQ verwezen. Meer informatie over PF voor &os; staat op . De laadbare kernelmodules voor PF gebruiken Voeg de volgende regel toe aan /etc/rc.conf om de kernelmodule PF te laden: pf_enable="YES" Draai vervolgens het opstartscript om de module te laden: &prompt.root; service pf start Merk op dat de PF module niet laadt als het het instellingenbestand met de regelverzameling niet kan vinden. De standaardlocatie is /etc/pf.conf. Als de regelverzameling voor PF zich elders bevindt, kan PF worden verteld om daar te kijken een regel analoog aan de volgende aan /etc/rc.conf toe te voegen: pf_rules="/pad/naar/pf.conf" Het voorbeeld pf.conf bestand kan gevonden worden in /usr/share/examples/pf De module PF kan ook handmatig vanaf de opdrachtregel geladen worden: &prompt.root; kldload pf.ko Logondersteuning voor PF wordt geleverd door pflog.ko en kan worden geladen door de volgende regel aan /etc/rc.conf toe te voegen: pflog_enable="YES" Draai vervolgens het opstartscript om de module te laden: &prompt.root; service pflog start Als u andere mogelijkheden van PF nodig heeft dient u ondersteuning voor PF in de kernel te compileren. Kernelopties voor PF kernelopties device pf kernelopties device pflog kernelopties device pfsync Hoewel het niet nodig is om ondersteuning voor PF in de kernel te compileren, biedt dit wel de mogelijkheid om van een van PF's geavanceerde mogelijkheden gebruik te maken die niet in de laadbare module zitten, namelijk &man.pfsync.4;, dat een pseudo-apparaat is dat zekere veranderingen aan de toestandstabel die door PF wordt gebruikt prijsgeeft. Het kan worden gecombineerd met &man.carp.4; om failover firewalls aan te maken die gebruik maken van PF. Meer informatie over CARP kan gevonden worden in van het Handboek. De kernelopties voor PF kunnen gevonden worden in /usr/src/sys/conf/NOTES en zijn hieronder gereproduceerd: device pf device pflog device pfsync De optie device pf schakelt ondersteuning voor de Packet Filter firewall (&man.pf.4;) in. De optie device pflog schakelt het optionele &man.pflog.4; pseudo-netwerkapparaat in dat gebruikt kan worden om verkeer te loggen naar een &man.bpf.4; descriptor. De &man.pflogd.8; daemon kan gebruikt worden om de logboekinformatie naar schijf te schrijven. De optie device pfsync schakelt het optionele &man.pfsync.4; pseudo netwerkapparaat in waarmee de toestandswijzigingen gemonitord kunnen worden. Beschikbare opties voor <filename>rc.conf</filename> De volgende &man.rc.conf.5; statements stellen PF en &man.pflog.4; in tijdens het opstarten: pf_enable="YES" # Schakel PF in (laad module als nodig) pf_rules="/etc/pf.conf" # bestand met regels voor pf pf_flags="" # aanvullende vragen voor opstarten pfctl pflog_enable="YES" # start pflogd(8) pflog_logfile="/var/log/pflog" # waar pflogd het logboekbestand moet opslaan pflog_flags="" # aanvullende vlaggen voor opstarten pflogd Als er een LAN achter de firewall staat en er pakketten doorgestuurd moeten worden naar computers op het LAN of als NAT actief is, dan is de volgende optie ook nodig: gateway_enable="YES" # Schakel in als LAN gateway Filterregels aanmaken PF leest de instelregels van &man.pf.conf.5; (standaard /etc/pf.conf) en het verandert, verwijdert, of geeft pakketten door aan de hand van de regels of definities die daar zijn gespecificeerd. De &os;-installatie bevat een aantal voorbeeldbestanden in /usr/share/examples/pf/. In de PF FAQ staat een complete behandeling van de PF regels. Houd tijdens het doornemen van de PF FAQ in de gaten dat verschillende versies van &os; verschillende versies van PF kunnen bevatten. Momenteel gebruikt &os; 8.X dezelfde versie van PF als OpenBSD 4.1. &os; 9.X en hoger gebruiken dezelfde versie van PF als OpenBSD 4.5. De &a.pf; is een goede plaats om vragen over het instellen en draaien van de PF firewall te stellen. Vergeet niet de mailinglijstarchieven te controleren alvorens vragen te stellen! Werken met PF Gebruik &man.pfctl.8; om PF te beheren. Hieronder staan wat nuttige commando's (bekijk de hulppagina &man.pfctl.8; voor alle beschikbare opties): - + Commando Doel + + pfctl PF aanzetten + + + + pfctl PF uitzetten + + + + pfctl all /etc/pf.conf Spoel alle regels door (nat, filter, toestand, tabel, etc.) en herlaad vanuit het bestand /etc/pf.conf pfctl [ rules | nat | state ] Rapporteer over de filterregels, NAT-regels, of toestandstabel pfctl /etc/pf.conf Controleer /etc/pf.conf op fouten, maar laad de regelverzameling niet + + + + <acronym>ALTQ</acronym> inschakelen ALTQ is alleen beschikbaar ondersteuning ervoor in de &os; Kernel te compileren. ALTQ wordt niet door alle netwerkkaartstuurprogramma's ondersteund. In &man.altq.4; staat een lijst met ondersteunde stuurprogramma's voor de betreffende versie. Met de volgende opties wordt ALTQ ingeschakeld en additionele functionaliteit toegevoegd: options ALTQ options ALTQ_CBQ # Class Bases Queuing (CBQ) options ALTQ_RED # Random Early Detection (RED) options ALTQ_RIO # RED In/Out options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC) options ALTQ_PRIQ # Priority Queuing (PRIQ) options ALTQ_NOPCC # Required for SMP build options ALTQ schakelt het ALTQ raamwerk in. options ALTQ_CBQ schakelt Class Based Queuing (CBQ) in. Met CBQ kan de bandbreedte van een verbinding worden opgedeeld in verschillende klassen of wachtrijen om verkeer te prioriteren op basis van filterregels. options ALTQ_RED schakelt Random Early Detection (RED) in. RED wordt gebruikt om netwerkverstopping te voorkomen. RED doet dit door de lengte van de wachtrij te meten en die te vergelijken met de minimale en maximale drempelwaarden voor de wachtrij. Als de wachtrij groter is dan de maximale waarde worden alle nieuwe pakketten genegeerd. Het werkt naar zijn naam, dus RED negeert willekeurig pakketten van verschillende verbindingen. options ALTQ_RIO schakelt Random Early Detection In and Out in. options ALTQ_HFSC schakelt de Hierarchical Fair Service Curve Packet Scheduler in. Meer informatie over HFSC staat op . options ALTQ_PRIQ schakelt Priority Queuing (PRIQ) in. PRIQ laat verkeer dat in een hogere wachtrij staat altijd eerder door. options ALTQ_NOPCC schakelt SMP ondersteuning voor ALTQ in. Deze optie is verplicht op SMP systemen. De IPFILTER (IPF) firewall firewall IPFILTER Darren Reed is de auteur van IPFILTER, dat niet afhankelijk is van één besturingssysteem. Het is een open source applicatie die is geporteerd naar &os;, NetBSD, OpenBSD, SunOS, HP/UX en Solaris besturingssystemen. IPFILTER wordt actief ondersteund en onderhouden en er worden regelmatig nieuwe versies uigebracht. IPFILTER is gebaseerd op een firewall aan de kernelkant en een NAT mechanisme dat gecontroleerd en gemonitord kan worden door programma's in userland. De firewallregels kunnen ingesteld of verwijderd worden met het hulpprogramma &man.ipf.8;. De NAT regels kunnen ingesteld of verwijderd worden met &man.ipnat.8;. Het programma &man.ipfstat.8; kan actuele statistieken leveren voor de kernelonderdelen van IPFILTER. &man.ipmon.8; kan acties van IPFILTER wegschrijven naar logboekbestanden van het systeem. IPF is oorspronkelijk geschreven met logica die regels verwerkte volgens het principe de laatst passende regel wint en gebruikte toen alleen staatloze regels. In de loop der tijd is IPF verbeterd en zijn de opties quick en keep state toegevoegd waarmee de logica van het verwerken van regels drastisch is gemoderniseerd. In de officiële documentatie van IPF worden alleen de regels en verwerkingslogica behandeld. De moderne functies worden alleen behandeld als opties, waardoor hun nut dat er een veel betere en veiligere firewall mee te maken volledig onderbelicht blijft. De instructies in dit hoofdstuk zijn gebaseerd op regels die gebruik maken van de optie quick en de stateful optie keep state. Dit is het raamwerk waarmee een set van inclusieve firewallregels wordt samengesteld. Voor een gedetailleerde uitleg over de verwerking van de verouderde regels zie en . De IPF FAQ is te vinden op . Een doorzoekbaar archief van de open-source IPFilter mailing lijst is beschikbaar op . IPF inschakelen IPFILTER inschakelen IPF zit in de basisinstallatie van &os; als een aparte run time laadbare module. Een systeem laadt de IPF kernel laadbare module dynamisch als ipfilter_enable="YES" in rc.conf staat. Voor de laadbare module zijn de opties logging en default pass all ingeschakeld. IPF hoeft niet in de kernel gecompileerd te worden om het standaardgedrag te wijzigen naar block all. Dat is mogelijk door op het einde van de regelverzameling een regel block all toe te voegen die al het verkeer blokkeert. Kernelopties kernelopties IPFILTER kernelopties IPFILTER_LOG kernelopties IPFILTER_DEFAULT_BLOCK IPFILTER kernelopties Het is niet verplicht om IPF in te schakelen door de volgende opties in de &os; kernel te compileren. Dit wordt alleen beschreven als achtergrondinformatie. Door IPF in de kernel te compileren wordt de laadbare module niet gebruikt. Voorbeeld kernelinstellingen voor IPF staan beschreven in de /usr/src/sys/i386/conf/LINTin de kernelbroncode en worden hier beschreven: options IPFILTER options IPFILTER_LOG options IPFILTER_DEFAULT_BLOCK options IPFILTER schakelt ondersteuning voor de IPFILTER firewall in. options IPFILTER_LOG schakelt de optie in waarmee IPF verkeer kan loggen door het naar het ipl pakketloggende pseudo-apparaat te schrijven voor iedere regel met het sleutelwoord log erin. options IPFILTER_DEFAULT_BLOCK wijzigt het standaardgedrag zodat ieder pakket waarop geen enkele pass regel van toepassing is wordt geblokkeerd. Deze instelling worden pas actief nadat een kernel waarvoor deze instellingen zijn gemaakt is gebouwd en geïnstalleerd. Beschikbare opties voor <filename>rc.conf</filename> De volgende instellingen moeten in /etc/rc.conf staan om IPF bij het opstarten te activeren: ipfilter_enable="YES" # Start ipf firewall ipfilter_rules="/etc/ipf.rules" # laad regels uit het doelbestand ipmon_enable="YES" # Start IP monitor log ipmon_flags="-Ds" # D = start als daemon # s = log naar syslog # v = log tcp window, ack, seq # n = vertaal IP & poort naar namen Als er een LAN achter de firewall staat dat gebruik maakt van IP-adressen uit de private reeks, dan moet de volgende optie ook ingesteld worden om NAT-functionaliteit in te schakelen: gateway_enable="YES" # Schakel in als LAN gateway ipnat_enable="YES" # Start ipnat functie ipnat_rules="/etc/ipnat.rules" # bestand met regels voor ipnat IPF ipf Het commando &man.ipf.8; wordt gebruikt om het bestand met firewallregels te laden. Gewoonlijk wordt er een bestand aangemaakt waarin de situatieafhankelijke regels staan waarmee in één keer de bestaande regels kunnen worden vervangen: &prompt.root; ipf -Fa -f /etc/ipf.rules : verwijder alle interne tabellen met regels. : laad het aangegeven bestand met regels. Hiermee wordt het mogelijk wijzigingen te maken aan het bestand met eigen regels en met &man.ipf.8; de firewall aan te passen met verse regels zonder het systeem te booten. Deze methode is erg handig om nieuwe regels te testen omdat dit zo vaak als nodig gedaan kan worden. In &man.ipf.8; worden alle opties die beschikbaar zijn toegelicht. &man.ipf.8; verwacht dat het bestand met regels een standaard tekstbestand is. Het accepteert geen bestand met regels dat is opgesteld als een script dat gebruik maakt van substitutie. Er is wel een mogelijkheid om IPF regels op te stellen en gebruik te maken van substitutie. Meer informatie staat in . IPFSTAT ipfstat IPFILTER statistieken &man.ipfstat.8; haalt de totalen van de statistieken op die horen bij de firewall sinds die is gestart en toont deze. Het kan ook zijn dat de tellers in tussentijd op nul zijn gesteld met ipf -Z. In &man.ipfstat.8; worden alle details behandeld. Standaard ziet &man.ipfstat.8; uitvoer er ongeveer als volgt uit: input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0 output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0 input packets logged: blocked 99286 passed 0 output packets logged: blocked 0 passed 0 packets logged: input 0 output 0 log failures: input 3898 output 0 fragment state(in): kept 0 lost 0 fragment state(out): kept 0 lost 0 packet state(in): kept 169364 lost 0 packet state(out): kept 431395 lost 0 ICMP replies: 0 TCP RSTs sent: 0 Result cache hits(in): 1215208 (out): 1098963 IN Pullups succeeded: 2 failed: 0 OUT Pullups succeeded: 0 failed: 0 Fastroute successes: 0 failures: 0 TCP cksum fails(in): 0 (out): 0 Packet log flags set: (0) Als er als optie voor inkomend of voor uitgaand wordt meegegeven, dan zal het commando de juiste lijst met regels die de kernel op dat moment gebruikt wordt weergeven. ipfstat -in toont de tabel met regels voor inkomend verkeer met regelnummers ipfstat -on toont de tabel met regels voor uitgaand verkeer met regelnummers De uitvoer ziet er ongeveer als volgt uit: @1 pass out on xl0 from any to any @2 block out on dc0 from any to any @3 pass out quick on dc0 proto tcp/udp from any to any keep state ipfstat -ih toont de tabel met regels voor inkomend verkeer, waarbij voor iedere regel staat hoe vaak die van toepassing was. ipfstat -oh toont de tabel met regels voor uitgaand verkeer, waarbij voor iedere regel staat hoe vaak die van toepassing was. De uitvoer ziet er ongeveer als volgt uit: 2451423 pass out on xl0 from any to any 354727 block out on dc0 from any to any 430918 pass out quick on dc0 proto tcp/udp from any to any keep state Een van de belangrijkste functies van ipfstat is de vlag waarmee de staat-tabel wordt getoond op een wijze die vergelijkbaar is met de wijze waarop &man.top.1; de draaiende &os; procestabel toont. Als een firewall wordt aangevallen, dan geeft deze functie de mogelijkheid om de pakketten van de aanvaller te identificeren en nader te onderzoeken. De optionele subvlaggen bieden de mogelijkheid om een bron of bestemmings IP adres, poort of protocol aan te geven dat gemonitord moet worden. Details zijn na te lezen in &man.ipfstat.8;. IPMON ipmon IPFILTER loggen Om &man.ipmon.8; te laten werken zoals bedoeld, moet de kerneloptie IPFILTER_LOG aan staan. Dit commando kan op twee verschillende wijzen gebruikt worden. De standaard is van toepassing als het commando op de commandoregel wordt ingegeven zonder de optie . De daemon wordt gebruikt als continu een systeemlogboek bijgewerkt moet worden zodat het mogelijk is om gebeurtenissen in het verleden te bekijken. Zo zijn &os; en IPFILTER ingesteld om samen te werken. &os; heeft ingebouwde mogelijkheden om automatisch syslogs te roteren. Daarom is het beter om de uitvoer naar &man.syslogd.8; te schrijven dan naar een gewoon bestand. In de standaardversie van rc.conf is te zien dat de instelling ipmon_flags de waarde heeft: ipmon_flags="-Ds" # D = start als daemon # s = log naar syslog # v = log tcp window, ack, seq # n = vertaal IP & poort naar namen De voordelen van loggen zijn duidelijk. Het biedt de mogelijkheid om na het feit informatie na te zien als: welke pakketten heeft de firewall laten vallen, waar kwamen ze vandaan en waar gingen ze heen? Dit zijn allemaal voordelen als het gaat om uitvinden waar een aanvaller vandaan komt en wat deze heeft geprobeerd. Zelfs als loggen is ingeschakeld, logt IPF nog niets uit zichzelf. De beheerder van de firewall beslist welke regels in de regelverzameling iets weg moeten schrijven door het sleutelwoord log aan die regels toe te voegen. Gewoonlijk worden alleen deny regels gelogd. Het is heel normaal om als laatste regel een deny regel aan de set met regels toe te voegen waar het sleutelwoord log in staat. Zo krijgt een beheerder alle pakketten te zien waarop geen enkele regel van toepassing was. Loggen met IPMON Syslogd heeft een eigen methode om logboekgegevens te scheiden. Het maakt gebruik van speciale groepen die facility en level heten. &man.ipmon.8; in mode gebruikt local0 als facilitynaam. Alle door &man.ipmon.8; gelogde gegevens gaan standaard naar de naam security. De nu volgende levels kunnen gebruikt worden om de gelogde gegevens nog verder uit elkaar te trekken als dat gewenst is. LOG_INFO – pakketten gelogd met het sleutelwoord "log" als actie in plaats van pass of block. LOG_NOTICE – gelogde pakketten die ook zijn doorgelaten LOG_WARNING – gelogde pakketten die ook geblokkeerd zijn LOG_ERR – gelogde pakketten die een verkeerde opbouw hebben, "short" Om IPFILTER alle gelogde gegevens naar /var/log/ipfilter.log te laten schrijven, dient dat bestand vooraf te bestaan. Dat kan met het volgende commando: &prompt.root; touch /var/log/ipfilter.log De functionaliteit van &man.syslogd.8; wordt beheerd met instellingen in /etc/syslog.conf. Dit bestand biedt aanzienlijke flexibiliteit in hoe syslog omgaat met systeemberichten die door softwaretoepassingen als IPF worden gegeven. Zo kan de volgende instelling toegevoegd worden aan /etc/syslog.conf: local0.* /var/log/ipfilter.log Het deel local0.* betekent dat alle logberichten naar de aangegeven plaats geschreven moeten worden. Om de wijzigingen in /etc/syslog.conf actief te maken kan er opnieuw opgestart worden of is het mogelijk de daemon &man.syslogd.8; een schop te geven zodat /etc/syslog.conf opnieuw wordt ingelezen met /etc/rc.d/syslogd reload. Het PID (procesnummer) is te achterhalen door een overzicht van taken te tonen met ps -ax. Het PID is het nummer in de linker kolom voor de regel waarop syslog staat. Vaak wordt vergeten /etc/newsyslog.conf te wijzigen om het nieuw aangemaakte logboekbestand te laten roteren. De opmaak van gelogde berichten Berichten die door ipmon wordt gezonden bestaan uit velden die gescheiden worden door een spatie. Velden die in alle berichten zitten zijn: De datum waarop het pakket is ontvangen. De tijd waarop het pakket is ontvangen weergegeven als HH:MM:SS.F voor uren, minuten, seconden en fracties van een seconde. De fractie kan meerdere cijfers lang zijn. De naam van de interface waarop het pakket is ontvangen, bijvoorbeeld dc0. De groep en regelnummer van de regel, bijvoorbeeld @0:17. Deze kunnen ingezien worden met ipfstat -in. De acties: p voor doorgelaten (passed), b voor geblokkeerd (blocked), S voor een verkeerd pakket (short packet), n voor dat er geen enkele regel van toepassing was, L voor een logboekregel. De volgorde waarin deze acties getoond worden is: S, p, b, n, L. Een hoofdletter P of B betekent dat het pakket gelogd is vanwege een globale instelling, niet vanwege één regel in het bijzonder. De adressen. Dit zijn eigenlijk drie velden: het bronadres en poort gescheiden door een komma, het symbool -> en het bestemmingsadres en poort, bijvoorbeeld: 209.53.17.22,80 -> 198.73.220.17,1722. Achter PR staat de naam van het protocol of het nummer, bijvoorbeeld PR tcp. Achter len staan de lengte van de pakketkop en de totale lengte van het pakket, bijvoorbeeld len 20 40. Als het pakket een TCP pakket is, dan is er nog een veld dat begint met een verbindingsstreepje met daarachter letters die overeenkomen met vlaggen die ingeschakeld waren. In &man.ipf.5; is een lijst met letters en bijbehorende vlaggen te vinden. Als het pakket een ICMP pakket is, dan worden aan het einde twee velden toegevoegd. Het eerste is altijd ICMP en het volgende het ICMP bericht en subbericht type, gescheiden door een slash, bijvoorbeeld ICMP 3/3 voor een poort niet bereikbaar bericht. Script met regels met substitutie bouwen Geoefende gebruikers van IPF maken een bestand dat de regels bevat en stellen dat op zo'n manier op dat het uitgevoerd kan worden als een script met substitutie. Het grote voordeel van deze werkwijze is dat er dan alleen de waarde geassocieerd met een symbolische naam gewijzigd hoeft te worden en dat als het script opnieuw wordt uitgevoerd, op alle plaatsen waar de variabele wordt gebruikt, de nieuwe waarde in de regels wordt opgenomen. Omdat het een script is, kan substitutie gebruik worden om vaak voorkomende waarden de definiëren zodat ze in meerdere regels vervangen kunnen worden. Dit wordt geïllustreerd in het onderstaande voorbeeld. De syntaxis die in het script wordt gebruikt is compatibel met de shells &man.sh.1;, &man.csh.1; en &man.tcsh.1;. Velden waarvoor substitutie van toepassing is worden vooraf gegaan door het dollarteken $. Definities worden niet vooraf gegaan door het voorvoegsel $. De waarden van een definitie moet omsloten worden door dubbele aanhalingstekens ("). Een set regels begint wellicht als volgt: ############## Begin IPF regels script ######################### oif="dc0" # naam van de uitgaande interface odns="192.0.2.11" # IP adres van DNS server ISP myip="192.0.2.7" # statische IP adres gekregen van ISP ks="keep state" fks="flags S keep state" # Er kan gekozen worden om dit script te gebruiken om een eigen # /etc/ipf.rules script te maken of dit script kan gebruikt worden # "as is" # # Haal bij één van deze regels het commentaarteken weg # en plaats hem bij de ander. # # 1) Deze kan gebruikt worden om /etc/ipf.rules te maken: #cat > /etc/ipf.rules << EOF # 2) Deze kan gebruikt worden om het script "as is" te starten: # Let op: er moet een lege regel zijn na het EOF teken. /sbin/ipf -Fa -f - << EOF # Verleen toegang tot de DNS van de ISP. pass out quick on $oif proto tcp from any to $odns port = 53 $fks pass out quick on $oif proto udp from any to $odns port = 53 $ks # Sta uitgaand verkeer voor niet beveiligd www verkeer toe pass out quick on $oif proto tcp from $myip to any port = 80 $fks # Sta uitgaand verkeer voor beveiligd www verkeer toe (https over TLS SSL) pass out quick on $oif proto tcp from $myip to any port = 443 $fks EOF ################## Einde IPF regels script ######################## Dat is alles. De regels zijn niet van belang in dit voorbeeld, maar tonen hoe substitutievelden worden gedefinieerd en hoe ze worden gebruikt. Als het bovenstaande voorbeeld de inhoud van /etc/ipf.rules.script was, dan konden deze regels herladen worden door het vanaf de commandoregel aan te roepen: &prompt.root; sh /etc/ipf.rules.script Er is wel een probleem met het gebruik van regels in combinatie met substitutie. IPF snapt het niet en kan deze scripts niet direct lezen. Dit script kan gebruikt worden op één van de volgende twee manieren: Haal het commentaarteken weg bij de regel die begint met cat en zet het commentaarteken bij de regel die begint met /sbin/ipf. Plaats ipfilter_enable="YES" in /etc/rc.conf zoals gewoonlijk en start het script eenmalig na elke wijziging om /etc/ipf.rules te maken of bij te werken. Schakel IPFILTER uit in de systeem opstart scripts door ipfilter_enable="NO" toe te voegen aan /etc/rc.conf (dit is de standaardwaarde). Voeg een script zoals de volgende toe aan de opstartmap /usr/local/etc/rc.d. Het script zou een duidelijke naam moeten hebben zoals ipf.loadrules.sh. De uitbreiding .sh is noodzakelijk. #!/bin/sh sh /etc/ipf.rules.script De permissies op dit script moeten zijn: lezen,schrijven en uitvoeren voor de gebruiker root. &prompt.root; chmod 700 /usr/local/etc/rc.d/ipf.loadrules.sh Als het systeem nu herstart, worden de regels via het script gestart. Sets van IPF regels Een set regels is een groep IPF-regels die is gemaakt om pakketten toe te staan of te blokkeren op basis van de eigenschappen van dat pakket. De bi-directionele uitwisseling van pakketten tussen hosts bestaat uit een gesprek dat een sessie heet. De set van firewallregels verwerkt zowel de pakketten die arriveren van het publieke Internet, als de pakketten die door het systeem zijn geproduceerd als een antwoord erop. Elke TCP/IP-dienst (telnet, www, mail, enzovoorts) is vooraf gedefinieerd door een protocol en bevoorrechte (luister)poort. Pakketten bedoeld voor een speciale dienst beginnen bij het bronadres gebruik makend van een onbevoorrechte (hogere orde) poort en komen aan bij de specifieke dienstpoort op het bestemmingsadres. Alle bovengenoemde parameters (poorten en adressen) kunnen gebruikt worden als selectiecriteria om regels aan te maken die diensten zullen toestaan of blokkeren. IPFILTER volgorde regelverwerking IPF is oorspronkelijk geschreven met logica die regels verwerkte volgens het principe de laatst passende regel wint en gebruikte toen alleen staatloze regels. In de loop der tijd is IPF verbeterd en zijn de opties quick en keep state toegevoegd waarmee de logica van het verwerken van regels drastisch is gemoderniseerd. De instructies in dit hoofdstuk zijn gebaseerd op regels die gebruik maken van de optie quick en de stateful optie keep state. Dit is het raamwerk waarmee een set van inclusieve firewallregels wordt samengesteld. Werk bij het wijzigen van firewallregels zeer voorzichtig. Met sommige instellingen is een server niet meer bereikbaar. Om het veilig te spelen is het aan te raden de eerste instellingen vanaf het console te maken, in plaats van via ssh. Regelsyntaxis IPFILTER regelsyntaxis De regelsyntaxis die hier wordt besproken is versimpeld door alleen de moderne stateful regels en de eerste van toepassing zijnde regel wint te belichten. De complete regelsyntaxis is na te lezen in &man.ipf.8;. Het karakter # wordt gebruikt om het begin van een opmerking te markeren en zowel op een eigen regel als achter een firewallregel staan. Lege regels worden genegeerd. Regels bevatten sleutelwoorden die in een bepaalde volgorde van links naar rechts op een regel horen te staan. Sleutelwoorden worden vet weergegeven. Sommige sleutelwoorden hebben subopties die zelf ook weer sleutelwoorden hebben die ook weer subopties kunnen hebben. Alle opties die hier direct onder staan, worden daaronder uitgebreid weergegeven en verderop in dit hoofdstuk in een aparte paragraaf behandeld. ACTIE IN/UIT OPTIES SELECTIE STATEFUL PROTO BRON_ADR,BEST_ADR OBJECT POORT_NUM TCP_VLAG STATEFUL ACTIE = block | pass IN/UIT = in | out OPTIES = log | quick | on interfacenaam SELECTIE = protowaarde | bron/bestemming IP | poort = nummer | flags flag-value PROTO = tcp/udp | udp | tcp | icmp BRON_ADR,BEST_ADR = all | from object to object OBJECT = IP adres | any POORT_NUM = poortnummer TCP_VLAG = S STATEFUL = keep state ACTIE De actie geeft aan wat er met het pakket gedaan moet worden als het van toepassing is op de rest van de filterregel. Iedere regel moet een actie hebben. De volgende acties zijn mogelijk: block geeft aan dat het pakket moet verdwijnen als de parameters van toepassing zijn op het pakket. pass geeft aan dat het pakket doorgelaten moet worden als de parameters van toepassing zijn op het pakket. IN/UIT Een verplicht onderdeel voor iedere filterregel waarin expliciet wordt aangegeven op welke zijde van de in/uit deze van toepassing is. Het volgende sleutelwoord moet in of out zijn en één van de twee moet gecodeerd worden, anders is de regel syntactisch onjuist. in betekent dat de regel van toepassing is op inkomende pakketten. out betekent dat de regel van toepassing is op inkomende pakketten. OPTIES Deze opties moeten in de volgorde waarin ze hier beschreven staan gebruikt worden. log geeft aan dat het pakket naar het ipl logboekbestand geschreven moeten worden (zoals verderop beschreven staat in de paragraaf Loggen) als de regel van toepassing is op het pakket. quick geeft aan dat als een regel van toepassing is, dat de laatste regel moet zijn die wordt gecontroleerd, waardoor er een pad wordt kortgesloten waardoor de volgende regels voor dat pakket niet meer gecontroleerd worden. Deze optie is voor de moderne regels eigenlijk verplicht. on geeft de interface aan die in de parameters meegenomen moet worden. De namen van interfaces kunnen getoond worden met &man.ifconfig.8;. Als deze optie wordt gebruikt, kan een regel alleen van toepassing zijn als het pakket door de aangegeven interface gaat in de richting die is aangegeven (in/out). Ook deze optie is verplicht voor de moderne regels. Als een pakket wordt gelogd, dan worden de koppen van het pakket weggeschreven naar het ipl pakketloggende pseudo-apparaat. Direct na het sleutelwoord log mogen de volgende opties gebruikt worden (in de aangegeven volgorde): body geeft aan dat de eerste 128 bytes van de inhoud van het pakket worden opgeslagen na de kop. first; als het sleutelwoord log samen met een optie keep state wordt gebruikt, wordt het aangeraden om deze optie ook te gebruiken zodat alleen het pakket dat als eerste in de sessie van toepassing was en niet ook alle pakketten die daarna in de sessie volgens keep state van toepassing zijn. SELECTIE De sleutelwoorden in deze paragraaf worden gebruikt om attributen van het pakket dat wordt geïnspecteerd te beschrijven om te bepalen of een regel wel of niet van toepassing is. Er is een sleutelwoord en er zijn subopties waarvan er één of meer gekozen moeten worden. De volgende attributen zijn beschikbaar voor het proces en moeten in de aangegeven volgorde worden gebruikt: PROTO proto is het sleutelwoord dat moet worden aangegeven samen met een van de sleutelwoorden uit de subopties. De waarde geeft een bepaald protocol aan dat van toepassing moet zijn. Ook deze optie is verplicht voor de moderne regels. tcp/udp, tcp, udp, icmp of ieder ander protocol dat in /etc/protocols staat wordt herkend en kan gebruikt worden. Het bijzondere protocolsleutelwoord tcp/udp kan gebruikt worden om zowel voor TCP- als UDP-pakketten van toepassing te laten zijn. Het is toegevoegd voor het gemak om vrijwel gelijke regels te voorkomen. BRON_ADR/BEST_ADR Het sleutelwoord all is in feite hetzelfde als from any to any zonder overige parameters. from bron to bestemming; de sleutelwoorden from en to worden gebruikt om te testen op IP-adressen. In regels moet zowel een bron- als bestemmings-IP-adres aangegeven worden. any is een bijzonder sleutelwoord dat van toepassing is op ieder IP-adres. Voorbeelden van gebruik: from any to any of from 0.0.0.0/0 to any of from any to 0.0.0.0/0 of from 0.0.0.0 to any of from any to 0.0.0.0. Het is vaak lastig om te komen tot een reeks IP-adressen die zich niet gemakkelijk laten uitdrukken met de gepunte numerieke vorm/ maskerlengte notatie. De port net-mgmt/ipcalc kan gebruikt worden om de berekeningen te vereenvoudigen. Aanvullende informatie is beschikbaar op de webpagina van het gereedschap: . POORT Als in een regel op een poort wordt gecontroleerd, voor bron- of bestemmingspoort of beiden, dan is dat alleen van toepassing op TCP- en UDP-pakketten. Bij het maken van poortvergelijkingen kunnen zowel de dienstnamen uit /etc/services als een uit een natuurlijk getal bestaand poortnummer ingesteld worden. Als de poort onderdeel is van het from object dan wordt het vergeleken met het poortnummer van de bron en als het onderdeel is van het to object, dan wordt het vergeleken met het poortnummer van de bestemming. Het gebruik van het to object is in de moderne regels verplicht en neemt de vorm aan van from any to any port = 80. Enkelvoudige poortvergelijkingen kunnen op verschillende manieren gedaan worden met een aantal verschillende operatoren. Er kunnen ook reeksen van poorten ingesteld worden. poort "=" | "!=" | "<" | ">" | "<=" | ">=" | "eq" | "ne" | "lt" | "gt" | "le" | "ge" Reeksen van poorten worden met de volgende optie aangegeven: poort <> | >< De volgende twee parameters die betrekking hebben op bron en bestemming, zijn verplicht in de moderne regels. <acronym>TCP</acronym>_VLAG Vlaggen zijn alleen beschikbaar voor het filteren van TCP. De letters staan voor de mogelijke vlaggen die bekeken kunnen worden in de kop van een TCP-pakket. In de moderne regels wordt de optie flags S gebruikt om het verzoek tot het starten van een TCP sessie. STATEFUL keep state geeft aan dat in een regel met pass voor alle pakketten die van toepassing zijn stateful gefilterd moet worden. Deze optie is voor moderne regels verplicht. Stateful filteren IPFILTER stateful filteren Met stateful filteren wordt verkeer benaderd als een uitwisseling van pakketten tussen twee kanten die een sessie zijn. Als het is ingeschakeld, dan maakt het mechanisme dynamisch interne regels voor pakketten die in de sessie horen te volgen. Het kan bekijken of de karakteristieken van de sessie tussen verzender en ontvanger de juiste procedure volgen. Alle pakketten die niet passen in de sessie, worden automatisch geblokkeerd. keep state staat ook ICMP-pakketten toe die gerelateerd zijn aan een TCP- of UDP-sessie. Dus als er een ICMP-type 3 code 4 komt in antwoord op websurfen, dat wordt toegestaan van binnen naar buiten door een keep state regel, dan wordt dat toegelaten. Pakketten waarvan IPF zeker is dat ze onderdeel zijn van de sessie worden toegelaten, zelfs als ze van een ander protocol zijn. Wat er gebeurt: pakketten die naar buiten gaan op de interface die met Internet is verbonden worden eerst vergeleken met de dynamische staattabel. Als een pakket voldoet aan de verwachting van het volgende pakket in de sessie, dan mag het de firewall verlaten en wordt de toestand van de sessie in de dynamische toestandstabel bijgewerkt. Pakketten die niet bij een reeds actieve sessie horen, worden tegen de uitgaande regelverzameling gecontroleerd. Pakketten die binnenkomen op de interface die met Internet is verbonden worden eerst vergeleken met de dynamische staattabel. Als een pakket voldoet aan de verwachting van het volgende pakket in de sessie, dan mag het de firewall verlaten en wordt de toestand van de sessie in de dynamische toestandstabel bijgewerkt. Pakketten die niet bij een reeds actieve sessie horen, worden vergeleken met de regelverzameling voor binnenkomend verkeer. Als de sessie wordt beëindigd wordt het uit de dynamische staattabel verwijderd. Met stateful filteren is het mogelijk om de focus te leggen op het blokkeren of toestaan van nieuwe sessies. Als een nieuwe sessie tot stand mag komen, dan worden alle volgende pakketten automatisch doorgelaten en al het vervalste verkeer wordt automatisch tegengehouden. Als een nieuwe sessie wordt geweigerd, dan wordt geen enkel pakket doorgelaten. Met stateful filteren zijn er uitgebreide mogelijkheden voor onderzoek om bescherming te bieden tegen de veelheid aan aanvallen die tegenwoordig door aanvallers worden uitgevoerd. Voorbeeld van inclusieve regels De onderstaande regels zijn een voorbeeld van hoe een erg veilige inclusieve firewall opgezet kan worden. Een inclusieve firewall staat alleen diensten toe die passen bij de pass-regels en blokkeert al het overige verkeer. Firewalls die bedoeld zijn om andere machines te beschermen, ook wel netwerk-firewalls genoemd, dienen tenminste twee interfaces te hebben, die over het algemeen zijn ingesteld om de ene kant te vertrouwen (het LAN) maar niet de andere (het publieke Internet). Ook kan een firewall worden ingesteld om alleen het systeem te beschermen waarop het draait—dit wordt een host-gebaseerde firewall genoemd, en is in het bijzonder geschikt voor servers op een onvertrouwd netwerk. Alle &unix; systemen en dus ook &os; zijn zo ontworpen dat ze voor interne communicatie de interface lo0 en IP adres 127.0.0.1 gebruiken. De firewall moet dit interne verkeer gewoon doorgang laten vinden. Voor de interface die is verbonden met het publieke Internet worden regels gemaakt waarmee de toegang voor uitgaande en binnenkomende verbindingen worden geautoriseerd en beheerst. Dit kan de PPP-interface tun0 zijn of de netwerkkaart die is verbonden met een xDSL- of kabelmodem. In gevallen dat er één of meer netwerkkaarten zijn aangesloten op private netwerksegmenten kunnen er regels op de firewall nodig zijn om pakketten die van die LAN-interfaces afkomen vrije doorgang te geven naar elkaar en/of naar buiten (het Internet). De regels worden opgedeeld in drie onderdelen: eerst de vertrouwde interfaces, dan het publieke uitgaande interface en als laatste het onvertrouwde publieke binnenkomende interfaces. In iedere sectie moeten zo staan dat de regels die het meest gebruikt worden vóór de regels die minder vaak gebruikt worden staan. De laatste regel van een onderdeel geeft aan dat al het overige verkeer op die interface in die richting geblokkeerd en gelogd moet worden. In het onderdeel Uitgaand staan alleen regels met pass die parameters bevatten om uniek individuele diensten identificeren die het publieke Internet mogen benaderen. Bij al die regels staan de opties quick, on, proto, port en keep state aan. De regels met proto tcp maken ook gebruik van de optie flag om te bekijken of het een pakket betreft voor het opzetten van een sessie om de stateful functionaliteit aan te sturen. In het onderdeel Inkomend staan eerst alle regels voor het blokkeren van ongewenste pakketten, om twee redenen. Als eerste kan het zo zijn dat kwaadaardige pakketten gedeeltelijk overeenkomen met legitiem verkeer. Deze pakketten moeten worden weggegooid in plaats van binnengelaten te worden, gebaseerd op hun gedeeltelijke match met de allow-regels. De tweede reden is dat bekende en oninteressante verwerpingen stil geblokkeerd kunnen worden in plaats van gevangen en gelogd te worden door de laatste regels in de sectie. De laatste regel in elke sectie blokkeert en logt alle pakketten en kan worden gebruikt voor het wettelijke bewijs nodig om degenen die uw systeem aanvallen aan te klagen. Waar ook gezorgd voor moet worden is dat al het verkeer dat wordt geweigerd geen antwoord verstuurd. Ongeldige pakketten dienen gewoon te verdwijnen. Zo weet een aanvaller niet of een pakket het doelsysteem wel heeft bereikt. Zo kan een aanvaller geen informatie verzamelen over een systeem: hoe minder informatie er over een systeem beschikbaar is, hoe meer tijd iemand erin moet steken voordat er iets slechts gedaan kan worden. Regels die een optie log first bevatten, zullen alleen de eerste keer dat de gebeurtenis voorkomt de gebeurtenis loggen. Deze optie is opgenomen in de voorbeeldregel nmap OS fingerpint. Het gereedschap security/nmap wordt vaak door aanvallers gebruikt om het besturingssysteem van uw server proberen te achterhalen. We raden aan om telkens als er logmeldingen van een regel met de optie log first komen, ipfstat -hio uit te voeren om te bekijken hoe vaak de regel van toepassing is geweest. Een groot aantal overeenkomsten geeft gewoonlijk aan dat de firewall overspoeld wordt, met andere woorden aangevallen wordt. Het bestand /etc/services kan gebruikt worden om onbekende poortnummers op te zoeken. Ook kan worden bezocht en het poortnummer worden opgezocht om het doel van een bepaalde poort uit te vinden. Op de volgende link worden poortnummers van Trojans beschreven: . De onderstaande set regels is een complete en erg veilige inclusieve set met regels voor een firewall die is getest op productiesystemen. Deze set met regels is eenvoudig aan te passen voor uw eigen systeem. Maak gewoon commentaar van elke pass-regel voor een dienst die niet gewenst is. Logberichten die niet gewenst zijn, zijn uit te sluiten door een block-regel toe te voegen in het begin van het onderdeel Inkomend. Voor de onderstaande regels dient de dc0 interfacenaam in iedere regel vervangen te worden door de echte interfacenaam van de netwerkkaart in het systeem die met het publieke Internet is verbonden. Voor gebruikers van PPP zou dat tun0 zijn. Dit zou de inhoud van /etc/ipf.rules kunnen zijn: ################################################################# # Geen beperkingen op de interface aan de LAN kant. # Niet nodig als er geen LAN is. ################################################################ #pass out quick on xl0 all #pass in quick on xl0 all ################################################################# # Geen beperkingen op de loopback interface ################################################################# pass in quick on lo0 all pass out quick on lo0 all ################################################################# # Interface aan het publieke Internet (onderdeel Uitgaand). # Inspecteer verzoeken om een sessie te starten van achter de # firewall op het private netwerk of vanaf deze gateway-server # naar het publieke Internet. ################################################################# # Geef toegang tot de DNS server van de ISP. # xxx moet het IP adres van de DNS van de ISP zijn. # Dupliceer deze regels als een ISP meerdere DNS servers heeft. # Haal het IP adres evt. uit /etc/resolv.conf. pass out quick on dc0 proto tcp from any to xxx port = 53 flags S keep state pass out quick on dc0 proto udp from any to xxx port = 53 keep state # Geef toegang tot de DHCP server van de ISP voor kabel- en # xDSL-netwerken. Deze regel is niet nodig als gebruik gemaakt worden # van PPP naar het publieke Internet. In dat geval kan de hele groep # verwijderd worden. Gebruik de volgende regel en controleer het # logboek voor het IP adres. Wijzig dan het IP adres in de regel # commentaar hieronder en verwijder de eerste regel. pass out log quick on dc0 proto udp from any to any port = 67 keep state #pass out quick on dc0 proto udp from any to z.z.z.z port = 67 keep state # Sta niet beveiligd www verkeer toe. pass out quick on dc0 proto tcp from any to any port = 80 flags S keep state # Sta beveiligd www verkeer over TLS SSL toe. pass out quick on dc0 proto tcp from any to any port = 443 flags S keep state # Sta het verzenden en ontvangen van e-mail toe. pass out quick on dc0 proto tcp from any to any port = 110 flags S keep state pass out quick on dc0 proto tcp from any to any port = 25 flags S keep state # Sta Time toe. pass out quick on dc0 proto tcp from any to any port = 37 flags S keep state # Sta uitgaand NNTP nieuws toe. pass out quick on dc0 proto tcp from any to any port = 119 flags S keep state # Sta uitgaande lokale niet beveiligde FTP (ook van LAN-gebruikers) toe # (zowel passieve als actieve modes). Deze functie maakt gebruik van # de in IP-NAT ingebouwde FTP-proxy die in het bestand met NAT-regels # staat om dit in één regel te laten werken. Als er met # pkg_add pakketten toegevoegd moeten kunnen worden op een systeem, dan # is deze regel nodig. pass out quick on dc0 proto tcp from any to any port = 21 flags S keep state # Sta uitgaande SSH/SFTP/SCP toe (vervangingen van telnet/rlogin/FTP) # Deze functie maakt gebruik van SSH (secure shell) pass out quick on dc0 proto tcp from any to any port = 22 flags S keep state # Sta uitgaande niet beveiligde telnet toe. pass out quick on dc0 proto tcp from any to any port = 23 flags S keep state # Sta de &os; CVSUP-functie toe. pass out quick on dc0 proto tcp from any to any port = 5999 flags S keep state # Sta ping toe naar het publieke Internet. pass out quick on dc0 proto icmp from any to any icmp-type 8 keep state # Sta whois toe vanaf het LAN naar het publieke Internet. pass out quick on dc0 proto tcp from any to any port = 43 flags S keep state # Blokkeer en log het eerste voorkomen van al het andere dat probeert # buiten te komen. Deze regel implementeert de standaard-blokkade. block out log first quick on dc0 all ################################################################# # Interface aan het publieke Internet (onderdeel Inkomend). # Inspecteert pakketten die van het publieke Internet komen # met als bestemming deze gateway-server of het private netwerk. ################################################################# # Blokkeer al het verkeer voor niet-routeerbare of gereserveerde # adresreeksen. block in quick on dc0 from 192.168.0.0/16 to any #RFC 1918 privaat IP block in quick on dc0 from 172.16.0.0/12 to any #RFC 1918 privaat IP block in quick on dc0 from 10.0.0.0/8 to any #RFC 1918 privaat IP block in quick on dc0 from 127.0.0.0/8 to any #loopback block in quick on dc0 from 0.0.0.0/8 to any #loopback block in quick on dc0 from 169.254.0.0/16 to any #DHCP auto-config block in quick on dc0 from 192.0.2.0/24 to any #gereserveerd voor documentatie block in quick on dc0 from 204.152.64.0/23 to any #Sun cluster interconnect block in quick on dc0 from 224.0.0.0/3 to any #Klasse D & E multicast ##### Blokkeer wat vervelende dingen ############ # die niet in de logboeken moeten komen. # Blokkeer fragmenten. block in quick on dc0 all with frags # Block korte TCP pakketten. block in quick on dc0 proto tcp all with short # Blokkeer source gerouteerde pakketten. block in quick on dc0 all with opt lsrr block in quick on dc0 all with opt ssrr # Blokkeer pogingen voor nmap OS fingerprint. # Blokkeer het eerste voorkomen ervan voor de IP-adressen block in log first quick on dc0 proto tcp from any to any flags FUP # Blokkeer alles met speciale opties. block in quick on dc0 all with ipopts # Blokkeer publieke pings. block in quick on dc0 proto icmp all icmp-type 8 # Blokkeer ident. block in quick on dc0 proto tcp from any to any port = 113 # Blokkeer alle Netbios diensten. 137=naam, 138=datagram, 139=sessie. # Netbios is de &windows; bestandsdeeldienst. # Blokkeer &windows; hosts2 name server verzoeken 81. block in log first quick on dc0 proto tcp/udp from any to any port = 137 block in log first quick on dc0 proto tcp/udp from any to any port = 138 block in log first quick on dc0 proto tcp/udp from any to any port = 139 block in log first quick on dc0 proto tcp/udp from any to any port = 81 # Sta inkomend verkeer toe van de DHCP server van de ISP. Deze regel # moet het IP adres van de DHCP server van de ISP bevatten omdat die # de enige toegestane bron van dit type pakketten moet zijn. Alleen # van belang voor kabel en xDSL instellingen. Deze regel is niet nodig # voor PPP verbindingen naar het publieke Internet. Dit is hetzelfde # IP adres dat in het Uitgaande onderdeel is opgezocht. pass in quick on dc0 proto udp from z.z.z.z to any port = 68 keep state # Sta inkomend webverkeer toe omdat er een Apache server draait. pass in quick on dc0 proto tcp from any to any port = 80 flags S keep state # Sta niet beveiligde telnet sessie toe vanaf het publieke Internet. # Dit heeft het label niet veilig omdat gebruikersnaam en # wachtwoord als platte tekst over Internet gaan. Als er geen telnet # server draait, hoeft deze regel niet actief te zijn. #pass in quick on dc0 proto tcp from any to any port = 23 flags S keep state # Sta beveiligde FTP, telnet en SCP toe vanaf Internet. # Deze functie gebruikt SSH (secure shell). pass in quick on dc0 proto tcp from any to any port = 22 flags S keep state # Blokkeer en log het eerste voorkomen van al het andere dat probeert # binnen te komen. Het loggen van alleen het eerste voorkomen stopt # een ontzegging van dienst aanval die gericht is op het laten # vollopen van de partitie waarop de logboeken staan. Deze regel implementeert # de standaard blokkade. block in log first quick on dc0 all ################### Einde van de regels ################################### <acronym>NAT</acronym> NAT IP masquerading NAT network address translation NAT netwerkadres vertaling NAT NAT staat voor Network Address Translation (netwerkadres vertaling). In &linux; heet dit IP Masquerading. Een van de vele mogelijkheden die IPF NAT kan bieden is het delen van één IP adres op het publieke Internet met een LAN achter een firewall. De vraag zou kunnen rijzen waarom iemand dat zou willen. ISP's wijzen normaliter namelijk dynamisch een IP adres toe aan hun niet-commerciële gebruikers. Dynamisch betekent hier dat het IP-adres iedere dat er wordt ingebeld of dat het kabel- of xDSL-modem uit- en aangeschakeld wordt anders kan zijn. Dit dynamische IP-adres wordt gebruikt om uw systeem op het publieke Internet te identificeren. Stel dat er vijf PC's in een huis staan en iedere computer in dat huis heeft toegang tot Internet nodig. Dan zouden er bij een ISP vijf individuele accounts moeten zijn en vijf telefoonlijnen om dat te realiseren. Met NAT is er maar één account bij een ISP nodig. De andere vier PC's moeten met kabels op een switch worden aangesloten waarop ook een &os; systeem is aangesloten dat binnen uw LAN als gateway gaat opereren. NAT zal automatisch de private LAN IP adressen van alle PC's vertalen naar een enkel publiek IP-adres als de pakketten de firewall naar het Internet verlaten. Er is een speciale reeks van IP-adressen gereserveerd voor NAT op private LANs. Volgens RFC 1918 kunnen de volgende reeksen IP-adressen gebruikt worden op private netwerken die nooit direct op het publieke Internet gerouteerd worden. Eerste IP Laatste IP 10.0.0.0 10.255.255.255 172.16.0.0 172.31.255.255 192.168.0.0 192.168.255.255 IP<acronym>NAT</acronym> NAT en IPFILTER ipnat NAT regels worden geladen met ipnat. De NAT regels worden vaak opgeslagen in /etc/ipnat.rules. Meer details staan in &man.ipnat.8;. Bij het maken van wijzigingen aan de NAT-regels nadat NAT gestart is, wordt aangeraden de wijziging aan het bestand met regels te maken en daarna ipnat te gebruiken om alle actieve NAT-regels te wissen. Daarna kunnen de regels uit het bestand weer als volgt geladen worden: &prompt.root; ipnat -CF -f /etc/ipnat.rules Gebruiksgegevens over NAT kunnen getoond worden met: &prompt.root; ipnat -s De huidige inhoud van de NAT tabellen kan getoond worden met: &prompt.root; ipnat -l Met het volgende commando kan de uitgebreide rapportage worden ingeschakeld en dan wordt informatie over het verwerken van verkeer en de actieve regels getoond: &prompt.root; ipnat -v IP<acronym>NAT</acronym> regels NAT regels zijn erg flexibel en er kunnen veel dingen mee gedaan worden om behoeften van bedrijven en thuisgebruikers in te vullen. De syntaxis van de regels die hier wordt toegelicht is vereenvoudigd om te passen bij een niet-commerciële omgeving. De complete syntaxis is na te lezen in &man.ipnat.5;. De syntaxis voor een NAT regel ziet er ongeveer als volgt uit: map IF LAN_IP_REEKS -> PUBLIEK_ADRES De regel begint met het sleutelwoord map. IF dient vervangen te worden door de aanduiding van de externe interface. LAN_IP_REEKS is de reeks die clients op een LAN gebruiken, meestal iets van 192.168.1.0/24. PUBLIEK_ADRES kan het publieke IP adres zijn of een speciaal sleutelwoord 0.32, wat betekent dat het IP adres van IF gebruikt moet worden. Hoe <acronym>NAT</acronym> werkt Een pakket komt vanaf het LAN aan bij de firewall en heeft een publieke bestemming. Het wordt verwerkt door de filterregels voor inkomend verkeer en daarna krijgt NAT de kans zijn regels op het pakket toe te passen. De regels worden van boven naar beneden toegepast en de eerste regel die van toepassing is wint. NAT controleert voor alle regels het pakket op interfacenaam en bron IP adres. Als de interfacenaam van een pakket past bij een NAT regel dan wordt het bron IP adres van dat pakket gecontroleerd, dat is dus een IP adres op het private LAN, om te bekijken of het valt in de reeks die is opgegeven aan de linkerkant van een NAT regel. Als ook dat klopt, dan wordt het bron IP adres van het pakket vervangen (rewritten) door een publiek IP adres dat verkregen kan zijn met het sleutelwoord 0.32. NAT werkt dan zijn interne NAT tabel bij, zodat als er een pakket uit die sessie terugkomt van het publieke Internet, dat pakket weer gepast kan worden bij het originele private IP adres en door de firewallregels gefilterd kan worden om daarna, als dat mag, naar een client gestuurd te worden. IP<acronym>NAT</acronym> inschakelen Voor IPNAT zijn de onderstaande instellingen in /etc/rc.conf beschikbaar. Om verkeer tussen interfaces te kunnen routeren: gateway_enable="YES" Om IPNAT automatisch te starten: ipnat_enable="YES" Om aan te geven waar de IPNAT regels staan: ipnat_rules="/etc/ipnat.rules" <acronym>NAT</acronym> voor een groot LAN Voor netwerken met grote aantallen PC's of netwerken met meerdere LAN's kan het een probleem worden om al die private IP adressen met één enkel publiek IP adres te vervangen, omdat vaak dezelfde poortnummers gebruikt worden. Er zijn twee manieren om dit probleem op te lossen. Aangeven welke poorten te gebruiken Een normale regel voor NAT ziet er als volgt uit: map dc0 192.168.1.0/24 -> 0.32 Met de bovenstaande regel blijft de bronpoort ongewijzigd als het pakket door IPNAT gaat. Door gebruik te maken van het sleutelwoord portmap kan IPNAT ingesteld worden om alleen bronpoorten in de aangegeven reeks te gebruiken. Zo stelt de onderstaande regel in dat IPNAT de bronpoort aanpast naar een poortnummer dat in de aangegeven reeks valt: map dc0 192.168.1.0/24 -> 0.32 portmap tcp/udp 20000:60000 Het kan nog eenvoudiger door gebruik te maken van het sleutelwoord auto zodat IPNAT zelf bepaalt welke poorten gebruikt kunnen worden: map dc0 192.168.1.0/24 -> 0.32 portmap tcp/udp auto Meerdere publieke adressen gebruiken In grote netwerken komt er een moment waarop er gewoon te veel adressen zijn om te bedienen met één IP adres. Als er een blok van publiekelijke IP adressen beschikbaar is, dan kunnen deze adressen gebruikt worden in een poel, welke door IPNAT gebruikt kan worden om één van de adressen te gebruiken als uitgaand adres. Bijvoorbeeld om alle pakketten te verstoppen achter één een enkel IP adres: map dc0 192.168.1.0/24 -> 204.134.75.1 Een reeks van publiekelijke IP adressen kan gespecificeerd worden met een netwerkmasker: map dc0 192.168.1.0/24 -> 204.134.75.1-10 of door gebruik van de CIDR notatie: map dc0 192.168.1.0/24 -> 204.134.75.0/24 Poorten omleiden Het is erg gebruikelijk om een webserver, mailserver, database server en DNS server op verschillende computers op een LAN te draaien. Het uitgaande verkeer van die servers kan dan met NAT afgehandeld worden, maar er moet ook ingesteld worden dat inkomend verkeer bij de juiste computer terecht komt. IPNAT gebruikt daarvoor de opties in NAT waarmee verkeer omgeleid kan worden. Als bijvoorbeeld een webserver op het LAN-adres 10.0.10.25 draait en het enkele publieke IP adres zou 20.20.20.5 zijn, dan zou de regel er als volgt uit zien: rdr dc0 20.20.20.5/32 port 80 -> 10.0.10.25 port 80 of: rdr dc0 0.0.0.0/32 port 80 -> 10.0.10.25 port 80 Voor een DNS server op een LAN die ook vanuit Internet bereikbaar met zijn en die draait op 10.0.10.33 zou de regel er als volgt uit zien: rdr dc0 20.20.20.5/32 port 53 -> 10.0.10.33 port 53 udp FTP en <acronym>NAT</acronym> FTP is dinosaurus uit het tijdperk van voor Internet was zoals het nu is, toen onderzoeksinstellingen met elkaar verbonden waren via huurlijnen en FTP de aangewezen methode was om bestanden met elkaar uit te wisselen. Maar bij het gebruik van FTP worden gebruikersnaam en wachtwoord als platte tekst verzonden en het protocol is nooit aangepast. FTP is er in twee smaken: actief en passief. Het verschil zit 'm in hoe het datakanaal wordt opgezet. De passieve variant is veiliger voor een gebruiker omdat bij deze variant beide communicatiekanalen door de cliënt zelf worden opgezet. Op de volgende pagina zijn details over FTP na te lezen: . IP<acronym>NAT</acronym>-regels IPNAT heeft een speciale FTP-proxy ingebouwd die kan worden ingeschakeld met een NAT-map-regel. Die kan al het uitgaande verkeer monitoren wat betreft opstartverzoeken voor sessies voor actieve en passieve FTP en dynamisch tijdelijke filterregels maken die alleen het poortnummer dat echt in gebruik is voor het datakanaal doorlaten. Hiermee wordt een veiligheidsrisico dat normaal gepaard gaat met FTP, namelijk het toestaan van grote reeksen hoge poortnummers, weggenomen. De volgende regel handelt al het FTP verkeer van het LAN af: map dc0 10.0.10.0/29 -> 0/32 proxy port 21 ftp/tcp De regel hieronder handelt het FTP verkeer van de gateway zelf af: map dc0 0.0.0.0/0 -> 0/32 proxy port 21 ftp/tcp Deze laatste regel handelt al het niet-FTP verkeer voor het LAN af: map dc0 10.0.10.0/29 -> 0/32 De FTP-afbeeldregel hoort voor de normale regels te staan. Alle pakketten worden als eerste vergeleken met de eerste regel en zo verder. Eerst wordt gekeken over de interfacenaam overeenkomt, daarna het bron IP adres van het LAN en dan of het een FTP pakket is. Als dat allemaal klopt, dan maakt de speciale FTP proxy een tijdelijke filterregel die de pakketten uit de FTP sessie naar binnen en buiten doorlaat en ook NAT toepast op de FTP pakketten. Alle pakketten van het LAN die niet van het protocoltype FTP zijn en dus niet bij de eerste regel passen, worden tegen de derde regel gehouden die van toepassing is vanwege de interface en bron IP adres, zodat er dan NAT op toegepast wordt. IP<acronym>NAT</acronym> FTP filterregels Als de NAT-FTP-proxy wordt gebruikt is er maar één filterregel voor FTP nodig. Zonder de FTP-proxy zouden er drie regels nodig zijn: # Sta LAN client toe te FTP-en naar Internet # Actieve en passieve modes pass out quick on rl0 proto tcp from any to any port = 21 flags S keep state # Sta opzetten van het datakanaal voor passieve mode toe voor hoge poorten pass out quick on rl0 proto tcp from any to any port > 1024 flags S keep state # Laat het datakanaal van de FTP server binnen voor actieve mode pass in quick on rl0 proto tcp from any to any port = 20 flags S keep state IPFW firewall IPFW IPFIREWALL (IPFW) is een firewall die binnen &os; wordt ontwikkeld en onderhouden door vrijwillige leden van de staf. Het maakt gebruik van verouderde staatloze regels en een verouderde techniek om te realiseren wat eenvoudige stateful logica zou kunnen heten. De verzameling voorbeeldregels van IPFW (die in /etc/rc.firewall en /etc/rc.firewall6 staan) uit de standaard &os;-installatie is redelijk eenvoudig en niet voorbereid om zonder wijzigingen gebruikt te worden. Het voorbeeld maakt geen gebruik van stateful filteren, wat een voordeel is in de meeste situaties. Daarom worden deze regels niet als basis gebruikt in dit onderdeel. De staatloze syntaxis van IPFW is krachtig door de technisch geavanceerde mogelijkheden van de regelsyntaxis die de kennis van de gemiddelde gebruiker van firewalls ver overstijgt. IPFW is gericht op de professionele gebruiker of de gevorderde thuisgebruiker die hoge eisen stelt aan de wijze waarop er met pakketten wordt omgegaan. Voordat de kracht van de IPFW regels echt ingezet kan worden, moet de gebruiker veel weten over de verschillende protocollen en de wijze waarop pakketten in elkaar zitten. Het tot op dat niveau behandelen van stof valt buiten de doelstellingen van dit Handboek. IPFW bestaat uit zeven componenten: de verwerkingseenheid voor de firewallregels, verantwoording, loggen, regels met divert (omleiden) waarmee NAT gebruikt kan worden en de speciale gevorderde mogelijkheden voor bandbreedtebeheer met DUMMYNET, de fwd rule forward-mogelijkheid, de bridge-mogelijkheden en de ipstealth-mogelijkheden. IPFW ondersteunt zowel IPv4 als IPv6. IPFW inschakelen IPFW inschakelen IPFW zit bij de basisinstallatie van &os; als een losse tijdens runtime laadbare module. Het systeem laadt de kernelmodule dynamisch als in rc.conf de regel firewall_enable="YES" staat. IPFW hoeft niet in de &os; kernel gecompileerd te worden. Na het rebooten van een systeem met firewall_enable="YES" in rc.conf is het volgende bericht op het scherm te zien tijdens het booten: ipfw2 initialized, divert disabled, rule-based forwarding disabled, default to deny, logging disabled In de laadbare module zit de mogelijkheid om te loggen gecompileerd. Er is een knop in /etc/sysctl.conf om loggen aan te zetten en de uitgebreide loglimiet in te stellen. Door deze regels toe te voegen, staat loggen aan bij toekomstige herstarts: net.inet.ip.fw.verbose=1 net.inet.ip.fw.verbose_limit=5 Kernelopties kernelopties IPFIREWALL kernelopties IPFIREWALL_VERBOSE kernelopties IPFIREWALL_VERBOSE_LIMIT IPFW kernelopties Het is niet verplicht om IPFW in te schakelen door het mee te compileren in de &os; kernel. Dit wordt alleen beschreven als achtergrondinformatie. options IPFIREWALL Met IPFIREWALL wordt IPFW ingeschakeld als deel van de kernel. options IPFIREWALL_VERBOSE Met IPFIREWALL_VERBOSE wordt het loggen van pakketten die worden verwerkt met IPFW mogelijk die het sleutelwoord log in een regel hebben staan. options IPFIREWALL_VERBOSE_LIMIT=5 Limiteert het aantal pakketten dat per regel wordt gelogd via &man.syslogd.8;. Deze optie kan gebruikt worden in vijandige omgevingen waar de activiteit van een firewall gelogd moet worden. Hierdoor kan een mogelijke ontzegging van dienst aanval door het vol laten lopen van syslog voorkomen worden. kernelopties IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_DEFAULT_TO_ACCEPT Met IPFIREWALL_DEFAULT_TO_ACCEPT wordt standaard alles door de firewall doorgelaten. Dit wordt aangeraden als iemand voor het eerst een firewall opzet. kernelopties IPDIVERT options IPDIVERT Met IPDIVERT wordt de NAT functionaliteit ingeschakeld. De firewall zal alle binnenkomende en uitgaande pakketten blokkeren als de kerneloptie IPFIREWALL_DEFAULT_TO_ACCEPT of een regel om deze verbindingen expliciet toe te staan ontbreekt. <filename>/etc/rc.conf</filename> opties Start de firewall: firewall_enable="YES" Om één van de standaard firewall types die geleverd wordt door &os; te selecteren, lees /etc/rc.firewall, maak een selectie en plaats het in de volgende regel: firewall_type="open" Beschikbare waardes voor deze instelling zijn: open — laat al het verkeer door. client — beschermt alleen deze machine. simple — beschermt het hele netwerk. closed — blokkeert alle IP-verkeer, behalve voor lokaal verkeer. UNKNOWN — voorkomt het laden de firewall-regels. bestandsnaam — absoluut pad naar een bestand dat firewall-regels bevat. Het is mogelijk om twee verschillende manieren te gebruiken voor speciaal gemaakte regels voor de ipfw firewall. één daarvan is door het zetten van de firewall_type variabele naar een absoluut pad van een bestand, welke firewall-regels bevat, zonder enige specifieke opties voor &man.ipfw.8;. Het volgende is een eenvoudig voorbeeld van een bestand met regelverzamelingen dat al het inkomend en uitgaand verkeer blokkeert: add deny in add deny out Aan de andere kant is het mogelijk om de variabele firewall_script in te stellen op een absoluut pad van een uitvoerbaar script, welke inclusief ipfw commando's uitgevoerd wordt tijdens het opstarten van het systeem. Een geldig script met regels dat gelijkwaardig is aan het bestand met regels hierboven, zou het volgende zijn: #!/bin/sh ipfw -q flush ipfw add deny in ipfw add deny out Als firewall_type is gezet naar client of simple moeten de standaard regels die gevonden kunnen worden in /etc/rc.firewall gecontroleerd worden om te zien of deze configuratie voldoet voor de machine. Let ook op dat alle voorbeelden die gebruikt zijn in dit hoofdstuk ervan uitgaan dat de firewall_script variabele gezet is naar /etc/ipfw.rules. Om loggen in te schakelen: firewall_logging="YES" Het enige dat de variabele firewall_logging doet is de sysctl variabele net.inet.ip.fw.verbose op de waarde 1 zetten (zie ). Er is geen variabele in rc.conf om logboeklimieten in te stellen, maar dat kan ingesteld worden via een sysctl variabele, handmatig of via /etc/sysctl.conf: net.inet.ip.fw.verbose_limit=5 Als de machine in kwestie een gateway is, dus Network Address Translation (NAT) diensten levert via &man.natd.8;, dan staat in meer informatie over de benodigde instellingen voor /etc/rc.conf. Het commando <command>IPFW</command> ipfw Gewoonlijk wordt ipfw gebruikt om met de hand enkelvoudige regels toe te voegen of te verwijderen als IPFW actief is. Het probleem met deze methode is dat, als het systeem wordt uitgezet alle regels die gewijzigd of verwijderd zijn verloren gaan. Door alle regels in een bestand op te nemen dat bij het booten wordt geladen of door het bestand waarin de wijzigingen zijn gemaakt als een machine draait te laden bestaat die probleem niet. Met ipfw kunnen de actieve regels van de firewall op het scherm getoond worden. De verantwoordingsmogelijkeden van &man.ipfw.8; maken dynamisch tellers aan voor iedere regel en houden die bij voor alle pakketten die van toepassing zijn op die regel. Tijdens het testen van een regel is het afbeelden van de regel met zijn teller een van de manieren om te bepalen of de regel werkt. Om alle regels in volgorde te tonen: &prompt.root; ipfw list Om alle regels te tonen met de tijd waarop deze voor het laatst van toepassing was: &prompt.root; ipfw -t list Het volgende commando kan gebruikt worden om de verantwoordingsinformatie, pakkettellers en de regel zelf te tonen. De eerste kolom is het regelnummer met daarachter het aantal keren dat de regel van toepassing was voor inkomend verkeer, gevolgd door het aantal keren dat de regel van toepassing was voor uitgaand verkeer. Als laatste wordt de regel zelf getoond: &prompt.root; ipfw -a list Ook kunnen onder de statische regels de dynamische regels getoond worden: &prompt.root; ipfw -d list En de dynamische regels die verlopen zijn: &prompt.root; ipfw -d -e list De tellers op nul gesteld worden: &prompt.root; ipfw zero Alleen de tellers voor regel met nummer NUM op nul stellen: &prompt.root; ipfw zero NUM Sets van IPFW regels Een verzameling regels is een groep IPFW-regels die is gemaakt om pakketten toe te staan of te blokkeren op basis van de inhoud van dat pakket. De bi-directionele uitwisseling van pakketten tussen hosts bestaat uit een gesprek dat een sessie heet. De verzameling van firewallregels beoordeelt zowel de pakketten die aankomen van de host op het publieke Internet als de pakketten die op het systeem ontstaan als antwoord daarop. Iedere TCP/IP-dienst als telnet, www, mail, etc, heeft zijn eigen protocol en bevoorrechte (luister)poort. Pakketten bestemd voor een specifieke poort verlaten het bronadres via een onbevoorrechte (hogere) poort en doelen op de specifieke dienstpoort op het bestemmingsadres. Alle bovenstaande parameters (poorten en adressen) kunnen gebruikt worden als selectiecriteria om regels aan te maken die diensten doorlaten of blokkeren. IPFW volgorde regelverwerking Als een pakket de firewall binnenkomt wordt het vergeleken met de eerste regel in de set regels en zo gaat dat voor iedere regel vanaf boven tot beneden. Als een regel van toepassing is op een pakket, dan wordt het actieveld van de regel uitgevoerd. Dit wordt de de eerst passende regel wint zoekmethode genoemd. Als een pakket bij geen enkele regel past, dan wordt de verplichte standaardregel 65535 van IPFW toegepast, die alle pakketten weigert zonder een antwoord terug te sturen naar de verzender. Het zoeken gaat door na regels met count, skipto en tee. De instructies in dit onderdeel zijn gebaseerd op regels die gebruik maken van de stateful opties keep state, limit, in, out en via. Dit is het raamwerk waarmee een set van inclusieve firewallregels wordt samengesteld. Wees voorzichtig tijdens het werken met firewall-regels, het is gemakkelijk om uzelf uit te sluiten. Regelsyntaxis IPFW regelsyntaxis De regelsyntaxis zoals hier toegelicht is vereenvoudigd door alleen te tonen wat nodig is om een standaard inclusieve set met firewallregels te maken. De complete beschrijving van alle mogelijkheden staat in &man.ipfw.8;. Regels bevatten sleutelwoorden die in een bepaalde volgorde van links naar rechts op een regel horen te staan. Sleutelwoorden worden vet weergegeven. Sommige sleutelwoorden hebben subopties die zelf ook weer sleutelwoorden hebben die ook weer subopties kunnen hebben. Het karakter # wordt gebruikt om het begin van een opmerking te markeren en kan zowel op een eigen regel als achter een firewallregel staan. Lege regels worden genegeerd. CMD REGEL_NUMMER ACTIE LOGGEN SELECTIE STATEFUL CMD Iedere regel moet beginnen met add om hem toe te voegen aan de tabel met regels. REGEL_NUMMER Elke regel is geassocieerd met een regel_nummer van 1 tot en met 65535. ACTIE Bij een regel kunnen één of meer acties horen die worden uitgevoerd als een regel geldt voor een pakket. allow | accept | pass | permit Deze opties betekenen allemaal hetzelfde: als de regel geldt voor een pakket, laat dat pakket dan door en stop met het zoeken naar geldende regels. check-state Vergelijkt het pakket met de tabel met dynamische regels. Als het erin staat, dan wordt de actie van de dynamisch door deze regel gemaakte regel uitgevoerd. Anders wordt er verder gezocht door de regels. Een regel met check-state heeft geen selectiecriteria. Als er geen regel met check-state in de set met regels staat, dan wordt de tabel met dynamische regels bij het eerste voorkomen van keep-state of limit gecontroleerd. deny | drop Deze opties betekenen hetzelfde: als de regel geldt voor een pakket, blokkeer dat pakket dan en stop met het zoeken naar geldende regels. Loggen log of logamount Als een regel met het sleutelwoord log van toepassing is op een pakket, dan wordt er een bericht naar &man.syslogd.8; geschreven met de faciliteitsnaam SECURITY. Er wordt alleen een bericht geschreven als het aantal voor die regel gelogde pakketten niet groter is dan de instelling van de parameter logamount. Als er geen logamount is ingesteld, dan wordt de limiet uit de &man.sysctl.8; variabele net.inet.ip.fw.verbose_limit gehaald. In beide gevallen bestaat er in het geval de waarde nul is geen limiet. Als de limiet is bereikt, dan kan het loggen weer ingeschakeld worden door de teller voor het loggen weer op nul te zetten voor die regel met ipfw reset log. Er wordt gelogd als een pakket zeker past bij een regel, maar voordat de actie (bijvoorbeeld accept of deny) op een pakket wordt toegepast. Uiteindelijk bepaalt de gebruiker zelf voor welke regels loggen wordt ingeschakeld. Selectie De sleutelwoorden in deze paragraaf beschrijven de attributen van een pakket die gecontroleerd worden bij het bepalen of een regel wel of niet op een pakket van toepassing is. De attributen waarop gecontroleerd kan worden moeten in de beschreven volgorde gebruikt worden. udp | tcp | icmp Naast de hierboven aangegeven protocollen kunnen alle in /etc/protocols beschreven protocollen gebruikt worden. De waarde die wordt opgegeven is het protocol dat van toepassing moet zijn. Dit attribuut is verpicht. from bron to best De sleutelwoorden from en to worden gebruikt om te bekijken of een regel van toepassing is op IP-adressen. Een regel moet zowel bron- als bestemmingsadressen bevatten. any is een bijzonder sleutelwoord dat van toepassing is op alle IP-adressen. me is een bijzonder sleutelwoord dat van toepassing is op alle IP-adressen die ingesteld zijn op interfaces van een &os; systeem om de PC waarop de firewall draait te vertegenwoordigen (deze machine). Zo kan dit onderdeel bijvoorbeeld de volgende vormen aannemen: from me to any, from any to me, from 0.0.0.0/0 to any, from any to 0.0.0.0/0, from 0.0.0.0 to any, from any to 0.0.0.0 of from me to 0.0.0.0. IP-adressen mogen ingevoerd worden in de vorm numeriek, door punten gescheiden adres/maskerlengte (CIDR-notatie) of als een enkelvoudig IP-adres in de vorm numeriek, door punten gescheiden. De port net-mgmt/ipcalc kan gebruikt worden om de berekeningen e vereenvoudigen. Aanvullende informatie is beschikbaar op de webpagina van het programma: . poortnummer Wordt gebruikt voor protocollen die poortnummers ondersteunen (als TCP en UDP). Het gebruik van een poortnummer is verplicht. Er mogen ook dienstnamen uit /etc/services gebruikt worden in plaats van nummers. in | out Is op respectievelijk inkomende of uitgaande pakketten van toepassing. De sleutelwoorden in of out zijn verplicht in een regel. via IF Deze parameter geeft aan op welke interface de regel van toepassing is, waarbij IF de exacte naam van de bedoelde interface is. setup Dit is een verplicht sleutelwoord waarmee wordt aangegeven dat er gezocht wordt naar een pakket met het verzoek tot het opstarten van een TCP sessie. keep-state Dit is een verplicht sleutelwoord. Als er een pakket op een regel met keep-state van toepassing is, dan wordt er door de firewall een dynamische regel gemaakt die bi-directioneel verkeer zal toestaan tussen bron en bestemming en de bijbehorende poorten voor hetzelfde protocol. limit {bron-adr | bron-poort | best-adr | best-poort} De firewall staat maar N verbindingen toe met dezelfde groep parameters uit een regel. Er kunnen één of meer van de parameters bron- of bestemmingsadres en bron- en bestemmingspoort gebruikt worden. limit en keep-state kunnen niet in dezelfde regel gebruikt worden. De optie limit geeft dezelfde mogelijkheden als keep-state en voegt daar zijn eigen mogelijkheden aan toe. Regeloptie stateful IPFW stateful filteren Bij stateful filteren wordt verkeer bekeken als bi-directioneel verkeer dat samen een sessie vormt. Het heeft de mogelijkheid om te bepalen of de sessie tussen de zender en de ontvanger op de juiste wijze voortgaat. Alle pakketten die niet precies in de verwachting van een sessie passen worden automatisch als fout geblokkeerd. De optie check-state wordt gebruikt om aan te geven waar IPFW-regels tegen de mogelijkheden voor dynamische regels gehouden moeten worden. Als er een passende regel bij een pakket wordt gevonden, dan kan dat pakket de firewall verlaten en wordt een nieuwe regel gemaakt voor het volgende pakket dat wordt verwacht in de sessie. Als er geen regel van toepassing is op het pakket, dan wordt de volgende regel in de groep regels getest. De mogelijkheden voor dynamische regels zijn kwetsbaar voor een aanval die SYN-flood heet, waarmee wordt geprobeerd een zeer groot aantal regels aan te laten maken. Om deze aanval tegen te gaan, is de optie limit beschikbaar. Met deze optie kan het maximaal aantal simultane sessies geregeld worden op basis van bron en bestemmingsvelden. Als het aantal sessies gelijk aan het maximale aantal sessies is, wordt een pakket voor een nieuwe sessie geweigerd. Firewallberichten loggen IPFW loggen De voordelen van loggen zijn duidelijk. Het biedt de mogelijkheid om na het feit informatie na te zien als: welke pakketten heeft de firewall laten vallen, waar kwamen ze vandaan en waar gingen ze heen. Dit zijn allemaal voordelen als het gaat om uitvinden waar een aanvaller vandaan komt en wat hij heeft geprobeerd. Zelfs als logging is ingeschakeld logt IPFW nog niets uit zichzelf. De beheerder van de firewall beslist welke actieve regels iets weg moeten schrijven door het sleutelwoord log aan die regels toe te voegen. Gewoonlijk worden alleen deny-regels gelogd. Dit geldt bijvoorbeeld voor de deny-regel voor inkomende ICMP pings. Het is gebruikelijk om de standaardregel ipfw default deny everything te dupliceren, daar log in op te nemen, en deze als laatste in de verzameling met regels te plaatsen. Zo zijn alle pakketten te zien die niet voldeden aan ook maar één regel. Loggen heeft ook mogelijke nadelen. Het is mogelijk om te veel te loggen en dan om te komen in logboekgegevens die uiteindelijk een schijf kunnen vullen. Een DoS aanval om een schijf met logs te vullen is een van de oudst bekende typen DoS aanvallen. Logberichten van de firewall worden niet alleen naar syslogd geschreven, maar ook op het root console getoond waar ze snel erg vervelend kunnen worden. De kerneloptie IPFIREWALL_VERBOSE_LIMIT=5 beperkt het aantal opeenvolgende berichten dat naar &man.syslogd.8; wordt geschreven voor één specifieke regel. Als deze optie is ingeschakeld, worden in dit geval maximaal vijf berichten voor dezelfde regel gemeld. Als er meer berichten op dezelfde regel zouden zijn, zou dat als volgt aan syslogd gemeld worden: last message repeated 45 times Standaard worden alle gelogde pakketten weggeschreven naar /var/log/security, wat is ingesteld in /etc/syslog.conf. Regelscript bouwen De meeste ervaren gebruikers van IPFW maken een bestand waarin de regels staan en stellen dat zo op dat het als script uitgevoerd kan worden. Het grootste voordeel van deze methode is dat de firewallregels allemaal vervangen kunnen worden zonder dat het systeem opnieuw gestart moet worden. Deze methode is ook erg geschikt voor het testen van regels omdat de procedure zo vaak als nodig uitgevoerd kan worden. Omdat het een script is, kan er gebruik gemaakt worden van substitutie zodat veel gebruikte waarden verduidelijkt en in meerdere regels toegepast kunnen worden. In het volgende voorbeeld wordt hier gebruik van gemaakt. De syntaxis die in het script wordt gebruikt is compatibel met de shells &man.sh.1;, &man.csh.1; en &man.tcsh.1;. Velden waarvoor substitutie van toepassing is worden vooraf gegaan door het dollarteken $. Definities worden niet vooraf gegaan door het voorvoegsel $. De waarden van een substitutie moet omsloten worden door "dubbele aanhalingstekens". Een bestand met regels kan als volgt beginnen: ############### begin voorbeeldscript ipfw regels ############## # ipfw -q -f flush # Verwijder alle bestaande regels. # Stel standaarden in. oif="tun0" # uitgaande interface. odns="192.0.2.11" # IP adres DNS server ISP. cmd="ipfw -q add " # Voorvoegsel voor regel. ks="keep-state" # Te lui om iedere keer in te typen. $cmd 00500 check-state $cmd 00502 deny all from any to any frag $cmd 00501 deny tcp from any to any established $cmd 00600 allow tcp from any to any 80 out via $oif setup $ks $cmd 00610 allow tcp from any to $odns 53 out via $oif setup $ks $cmd 00611 allow udp from any to $odns 53 out via $oif $ks ################### einde voorbeeldscript ipfw regels ########### Dat is alles. De feitelijke functie van de regels is in dit voorbeeld van ondergeschikt belang. Dit was slechts een voorbeeld om het gebruik van substitutie te illustreren. Als het bovenstaande voorbeeld de inhoud van /etc/ipfw.rules was, dan kon het herladen worden met het volgende commando: &prompt.root; sh /etc/ipfw.rules /etc/ipfw.rules zou overal kunnen staan met iedere gewenste naam. Wat in het bovenstaande voorbeeld met een bestand is gerealiseerd, kan ook met de hand: &prompt.root; ipfw -q -f flush &prompt.root; ipfw -q add 00500 check-state &prompt.root; ipfw -q add 00502 deny all from any to any frag &prompt.root; ipfw -q add 00501 deny tcp from any to any established &prompt.root; ipfw -q add 00600 allow tcp from any to any 80 out via tun0 setup keep-state &prompt.root; ipfw -q add 00610 allow tcp from any to 192.0.2.11 53 out via tun0 setup keep-state &prompt.root; ipfw -q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep-state Verzameling van stateful regels De volgende verzameling van regels, waarin geen gebruik gemaakt wordt van NAT, is een voorbeeld van hoe een erg veilige inclusieve firewall kan worden opgezet. Een inclusieve firewall laat alleen diensten toe waarvoor pass regels van toepassing zijn en blokkeert al het andere verkeer. Firewalls die ontworpen zijn om hele netwerksegmenten te beschermen hebben tenminste twee interfaces waarvoor regels moeten zijn die de firewall in staat stellen zijn werk te doen. Alle &unix; systemen en dus ook &os; zijn zo ontworpen dat ze voor interne communicatie de interface lo0 en IP adres 127.0.0.1 gebruiken. De firewall moet dit interne verkeer gewoon doorgang laten vinden. Voor de interface die is verbonden met het publieke Internet worden regels gemaakt waarmee sessies naar het Internet mogelijk gemaakt worden en toegang wordt gegeven voor pakketten die uit die sessies terug komen. Dit kan de gebruikers-PPP-interface tun0 zijn of de netwerkkaart die is verbonden met een xDSL of kabelmodem. In gevallen dat er meer dan één netwerkkaart is aangesloten op het private netwerk achter de firewall, moeten er op de firewall-regels zijn om het verkeer tussen die interfaces vrije doorgang te geven. De regels worden opgedeeld in drie onderdelen: alle interfaces met vrije doorgang, uitgaand op publieke interfaces en inkomend op publieke interfaces. De volgorde van de regels in iedere sectie voor publieke interfaces moet zo zijn dat de regels die het meest gebruikt worden vóór de regels staan die minder vaak gebruikt worden. De laatste regel van een onderdeel geeft aan dat al het overige verkeer op die interface in die richting geblokkeerd en gelogd moet worden. In het onderdeel Uitgaand van de volgende verzameling regels staan alleen regels met allow die parameters bevatten om individuele diensten beschikbaar te maken die publieke toegang tot Internet mogen hebben Al die regels moeten gebruik maken van de opties proto, port, in/out, via en keep-state. De regels met proto tcp maken ook gebruik van setup om te bekijken of het een pakket betreft voor het opzetten van een sessie om de stateful functionaliteit aan te sturen. In het onderdeel Inkomend staan als eerste alle regels voor het blokkeren van ongewenste pakketten, om twee redenen. Als eerste kan het zo zijn dat kwaadaardige pakketten gedeeltelijk overeenkomen met legitiem verkeer. Deze regels moeten worden geblokkeerd in plaats van te worden binnengelaten, gebaseerd op hun gedeeltelijke overeenkomst met allow-regels. De tweede reden is dat nu ongewenste pakketten die vaak voorkomen en die bij voorkeur niet in de logboeken voorkomen niet meer van toepassing zijn op de laatste regel van het onderdeel waarin ze zouden worden gelogd. Met de laatste regel van dit onderdeel worden alle overige pakketten geblokkeerd en gelogd en ze kunnen bewijsmateriaal zijn in een zaak tegen iemand die heeft geprobeerd een systeem aan te vallen. Iets waarop u ook moet letten is dat voor al het verkeer dat wordt geweigerd geen antwoord wordt gestuurd. Die pakketten verdwijnen gewoon. Zo weet een aanvaller niet of een pakket het doelsysteem wel heeft bereikt. Zo kan een aanvaller geen informatie verzamelen over een systeem: hoe minder informatie er over een systeem beschikbaar is, hoe veiliger het is. Als er pakketten gelogd worden met een onbekend poortnummer, dan is de functie van dat poortnummer na te zoeken in /etc/services of op . Op de volgende link worden poortnummers van Trojans beschreven: . Voorbeeld van een set inclusieve regels Het volgende voorbeeld is een complete inclusieve verzameling van regels die geen gebruik maakt van NAT. Deze verzameling van regels is veilig om deze regels op uw eigen systemen te gebruiken. Dit kan door commentaar te maken van een pass-regel voor een dienst die niet gewenst is. Logberichten die niet gewenst zijn, zijn uit te sluiten door een deny-regel toe te voegen aan het onderdeel Inkomend. Voor de onderstaande regels dient de interfacenaam dc0 in iedere regel vervangen te worden door de interfacenaam van de netwerkkaart in het systeem die met het publieke Internet is verbonden. Voor gebruikers van PPP zou dat tun0 zijn. Er zit een merkbare structuur in het gebruik van deze regels: Alle regels die een verzoek zijn voor het opzetten van een sessie gebruiken keep-state. Alle diensten die vanaf Internet bereikbaar zijn gebruiken de optie limit om flooding te voorkomen. Alle regels gebruiken in of out om de richting aan te geven. Alle regels gebruiken via interfacenaam om aan te geven op welke interface de regel van toepassing is. De volgende regels zouden in /etc/ipfw.rules kunnen staan: ################ Begin bestand met IPFW regels ############################### # Verwijder eerst de bestaande regels. ipfw -q -f flush # Stel commando voorvoegsel in. cmd="ipfw -q add" pif="dc0" # Interfacenaam van NIC die verbinding # met het publieke Internet heeft. ################################################################# # Geen beperkingen op de interface aan de LAN kant. Alleen nodig # als er een LAN is. Wijzig xl0 naar de gebruikte interfacenaam. ################################################################# #$cmd 00005 allow all from any to any via xl0 ################################################################# # Geen beperkingen op de loopback interface. ################################################################# $cmd 00010 allow all from any to any via lo0 ################################################################# # Sta het pakket toe als het aan de tabel met dynamische regels # was toegevoegd met een 'allow keep-state' commando. ################################################################# $cmd 00015 check-state ################################################################# # Interface aan het publieke Internet (onderdeel Uitgaand). # Inspecteer verzoeken om een sessie te starten van achter de # firewall op het private netwerk of vanaf de server zelf naar # het publieke Internet. ################################################################# # Geef toegang tot de DNS server van de ISP. # x.x.x.x moet het IP adres van de DNS van de ISP zijn. # Dupliceer deze regels als een ISP meerdere DNS servers heeft. # Haal het IP adres evt. uit /etc/resolv.conf $cmd 00110 allow tcp from any to x.x.x.x 53 out via $pif setup keep-state $cmd 00111 allow udp from any to x.x.x.x 53 out via $pif keep-state # Geef toegang tot de DHCP server van de ISP voor kabel- en # xDSL-netwerken. Deze regel is niet nodig als gebruik gemaakt worden # van PPP naar het publieke Internet. In dat geval kan de hele groep # verwijderd worden. Gebruik de volgende regel en controleer het # logboek voor het IP adres. Wijzig dan het IP adres in de regel # commentaar hieronder en verwijder de eerste regel. $cmd 00120 allow log udp from any to any 67 out via $pif keep-state #$cmd 00120 allow udp from any to x.x.x.x 67 out via $pif keep-state # Sta niet beveiligd www verkeer toe. $cmd 00200 allow tcp from any to any 80 out via $pif setup keep-state # Sta beveiligd www verkeer over TLS SSL toe. $cmd 00220 allow tcp from any to any 443 out via $pif setup keep-state # Sta het verzenden en ontvangen van e-mail toe. $cmd 00230 allow tcp from any to any 25 out via $pif setup keep-state $cmd 00231 allow tcp from any to any 110 out via $pif setup keep-state # Sta de FreeBSD CVSUP functie toe voor uid root. $cmd 00240 allow tcp from me to any out via $pif setup keep-state uid root # Sta ping toe. $cmd 00250 allow icmp from any to any out via $pif keep-state # Sta Time toe naar buiten. $cmd 00260 allow tcp from any to any 37 out via $pif setup keep-state # Sta NNTP nieuws toe naar buiten. $cmd 00270 allow tcp from any to any 119 out via $pif setup keep-state # Sta beveiligde FTP, Telnet en SCP toe naar buiten. # Deze functie maakt gebruik van SSH (secure shell). $cmd 00280 allow tcp from any to any 22 out via $pif setup keep-state # Sta whois toe naar buiten. $cmd 00290 allow tcp from any to any 43 out via $pif setup keep-state # Blokkeer en log al het andere dat probeert buiten te komen. # Deze regel dwingt de 'block all' logica af. $cmd 00299 deny log all from any to any out via $pif ################################################################# # Interface aan het publieke Internet (onderdeel Inkomend). # Inspecteert pakketten die van het publieke Internet komen # met als bestemming de host zelf of het private netwerk. ################################################################# # Blokkeer al het verkeer voor niet-routeerbare of gereserveerde # adresreeksen. $cmd 00300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 privaat IP $cmd 00301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 privaat IP $cmd 00302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 privaat IP $cmd 00303 deny all from 127.0.0.0/8 to any in via $pif #loopback $cmd 00304 deny all from 0.0.0.0/8 to any in via $pif #loopback $cmd 00305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config $cmd 00306 deny all from 192.0.2.0/24 to any in via $pif #gereserveerd voor documentatie $cmd 00307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster interconnect $cmd 00308 deny all from 224.0.0.0/3 to any in via $pif #Klasse D & E multicast # Blokkeer publieke pings. $cmd 00310 deny icmp from any to any in via $pif # Blokkeer ident. $cmd 00315 deny tcp from any to any 113 in via $pif # Blokkeer alle Netbios diensten. 137=naam, 138=datagram, 139=sessie. # Netbios is de Windows® bestandsdeeldienst. # Blokkeer Windows hosts2 name server verzoeken 81. $cmd 00320 deny tcp from any to any 137 in via $pif $cmd 00321 deny tcp from any to any 138 in via $pif $cmd 00322 deny tcp from any to any 139 in via $pif $cmd 00323 deny tcp from any to any 81 in via $pif # Blokkeer gefragmenteerde pakketten. $cmd 00330 deny all from any to any frag in via $pif # Blokkeer ACK pakketten die niet in de tabel met dynamische regels # staan. $cmd 00332 deny tcp from any to any established in via $pif # Geef toegang tot de DHCP server van de ISP voor kabel- en # xDSL-netwerken. Deze regel is niet nodig als gebruik gemaakt worden # van PPP naar het publieke Internet. In dat geval kan de hele groep # verwijderd worden. Hier wordt hetzelfde IP adres gebruikt als in de # sectie voor Uitgaand verkeer. #$cmd 00360 allow udp from any to x.x.x.x 67 in via $pif keep-state # Sta inkomend webverkeer toe omdat er een Apache server draait. $cmd 00400 allow tcp from any to me 80 in via $pif setup limit src-addr 2 # Sta beveiligde FTP, telnet en SCP toe vanaf Internet. $cmd 00410 allow tcp from any to me 22 in via $pif setup limit src-addr 2 # Sta niet beveiligde telnet sessie toe vanaf het publieke Internet. # Dit heeft het label ``niet veilig'' omdat gebruikersnaam en # wachtwoord als platte tekst over Internet gaan. Als er geen telnet # server draait, hoeft deze regel niet actief te zijn. $cmd 00420 allow tcp from any to me 23 in via $pif setup limit src-addr 2 # Weiger en log alle niet toegestane inkomende verbindingen van buiten. $cmd 00499 deny log all from any to any in via $pif # Al het andere verkeer wordt standaard geblokkeerd. Weiger en log alle # pakketten die tot hier zijn gekomen om te bekijken welke het waren. $cmd 00999 deny log all from any to any ################ Einde bestand met IPFW regels ######################## Voorbeeld <acronym>NAT</acronym> en stateful regels NAT en IPFW Om NAT met IPFW te gebruiken moeten een extra aantal instellingen gemaakt worden. In het instellingenbestand voor de kernel moet option IPDIVERT toegevoegd worden aan de andere opties van IPFIREWALL. Naast de normale IPFW opties in /etc/rc.conf zijn de volgende nodig: natd_enable="YES" # Schakel NATD in natd_interface="rl0" # interfacenaam voor de publieke Internet NIC natd_flags="-dynamic -m" # -m = behoud poortnummers als mogelijk Stateful regels samen met de regel divert natd (Network Address Translation) gebruiken maakt het schrijven van regels veel gecompliceerder. De plaats van de regels met check-state en divert natd zijn van kritiek belang. De logica bestaat niet langer uit het eenvoudigweg van boven naar beneden doorwerken van de regels. Er wordt dan ook een nieuw type actie gebruik: skipto. Bij het gebruik van skipto is het verplicht iedere regel te nummeren zodat duidelijk is waar een skipto precies heen springt. Hieronder staat een groep regels zonder commentaar waarin een manier om pakketten door de groep regels te leiden wordt aangegeven. De verwerking begint met de eerste regel en er wordt steeds een volgende regel gecontroleerd tot het einde wordt bereikt of totdat een regel op het gecontroleerde pakket van toepassing is, en het pakket uit de firewall wordt vrijgelaten. In het voorbeeld zijn de regels 100, 101, 450, 500, en 510 van belang. Die regels regelen de vertaling van inkomende en uitgaande pakketten zodat er in de tabel met de dynamische keep-state-regels altijd het private IP-adres staat. Daarnaast is het van belang op te merken dat er in alle allow- en deny-regels de richting van het pakket wordt gecontroleerd (inkomend of uitgaand) en over welke interface het pakket gaat. Merk ook op dat alle uitgaande verzoeken voor het starten van een sessie met een skipto naar regel 500 gaan voor NAT. Stel dat een gebruiker zijn webbrowser gebruikt om een webpagina op te halen. Webpagina's worden over poort 80 verzonden. Er komt een pakket de firewall binnen dat niet past bij regel 100 omdat het naar buiten gaat en niet naar binnen. Het komt voorbij regel 101 omdat dit het eerste pakket is en er dus nog niets over in de dynamische keep-state tabel staat. Als het pakket bij 125 aankomt blijkt het te passen bij die regel. Het gaat naar buiten door de interface aan het publieke Internet. Het pakket heeft dan nog steeds het bron-IP-adres van het private LAN. Als blijkt dat deze regel geldt, dan gebeuren er twee dingen: door keep-state wordt er een regel in de dynamische keep-state tabel gezet en wordt de aangegeven actie uitgevoerd. De actie is onderdeel van de informatie uit de dynamische tabel. In dit geval is het skipto rule 500. In regel 500 wordt NAT op het IP-adres van het pakket toegepast en dan kan het weg. Dit is van groot belang. Dit pakket komt aan op zijn bestemming en als er een pakket als antwoord terug komt, dan begint de verwerking van het antwoordpakket weer van voor af aan. Nu voldoet het aan regel 100 en dus wordt het bestemmingsadres vertaald naar het bijbehorende IP-adres op het LAN. Daarna past het bij de check-state-regel en wordt een vermelding in de tabel gevonden wat betekent dat er een bestaande sessie is en wordt het doorgelaten naar het LAN. Het gaat dan naar de PC op het LAN die als eerste een pakket heeft verzonden en die verstuurt een nieuw pakket met de vraag om een volgend segment met gegevens naar de server. Nu blijkt bij controle van de check-state-regel dat die op het pakket van toepassing moet zijn en er staat een vermelding in de tabel voor uitgaand verkeer. Daarom wordt de bijbehorende actie skipto rule 500 uitgevoerd. Het pakket springt naar regel 500, er wordt NAT op toegepast en het kan zijn weg vervolgen. Wat betreft binnenkomende pakketten wordt alles dat onderdeel is van een bestaande sessie automatisch afgehandeld door de check-state-regel en de correct geplaatste divert natd-regels. Nu hoeven alleen de foute pakketten nog geweigerd te worden en moeten de inkomende geauthoriseerde diensten doorgelaten worden. In dit geval draait er een Apache server op de firewall-machine die vanaf Internet bereikbaar moet zijn. Het nieuwe inkomende pakket past bij regel 100 en het IP-adres wordt aangepast aan het interne IP-adres van de firewall-machine. Dat pakket wordt dan gecontroleerd op alle ongewenste eigenschappen en komt uiteindelijk aan bij regel 425 die van toepassing blijkt te zijn. In dat geval kunnen er twee dingen gebeuren: de pakketregel wordt in de dynamische keep-state tabel gezet, maar nu wordt het aantal nieuwe sessies dat van het bron IP-adres komt gelimiteerd tot twee. Dit is een bescherming tegen DoS-aanvallen op de dienst die op dat poortnummer wordt aangeboden. De actie is allow, dus het pakket wordt tot het LAN toegelaten. Voor het pakket dat als antwoord wordt verstuurd herkent de check-state regel dat het pakket bij een bestaande sessie hoort. Het stuurt het naar regel 500 voor NAT en stuurt het via de uitgaande interface weg. Voorbeeld Set Regels #1: #!/bin/sh cmd="ipfw -q add" skip="skipto 500" pif=rl0 ks="keep-state" good_tcpo="22,25,37,43,53,80,443,110,119" ipfw -q -f flush $cmd 002 allow all from any to any via xl0 # exclude LAN traffic $cmd 003 allow all from any to any via lo0 # exclude loopback traffic $cmd 100 divert natd ip from any to any in via $pif $cmd 101 check-state # Toegestaan uitgaand verkeer. $cmd 120 $skip udp from any to xx.168.240.2 53 out via $pif $ks $cmd 121 $skip udp from any to xx.168.240.5 53 out via $pif $ks $cmd 125 $skip tcp from any to any $good_tcpo out via $pif setup $ks $cmd 130 $skip icmp from any to any out via $pif $ks $cmd 135 $skip udp from any to any 123 out via $pif $ks # Blokkeer al het verkeer voor niet-routeerbare of gereserveerde # adresreeksen. $cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 privaat IP $cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 privaat IP $cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 privaat IP $cmd 303 deny all from 127.0.0.0/8 to any in via $pif #loopback $cmd 304 deny all from 0.0.0.0/8 to any in via $pif #loopback $cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config $cmd 306 deny all from 192.0.2.0/24 to any in via $pif #gereserveerd voor documentatie $cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster $cmd 308 deny all from 224.0.0.0/3 to any in via $pif #Klasse D & E multicast # Toegestaan inkomend verkeer. $cmd 400 allow udp from xx.70.207.54 to any 68 in $ks $cmd 420 allow tcp from any to me 80 in via $pif setup limit src-addr 1 $cmd 450 deny log ip from any to any # Dit is de 'skipto' locatie voor de uitgaande stateful regels. $cmd 500 divert natd ip from any to any out via $pif $cmd 510 allow ip from any to any ######################## Einde regels ################## Het volgende voorbeeld doet vrijwel hetzelfde als het bovenstaande, maar volgt een zelfdocumenterende stijl voor het opstellen van regels en commentaar waardoor minder ervaren gebruikers beter kunnen begrijpen wat de regels doen. Voorbeeld Set Regels #2: #!/bin/sh ################ Begin bestand met IPFW regels ############################### # Verwijder eerst de bestaande regels. ipfw -q -f flush # Stel commando voorvoegsel in. cmd="ipfw -q add" skip="skipto 800" pif="rl0" # Interfacenaam van NIC die verbinding # met het publieke Internet heeft. ################################################################# # Geen beperkingen op de interface aan de LAN kant. # Wijzig xl0 naar de gebruikte interfacenaam. ################################################################# $cmd 005 allow all from any to any via xl0 ################################################################# # Geen beperkingen op de loopback interface. ################################################################# $cmd 010 allow all from any to any via lo0 ################################################################# # Controleer of pakket inkomend is. NAT in dat geval. ################################################################# $cmd 014 divert natd ip from any to any in via $pif ################################################################# # Sta het pakket toe als het aan de tabel met dynamische regels # was toegevoegd met een 'allow keep-state' commando. ################################################################# $cmd 015 check-state ################################################################# # Interface aan het publieke Internet (onderdeel Uitgaand). # Inspecteer verzoeken om een sessie te starten van achter de # firewall op het private netwerk of vanaf de server zelf naar # het publieke Internet. ################################################################# # Geef toegang tot de DNS server van de ISP. # x.x.x.x moet het IP adres van de DNS van de ISP zijn. # Dupliceer deze regels als een ISP meerdere DNS servers heeft. # Haal het IP adres evt. uit /etc/resolv.conf $cmd 020 $skip tcp from any to x.x.x.x 53 out via $pif setup keep-state # Geef toegang tot de DHCP server van de ISP voor kabel en xDSL. $cmd 030 $skip udp from any to x.x.x.x 67 out via $pif keep-state # Sta niet beveiligd www verkeer toe. $cmd 040 $skip tcp from any to any 80 out via $pif setup keep-state # Sta beveiligd www verkeer over TLS SSL toe. $cmd 050 $skip tcp from any to any 443 out via $pif setup keep-state # Sta het verzenden en ontvangen van e-mail toe. $cmd 060 $skip tcp from any to any 25 out via $pif setup keep-state $cmd 061 $skip tcp from any to any 110 out via $pif setup keep-state # Sta de FreeBSD CVSUP functie toe voor uid root. $cmd 070 $skip tcp from me to any out via $pif setup keep-state uid root # Sta ping toe naar het publieke Internet. $cmd 080 $skip icmp from any to any out via $pif keep-state # Sta Time toe. $cmd 090 $skip tcp from any to any 37 out via $pif setup keep-state # Sta NNTP nieuws toe. $cmd 100 $skip tcp from any to any 119 out via $pif setup keep-state # Sta beveiligde FTP, Telnet en SCP toe. # Deze functie maakt gebruik van SSH (secure shell). $cmd 110 $skip tcp from any to any 22 out via $pif setup keep-state # Sta whois toe. $cmd 120 $skip tcp from any to any 43 out via $pif setup keep-state # Sta NPT tijdserver toe. $cmd 130 $skip udp from any to any 123 out via $pif keep-state ################################################################# # Interface aan het publieke Internet (onderdeel Inkomend). # Inspecteert pakketten die van het publieke Internet komen met # als bestemming deze gateway-server zelf of het private netwerk. ################################################################# # Blokkeer al het verkeer voor niet-routeerbare of gereserveerde # adresreeksen. $cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 privaat IP $cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 privaat IP $cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 privaat IP $cmd 303 deny all from 127.0.0.0/8 to any in via $pif #loopback $cmd 304 deny all from 0.0.0.0/8 to any in via $pif #loopback $cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config $cmd 306 deny all from 192.0.2.0/24 to any in via $pif #gereserveerd voor documentatie $cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster $cmd 308 deny all from 224.0.0.0/3 to any in via $pif #Klasse D & E multicast # Blokkeer ident. $cmd 315 deny tcp from any to any 113 in via $pif # Blokkeer alle Netbios diensten. 137=naam, 138=datagram, 139=sessie. # Netbios is de Windows® bestandsdeeldienst. # Blokkeer Windows hosts2 name server verzoeken 81. $cmd 320 deny tcp from any to any 137 in via $pif $cmd 321 deny tcp from any to any 138 in via $pif $cmd 322 deny tcp from any to any 139 in via $pif $cmd 323 deny tcp from any to any 81 in via $pif # Blokkeer gefragmenteerde pakketten. $cmd 330 deny all from any to any frag in via $pif # Blokkeer ACK pakketten die niet in de tabel met dynamische regels # staan. $cmd 332 deny tcp from any to any established in via $pif # Geef toegang tot de DHCP server van de ISP voor kabel- en # xDSL-netwerken. Deze regel is niet nodig als gebruik gemaakt worden # van PPP naar het publieke Internet. In dat geval kan de hele groep # verwijderd worden. Hier wordt hetzelfde IP adres gebruikt als in de # sectie voor Uitgaand verkeer. $cmd 360 allow udp from x.x.x.x to any 68 in via $pif keep-state # Sta inkomend webverkeer toe omdat er een Apache server draait. $cmd 370 allow tcp from any to me 80 in via $pif setup limit src-addr 2 # Sta beveiligde FTP, telnet en SCP toe vanaf Internet. $cmd 380 allow tcp from any to me 22 in via $pif setup limit src-addr 2 # Sta niet beveiligde telnet sessie toe vanaf het publieke Internet. # Dit heeft het label ``niet veilig'' omdat gebruikersnaam en # wachtwoord als platte tekst over Internet gaan. Als er geen telnet # server draait, hoeft deze regel niet actief te zijn. #$cmd 390 allow tcp from any to me 23 in via $pif setup limit src-addr 2 # Weiger en log alle niet toegestane inkomende verbindingen vanaf het # publieke Internet. $cmd 400 deny log all from any to any in via $pif # Weiger en log alle niet toegestane uitgaande verbindingen naar # Internet. $cmd 450 deny log all from any to any out via $pif # Dit is de 'skipto' locatie voor de uitgaande stateful regels $cmd 800 divert natd ip from any to any out via $pif $cmd 801 allow ip from any to any # Al het andere verkeer wordt standaard geblokkeerd. Weiger en log alle # pakketten die tot hier zijn gekomen om te bekijken welke het waren. $cmd 999 deny log all from any to any ################ Einde bestand met IPFW regels ######################## diff --git a/ru_RU.KOI8-R/books/porters-handbook/book.xml b/ru_RU.KOI8-R/books/porters-handbook/book.xml index a97cb079ec..43500136bd 100644 --- a/ru_RU.KOI8-R/books/porters-handbook/book.xml +++ b/ru_RU.KOI8-R/books/porters-handbook/book.xml @@ -1,16167 +1,16165 @@ òÕËÏ×ÏÄÓÔ×Ï FreeBSD ÐÏ ÓÏÚÄÁÎÉÀ ÐÏÒÔÏ× The FreeBSD Documentation Project áÐÒÅÌØ 2000 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 The FreeBSD Documentation Project &trademarks; &legalnotice; $FreeBSD$ ÷×ÅÄÅÎÉÅ ëÏÌÌÅËÃÉÑ ÐÏÒÔÏ× FreeBSD Ñ×ÌÑÅÔÓÑ ÓÐÏÓÏÂÏÍ, ÉÓÐÏÌØÚÕÅÍÙÍ ÐÒÁËÔÉÞÅÓËÉ ËÁÖÄÙÍ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÐÒÉÌÏÖÅÎÉÊ ("ÐÏÒÔÏ×") ÎÁ FreeBSD. ëÁË É ÐÏÞÔÉ ×Ó£ ÏÓÔÁÌØÎÏÅ ×Ï FreeBSD, ÜÔÁ ÓÉÓÔÅÍÁ × ÏÓÎÏ×ÎÏÍ Ñ×ÌÑÅÔÓÑ ÄÏÂÒÏ×ÏÌØÎÏ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÍ ÎÁÞÉÎÁÎÉÅÍ. ÷ÁÖÎÏ ÉÍÅÔØ ÜÔÏ × ×ÉÄÕ ÐÒÉ ÞÔÅÎÉÉ ÄÁÎÎÏÇÏ ÄÏËÕÍÅÎÔÁ. ÷Ï FreeBSD ÌÀÂÏÊ ÍÏÖÅÔ ÐÒÉÓÌÁÔØ ÎÏ×ÙÊ ÐÏÒÔ ÌÉÂÏ ÉÚßÑ×ÉÔØ ÖÅÌÁÎÉÅ ÐÏÄÄÅÒÖÉ×ÁÔØ ÓÕÝÅÓÔ×ÕÀÝÉÊ ÐÏÒÔ, ÅÓÌÉ ÅÇÏ ÎÉËÔÏ ÅÝ£ ÎÉËÔÏ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ—×ÁÍ ÎÅ ÎÕÖÎÏ ÉÍÅÔØ ÎÉËÁËÉÈ ÏÓÏÂÙÈ ÐÒÉ×ÉÌÅÇÉÊ ÎÁ ×ÎÅÓÅÎÉÅ ÉÚÍÅÎÅÎÉÊ, ÞÔÏÂÙ ÜÔÏ ÄÅÌÁÔØ. ëÁË ÓÁÍÏÍÕ ÓÄÅÌÁÔØ ÎÏ×ÙÊ ÐÏÒÔ éÔÁË, ×Ù ÉÎÔÅÒÅÓÕÅÔÅÓØ, ËÁË ÓÏÚÄÁÔØ ÓÏÂÓÔ×ÅÎÎÙÊ ÐÏÒÔ ÉÌÉ ÏÂÎÏ×ÉÔØ ÓÕÝÅÓÔ×ÕÀÝÉÊ? ÷ÅÌÉËÏÌÅÐÎÏ! îÉÖÅ ÎÁÈÏÄÑÔÓÑ ÎÅËÏÔÏÒÙÅ ÕËÁÚÁÎÉÑ ÐÏ ÓÏÚÄÁÎÉÀ ÎÏ×ÏÇÏ ÐÏÒÔÁ ÄÌÑ FreeBSD. åÓÌÉ ×Ù ÈÏÔÉÔÅ ÏÂÎÏ×ÉÔØ ÓÕÝÅÓÔ×ÕÀÝÉÊ ÐÏÒÔ, ×Ù ÄÏÌÖÎÙ ÐÒÏÞÅÓÔØ ÉÈ, Á ÚÁÔÅÍ . åÓÌÉ ÜÔÏÔ ÄÏËÕÍÅÎÔ ÎÅÄÏÓÔÁÔÏÞÎÏ ÐÏÄÒÏÂÅÎ, ×Ù ÄÏÌÖÎÙ ÏÂÒÁÔÉÔØÓÑ Ë ÆÁÊÌÕ /usr/ports/Mk/bsd.port.mk, ËÏÔÏÒÙÊ ×ËÌÀÞÁÅÔÓÑ × make-ÆÁÊÌ ËÁÖÄÏÇÏ ÐÏÒÔÁ. ïÎ ÈÏÒÏÛÏ ÐÒÏËÏÍÍÅÎÔÉÒÏ×ÁÎ, É ÄÁÖÅ ÅÓÌÉ ×Ù ÎÅ ÚÁÎÉÍÁÅÔÅÓØ ÈÁËÉÎÇÏÍ make-ÆÁÊÌÏ× ËÁÖÄÏÄÎÅ×ÎÏ, ÉÚ ÎÅÇÏ ×Ù ÓÍÏÖÅÔÅ ÕÚÎÁÔØ ÍÎÏÇÏ ÎÏ×ÏÇÏ. ëÒÏÍÅ ÔÏÇÏ, ËÏÎËÒÅÔÎÙÅ ×ÏÐÒÏÓÙ ÍÏÖÎÏ ÚÁÄÁÔØ, ÐÏÓÌÁ× ÐÉÓØÍÏ ÎÁ ÁÄÒÅÓ &a.ports;. ôÏÌØËÏ ÞÁÓÔØ ÐÅÒÅÍÅÎÎÙÈ (VAR), ËÏÔÏÒÙÅ ÍÏÇÕÔ ÂÙÔØ ÐÅÒÅÏÐÒÅÄÅÌÅÎÙ, ÏÐÉÓÁÎÙ × ÜÔÏÍ ÄÏËÕÍÅÎÔÅ. âÏÌØÛÉÎÓÔ×Ï (ÅÓÌÉ ÎÅ ×ÓÅ) ÏÐÉÓÁÎÙ × ÎÁÞÁÌÅ ÆÁÊÌÁ /usr/ports/Mk/bsd.port.mk; ÏÓÔÁÌØÎÙÅ, ÓËÏÒÅÅ ×ÓÅÇÏ, ÔÏÖÅ ÔÁÍ ÏÐÉÓÁÎÙ. úÁÍÅÔØÔÅ, ÞÔÏ × ÜÔÏÍ ÆÁÊÌÅ ÉÓÐÏÌØÚÕÅÔÓÑ ÎÅÓÔÁÎÄÁÒÔÎÁÑ ÎÁÓÔÒÏÊËÁ ÛÁÇÁ ÔÁÂÕÌÑÃÉÉ: Emacs É Vim ÄÏÌÖÎÙ ÒÁÓÐÏÚÎÁÔØ ÜÔÏ ÐÒÉ ÚÁÇÒÕÚËÅ ÆÁÊÌÁ. ëÁË &man.vi.1;, ÔÁË É &man.ex.1; ÍÏÇÕÔ ÂÙÔØ ÎÁÓÔÒÏÅÎÙ ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÒÁ×ÉÌØÎÏÇÏ ÚÎÁÞÅÎÉÑ ×ÙÄÁÞÅÊ ËÏÍÁÎÄÙ :set tabstop=4 ÐÏÓÌÅ ÚÁÇÒÕÚËÉ ÆÁÊÌÁ. éÝÅÔÅ, Ó ÞÅÇÏ ÂÙ ÎÁÞÁÔØ ÐÏÐÒÏÝÅ? ðÏÓÍÏÔÒÉÔÅ ÎÁ ÐÅÒÅÞÅÎØ ÚÁÐÒÏÛÅÎÎÙÈ ÐÏÒÔÏ×, ÅÓÔØ ÌÉ ÔÁÍ ÔÁËÉÅ, ÎÁÄ ËÏÔÏÒÙÍÉ ×Ù ÍÏÖÅÔÅ ÒÁÂÏÔÁÔØ. âÙÓÔÒÏÅ ÐÏÒÔÉÒÏ×ÁÎÉÅ ÷ ÜÔÏÍ ÒÁÚÄÅÌÅ ÏÐÉÓÁÎÏ, ËÁË ÓÏÚÄÁÔØ ÎÏ×ÙÊ ÐÏÒÔ ÎÁ ÓËÏÒÕÀ ÒÕËÕ. ÷Ï ÍÎÏÇÉÈ ÓÌÕÞÁÑÈ ÜÔÏÇÏ ÂÙ×ÁÅÔ ÎÅ ÄÏÓÔÁÔÏÞÎÏ, ÔÁË ÞÔÏ ×ÁÍ ÎÕÖÎÏ ÂÕÄÅÔ ÐÒÏÞÉÔÁÔØ ÄÏËÕÍÅÎÔ ÄÁÌØÛÅ. ÷Ï-ÐÅÒ×ÙÈ, ÓËÁÞÁÊÔÅ ÏÒÉÇÉÎÁÌØÎÙÊ tar-ÆÁÊÌ É ÐÏÍÅÓÔÉÔÅ ÅÇÏ × ËÁÔÁÌÏÇ DISTDIR, ËÏÔÏÒÙÊ ÐÏ ÕÍÏÌÞÁÎÉÀ ÅÓÔØ ÎÅ ÞÔÏ ÉÎÏÅ, ËÁË /usr/ports/distfiles. úÄÅÓØ ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ, ÞÔÏ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ËÏÍÐÉÌÉÒÕÅÔÓÑ ÂÅÚ ÐÒÏÂÌÅÍ ËÁË ÅÓÔØ, ÔÏ ÅÓÔØ ÄÌÑ ÒÁÂÏÔÙ ÐÒÉÌÏÖÅÎÉÑ ÎÁ ×ÁÛÅÊ ÓÉÓÔÅÍÅ FreeBSD ÎÅ ÐÏÔÒÅÂÏ×ÁÌÏÓØ ÁÂÓÏÌÀÔÎÏ ÎÉËÁËÉÈ ÉÚÍÅÎÅÎÉÊ. åÓÌÉ ÔÒÅÂÏ×ÁÌÏÓØ ÞÔÏ-ÔÏ ÉÚÍÅÎÉÔØ, ÔÏ ×ÁÍ ÐÒÉÄÅÔÓÑ ÏÂÒÁÔÉÔØÓÑ ÔÁËÖÅ É Ë ÓÌÅÄÕÀÝÅÍÕ ÒÁÚÄÅÌÕ. óÏÚÄÁÎÉÅ ÆÁÊÌÁ <filename>Makefile</filename> íÉÎÉÍÁÌØÎÙÊ Makefile ÂÕÄÅÔ ×ÙÇÌÑÄÅÔØ ÐÒÉÍÅÒÎÏ ÔÁË: # New ports collection makefile for: oneko # Date created: 5 December 1994 # Whom: asami # # $FreeBSD$ # PORTNAME= oneko PORTVERSION= 1.1b CATEGORIES= games MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ MAINTAINER= asami@FreeBSD.org MAN1= oneko.1 MANCOMPRESSED= yes USE_IMAKE= yes .include <bsd.port.mk> ðÏÓÍÏÔÒÉÍ, ÓÍÏÖÅÔÅ ÌÉ ×Ù ÅÇÏ ÐÏÎÑÔØ. îÅ ÏÂÒÁÝÁÊÔÅ ×ÎÉÍÁÎÉÅ ÎÁ ÓÏÄÅÒÖÉÍÏÅ ÓÔÒÏÞËÉ $FreeBSD$, ÏÎÁ ÂÕÄÅÔ ÚÁÐÏÌÎÅÎÁ Á×ÔÏÍÁÔÉÞÅÓËÉ ÓÉÓÔÅÍÏÊ SVN, ËÏÇÄÁ ÐÏÒÔ ÂÕÄÅÔ ÉÍÐÏÒÔÉÒÏ×ÁÎ × ÎÁÛÅ ÄÅÒÅ×Ï ÐÏÒÔÏ×. ÷Ù ÍÏÖÅÔÅ ÎÁÊÔÉ ÂÏÌÅÅ ÐÏÄÒÏÂÎÙÊ ÐÒÉÍÅÒ × ÒÁÚÄÅÌÅ ÐÒÉÍÅÒ Makefile. óÏÚÄÁÎÉÅ ÉÎÆÏÒÍÁÃÉÏÎÎÙÈ ÆÁÊÌÏ× éÍÅÅÔÓÑ Ä×Á ÉÎÆÏÒÍÁÃÉÏÎÎÙÈ ÆÁÊÌÁ, ËÏÔÏÒÙÅ ÔÒÅÂÕÀÔÓÑ ÄÌÑ ÌÀÂÏÇÏ ÐÏÒÔÁ, ×ÎÅ ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÔÏÇÏ, Ñ×ÌÑÅÔÓÑ ÌÉ ÏÎ ÐÁËÅÔÏÍ ÉÌÉ ÎÅÔ. üÔÏ pkg-descr É pkg-plist. ðÒÅÆÉËÓ pkg- ÏÔÌÉÞÁÅÔ ÉÈ ÏÔ ÄÒÕÇÉÈ ÆÁÊÌÏ×. <filename>pkg-descr</filename> üÔÏ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÅ ËÒÁÔËÏÅ ÏÐÉÓÁÎÉÅ ÐÏÒÔÁ. ïÔ ÏÄÎÏÇÏ ÄÏ ÎÅÓËÏÌØËÉÈ ÁÂÚÁÃÅ×, ËÒÁÔËÏ ÏÐÉÓÙ×ÁÀÝÉÈ, ÞÔÏ ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ ÐÏÒÔ, ÂÕÄÅÔ ÄÏÓÔÁÔÏÞÎÏ. üÔÏ ÎÅ ÒÕËÏ×ÏÄÓÔ×Ï É ÎÅ ÐÏÄÒÏÂÎÅÊÛÅÅ ÏÐÉÓÁÎÉÅ ÔÏÇÏ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ ÉÌÉ ËÏÍÐÉÌÉÒÏ×ÁÔØ ÐÏÒÔ! ðÏÖÁÌÕÊÓÔÁ, ÂÕÄØÔÅ ×ÎÉÍÁÔÅÌØÎÙ ÐÒÉ ËÏÐÉÒÏ×ÁÎÉÉ ÔÅËÓÔÁ ÉÚ README ÉÌÉ ÓÔÒÁÎÉà ÓÐÒÁ×ÏÞÎÉËÁ; ÓÌÉÛËÏÍ ÞÁÓÔÏ ÏÎÉ ÎÅ Ñ×ÌÑÀÔÓÑ ËÒÁÔËÉÍ ÏÐÉÓÁÎÉÅÍ ÐÏÒÔÁ ÉÌÉ ÉÍÅÀÔ ÎÅÕÄÏÂÎÙÊ ÆÏÒÍÁÔ (ÎÁÐÒÉÍÅÒ, ÓÔÒÁÎÉÃÙ ÓÐÒÁ×ÏÞÎÉËÁ ×ÙÒÏ×ÎÅÎÙ ÐÒÏÂÅÌÁÍÉ). åÓÌÉ ÐÏÒÔÉÒÕÅÍÏÅ ÐÒÉÌÏÖÅÎÉÅ ÉÍÅÅÔ ÏÆÉÃÉÁÌØÎÕÀ ÓÔÒÁÎÉÞËÕ éÎÔÅÒÎÅÔ, ÕËÁÖÉÔÅ ÅÅ ÚÄÅÓØ. ðÅÒÅÄ ÏÄÎÉÍ ÉÚ ÓÁÊÔÏ× ÄÏÂÁרÔÅ ÓÌÏ×Ï WWW: ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ×ÓÐÏÍÏÇÁÔÅÌØÎÙÅ ÕÔÉÌÉÔÙ ÒÁÂÏÔÁÌÉ ÐÒÁ×ÉÌØÎÏ. óÌÅÄÕÀÝÉÊ ÐÒÉÍÅÒ ÐÏËÁÚÙ×ÁÅÔ, ËÁË ÄÏÌÖÅÎ ×ÙÇÌÑÄÅÔØ ×ÁÛ pkg-descr: This is a port of oneko, in which a cat chases a poor mouse all over the screen. : (etc.) WWW: http://www.oneko.org/ <filename>pkg-plist</filename> úÄÅÓØ ÐÅÒÅÞÉÓÌÑÀÔÓÑ ×ÓÅ ÆÁÊÌÙ, ÕÓÔÁÎÁ×ÌÉ×ÁÅÍÙÅ ÐÏÒÔÏÍ. åÇÏ ÔÁËÖÅ ÎÁÚÙ×ÁÀÔ ÓÐÉÓËÏÍ ÄÌÑ ÕÐÁËÏ×ËÉ, ÐÏÔÏÍÕ ÞÔÏ ÐÁËÅÔ ÇÅÎÅÒÉÒÕÅÔÓÑ ÕÐÁËÏ×ËÏÊ ÆÁÊÌÏ×, ËÏÔÏÒÙÅ ÚÄÅÓØ ÕËÁÚÁÎÙ. éÍÅÎÁ ÐÕÔÅÊ ÕËÁÚÙ×ÁÀÔÓÑ ÏÔÎÏÓÉÔÅÌØÎÏ ÕÓÔÁÎÏ×ÏÞÎÏÇÏ ÐÒÅÆÉËÓÁ (ÏÂÙÞÎÏ /usr/local). åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ ÐÅÒÅÍÅÎÎÙÅ MANn (Á ×Ù ÄÏÌÖÎÙ ÜÔÏ ÄÅÌÁÔØ), ÔÏ ÕËÁÚÙ×ÁÔØ ÓÔÒÁÎÉÃÙ ÓÐÒÁ×ÏÞÎÉËÁ ÚÄÅÓØ ÎÅ ÎÕÖÎÏ. åÓÌÉ ÐÏÒÔ ×Ï ×ÒÅÍÑ ÕÓÔÁÎÏ×ËÉ ÓÏÚÄÁÅÔ ËÁÔÁÌÏÇÉ, ÕÂÅÄÉÔÅÓØ, ÞÔÏ ÄÏÂÁ×ÉÌÉ ÓÔÒÏËÕ @dirrm ÄÌÑ ÕÄÁÌÅÎÉÑ ËÁÔÁÌÏÇÏ× ÐÒÉ ÕÄÁÌÅÎÉÉ ÐÁËÅÔÁ. ÷ÏÔ ÍÁÌÅÎØËÉÊ ÐÒÉÍÅÒ: bin/oneko lib/X11/app-defaults/Oneko lib/X11/oneko/cat1.xpm lib/X11/oneko/cat2.xpm lib/X11/oneko/mouse.xpm @dirrm lib/X11/oneko ïÂÒÁÔÉÔÅÓØ Ë ÓÔÒÁÎÉÃÅ ÓÐÒÁ×ÏÞÎÏÊ ÓÉÓÔÅÍÙ ÐÏ ËÏÍÁÎÄÅ &man.pkg.create.1; Ó ÐÏÄÒÏÂÎÙÍ ÏÐÉÓÁÎÉÅÍ ÆÏÒÍÁÔÁ ÓÐÉÓËÁ ÕÐÁËÏ×ËÉ. òÅËÏÍÅÎÄÕÅÔÓÑ, ÞÔÏÂÙ ÉÍÅÎÁ ÆÁÊÌÏ× × ÜÔÏÍ ÓÐÉÓËÅ ÂÙÌÉ ÏÔÓÏÒÔÉÒÏ×ÁÎÙ × ÁÌÆÁ×ÉÔÎÏÍ ÐÏÒÑÄËÅ. üÔÏ ÐÏÚ×ÏÌÉÔ ÚÎÁÞÉÔÅÌØÎÏ ÏÂÌÅÇÞÉÔØ Ó×ÅÒËÕ ÉÚÍÅÎÅÎÉÊ ÐÒÉ ÏÂÎÏ×ÌÅÎÉÉ ÐÏÒÔÁ. óÏÚÄÁÎÉÅ ÓÐÉÓËÁ ÕÐÁËÏ×ËÉ ×ÒÕÞÎÕÀ ÍÏÖÅÔ ÏËÁÚÁÔØÓÑ ×ÅÓØÍÁ ÔÒÕÄÏ£ÍËÏÊ ÚÁÄÁÞÅÊ. åÓÌÉ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÂÏÌØÛÏÅ ËÏÌÉÞÅÓÔ×Ï ÆÁÊÌÏ×, ÒÁÚÄÅÌ Ï Á×ÔÏÍÁÔÉÞÅÓËÏÍ ÐÏÓÔÒÏÅÎÉÉ ÓÐÉÓËÁ ÕÐÁËÏ×ËÉ ÍÏÖÅÔ ÐÏÍÏÞØ ÓÜËÏÎÏÍÉÔØ ×ÒÅÍÑ. óÕÝÅÓÔ×ÕÅÔ ÔÏÌØËÏ ÏÄÎÏ ÉÓËÌÀÞÅÎÉÅ, ËÏÇÄÁ Õ ÐÏÒÔÁ ÍÏÖÅÔ ÏÔÓÕÔÓÔ×Ï×ÁÔØ pkg-plist. åÓÌÉ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÌÉÛØ ÎÅÓËÏÌØËÏ ÆÁÊÌÏ×, Á ×ÏÚÍÏÖÎÏ, É ËÁÔÁÌÏÇÏ×, ÔÏ ÏÎÉ ÍÏÇÕÔ ÂÙÔØ ÐÅÒÅÞÉÓÌÅÎÙ × ÐÅÒÅÍÅÎÎÙÈ PLIST_FILES É PLIST_DIRS, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, ×ÎÕÔÒÉ ÆÁÊÌÁ Makefile ÐÏÒÔÁ. ë ÐÒÉÍÅÒÕ, ÍÙ ÍÏÖÅÍ ÏÂÏÊÔÉÓØ ÂÅÚ ÆÁÊÌÁ pkg-plist Õ ÐÒÉ×ÅÄ£ÎÎÏÇÏ ×ÙÛÅ ÐÏÒÔÁ oneko, ÄÏÂÁ×É× ÓÌÅÄÕÀÝÉÅ ÓÔÒÏËÉ × Makefile: PLIST_FILES= bin/oneko \ lib/X11/app-defaults/Oneko \ lib/X11/oneko/cat1.xpm \ lib/X11/oneko/cat2.xpm \ lib/X11/oneko/mouse.xpm PLIST_DIRS= lib/X11/oneko ëÏÎÅÞÎÏ, ÐÅÒÅÍÅÎÎÁÑ PLIST_DIRS ÎÅ ÄÏÌÖÎÁ ÚÁÄÁ×ÁÔØÓÑ, ÅÓÌÉ ÐÏÒÔ ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÎÉËÁËÉÈ ËÁÔÁÌÏÇÏ×. ïÂÒÁÔÎÏÊ ÓÔÏÒÏÎÏÊ ÔÁËÏÇÏ ÓÐÏÓÏÂÁ ÐÅÒÅÞÉÓÌÅÎÉÑ ÆÁÊÌÏ× É ËÁÔÁÌÏÇÏ× ÐÏÒÔÁ Ñ×ÌÑÅÔÓÑ ÎÅ×ÏÚÍÏÖÎÏÓÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÅÊ ËÏÍÁÎÄ, ÏÐÉÓÁÎÎÙÈ × &man.pkg.create.1;. ðÏÜÔÏÍÕ ÏÎ ÐÏÄÈÏÄÉÔ ÄÌÑ ÐÒÏÓÔÙÈ ÐÏÒÔÏ×, ÞÔÏ ÄÅÌÁÅÔ ÉÈ ÅÝ£ ÂÏÌÅÅ ÐÒÏÓÔÙÍÉ. ïÄÎÏ×ÒÅÍÅÎÎÏ Ó ÜÔÉÍ ÐÏÌÏÖÉÔÅÌØÎÙÍ ÍÏÍÅÎÔÏÍ Ñ×ÌÑÅÔÓÑ ÕÍÅÎØÛÅÎÉÅ ËÏÌÉÞÅÓÔ×Á ÆÁÊÌÏ× × ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ×. ðÏÖÁÌÕÊÓÔÁ, ÐÏÄÕÍÁÊÔÅ ÎÁÄ ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÜÔÏÊ ÔÅÈÎÉËÉ, ÐÒÅÖÄÅ ÞÅÍ ÓÏÚÄÁ×ÁÔØ pkg-plist. äÁÌÅÅ ÍÙ Õ×ÉÄÉÍ, ËÁË ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÁÊÌÙ pkg-plist É PLIST_FILES ×ÙÐÏÌÎÅÎÉÑ ÂÏÌÅÅ ÓÌÏÖÎÙÈ ÚÁÄÁÞ. óÏÚÄÁÎÉÅ ÆÁÊÌÁ Ó ËÏÎÔÒÏÌØÎÏÊ ÓÕÍÍÏÊ ðÒÏÓÔÏ ××ÅÄÉÔÅ ËÏÍÁÎÄÕ make makesum. ðÒÁ×ÉÌÁ ÕÔÉÌÉÔÙ make Á×ÔÏÍÁÔÉÞÅÓËÉ ÓÇÅÎÅÒÉÒÕÀÔ ÆÁÊÌ distinfo. åÓÌÉ Õ ÉÚ×ÌÅËÁÅÍÏÇÏ ÆÁÊÌÁ ÒÅÇÕÌÑÒÎÏ ÍÅÎÑÅÔÓÑ ËÏÎÔÒÏÌØÎÁÑ ÓÕÍÍÁ É ×Ù ÎÅ ÓÏÍÎÅ×ÁÅÔÅÓØ × ÎÁÄÅÖÎÏÓÔÉ ÉÓÔÏÞÎÉËÁ (Ô.Å. ÏÎ ÐÏÌÕÞÅÎ ÉÚ CD ÐÒÏÉÚ×ÏÄÉÔÅÌÑ, ÌÉÂÏ ÅÖÅÄÎÅ×ÎÏ ÏÂÎÏ×ÌÑÅÔÓÑ ÄÏËÕÍÅÎÔÁÃÉÑ), ÔÏ ×Ù ÄÏÌÖÎÙ ÕËÁÚÁÔØ ÜÔÉ ÆÁÊÌÙ × ÐÅÒÅÍÅÎÎÏÊ IGNOREFILES. ôÏÇÄÁ ËÏÎÔÒÏÌØÎÁÑ ÓÕÍÍÁ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ make makesum ÄÌÑ ÜÔÏÇÏ ÆÁÊÌÁ ÓÏÚÄÁ×ÁÔØÓÑ ÎÅ ÂÕÄÅÔ, Á ×ÍÅÓÔÏ ÜÔÏÇÏ ÄÌÑ ÎÅÇÏ ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎÏ ÚÎÁÞÅÎÉÅ IGNORE. ôÅÓÔÉÒÏ×ÁÎÉÅ ÐÏÒÔÁ ÷Ù ÄÏÌÖÎÙ ÕÄÏÓÔÏ×ÅÒÉÔØÓÑ, ÞÔÏ ÐÒÁ×ÉÌÁ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÁ ×ÙÐÏÌÎÑÀÔ ÉÍÅÎÎÏ ÔÏ, ÞÔÏ ×Ù ÈÏÔÉÔÅ, ×ËÌÀÞÁÑ ÓÏÚÄÁÎÉÅ ÐÁËÅÔÁ ÄÌÑ ÐÏÒÔÁ. ÷ÏÔ ÔÅ ×ÁÖÎÙÅ ×ÅÝÉ, ËÏÔÏÒÙÅ ×Ù ÄÏÌÖÎÙ ÐÒÏ×ÅÒÉÔØ. pkg-plist ÎÅ ÓÏÄÅÒÖÉÔ ÎÉÞÅÇÏ Ó×ÅÒÈ ÔÏÇÏ, ÞÔÏ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ×ÁÛÉÍ ÐÏÒÔÏÍ pkg-plist ÓÏÄÅÒÖÉÔ ÁÂÓÏÌÀÔÎÏ ×ÓÅ, ÞÔÏ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ×ÁÛÉÍ ÐÏÒÔÏÍ ÷ÁÛ ÐÏÒÔ ÍÏÖÅÔ ÂÙÔØ ÐÅÒÅÕÓÔÁÎÏ×ÌÅÎ ÍÎÏÖÅÓÔ×Ï ÒÁÚ Ó ÐÏÍÏÝØÀ ÕËÁÚÁÎÉÑ ÃÅÌÉ reinstall ÷ÁÛ ÐÏÒÔ ÐÏÄÞÉÝÁÅÔ ÚÁ ÓÏÂÏÊ ÐÏÓÌÅ Ó×ÏÅÇÏ ÕÄÁÌÅÎÉÑ òÅËÏÍÅÎÄÕÅÍÙÊ ÐÏÒÑÄÏË ÐÒÏ×ÅÒËÉ make install make package make deinstall pkg_add package-name make deinstall make reinstall make package make readme ðÒÏ×ÅÒØÔÅ, ÞÔÏ ÎÉ ÎÁ ÛÁÇÅ package, ÎÉ ÎÁ ÛÁÇÅ deinstall ÎÅ ×ÙÄÁÅÔÓÑ ÎÉËÁËÉÈ ÐÒÅÄÕÐÒÅÖÄÅÎÉÊ. ðÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ ÛÁÇÁ 3 ÐÒÏ×ÅÒØÔÅ, ÞÔÏ ×ÓÅ ÎÏ×ÙÅ ËÁÔÁÌÏÇÉ ÂÙÌÉ ÕÓÐÅÛÎÏ ÕÄÁÌÅÎÙ. ôÁËÖÅ ÐÏÐÒÏÂÕÊÔÅ ÚÁÐÕÓÔÉÔØ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ ÛÁÇÁ 4, ÞÔÏÂÙ ÕÂÅÄÉÔØÓÑ, ÞÔÏ ÏÎÏ ÒÁÂÏÔÁÅÔ ÐÒÁ×ÉÌØÎÏ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÉÚ ÐÁËÅÔÁ. îÁÉÂÏÌÅÅ ÏÓÎÏ×ÁÔÅÌØÎÙÍ ÓÐÏÓÏÂÏÍ Á×ÔÏÍÁÔÉÚÁÃÉÉ ÜÔÉÈ ÛÁÇÏ× Ñ×ÌÑÅÔÓÑ ÕÓÔÁÎÏ×ËÁ ports tinderbox. üÔÏ ÏÂÅÓÐÅÞÉ×ÁÅÔ jails, × ËÏÔÏÒÙÈ ×Ù ÍÏÖÅÔÅ ÐÒÏ×ÅÒÑÔØ ×ÓÅ ×ÙÛÅÕËÁÚÁÎÎÙÅ ÛÁÇÉ ÂÅÚ ÉÚÍÅÎÅÎÉÑ ÓÏÓÔÏÑÎÉÑ × ×ÁÛÅÊ ÏÓÎÏ×ÎÏÊ ÓÉÓÔÅÍÅ. äÌÑ ÐÏÌÕÞÅÎÉÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÓÍÏÔÒÉÔÅ ports/ports-mgmt/tinderbox. ðÒÏ×ÅÒËÁ ×ÁÛÅÇÏ ÐÏÒÔÁ ÕÔÉÌÉÔÏÊ <command>portlint</command> âÕÄØÔÅ ÄÏÂÒÙ, ÐÏÌØÚÕÊÔÅÓØ ÕÔÉÌÉÔÏÊ portlint ÄÌÑ ÐÒÏ×ÅÒËÉ ÔÏÇÏ, ÞÔÏ ×ÁÛ ÐÏÒÔ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÎÁÛÉÍ ÒÅËÏÍÅÎÄÁÃÉÑÍ. ðÒÏÇÒÁÍÍÁ ports-mgmt/portlint Ñ×ÌÑÅÔÓÑ ÞÁÓÔØÀ ëÏÌÌÅËÃÉÉ ðÏÒÔÏ×. ÷ ÞÁÓÔÎÏÓÔÉ, ×Ù ÍÏÖÅÔÅ ÚÁÈÏÔÅÔØ ÐÒÏ×ÅÒÉÔØ, ÐÒÁ×ÉÌØÎÏ ÌÉ ÓÆÏÒÍÉÒÏ×ÁÎ ÆÁÊÌ Makefile É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍ ÌÉ ÏÂÒÁÚÏÍ ÉÍÅÎÏ×ÁÎ ÐÁËÅÔ. ðÏÓÙÌËÁ ÎÏ×ÏÇÏ ÐÏÒÔÁ ðÅÒÅÄ ÐÏÓÙÌËÏÊ ÎÏ×ÏÇÏ ÐÏÒÔÁ ÕÄÏÓÔÏ×ÅÒØÔÅÓØ, ÞÔÏ ×Ù ÐÒÏÞÉÔÁÌÉ ÒÁÚÄÅÌ Ï ÔÏÍ, ÞÔÏ ÍÏÖÎÏ É ÎÅÌØÚÑ ÄÅÌÁÔØ. ôÅÐÅÒØ, ËÏÇÄÁ ×Ù ÓÞÁÓÔÌÉ×Ù ÏÔ Ó×ÏÅÇÏ ÐÅÒ×ÏÇÏ ÐÏÒÔÁ, ÅÄÉÎÓÔ×ÅÎÎÏÅ, ÞÔÏ ÏÓÔÁÌÏÓØ ÓÄÅÌÁÔØ, ÜÔÏ ×ËÌÀÞÉÔØ ÅÇÏ × ÏÓÎÏ×ÎÏÅ ÄÅÒÅ×Ï ÐÏÒÔÏ× &os; É ÏÓÞÁÓÔÌÉ×ÉÔØ ÜÔÉÍ ×ÓÅÈ ÏÓÔÁÌØÎÙÈ. îÁÍ ÎÅ ÎÕÖÅÎ ÎÉ ×ÁÛ ËÁÔÁÌÏÇ work, ÎÉ ÐÁËÅÔ pkgname.tgz, ÔÁË ÞÔÏ ÕÄÁÌÉÔÅ ÉÈ ÐÒÑÍÏ ÓÅÊÞÁÓ. úÁÔÅÍ (ÐÒÅÄÐÏÌÏÖÉÍ, ÞÔÏ ×ÁÛ ÐÏÒÔ ÚÏ×ÕÔ oneko) ÐÅÒÅÊÄÉÔÅ × ËÁÔÁÌÏÇ ×ÙÛÅ, ÔÁÍ, ÇÄÅ ÎÁÈÏÄÉÔÓÑ ËÁÔÁÌÏÇ oneko, É ÎÁÂÅÒÉÔÅ ÓÌÅÄÕÀÝÅÅ: shar `find oneko` > oneko.shar ÷ËÌÀÞÉÔÅ ×ÁÛ ÆÁÊÌ oneko.shar × ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ É ÐÏÛÌÉÔÅ ÅÇÏ Ó ÐÏÍÏÝØÀ ÐÒÏÇÒÁÍÍÙ &man.send-pr.1; (ÏÂÒÁÔÉÔÅÓØ Ë ÒÁÚÄÅÌÕ óÏÏÂÝÅÎÉÑ Ï ÏÛÉÂËÁÈ É ÏÂÝÉÅ ÚÁÍÅÞÁÎÉÑ ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÄÒÏÂÎÏÊ ÉÎÆÏÒÍÁÃÉÉ Ï ÐÒÏÇÒÁÍÍÅ &man.send-pr.1;). îÅ ÚÁÂÕÄØÔÅ ÕËÁÚÁÔØ × ÓÏÏÂÝÅÎÉÉ ËÁÔÅÇÏÒÉÀ ports É ËÌÁÓÓ change-request (îÅ ÕËÁÚÙ×ÁÊÔÅ, ÞÔÏ ÓÏÏÂÝÅÎÉÅ ÉÍÅÅÔ ÓÔÁÔÕÓ confidential!). äÏÂÁרÔÅ ÔÁËÖÅ ËÒÁÔËÏÅ ÏÐÉÓÁÎÉÅ ÐÒÏÇÒÁÍÍÙ, ÐÏÒÔ ËÏÔÏÒÏÊ ×Ù ÓÏÚÄÁÌÉ, × ÒÁÚÄÅÌ Description ÏÔÐÒÁ×ÌÑÅÍÏÇÏ PR (ÎÁÐÒÉÍÅÒ, ÓÏÄÅÒÖÉÍÏÅ COMMENT × ÓÏËÒÁÝÅÎÎÏÍ ×ÉÄÅ) É ÓÁÍ ÆÁÊÌ × ×ÉÄÅ ÁÒÈÉ×Á shar, ÐÏÍÅÓÔÉ× ÅÇÏ × ÒÁÚÄÅÌ Fix. ÷Ù ÍÏÖÅÔÅ ÚÎÁÞÉÔÅÌØÎÏ ÏÂÌÅÇÞÉÔØ ÎÁÛÕ ÒÁÂÏÔÕ, ÅÓÌÉ × ÔÅÍÕ ÓÏÏÂÝÅÎÉÑ Ï ÐÒÏÂÌÅÍÅ ÐÏÍÅÓÔÉÔÅ ÈÏÒÏÛÅÅ ÏÐÉÓÁÎÉÅ. íÙ ÒÅËÏÍÅÎÄÕÅÍ ÎÅÞÔÏ ×ÒÏÄÅ New port: <ËÁÔÅÇÏÒÉÑ>/<ÎÁÚ×ÁÎÉÅ ÐÏÒÔÁ> <ËÒÁÔËÏÅ ÏÐÉÓÁÎÉÅ ÐÏÒÔÁ> ÄÌÑ ÎÏ×ÙÈ ÐÏÒÔÏ×. åÓÌÉ ×Ù ÓÌÅÄÕÅÔÅ ÜÔÏÊ ÓÈÅÍÅ, ÔÏ ÛÁÎÓÙ ÎÁ ÔÏ, ÞÔÏ ÎÁ ×ÁÛÅ PR ×ÓËÏÒÅ ËÔÏ-ÔÏ ×ÚÇÌÑÎÅÔ, ÇÏÒÁÚÄÏ ×ÙÛÅ. ðÏ×ÔÏÒÉÍ ÅÝ£ ÒÁÚ, ÞÔÏ ÎÅ ÎÕÖÎÏ ×ËÌÀÞÁÔØ ÎÉ ÏÒÉÇÉÎÁÌØÎÙÊ ÆÁÊÌ Ó ÄÉÓÔÒÉÂÕÔÉ×ÏÍ, ÎÉ ËÁÔÁÌÏÇ work, ÎÉ ÐÁËÅÔ, ÐÏÓÔÒÏÅÎÎÙÊ ×ÁÍÉ ËÏÍÁÎÄÏÊ make package; ÄÌÑ ÎÏ×ÙÈ ÐÏÒÔÏ× ÉÓÐÏÌØÚÕÊÔÅ &man.shar.1;, ÎÏ ÎÅ &man.diff.1;. ðÏÓÌÅ ÔÏÇÏ ËÁË ×Ù ÐÏÓÌÁÌÉ ÐÏÒÔ, ÐÏÖÁÌÕÊÓÔÁ, ÐÏÔÅÒÐÉÔÅ. éÎÏÇÄÁ ×ËÌÀÞÅÎÉÅ ÎÏ×ÏÇÏ ÐÏÒÔÁ ×Ï &os; ÍÏÖÅÔ ÚÁÎÑÔØ ÄÏ ÎÅÓËÏÌØËÉÈ ÍÅÓÑÃÅ×, Á ÉÎÏÇÄÁ ×ÓÅÇÏ ÎÅÓËÏÌØËÏ ÄÎÅÊ. úÄÅÓØ ×Ù ÍÏÖÅÔÅ ÎÁÊÔÉ ÓÐÉÓÏË PR ÄÌÑ ÐÏÒÔÏ× ÏÖÉÄÁÀÝÉÈ Ó×ÏÅÊ ÏÞÅÒÅÄÉ ÄÌÑ ×ËÌÀÞÅÎÉÑ ×Ï &os;. íÙ ÒÁÓÓÍÏÔÒÉÍ ×ÁÛ ÐÏÒÔ, ÐÒÉ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ×ÅÒÎ£Í ÅÇÏ ÏÂÒÁÔÎÏ, Á ÚÁÔÅÍ ×ËÌÀÞÉÍ ÐÏÒÔ × ÎÁÛÅ ÄÅÒÅ×Ï. ÷ÁÛÅ ÉÍÑ ÔÁËÖÅ ÐÏÑ×ÉÔÓÑ × ÓÐÉÓËÅ äÏÐÏÌÎÉÔÅÌØÎÙÈ ËÏÎÔÒÉÂÕÔÏÒÏ× ÐÒÏÅËÔÁ FreeBSD É ÄÒÕÇÉÈ ÆÁÊÌÁÈ. òÁÚ×Å ÜÔÏ ÎÅ ×ÅÌÉËÏÌÅÐÎÏ?!? :-) íÅÄÌÅÎÎÏÅ ÐÏÒÔÉÒÏ×ÁÎÉÅ éÔÁË, ×ÓÅ ÏËÁÚÁÌÏÓØ ÎÅ ÔÁË ÕÖ É ÐÒÏÓÔÏ, É ÐÏÒÔ ÐÏÔÒÅÂÏ×ÁÌ ÎÅËÏÔÏÒÙÈ ÍÏÄÉÆÉËÁÃÉÊ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÚÁÓÔÁ×ÉÔØ ÅÇÏ ÒÁÂÏÔÁÔØ. ÷ ÜÔÏÍ ÒÁÚÄÅÌÅ ÍÙ ÒÁÓÓËÁÖÅÍ, ÛÁÇ ÚÁ ÛÁÇÏÍ, ËÁË ÅÇÏ ÍÏÄÉÆÉÃÉÒÏ×ÁÔØ, ÞÔÏÂÙ ÏÎ ÒÁÂÏÔÁÌ Ó ÎÁÛÅÊ ÓÉÓÔÅÍÏÊ ÐÏÒÔÏ×. ëÁË ×Ó£ ÜÔÏ ÒÁÂÏÔÁÅÔ ÷Ï-ÐÅÒ×ÙÈ, ËÏÇÄÁ ÐÏÌØÚÏ×ÁÔÅÌØ ÄÁÅÔ × Ó×ÏÅÍ ËÁÔÁÌÏÇÅ Ó ÐÏÒÔÏÍ ËÏÍÁÎÄÕ make, ÐÒÏÉÓÈÏÄÉÔ ÃÅÌÁÑ ÞÅÒÅÄÁ ÓÏÂÙÔÉÊ. ÷Ï ×ÒÅÍÑ ÞÔÅÎÉÑ ÜÔÏÇÏ ÔÅËÓÔÁ ÍÏÖÅÔ ÏËÁÚÁÔØÓÑ ÐÏÌÅÚÎÙÍ ÉÍÅÔØ ÆÁÊÌ bsd.port.mk ÏÔËÒÙÔÙÍ × ÄÒÕÇÏÍ ÏËÎÅ, ÞÔÏ ÓÉÌØÎÏ ÐÏÍÏÖÅÔ × ÉÈ ÐÏÎÉÍÁÎÉÉ. îÏ ÎÅ ×ÏÌÎÕÊÔÅÓØ ÓÉÌØÎÏ, ÅÓÌÉ ×Ù ÎÅ ÄÏ ËÏÎÃÁ ÐÏÎÉÍÁÅÔÅ, ÞÔÏ ÄÅÌÁÅÔÓÑ × bsd.port.mk, ÎÅ ÔÁË ÕÖ ÍÎÏÇÏ ÌÀÄÅÊ ÅÇÏ ÐÏÎÉÍÁÅÔ... :-> úÁÐÕÓËÁÅÔÓÑ ÃÅÌØ fetch. ãÅÌØ fetch ÏÔ×ÅÞÁÅÔ ÚÁ ÔÏ, ÞÔÏ ÁÒÈÉ× ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× ÉÍÅÅÔÓÑ × ÎÁÌÉÞÉÉ ÌÏËÁÌØÎÏ × ËÁÔÁÌÏÇÅ DISTDIR. åÓÌÉ ÃÅÌØ fetch ÎÅ ÍÏÖÅÔ ÎÁÊÔÉ ÔÒÅÂÕÅÍÙÅ ÆÁÊÌÙ × ËÁÔÁÌÏÇÅ DISTDIR, ÔÏ ÏÎ ÂÕÄÅÔ ÉÓËÁÔØÓÑ ÐÏ ÕËÁÚÁÔÅÌÀ URL MASTER_SITES, ËÏÔÏÒÙÊ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × Makefile, Á ÔÁËÖÅ ÎÁ ÎÁÛÅÍ ÏÓÎÏ×ÎÏÍ FTP-ÓÅÒ×ÅÒÅ ÐÏ ÁÄÒÅÓÕ , ËÕÄÁ ÍÙ ÐÏ ×ÏÚÍÏÖÎÏÓÔÉ ÐÏÍÅÝÁÅÍ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÅ ÆÁÊÌÙ ÄÌÑ ÁÒÈÉ×Á. úÁÔÅÍ ÏÎÁ ÐÏÐÙÔÁÅÔÓÑ ÓÇÒÕÚÉÔØ ÕËÁÚÁÎÎÙÊ ÆÁÊÌ Ó ÐÏÍÏÝØÀ FETCH, ÐÏÌÁÇÁÑ, ÞÔÏ ÚÁÐÒÁÛÉ×ÁÀÝÁÑ ÍÁÛÉÎÁ ÉÍÅÅÔ ÐÒÑÍÏÅ ÐÏÄËÌÀÞÅÎÉÅ Ë éÎÔÅÒÎÅÔ. åÓÌÉ ÆÁÊÌ ÓËÁÞÁÅÔÓÑ ÕÄÁÞÎÏ, ÔÏ ÏÎ ÂÕÄÅÔ ÐÏÍÅÝÅÎ × ËÁÔÁÌÏÇ DISTDIR ÄÌÑ ÐÏÓÌÅÄÕÀÝÅÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ É ÏÂÒÁÂÏÔËÉ. ÷ÙÐÏÌÎÑÅÔÓÑ ÃÅÌØ extract. ïÎÁ ÉÝÅÔ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÊ ÆÁÊÌ ÐÏÒÔÁ (ËÁË ÐÒÁ×ÉÌÏ, tar-ÁÒÈÉ× gzip) × ËÁÔÁÌÏÇÅ DISTDIR É ÒÁÓÐÁËÏ×Ù×ÁÅÔ ÅÇÏ ×Ï ×ÒÅÍÅÎÎÙÊ ËÁÔÁÌÏÇ, ÚÁÄÁ×ÁÅÍÙÊ ÐÅÒÅÍÅÎÎÏÊ WRKDIR (ÐÏ ÕÍÏÌÞÁÎÉÀ work). ÷ÙÐÏÌÎÑÅÔÓÑ ÃÅÌØ patch. ÷Ï-ÐÅÒ×ÙÈ, ÐÒÉÍÅÎÑÀÔÓÑ ×ÓÅ ÐÁÔÞÉ, ÚÁÄÁÎÎÙÅ ÐÅÒÅÍÅÎÎÏÊ PATCHFILES. ÷Ï-×ÔÏÒÙÈ, ÅÓÌÉ ËÁËÉÅ-ÌÉÂÏ ÆÁÊÌÙ Ó ÐÁÔÞÁÍÉ, ÎÏÓÑÝÉÅ ÉÍÅÎÁ patch-*, ÉÍÅÀÔÓÑ × ÐÏÄËÁÔÁÌÏÇÅ PATCHDIR (ÐÏ ÕÍÏÌÞÁÎÉÀ ÜÔÏ ËÁÔÁÌÏÇ files), ÔÏ ÏÎÉ ÐÒÉÍÅÎÑÀÔÓÑ × ÜÔÏÔ ÍÏÍÅÎÔ × ÁÌÆÁ×ÉÔÎÏÍ ÐÏÒÑÄËÅ. úÁÐÕÓËÁÅÔÓÑ ÃÅÌØ configure. úÄÅÓØ ÍÏÖÅÔ ×ÙÐÏÌÎÑÔØÓÑ ÌÀÂÁÑ ÉÚ ÍÎÏÇÉÈ ÒÁÚÌÉÞÎÙÈ ×ÅÝÅÊ. åÓÌÉ ÓÕÝÅÓÔ×ÕÅÔ ÓËÒÉÐÔ scripts/configure, ÔÏ ÏÎ ÚÁÐÕÓËÁÅÔÓÑ. åÓÌÉ ÚÁÄÁÎÁ ÐÅÒÅÍÅÎÎÁÑ HAS_CONFIGURE ÉÌÉ GNU_CONFIGURE, ÔÏ ÚÁÐÕÓËÁÅÔÓÑ ÓËÒÉÐÔ WRKSRC/configure. åÓÌÉ ÚÁÄÁÎÁ ÐÅÒÅÍÅÎÎÁÑ USE_IMAKE, ÔÏ ÚÁÐÕÓËÁÅÔÓÑ ËÏÍÁÎÄÁ XMKMF (ÐÏ ÕÍÏÌÞÁÎÉÀ ÜÔÏ xmkmf -a). ÷ÙÐÏÌÎÑÅÔÓÑ ÃÅÌØ build. ïÎÁ ÏÔ×ÅÞÁÅÔ ÚÁ ÐÅÒÅÈÏÄ × ÓÏÂÓÔ×ÅÎÎÙÊ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ ÐÏÒÔÁ (WRKSRC) É ÅÇÏ ÐÏÓÔÒÏÅÎÉÅ. åÓÌÉ ÚÁÄÁÎÁ ÐÅÒÅÍÅÎÎÁÑ USE_GMAKE, ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ GNU-×ÅÒÓÉÑ ÕÔÉÌÉÔÙ make, × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎÁ ÓÉÓÔÅÍÎÁÑ ÕÔÉÌÉÔÁ make. ÷ÙÛÅ ÐÅÒÅÞÉÓÌÅÎÙ ÓÔÁÎÄÁÒÔÎÙÅ ÄÅÊÓÔ×ÉÑ. ëÒÏÍÅ ÔÏÇÏ, ×Ù ÓÁÍÉ ÍÏÖÅÔÅ ÏÐÒÅÄÅÌÉÔØ ÃÅÌÉ pre-ÞÔÏ-ÔÏ ÉÌÉ post-ÞÔÏ-ÔÏ, ÉÌÉ ÓÏÚÄÁÔØ ÓËÒÉÐÔÙ Ó ÔÁËÉÍÉ ÉÍÅÎÁÍÉ × ÐÏÄËÁÔÁÌÏÇÅ scripts, É ÏÎÉ ÂÕÄÕÔ ÚÁÐÕÝÅÎÙ ÄÏ ÉÌÉ ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ ÄÅÊÓÔ×ÉÊ ÐÏ ÕÍÏÌÞÁÎÉÀ. îÁÐÒÉÍÅÒ, ÅÓÌÉ Õ ×ÁÓ ÅÓÔØ ÃÅÌØ post-extract, ÏÐÒÅÄÅÌ£ÎÎÁÑ × ×ÁÛÅÍ ÆÁÊÌÅ Makefile É ÆÁÊÌ pre-build × ÐÏÄËÁÔÁÌÏÇÅ scripts, ÔÏ ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ ÏÂÙÞÎÙÈ ÄÅÊÓÔ×ÉÊ ÐÏ ÒÁÓÐÁËÏ×ËÅ, ÂÕÄÅÔ ×ÙÚ×ÁÎÁ ÃÅÌØ post-extract Á ÓËÒÉÐÔ pre-build ÂÕÄÅÔ ×ÙÐÏÌÎÅÎ ÐÅÒÅÄ ÚÁÐÕÓËÏÍ ÓÔÁÎÄÁÒÔÎÙÈ ÐÒÁ×ÉÌ ÐÏÓÔÒÏÅÎÉÑ. òÅËÏÍÅÎÄÕÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÔØ ÃÅÌÉ ÉÚ Makefile, ÅÓÌÉ ÄÅÊÓÔ×ÉÑ ÄÏÓÔÁÔÏÞÎÏ ÐÒÏÓÔÙ, ÐÏÔÏÍÕ ÞÔÏ × ÄÁÌØÎÅÊÛÅÍ ÂÕÄÅÔ ÐÒÏÝÅ ÏÐÒÅÄÅÌÉÔØ, ËÁËÉÅ ÎÅÓÔÁÎÄÁÒÔÎÙÅ ÄÅÊÓÔ×ÉÑ ÔÒÅÂÕÅÔ ÐÏÒÔ. äÅÊÓÔ×ÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ ×ÙÐÏÌÎÑÀÔÓÑ ÃÅÌÑÍÉ do-ÞÔÏ-ÔÏ ÉÚ bsd.port.mk. îÁÐÒÉÍÅÒ, ËÏÍÁÎÄÙ ÄÌÑ ÒÁÓÐÁËÏ×ËÉ ÐÏÒÔÁ ÎÁÈÏÄÑÔÓÑ × ÃÅÌÉ do-extract. åÓÌÉ ×ÁÍ ÎÅ È×ÁÔÁÅÔ ÃÅÌÉ ÐÏ ÕÍÏÌÞÁÎÉÀ, ×Ù ÍÏÖÅÔÅ ÅÅ ÉÓÐÒÁ×ÉÔØ, ÐÅÒÅÏÐÒÅÄÅÌÉ× ÃÅÌØ do-something × ×ÁÛÅÍ ÆÁÊÌÅ Makefile. ïÓÎÏ×ÎÙÅ ÃÅÌÉ (Ë ÐÒÉÍÅÒÕ, extract, configure É ÔÁË ÄÁÌÅÅ) ÎÅ ÄÅÌÁÀÔ ÎÉÞÅÇÏ ÂÏÌØÛÅ, ÞÅÍ ÐÒÏ×ÅÒÑÀÔ ÕÓÐÅÛÎÏÓÔØ ÚÁ×ÅÒÛÅÎÉÑ ×ÓÅÈ ÐÒÅÄÙÄÕÝÉÈ ÛÁÇÏ× É ×ÙÚÙ×ÁÀÔ ÎÁÓÔÏÑÝÉÅ ÃÅÌÉ ÉÌÉ ÓËÒÉÐÔÙ, É ÉÈ ÎÅ ÎÕÖÎÏ ÍÅÎÑÔØ. åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÉÚÍÅÎÉÔØ ÒÁÓÐÁËÏ×ËÕ, ÉÓÐÒÁ×ÌÑÊÔÅ do-extract, ÎÏ ÎÉËÏÇÄÁ ÎÅ ÍÅÎÑÊÔÅ ÓÐÏÓÏ ÒÁÂÏÔÙ extract! ëÒÏÍÅ ÔÏÇÏ, ÃÅÌØ post-deinstall Ñ×ÌÑÅÔÓÑ ÎÅÄÅÊÓÔ×ÉÔÅÌØÎÏÊ É ÎÅ ×ÙÐÏÌÎÑÅÔÓÑ ÉÎÆÒÁÓÔÒÕËÔÕÒÏÊ ÐÏÒÔÏ×. ôÅÐÅÒØ ×Ù ÐÒÅÄÓÔÁ×ÌÑÅÔÅ, ÞÔÏ ÐÒÏÉÓÈÏÄÉÔ, ËÏÇÄÁ ÐÏÌØÚÏ×ÁÔÅÌØ ÎÁÂÉÒÁÅÔ ËÏÍÁÎÄÕ make, ÔÅÐÅÒØ ÄÁ×ÁÊÔÅ ÐÒÏÊÄÅÍÓÑ ÞÅÒÅÚ ÛÁÇÉ, ÒÅËÏÍÅÎÄÕÅÍÙÅ ÄÌÑ ÓÏÚÄÁÎÉÑ ÎÁÓÔÏÑÝÅÇÏ ÐÏÒÔÁ. ðÏÌÕÞÅÎÉÅ ÉÓÈÏÄÎÏÇÏ ËÏÄÁ ðÏÌÕÞÉÔÅ ÏÒÉÇÉÎÁÌØÎÙÅ ÉÓÈÏÄÎÙÅ ÔÅËÓÔÙ (ÏÂÙÞÎÏ) × ×ÉÄÅ ÕÐÁËÏ×ÁÎÎÏÇÏ tar-ÁÒÈÉ×Á (foo.tar.gz ÉÌÉ foo.tar.bz2) É ÓËÏÐÉÒÕÊÔÅ ÅÇÏ × ËÁÔÁÌÏÇ DISTDIR. ÷ÓÅÇÄÁ ÉÓÐÏÌØÚÕÊÔÅ ÉÓÈÏÄÎÙÅ ÔÅËÓÔÙ ÏÓÎÏ×ÎÏÊ ×ÅÔËÉ ÒÁÚÒÁÂÏÔËÉ ×ÅÚÄÅ, ÇÄÅ ÜÔÏ ×ÏÚÍÏÖÎÏ. ÷ÁÍ ÐÏÔÒÅÂÕÅÔÓÑ ÚÁÄÁÔØ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ MASTER_SITES ÔÁË, ÞÔÏÂÙ ÏÎÏ ÕËÁÚÙ×ÁÌÏ ÎÁ ÍÅÓÔÏÐÏÌÏÖÅÎÉÅ ÏÒÉÇÉÎÁÌØÎÏÇÏ tar-ÁÒÈÉ×Á. ÷ ÆÁÊÌÅ bsd.sites.mk ×Ù ÎÁÊÄ£ÔÅ ËÒÁÔËÉÅ ÏÂÏÚÎÁÞÅÎÉÑ ÄÌÑ ÂÏÌØÛÉÎÓÔ×Á ÐÏÐÕÌÑÒÎÙÈ ÓÁÊÔÏ×. ðÏÖÁÌÕÊÓÔÁ, ÉÓÐÏÌØÚÕÊÔÅ ÜÔÉ ÓÁÊÔÙ—É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÏÐÒÅÄÅÌÅÎÉÑ—×ÅÚÄÅ, ÇÄÅ ÜÔÏ ×ÏÚÍÏÖÎÏ, ÞÔÏÂÙ ÉÚÂÅÖÁÔØ ÐÒÏÂÌÅÍ ÐÏ×ÔÏÒÅÎÉÑ ÏÄÎÏÊ É ÔÏÊ ÖÅ ÉÎÆÏÒÍÁÃÉÉ × ÂÁÚÅ ÉÓÔÏÞÎÉËÏ×. ôÁË ËÁË ÜÔÉ ÓÁÊÔÙ ÓÏ ×ÒÅÍÅÎÅÍ ÍÅÎÑÀÔÓÑ, ÄÌÑ ×ÓÅÈ ÐÒÉÞÁÓÔÎÙÈ ÐÏÄÄÅÒÖËÁ ÓÔÁÎÏ×ÉÔÓÑ ÎÁÓÔÏÑÝÉÍ ËÏÛÍÁÒÏÍ. åÓÌÉ ×Ù ÎÅ ÍÏÖÅÔÅ ÎÁÊÔÉ FTP/HTTP ÓÁÊÔ Ó ÈÏÒÏÛÉÍ ÐÏÄËÌÀÞÅÎÉÅÍ Ë ÓÅÔÉ, ÉÌÉ ÎÁÈÏÄÉÔÅ ÔÏÌØËÏ ÓÁÊÔÙ, ËÏÔÏÒÙÅ ÉÍÅÀÔ ÒÁÚÄÒÁÖÁÀÝÅ ÎÅÓÔÁÎÄÁÒÔÎÙÅ ÆÏÒÍÁÔÙ, ÔÏ ÍÏÖÅÔÅ ÚÁÈÏÔÅÔØ ÐÏÍÅÓÔÉÔØ ËÏÐÉÀ ÎÁ ÎÁÄÅÖÎÙÊ ÓÅÒ×ÅÒ FTP ÉÌÉ HTTP, ËÏÔÏÒÙÊ ×ÁÍ ÄÏÓÔÕÐÅÎ (ÎÁÐÒÉÍÅÒ, ×ÁÛÁ ÄÏÍÁÛÎÑÑ ÓÔÒÁÎÉÃÁ). åÓÌÉ ×Ù ÎÅ ÍÏÖÅÔÅ ÎÁÊÔÉ ÄÏÓÔÕÐÎÏÇÏ É ÎÁÄ£ÖÎÏÇÏ ÍÅÓÔÁ ÄÌÑ ÐÏÍÅÝÅÎÉÑ ÄÉÓÔÒÉÂÕÔÉ×ÎÏÇÏ ÆÁÊÌÁ, ÔÏ ÍÙ ÓÁÍÉ ÓÍÏÖÅÍ ÒÁÚÍÅÓÔÉÔØ ÅÇÏ ÎÁ ÓÅÒ×ÅÒÅ ftp.FreeBSD.org; ÏÄÎÁËÏ ÜÔÏ ÎÁÉÍÅÎÅÅ ÒÅËÏÍÅÎÄÕÅÍÏÅ ÒÅÛÅÎÉÅ. äÉÓÔÒÉÂÕÔÉ×ÎÙÊ ÆÁÊÌ ÄÏÌÖÅÎ ÂÙÔØ ÐÏÍÅÝ£Î × ËÁÔÁÌÏÇ ~/public_distfiles/ ÏÄÎÏÇÏ ÉÚ ÐÏÌØÚÏ×ÁÔÅÌÅÊ ÍÁÛÉÎÙ freefall. ðÏÐÒÏÓÉÔÅ ÔÏÇÏ, ËÔÏ ËÏÍÍÉÔÔÉÌ ×ÁÛ ÐÏÒÔ, ÓÄÅÌÁÔØ ÜÔÏ. üÔÏÔ ÞÅÌÏ×ÅË ÔÁËÖÅ ÚÁÄÁÓÔ ÐÅÒÅÍÅÎÎÏÊ MASTER_SITES ÚÎÁÞÅÎÉÅ MASTER_SITE_LOCAL, Á × ÐÅÒÅÍÅÎÎÏÊ MASTER_SITE_SUBDIR ÕËÁÖÅÔ Ó×Ï£ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ Ó ÍÁÛÉÎÙ freefall. åÓÌÉ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÅ ÆÁÊÌÙ ×ÁÛÅÇÏ ÐÏÒÔÁ ÐÏÓÔÏÑÎÎÏ ÍÅÎÑÀÔÓÑ ÐÏ ÎÅÉÚ×ÅÓÔÎÙÍ ÐÒÉÞÉÎÁÍ ÂÅÚ ÉÚÍÅÎÅÎÉÑ ×ÅÒÓÉÊ ÓÏ ÓÔÏÒÏÎÙ Á×ÔÏÒÁ, ÏÓÔÁ£ÔÓÑ ÔÏÌØËÏ ÐÏÍÅÓÔÉÔØ ÄÉÓÔÒÉÂÕÔÉ× ÎÁ ×ÁÛÕ ÄÏÍÁÛÎÀÀ Web-ÓÔÒÁÎÉÃÕ É ÕËÁÚÁÔØ Å£ ÐÅÒ×ÏÊ × ÓÐÉÓËÅ MASTER_SITES. åÓÌÉ ÍÏÖÅÔÅ, ÐÏÐÙÔÁÊÔÅÓØ ÄÏÇÏ×ÏÒÉÔØÓÑ Ó Á×ÔÏÒÏÍ ÐÏÒÔÁ Ï ÜÔÏÍ; ÜÔÏ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÐÏÍÏÇÁÅÔ × ÄÏÓÔÉÖÅÎÉÉ ÎÅËÏÔÏÒÏÇÏ ÕÐÒÁ×ÌÅÎÉÑ ÉÓÈÏÄÎÙÍ ËÏÄÏÍ. òÁÚÍÅÝÅÎÉÅ ÓÏÂÓÔ×ÅÎÎÏÊ ×ÅÒÓÉÉ ÐÏÍÏÖÅÔ ÉÚÂÅÖÁÔØ ÐÏÑ×ÌÅÎÉÑ ÏÛÉÂÏË Õ ÐÏÌØÚÏ×ÁÔÅÌÅÊ ÔÉÐÁ checksum mismatch, Á ÔÁËÖÅ ÕÍÅÎØÛÉÔ ÎÁÇÒÕÚËÕ ÎÁ ÌÀÄÅÊ, ÓÏÐÒÏ×ÏÖÄÁÀÝÉÈ ÎÁÛ FTP-ÓÅÒ×ÅÒ. ôÁËÖÅ, ÅÓÌÉ Õ ÐÏÒÔÁ ÉÍÅÅÔÓÑ ÔÏÌØËÏ ÏÄÉÎ ÏÓÎÏ×ÎÏÊ ÓÅÒ×ÅÒ, ÔÏ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÐÏÍÅÓÔÉÔØ ÁÒÈÉ×ÎÕÀ ËÏÐÉÀ ÎÁ Ó×ÏÊ ÓÁÊÔ É ÕËÁÚÁÔØ ÅÇÏ × ÓÐÉÓËÅ MASTER_SITES ×ÔÏÒÙÍ. åÓÌÉ ×ÁÛÅÍÕ ÐÏÒÔÕ ÔÒÅÂÕÀÔÓÑ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ `ÐÁÔÞÉ', ÄÏÓÔÕÐÎÙÅ × éÎÔÅÒÎÅÔ, ÓËÁÞÁÊÔÅ ÔÁËÖÅ É ÉÈ, ÐÏÍÅÓÔÉ× × ËÁÔÁÌÏÇ DISTDIR. îÅ ×ÏÌÎÕÊÔÅÓØ, ÅÓÌÉ ÏÎÉ ÎÁÈÏÄÑÔÓÑ ÎÅ ÎÁ ÔÏÍ ÖÅ ÓÁÊÔÅ, ÏÔËÕÄÁ ×ÚÑÔ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÊ ÁÒÈÉ×, ÍÙ ÕÍÅÅÍ ÏÂÒÁÂÁÔÙ×ÁÔØ ÔÁËÉÅ ÓÉÔÕÁÃÉÉ (ÓÍÏÔÒÉÔÅ ÏÐÉÓÁÎÉÅ PATCHFILES ÎÉÖÅ). íÏÄÉÆÉËÁÃÉÑ ÐÏÒÔÁ òÁÓÐÁËÕÊÔÅ ËÏÐÉÀ ÄÉÓÔÒÉÂÕÔÉ×ÎÏÇÏ ÆÁÊÌÁ × ÏÔÄÅÌØÎÙÊ ËÁÔÁÌÏÇ É ×ÎÅÓÉÔÅ ÉÚÍÅÎÅÎÉÑ, ËÏÔÏÒÙÅ ÎÅÏÂÈÏÄÉÍÙ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÏÒÔ ËÏÍÐÉÌÉÒÏ×ÁÌÓÑ ÎÏÒÍÁÌØÎÏ × ÔÅËÕÝÅÊ ×ÅÒÓÉÉ &os;. ôÝÁÔÅÌØÎÏ ÏÔÓÌÅÖÉ×ÁÊÔÅ ×ÓÅ, ÞÔÏ ×Ù ÄÅÌÁÅÔÅ, ÜÔÏÔ ÐÒÏÃÅÓÓ ×ÁÍ ÐÒÅÄÓÔÏÉÔ Á×ÔÏÍÁÔÉÚÉÒÏ×ÁÔØ. ÷ÓÅ, ×ËÌÀÞÁÑ ÕÄÁÌÅÎÉÅ, ÄÏÂÁ×ÌÅÎÉÅ ÉÌÉ ÍÏÄÉÆÉËÁÃÉÀ × ÆÁÊÌÁÈ ÄÏÌÖÎÙ ÂÕÄÕÔ ×ÙÐÏÌÎÑÔØÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ Ó ÐÏÍÏÝØÀ ÓËÒÉÐÔÏ× ÉÌÉ ÆÁÊÌÏ× ÐÁÔÞÅÊ, ËÏÇÄÁ ×Ù ÚÁ×ÅÒÛÉÔÅ ÒÁÂÏÔÕ ÎÁÄ ÐÏÒÔÏÍ. åÓÌÉ ×ÁÛÅÍÕ ÐÏÒÔÕ ×Ï ×ÒÅÍÑ ËÏÍÐÉÌÑÃÉÉ, ÕÓÔÁÎÏ×ËÉ É ÎÁÓÔÒÏÊËÉ ÔÒÅÂÕÅÔÓÑ ÄÏ×ÏÌØÎÏ ÍÎÏÇÏ ×ÚÁÉÍÏÄÅÊÓÔ×Ï×ÁÔØ Ó ÐÏÌØÚÏ×ÁÔÅÌÅÍ, ÔÏ ÐÏÓÍÏÔÒÉÔÅ ÎÁ ÏÄÉÎ ÉÚ ËÌÁÓÓÉÞÅÓËÉÈ ÓËÒÉÐÔÏ× Configure ìÜÒÒÉ õÏÌÌÁ (Larry Wall) É ÓÄÅÌÁÊÔÅ ÓÁÍÉ ÞÔÏ-ÌÉÂÏ ÐÏÄÏÂÎÏÅ. ðÒÅÄÎÁÚÎÁÞÅÎÉÅ ÎÏ×ÏÊ ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ× - ÜÔÏ ÓÄÅÌÁÔØ ËÁÖÄÏÅ ÐÒÉÌÏÖÅÎÉÅ × ÓÔÉÌÅ plug-and-play ÎÁÓÔÏÌØËÏ, ÎÁÓËÏÌØËÏ ÜÔÏ ×ÏÏÂÝÅ ×ÏÚÍÏÖÎÏ ÄÌÑ ËÏÎÅÞÎÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ ÐÒÉ ÍÉÎÉÍÁÌØÎÏÍ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÄÉÓËÏ×ÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á. åÓÌÉ Ñ×ÎÏ ÎÅ ÕËÁÚÁÎÏ ÏÂÒÁÔÎÏÅ, ÔÏ ÐÁÔÞÉ, ÓËÒÉÐÔÙ É ÄÒÕÇÉÅ ÆÁÊÌÙ, ËÏÔÏÒÙÅ ×Ù ÓÏÚÄÁÌÉ É ÐÒÅÄÏÓÔÁ×ÉÌÉ ÄÌÑ ëÏÌÌÅËÃÉÉ ðÏÒÔÏ× &os;, ÎÅÑ×ÎÏ ÐÏÄÐÁÄÁÀÔ ÐÏÄ ÓÔÁÎÄÁÒÔÎÙÅ ÕÓÌÏ×ÉÑ ÌÉÃÅÎÚÉÉ BSD. óÏÚÄÁÎÉÅ ÐÁÔÞÅÊ æÁÊÌÙ, ËÏÔÏÒÙÅ ÄÏÂÁ×ÌÑÌÉÓØ ÉÌÉ ÉÚÍÅÎÑÌÉÓØ × ÐÒÏÃÅÓÓÅ ÓÏÚÄÁÎÉÑ ÐÏÒÔÁ, ÍÏÇÕÔ ÂÙÔØ ×ÙÑ×ÌÅÎÙ ×ÙÚÏ×ÏÍ ÐÒÏÇÒÁÍÍÙ &man.diff.1;, Á ÒÅÚÕÌØÔÁÔ ÒÁÂÏÔÙ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ ÍÏÖÅÔ ÂÙÔØ × ÄÁÌØÎÅÊÛÅÍ ÐÅÒÅÄÁÎ ÐÒÏÇÒÁÍÍÅ &man.patch.1;. ëÁÖÄÙÊ ÐÁÔÞ, ËÏÔÏÒÙÊ ×Ù ÓÏÂÉÒÁÅÔÅÓØ ÐÒÉÍÅÎÉÔØ, ÄÏÌÖÅÎ ÂÙÔØ ÓÏÈÒÁÎÅÎ × ÆÁÊÌ Ó ÉÍÅÎÅÍ patch-*, ÇÄÅ * ÏÂÏÚÎÁÞÁÅÔ ÐÕÔØ Ë ÆÁÊÌÕ, Ë ËÏÔÏÒÏÍÕ ÐÒÉÍÅÎÑÅÔÓÑ ÐÁÔÞ, ÔÁËÏÊ ËÁË patch-Imakefile ÉÌÉ patch-src-config.h. üÔÉ ÆÁÊÌÙ ÄÏÌÖÎÙ ÎÁÈÏÄÉÔØÓÑ × ËÁÔÁÌÏÇÅ PATCHDIR (ËÁË ÐÒÁ×ÉÌÏ, ÜÔÏ files/), ÏÔËÕÄÁ ÏÎÉ ÂÕÄÕÔ ×ÚÑÔÙ Á×ÔÏÍÁÔÉÞÅÓËÉ. ÷ÓÅ ÐÁÔÞÉ ÏÂÑÚÁÎÙ ÂÙÔØ ÓÄÅÌÁÎÙ ÏÔÎÏÓÉÔÅÌØÎÏ ËÁÔÁÌÏÇÁ WRKSRC (ËÁË ÐÒÁ×ÉÌÏ, ÜÔÏ ËÁÔÁÌÏÇ, × ËÏÔÏÒÙÊ ÒÁÓÐÁËÏ×Ù×ÁÅÔÓÑ ÉÓÈÏÄÎÙÊ ÁÒÈÉ× É ÇÄÅ ÂÕÄÅÔ ×ÙÐÏÌÎÑÔØÓÑ ÐÏÓÔÒÏÅÎÉÅ). äÌÑ ÕÐÒÏÝÅÎÉÑ ×ÎÅÓÅÎÉÑ ÉÚÍÅÎÅÎÉÊ É ÏÂÎÏ×ÌÅÎÉÊ ×Ù ÄÏÌÖÎÙ ÉÚÂÅÇÁÔØ ÎÁÌÉÞÉÑ ÂÏÌÅÅ ÞÅÍ ÏÄÎÏÇÏ ÐÁÔÞÁ ÄÌÑ ÏÄÎÏÇÏ É ÔÏÇÏ ÖÅ ÆÁÊÌÁ (ÎÁÐÒÉÍÅÒ, ÐÁÔÞÅÊ patch-file É patch-file2, ÏÂÁ ÍÅÎÑÀÝÉÈ ÆÁÊÌ WRKSRC/foobar.c). ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÅÓÌÉ ÐÕÔØ Ë ÉÚÍÅÎÑÅÍÏÍÕ ÆÁÊÌÕ ÓÏÄÅÒÖÉÔ ÓÉÍ×ÏÌ ÐÏÄÞÅÒËÉ×ÁÎÉÑ (_), ÔÏ ÐÁÔÞ ÄÏÌÖÅÎ ÓÏÄÅÒÖÁÔØ × Ó×ÏÅÍ ÉÍÅÎÉ Ä×Á ÐÏÄÞÅÒËÉ×ÁÎÉÑ ×ÍÅÓÔÏ ÏÄÎÏÇÏ. îÁÐÒÉÍÅÒ, ÄÌÑ ÐÒÉÍÅÎÅÎÉÑ ÐÁÔÞÁ ÎÁ ÆÁÊÌ Ó ÉÍÅÎÅÍ src/freeglut_joystick.c ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÐÁÔÞ ÓÌÅÄÕÅÔ ÎÁÚ×ÁÔØ patch-src-freeglut__joystick.c. ðÏÖÁÌÕÊÓÔÁ, ÉÓÐÏÌØÚÕÊÔÅ ÄÌÑ ÉÍÅÎÏ×ÁÎÉÑ ×ÁÛÉÈ ÐÁÔÞÅÊ ÔÏÌØËÏ ÓÉÍ×ÏÌÙ [-+._a-zA-Z0-9]. îÅ ÉÓÐÏÌØÚÕÊÔÅ ÌÀÂÙÅ ÄÒÕÇÉÅ ÓÉÍ×ÏÌÙ, ËÒÏÍÅ ÜÔÉÈ. îÅ ÎÁÚÙ×ÁÊÔÅ ×ÁÛÉ ÐÁÔÞÉ ËÁË patch-aa ÉÌÉ patch-ab É ÔÁË ÄÁÌÅÅ, ×ÓÅÇÄÁ ÓÓÙÌÁÊÔÅÓØ ÎÁ ÐÕÔØ É ÎÁÚ×ÁÎÉÅ ÆÁÊÌÁ × ÎÁÚ×ÁÎÉÑÈ ÐÁÔÞÅÊ. îÅ ÐÏÍÅÝÁÊÔÅ ÓÔÒÏËÉ RCS × ÐÁÔÞÉ. SVN ÂÕÄÅÔ ÉÚÍÅÎÑÔØ ÉÈ ÐÒÉ ÐÏÍÅÝÅÎÉÉ ÆÁÊÌÏ× × ÄÅÒÅ×Ï ÐÏÒÔÏ×, É ËÏÇÄÁ ÍÙ ÂÕÄÅÍ ÉÈ ÏÔÔÕÄÁ ÉÚ×ÌÅËÁÔØ, ÏÎÉ ÂÕÄÕÔ ÕÖÅ ÄÒÕÇÉÅ, ÐÏÜÔÏÍÕ ÐÒÉÍÅÎÅÎÉÅ ÐÁÔÞÅÊ ÏËÏÎÞÉÔÓÑ ÎÅÕÄÁÞÅÊ. óÔÒÏÞËÉ RCS ÐÒÅÄ×ÁÒÑÀÔÓÑ ÚÎÁËÏÍ ÄÏÌÌÁÒÁ ($), É ÏÂÙÞÎÏ ÎÁÞÉÎÁÀÔÓÑ Ó $Id ÉÌÉ $RCS. éÓÐÏÌØÚÏ×ÁÎÉÅ ÐÁÒÁÍÅÔÒÁ ÒÅËÕÒÓÉÉ () Ó ËÏÍÁÎÄÏÊ &man.diff.1; ÄÌÑ ÇÅÎÅÒÁÃÉÉ ÐÁÔÞÅÊ - ÜÔÏ ÈÏÒÏÛÏ, ÎÏ ×Ó£ ÖÅ, ÐÏÖÁÌÕÊÓÔÁ, ÓÍÏÔÒÉÔÅ ÎÁ ÐÏÌÕÞÁÀÝÉÅÓÑ ÐÁÔÞÉ, ÞÔÏÂÙ ÕÂÅÄÉÔØÓÑ × ÏÔÓÕÔÓÔ×ÉÉ ÎÅÎÕÖÎÏÇÏ ÍÕÓÏÒÁ. ÷ ÞÁÓÔÎÏÓÔÉ, diff-ÒÁÚÎÉà ÍÅÖÄÕ Ä×ÕÍÑ ÒÅÚÅÒ×ÎÙÍÉ ËÏÐÉÑÍÉ ÆÁÊÌÏ×, ÆÁÊÌÙ Makefile, ËÏÇÄÁ ËÁË ÐÏÒÔ ÉÓÐÏÌØÚÕÅÔ Imake ÉÌÉ GNU-×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÙ configure, É ÔÁË ÄÁÌÅÅ, ÎÅ ÎÕÖÎÙ, É ÄÏÌÖÎÙ ÂÙÔØ ÕÄÁÌÅÎÙ. åÓÌÉ ×Ù ÏÔÒÅÄÁËÔÉÒÏ×ÁÌÉ ÆÁÊÌ configure.in É ÚÁÐÕÓÔÉÌÉ autoconf ÄÌÑ ÐÅÒÅÇÅÎÅÒÁÃÉÉ configure, ÎÅ ÎÕÖÎÏ ×ËÌÀÞÁÔØ ÆÁÊÌÙ diff ÄÌÑ configure (ÏÎÉ ÞÁÓÔÅÎØËÏ ×ÙÒÁÓÔÁÀÔ ÄÏ ÎÅÓËÏÌØËÉÈ ÔÙÓÑÞ ÓÔÒÏË!); ÚÁÄÁÊÔÅ USE_AUTOTOOLS=autoconf:261 É ×ËÌÀÞÉÔÅ diff-ÆÁÊÌ ÄÌÑ configure.in. ôÁËÖÅ ÐÏÓÔÁÒÁÊÔÅÓØ ÍÉÎÉÍÉÚÉÒÏ×ÁÔØ × ×ÁÛÉÈ ÐÁÔÞÁÈ ÏÂßÅÍ ÎÅÆÕÎËÃÉÏÎÁÌØÎÙÈ ÉÚÍÅÎÅÎÉÊ Ó ÐÕÓÔÙÍÉ ÓÉÍ×ÏÌÁÍÉ. ÷ ÍÉÒÅ ïÔËÒÙÔÏÇÏ éÓÈÏÄÎÏÇÏ ëÏÄÁ Ñ×ÌÑÅÔÓÑ ÒÁÓÐÒÏÓÔÒÁÎÅÎÎÙÍ ÓÏ×ÍÅÓÔÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÒÏÅËÔÁÍÉ ÂÏÌØÛÉÈ ÏÂßÅÍÏ× ËÏÄÏ×ÏÊ ÂÁÚÙ, ÎÏ Ó ÒÁÚÌÉÞÎÙÍÉ ÓÔÉÌÑÍÉ É ÐÒÁ×ÉÌÁÍÉ ÏÔÓÔÕÐÏ×. åÓÌÉ ×Ù ÂÅÒÅÔÅ ÒÁÂÏÔÁÀÝÕÀ ÆÕÎËÃÉÏÎÁÌØÎÕÀ ÞÁÓÔØ ÉÚ ÏÄÎÏÇÏ ÐÒÏÅËÔÁ ÄÌÑ ÉÓÐÒÁ×ÌÅÎÉÑ ÐÏÈÏÖÅÊ ÏÂÌÁÓÔÉ × ÄÒÕÇÏÍ, ÔÏ ÂÕÄØÔÅ ÁËËÕÒÁÔÎÙ, ÐÏÖÁÌÕÊÓÔÁ: ÐÏÌÕÞÁÅÍÙÊ ÏÄÎÏÓÔÒÏÞÎÙÊ ÐÁÔÞ ÍÏÖÅÔ ÂÙÔØ ÐÏÌÏÎ ÎÅÆÕÎËÃÉÏÎÁÌØÎÙÈ ÉÚÍÅÎÅÎÉÊ. üÔÏ ÎÅ ÔÏÌØËÏ Õ×ÅÌÉÞÉ×ÁÅÔ ÒÁÚÍÅÒ ÒÅÐÏÚÉÔÏÒÉÑ SVN, ÎÏ ÔÁËÖÅ ÕÓÌÏÖÎÑÅÔ ÐÏÉÓË ÔÏÇÏ, ÞÔÏ ËÏÎËÒÅÔÎÏ ×ÙÚ×ÁÌÏ ÐÒÏÂÌÅÍÕ É ÞÔÏ ×Ù ×ÏÏÂÝÅ ÉÚÍÅÎÉÌÉ. åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÕÄÁÌÉÔØ ÆÁÊÌ, ÔÏ ×Ù ÍÏÖÅÔÅ ÓÄÅÌÁÔØ ÜÔÏ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ÃÅÌÉ post-extract ×ÍÅÓÔÏ ÔÏÇÏ, ÞÔÏÂÙ ÏÆÏÒÍÌÑÔØ ÜÔÏ ËÁË ÞÁÓÔØ ÐÁÔÞÁ. ðÒÏÓÔÙÅ ÐÅÒÅÍÅÝÅÎÉÑ ÍÏÇÕÔ ÂÙÔØ ×ÙÐÏÌÎÅÎÙ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÉÚ Makefile ÐÏÒÔÁ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ &man.sed.1; × ÒÅÖÉÍÅ in-place. üÔÏ ÏÞÅÎØ ÕÄÏÂÎÏ, ËÏÇÄÁ ×ÁÍ ÎÕÖÎÏ ÐÒÉÍÅÎÉÔØ ÐÁÔÞ ÎÁ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ. ðÒÉÍÅÒ: post-patch: @${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|' ${WRKSRC}/configure äÏ×ÏÌØÎÏ ÞÁÓÔÏ ÂÙ×ÁÀÔ ÓÉÔÕÁÃÉÉ, ËÏÇÄÁ ÐÏÒÔÉÒÕÅÍÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, ÏÓÏÂÅÎÎÏ ÅÓÌÉ ÏÓÎÏ×ÎÏÊ ÐÌÁÔÆÏÒÍÏÊ ÒÁÚÒÁÂÏÔËÉ Ñ×ÌÑÅÔÓÑ &windows;, ÉÓÐÏÌØÚÕÅÔ ËÏÎ×ÅÎÃÉÀ CR/LF ÄÌÑ ÂÏÌØÛÉÎÓÔ×Á Ó×ÏÉÈ ÉÓÈÏÄÎÙÈ ÆÁÊÌÏ×. üÔÏ ÍÏÖÅÔ ÂÙÔØ ÐÒÉÞÉÎÏÊ ÐÒÏÂÌÅÍ Ó ÄÁÌØÎÅÊÛÅÊ ÕÐÁËÏ×ËÏÊ, ÐÒÅÄÕÐÒÅÖÄÅÎÉÑÍÉ ËÏÍÐÉÌÑÔÏÒÁ, ×ÙÐÏÌÎÅÎÉÅÍ ÓËÒÉÐÔÏ× (/bin/sh^M not found) É ÔÁË ÄÁÌÅÅ. äÌÑ ÂÙÓÔÒÏÊ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ×ÓÅÈ ÆÁÊÌÏ× ÉÚ CR/LF ÐÒÏÓÔÏ × LF ÄÏÂÁרÔÅ USE_DOS2UNIX=yes × Makefile ÐÏÒÔÁ. íÏÖÅÔ ÂÙÔØ ÕËÁÚÁÎ ÐÅÒÅÞÅÎØ ÐÒÅÏÂÒÁÚÕÅÍÙÈ ÆÁÊÌÏ×: USE_DOS2UNIX= util.c util.h åÓÌÉ ×Ù ÈÏÔÉÔÅ ÐÒÅÏÂÒÁÚÏ×ÁÔØ ÇÒÕÐÐÕ ÆÁÊÌÏ× × ÒÁÚÎÙÈ ÐÏÄËÁÔÁÌÏÇÁÈ, ÔÏ ÄÌÑ ÜÔÏÇÏ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ DOS2UNIX_REGEX. åÇÏ ÐÁÒÁÍÅÔÒÏÍ Ñ×ÌÑÅÔÓÑ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ, ÓÏ×ÍÅÓÔÉÍÏÅ Ó find. ðÏÄÒÏÂÎÅÅ Ï ÆÏÒÍÁÔÅ × &man.re.format.7;. üÔÁ ÏÐÃÉÑ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ×ÓÅÈ ÆÁÊÌÏ× ÚÁÄÁÎÎÏÇÏ ÒÁÓÛÉÒÅÎÉÑ, Ë ÐÒÉÍÅÒÕ ×ÓÅÈ ÉÓÈÏÄÎÙÈ ÆÁÊÌÏ×, ÎÅ ÚÁÔÒÁÇÉ×ÁÑ Ä×ÏÉÞÎÙÅ ÆÁÊÌÙ: USE_DOS2UNIX= yes DOS2UNIX_REGEX= .*\.(c|cpp|h) åÓÌÉ ×Ù ÈÏÔÉÔÅ ÓÏÚÄÁÔØ ÐÁÔÞ ÎÁ ÏÓÎÏ×Å ÓÕÝÅÓÔ×ÕÀÝÅÇÏ ÆÁÊÌÁ, ÔÏ ×Ù ÍÏÖÅÔÅ ÅÇÏ ÓËÏÐÉÒÏ×ÁÔØ Ó ÒÁÓÛÉÒÅÎÉÅÍ .orig, Á ÚÁÔÅÍ ÉÚÍÅÎÉÔØ ÉÓÈÏÄÎÙÊ. ãÅÌØmakepatch ÚÁÐÉÛÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÆÁÊÌ Ó ÐÁÔÞÅÍ × ËÁÔÁÌÏÇ files ÄÁÎÎÏÇÏ ÐÏÒÔÁ. ëÏÎÆÉÇÕÒÉÒÏ×ÁÎÉÅ ðÏÍÅÓÔÉÔÅ ×ÓÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ËÏÍÁÎÄÙ, ÔÒÅÂÕÅÍÙÅ ÄÌÑ ÎÁÓÔÒÏÊËÉ, × ×ÁÛ ÓËÒÉÐÔ configure É ÓÏÈÒÁÎÉÔÅ ÅÇÏ × ÐÏÄËÁÔÁÌÏÇÅ scripts. ëÁË ÏÔÍÅÞÅÎÏ ×ÙÛÅ, ×Ù ÍÏÖÅÔÅ ÓÄÅÌÁÔØ ÜÔÏ ÃÅÌÑÍÉ × ÆÁÊÌÅ Makefile É/ÉÌÉ ÓËÒÉÐÔÁÍÉ Ó ÉÍÅÎÁÍÉ pre-configure ÉÌÉ post-configure. ïÂÒÁÂÏÔËÁ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÇÏ ××ÏÄÁ åÓÌÉ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ, ËÏÎÆÉÇÕÒÁÃÉÉ ÉÌÉ ÕÓÔÁÎÏ×ËÉ ×ÁÛÅÇÏ ÐÏÒÔÁ ÔÒÅÂÕÅÔÓÑ ÎÅËÏÔÏÒÙÊ ××ÏÄ ÓÏ ÓÔÏÒÏÎÙ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÔÏ ×Ù ÄÏÌÖÎÙ ÚÁÄÁÔØ ÐÅÒÅÍÅÎÎÕÀ IS_INTERACTIVE × ×ÁÛÅÍ ÆÁÊÌÅ Makefile. ÷ ÓÌÕÞÁÅ ÎÏÞÎÏÇÏ ÐÏÓÔÒÏÅÎÉÑ ÜÔÏ ÐÏÚ×ÏÌÉÔ ÐÒÏÐÕÓÔÉÔØ ×ÁÛ ÐÏÒÔ, ÅÓÌÉ ÐÏÌØÚÏ×ÁÔÅÌØ × Ó×ÏÅÍ ÏËÒÕÖÅÎÉÉ ÚÁÄÁÌ ÐÅÒÅÍÅÎÎÕÀ BATCH (É ÅÓÌÉ ÐÏÌØÚÏ×ÁÔÅÌØ ÕÓÔÁÎÏ×ÉÌ ÐÅÒÅÍÅÎÎÕÀ INTERACTIVE, ÔÏ ÂÕÄÕÔ ÓÔÒÏÉÔØÓÑ ÔÏÌØËÏ ÐÏÒÔÙ, ËÏÔÏÒÙÅ ÔÒÅÂÕÀÔ ×ÚÁÉÍÏÄÅÊÓÔ×ÉÑ Ó ÐÏÌØÚÏ×ÁÔÅÌÅÍ. üÔÏ ÓÜËÏÎÏÍÉÔ ÚÎÁÞÉÔÅÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ×ÒÅÍÅÎÉ ÎÁ ÞÁÓÔÉ ÍÁÛÉÎ, ËÏÔÏÒÙÅ ÐÏÓÔÏÑÎÎÏ ÓÔÒÏÑÔ ÐÏÒÔÙ (ÓÍÏÔÒÉÔÅ ÎÉÖÅ). ðÒÉ ÎÁÌÉÞÉÉ ÒÁÚÕÍÎÙÈ ÏÔ×ÅÔÏ× ÎÁ ÚÁÄÁ×ÁÅÍÙÅ ×ÏÐÒÏÓÙ, ÐÏÄÈÏÄÑÝÉÈ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÔÁËÖÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÐÒÏ×ÅÒÑÔØ ÐÅÒÅÍÅÎÎÕÀ PACKAGE_BUILDING É ×ÙËÌÀÞÁÔØ ÉÎÔÅÒÁËÔÉ×ÎÙÊ ÓËÒÉÐÔ, ÅÓÌÉ ÏÎ ÅÓÔØ. üÔÏ ÐÏÚ×ÏÌÉÔ ÎÁÍ ÓÔÒÏÉÔØ ÐÁËÅÔÙ ÄÌÑ ÐÏÍÅÝÅÎÉÑ ÎÁ ËÏÍÐÁËÔ-ÄÉÓËÉ É FTP-ÓÅÒ×ÅÒÙ. îÁÓÔÒÏÊËÁ ÆÁÊÌÁ Makefile îÁÓÔÒÏÊËÁ ÆÁÊÌÁ Makefile ÄÏÓÔÁÔÏÞÎÏ ÐÒÏÓÔÁ, É ÍÙ ÓÎÏ×Á ÐÒÅÄÐÏÌÁÇÁÅÍ, ÞÔÏ ÐÅÒÅÄ ÔÅÍ, ËÁË ÎÁÞÁÔØ, ×Ù ÐÏÓÍÏÔÒÉÔÅ ÎÁ ÓÕÝÅÓÔ×ÕÀÝÉÅ ÐÒÉÍÅÒÙ. ë ÔÏÍÕ ÖÅ × ÜÔÏÍ ÒÕËÏ×ÏÄÓÔ×Å ÉÍÅÅÔÓÑ ÐÒÉÍÅÒÎÙÊ Makefile, ÔÁË ÞÔÏ ×ÚÇÌÑÎÉÔÅ ÎÁ ÎÅÇÏ É, ÐÏÖÁÌÕÊÓÔÁ, ÓÌÅÄÕÊÔÅ ÐÏÒÑÄËÕ ÐÅÒÅÍÅÎÎÙÈ É ÒÁÚÄÅÌÏ× × ÜÔÏÍ ÏÂÒÁÚÃÅ, ÞÔÏÂÙ ÏÂÌÅÇÞÉÔØ ÞÔÅÎÉÅ ×ÁÛÅÇÏ ÐÏÒÔÁ ÄÒÕÇÉÍÉ ÌÀÄØÍÉ. éÔÁË, ÒÁÓÐÏÌÏÖÉÍ ÒÅÛÁÅÍÙÅ ÚÁÄÁÞÉ × ÐÏÒÑÄËÅ ÉÈ ×ÏÚÎÉËÎÏ×ÅÎÉÑ ÐÒÉ ÓÏÚÄÁÎÉÉ ×ÁÛÅÇÏ ÎÏ×ÏÇÏ ÆÁÊÌÁ Makefile: ïÒÉÇÉÎÁÌØÎÙÅ ÉÓÈÏÄÎÙÊ ËÏÄ îÁÈÏÄÉÔÓÑ ÌÉ ÏÎ × ËÁÔÁÌÏÇÅ DISTDIR × ×ÉÄÅ ÓÔÁÎÄÁÒÔÎÏÇÏ ÕÐÁËÏ×ÁÎÎÏÇÏ ÁÒÈÉ×ÁÔÏÒÏÍ gzip tar-ÁÒÈÉ×Á Ó ÉÍÅÎÅÍ ÔÉÐÁ foozolix-1.2.tar.gz? åÓÌÉ ÜÔÏ ÔÁË, ÍÏÖÎÏ ÐÅÒÅÊÔÉ Ë ÓÌÅÄÕÀÝÅÍÕ ÛÁÇÕ. åÓÌÉ ÎÅÔ, ÔÏ ×Ù ÄÏÌÖÎÙ ÐÏÐÙÔÁÔØÓÑ ÐÅÒÅÏÐÒÅÄÅÌÉÔØ ÎÅËÏÔÏÒÙÅ ÉÚ ÐÅÒÅÍÅÎÎÙÈ DISTVERSION, DISTNAME, EXTRACT_CMD, EXTRACT_BEFORE_ARGS, EXTRACT_AFTER_ARGS, EXTRACT_SUFX ÉÌÉ DISTFILES × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÔÏÇÏ, ÎÁÓËÏÌØËÏ ÎÅÏÂÙÞÅÎ ÆÏÒÍÁÔ ÄÉÓÔÒÉÂÕÔÉ×ÎÏÇÏ ÆÁÊÌÁ. ÷ ÈÕÄÛÅÍ ÓÌÕÞÁÅ ×Ù ÍÏÖÅÔÅ ÐÒÏÓÔÏ ÏÐÒÅÄÅÌÉÔØ Ó×ÏÀ ÓÏÂÓÔ×ÅÎÎÕÀ ÃÅÌØ do-extract ÄÌÑ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ ÄÅÊÓÔ×ÉÊ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÈÏÔÑ Ë ÜÔÏÍÕ ÎÕÖÎÏ ÂÕÄÅÔ ÐÒÉÂÅÇÁÔØ × ÏÞÅÎØ ÒÅÄËÉÈ ÓÌÕÞÁÑÈ, ÅÓÌÉ ×ÏÏÂÝÅ ÐÒÉÄ£ÔÓÑ. éÍÅÎÏ×ÁÎÉÅ ÷ ÐÅÒ×ÏÊ ÞÁÓÔÉ Makefile ÐÏÒÔÁ ÅÍÕ ÄÁ£ÔÓÑ ÎÁÚ×ÁÎÉÅ, ÕËÁÚÙ×ÁÅÔÓÑ ÅÇÏ ÎÏÍÅÒ ×ÅÒÓÉÉ É ÐÒÉÎÁÄÌÅÖÎÏÓÔØ Ë ÐÒÁ×ÉÌØÎÏÊ ËÁÔÅÇÏÒÉÉ. <makevar>PORTNAME</makevar> É <makevar>PORTVERSION</makevar> ÷ ÐÅÒÅÍÅÎÎÏÊ PORTNAME ×Ù ÄÏÌÖÎÙ ÕËÁÚÁÔØ ÏÓÎÏ×ÎÕÀ ÞÁÓÔØ ÉÍÅÎÉ ×ÁÛÅÇÏ ÐÏÒÔÁ, Á × ÐÅÒÅÍÅÎÎÏÊ PORTVERSION - ÎÏÍÅÒ ×ÅÒÓÉÉ. <makevar>PORTREVISION</makevar> É <makevar>PORTEPOCH</makevar> <makevar>PORTREVISION</makevar> ðÅÒÅÍÅÎÎÁÑ PORTREVISION ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ ÍÏÎÏÔÏÎÎÏ Õ×ÅÌÉÞÉ×ÁÀÝÅÅÓÑ ÞÉÓÌÏ, ËÏÔÏÒÏÅ ÏÂÎÕÌÑÅÔÓÑ ÐÒÉ ËÁÖÄÏÍ Õ×ÅÌÉÞÅÎÉÉ ÚÎÁÞÅÎÉÑ ÐÅÒÅÍÅÎÎÏÊ PORTVERSION (ÔÏ ÅÓÔØ ËÁÖÄÙÊ ÒÁÚ, ËÏÇÄÁ ÓÏÚÄÁÔÅÌÑÍÉ ×ÙÐÕÓËÁÅÔÓÑ ÎÏ×ÙÊ ÏÆÉÃÉÁÌØÎÙÊ ÒÅÌÉÚ), É ÄÏÂÁ×ÌÑÅÔÓÑ Ë ÉÍÅÎÉ ÐÁËÅÔÁ, ÅÓÌÉ ÏÎÏ ÎÅ ÒÁ×ÎÏ ÎÕÌÀ. éÚÍÅÎÅÎÉÑ × PORTREVISION ÉÓÐÏÌØÚÕÀÔÓÑ Á×ÔÏÍÁÔÉÚÉÒÏ×ÁÎÎÙÍÉ ÉÎÓÔÒÕÍÅÎÔÁÍÉ (ÎÁÐÒÉÍÅÒ, &man.pkg.version.1;) ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÆÁËÔÁ ÐÏÑ×ÌÅÎÉÑ ÎÏ×ÏÇÏ ÐÁËÅÔÁ. úÎÁÞÅÎÉÅ PORTREVISION ÄÏÌÖÎÏ Õ×ÅÌÉÞÉ×ÁÔØÓÑ ËÁÖÄÙÊ ÒÁÚ, ËÏÇÄÁ × ÐÏÒÔÅ FreeBSD ÄÅÌÁÀÔÓÑ ÉÚÍÅÎÅÎÉÑ, ËÏÔÏÒÙÅ ÄÏÓÔÁÔÏÞÎÏ ÓÉÌØÎÏ ÚÁÔÒÁÇÉ×ÁÀÔ ÓÏÄÅÒÖÉÍÏÅ ÉÌÉ ÓÔÒÕËÔÕÒÕ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÐÁËÅÔÁ. ðÒÉÍÅÒÙ ÓÌÕÞÁÅ×, ËÏÇÄÁ ÚÎÁÞÅÎÉÅ PORTREVISION ÄÏÌÖÎÏ ÂÙÔØ Õ×ÅÌÉÞÅÎÏ: äÏÂÁ×ÌÅÎÉÅ ÐÁÔÞÅÊ ÄÌÑ ÉÓÐÒÁ×ÌÅÎÉÑ ÕÑÚ×ÉÍÏÓÔÅÊ, ÏÛÉÂÏË, ÉÌÉ ÄÏÂÁ×ÌÅÎÉÑ ÎÏ×ÏÊ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ × ÐÏÒÔ. éÚÍÅÎÅÎÉÑ × ÆÁÊÌÅ Makefile ÐÏÒÔÁ ÄÌÑ ×ËÌÀÞÅÎÉÑ É ×ÙËÌÀÞÅÎÉÑ ÐÁÒÁÍÅÔÒÏ×, ÏÐÒÅÄÅÌÑÅÍÙÈ ÐÒÉ ËÏÍÐÉÌÑÃÉÉ ÐÁËÅÔÁ. éÚÍÅÎÅÎÉÑ × ÓÐÉÓËÅ ÕÐÁËÏ×ËÉ ÉÌÉ × ÐÏ×ÅÄÅÎÉÉ ÐÁËÅÔÁ ×Ï ×ÒÅÍÑ ÅÇÏ ÕÓÔÁÎÏ×ËÉ (ÎÁÐÒÉÍÅÒ, ÉÚÍÅÎÅÎÉÅ ÓËÒÉÐÔÁ, ÇÅÎÅÒÉÒÕÀÝÅÇÏ ÎÁÞÁÌØÎÙÅ ÄÁÎÎÙÅ ÄÌÑ ÐÁËÅÔÁ, ÔÁËÉÅ, ËÁË ssh-ËÌÀÞÉ ÄÌÑ ÈÏÓÔÁ). õ×ÅÌÉÞÅÎÉÅ ×ÅÒÓÉÉ ÄÉÎÁÍÉÞÅÓËÏÊ ÂÉÂÌÉÏÔÅËÉ, ÏÔ ËÏÔÏÒÏÊ ÚÁ×ÉÓÉÔ ÐÏÒÔ (× ÜÔÏÍ ÓÌÕÞÁÅ ÔÏÔ, ËÔÏ ÐÏÐÙÔÁÅÔÓÑ ÕÓÔÁÎÏ×ÉÔØ ÓÔÁÒÙÊ ÐÁËÅÔ ÐÏÓÌÅ ÕÓÔÁÎÏ×ËÉ ÂÏÌÅÅ ÎÏ×ÏÊ ×ÅÒÓÉÉ ÂÉÂÌÉÏÔÅËÉ, ÎÅ ÓÍÏÖÅÔ ÜÔÏÇÏ ÓÄÅÌÁÔØ, ÐÏÔÏÍÕ ÞÔÏ ÐÒÉ ÜÔÏÍ ÂÕÄÅÔ ÄÅÌÁÔØÓÑ ÐÏÉÓË ÓÔÁÒÏÊ ÂÉÂÌÉÏÔÅËÉ libfoo.x, Á ÎÅ libfoo.(x+1)). âÏÌØÛÉÅ ÆÕÎËÃÉÏÎÁÌØÎÙÅ ÉÚÍÅÎÅÎÉÑ × ÄÉÓÔÒÉÂÕÔÉ×ÎÏÍ ÆÁÊÌÅ ÐÏÒÔÁ, ÐÒÏÉÓÈÏÄÑÝÉÅ ÂÅÚ ÏÂßÑ×ÌÅÎÉÊ, É ÐÒÉ×ÏÄÑÝÉÅ Ë ÂÏÌØÛÉÍ ÉÚÍÅÎÅÎÉÑÍ, ÔÏ ÅÓÔØ ÉÚÍÅÎÅÎÉÑ × ÄÉÓÔÒÉÂÕÔÉ×Å ÔÒÅÂÕÀÔ ËÏÒÒÅËÔÉÒÏ×ËÉ ÆÁÊÌÁ distinfo ÂÅÚ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÉÚÍÅÎÅÎÉÑ PORTVERSION, ËÏÇÄÁ ËÁË ËÏÍÁÎÄÁ diff -ru ÍÅÖÄÕ ÎÏ×ÏÊ É ÓÔÁÒÏÊ ×ÅÒÓÉÑÍÉ ÐÏËÁÚÙ×ÁÅÔ ÎÅÔÒÉ×ÉÁÌØÎÙÅ ÉÚÍÅÎÅÎÉÑ × ËÏÄÅ. ðÒÉÍÅÒÙ ÉÚÍÅÎÅÎÉÊ, ËÏÔÏÒÙÅ ÎÅ ÔÒÅÂÕÀÔ Õ×ÅÌÉÞÅÎÉÑ ÐÅÒÅÍÅÎÎÏÊ PORTREVISION: éÚÍÅÎÅÎÉÑ ÓÔÉÌÑ × ÓËÅÌÅÔÅ ÐÏÒÔÁ ÂÅÚ ÆÕÎËÃÉÏÎÁÌØÎÙÈ ÉÚÍÅÎÅÎÉÊ × ÐÁËÅÔÅ. éÚÍÅÎÅÎÉÑ × ÐÅÒÅÍÅÎÎÏÊ MASTER_SITES ÉÌÉ ÄÒÕÇÉÅ ÆÕÎËÃÉÏÎÁÌØÎÙÅ ÉÚÍÅÎÅÎÉÑ ÐÏÒÔÁ, ËÏÔÏÒÙÅ ÎÅ ÚÁÔÒÁÇÉ×ÁÀÔ ÐÏÌÕÞÁÀÝÅÇÏÓÑ ÐÁËÅÔÁ. ôÒÉ×ÉÁÌØÎÙÅ ÐÁÔÞÉ Ë ÄÉÓÔÒÉÂÕÔÉ×ÎÏÍÕ ÆÁÊÌÕ, ÔÁËÉÅ, ËÁË ÉÓÐÒÁ×ÌÅÎÉÑ ÏÐÅÞÁÔÏË, ËÏÔÏÒÙÅ ÎÅ ÔÁË ÕÖ ×ÁÖÎÙ, ÞÔÏ ÐÏÌØÚÏ×ÁÔÅÌÉ ÐÁËÅÔÁ ÄÏÌÖÎÙ ÏÚÁÂÏÔÉÔØÓÑ ÏÂÎÏ×ÌÅÎÉÅÍ. éÓÐÒÁ×ÌÅÎÉÑ, ËÁÓÁÀÝÉÅÓÑ ÜÔÁÐÁ ÐÏÓÔÒÏÅÎÉÑ, ËÏÔÏÒÙÅ ÄÅÌÁÀÔ ×ÏÚÍÏÖÎÙÍ ÐÏÓÔÒÏÅÎÉÅ ÐÁËÅÔÁ, ÅÓÌÉ ÒÁÎÅÅ ÜÔÏ ÂÙÌÏ ÎÅ×ÏÚÍÏÖÎÏ ÓÄÅÌÁÔØ (ÐÏËÁ ÉÚÍÅÎÅÎÉÑ ÎÅ ÐÒÉ×ÏÄÑÔ Ë ÉÚÍÅÎÅÎÉÀ ÒÁÂÏÔÙ ÎÁ ÌÀÂÙÈ ÄÒÕÇÉÈ ÐÌÁÔÆÏÒÍÁÈ, ÎÁ ËÏÔÏÒÙÈ ÐÏÒÔ ÒÁÎÅÅ ÓÔÒÏÉÌÓÑ). ôÁË ËÁË PORTREVISION ÏÔÒÁÖÁÅÔ ÓÏÄÅÒÖÉÍÏÅ ÐÁËÅÔÁ, ÔÏ, ÅÓÌÉ ÒÁÎÅÅ ÐÁËÅÔ ÎÅ ÓÔÒÏÉÌÓÑ, ÔÏ ÎÅÔ ÎÕÖÄÙ Õ×ÅÌÉÞÉ×ÁÔØ PORTREVISION ÄÌÑ ÏÔÍÅÔËÉ ÉÚÍÅÎÅÎÉÑ. ðÒÁ×ÉÌÏ, ËÏÔÏÒÏÍÕ ÎÕÖÎÏ ÐÒÉÂÌÉÚÉÔÅÌØÎÏ ÓÌÅÄÏ×ÁÔØ, ÚÁËÌÀÞÁÅÔÓÑ × ÔÏÍ, ÞÔÏ ÎÕÖÎÏ ÓÐÒÁÛÉ×ÁÔØ ÓÅÂÑ, Ñ×ÌÑÅÔÓÑ ÌÉ ×ÎÏÓÉÍÏÅ × ÐÏÒÔ ÉÚÍÅÎÅÎÉÅ ÔÁËÉÍ, ÞÔÏ ÏÔ ÎÅÇÏ ×ÙÉÇÒÁÀÔ ×ÓÅ (× ×ÉÄÅ ÕÓÏ×ÅÒÛÅÎÓÔ×Ï×ÁÎÉÑ, ÉÓÐÒÁ×ÌÅÎÉÑ ÉÌÉ ÂÌÁÇÏÄÁÒÑ ÔÏÍÕ, ÞÔÏ ÎÏ×ÙÊ ÐÁËÅÔ ÂÕÄÅÔ ×ÏÏÂÝÅ ÒÁÂÏÔÏÓÐÏÓÏÂÎÙÍ), É ÐÒÉÍÉÔÅ ×Ï ×ÎÉÍÁÎÉÅ ÔÏÔ ÆÁËÔ, ÞÔÏ ÐÒÉ ÜÔÏÍ ×ÓÅ, ËÔÏ ÒÅÇÕÌÑÒÎÏ ÏÂÎÏ×ÌÑÀÔ Ó×Ï£ ÄÅÒÅ×Ï ÐÏÒÔÏ×, ÂÕÄÕÔ ÏÂÑÚÁÎÙ ÜÔÏ ÓÄÅÌÁÔØ. åÓÌÉ ÜÔÏ ÔÁË, ÔÏ ÐÅÒÅÍÅÎÎÁÑ PORTREVISION ÄÏÌÖÎÁ ÂÙÔØ Õ×ÅÌÉÞÅÎÁ. <makevar>PORTEPOCH</makevar> ÷ÒÅÍÑ ÏÔ ×ÒÅÍÅÎÉ ÒÁÚÒÁÂÏÔÞÉË ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ ÉÌÉ ÓÏÚÄÁÔÅÌØ ÐÏÒÔÁ FreeBSD ÄÅÌÁÀÔ ÞÔÏ-ÔÏ ÎÅ ÔÁË É ×ÙÐÕÓËÁÀÔ ×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÙ, ÎÏÍÅÒ ËÏÔÏÒÏÊ ÍÅÎØÛÅ ÐÒÅÄÙÄÕÝÅÊ ×ÅÒÓÉÉ. ðÒÉÍÅÒÏÍ ÜÔÏÇÏ Ñ×ÌÑÅÔÓÑ ÐÏÒÔ, ÎÁÚ×ÁÎÉÅ ËÏÔÏÒÏÇÏ ÍÅÎÑÅÔÓÑ Ó foo-20000801 ÎÁ foo-1.0 (ÉÚÎÁÞÁÌØÎÏ ÜÔÏ ÎÅ ÓÞÉÔÁÌÏÓØ ÂÙ ÂÏÌÅÅ ÎÏ×ÏÊ ×ÅÒÓÉÅÊ, ÔÁË ËÁË 20000801 ÞÉÓÌÅÎÎÏ ÂÏÌØÛÅ, ÞÅÍ 1). ÷ ÓÉÔÕÁÃÉÑÈ, ÐÏÄÏÂÎÙÈ ÜÔÏÊ, ÄÏÌÖÎÏ ÂÙÔØ Õ×ÅÌÉÞÅÎÏ ÚÎÁÞÅÎÉÅ PORTEPOCH. åÓÌÉ ÚÎÁÞÅÎÉÅ PORTEPOCH ÎÅ ÒÁ×ÎÏ ÎÕÌÀ, ÔÏ ÏÎÏ ÄÏÂÁ×ÌÑÅÔÓÑ Ë ÉÍÅÎÉ ÐÁËÅÔÁ, ËÁË ÏÐÉÓÁÎÏ × ÒÁÚÄÅÌÅ ×ÙÛÅ. úÎÁÞÅÎÉÅ PORTEPOCH ÎÉËÏÇÄÁ ÎÅ ÄÏÌÖÎÏ ÕÍÅÎØÛÁÔØÓÑ ÉÌÉ ÓÂÒÁÓÙ×ÁÔØÓÑ × ÎÏÌØ, ÐÏÔÏÍÕ ÞÔÏ ÜÔÏ ÐÒÉ×ÅÄ£Ô Ë ÏÛÉÂËÅ ÓÒÁ×ÎÅÎÉÑ Ó ÐÁËÅÔÏÍ Ó ÍÅÎØÛÉÍ ÎÏÍÅÒÏÍ ÜÐÏÈÉ (ÔÏ ÅÓÔØ ÔÏ, ÞÔÏ ÐÁËÅÔ ÕÓÔÁÒÅÌ, ÏÂÎÁÒÕÖÅÎÏ ÎÅ ÂÕÄÅÔ): ÎÏÍÅÒ ÎÏ×ÏÊ ×ÅÒÓÉÉ (ÎÁÐÒÉÍÅÒ, 1.0,1 × ÐÒÉÍÅÒÅ ×ÙÛÅ) ÏÓÔÁÎÅÔÓÑ ÍÅÎØÛÅ, ÞÅÍ ÎÏÍÅÒ ÐÒÅÄÙÄÕÝÅÊ ×ÅÒÓÉÉ (20000801), ÏÄÎÁËÏ ÓÕÆÆÉËÓ ,1 ÉÎÔÅÒÐÒÅÔÉÒÕÅÔÓÑ ÒÁÚÌÉÞÎÙÍÉ Á×ÔÏÍÁÔÉÚÉÒÏ×ÁÎÎÙÍÉ ÕÔÉÌÉÔÁÍÉ ÏÓÏÂÙÍ ÏÂÒÁÚÏÍ, É ÏËÁÖÅÔÓÑ ÂÏÌØÛÅ, ÞÅÍ ÐÒÅÄÐÏÌÁÇÁÅÍÙÊ ÓÕÆÆÉËÓ ,0 ÂÏÌÅÅ ÒÁÎÎÅÇÏ ÐÁËÅÔÁ). îÅËÏÒÒÅËÔÎÏÅ ÕÍÅÎØÛÅÎÉÅ ÉÌÉ ÓÂÒÏÓ PORTEPOCH ÐÒÉ×ÏÄÉÔ Ë ÐÅÞÁÌØÎÙÍ ÐÏÓÌÅÄÓÔ×ÉÑÍ; ÅÓÌÉ ×Ù ÎÅ ÐÏÎÑÌÉ, Ï Þ£Í ÛÌÁ ÒÅÞØ ÒÁÎÅÅ, ÐÏÖÁÌÕÊÓÔÁ, ×Ó£ ÖÅ ÒÁÚÂÅÒÉÔÅÓØ Ó ÜÔÉÍ, ÌÉÂÏ ÓÐÒÏÓÉÔÅ × ÓÐÉÓËÁÈ ÒÁÓÓÙÌËÉ. ðÒÅÄÐÏÌÁÇÁÅÔÓÑ, ÞÔÏ × ÂÏÌØÛÉÎÓÔ×Å ÐÏÒÔÏ× ÐÅÒÅÍÅÎÎÁÑ PORTEPOCH ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÎÅ ÂÕÄÅÔ, ÎÏ ÐÒÉ ËÏÒÒÅËÔÎÏÍ ÉÓÐÏÌØÚÏ×ÁÎÉÉ PORTVERSION ÍÏÖÅÔ ÐÏÑ×ÉÔØÓÑ ÎÅÏÂÈÏÄÉÍÏÓÔØ Å£ ÉÍÅÔØ, ÅÓÌÉ × ÂÕÄÕÝÉÈ ÒÅÌÉÚÁÈ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÄÏÌÖÎÏ ÉÚÍÅÎÉÔØ ÓÔÒÕËÔÕÒÕ ÎÏÍÅÒÁ ×ÅÒÓÉÉ. ïÄÎÁËÏ ÓÏÚÄÁÔÅÌÑÍ ÐÏÒÔÏ× ÎÕÖÎÏ ÂÙÔØ ×ÎÉÍÁÔÅÌØÎÙÍÉ, ËÏÇÄÁ ÒÁÚÒÁÂÏÔÞÉË ×ÙÐÕÓËÁÅÔ ÒÅÌÉÚ ÂÅÚ ÏÆÉÃÉÁÌØÎÏÇÏ ÎÏÍÅÒÁ ×ÅÒÓÉÉ — ÜÄÁËÉÅ ÐÒÏÍÅÖÕÔÏÞÎÙÅ ÒÅÌÉÚÙ. éÍÅÅÔÓÑ ÓÏÂÌÁÚÎ ÐÏÍÅÔÉÔØ ÒÅÌÉÚ ÄÁÔÏÊ ÅÇÏ ×ÙÈÏÄÁ, ÞÔÏ ÍÏÖÅÔ ×ÙÚ×ÁÔØ ÐÒÏÂÌÅÍÙ, ËÁË É × ÐÒÉÍÅÒÅ ×ÙÛÅ, ËÏÇÄÁ ÂÕÄÅÔ ×ÙÐÕÝÅÎ ÎÏ×ÙÊ ÏÆÉÃÉÁÌØÎÙÊ ÒÅÌÉÚ. îÁÐÒÉÍÅÒ, ÅÓÌÉ ÐÒÏÍÅÖÕÔÏÞÎÙÊ ÒÅÌÉÚ ÐÏÍÅÞÅÎ ÄÁÔÏÊ 20000917, Á ÐÒÅÄÙÄÕÝÁÑ ×ÅÒÓÉÑ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ ÉÍÅÌÁ ÎÏÍÅÒ 1.2, ÔÏ ÐÒÏÍÅÖÕÔÏÞÎÏÍÕ ÒÅÌÉÚÕ ÄÏÌÖÎÏ ÂÙÔØ ÐÏÓÔÁ×ÌÅÎÏ × ÓÏÏÔ×ÅÔÓÔ×ÉÅ ÚÎÁÞÅÎÉÅ PORTVERSION, ÒÁ×ÎÏÅ 1.2.20000917 ÉÌÉ ÞÔÏ-ÔÏ ÐÏÈÏÖÅÅ, ÎÏ ÎÅ 20000917, ÔÁË ËÁË ÐÏÓÌÅÄÕÀÝÉÊ ÒÅÌÉÚ, ÓËÁÖÅÍ, 1.3, ÄÏÌÖÅÎ ÉÍÅÔØ ÞÉÓÌÅÎÎÏ ÂÏÌØÛÅÅ ÚÎÁÞÅÎÉÅ. ðÒÉÍÅÒ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÐÅÒÅÍÅÎÎÙÈ <makevar>PORTREVISION</makevar> É <makevar>PORTEPOCH</makevar> ÷ÙÐÏÌÎÅÎ ËÏÍÍÉÔ ÐÏÒÔÁ gtkmumble, ×ÅÒÓÉÉ 0.10, × ËÏÌÌÅËÃÉÀ ÐÏÒÔÏ×. PORTNAME= gtkmumble PORTVERSION= 0.10 úÎÁÞÅÎÉÅ PKGNAME ÓÔÁÎÅÔ ÒÁ×ÎÙÍ gtkmumble-0.10. ïÂÎÁÒÕÖÅÎÁ ÂÒÅÛØ × ÂÅÚÏÐÁÓÎÏÓÔÉ, ÉÓÐÒÁ×ÌÅÎÉÅ ËÏÔÏÒÏÊ ÐÏÔÒÅÂÏ×ÁÌÏ ÓÏÚÄÁÎÉÑ ÌÏËÁÌØÎÏÇÏ ÐÁÔÞÁ ÄÌÑ FreeBSD. óÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÂÙÌÏ Õ×ÅÌÉÞÅÎÏ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ PORTREVISION. PORTNAME= gtkmumble PORTVERSION= 0.10 PORTREVISION= 1 PKGNAME ÐÒÉÎÉÍÁÅÔ ÚÎÁÞÅÎÉÅ gtkmumble-0.10_1 òÁÚÒÁÂÏÔÞÉËÏÍ ×ÙÐÕÝÅÎÁ ÎÏ×ÁÑ ×ÅÒÓÉÑ Ó ÎÏÍÅÒÏÍ 0.2 (ÏËÁÚÁÌÏÓØ, ÞÔÏ ÐÏÄ ÎÏÍÅÒÏÍ 0.10 Á×ÔÏÒ ÉÍÅÌ × ×ÉÄÕ 0.1.0, Á ÎÅ ÔÏ, ÞÔÏ ÂÕÄÅÔ ×ÙÐÕÝÅÎÏ ÐÏÓÌÅ ×ÅÒÓÉÉ 0.9 - ÉÚ×ÉÎÉÔÅ, ÔÅÐÅÒØ ÕÖÅ ÐÏÚÄÎÏ). ôÁË ËÁË ÎÏ×ÙÊ ÍÌÁÄÛÉÊ ÎÏÍÅÒ ×ÅÒÓÉÉ 2 ÐÏ ÚÎÁÞÅÎÉÀ ÍÅÎØÛÅ, ÞÅÍ ÎÏÍÅÒ ÐÒÅÄÙÄÕÝÅÊ ×ÅÒÓÉÉ 10, ÔÏ ÄÏÌÖÎÏ ÂÙÔØ Õ×ÅÌÉÞÅÎÏ ÚÎÁÞÅÎÉÅ PORTEPOCH ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÚÁÓÔÁ×ÉÔØ ÒÁÓÐÏÚÎÁ×ÁÔØ ×ÎÏר ÓÏÚÄÁ×ÁÅÍÙÊ ÐÁËÅÔ ËÁË ÂÏÌÅÅ ÎÏ×ÙÊ. ôÁË ËÁË ÜÔÏ ÎÏ×ÙÊ ÒÅÌÉÚ ÐÒÏÇÒÁÍÍÙ, ÔÏ PORTREVISION ÏÂÎÕÌÑÅÔÓÑ (ÉÌÉ ÕÄÁÌÑÅÔÓÑ ÉÚ ÆÁÊÌÁ Makefile). PORTNAME= gtkmumble PORTVERSION= 0.2 PORTEPOCH= 1 PKGNAME ÐÒÉÎÉÍÁÅÔ ÚÎÁÞÅÎÉÅ gtkmumble-0.2,1 óÌÅÄÕÀÝÉÊ ÒÅÌÉÚ ÉÍÅÅÔ ÎÏÍÅÒ ×ÅÒÓÉÉ 0.3. ôÁË ËÁË ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ PORTEPOCH ÎÉËÏÇÄÁ ÎÅ ÕÍÅÎØÛÁÅÔÓÑ, ÞÔÏ ÐÅÒÅÍÅÎÎÙÅ, ÏÐÒÅÄÅÌÑÀÝÉÅ ×ÅÒÓÉÉ, ÔÅÐÅÒØ ×ÙÇÌÑÄÑÔ ÔÁË: PORTNAME= gtkmumble PORTVERSION= 0.3 PORTEPOCH= 1 PKGNAME ÐÒÉÎÉÍÁÅÔ ÚÎÁÞÅÎÉÅ gtkmumble-0.3,1 åÓÌÉ ÚÎÁÞÅÎÉÅ PORTEPOCH ÜÔÉÍ ÏÂÎÏ×ÌÅÎÉÅÍ ÂÙÌÏ ÂÙ ÓÂÒÏÛÅÎÏ × 0, ÔÏ ËÔÏ-ÎÉÂÕÄØ, ÉÍÅÀÝÉÊ ÕÓÔÁÎÏ×ÌÅÎÎÙÊ ÐÁËÅÔ gtkmumble-0.10_1, ÎÅ ÓÍÏÇ ÂÙ ÏÐÏÚÎÁÔØ ÐÁËÅÔ gtkmumble-0.3 ËÁË ÂÏÌÅÅ ÎÏ×ÙÊ, ÔÁË ËÁË 3 ÂÙÌÏ ÂÙ ÍÅÎØÛÅ, ÞÅÍ 10. ðÏÍÎÉÔÅ, ÞÔÏ × ÐÅÒ×ÕÀ ÏÞÅÒÅÄØ ÜÔÏ ËÁÓÁÅÔÓÑ PORTEPOCH. ðÅÒÅÍÅÎÎÙÅ <makevar>PKGNAMEPREFIX</makevar> É <makevar>PKGNAMESUFFIX</makevar> ä×Å ÎÅÏÂÑÚÁÔÅÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ, PKGNAMEPREFIX É PKGNAMESUFFIX, ÏÂßÅÄÉÎÑÀÔÓÑ ÓÏ ÚÎÁÞÅÎÉÑÍÉ PORTNAME É PORTVERSION ÄÌÑ ÆÏÒÍÉÒÏ×ÁÎÉÑ PKGNAME × ÆÏÒÍÅ ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}. äÏÂÅÊÔÅÓØ ÔÏÇÏ, ÞÔÏÂÙ ÜÔÏ ÓÏÏÔ×ÅÔÓÔ×Ï×ÁÌÏ ÎÁÛÉÍ ÒÅËÏÍÅÎÄÁÃÉÑÍ ÐÏ ÐÒÁ×ÉÌØÎÏÍÕ ×ÙÂÏÒÕ ÎÁÚ×ÁÎÉÊ ÄÌÑ ÐÁËÅÔÏ×. ÷ ÞÁÓÔÎÏÓÔÉ, × ÐÅÒÅÍÅÎÎÏÊ PORTVERSION ÎÅ ÒÁÚÒÅÛÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÄÅÆÉÓÁ (-). ëÒÏÍÅ ÔÏÇÏ, ÅÓÌÉ × ÉÍÅÎÉ ÐÁËÅÔÁ ÐÒÉÓÕÔÓÔ×ÕÅÔ ÞÁÓÔØ language- ÉÌÉ -compiled.specifics (ÓÍÏÔÒÉÔÅ ÎÉÖÅ), ÔÏ ÉÓÐÏÌØÚÕÊÔÅ ÐÅÒÅÍÅÎÎÙÅ PKGNAMEPREFIX É PKGNAMESUFFIX, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ. îÅ ÄÅÌÁÊÔÅ ÉÈ ÞÁÓÔØÀ ÚÎÁÞÅÎÉÑ ÐÅÒÅÍÅÎÎÏÊ PORTNAME. <makevar>LATEST_LINK</makevar> LATEST_LINK ÚÁÄÁÅÔ × ÐÒÏÃÅÓÓÅ ÐÏÓÔÒÏÅÎÉÑ ÐÁËÅÔÁ ËÏÒÏÔËÏÅ ÉÍÑ ÓÓÙÌËÉ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ËÏÍÁÎÄÙ pkg_add -r. üÔÏ ÐÏÚ×ÏÌÑÅÔ, Ë ÐÒÉÍÅÒÕ, ÕÓÔÁÎÏ×ÉÔØ ÐÏÓÌÅÄÎÀÀ ×ÅÒÓÉÀ perl, ÉÓÐÏÌØÚÕÑ pkg_add -r perl, ÂÅÚ ÚÎÁÎÉÑ ÔÏÞÎÏÇÏ ÎÏÍÅÒÁ ×ÅÒÓÉÉ. ôÁËÏÅ ÉÍÑ ÄÏÌÖÎÏ ÂÙÔØ ÕÎÉËÁÌØÎÙÍ É ÏÞÅ×ÉÄÎÙÍ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÅÊ. ÷ ÎÅËÏÔÏÒÙÈ ÓÌÕÞÁÑÈ × ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ× ÍÏÖÅÔ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ ÎÅÓËÏÌØËÏ ×ÅÒÓÉÊ ÐÒÏÇÒÁÍÍÙ ÏÄÎÏ×ÒÅÍÅÎÎÏ. ïÂÅ ÓÉÓÔÅÍÙ, ÐÏÓÔÒÏÅÎÉÑ ÉÎÄÅËÓÏ× É ÐÏÓÔÒÏÅÎÉÑ ÐÁËÅÔÏ×, ÎÕÖÄÁÀÔÓÑ × ÓÐÏÓÏÂÎÏÓÔÉ ÉÈ ×ÉÄÅÔØ ËÁË ÒÁÚÎÙÅ, ÎÅÚÁ×ÉÓÉÍÙÅ ÐÏÒÔÙ, ÈÏÔÑ ×ÓÅ ÏÎÉ ÍÏÇÕÔ ÉÍÅÔØ ÓÈÏÖÅÅ ÚÎÁÞÅÎÉÅ ÄÌÑ PORTNAME, PKGNAMEPREFIX É ÄÁÖÅ PKGNAMESUFFIX. ÷ ÜÔÉÈ ÓÌÕÞÁÑÈ ÄÌÑ ×ÓÅÈ ÐÏÒÔÏ× ËÒÏÍÅ ÇÌÁ×ÎÏÇÏ ÓÌÅÄÕÅÔ ÐÒÉÓ×ÏÉÔØ ÒÁÚÌÉÞÎÙÅ ÚÎÁÞÅÎÉÑ ÄÌÑ ÎÅÏÂÑÚÁÔÅÌØÎÏÊ ÐÅÒÅÍÅÎÎÏÊ LATEST_LINK — ÞÔÏÂÙ ÐÏÌÕÞÉÔØ ÐÒÉÍÅÒ ÅÅ ÉÓÐÏÌØÚÏ×ÁÎÉÑ, ÓÍÏÔÒÉÔÅ ÐÏÒÔÙ lang/gcc46 É lang/gcc, Á ÔÁËÖÅ ÓÅÍÅÊÓÔ×Ï www/apache*. ðÒÉ ÕÓÔÁÎÏ×ËÅ NO_LATEST_LINK ÓÓÙÌËÉ ÎÅ ÓÏÚÄÁÀÔÓÑ; ÜÔÁ ÎÅÏÂÑÚÁÔÅÌØÎÁÑ ÐÅÒÅÍÅÎÎÁÑ ÍÏÖÅÔ ÂÙÔØ ÕËÁÚÁÎÁ ×Ï ×ÓÅÈ ×ÅÒÓÉÑÈ, ËÒÏÍÅ ÇÌÁ×ÎÏÊ. ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ËÁË ×ÙÂÉÒÁÔØ ÇÌÁ×ÎÕÀ ×ÅÒÓÉÀ — ÓÁÍÕÀ ÐÏÐÕÌÑÒÎÕÀ, ÓÁÍÕÀ ÐÏÄÄÅÒÖÉ×ÁÅÍÕÀ, Ó ÎÁÉÍÅÎØÛÉÍÉ ÉÚÍÅÎÅÎÉÑÍÉ É ÔÁË ÄÁÌÅÅ — ÜÔÏ ×ÙÈÏÄÉÔ ÚÁ ÒÁÍËÉ ÒÅËÏÍÅÎÄÁÃÉÊ ÜÔÏÇÏ ÒÕËÏ×ÏÄÓÔ×Á; ÍÙ ×ÓÅÇÏ ÌÉÛØ ÓÏÏÂÝÁÅÍ ×ÁÍ, ËÁË ÕËÁÚÙ×ÁÔØ ×ÅÒÓÉÉ ÄÒÕÇÉÈ ÐÏÒÔÏ× ÐÏÓÌÅ ÔÏÇÏ, ËÁË ×Ù ×ÙÂÒÁÌÉ ÇÌÁ×ÎÙÊ. óÏÇÌÁÛÅÎÉÑ ÐÏ ÉÍÅÎÏ×ÁÎÉÀ ÐÁËÅÔÏ× äÁÌÅÅ ÏÐÉÓÁÎÙ ÎÅËÏÔÏÒÙÅ ÓÏÇÌÁÛÅÎÉÑ, ËÏÔÏÒÙÍ ×Ù ÄÏÌÖÎÙ ÓÌÅÄÏ×ÁÔØ × ÉÍÅÎÏ×ÁÎÉÉ ×ÁÛÉÈ ÐÁËÅÔÏ×. ïÎÉ ÂÙÌÉ ÒÁÚÒÁÂÏÔÁÎÙ ÄÌÑ ÏÂÌÅÇÞÅÎÉÑ ÐÒÏÓÍÏÔÒÁ ËÁÔÁÌÏÇÁ, ÔÁË ËÁË ÉÍÅÅÔÓÑ ÕÖÅ ÔÙÓÑÞÉ ÐÁËÅÔÏ×, Á ÐÏÌØÚÏ×ÁÔÅÌÉ ÏÔ×ÅÒÎÕÔÓÑ ÏÔ ÎÁÓ, ÅÓÌÉ ÓÐÉÓÏË ÎÅ ÐÏÎÒÁ×ÉÔÓÑ ÉÈ ×ÚÏÒÕ! éÍÑ ÐÁËÅÔÁ ÄÏÌÖÎÏ ÉÍÅÔØ ×ÉÄ language_region-name-compiled.specifics-version.numbers. éÍÑ ÐÁËÅÔÁ ÏÐÒÅÄÅÌÑÅÔÓÑ ËÁË ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}. ÷Ù ÄÏÌÖÎÙ ÚÁÄÁ×ÁÔØ ÚÎÁÞÅÎÉÑ ÐÅÒÅÍÅÎÎÙÈ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÜÔÉÍ ÆÏÒÍÁÔÏÍ. FreeBSD ÐÙÔÁÅÔÓÑ ÐÏÄÄÅÒÖÉ×ÁÔØ ÑÚÙËÉ, ÎÁ ËÏÔÏÒÙÈ ÒÁÚÇÏ×ÁÒÉ×ÁÀÔ Å£ ÐÏÌØÚÏ×ÁÔÅÌÉ. þÁÓÔØ language- ÄÏÌÖÎÁ ÂÙÔØ Ä×ÕÈÓÉÍ×ÏÌØÎÙÍ ÓÏËÒÁÝÅÎÉÅÍ ÏÔ ÎÁÚ×ÁÎÉÑ ÑÚÙËÁ ÐÏ ÓÔÁÎÄÁÒÔÕ ISO-639, ÅÓÌÉ ÐÏÒÔ ÓÐÅÃÉÆÉÞÅÎ ÄÌÑ ËÏÎËÒÅÔÎÏÇÏ ÑÚÙËÁ. ðÒÉÍÅÒÁÍÉ Ñ×ÌÑÀÔÓÑ ja ÄÌÑ ÑÐÏÎÓËÏÇÏ, ru ÄÌÑ ÒÕÓÓËÏÇÏ, vi ÄÌÑ ×ØÅÔÎÁÍÓËÏÇÏ, zh ÄÌÑ ËÉÔÁÊÓËÏÇÏ, ko ÄÌÑ ËÏÒÅÊÓËÏÇÏ É de ÄÌÑ ÎÅÍÅÃËÏÇÏ ÑÚÙËÏ×. åÓÌÉ ×ÁÛ ÐÏÒÔ ÓÐÅÃÉÆÉÞÅÎ ÄÌÑ ËÏÎËÒÅÔÎÏÇÏ ÒÅÇÉÏÎÁ ×ÎÕÔÒÉ ÏÂÌÁÓÔÉ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÑÚÙËÁ, ÄÏÂÁרÔÅ ÔÁËÖÅ Ä×ÕÈÓÉÍ×ÏÌØÎÙÊ ËÏÄ ÓÔÒÁÎÙ. ðÒÉÍÅÒÁÍÉ Ñ×ÌÑÀÔÓÑ en_US ÄÌÑ US English É fr_CH ÄÌÑ Swiss French. þÁÓÔØ language- ÄÏÌÖÎÁ ÚÁÄÁ×ÁÔØÓÑ × ÐÅÒÅÍÅÎÎÏÊ PKGNAMEPREFIX. ðÅÒ×ÁÑ ÂÕË×Á ÞÁÓÔÉ name ÄÏÌÖÎÁ ÂÙÔØ × ÎÉÖÎÅÍ ÒÅÇÉÓÔÒÅ. (ïÓÔÁ×ÛÁÑÓÑ ÞÁÓÔØ ÎÁÚ×ÁÎÉÑ ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ ÂÕË×Ù × ×ÅÒÈÎÅÍ ÒÅÇÉÓÔÒÅ, ÔÁË ÞÔÏ ÐÒÉÎÉÍÁÊÔÅ ÒÅÛÅÎÉÅ ÓÁÍÉ, ËÏÇÄÁ ÐÒÅÏÂÒÁÚÕÅÔÅ ÉÍÑ ÐÒÏÇÒÁÍÍÎÏÇÏ ÐÁËÅÔÁ, ÓÏÄÅÒÖÁÝÅÇÏ × ÉÍÅÎÉ ÎÅËÏÔÏÒÏÅ ËÏÌÉÞÅÓÔ×Ï ÚÁÇÌÁ×ÎÙÈ ÂÕË×.) óÕÝÅÓÔ×ÕÅÔ ÔÒÁÄÉÃÉÑ ÉÍÅÎÏ×ÁÔØ ÍÏÄÕÌÉ ÄÌÑ Perl 5, ÄÏÂÁ×ÌÑÑ ×ÐÅÒÅÄÉ p5- É ÐÒÅÏÂÒÁÚÕÑ ÐÁÒÕ Ä×ÏÅÔÏÞÉÊ × ÄÅÆÉÓ; ÎÁÐÒÉÍÅÒ, ÍÏÄÕÌØ Data::Dumper ÂÕÄÅÔ ÉÍÅÎÏ×ÁÔØÓÑ p5-Data-Dumper. õÂÅÄÉÔÅÓØ, ÞÔÏ ÉÍÑ ÐÏÒÔÁ É ×ÅÒÓÉÑ ÞÅÔËÏ ÏÔÄÅÌÅÎÙ É ÒÁÚÍÅÝÁÀÔÓÑ × ÐÅÒÅÍÅÎÎÙÈ PORTNAME É PORTVERSION. åÄÉÎÓÔ×ÅÎÎÁÑ ÐÒÉÞÉÎÁ, ÐÏ ËÏÔÏÒÏÊ PORTNAME ÓÏÄÅÒÖÉÔ ×ÅÒÓÉÏÎÎÕÀ ÞÁÓÔØ, ÜÔÏ ÅÓÌÉ ÐÏÌÕÞÅÎÎÙÊ ÄÉÓÔÒÉÂÕÔÉ× ÓÁÍ ÎÁÚ×ÁÎ ÔÁËÉÍ ÏÂÒÁÚÏÍ, ËÁË ÜÔÏ ÓÄÅÌÁÎÏ ÄÌÑ ÐÏÒÔÏ× textproc/libxml2 ÉÌÉ japanese/kinput2-freewnn. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ PORTNAME ÎÅ ÄÏÌÖÅÎ ÓÏÄÅÒÖÁÔØ ÎÉËÁËÏÊ ÉÎÆÏÒÍÁÃÉÉ, ÕËÁÚÙ×ÁÀÝÅÊ ÎÁ ×ÅÒÓÉÀ. ôÏ, ÞÔÏ ÎÅËÏÔÏÒÙÅ ÐÏÒÔÙ ÉÍÅÀÔ ÏÄÉÎÁËÏ×ÙÊ PORTNAME, Ñ×ÌÑÅÔÓÑ ×ÐÏÌÎÅ ÎÏÒÍÁÌØÎÙÍ, ËÁË ÄÌÑ ÐÏÒÔÏ× www/apache*; × ÜÔÏÍ ÓÌÕÞÁÅ ÒÁÚÌÉÞÎÙÅ ×ÅÒÓÉÉ (É ÒÁÚÌÉÞÎÙÅ ÚÁÐÉÓÉ × ÉÎÄÅËÓÅ) ÏÔÌÉÞÁÀÔÓÑ ÐÏ ÚÎÁÞÅÎÉÑÍ PKGNAMEPREFIX, PKGNAMESUFFIX É LATEST_LINK. åÓÌÉ ÐÏÒÔ ÍÏÖÅÔ ÂÙÔØ ÐÏÓÔÒÏÅÎ Ó ÒÁÚÌÉÞÎÙÍÉ ÓÔÁÔÉÞÅÓËÉ ÚÁÄÁÎÎÙÍÉ ÚÎÁÞÅÎÉÑÍÉ ÐÏ ÕÍÏÌÞÁÎÉÀ (ÏÂÙÞÎÏ ÜÔÏ ÞÁÓÔØ ÉÍÅÎÉ ËÁÔÁÌÏÇÁ × ÓÅÍÅÊÓÔ×Å ÐÏÒÔÏ×), ÔÏ ÞÁÓÔØ -compiled.specifics ÄÏÌÖÎÁ ÏÐÒÅÄÅÌÑÔØ ×ËÏÍÐÉÌÉÒÏ×ÁÎÎÙÅ ÚÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ (ÄÅÆÉÓ ÎÅ ÏÂÑÚÁÔÅÌÅÎ). ðÒÉÍÅÒÁÍÉ Ñ×ÌÑÀÔÓÑ ÒÁÚÍÅÒÙ ÂÕÍÁÇÉ É ÛÒÉÆÔÏ×. þÁÓÔØ -compiled.specifics ÄÏÌÖÎÁ ÚÁÄÁ×ÁÔØÓÑ × ÐÅÒÅÍÅÎÎÏÊ PKGNAMESUFFIX. óÔÒÏËÁ Ó ÎÏÍÅÒÏÍ ×ÅÒÓÉÉ ÄÏÌÖÎÁ ÓÌÅÄÏ×ÁÔØ ÚÁ ÄÅÆÉÓÏÍ (-) É Ñ×ÌÑÔØÓÑ ÓÐÉÓËÏÍ ÒÁÚÄÅÌÅÎÎÙÈ Ä×ÏÅÔÏÞÉÅÍ ÞÉÓÅÌ É ÂÕË× × ÎÉÖÎÅÍ ÒÅÇÉÓÔÒÅ. ÷ ÞÁÓÔÎÏÓÔÉ, ÎÅ ÒÁÚÒÅÛÁÅÔÓÑ ÉÍÅÔØ ÅÝÅ ÏÄÉÎ ÄÅÆÉÓ ×ÎÕÔÒÉ ÓÔÒÏËÉ Ó ÏÂÏÚÎÁÞÅÎÉÅÍ ÎÏÍÅÒÁ ×ÅÒÓÉÉ. åÄÉÎÓÔ×ÅÎÎÙÍ ÉÓËÌÀÞÅÎÉÅÍ Ñ×ÌÑÅÔÓÑ ÓÔÒÏÞËÁ pl (ÏÚÎÁÞÁÀÝÁÑ patchlevel), ËÏÔÏÒÁÑ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÔÏÌØËÏ ÔÏÇÄÁ, ËÏÇÄÁ Õ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ ÎÅÔ ÓÔÁÒÛÅÇÏ É ÍÌÁÄÛÅÇÏ ÎÏÍÅÒÁ ×ÅÒÓÉÉ. åÓÌÉ × ÎÏÍÅÒ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ ×ËÌÀÞÅÎÁ ÓÔÒÏÞËÁ ÔÉÐÁ alpha, beta, rc ÉÌÉ pre, ×ÏÚØÍÉÔÅ ÉÚ ÎÅ£ ÐÅÒ×ÕÀ ÂÕË×Õ É ÐÏÓÔÁרÔŠţ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÐÏÓÌÅ ÔÏÞËÉ. åÓÌÉ ÐÏÓÌÅ ÔÁËÉÈ ÓÔÒÏË ÎÏÍÅÒ ×ÅÒÓÉÉ ÅÝ£ ÐÒÏÄÏÌÖÁÅÔÓÑ, ÔÏ ÐÏÓÌÅ ÂÕË×Ù ÄÏÌÖÎÏ ÓÌÅÄÏ×ÁÔØ ÞÉÓÌÏ ÂÅÚ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÒÁÚÄÅÌÑÀÝÅÊ ÔÏÞËÉ. óÍÙÓÌ ÔÁËÏÇÏ ÆÏÒÍÁÔÁ ÚÁËÌÀÞÁÅÔÓÑ × ÕÄÏÂÓÔ×Å ÓÏÒÔÉÒÏ×ËÉ ÐÏÒÔÏ× ÐÏ ÎÏÍÅÒÕ ×ÅÒÓÉÉ. ÷ ÞÁÓÔÎÏÓÔÉ, ÓÌÅÄÉÔÅ ÚÁ ÔÅÍ, ÞÔÏÂÙ ËÏÍÐÏÎÅÎÔÙ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÒÁÚÄÅÌÑÌÉÓØ ÔÏÞËÏÊ, É ÅÓÌÉ ÔÁÍ ÐÒÉÓÕÔÓÔ×ÕÅÔ ÄÁÔÁ, ÔÏ ÉÓÐÏÌØÚÕÊÔÅ ÆÏÒÍÁÔ 0.0.yyyy.mm.dd, ÎÏ ÎÅ dd.mm.yyyy ÉÌÉ ÎÅ ÓÏ×ÍÅÓÔÉÍÙÊ Ó ÐÒÏÂÌÅÍÏÊ Y2K yy.mm.dd. äÏÂÁ×ÌÅÎÉÅ Ë ×ÅÒÓÉÉ ÐÒÅÆÉËÓÁ 0.0. Ñ×ÌÑÅÔÓÑ ×ÁÖÎÙÍ, × ÓÌÕÞÁÅ ÅÓÌÉ ×ÙÐÕÝÅÎ ÒÅÌÉÚ Ó ÐÒÉÓ×ÏÅÎÉÅÍ ÎÁÓÔÏÑÝÅÊ ×ÅÒÓÉÉ, ËÏÔÏÒÁÑ × ÞÉÓÌÏ×ÏÍ ÐÒÅÄÓÔÁ×ÌÅÎÉÉ, ËÏÎÅÞÎÏ ÖÅ, ÂÕÄÅÔ ÎÉÖÅ, ÞÅÍ yyyy. ÷ÏÔ ÎÅÓËÏÌØËÏ (ÒÅÁÌØÎÙÈ) ÐÒÉÍÅÒÏ× ÔÏÇÏ, ËÁË ÐÒÅÏÂÒÁÚÏ×ÁÔØ ÉÍÑ ÉÚ ÏÒÉÇÉÎÁÌØÎÏÇÏ, ÐÒÉÄÕÍÁÎÎÏÇÏ Á×ÔÏÒÁÍÉ, Ë ÐÏÄÈÏÄÑÝÅÍÕ ÄÌÑ ÉÍÅÎÉ ÐÁËÅÔÁ: éÍÑ ÄÉÓÔÒÉÂÕÔÉ×Á PKGNAMEPREFIX PORTNAME PKGNAMESUFFIX PORTVERSION ïÂÏÓÎÏ×ÁÎÉÅ mule-2.2.2 (ÐÕÓÔÏ) mule (ÐÕÓÔÏ) 2.2.2 éÚÍÅÎÅÎÉÊ ÎÅ ÐÏÔÒÅÂÏ×ÁÌÏÓØ EmiClock-1.0.2 (ÐÕÓÔÏ) emiclock (ÐÕÓÔÏ) 1.0.2 äÌÑ ÏÔÄÅÌØÎÙÈ ÐÒÏÇÒÁÍÍ ÉÍÅÎÁ Ó ÚÁÇÌÁ×ÎÙÍÉ ÂÕË×ÁÍÉ ÚÁÐÒÅÝÅÎÙ rdist-1.3alpha (ÐÕÓÔÏ) rdist (ÐÕÓÔÏ) 1.3.a óÔÒÏÞËÉ ÔÉÐÁ alpha ÚÁÐÒÅÝÅÎÙ es-0.9-beta1 (ÐÕÓÔÏ) es (ÐÕÓÔÏ) 0.9.b1 óÔÒÏÞËÉ ÔÉÐÁ beta ÚÁÐÒÅÝÅÎÙ mailman-2.0rc3 (ÐÕÓÔÏ) mailman (ÐÕÓÔÏ) 2.0.r3 óÔÒÏÞËÉ ÔÉÐÁ rc ÚÁÐÒÅÝÅÎÙ v3.3beta021.src (ÐÕÓÔÏ) tiff (ÐÕÓÔÏ) 3.3 þÔÏ ÜÔÏ ÔÁËÏÅ ÂÙÌÏ ×ÏÏÂÝÅ? tvtwm (ÐÕÓÔÏ) tvtwm (ÐÕÓÔÏ) pl11 ÷ÓÅÇÄÁ ÔÒÅÂÕÅÔÓÑ ÕËÁÚÁÎÉÅ ÎÏÍÅÒÁ ×ÅÒÓÉÉ piewm (ÐÕÓÔÏ) piewm (ÐÕÓÔÏ) 1.0 ÷ÓÅÇÄÁ ÔÒÅÂÕÅÔÓÑ ÕËÁÚÁÎÉÅ ÎÏÍÅÒÁ ×ÅÒÓÉÉ xvgr-2.10pl1 (ÐÕÓÔÏ) xvgr (ÐÕÓÔÏ) 2.10.1 pl ÒÁÚÒÅÛÅÎÏ ÔÏÌØËÏ ÐÒÉ ÏÔÓÕÔÓÔ×ÉÉ ÓÔÁÒÛÅÇÏ/ÍÌÁÄÛÅÇÏ ÎÏÍÅÒÁ ×ÅÒÓÉÉ gawk-2.15.6 ja- gawk (ÐÕÓÔÏ) 2.15.6 ÷ÅÒÓÉÑ ÎÁ ÑÐÏÎÓËÏÍ ÑÚÙËÅ psutils-1.13 (ÐÕÓÔÏ) psutils -letter 1.13 òÁÚÍÅÒ ÂÕÍÁÇÉ ÚÁÄÁÅÔÓÑ ÓÔÁÔÉÞÅÓËÉ ×Ï ×ÒÅÍÑ ÐÏÓÔÒÏÅÎÉÑ ÐÁËÅÔÁ pkfonts (ÐÕÓÔÏ) pkfonts 300 1.0 ÐÁËÅÔ ÄÌÑ ÛÒÉÆÔÏ× 300dpi åÓÌÉ × ÉÓÈÏÄÎÏÍ ËÏÄÅ ÁÂÓÏÌÀÔÎÏ ÎÅÔ ÉÎÆÏÒÍÁÃÉÉ Ï ÎÏÍÅÒÅ ×ÅÒÓÉÉ É ÎÅ ÐÏÈÏÖÅ, ÞÔÏ Á×ÔÏÒ ÓÏÂÉÒÁÅÔÓÑ ×ÙÐÕÓËÁÔØ ÄÒÕÇÕÀ ×ÅÒÓÉÀ, ÔÏ × ËÁÞÅÓÔ×Å ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÚÁÄÁÊÔÅ ÐÒÏÓÔÏ 1.0 (ËÁË × ÐÒÉÍÅÒÅ Ó piewm ×ÙÛÅ). ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÓÐÒÏÓÉÔÅ Á×ÔÏÒÁ ÐÒÏÇÒÁÍÍÙ ÉÌÉ ÉÓÐÏÌØÚÕÊÔÅ ÄÁÔÕ (0.0.yyyy.mm.dd) × ËÁÞÅÓÔ×Å ÎÏÍÅÒÁ ×ÅÒÓÉÉ. òÁÚÄÅÌÅÎÉÅ ÐÏ ËÁÔÅÇÏÒÉÑÍ <makevar>CATEGORIES</makevar> ÷ ÐÒÏÃÅÓÓÅ ÓÏÚÄÁÎÉÑ ÐÁËÅÔÁ ÏÎ ÐÏÍÅÝÁÅÔÓÑ × ËÁÔÁÌÏÇ /usr/ports/packages/All, Á × ÏÄÎÏÍ ÉÌÉ ÂÏÌÅÅ ÐÏÄËÁÔÁÌÏÇÏ× ÉÚ /usr/ports/packages ÓÏÚÄÁÀÔÓÑ ÎÁ ÎÅÇÏ ÓÓÙÌËÉ. éÍÅÎÁ ÜÔÉÈ ÐÏÄËÁÔÁÌÏÇÏ× ÏÐÒÅÄÅÌÑÀÔÓÑ ÐÅÒÅÍÅÎÎÏÊ CATEGORIES. ôÁËÁÑ ÓÈÅÍÁ ÎÕÖÎÁ ÄÌÑ ÏÂÌÅÇÞÅÎÉÑ ÖÉÚÎÉ ÐÏÌØÚÏ×ÁÔÅÌÑ, ËÏÇÄÁ ÏÎ ÓÔÁÌËÉ×ÁÅÔÓÑ Ó ÍÁÓÓÏÊ ÐÁËÅÔÏ× ÎÁ FTP-ÓÅÒ×ÅÒÅ ÉÌÉ ËÏÍÐÁËÔ-ÄÉÓËÅ. ðÏÖÁÌÕÊÓÔÁ, ÐÏÓÍÏÔÒÉÔÅ ÎÁ ÔÅËÕÝÉÊ ÓÐÉÓÏË ËÁÔÅÇÏÒÉÊ É ×ÙÂÅÒÉÔÅ ÔÅ ÉÚ ÎÉÈ, ËÏÔÏÒÙÅ ÂÏÌÅÅ ×ÓÅÇÏ ÐÏÄÈÏÄÑÔ Ë ×ÁÛÅÍÕ ÐÏÒÔÕ. üÔÏÔ ÓÐÉÓÏË ÔÁËÖÅ ÏÐÒÅÄÅÌÑÅÔ, ËÕÄÁ × ÄÅÒÅ×Å ÐÏÒÔÏ× ÂÕÄÅÔ ÐÏÍÅÝÅÎ ÐÏÒÔ. åÓÌÉ ×Ù ÕËÁÖÅÔÅ ÚÄÅÓØ ÂÏÌÅÅ ÏÄÎÏÊ ËÁÔÅÇÏÒÉÉ, ÔÏ ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ, ÞÔÏ ÆÁÊÌÙ ÐÏÒÔÁ ÂÕÄÕÔ ÐÏÍÅÝÅÎÙ × ÐÏÄËÁÔÁÌÏÇ Ó ÉÍÅÎÅÍ ÐÅÒ×ÏÊ ËÁÔÅÇÏÒÉÉ. ðÏÓÍÏÔÒÉÔÅ ÎÉÖÅ ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÄÒÏÂÎÏÊ ÉÎÆÏÒÍÁÃÉÉ Ï ÔÏÍ, ËÁË ÐÒÁ×ÉÌØÎÏ ×ÙÂÒÁÔØ ËÁÔÅÇÏÒÉÉ. ôÅËÕÝÉÊ ÓÐÉÓÏË ËÁÔÅÇÏÒÉÊ ÷ÏÔ ÔÅËÕÝÉÊ ÓÐÉÓÏË ËÁÔÅÇÏÒÉÊ. ôÅ, ËÏÔÏÒÙÅ ÏÔÍÅÞÅÎÙ Ú×£ÚÄÏÞËÏÊ (*), Ñ×ÌÑÀÔÓÑ ×ÉÒÔÕÁÌØÎÙÍÉ ËÁÔÅÇÏÒÉÑÍÉ—ÏÎÉ ÎÅ ÉÍÅÀÔ ÓÏÂÓÔ×ÅÎÎÏÇÏ ÐÏÄËÁÔÁÌÏÇÁ × ÄÅÒÅ×Å ÐÏÒÔÏ×. ïÎÉ ÉÓÐÏÌØÚÕÀÔÓÑ ÔÏÌØËÏ × ËÁÞÅÓÔ×Å ×ÔÏÒÉÞÎÙÈ ËÁÔÅÇÏÒÉÊ, É ÔÏÌØËÏ ÄÌÑ ÐÏÉÓËÁ. äÌÑ ÎÅ×ÉÒÔÕÁÌØÎÙÈ ËÁÔÅÇÏÒÉÊ ÉÍÅÅÔÓÑ ÏÄÎÏÓÔÒÏÞÎÏÅ ÏÐÉÓÁÎÉÅ × COMMENT × Makefile ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÐÏÄËÁÔÁÌÏÇÁ. ëÁÔÅÇÏÒÉÑ ïÐÉÓÁÎÉÅ ðÒÉÍÅÞÁÎÉÑ accessibility ðÏÒÔÙ ÄÌÑ ÐÏÍÏÝÉ ÐÏÌØÚÏ×ÁÔÅÌÑÍ Ó ÏÇÒÁÎÉÞÅÎÎÙÍÉ ×ÏÚÍÏÖÎÏÓÔÑÍÉ. afterstep* ðÏÒÔÙ, ÐÏÄÄÅÒÖÉ×ÁÀÝÉÅ ÍÅÎÅÄÖÅÒ ÏËÏÎ AfterStep. arabic ðÏÄÄÅÒÖËÁ ÁÒÁÂÓËÏÇÏ ÑÚÙËÁ. archivers éÎÓÔÒÕÍÅÎÔÙ ÄÌÑ ÒÁÂÏÔÙ Ó ÁÒÈÉ×ÁÍÉ. astro ðÒÉÌÏÖÅÎÉÑ, Ó×ÑÚÁÎÎÙÅ Ó ÁÓÔÒÏÎÏÍÉÅÊ. audio ðÏÄÄÅÒÖËÁ ÒÁÂÏÔÙ ÓÏ Ú×ÕËÏÍ. benchmarks õÔÉÌÉÔÙ ÄÌÑ ÉÚÍÅÒÅÎÉÑ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ ÓÉÓÔÅÍÙ. biology ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Ó×ÑÚÁÎÎÏÅ Ó ÂÉÏÌÏÇÉÅÊ. cad éÎÓÔÒÕÍÅÎÔÙ óÉÓÔÅÍ á×ÔÏÍÁÔÉÚÉÒÏ×ÁÎÎÏÇÏ ðÒÏÅËÔÉÒÏ×ÁÎÉÑ. chinese ðÏÄÄÅÒÖËÁ ËÉÔÁÊÓËÏÇÏ ÑÚÙËÁ. comms ëÏÍÍÕÎÉËÁÃÉÏÎÎÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ. ÷ ÏÓÎÏ×ÎÏÍ ÐÒÏÇÒÁÍÍÙ ÄÌÑ ÒÁÂÏÔÙ Ó ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÙÍ ÐÏÒÔÏÍ. converters õÔÉÌÉÔÙ ÄÌÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÓÉÍ×ÏÌØÎÙÈ ÆÏÒÍÁÔÏ×. databases âÁÚÙ ÄÁÎÎÙÈ. deskutils ôÏ, ÞÔÏ ÂÙÌÏ ÎÁ ÓÔÏÌÅ ÄÏ ÉÚÏÂÒÅÔÅÎÉÑ ËÏÍÐØÀÔÅÒÏ×. devel õÔÉÌÉÔÙ ÄÌÑ ÒÁÚÒÁÂÏÔËÉ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ. îÅ ÐÏÍÅÝÁÊÔÅ ÓÀÄÁ ÂÉÂÌÉÏÔÅËÉ ÐÒÏÓÔÏ ÐÏÔÏÍÕ ÞÔÏ ÜÔÏ ÂÉÂÌÉÏÔÅËÉ—ÅÓÌÉ ÏÎÉ ÐÏÄÐÁÄÁÀÔ ÐÏÄ ËÁËÕÀ-ÔÏ ÄÒÕÇÕÀ ËÁÔÅÇÏÒÉÀ, ÔÏ ÉÈ ÂÙÔØ ÚÄÅÓØ ÎÅ ÄÏÌÖÎÏ. dns ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÄÌÑ ÒÁÂÏÔÙ Ó DNS. docs* íÅÔÁ-ÐÏÒÔÙ ÄÌÑ ÄÏËÕÍÅÎÔÁÃÉÉ FreeBSD. editors òÅÄÁËÔÏÒÙ ÏÂÝÅÇÏ ÎÁÚÎÁÞÅÎÉÑ. óÐÅÃÉÁÌÉÚÉÒÏ×ÁÎÎÙÅ ÒÅÄÁËÔÏÒÙ ÏÔÎÏÓÑÔ Ë ÒÁÚÄÅÌÕ ÄÌÑ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÉÎÓÔÒÕÍÅÎÔÏ× (ÎÁÐÒÉÍÅÒ, ÒÅÄÁËÔÏÒ ÍÁÔÅÍÁÔÉÞÅÓËÉÈ ÆÏÒÍÕÌ ÐÏÐÁÄÁÅÔ × ËÁÔÅÇÏÒÉÀ math). elisp* ðÏÒÔÙ ÄÌÑ Emacs lisp. emulators üÍÕÌÑÔÏÒÙ ÄÒÕÇÉÈ ÏÐÅÒÁÃÉÏÎÎÙÈ ÓÉÓÔÅÍ. üÍÕÌÑÔÏÒÙ ÔÅÒÍÉÎÁÌÏ× ÓÀÄÁ ÎÅ ÏÔÎÏÓÑÔÓÑ—ÔÅ, ËÏÔÏÒÙÅ ÒÁÚÒÁÂÏÔÁÎÙ ÄÌÑ X, ÄÏÌÖÎÙ ÂÙÔØ × ËÁÔÅÇÏÒÉÉ x11, Á ÔÅËÓÔÏ×ÙÅ × comms ÉÌÉ misc, × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ËÏÎËÒÅÔÎÏÇÏ ÉÈ ÐÒÅÄÎÁÚÎÁÞÅÎÉÑ. finance ðÒÉÌÏÖÅÎÉÑ ÄÌÑ ÒÁÂÏÔÙ Ó ÄÅÎØÇÁÍÉ, ÆÉÎÁÎÓÁÍÉ É ×ÓÅÍ, ÞÔÏ Ó ÜÔÉÍ Ó×ÑÚÁÎÏ. french ðÏÄÄÅÒÖËÁ ÆÒÁÎÃÕÚÓËÏÇÏ ÑÚÙËÁ. ftp ëÌÉÅÎÔÙ É ÓÅÒ×ÅÒÙ FTP. åÓÌÉ ×ÁÛ ÐÏÒÔ ÐÏÎÉÍÁÅÔ ËÁË FTP, ÔÁË É HTTP, ÐÏÍÅÓÔÉÔÅ ÅÇÏ × ËÁÔÅÇÏÒÉÀ ftp É ÕËÁÖÉÔÅ ×ÔÏÒÉÞÎÕÀ ËÁÔÅÇÏÒÉÀ www. games éÇÒÙ. geography* ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Ó×ÑÚÁÎÎÏÅ Ó ÇÅÏÇÒÁÆÉÅÊ. german ðÏÄÄÅÒÖËÁ ÎÅÍÅÃËÏÇÏ ÑÚÙËÁ. gnome* ðÏÒÔÙ ðÒÏÅËÔÁ GNOME. gnustep* ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÄÌÑ ÏËÒÕÖÅÎÉÑ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ GNUstep. graphics çÒÁÆÉÞÅÓËÉÅ ÕÔÉÌÉÔÙ. hamradio* ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÄÌÑ ÌÀÂÉÔÅÌØÓËÏÇÏ ÒÁÄÉÏ haskell* ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Ó×ÑÚÁÎÎÏÅ Ó ÑÚÙËÏÍ Haskell. hebrew ðÏÄÄÅÒÖËÁ É×ÒÉÔÁ. hungarian ðÏÄÄÅÒÖËÁ ×ÅÎÇÅÒÓËÏÇÏ ÑÚÙËÁ. ipv6* ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Ó×ÑÚÁÎÎÏÅ Ó IPv6. irc õÔÉÌÉÔÙ ÄÌÑ ÒÁÂÏÔÙ Ó Internet Relay Chat. japanese ðÏÄÄÅÒÖËÁ ÑÐÏÎÓËÏÇÏ ÑÚÙËÁ. java ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Ó×ÑÚÁÎÎÏÅ Ó ÑÚÙËÏÍ Java™. ëÁÔÅÇÏÒÉÑ java ÎÉ × ËÏÅÍ ÓÌÕÞÁÅ ÎÅ ÄÏÌÖÎÁ ÂÙÔØ ÅÄÉÎÓÔ×ÅÎÎÏÊ ÄÌÑ ÐÏÒÔÁ. ïÓÔÁרÔÅ ÄÌÑ ÐÏÒÔÏ×, ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÉÍÅÀÝÉÈ ÏÔÎÏÛÅÎÉÅ Ë ÑÚÙËÕ Java, ÐÏÒÔÅÒÁÍ ÔÁËÖÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÎÅ ÉÓÐÏÌØÚÏ×ÁÔØ java ËÁË ÏÓÎÏ×ÎÕÀ ËÁÔÅÇÏÒÉÀ ÐÏÒÔÁ. kde* ðÏÒÔÙ ÐÒÏÅËÔÁ KDE. kld* úÁÇÒÕÖÁÅÍÙÅ ÍÏÄÕÌÉ ÑÄÒÁ. korean ðÏÄÄÅÒÖËÁ ËÏÒÅÊÓËÏÇÏ ÑÚÙËÁ. lang ñÚÙËÉ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ. linux* Linux ÐÒÉÌÏÖÅÎÉÑ É ÕÔÉÌÉÔÙ. lisp* ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Ó×ÑÚÁÎÎÏÅ Ó ÑÚÙËÏÍ Lisp. mail ðÒÏÇÒÁÍÍÙ ÄÌÑ ÒÁÂÏÔÙ Ó ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÏÊ. math ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÄÌÑ ÞÉÓÌÅÎÎÙÈ ×ÙÞÉÓÌÅÎÉÊ É ÄÒÕÇÉÅ ÕÔÉÌÉÔÙ, Ó×ÑÚÁÎÎÙÅ Ó ÍÁÔÅÍÁÔÉËÏÊ. mbone* ðÒÉÌÏÖÅÎÉÑ ÄÌÑ MBone. misc òÁÚÌÉÞÎÙÅ ÕÔÉÌÉÔÙ ÷ ÏÓÎÏ×ÎÏÍ ÔÏ, ÞÔÏ ÎÅ ÐÏÐÁÄÁÅÔ × ÄÒÕÇÉÅ ËÁÔÅÇÏÒÉÉ. åÓÌÉ ÜÔÏ ×ÏÚÍÏÖÎÏ, ÐÏÐÒÏÂÕÊÔÅ ÎÁÊÔÉ ÂÏÌÅÅ ÐÏÄÈÏÄÑÝÕÀ, ÞÅÍ misc, ËÁÔÅÇÏÒÉÀ ÄÌÑ ×ÁÛÅÇÏ ÐÏÒÔÁ, ÔÁË ËÁË ÚÄÅÓØ ÐÏÒÔÙ ÔÅÒÑÀÔÓÑ. multimedia ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÄÌÑ ÒÁÂÏÔÙ Ó ÍÕÌØÔÉÍÅÄÉÁ. net òÁÚÌÉÞÎÏÅ ÓÅÔÅ×ÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ. net-im ðÒÏÇÒÁÍÍÙ ÍÇÎÏ×ÅÎÎÏÇÏ ÏÂÍÅÎÁ ÓÏÏÂÝÅÎÉÑÍÉ. net-mgmt ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÄÌÑ ÓÅÔÅ×ÏÇÏ ÕÐÒÁ×ÌÅÎÉÑ. net-p2p ðÒÉÌÏÖÅÎÉÑ ÄÌÑ ÐÉÒÉÎÇÏ×ÙÈ ÓÅÔÅÊ. news ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÄÌÑ ÒÁÂÏÔÙ Ó ËÏÎÆÅÒÅÎÃÉÑÍÉ USENET. palm ðÒÏÇÒÁÍÍÎÁÑ ÐÏÄÄÅÒÖËÁ Palm™. parallel* ðÒÉÌÏÖÅÎÉÑ, Ó×ÑÚÁÎÎÙÅ Ó ÐÁÒÁÌÌÅÌØÎÙÍÉ ×ÙÞÉÓÌÅÎÉÑÍÉ. pear* ðÏÒÔÙ, ÏÔÎÏÓÑÝÉÅÓÑ Ë ÔÅÈÎÏÌÏÇÉÉ Pear PHP. perl5* ðÏÒÔÙ, ËÏÔÏÒÙÍ ÄÌÑ ÒÁÂÏÔÙ ÔÒÅÂÕÅÔÓÑ Perl ×ÅÒÓÉÉ 5. plan9* òÁÚÌÉÞÎÙÅ ÐÒÏÇÒÁÍÍÙ ÉÚ Plan9. polish ðÏÄÄÅÒÖËÁ ÐÏÌØÓËÏÇÏ ÑÚÙËÁ. ports-mgmt ðÏÒÔÙ ÄÌÑ ÕÐÒÁ×ÌÅÎÉÑ, ÕÓÔÁÎÏ×ËÉ É ÒÁÚÒÁÂÏÔËÉ ÐÏÒÔÏ× É ÐÁËÅÔÏ× FreeBSD. portuguese ðÏÄÄÅÒÖËÁ ÐÏÒÔÕÇÁÌØÓËÏÇÏ ÑÚÙËÁ. print ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÄÌÑ ÐÅÞÁÔÉ. éÎÓÔÒÕÍÅÎÔÙ ÄÌÑ ×£ÒÓÔËÉ (ÐÒÏÓÍÏÔÒÝÉËÉ É ÔÏÍÕ ÐÏÄÏÂÎÏÅ) ÔÏÖÅ ÏÔÎÏÓÑÔÓÑ ÓÀÄÁ. - - python* ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Ó×ÑÚÁÎÎÏÅ Ó ÑÚÙËÏÍ Python. ruby* ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Ó×ÑÚÁÎÎÏÅ Ó ÑÚÙËÏÍ Ruby. rubygems* ðÏÒÔÙ ÄÌÑ ÐÁËÅÔÏ× RubyGems. russian ðÏÄÄÅÒÖËÁ ÒÕÓÓËÏÇÏ ÑÚÙËÁ. scheme* ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Ó×ÑÚÁÎÎÏÅ Ó ÑÚÙËÏÍ Scheme. science îÁÕÞÎÙÅ ÐÒÏÇÒÁÍÍÙ, ËÏÔÏÒÙÅ ÎÅ ÐÏÄÐÁÄÁÀÔ ÐÏÄ ÄÒÕÇÉÅ ËÁÔÅÇÏÒÉÉ, ÓËÁÖÅÍ, astro, biology ÉÌÉ math. security ðÒÏÇÒÁÍÍÙ, ÏÂÅÓÐÅÞÉ×ÁÀÝÉÅ ÂÅÚÏÐÁÓÎÏÓÔØ ÓÉÓÔÅÍÙ. shells òÁÚÌÉÞÎÙÅ ËÏÍÁÎÄÎÙÅ ÐÒÏÃÅÓÓÏÒÙ. sysutils óÉÓÔÅÍÎÙÅ ÕÔÉÌÉÔÙ. spanish* ðÏÄÄÅÒÖËÁ ÉÓÐÁÎÓËÏÇÏ ÑÚÙËÁ. tcl* ðÏÒÔÙ, ÄÌÑ ÒÁÂÏÔÙ ËÏÔÏÒÙÈ ÎÕÖÅÎ Tcl. textproc õÔÉÌÉÔÙ ÄÌÑ ÏÂÒÁÂÏÔËÉ ÔÅËÓÔÏ×. éÎÓÔÒÕÍÅÎÔÙ ÄÌÑ ×£ÒÓÔËÉ ÐÏÍÅÝÁÀÔÓÑ × ËÁÔÅÇÏÒÉÀ print, Á ÎÅ ÓÀÄÁ. tk* ðÏÒÔÙ, ÄÌÑ ÒÁÂÏÔÙ ËÏÔÏÒÙÈ ÎÕÖÅÎ Tk. ukrainian ðÏÄÄÅÒÖËÁ ÕËÒÁÉÎÓËÏÇÏ ÑÚÙËÁ. vietnamese ðÏÄÄÅÒÖËÁ רÅÔÎÁÍÓËÏÇÏ ÑÚÙËÁ. windowmaker* ðÏÒÔÙ, ÐÏÄÄÅÒÖÉ×ÁÀÝÉÅ ÍÅÎÅÄÖÅÒ ÏËÏÎ WindowMaker. www ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Ó×ÑÚÁÎÎÏÅ Ó World Wide Web. ðÏÄÄÅÒÖËÁ ÑÚÙËÁ HTML ÏÔÎÏÓÉÔÓÑ ÓÀÄÁ ÖÅ. x11 X Window System É ÉÖÅ Ó ÎÉÍÉ. üÔÁ ËÁÔÅÇÏÒÉÑ ÐÒÅÄÎÁÚÎÁÞÅÎÁ ÔÏÌØËÏ ÄÌÑ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ, ËÏÔÏÒÏÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÓÁÍÕ ÏËÏÎÎÕÀ ÓÉÓÔÅÍÕ. îÅ ÐÏÍÅÝÁÊÔÅ ÓÀÄÁ ÏÂÙÞÎÙÅ ÐÒÉÌÏÖÅÎÉÑ ÄÌÑ X: ÂÏÌØÛÉÎÓÔ×Ï ÉÚ ÎÉÈ ÄÏÌÖÎÙ ÂÙÔØ ÐÅÒÅÎÅÓÅÎÙ × ÄÒÕÇÉÅ ËÁÔÅÇÏÒÉÉ x11-* (ÓÍÏÔÒÉÔÅ ÎÉÖÅ). åÓÌÉ ×ÁÛ ÐÏÒÔ Ñ×ÌÑÅÔÓÑ ÐÒÉÌÏÖÅÎÉÅÍ ÄÌÑ X, ÚÁÄÁÊÔÅ USE_XLIB (ÞÔÏ ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ USE_IMAKE) É ÕËÁÖÉÔÅ ÐÏÄÈÏÄÑÝÕÀ ËÁÔÅÇÏÒÉÀ. x11-clocks þÁÓÙ ÄÌÑ X11. x11-drivers äÒÁÊ×ÅÒÙ X11. x11-fm íÅÎÅÄÖÅÒÙ ÆÁÊÌÏ× ÄÌÑ X11. x11-fonts ûÒÉÆÔÙ ÄÌÑ X11 É ÕÔÉÌÉÔÙ ÄÌÑ ÒÁÂÏÔÙ Ó ÎÉÍÉ. x11-servers óÅÒ×ÅÒÙ ÄÌÑ X11. x11-themes ôÅÍÙ ÄÌÑ X11. x11-toolkits ðÁËÅÔÙ ÒÁÚÒÁÂÏÔÞÉËÁ ÄÌÑ X11. x11-wm ïËÏÎÎÙÅ ÍÅÎÅÄÖÅÒÙ ÄÌÑ X11. xfce* ðÏÒÔÙ, Ó×ÑÚÁÎÎÙÅ Ó ÏËÒÕÖÅÎÉÅÍ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ Xfce. zope* ðÏÄÄÅÒÖËÁ Zope. ÷ÙÂÏÒ ÐÒÁ×ÉÌØÎÏÊ ËÁÔÅÇÏÒÉÉ ôÁË ËÁË ÍÎÏÇÉÅ ËÁÔÅÇÏÒÉÉ ÐÅÒÅËÒÙ×ÁÀÔÓÑ, ×ÁÍ ÞÁÓÔÏ ÎÅÏÂÈÏÄÉÍÏ ÂÕÄÅÔ ×ÙÂÉÒÁÔØ, ËÁËÁÑ ÉÈ ÎÉÈ ÄÏÌÖÎÁ ÂÙÔØ ÏÓÎÏ×ÎÏÊ ÄÌÑ ×ÁÛÅÇÏ ÐÏÒÔÁ. åÓÔØ ÎÅÓËÏÌØËÏ ÐÒÁ×ÉÌ, ÐÏ ËÏÔÏÒÙÍ ÍÏÖÎÏ ÒÅÛÉÔØ ÜÔÏÔ ×ÏÐÒÏÓ. ÷ÏÔ ÓÐÉÓÏË ÐÒÉÏÒÉÔÅÔÏ×, × ÕÍÅÎØÛÁÀÝÅÊÓÑ ÓÔÅÐÅÎÉ ÐÒÅÄÐÏÞÔÅÎÉÑ: ðÅÒ×ÁÑ ËÁÔÅÇÏÒÉÑ ÄÏÌÖÎÁ ÂÙÔØ ÆÉÚÉÞÅÓËÏÊ ËÁÔÅÇÏÒÉÊ (ÓÍÏÔÒÉÔÅ ×ÙÛÅ). üÔÏ ÎÅÏÂÈÏÄÉÍÏ ÄÌÑ ÓÏÚÄÁÎÉÑ ÐÁËÅÔÏ×. ðÏÓÌÅ ÜÔÏÇÏ ×ÉÒÔÕÁÌØÎÙÅ É ÆÉÚÉÞÅÓËÉÅ ËÁÔÅÇÏÒÉÉ ÍÏÇÕÔ ÓÍÅÛÉ×ÁÔØÓÑ. óÎÁÞÁÌÁ ×ÓÅÇÄÁ ÉÄÕÔ ËÁÔÅÇÏÒÉÉ, ÓÐÅÃÉÆÉÞÎÙÅ ÄÌÑ ÑÚÙËÏ×. îÁÐÒÉÍÅÒ, ÅÓÌÉ ×ÁÛ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÑÐÏÎÓËÉÅ ÛÒÉÆÔÙ ÄÌÑ X11, ÔÏ ÓÔÒÏÞËÁ CATEGORIES ÄÏÌÖÎÁ ÉÍÅÔØ ×ÉÄ japanese x11-fonts. âÏÌÅÅ ËÏÎËÒÅÔÎÙÅ ËÁÔÅÇÏÒÉÉ ÉÄÕÔ ÐÅÒ×ÙÍÉ ÐÅÒÅÄ ÂÏÌÅÅ ÏÂÝÉÍÉ. ÷ ÞÁÓÔÎÏÓÔÉ, ÒÅÄÁËÔÏÒ HTML ÄÏÌÖÅÎ ÂÙÔØ ÏÐÉÓÁÎ ËÁË www editors, Á ÎÅ ÎÁÏÂÏÒÏÔ. ëÒÏÍÅ ÔÏÇÏ, ×Ù ÎÅ ÄÏÌÖÎÙ ÕËÁÚÙ×ÁÔØ ËÁÔÅÇÏÒÉÀ net, ÅÓÌÉ ÐÏÒÔ ÏÔÎÏÓÉÔÓÑ Ë ÏÄÎÏÊ ÉÚ ËÁÔÅÇÏÒÉÊ irc, mail, news, security ÉÌÉ www, ÔÁË ËÁË net ×ËÌÀÞÁÅÔÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ. x11 ÉÓÐÏÌØÚÕÅÔÓÑ ËÁË ×ÔÏÒÉÞÎÁÑ ËÁÔÅÇÏÒÉÑ ÔÏÌØËÏ × ÓÌÕÞÁÅ, ÅÓÌÉ × ËÁÞÅÓÔ×Å ÏÓÎÏ×ÎÏÊ ËÁÔÅÇÏÒÉÉ ÕËÁÚÁÎ ÅÓÔÅÓÔ×ÅÎÎÙÊ ÑÚÙË. ÷ ÞÁÓÔÎÏÓÔÉ, ×ÁÍ ÎÅ ÎÕÖÎÏ ÕËÁÚÙ×ÁÔØ x11 × ËÁÞÅÓÔ×Å ËÁÔÅÇÏÒÉÉ ÄÌÑ ÐÒÉÌÏÖÅÎÉÊ X. òÅÖÉÍÙ ÄÌÑ ÒÅÄÁËÔÏÒÁ Emacs ÄÏÌÖÎÙ ÐÏÍÅÝÁÔØÓÑ × ÔÕ ÖÅ ËÁÔÅÇÏÒÉÀ, ÞÔÏ É ÐÒÉÌÏÖÅÎÉÅ, ËÏÔÏÒÏÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÜÔÉÍ ÒÅÖÉÍÏÍ, Á ÎÅ × editors. îÁÐÒÉÍÅÒ, ÒÅÖÉÍ Emacs ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ÉÓÈÏÄÎÏÇÏ ËÏÄÁ ÎÅËÏÔÏÒÏÇÏ ÑÚÙËÁ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ ÄÏÌÖÅÎ ÂÙÔØ ÐÏÍÅÝÅÎ × ËÁÔÅÇÏÒÉÀ lang. ðÏÒÔÙ, ÕÓÔÁÎÁ×ÌÉ×ÁÀÝÉÅ ÚÁÇÒÕÖÁÅÍÙÅ ÍÏÄÕÌÉ ÑÄÒÁ, ÄÏÌÖÎÙ ÓÏÄÅÒÖÁÔØ ×ÉÒÔÕÁÌØÎÕÀ ËÁÔÅÇÏÒÉÀ kld × ÓÔÒÏËÅ CATEGORIES. misc ÎÅ ÄÏÌÖÎÁ ÕËÁÚÙ×ÁÔØÓÑ ×ÍÅÓÔÅ Ó ÌÀÂÏÊ ÄÒÕÇÏÊ ÎÅ×ÉÒÔÕÁÌØÎÏÊ ËÁÔÅÇÏÒÉÅÊ. åÓÌÉ ×Ù ÕËÁÚÙ×ÁÅÔÅ misc ×ÍÅÓÔÅ Ó ÞÅÍ-ÔÏ ÅÝ£ × ÓÔÒÏËÅ CATEGORIES, ÜÔÏ ÚÎÁÞÉÔ, ÞÔÏ ×Ù ÍÏÖÅÔÅ ÓÐÏËÏÊÎÏ ÕÄÁÌÉÔØ misc É ÐÒÏÓÔÏ ÐÏÍÅÓÔÉÔØ ÐÏÒÔ × ÜÔÏÔ ÄÒÕÇÏÊ ÐÏÄËÁÔÁÌÏÇ! åÓÌÉ ×ÁÛ ÐÏÒÔ ÒÅÛÉÔÅÌØÎÙÍ ÏÂÒÁÚÏÍ ÎÅ ÐÏÄÐÁÄÁÅÔ ÎÉ ÐÏÄ ËÁËÕÀ ËÁÔÅÇÏÒÉÀ, ÐÏÍÅÓÔÉÔÅ ÅÇÏ × misc. åÓÌÉ ×Ù ÎÅ Õ×ÅÒÅÎÙ × ÐÒÁ×ÉÌØÎÏÓÔÉ ×ÙÂÏÒÁ ËÁÔÅÇÏÒÉÉ, ÐÏÖÁÌÕÊÓÔÁ, ÏÔÍÅÔØÔÅ ÜÔÏ × ×ÁÛÅÍ ÓÏÏÂÝÅÎÉÉ ÞÅÒÅÚ &man.send-pr.1;, ÞÔÏÂÙ ÍÙ ÍÏÇÌÉ ÏÂÓÕÄÉÔØ ÜÔÏ ÄÏ ÔÏÇÏ, ËÁË ×ËÌÀÞÉÔØ ÐÏÒÔ × ëÏÌÌÅËÃÉÀ. åÓÌÉ ×Ù Ñ×ÌÑÅÔÅÓØ ËÏÍÍÉÔÔÅÒÏÍ, ÐÏÛÌÉÔÅ ÚÁÍÅÞÁÎÉÅ ÎÁ ÁÄÒÅÓ &a.ports;, ÞÔÏÂÙ ÍÙ ÍÏÇÌÉ ÏÂÓÕÄÉÔØ ÜÔÏ. úÁÞÁÓÔÕÀ ÎÏ×ÙÅ ÐÏÒÔÙ ÐÏÍÅÝÁÀÔÓÑ ÎÅ × ÔÕ ËÁÔÅÇÏÒÉÀ ÔÏÌØËÏ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÉÈ ÏÔÔÕÄÁ ÓÒÁÚÕ ÖÅ ÕÄÁÌÉÌÉ. üÔÏ ÐÒÉ×ÏÄÉÔ Ë ÉÚÌÉÛÎÅÍÕ É ÎÅÎÕÖÎÏÍÕ ÒÏÓÔÕ ÏÓÎÏ×ÎÏÇÏ ÈÒÁÎÉÌÉÝÁ ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ×. ðÒÅÄÌÏÖÅÎÉÅ ÎÏ×ÏÊ ËÁÔÅÇÏÒÉÉ ðÏÓËÏÌØËÕ ÓÏ ×ÒÅÍÅÎÅÍ ëÏÌÌÅËÃÉÑ ðÏÒÔÏ× Õ×ÅÌÉÞÉÌÁÓØ, ÔÏ × Ó×ÑÚÉ Ó ÜÔÉÍ ÂÙÌÉ ÄÏÂÁ×ÌÅÎÙ ÒÁÚÌÉÞÎÙÅ ÎÏ×ÙÅ ËÁÔÅÇÏÒÉÉ. îÏ×ÙÅ ËÁÔÅÇÏÒÉÉ ÍÏÇÕÔ ÂÙÔØ ÉÌÉ ×ÉÒÔÕÁÌØÎÙÍÉ ËÁÔÅÇÏÒÉÑÍÉ— ËÏÔÏÒÙÅ ÎÅ ÉÍÅÀÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÐÏÄËÁÔÁÌÏÇÁ × ÄÅÒÅ×Å ÐÏÒÔÏ×— ÉÌÉ ÆÉÚÉÞÅÓËÉÍÉ ËÁÔÅÇÏÒÉÑÍÉ—Õ ËÏÔÏÒÙÈ ÏÎ ÅÓÔØ. óÌÅÄÕÀÝÉÊ ÔÅËÓÔ ÓÏÄÅÒÖÉÔ ÏÂÓÕÖÄÅÎÉÅ ×ÏÐÒÏÓÏ×, ×ÏÚÎÉËÁÀÝÉÈ ÐÒÉ ÓÏÚÄÁÎÉÉ ÎÏ×ÏÊ ÆÉÚÉÞÅÓËÏÊ ËÁÔÅÇÏÒÉÉ, ÞÔÏÂÙ ×Ù ÍÏÇÌÉ ÐÏÎÉÍÁÔØ ÉÈ, ËÏÇÄÁ ÐÒÅÄÌÏÖÉÔÅ ÎÏ×ÕÀ ËÁÔÅÇÏÒÉÀ. ÷ ÓÏÏÔ×ÅÔÓÔ×ÉÅ Ó ÓÕÝÅÓÔ×ÕÀÝÅÊ ÐÒÁËÔÉËÏÊ ÍÙ ÉÚÂÅÇÁÅÍ ÓÏÚÄÁÎÉÑ ÎÏ×ÏÊ ÆÉÚÉÞÅÓËÏÊ ËÁÔÅÇÏÒÉÉ, ÐÏËÁ ÄÏÓÔÁÔÏÞÎÏ ÂÏÌØÛÏÅ ÞÉÓÌÏ ÐÏÒÔÏ× ÌÏÇÉÞÅÓËÉ ÅÊ ÎÅ ÐÒÉÎÁÄÌÅÖÉÔ ÉÌÉ ÖÅ ÐÏÒÔÙ, ËÏÔÏÒÙÅ ÍÏÇÌÉ ÂÙ ÅÊ ÐÒÉÎÁÄÌÅÖÁÔØ, ÎÅ Ñ×ÌÑÀÔÓÑ ÌÏÇÉÞÅÓËÉ ÏÂÏÓÏÂÌÅÎÎÏÊ ÇÒÕÐÐÏÊ, ÐÒÅÄÓÔÁ×ÌÑÀÝÅÊ ÄÌÑ ×ÓÅÈ ÏÇÒÁÎÉÞÅÎÎÙÊ ÉÎÔÅÒÅÓ (× ÞÁÓÔÎÏÓÔÉ, ËÁÔÅÇÏÒÉÉ, ÏÔÎÏÓÑÝÉÅÓÑ Ë ÅÓÔÅÓÔ×ÅÎÎÙÍ ÑÚÙËÁÍ); ÐÒÅÄÐÏÞÔÉÔÅÌØÎÏ ×ÙÐÏÌÎÅÎÉÅ ÏÂÏÉÈ ÕÓÌÏ×ÉÊ. ïÓÎÏ×ÎÏÊ ÐÒÉÞÉÎÏÊ ÄÌÑ ÜÔÏÇÏ Ñ×ÌÑÅÔÓÑ ÔÏ, ÞÔÏ ÔÁËÏÅ ÉÚÍÅÎÅÎÉÅ ÓÏÚÄÁÅÔ ÉÚÒÑÄÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÒÁÂÏÔÙ É ÄÌÑ ËÏÍÍÉÔÔÅÒÏ×, É ÄÌÑ ×ÓÅÈ ÔÅÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ËÏÔÏÒÙÅ ÏÔÓÌÅÖÉ×ÁÀÔ ÉÚÍÅÎÅÎÉÑ × ëÏÌÌÅËÃÉÉ ðÏÒÔÏ×. ÷ ÄÏÐÏÌÎÅÎÉÅ, ÐÒÅÄÌÏÖÅÎÎÁÑ ËÁÔÅÇÏÒÉÑ ÓÏÚÄÁÅÔ ÅÓÔÅÓÔ×ÅÎÎÏÅ ÒÁÚÎÏÇÌÁÓÉÅ. (ðÏÖÁÌÕÊ, ÐÏÔÏÍÕ ÞÔÏ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ ÞÅÔËÏÇÏ ÓÏÇÌÁÛÅÎÉÑ, Ñ×ÌÑÅÔÓÑ ÌÉ ËÁÔÅÇÏÒÉÑ ÓÌÉÛËÏÍ ÂÏÌØÛÏÊ, ÉÌÉ ÄÏÌÖÎÙ ÌÉ ËÁÔÅÇÏÒÉÉ ÐÒÅÄÏÓÔÁ×ÌÑÔØ ÓÅÂÑ ÄÌÑ ÐÒÏÓÍÏÔÒÁ (É, ÔÁËÉÍ ÏÂÒÁÚÏÍ, ËÁËÏÅ ËÏÌÉÞÅÓÔ×Ï ËÁÔÅÇÏÒÉÊ ÂÙÌÏ ÂÙ ÉÄÅÁÌØÎÙÍ ÚÎÁÞÅÎÉÅÍ), É ÔÁË ÄÁÌÅÅ.) ðÒÏÃÅÄÕÒÁ: ðÒÅÄÌÏÖÉÔÅ ÎÏ×ÕÀ ËÁÔÅÇÏÒÉÀ ÎÁ &a.ports;. ÷ÁÍ ÓÌÅÄÕÅÔ ×ËÌÀÞÉÔØ ÄÌÑ ÎÏ×ÏÊ ËÁÔÅÇÏÒÉÉ ÄÅÔÁÌØÎÏÅ ÏÂÏÓÎÏ×ÁÎÉÅ, × ÔÏÍ ÞÉÓÌÅ ÐÏÞÅÍÕ ×Ù ÓÞÉÔÁÅÔÅ, ÞÔÏ ÓÕÝÅÓÔ×ÕÀÝÉÅ ËÁÔÅÇÏÒÉÉ ÎÅ Ñ×ÌÑÀÔÓÑ ÄÏÓÔÁÔÏÞÎÙÍÉ, É ÓÐÉÓÏË ÓÕÝÅÓÔ×ÕÀÝÉÈ ÐÏÒÔÏ×, ÐÒÅÄÌÏÖÅÎÎÙÈ ÄÌÑ ÐÅÒÅÍÅÝÅÎÉÑ. (åÓÌÉ ÅÓÔØ ÎÏ×ÙÅ ÐÏÒÔÙ, ÏÖÉÄÁÀÝÉÅ × GNATS É ÐÏÐÁÄÁÀÝÉÅ × ÜÔÕ ËÁÔÅÇÏÒÉÀ, ÔÏ ÕËÁÖÉÔÅ ÉÈ ÔÏÖÅ.) åÓÌÉ ×Ù Ñ×ÌÑÅÔÅÓØ ÓÏÐÒÏ×ÏÖÄÁÀÝÉÍ É/ÉÌÉ ÏÔÐÒÁ×ÉÔÅÌÅÍ, ÔÏ ÕËÁÖÉÔÅ ÜÔÏ ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, ÔÁË ËÁË ÜÔÏ ÍÏÖÅÔ ÐÏÍÏÞØ ×ÁÍ × ×ÁÛÅÍ ÄÅÌÅ. ðÒÉÎÉÍÁÊÔÅ ÕÞÁÓÔÉÅ × ÏÂÓÕÖÄÅÎÉÉ. åÓÌÉ ËÁÖÅÔÓÑ, ÞÔÏ ÄÌÑ ×ÁÛÅÊ ÉÄÅÉ ÐÏÑ×ÉÌÁÓØ ÐÏÄÄÅÒÖËÁ, ÏÔÐÒÁרÔÅ PR, ËÏÔÏÒÙÊ ÂÕÄÅÔ ×ËÌÀÞÁÔØ ÏÂÏÓÎÏ×ÁÎÉÅ É ÓÐÉÓÏË ÓÕÝÅÓÔ×ÕÀÝÉÈ ÐÏÒÔÏ×, ËÏÔÏÒÙÅ ÎÁÄÏ ÐÅÒÅÍÅÓÔÉÔØ. ÷ ÉÄÅÁÌÅ ÜÔÏÔ PR ÄÏÌÖÅÎ ÔÁËÖÅ ×ËÌÀÞÁÔØ ÐÁÔÞÉ ÄÌÑ ÓÌÅÄÕÀÝÅÇÏ: Makefile'Ù ÄÌÑ ÎÏ×ÙÈ ÐÏÒÔÏ× × ÒÅÚÕÌØÔÁÔÅ ÒÅÐÏÚÉÔÏÒÎÏÇÏ ËÏÐÉÒÏ×ÁÎÉÑ Makefile ÄÌÑ ËÁÔÅÇÏÒÉÊ ÓÔÁÒÙÈ ÐÏÒÔÏ× Makefile'Ù ÄÌÑ ÐÏÒÔÏ×, ÚÁ×ÉÓÑÝÉÈ ÏÔ ÓÔÁÒÙÈ ÐÏÒÔÏ× (× ÄÏÐÏÌÎÅÎÉÅ, ×Ù ÍÏÖÅÔÅ ×ËÌÀÞÉÔØ ÄÒÕÇÉÅ ÆÁÊÌÙ, ÔÒÅÂÕÀÝÉÅ ÉÚÍÅÎÅÎÉÊ, ÓÏÇÌÁÓÎÏ ÐÒÏÃÅÄÕÒÅ ÉÚ òÕËÏ×ÏÄÓÔ×Á ëÏÍÍÉÔÔÅÒÁ.) ðÏÓËÏÌØËÕ ÜÔÏ ÚÁÔÒÁÇÉ×ÁÅÔ ÉÎÆÒÁÓÔÒÕËÔÕÒÕ ÐÏÒÔÏ× É ÏÈ×ÁÔÙ×ÁÅÔ ÎÅ ÔÏÌØËÏ ×ÙÐÏÌÎÅÎÉÅ ÒÅÐÏÚÉÔÏÒÎÏÇÏ ËÏÐÉÒÏ×ÁÎÉÑ, ÎÏ ÔÁËÖÅ, ×ÏÚÍÏÖÎÏ, É ×ÙÐÏÌÎÅÎÉÅ ÒÅÇÒÅÓÓÉ×ÎÙÈ ÔÅÓÔÏ× ÎÁ ËÌÁÓÔÅÒÅ ÐÏÓÔÒÏÅÎÉÑ, ÔÏ PR ÄÏÌÖÎÁ ÎÁÚÎÁÞÁÔØ ÓÅÂÅ &a.portmgr;. åÓÌÉ ÜÔÏÔ PR ÏÄÏÂÒÅÎ, ÔÏ ËÏÍÍÉÔÔÅÒÕ ÎÕÖÎÏ ÐÒÏÄÏÌÖÉÔØ ÏÓÔÁÌØÎÕÀ ÞÁÓÔØ ÐÒÏÃÅÄÕÒÙ, ËÏÔÏÒÁÑ ÉÚÌÏÖÅÎÁ × òÕËÏ×ÏÄÓÔ×Å ëÏÍÍÉÔÔÅÒÁ. ðÒÅÄÌÏÖÅÎÉÅ ÎÏ×ÏÊ ×ÉÒÔÕÁÌØÎÏÊ ËÁÔÅÇÏÒÉÉ ÄÏÌÖÎÏ ÂÙÔØ ÓÈÏÖÉÍ Ó ×ÙÛÅÉÚÌÏÖÅÎÎÙÍ, ÎÏ ÐÒÉ ÜÔÏÍ ÚÁÔÒÁÇÉ×ÁÔØ ÎÁÍÎÏÇÏ ÍÅÎØÛÅ, ÐÏÓËÏÌØËÕ ÎÉ ÏÄÉÎ ÉÚ ÐÏÒÔÏ× ÎÅ ÂÕÄÅÔ ÐÅÒÅÍÅÝÅÎ × ÄÅÊÓÔ×ÉÔÅÌØÎÏÓÔÉ. ÷ ÜÔÏÍ ÓÌÕÞÁÅ ÅÄÉÎÓÔ×ÅÎÎÙÍÉ ÐÁÔÞÁÍÉ, ×ËÌÀÞÅÎÎÙÍÉ × PR, ÂÕÄÕÔ ÔÅ, ÞÔÏ ÄÏÂÁ×ÌÑÀÔ ÎÏ×ÕÀ ËÁÔÅÇÏÒÉÀ × CATEGORIES ËÁÖÄÏÇÏ ÉÚ ÚÁÔÒÁÇÉ×ÁÅÍÙÈ ÐÏÒÔÏ×. ðÒÅÄÌÏÖÅÎÉÅ ÒÅÏÒÇÁÎÉÚÁÃÉÉ ×ÓÅÈ ËÁÔÅÇÏÒÉÊ ÷ÒÅÍÑ ÏÔ ×ÒÅÍÅÎÉ ËÔÏ-ÎÉÂÕÄØ ÐÒÅÄÌÁÇÁÅÔ ÐÒÏÉÚ×ÅÓÔÉ ÒÅÏÒÇÁÎÉÚÁÃÉÀ ËÁÔÅÇÏÒÉÊ ÌÉÂÏ ÄÏ Ä×ÕÈÕÒÏ×ÎÅ×ÏÊ, ÌÉÂÏ ÄÒÕÇÏÇÏ ÔÉÐÁ ÎÁ ÏÓÎÏ×Å ËÌÀÞÅ×ÙÈ ÓÌÏ×. îÁ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ÉÚ ÜÔÉÈ ÐÒÅÄÌÏÖÅÎÉÊ ÎÉÞÅÇÏ ÎÅ ÐÏÌÕÞÉÌÏÓØ, ÐÏÔÏÍÕ ÞÔÏ, ÈÏÔÑ ÏÎÉ ÐÒÏÓÔÙ × ÒÅÁÌÉÚÁÃÉÉ, ÎÏ ÐÒÅÄÐÏÌÁÇÁÅÍÁÑ ÐÅÒÅÄÅÌËÁ ×ÓÅÊ ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ× ÐÏ ÍÅÎØÛÅÊ ÍÅÒÅ ÐÒÉ×ÏÄÉÔ × ÕÎÙÎÉÅ. ðÏÖÁÌÕÊÓÔÁ, ÐÒÏÞÔÉÔÅ ÉÓÔÏÒÉÀ ÜÔÉÈ ÐÒÅÄÌÏÖÅÎÉÊ × ÁÒÈÉ×ÁÈ ÒÁÓÓÙÌÏË ÐÅÒÅÄ ÔÅÍ, ËÁË ÐÒÉÓÙÌÁÔØ Ó×ÏÉ ÓÏÏÂÒÁÖÅÎÉÑ; ÂÏÌÅÅ ÔÏÇÏ, ×Ù ÄÏÌÖÎÙ ÂÙÔØ ÇÏÔÏ×Ù ÐÒÅÄÓÔÁ×ÉÔØ ÒÁÂÏÔÁÀÝÉÊ ÐÒÏÔÏÔÉÐ. äÉÓÔÒÉÂÕÔÉ×ÎÙÅ ÆÁÊÌÙ ÷Ï ×ÔÏÒÏÊ ÞÁÓÔÉ Makefile ÚÁÄÁ£ÔÓÑ, ËÁËÉÅ ÆÁÊÌÙ É ÏÔËÕÄÁ ÄÏÌÖÎÙ ÂÙÔØ ÓÇÒÕÖÅÎÙ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÏÓÔÒÏÉÔØ ÐÏÒÔ. <makevar>DISTVERSION/DISTNAME</makevar> ÷ ÐÅÒÅÍÅÎÎÏÊ DISTNAME ÕËÁÚÙ×ÁÅÔÓÑ ÉÍÑ ÐÏÒÔÁ ÔÁË, ËÁË ÎÁÚ×ÁÌÉ ÅÇÏ ÓÏÚÄÁÔÅÌÉ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ. úÎÁÞÅÎÉÅ DISTNAME ÐÏ ÕÍÏÌÞÁÎÉÀ ÓÏ×ÐÁÄÁÅÔ Ó ${PORTNAME}-${PORTVERSION}, ÔÁË ÞÔÏ ÐÅÒÅÏÐÒÅÄÅÌÑÅÔŠţ ÚÎÁÞÅÎÉÅ ÔÏÌØËÏ × ÓÌÕÞÁÅ ÎÅÏÂÈÏÄÉÍÏÓÔÉ. DISTNAME ÉÓÐÏÌØÚÕÅÔÓÑ ÔÏÌØËÏ × Ä×ÕÈ ÍÅÓÔÁÈ. ÷Ï-ÐÅÒ×ÙÈ, ÓÐÉÓÏË ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ× (DISTFILES) ÐÏ ÕÍÏÌÞÁÎÉÀ ÓÏÓÔÏÉÔ ÉÚ ${DISTNAME}${EXTRACT_SUFX}. é ×Ï-×ÔÏÒÙÈ, ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ, ÞÔÏ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÊ ÆÁÊÌ ÂÕÄÅÔ ÒÁÓÐÁËÏ×ÁÎ × ÐÏÄËÁÔÁÌÏÇ Ó ÉÍÅÎÅÍ WRKSRC, ÚÎÁÞÅÎÉÅ ËÏÔÏÒÏÇÏ ÐÏ ÕÍÏÌÞÁÎÉÀ ÅÓÔØ ÎÅ ÞÔÏ ÉÎÏÅ, ËÁË work/${DISTNAME}. îÁÚ×ÁÎÉÑ ÎÅËÏÔÏÒÙÈ ÄÉÓÔÒÉÂÕÔÉ×Ï×, ËÏÔÏÒÙÅ ÎÅ ÕËÌÁÄÙ×ÁÀÔÓÑ × ${PORTNAME}-${PORTVERSION}-ÓÈÅÍÕ, ÍÏÇÕÔ ÂÙÔØ Á×ÔÏÍÁÔÉÞÅÓËÉ ÏÂÒÁÂÏÔÁÎÙ ÐÏÓÒÅÄÓÔ×ÏÍ ÕÓÔÁÎÏ×ËÉ ÐÅÒÅÍÅÎÎÏÊ DISTVERSION. PORTVERSION É DISTNAME ÂÕÄÕÔ ÕÎÁÓÌÅÄÏ×ÁÎÙ Á×ÔÏÍÁÔÉÞÅÓËÉ, ÎÏ ËÏÎÅÞÎÏ ÖÅ ÍÏÇÕÔ ÂÙÔØ ÐÅÒÅÏÐÒÅÄÅÌÅÎÙ. óÌÅÄÕÀÝÁÑ ÔÁÂÌÉÃÁ ÄÅÍÏÎÓÔÒÉÒÕÅÔ ÎÅËÏÔÏÒÙÅ ÐÒÉÍÅÒÙ: DISTVERSION PORTVERSION 0.7.1d 0.7.1.d 10Alpha3 10.a3 3Beta7-pre2 3.b7.p2 8:f_17 8f.17 úÎÁÞÅÎÉÑ ÐÅÒÅÍÅÎÎÙÈ PKGNAMEPREFIX É PKGNAMESUFFIX ÎÅ ×ÌÉÑÀÔ ÎÁ ÚÎÁÞÅÎÉÅ DISTNAME. úÁÍÅÔØÔÅ ÔÁËÖÅ, ÞÔÏ ÅÓÌÉ ÚÎÁÞÅÎÉÅ WRKSRC ÒÁ×ÎÏ work/${PORTNAME}-${PORTVERSION}, É × ÓÌÕÞÁÅ, ËÏÇÄÁ ÏÒÉÇÉÎÁÌØÎÙÊ ÁÒÈÉ× ÎÁÚÙ×ÁÅÔÓÑ ÐÏ ÉÍÅÎÉ, ÏÔÌÉÞÎÏÍ ÏÔ ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX}, ÓËÏÒÅÅ ×ÓÅÇÏ, ×Ù ÄÏÌÖÎÙ ÏÓÔÁ×ÉÔØ DISTNAME ËÁË ÅÓÔØ— ÌÕÞÛÅ ÐÅÒÅÏÐÒÅÄÅÌÉÔØ DISTFILES, ÞÅÍ ÚÁÄÁ×ÁÔØ ÚÎÁÞÅÎÉÑ ËÁË DISTNAME, ÔÁË É WRKSRC (É, ×ÏÚÍÏÖÎÏ, ÅÝ£ É EXTRACT_SUFX). <makevar>MASTER_SITES</makevar> óÏÄÅÒÖÉÔ ÞÁÓÔØ Ó ËÁÔÁÌÏÇÏÍ FTP/HTTP-URL, ËÏÔÏÒÁÑ ÕËÁÚÙ×ÁÅÔ ÎÁ ÏÒÉÇÉÎÁÌØÎÙÊ ÁÒÈÉ× ÎÁ ÓÅÒ×ÅÒÅ MASTER_SITES. îÅ ÚÁÂÕÄØÔÅ ÌÉÄÉÒÕÀÝÉÊ ÓÌÜÛ (/)! íÁËÒÏÓ ËÏÍÁÎÄÙ make ÂÕÄÅÔ ÐÙÔÁÔØÓÑ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÄÉÓÔÒÉÂÕÔÉ×ÎÏÇÏ ÆÁÊÌÁ Ó ÐÏÍÏÝØÀ ÐÒÏÇÒÁÍÍÙ FETCH, ÅÓÌÉ ÏÎ ÎÅ ÂÕÄÅÔ ÎÁÊÄÅÎ × ÓÉÓÔÅÍÅ. òÅËÏÍÅÎÄÕÅÔÓÑ ÐÏÍÅÝÁÔØ × ÓÐÉÓÏË ÍÎÏÇÏ ÓÁÊÔÏ×, ÐÒÅÄÐÏÞÔÉÔÅÌØÎÏ Ó ÒÁÚÎÙÈ ËÏÎÔÉÎÅÎÔÏ×. üÔÏ ÐÏÍÏÖÅÔ ÐÒÉ ÎÁÌÉÞÉÉ ÐÒÏÂÌÅÍ Ó ÍÉÒÏ×ÏÊ ÓÅÔØÀ. íÙ ÄÁÖÅ ÐÌÁÎÉÒÕÅÍ ÄÏÂÁ×ÉÔØ ÐÏÄÄÅÒÖËÕ Á×ÔÏÍÁÔÉÞÅÓËÏÇÏ ÏÐÒÅÄÅÌÅÎÉÑ ÂÌÉÖÁÊÛÅÇÏ ÓÁÊÔÁ É ÓÇÒÕÚËÉ ÆÁÊÌÏ× ÏÔÔÕÄÁ; ÎÁÌÉÞÉÅ ÎÅÓËÏÌØËÉÈ ÓÁÊÔÏ× ÂÕÄÅÔ ÓÐÏÓÏÂÓÔ×Ï×ÁÔØ ÜÔÏÍÕ ÎÁÞÉÎÁÎÉÀ. åÓÌÉ ÏÒÉÇÉÎÁÌØÎÙÊ ÁÒÈÉ× ÎÁÈÏÄÉÔÓÑ ÎÁ ÏÄÎÏÍ ÉÚ ÔÁËÉÈ ÐÏÐÕÌÑÒÎÙÈ ÓÅÒ×ÅÒÏ×, ËÁË SourceForge, GNU ÉÌÉ Perl CPAN, ÔÏ ÕËÁÚÙ×ÁÊÔÅ ÜÔÉ ÓÁÊÔÙ × ÐÒÏÓÔÏÊ ÆÏÒÍÅ ÐÒÉ ÐÏÍÏÝÉ MASTER_SITE_* (Ë ÐÒÉÍÅÒÕ, MASTER_SITE_SOURCEFORGE, MASTER_SITE_GNU ÉÌÉ MASTER_SITE_PERL_CPAN. ðÒÏÓÔÏ ÕËÁÖÉÔÅ × ÐÅÒÅÍÅÎÎÏÊ MASTER_SITES ÏÄÎÏ ÉÚ ÜÔÉÈ ÚÎÁÞÅÎÉÊ, Á × ÐÅÒÅÍÅÎÎÏÊ MASTER_SITE_SUBDIR ÚÁÄÁÊÔÅ ÐÕÔØ Ë ÁÒÈÉ×Õ. ÷ÏÔ ÐÒÉÍÅÒ: MASTER_SITES= ${MASTER_SITE_GNU} MASTER_SITE_SUBDIR= make éÌÉ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÏËÒÁÝÅÎÎÙÊ ÆÏÒÍÁÔ: MASTER_SITES= GNU/make üÔÉ ÐÅÒÅÍÅÎÎÙÅ ÏÐÒÅÄÅÌÅÎÙ × ÆÁÊÌÅ /usr/ports/Mk/bsd.sites.mk. ÷Ó£ ×ÒÅÍÑ ÄÏÂÁ×ÌÑÀÔÓÑ ÎÏ×ÙÅ ÚÁÐÉÓÉ, ÔÁË ÞÔÏ ÏÂÒÁÝÁÊÔÅÓØ Ë ÐÏÓÌÅÄÎÅÊ ×ÅÒÓÉÉ ÜÔÏÇÏ ÆÁÊÌÁ ÐÅÒÅÄ ÔÅÍ, ËÁË ÐÏÓÌÁÔØ ÎÁÍ Ó×ÏÊ ÐÏÒÔ. äÌÑ ÐÏÐÕÌÑÒÎÙÈ ÓÁÊÔÏ× ÓÕÝÅÓÔ×ÕÅÔ ÎÅÓËÏÌØËÏ ÍÁÇÉÞÅÓËÉÈ ÍÁËÒÏÓÏ× Ó ÚÁÒÁÎÅÅ ÉÚ×ÅÓÔÎÏÊ ÓÔÒÕËÔÕÒÏÊ ËÁÔÁÌÏÇÏ×. éÓÐÏÌØÚÕÊÔÅ ÄÌÑ ÎÉÈ ÓÏËÒÁÝÅÎÉÑ, É ÓÉÓÔÅÍÁ ÐÏÐÙÔÁÅÔÓÑ ÕÇÁÄÁÔØ ÄÌÑ ×ÁÓ ÐÒÁ×ÉÌØÎÙÊ ÐÏÄËÁÔÁÌÏÇ. MASTER_SITES= SF åÓÌÉ ÐÏÐÙÔËÁ ÕÇÁÄÁÔØ ÎÅ ÕÄÁÌÁÓØ, ÔÏ ÜÔÏ ÍÏÖÅÔ ÂÙÔØ ÐÅÒÅÐÉÓÁÎÏ ÓÌÅÄÕÀÝÉÍ ÏÂÒÁÚÏÍ. MASTER_SITES= SF/stardict/WyabdcRealPeopleTTS/${PORTVERSION} þÔÏ ÔÁËÖÅ ÍÏÖÎÏ ÚÁÐÉÓÁÔØ × ÔÁËÏÍ ×ÉÄÅ: MASTER_SITES= SF MASTER_SITE_SUBDIR= stardict/WyabdcRealPeopleTTS/${PORTVERSION} ðÏÐÕÌÑÒÎÙÅ ÍÁÇÉÞÅÓËÉÅ ÍÁËÒÏÓÙ ÄÌÑ <makevar>MASTER_SITES</makevar> Macro Assumed subdirectory BERLIOS /${PORTNAME:L} CHEESESHOP /packages/source/source/${DISTNAME:C/(.).*/\1/}/${DISTNAME:C/(.*)-[0-9].*/\1/} DEBIAN /debian/pool/main/${PORTNAME:C/^((lib)?.).*$/\1/}/${PORTNAME} GCC /pub/gcc/releases/${DISTNAME} GNOME /pub/GNOME/sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/} GNU /gnu/${PORTNAME} MOZDEV /pub/mozdev/${PORTNAME:L} PERL_CPAN /pub/CPAN/modules/by-module/${PORTNAME:C/-.*//} PYTHON /ftp/python/${PYTHON_PORTVERSION:C/rc[0-9]//} RUBYFORGE /${PORTNAME:L} SAVANNAH /${PORTNAME:L} SF /project/${PORTNAME:L}/${PORTNAME:L}/${PORTVERSION}
<makevar>EXTRACT_SUFX</makevar> åÓÌÉ Õ ×ÁÓ ÉÍÅÅÔÓÑ ÏÄÉÎ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÊ ÆÁÊÌ, É × ÅÇÏ ÉÍÅÎÉ ÉÓÐÏÌØÚÕÅÔÓÑ ÓÔÒÁÎÎÏÅ ÏËÏÎÞÁÎÉÅ ÄÌÑ ÕËÁÚÁÎÉÑ ÔÉÐÁ ÓÖÁÔÉÑ, ÚÁÄÁÊÔÅ ÐÅÒÅÍÅÎÎÕÀ EXTRACT_SUFX. ë ÐÒÉÍÅÒÕ, ÅÓÌÉ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÊ ÆÁÊÌ ÎÏÓÉÔ ÉÍÑ foo.tgz, Á ÎÅ ÂÏÌÅÅ ÐÒÉ×ÙÞÎÏÅ foo.tar.gz, ×Ù ÄÏÌÖÎÙ ÎÁÐÉÓÁÔØ: DISTNAME= foo EXTRACT_SUFX= .tgz ðÅÒÅÍÅÎÎÙÅ USE_BZIP2, USE_XZ É USE_ZIP ÐÒÉ ÎÅÏÂÈÏÄÉÍÏÓÔÉ Á×ÔÏÍÁÔÉÞÅÓËÉ ÕÓÔÁÎÁ×ÌÉ×ÁÀÔ ÚÎÁÞÅÎÉÅ EXTRACT_SUFX × .tar.bz2, .tar.xz ÉÌÉ .zip. åÓÌÉ ÎÉ ÏÄÎÁ ÉÚ ÜÔÉÈ ÐÅÒÅÍÅÎÎÙÈ ÎÅ ÚÁÄÁÎÁ, ÔÏ ÚÎÁÞÅÎÉÅ EXTRACT_SUFX ÐÏ ÕÍÏÌÞÁÎÉÀ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × .tar.gz. ÷ÁÍ ÎÅ ÎÕÖÎÏ ÚÁÄÁ×ÁÔØ ÚÎÁÞÅÎÉÑ EXTRACT_SUFX É DISTFILES ÏÄÎÏ×ÒÅÍÅÎÎÏ. <makevar>DISTFILES</makevar> éÎÏÇÄÁ ÉÍÅÎÁ ÓÇÒÕÖÁÅÍÙÈ ÆÁÊÌÏ× ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÔ ÉÍÅÎÉ ÐÏÒÔÁ. ë ÐÒÉÍÅÒÕ, ÆÁÊÌ ÍÏÖÅÔ ÎÁÚÙ×ÁÔØÓÑ source.tar.gz ÉÌÉ ÐÏÄÏÂÎÙÍ ÏÂÒÁÚÏÍ. ÷ ÄÒÕÇÉÈ ÓÌÕÞÁÑÈ ÉÓÈÏÄÎÙÊ ËÏÄ ÐÒÉÌÏÖÅÎÉÑ ÍÏÖÅÔ ÒÁÓÐÏÌÁÇÁÔØÓÑ × ÎÅÓËÏÌØËÉÈ ÏÔÌÉÞÁÀÝÉÈÓÑ ÁÒÈÉ×ÁÈ, É ×ÓÅ ÏÎÉ ÄÏÌÖÎÙ ÂÙÔØ ÓÇÒÕÖÅÎÙ. åÓÌÉ ÜÔÏ ×ÁÛ ÓÌÕÞÁÊ, ÔÏ ÚÁÄÁÊÔÅ × ÐÅÒÅÍÅÎÎÏÊ DISTFILES ÓÐÉÓÏË ÒÁÚÄÅÌ£ÎÎÙÈ ÐÒÏÂÅÌÁÍÉ ÉͣΠÆÁÊÌÏ×, ËÏÔÏÒÙÅ ÎÕÖÎÏ ÓÇÒÕÚÉÔØ. DISTFILES= source1.tar.gz source2.tar.gz åÓÌÉ ÐÅÒÅÍÅÎÎÁÑ DISTFILES ÎÅ ÚÁÄÁÎÁ Ñ×ÎÏ, ÔÏ Å£ ÚÎÁÞÅÎÉÅÍ ÐÏ ÕÍÏÌÞÁÎÉÀ ÂÕÄÅÔ ${DISTNAME}${EXTRACT_SUFX}. <makevar>EXTRACT_ONLY</makevar> åÓÌÉ ÔÏÌØËÏ ÎÅËÏÔÏÒÙÅ ÉÚ DISTFILES ÄÏÌÖÎÙ ÂÙÔØ ÒÁÓÐÁËÏ×ÁÎÙ—Ë ÐÒÉÍÅÒÕ, ÞÁÓÔØ ÉÚ ÎÉÈ Ñ×ÌÑÅÔÓÑ ÉÓÈÏÄÎÙÍ ËÏÄÏÍ, Á ÄÒÕÇÉÅ ÐÒÅÄÓÔÁ×ÌÑÀÔ ÓÏÂÏÊ ÎÅÕÐÁËÏ×ÁÎÎÕÀ ÄÏËÕÍÅÎÔÁÃÉÀ—ÐÅÒÅÞÉÓÌÉÔÅ ÉÍÅÎÁ ÆÁÊÌÏ×, ËÏÔÏÒÙÅ ÄÏÌÖÎÙ ÂÙÔØ ÒÁÓÐÁËÏ×ÁÎÙ, × EXTRACT_ONLY. DISTFILES= source.tar.gz manual.html EXTRACT_ONLY= source.tar.gz åÓÌÉ ÎÉ ÏÄÉÎ ÉÚ DISTFILES ÎÅ ÄÏÌÖÅÎ ÒÁÓÐÁËÏ×Ù×ÁÔØÓÑ, ÔÏ ÕÓÔÁÎÏ×ÉÔÅ ÐÕÓÔÏÅ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ EXTRACT_ONLY. EXTRACT_ONLY= <makevar>PATCHFILES</makevar> åÓÌÉ ×ÁÛÅÍÕ ÐÏÒÔÕ ÔÒÅÂÕÀÔÓÑ ÎÅËÏÔÏÒÙÈ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÁÔÞÉ, ËÏÔÏÒÙÅ ÄÏÓÔÕÐÎÙ ÐÏ FTP ÉÌÉ HTTP, ÚÁÄÁÊÔÅ ÉÍÅÎÁ ÜÔÉÈ ÆÁÊÌÏ× × ÐÅÒÅÍÅÎÎÏÊ PATCHFILES, Á × ÐÅÒÅÍÅÎÎÏÊ PATCH_SITES ÕËÁÖÉÔÅ URL ÔÏÇÏ ËÁÔÁÌÏÇÁ, × ËÏÔÏÒÏÍ ÏÎÉ ÓÏÄÅÒÖÁÔÓÑ (ÆÏÒÍÁÔ ÔÁËÏÊ ÖÅ, ËÁË ÄÌÑ MASTER_SITES). åÓÌÉ ÐÁÔÞ ÎÅ ÏÔÎÏÓÉÔÓÑ Ë ÓÁÍÏÍÕ ×ÅÒÈÕ ÄÅÒÅ×Á ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× (ÔÏ ÅÓÔØ WRKSRC), ÐÏÔÏÍÕ ÞÔÏ ÏÎ ÓÏÄÅÒÖÉÔ ÎÅËÏÔÏÒÙÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÕÔÉ, ÕÓÔÁÎÏ×ÉÔÅ ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ PATCH_DIST_STRIP. ÷ ÞÁÓÔÎÏÓÔÉ, ÅÓÌÉ ×ÓÅ ÉÍÅÎÁ ÐÕÔÅÊ × ÐÁÔÞÅ ÉÍÅÀÔ ÄÏÐÏÌÎÉÔÅÌØÎÙÊ ÐÕÔØ foozolix-1.0/ ÐÅÒÅÄ ÉÍÅÎÅÍ ÆÁÊÌÁ, ÔÏ ÚÁÄÁÊÔÅ PATCH_DIST_STRIP=-p1. îÅ ×ÏÌÎÕÊÔÅÓØ, ÅÓÌÉ ÐÁÔÞÉ ÕÐÁËÏ×ÁÎÙ; ÏÎÉ ÂÕÄÕÔ ÒÁÓÐÁËÏ×ÁÎÙ Á×ÔÏÍÁÔÉÞÅÓËÉ, ÅÓÌÉ ÉÍÅÎÁ ÆÁÊÌÏ× ÏËÁÎÞÉ×ÁÀÔÓÑ ÎÁ .gz ÉÌÉ .Z. åÓÌÉ ÐÁÔÞ ÒÁÓÐÒÏÓÔÒÁÎÑÅÔÓÑ ×ÍÅÓÔÅ Ó ËÁËÉÍÉ-ÔÏ ÄÒÕÇÉÍÉ ÆÁÊÌÁÍÉ, ÔÁËÉÍÉ, ËÁË ÄÏËÕÍÅÎÔÁÃÉÑ, × ×ÉÄÅ tar-ÁÒÈÉ×Á gzip, ×Ù ÎÅ ÍÏÖÅÔÅ ÐÒÏÓÔÏ ÉÓÐÏÌØÚÏ×ÁÔØ PATCHFILES. åÓÌÉ ÜÔÏ ×ÁÛ ÓÌÕÞÁÊ, ÄÏÂÁרÔÅ ÉÍÑ É ÍÅÓÔÏÐÏÌÏÖÅÎÉÅ ÁÒÈÉ×Á Ó ÐÁÔÞÅÍ Ë DISTFILES É MASTER_SITES. úÁÔÅÍ ×ÏÓÐÏÌØÚÕÊÔÅÓØ ÐÅÒÅÍÅÎÎÏÊ EXTRA_PATCHES ÄÌÑ ÕËÁÚÁÎÉÑ ÜÔÉÈ ÆÁÊÌÏ×, É bsd.port.mk Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÒÉÍÅÎÉÔ ÜÔÉ ÐÁÔÞÉ. ÷ ÞÁÓÔÎÏÓÔÉ, ÎÅ ËÏÐÉÒÕÊÔÅ ÆÁÊÌÙ Ó ÐÁÔÞÁÍÉ × ËÁÔÁÌÏÇ PATCHDIR—ÜÔÏÔ ËÁÔÁÌÏÇ ÍÏÖÅÔ ÂÙÔØ ÎÅÄÏÓÔÕÐÎÙÍ ÄÌÑ ÚÁÐÉÓÉ. áÒÈÉ× ÂÕÄÅÔ ÒÁÓÐÁËÏ×ÁÎ ×ÎÅ ÉÓÈÏÄÎÏÇÏ ËÏÄÁ, ËÁË ÏÂÙÞÎÏ, É Ë ÔÏÍÕ ÖÅ ÅÇÏ ÎÅ ÎÕÖÎÏ Ñ×ÎÏ ÒÁÓÐÁËÏ×Ù×ÁÔØ, ÅÓÌÉ ÜÔÏ ÏÂÙÞÎÙÊ ÁÒÈÉ× gzip ÉÌÉ compress. åÓÌÉ ×Ù ÓÄÅÌÁÅÔÅ ÐÏÓÌÅÄÎÅÅ, ÐÒÉÌÏÖÉÔÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÕÓÉÌÉÑ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÎÅ ÐÅÒÅÚÁÐÉÓÁÔØ ÞÔÏ-ÌÉÂÏ, ÕÖÅ ÓÕÝÅÓÔ×ÕÀÝÅÅ × ÜÔÏÍ ËÁÔÁÌÏÇÅ. ôÁËÖÅ ÎÅ ÚÁÂÕÄØÔÅ ÄÏÂÁ×ÉÔØ ËÏÍÁÎÄÕ ÄÌÑ ÕÄÁÌÅÎÉÑ ÓËÏÐÉÒÏ×ÁÎÎÏÇÏ ÐÁÔÞÁ × ÃÅÌÉ pre-clean. îÅÓËÏÌØËÏ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ× ÉÌÉ ÐÁÔÞÅÊ Ó ÒÁÚÌÉÞÎÙÈ ÓÅÒ×ÅÒÏ× É ÐÏÄËÁÔÁÌÏÇÏ× (<literal>MASTER_SITES:n</literal>) (üÔÏÔ ÒÁÚÄÅÌ ÍÏÖÎÏ ÓÞÉÔÁÔØ ÎÅÍÎÏÇÏ ÐÏ×ÙÛÅÎÎÏÊ ÔÒÕÄÎÏÓÔÉ; ÔÅ, ËÔÏ ×ÐÅÒ×ÙÅ ÚÎÁËÏÍÑÔÓÑ Ó ÜÔÉÍ ÔÅËÓÔÏÍ, ÍÏÇÕÔ ÐÒÏÐÕÓÔÉÔØ ÜÔÏÔ ÒÁÚÄÅÌ). ÷ ÜÔÏÍ ÒÁÚÄÅÌÅ ÎÁÈÏÄÉÔÓÑ ÉÎÆÏÒÍÁÃÉÑ Ï ÍÅÈÁÎÉÚÍÅ ÓÇÒÕÚËÉ, ÉÚ×ÅÓÔÎÏÍ ËÁË MASTER_SITES:n É MASTER_SITES_NN. äÁÌÅÅ ÍÙ ÂÕÄÅÍ ÎÁÚÙ×ÁÔØ ÜÔÏÔ ÍÅÈÁÎÉÚÍ MASTER_SITES:n. óÎÁÞÁÌÁ ÎÅÍÎÏÇÏ ÏÂÝÅÊ ÉÎÆÏÒÍÁÃÉÉ. ÷ OpenBSD ÉÍÅÅÔÓÑ ÐÏÌÅÚÎÁÑ ×ÏÚÍÏÖÎÏÓÔØ, ÉÓÐÏÌØÚÕÅÍÁÑ × ÐÅÒÅÍÅÎÎÙÈ DISTFILES É PATCHFILES, ËÏÔÏÒÁÑ ÐÏÚ×ÏÌÑÅÔ ÚÁËÒÅÐÌÑÔØ ÐÏÓÌÅ ÉÍÅÎ ÆÁÊÌÏ× É ÐÁÔÞÅÊ ÉÄÅÎÔÉÆÉËÁÔÏÒÙ ÔÉÐÁ :n. úÄÅÓØ n ÍÏÖÅÔ ÂÙÔØ ÉÚ ÄÉÁÐÁÚÏÎÁ [0-9] É ÏÂÏÚÎÁÞÁÔØ ÚÁËÒÅÐÌ£ÎÎÕÀ ÇÒÕÐÐÕ. ë ÐÒÉÍÅÒÕ: DISTFILES= alpha:0 beta:1 ÷ OpenBSD ÄÉÓÔÒÉÂÕÔÉ×ÎÙÊ ÆÁÊÌ alpha ÂÕÄÅÔ Ó×ÑÚÁÎ Ó ÐÅÒÅÍÅÎÎÏÊ MASTER_SITES0, ÎÏ ÎÅ Ó ÎÁÛÅÊ ÏÂÝÅÊ ÐÅÒÅÍÅÎÎÏÊ MASTER_SITES, Á ÆÁÊÌ beta Ó ÐÅÒÅÍÅÎÎÏÊ MASTER_SITES1. üÔÏÔ ÏÞÅÎØ ÉÎÔÅÒÅÓÎÁÑ ×ÏÚÍÏÖÎÏÓÔØ, ËÏÔÏÒÁÑ ÍÏÖÅÔ ÕÍÅÎØÛÉÔØ ÜÔÏÔ ÂÅÓËÏÎÅÞÎÙÊ ÐÏÉÓË ÒÁÂÏÔÁÀÝÅÇÏ ÓÁÊÔÁ ÄÌÑ ÓÇÒÕÚËÉ. ðÒÏÓÔÏ ÐÒÅÄÓÔÁרÔÅ ÓÅÂÅ 2 ÆÁÊÌÁ × DISTFILES É 20 ÓÁÊÔÏ× × MASTER_SITES; ÓÁÊÔÙ ÏÞÅÎØ ÍÅÄÌÅÎÎÙÅ, ÐÒÉÞ£Í beta ÎÁÈÏÄÉÔÓÑ ÎÁ ×ÓÅÈ ÓÁÊÔÁÈ ÉÚ MASTER_SITES, Á alpha ÍÏÖÅÔ ÂÙÔØ ÎÁÊÄÅÎ ÔÏÌØËÏ ÎÁ 20-Í ÓÁÊÔÅ. âÕÄÅÔ ÎÅÐÒÁ×ÉÌØÎÏ ÐÒÏ×ÅÒÑÔØ ÉÈ ×ÓÅ, ÅÓÌÉ ÓÏÚÄÁÔÅÌØ ÚÎÁÅÔ Ï ÜÔÏÍ, ÎÅ ÐÒÁ×ÄÁ ÌÉ? îÅÐÏÄÈÏÄÑÝÅÅ ÎÁÞÁÌÏ ÄÌÑ ÔÁËÉÈ ÐÒÅËÒÁÓÎÙÈ ×ÙÈÏÄÎÙÈ! ôÅÐÅÒØ, ËÏÇÄÁ ×Ù ÐÏÌÕÞÉÌÉ ÏÂÝÅÅ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ, ÐÒÏÓÔÏ ÐÒÅÄÓÔÁרÔÅ ÅÝ£ ÂÏÌØÛÅÅ ËÏÌÉÞÅÓÔ×Ï DISTFILES É MASTER_SITES. ëÏÎÅÞÎÏ, ÎÁÛ ÍÁÇÉÓÔÒ ÄÏÓÔÕÐÎÏÓÔÉ ÄÉÓÔÒÉÂÕÔÉ×Ï× ÐÒÅÄÓÔÁ×ÌÑÅÔ ÍÁÓÛÔÁÂÙ ÎÁÇÒÕÚËÉ ÎÁ ÓÅÔØ, ËÏÔÏÒÕÀ ÜÔÏ ÄÁ£Ô. ÷ ÐÏÓÌÅÄÕÀÝÉÈ ÒÁÚÄÅÌÁÈ ÉÎÆÏÒÍÁÃÉÑ ÂÕÄÅÔ ÄÁ×ÁÔØÓÑ ×ÍÅÓÔÅ Ó ÒÅÁÌÉÚÁÃÉÅÊ ÜÔÏÊ ÉÄÅÉ ×Ï FreeBSD. íÙ ÎÅÓËÏÌØËÏ ÕÌÕÞÛÉÌÉ ËÏÎÃÅÐÃÉÀ OpenBSD. õÐÒÏÝ£ÎÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÷ ÜÔÏÍ ÒÁÚÄÅÌÅ ÒÁÓÓËÁÚÙ×ÁÅÔÓÑ, ËÁË ÂÙÓÔÒÏ ÐÏÄÇÏÔÏ×ÉÔØ ÔÏÞÎÕÀ ÓÇÒÕÚËÕ ÎÅÓËÏÌØËÉÈ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ× É ÐÁÔÞÅÊ Ó ÒÁÚÎÙÈ ÓÁÊÔÏ× É ËÁÔÁÌÏÇÏ×. íÙ ÏÐÉÓÙ×ÁÅÍ ÚÄÅÓØ ÓÌÕÞÁÊ ÕÐÒÏÝ£ÎÎÏÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ MASTER_SITES:n. äÌÑ ÂÏÌØÛÉÎÓÔ×Á ÓÃÅÎÁÒÉÅ× ÜÔÏÇÏ ÂÕÄÅÔ ÄÏÓÔÁÔÏÞÎÏ. ïÄÎÁËÏ, ÅÓÌÉ ×ÁÍ ÎÕÖÎÁ ÄÏÐÏÌÎÉÔÅÌØÎÁÑ ÉÎÆÏÒÍÁÃÉÑ, ÏÂÒÁÔÉÔÅÓØ Ë ÓÌÅÄÕÀÝÅÍÕ ÒÁÚÄÅÌÕ. îÅËÏÔÏÒÙÅ ÐÒÉÌÏÖÅÎÉÑ ÓÏÓÔÏÑÔ ÉÚ ÍÎÏÇÉÈ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ×, ËÏÔÏÒÙÅ ÄÏÌÖÎÙ ÂÙÔØ ÓÇÒÕÖÅÎÙ Ó ÎÅÓËÏÌØËÉÈ ÒÁÚÌÉÞÎÙÈ ÓÁÊÔÏ×. ë ÐÒÉÍÅÒÕ, Ghostscript ÓÏÓÔÏÉÔ ÉÚ ÏÓÎÏ×ÎÏÊ ÐÒÏÇÒÁÍÍÙ É ÂÏÌØÛÏÇÏ ÞÉÓÌÁ ÆÁÊÌÏ× ÄÒÁÊ×ÅÒÏ×, ËÏÔÏÒÙÅ ÉÓÐÏÌØÚÕÀÔÓÑ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÐÒÉÎÔÅÒÁ ÐÏÌØÚÏ×ÁÔÅÌÑ. îÅËÏÔÏÒÙÅ ÉÚ ÜÔÉÈ ÆÁÊÌÏ× ÄÒÁÊ×ÅÒÏ× ÐÏÓÔÁ×ÌÑÀÔÓÑ Ó ÏÓÎÏ×ÎÏÊ ÐÒÏÇÒÁÍÍÏÊ, ÎÏ ÐÒÉ ÜÔÏÍ ÍÎÏÇÉÅ ÄÒÕÇÉÅ ÄÏÌÖÎÙ ÂÙÔØ ÓÇÒÕÖÅÎÙ Ó ÍÎÏÖÅÓÔ×Á ÒÁÚÌÉÞÎÙÈ ÓÁÊÔÏ×. þÔÏÂÙ ÜÔÏ ÐÏÄÄÅÒÖÉ×ÁÔØ, ÚÁ ËÁÖÄÏÊ ÚÁÐÉÓØÀ × DISTFILES ÍÏÖÅÔ ÓÌÅÄÏ×ÁÔØ ÓÉÍ×ÏÌ Ä×ÏÅÔÏÞÉÑ É ÉÍÑ ÍÅÔËÉ. úÁ ËÁÖÄÙÍ ÓÁÊÔÏÍ, ÐÅÒÅÞÉÓÌÅÎÎÙÍ × MASTER_SITES, ÔÏÖÅ ÓÌÅÄÕÅÔ Ä×ÏÅÔÏÞÉÅ É ÍÅÔËÁ, ËÏÔÏÒÁÑ ÕËÁÚÙ×ÁÅÔ, ËÁËÉÅ ÆÁÊÌÙ ÄÉÓÔÒÉÂÕÔÉ×Á ÄÏÌÖÎÙ ÂÙÔØ ÓÇÒÕÖÅÎÙ Ó ÜÔÏÇÏ ÓÁÊÔÁ. îÁÐÒÉÍÅÒ, ÒÁÓÓÍÏÔÒÉÍ ÐÒÉÌÏÖÅÎÉÅ, ÉÓÈÏÄÎÙÊ ËÏÄ ËÏÔÏÒÏÇÏ ÒÁÚÄẠ̊ΠÎÁ Ä×Å ÞÁÓÔÉ, source1.tar.gz É source2.tar.gz, ËÏÔÏÒÙÅ ÄÏÌÖÎÙ ÂÙÔØ ÓÇÒÕÖÅÎÙ Ó Ä×ÕÈ ÒÁÚÌÉÞÎÙÈ ÉÓÔÏÞÎÉËÏ×. æÁÊÌ Makefile ÐÏÒÔÁ ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ ÓÔÒÏÞËÉ ÔÉÐÁ . õÐÒÏÝ£ÎÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ <literal>MASTER_SITES:n</literal> Ó 1 ÆÁÊÌÏÍ ÎÁ ËÁÖÄÏÍ ÓÁÊÔÅ MASTER_SITES= ftp://ftp.example1.com/:source1 \ ftp://ftp.example2.com/:source2 DISTFILES= source1.tar.gz:source1 \ source2.tar.gz:source2 îÅÓËÏÌØËÏ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ× ÍÏÇÕÔ ÉÍÅÔØ ÏÄÎÕ É ÔÕ ÖÅ ÍÅÔËÕ. ðÒÏÄÏÌÖÁÑ ÐÒÅÄÙÄÕÝÉÊ ÐÒÉÍÅÒ, ÐÏÌÏÖÉÍ, ÞÔÏ ÉÍÅÅÔÓÑ É ÔÒÅÔÉÊ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÊ ÆÁÊÌ, source3.tar.gz, ËÏÔÏÒÙÊ ÄÏÌÖÅÎ ÂÙÔØ ÓÇÒÕÖÅÎ Ó ftp.example2.com. ôÏÇÄÁ ÆÁÊÌ Makefile ÂÕÄÅÔ ÎÁÐÉÓÁÎ ËÁË . õÐÒÏÝ£ÎÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ <literal>MASTER_SITES:n</literal> Ó ÂÏÌÅÅ ÞÅÍ 1 ÆÁÊÌÏÍ ÎÁ ËÁÖÄÏÍ ÓÅÒ×ÅÒÅ MASTER_SITES= ftp://ftp.example1.com/:source1 \ ftp://ftp.example2.com/:source2 DISTFILES= source1.tar.gz:source1 \ source2.tar.gz:source2 \ source3.tar.gz:source2 ðÏÄÒÏÂÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ðÒÅËÒÁÓÎÏ, ÎÏ ÐÒÉÍÅÒ ÉÚ ÐÒÅÄÙÄÕÝÅÇÏ ÒÁÚÄÅÌÁ ÎÅ ÐÏËÁÚÁÌ ×ÁÍ ×Ó£, ÞÔÏ ×ÁÍ ÎÕÖÎÏ? ÷ ÜÔÏÍ ÒÁÚÄÅÌÅ ÍÙ ÐÏÄÒÏÂÎÏ ÏÐÉÛÅÍ, ËÁË ÒÁÂÏÔÁÅÔ ÍÅÈÁÎÉÚÍ MASTER_SITES:n ÔÏÞÎÏÊ ÓÇÒÕÚËÉ É ËÁË ×Ù ÍÏÖÅÔÅ ÉÚÍÅÎÉÔØ ×ÁÛÉ ÐÏÒÔÙ, ÞÔÏÂÙ ÜÔÏ ÉÓÐÏÌØÚÏ×ÁÔØ. úÁ ÜÌÅÍÅÎÔÁÍÉ ÍÏÇÕÔ ÓÌÅÄÏ×ÁÔØ ÓÉÍ×ÏÌÙ :n, ÇÄÅ n ÜÔÏ [^:,]+, ÔÏ ÅÓÔØ n ÍÏÖÅÔ ÔÅÏÒÅÔÉÞÅÓËÉ ÂÙÔØ ÌÀÂÏÊ ÁÌÆÁ×ÉÔÎÏ-ÃÉÆÒÏ×ÏÊ ÓÔÒÏËÏÊ, ÎÏ ÐÏËÁ ÍÙ ÂÕÄÅÍ ÏÇÒÁÎÉÞÉ×ÁÔØ ÉÈ [a-zA-Z_][0-9a-zA-Z_]+. âÏÌÅÅ ÔÏÇÏ, ÓÏ×ÐÁÄÅÎÉÅ ÓÔÒÏË ÞÕ×ÓÔ×ÉÔÅÌØÎÏ Ë ÒÅÇÉÓÔÒÕ; ÄÒÕÇÉÍÉ ÓÌÏ×ÁÍÉ, n ÏÔÌÉÞÁÅÔÓÑ ÏÔ N. ïÄÎÁËÏ ÓÌÅÄÕÀÝÉÅ ÓÌÏ×Á ÎÅ ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÄÌÑ ÜÔÉÈ ÎÕÖÄ, ÔÁË ËÁË ÏÎÉ ÉÍÅÀÔ ÏÓÏÂÏÅ ÚÎÁÞÅÎÉÅ: default, all É ALL (ÏÎÉ ÉÓÐÏÌØÚÕÀÔÓÑ ÄÌÑ Ó×ÏÉÈ ÎÕÖÄ × ). ëÒÏÍÅ ÔÏÇÏ, DEFAULT Ñ×ÌÑÅÔÓÑ ÓÐÅÃÉÁÌØÎÙÍ ËÌÀÞÅ×ÙÍ ÓÌÏ×ÏÍ (ÐÏÓÍÏÔÒÉÔÅ ). üÌÅÍÅÎÔÙ, ÚÁ ËÏÔÏÒÙÍÉ ÓÌÅÄÕÀÔ :n, ÐÒÉÎÁÄÌÅÖÁÔ ÇÒÕÐÐÅ n, :m ÏÔÎÏÓÉÔÓÑ Ë ÇÒÕÐÐÅ m É ÔÁË ÄÁÌÅÅ. üÌÅÍÅÎÔÙ ÂÅÚ ÔÁËÉÈ ÓÕÆÆÉËÓÏ× ÎÅ ÏÔÎÏÓÑÔÓÑ ÎÉ Ë ËÁËÏÊ ÇÒÕÐÐÅ, ÔÏ ÅÓÔØ ÏÎÉ ÐÒÉÎÁÄÌÅÖÁÔ Ë ÏÓÏÂÏÊ ÇÒÕÐÐÅ DEFAULT. åÓÌÉ ×Ù ÕËÁÖÅÔÅ ÓÕÆÆÉËÓÏÍ ÌÀÂÏÇÏ ÜÌÅÍÅÎÔÁ DEFAULT, ×Ù ÐÒÏÓÔÏ ×ÙÐÏÌÎÉÔÅ ÉÚÌÉÛÎÀÀ ÒÁÂÏÔÕ, ÅÓÌÉ ÔÏÌØËÏ ×Ù ÎÅ ÈÏÔÉÔÅ ÏÔÎÅÓÅÎÉÑ ÜÌÅÍÅÎÔÁ ËÁË Ë ÇÒÕÐÐÅ DEFAULT, ÔÁË É ËÁËÏÊ-ÔÏ ÄÒÕÇÏÊ × ÏÄÎÏ É ÔÏ ÖÅ ×ÒÅÍÑ (ÐÏÓÍÏÔÒÉÔÅ ÎÁ ÐÕÎËÔ ). óÌÅÄÕÀÝÉÅ ÐÒÉÍÅÒÙ ÒÁ×ÎÏÚÎÁÞÎÙ, ÎÏ ÐÅÒ×ÙÊ ÂÏÌÅÅ ÐÒÅÄÐÏÞÔÉÔÅÌÅÎ: MASTER_SITES= alpha MASTER_SITES= alpha:DEFAULT çÒÕÐÐÙ ÎÅ Ñ×ÌÑÀÔÓÑ ÜËÓËÌÀÚÉ×ÎÙÍÉ, ÜÌÅÍÅÎÔ ÍÏÖÅÔ ÐÒÉÎÁÄÌÅÖÁÔØ Ë ÎÅÓËÏÌØËÉÍ ÏÔÌÉÞÁÀÝÉÍÓÑ ÇÒÕÐÐÁÍ ÏÄÎÏ×ÒÅÍÅÎÎÏ, Á ÇÒÕÐÐÁ ÍÏÖÅÔ ÌÉÂÏ ÉÍÅÔØ ÎÅÓËÏÌØËÏ ÒÁÚÌÉÞÎÙÈ ÜÌÅÍÅÎÔÏ×, ÌÉÂÏ ÎÅ ÉÍÅÔØ ÉÈ ×Ï×ÓÅ. ðÏ×ÔÏÒÑÀÝÉÅÓÑ ÜÌÅÍÅÎÔÙ × ÏÄÎÏÊ É ÔÏÊ ÖÅ ÇÒÕÐÐÅ ÂÕÄÕÔ Ñ×ÌÑÔØÓÑ ÐÒÏÓÔÏ ÐÏ×ÔÏÒÑÀÝÉÍÉÓÑ ÜÌÅÍÅÎÔÁÍÉ. åÓÌÉ × ÈÏÔÉÔÅ, ÞÔÏÂÙ ÜÌÅÍÅÎÔ ÐÒÉÎÁÄÌÅÖÁÌ Ë ÎÅÓËÏÌØËÉÍ ÇÒÕÐÐÁÍ ÏÄÎÏ×ÒÅÍÅÎÎÏ, ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÚÁÐÑÔÕÀ (,). ÷ÍÅÓÔÏ ÔÏÇÏ, ÞÔÏÂÙ ÐÏ×ÔÏÒÑÔØ ÉÈ ÎÅÓËÏÌØËÏ ÒÁÚ, ËÁÖÄÙÊ ÒÁÚ Ó ÒÁÚÎÙÍ ÐÏÓÔÆÉËÓÏÍ, ÍÙ ÍÏÖÅÍ ÐÅÒÅÞÉÓÌÉÔØ ÎÅÓËÏÌØËÏ ÇÒÕÐÐ ÚÁ ÒÁÚ × ÏÄÎÏÍ ÐÏÓÔÆÉËÓÅ. îÁÐÒÉÍÅÒ, :m,n,o ÏÐÒÅÄÅÌÑÅÔ ÜÌÅÍÅÎÔ, ÐÒÉÎÁÄÌÅÖÁÝÉÊ ÇÒÕÐÐÁÍ m, n É o. ÷ÓÅ ÓÌÅÄÕÀÝÉÅ ÐÒÉÍÅÒÙ ÉÍÅÀÔ ÏÄÉÎ ÓÍÙÓÌ, ÎÏ ÐÏÓÌÅÄÎÉÊ Ñ×ÌÑÅÔÓÑ ÐÒÅÄÐÏÞÔÉÔÅÌØÎÙÍ: MASTER_SITES= alpha alpha:SOME_SITE MASTER_SITES= alpha:DEFAULT alpha:SOME_SITE MASTER_SITES= alpha:SOME_SITE,DEFAULT MASTER_SITES= alpha:DEFAULT,SOME_SITE ÷ÓÅ ÓÅÒ×ÅÒÙ ×ÎÕÔÒÉ ÏÐÒÅÄÅÌ£ÎÎÏÊ ÇÒÕÐÐÙ ÓÏÒÔÉÒÕÀÔÓÑ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó MASTER_SORT_AWK. ÷ÓÅ ÇÒÕÐÐÙ × MASTER_SITES É PATCH_SITES ÔÏÖÅ ÓÏÒÔÉÒÕÀÔÓÑ. óÅÍÁÎÔÉËÁ ÇÒÕÐÐ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ × ÌÀÂÏÊ ÉÚ ÓÌÅÄÕÀÝÉÈ ÐÅÒÅÍÅÎÎÙÈ MASTER_SITES, PATCH_SITES, MASTER_SITE_SUBDIR, PATCH_SITE_SUBDIR, DISTFILES É PATCHFILES × ÓÏÏÔ×ÅÔÓÔ×ÉÉ ÓÏ ÓÌÅÄÕÀÝÉÍ ÓÉÎÔÁËÓÉÓÏÍ: ÷ÓÅ ÜÌÅÍÅÎÔÙ MASTER_SITES, PATCH_SITES, MASTER_SITE_SUBDIR É PATCH_SITE_SUBDIR ÄÏÌÖÎÙ ÚÁËÁÎÞÉ×ÁÔØÓÑ ÓÉÍ×ÏÌÏÍ ÐÒÑÍÏÇÏ ÓÌÜÛÁ /. åÓÌÉ ËÁËÉÅ-ÔÏ ÜÌÅÍÅÎÔÙ ÐÒÉÎÁÄÌÅÖÁÔ ËÁËÉÍ-ÔÏ ÇÒÕÐÐÁÍ, ÐÏÓÔÆÉËÓ ÇÒÕÐÐÙ :n ÄÏÌÖÅÎ ÓÌÅÄÏ×ÁÔØ ÓÒÁÚÕ ÐÏÓÌÅ ÚÁ×ÅÒÛÁÀÝÅÇÏ ÓÉÍ×ÏÌÁ /. íÅÈÁÎÉÚÍ MASTER_SITES:n ÏÐÉÒÁÅÔÓÑ ÎÁ ÎÁÌÉÞÉÅ ÚÁ×ÅÒÛÁÀÝÅÇÏ ÓÉÍ×ÏÌÁ / ×Ï ÉÚÂÅÖÁÎÉÅ ÓÏ×ÐÁÄÁÀÝÉÈ ÜÌÅÍÅÎÔÏ×, ÇÄÅ :n Ñ×ÌÑÅÔÓÑ ËÏÒÒÅËÔÎÏÊ ÞÁÓÔØÀ ÜÌÅÍÅÎÔÁ Ó ×ÈÏÖÄÅÎÉÑÍÉ, ÇÄÅ :n ÏÂÏÚÎÁÞÁÅÔ ÇÒÕÐÐÕ n. äÌÑ ÃÅÌÅÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ, ÔÁË ËÁË ÚÁ×ÅÒÛÁÀÝÉÊ ÓÉÍ×ÏÌ / ÒÁÎÅÅ ÎÅ ÔÒÅÂÏ×ÁÌÓÑ × ÜÌÅÍÅÎÔÁÈ MASTER_SITE_SUBDIR É PATCH_SITE_SUBDIR, ÅÓÌÉ ÓÉÍ×ÏÌ, ÓÒÁÚÕ ÐÒÅÄÛÅÓÔ×ÕÀÝÉÊ ÐÏÓÔÆÉËÓÕ, ÎÅ Ñ×ÌÑÅÔÓÑ ÓÉÍ×ÏÌÏÍ /, ÔÏ :n ÂÕÄÅÔ ÓÞÉÔÁÔØÓÑ ËÏÒÒÅËÔÎÏÊ ÞÁÓÔØÀ ÜÌÅÍÅÎÔÁ, Á ÎÅ ÐÏÓÔÆÉËÓÏÍ ÇÒÕÐÐÙ, ÄÁÖÅ ÅÓÌÉ ÚÁ ÜÌÅÍÅÎÔÏÍ ÓÌÅÄÕÅÔ :n. ðÏÓÍÏÔÒÉÔÅ É . ðÏÄÒÏÂÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ <literal>MASTER_SITES:n</literal> × <makevar>MASTER_SITE_SUBDIR</makevar> MASTER_SITE_SUBDIR= old:n new/:NEW ëÁÔÁÌÏÇÉ ×ÎÕÔÒÉ ÇÒÕÐÐÙ DEFAULT -> old:n ëÁÔÁÌÏÇÉ ×ÎÕÔÒÉ ÇÒÕÐÐÙ NEW -> new ðÏÄÒÏÂÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ <literal>MASTER_SITES:n</literal> Ó ÚÁÐÑÔÙÍÉ, ÎÅÓËÏÌØËÉÍÉ ÆÁÊÌÁÍÉ, ÎÅÓËÏÌØËÉÍÉ ÓÅÒ×ÅÒÁÍÉ É ÎÅÓËÏÌØËÉÍÉ ÐÏÄËÁÔÁÌÏÇÁÍÉ MASTER_SITES= http://site1/%SUBDIR%/ http://site2/:DEFAULT \ http://site3/:group3 http://site4/:group4 \ http://site5/:group5 http://site6/:group6 \ http://site7/:DEFAULT,group6 \ http://site8/%SUBDIR%/:group6,group7 \ http://site9/:group8 DISTFILES= file1 file2:DEFAULT file3:group3 \ file4:group4,group5,group6 file5:grouping \ file6:group7 MASTER_SITE_SUBDIR= directory-trial:1 directory-n/:groupn \ directory-one/:group6,DEFAULT \ directory ðÒÅÄÙÄÕÝÉÊ ÐÒÉÍÅÒ ÐÒÉ×ÏÄÉÔ Ë ÓÌÅÄÕÀÝÅÊ ÔÏÞÎÏÊ ÓÇÒÕÚËÅ. óÅÒ×ÅÒÙ ÐÅÒÅÞÉÓÌÅÎÙ × ÔÏÞÎÏÍ ÐÏÒÑÄËÅ ÉÈ ÉÓÐÏÌØÚÏ×ÁÎÉÑ. file1 ÂÕÄÅÔ ÓÇÒÕÖÁÔØÓÑ Ó MASTER_SITE_OVERRIDE http://site1/directory-trial:1/ http://site1/directory-one/ http://site1/directory/ http://site2/ http://site7/ MASTER_SITE_BACKUP file2 ÂÕÄÅÔ ÓÇÒÕÖÁÔØÓÑ ÔÏÞÎÏ ÔÁËÖÅ, ËÁË file1, ÔÁË ËÁË ÏÎÉ ÏÂÁ ÏÔÎÏÓÑÔÓÑ Ë ÏÄÎÏÊ É ÔÏÊ ÖÅ ÇÒÕÐÐÅ MASTER_SITE_OVERRIDE http://site1/directory-trial:1/ http://site1/directory-one/ http://site1/directory/ http://site2/ http://site7/ MASTER_SITE_BACKUP file3 ÂÕÄÅÔ ÓÇÒÕÖÅÎ Ó MASTER_SITE_OVERRIDE http://site3/ MASTER_SITE_BACKUP file4 ÂÕÄÅÔ ÓÇÒÕÖÁÔØÓÑ Ó MASTER_SITE_OVERRIDE http://site4/ http://site5/ http://site6/ http://site7/ http://site8/directory-one/ MASTER_SITE_BACKUP file5 ÂÕÄÅÔ ÓÇÒÕÖÅÎ Ó MASTER_SITE_OVERRIDE MASTER_SITE_BACKUP file6 ÂÕÄÅÔ ÓÇÒÕÖÁÔØÓÑ Ó MASTER_SITE_OVERRIDE http://site8/ MASTER_SITE_BACKUP ëÁË ÍÎÅ ÓÇÒÕÐÐÉÒÏ×ÁÔØ ÏÄÎÕ ÉÚ ÓÐÅÃÉÁÌØÎÙÈ ÐÅÒÅÍÅÎÎÙÈ ÉÚ bsd.sites.mk, ÎÁÐÒÉÍÅÒ, MASTER_SITE_SOURCEFORGE? ðÏÓÍÏÔÒÉÔÅ . ðÏÄÒÏÂÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ <literal>MASTER_SITES:n</literal> Ó <makevar>MASTER_SITE_SOURCEFORGE</makevar> MASTER_SITES= http://site1/ ${MASTER_SITE_SOURCEFORGE:S/$/:sourceforge,TEST/} DISTFILES= something.tar.gz:sourceforge something.tar.gz ÂÕÄÅÔ ÓÇÒÕÖÁÔØÓÑ ÓÏ ×ÓÅÈ ÓÁÊÔÏ× ÉÚ MASTER_SITE_SOURCEFORGE. ëÁË ÍÎÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÏ Ó ÐÅÒÅÍÅÎÎÙÍÉ PATCH*? ÷ÓÅ ÐÒÉÍÅÒÙ ×ÙÐÏÌÎÑÌÉÓØ Ó ÐÅÒÅÍÅÎÎÙÍÉ MASTER*, É ÏÎÉ ÒÁÂÏÔÁÀÔ ÔÏÞÎÏ ÔÁËÖÅ É ÄÌÑ PATCH*, ËÁË ÜÔÏ ÍÏÖÎÏ ×ÉÄÅÔØ × . õÐÒÏÝ£ÎÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ <literal>MASTER_SITES:n</literal> Ó <makevar>PATCH_SITES</makevar>. PATCH_SITES= http://site1/ http://site2/:test PATCHFILES= patch1:test þÔÏ ÉÚÍÅÎÉÔÓÑ ÄÌÑ ÐÏÒÔÏ×? á ÞÔÏ ÎÅ ÉÚÍÅÎÉÔÓÑ? ÷ÓÅ ÉÍÅÀÝÉÅÓÑ ÐÏÒÔÙ ÏÓÔÁÀÔÓÑ ÂÅÚ ÉÚÍÅÎÅÎÉÊ. ëÏÄ ÄÌÑ ÍÅÈÁÎÉÚÍÁ MASTER_SITES:n ÁËÔÉ×ÉÒÕÅÔÓÑ, ÅÓÌÉ ÔÏÌØËÏ ÅÓÔØ ÜÌÅÍÅÎÔÙ, ËÏÔÏÒÙÅ ÚÁËÁÎÞÉ×ÁÀÔÓÑ ÎÁ :n, ËÁË É ÜÌÅÍÅÎÔÙ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ×ÙÛÅÏÐÉÓÁÎÎÙÍ ÓÉÎÔÁËÓÉÓÏÍ, ÏÓÏÂÅÎÎÏ ËÁË ÜÔÏ ÐÏËÁÚÁÎÏ × ÐÕÎËÔÅ . ãÅÌÉ ÐÏÒÔ ÏÓÔÁÀÔÓÑ ÔÅÍÉ ÖÅ ÓÁÍÙÍÉ: checksum, makesum, patch, configure, build É ÔÁË ÄÁÌÅÅ. ó ÏÂÙÞÎÙÍÉ ÉÓËÌÀÞÅÎÉÑÍÉ ÄÌÑ do-fetch, fetch-list, master-sites É patch-sites. do-fetch: ÉÓÐÏÌØÚÕÅÔ ÎÏ×ÕÀ ÇÒÕÐÐÉÒÏ×ËÕ Ó ÐÏÓÔÆÉËÓÁÍÉ × DISTFILES É PATCHFILES Ó ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍÉ ÜÌÅÍÅÎÔÁÍÉ ÇÒÕÐÐ × MASTER_SITES É PATCH_SITES, ËÏÔÏÒÙÅ ÉÓÐÏÌØÚÕÀÔ ÇÒÕÐÐÙ ÉÚ MASTER_SITE_SUBDIR É PATCH_SITE_SUBDIR. ðÏÓÍÏÔÒÉÔÅ . fetch-list: ÒÁÂÏÔÁÅÔ ÔÁËÖÅ, ËÁË ÓÔÁÒÁÑ ÃÅÌØ fetch-list Ó ÔÅÍ ÉÓËÌÀÞÅÎÉÅÍ, ÞÔÏ ÏÎÁ ÇÒÕÐÐÉÒÕÅÔ, ËÁË É do-fetch. master-sites É patch-sites: (ÎÅÓÏ×ÍÅÓÔÉÍÙ ÓÏ ÓÔÁÒÙÍÉ ×ÅÒÓÉÑÍÉ) ÔÏÌØËÏ ×ÏÚ×ÒÁÝÁÀÔ ÜÌÅÍÅÎÔÙ ÇÒÕÐÐÙ DEFAULT; ÎÁ ÓÁÍÏÍ ÄÅÌÅ ÏÎÉ ×ÙÐÏÌÎÑÀÔ ÃÅÌÉ master-sites-default É patch-sites-default ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ. âÏÌÅÅ ÔÏÇÏ, ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÃÅÌÅÊ master-sites-all ÉÌÉ patch-sites-all ÐÒÅÄÐÏÞÔÉÔÅÌØÎÏ ÄÌÑ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏÊ ÐÒÏ×ÅÒËÉ MASTER_SITES ÉÌÉ PATCH_SITES. ôÁËÖÅ ÒÁÂÏÔÁ ÐÒÑÍÏÊ ÐÒÏ×ÅÒËÉ × ÐÏÓÌÅÄÕÀÝÉÈ ×ÅÒÓÉÑÈ ÎÅ ÇÁÒÁÎÔÉÒÕÅÔÓÑ. ðÏÓÍÏÔÒÉÔÅ ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ Ï ÜÔÉÈ ÎÏ×ÙÈ ÃÅÌÑÈ. îÏ×ÙÅ ÃÅÌÉ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÏ× éÍÅÀÔÓÑ ÃÅÌÉ master-sites-n É patch-sites-n, ËÏÔÏÒÙÅ ÂÕÄÕÔ ÐÅÒÅÞÉÓÌÑÔØ ÜÌÅÍÅÎÔÙ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ÇÒÕÐÐÙ n ÉÚ MASTER_SITES É PATCH_SITES ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ. ë ÐÒÉÍÅÒÕ, master-sites-DEFAULT É patch-sites-DEFAULT ÏÂÅ ÂÕÄÕÔ ×ÏÚ×ÒÁÝÁÔØ ÜÌÅÍÅÎÔÙ ÇÒÕÐÐÙ DEFAULT, master-sites-test É patch-sites-test ÇÒÕÐÐÙ test É ÔÁË ÄÁÌÅÅ. éÍÅÀÔÓÑ ÎÏ×ÙÅ ÃÅÌÉ master-sites-all É patch-sites-all, ËÏÔÏÒÙÅ ×ÙÐÏÌÎÑÀÔ ÒÁÂÏÔÕ ÓÔÁÒÙÈ master-sites É patch-sites. ïÎÉ ×ÏÚ×ÒÁÝÁÀÔ ÜÌÅÍÅÎÔÙ ×ÓÅÈ ÇÒÕÐÐ, ËÁË ÅÓÌÉ ÂÙ ÏÎÉ ×ÓÅ ÐÒÉÎÁÄÌÅÖÁÌÉ ÏÄÎÏÊ É ÔÏÊ ÖÅ ÇÒÕÐÐÅ Ó ÔÅÍ, ÞÔÏ ÏÎÁ ÐÅÒÅÞÉÓÌÑÅÔ ÒÏ×ÎÏ ÓÔÏÌØËÏ MASTER_SITE_BACKUP É MASTER_SITE_OVERRIDE, ËÁË É ÇÒÕÐÐÙ, ÏÐÒÅÄÅÌ£ÎÎÙÅ × DISTFILES ÉÌÉ PATCHFILES; ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÄÌÑ master-sites-all É patch-sites-all. <makevar>DIST_SUBDIR</makevar> îÅ ÐÏÚ×ÏÌÑÊÔÅ ×ÁÛÅÍÕ ÐÏÒÔÕ ÚÁÓÏÒÑÔØ /usr/ports/distfiles. åÓÌÉ ×ÁÛÅÍÕ ÐÏÒÔÕ ÔÒÅÂÕÅÔÓÑ ÓÇÒÕÚÉÔØ ÍÎÏÇÏ ÆÁÊÌÏ×, ÉÌÉ ÏÎ ÓÏÄÅÒÖÉÔ ÉÍÑ ÆÁÊÌÁ, ÍÏÇÕÝÅÅ ×ÙÚ×ÁÔØ ËÏÎÆÌÉËÔÙ Ó ÄÒÕÇÉÍÉ ÐÏÒÔÁÍÉ (ÎÁÐÒÉÍÅÒ, Makefile), ÔÏ ÕËÁÖÉÔÅ × ÐÅÒÅÍÅÎÎÏÊ DIST_SUBDIR ÉÍÑ ÐÏÒÔÁ (ÄÏÌÖÎÙ ÐÏÄÏÊÔÉ ${PORTNAME} ÉÌÉ ${PKGNAMEPREFIX}${PORTNAME}). üÔÏ ÉÚÍÅÎÉÔ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ DISTDIR ÓÏ ÚÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ /usr/ports/distfiles Ë ÚÎÁÞÅÎÉÀ /usr/ports/distfiles/DIST_SUBDIR, É × ÒÅÚÕÌØÔÁÔÅ ×Ó£, ÞÔÏ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÏÒÔÁ, ÂÕÄÅÔ ÐÏÍÅÝÅÎÏ × ÜÔÏÔ ÐÏÄËÁÔÁÌÏÇ. ïÎ ÚÁÇÌÑÎÅÔ ÔÁËÖÅ × ÐÏÄËÁÔÁÌÏÇ Ó ÔÅÍ ÖÅ ÉÍÅÎÅÍ ÎÁ ÏÓÎÏ×ÎÏÍ ÒÅÚÅÒ×ÎÏÍ ÓÅÒ×ÅÒÅ ftp.FreeBSD.org. (ñ×ÎÏÅ ÚÁÄÁÎÉÅ ÐÅÒÅÍÅÎÎÏÊ DISTDIR × ×ÁÛÅÍ ÆÁÊÌÅ Makefile ÜÔÏÇÏ ÎÅ ÓÄÅÌÁÅÔ, ÔÁË ÞÔÏ, ÐÏÖÁÌÕÊÓÔÁ, ×ÏÓÐÏÌØÚÕÊÔÅÓØ DIST_SUBDIR.) üÔÏ ÎÅ ËÏÓΣÔÓÑ ÔÅÈ ÓÁÊÔÏ× MASTER_SITES, ËÏÔÏÒÙÅ ×Ù ÕËÁÚÁÌÉ × ×ÁÛÅÍ ÆÁÊÌÅ Makefile. <makevar>ALWAYS_KEEP_DISTFILES</makevar> åÓÌÉ ×ÁÛ ÐÏÒÔ ÉÓÐÏÌØÚÕÅÔ Ä×ÏÉÞÎÙÅ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÅ ÆÁÊÌÙ É ÏÂÌÁÄÁÅÔ ÌÉÃÅÎÚÉÅÊ, ÔÒÅÂÕÀÝÅÊ, ÞÔÏÂÙ ÉÓÈÏÄÎÙÊ ËÏÄ ÐÒÅÄÏÓÔÁ×ÌÑÌÓÑ ×ÍÅÓÔÅ Ó ÐÁËÅÔÁÍÉ, ÒÁÓÐÒÏÓÔÒÁÎÑÅÍÙÍÉ × Ä×ÏÉÞÎÏÊ ÆÏÒÍÅ, ÎÁÐÒÉÍÅÒ GPL, ÔÏ ALWAYS_KEEP_DISTFILES ÄÁÓÔ ËÌÁÓÔÅÒÕ ÐÏÓÔÒÏÅÎÉÑ &os; ÕËÁÚÁÎÉÅ ÓÏÈÒÁÎÑÔØ ËÏÐÉÀ ÆÁÊÌÏ×, ÕËÁÚÁÎÎÙÈ × DISTFILES. ðÏÌØÚÏ×ÁÔÅÌÑÍ ÔÁËÉÈ ÐÏÒÔÏ× ÜÔÉ ÆÁÊÌÙ × ÏÓÎÏ×ÎÏÍ ÎÅ ÎÕÖÎÙ, ÐÏÜÔÏÍÕ ÈÏÒÏÛÅÊ ÉÄÅÅÊ Ñ×ÌÑÅÔÓÑ ÄÏÂÁ×ÌÅÎÉÅ × DISTFILES ÉÓÈÏÄÎÙÈ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ×, ÔÏÌØËÏ ËÏÇÄÁ ÏÐÒÅÄÅÌÅÎÁ ÐÅÒÅÍÅÎÎÁÑ PACKAGE_BUILDING. éÓÐÏÌØÚÏ×ÁÎÉÅ <makevar>ALWAYS_KEEP_DISTFILES</makevar>. .if defined(PACKAGE_BUILDING) DISTFILES+= foo.tar.gz ALWAYS_KEEP_DISTFILES= yes .endif ðÒÉ ÄÏÂÁ×ÌÅÎÉÉ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÆÁÊÌÏ× × DISTFILES ÕÂÅÄÉÔÅÓØ, ÞÔÏ ×Ù ÉÈ ÔÁËÖÅ ÄÏÂÁ×ÌÑÅÔÅ × distinfo. ëÒÏÍÅ ÔÏÇÏ, ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÆÁÊÌÙ ÏÂÙÞÎÏ ÒÁÓÐÁËÏ×Ù×ÁÀÔÓÑ ÔÁËÖÅ × WRKDIR, ÞÔÏ ÄÌÑ ÎÅËÏÔÏÒÙÈ ÐÏÒÔÏ× ÍÏÖÅÔ ×ÙÚÙ×ÁÔØ ÎÅÖÅÌÁÔÅÌØÎÙÅ ÐÏÄÏÂÎÙÅ ÜÆÆÅËÔÙ É ÔÒÅÂÏ×ÁÔØ ÏÓÏÂÕÀ ÏÂÒÁÂÏÔËÕ.
<makevar>MAINTAINER</makevar> õËÁÖÉÔÅ ÚÄÅÓØ ×ÁÛ ÁÄÒÅÓ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÙ. ðÏÖÁÌÕÊÓÔÁ. :-) úÁÍÅÔØÔÅ, ÞÔÏ × ËÁÞÅÓÔ×Å ÚÎÁÞÅÎÉÑ ÄÌÑ MAINTAINER ÄÏÐÕÓÔÉÍÏ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÔÏÌØËÏ ÏÄÎÏÇÏ ÁÄÒÅÓÁ ÂÅÚ ÐÏÌÑ ËÏÍÍÅÎÔÁÒÉÑ. äÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÆÏÒÍÁÔ user@hostname.domain. ðÏÖÁÌÕÊÓÔÁ, ÎÅ ×ËÌÀÞÁÊÔÅ ÎÉËÁËÏÇÏ ÏÐÉÓÁÔÅÌØÎÏÇÏ ÔÅËÓÔÁ, ÎÁÐÒÉÍÅÒ, ×ÁÛÅÇÏ ÎÁÓÔÏÑÝÅÇÏ ÉÍÅÎÉ × ÜÔÕ ÓÔÒÏËÕ—ÜÔÏ ÎÅÓËÏÌØËÏ ÓÂÉ×ÁÅÔ Ó ÔÏÌËÕ bsd.port.mk. óÏÐÒÏ×ÏÖÄÁÀÝÉÊ ÏÔ×ÅÔÓÔ×ÅÎÅÎ ÚÁ ÐÏÄÄÅÒÖÁÎÉÅ ÐÏÒÔÁ × ÁËÔÕÁÌØÎÏÍ ÓÏÓÔÏÑÎÉÉ É ÏÂÅÓÐÅÞÅÎÉÅ ÐÒÁ×ÉÌØÎÏÊ ÒÁÂÏÔÙ ÐÏÒÔÁ. úÁ ÐÏÄÒÏÂÎÙÍ ÏÐÉÓÁÎÉÅÍ ÏÂÑÚÁÎÎÏÓÔÅÊ ÓÏÐÒÏ×ÏÖÄÁÀÝÅÇÏ ÐÏÒÔ ÏÂÒÁÝÁÊÔÅÓØ Ë ÇÌÁ×Å The challenge for port maintainers. ðÅÒÅÄ ÆÉËÓÁÃÉÅÊ × ÒÅÐÏÚÉÔÏÒÉÉ ÉÚÍÅÎÅÎÉÑ × ÐÏÒÔÅ ÂÕÄÕÔ ÏÔÐÒÁ×ÌÅÎÙ ÓÏÐÒÏ×ÏÖÄÁÀÝÅÍÕ ÄÌÑ ÐÒÏÓÍÏÔÒÁ É ÏÄÏÂÒÅÎÉÑ. åÓÌÉ ÓÏÐÒÏ×ÏÖÄÁÀÝÉÊ ÐÏÒÔÁ ÎÅ ÏÔ×ÅÔÉÌ ÎÁ ÚÁÐÒÏÓ ÐÏÌØÚÏ×ÁÔÅÌÑ Ï ÏÂÎÏ×ÌÅÎÉÉ × ÔÅÞÅÎÉÅ Ä×ÕÈ ÎÅÄÅÌØ (ÉÓËÌÀÞÁÑ ÂÏÌØÛÉÅ ÐÒÁÚÄÎÉËÉ), ÔÏ ÜÔÏ ÍÏÖÎÏ ÓÞÉÔÁÔØ ÔÁÊÍ-ÁÕÔÏÍ ÓÏÐÒÏ×ÏÖÄÁÀÝÅÇÏ, É ÏÂÎÏ×ÌÅÎÉÅ ÍÏÖÅÔ ÂÙÔØ ×ÙÐÏÌÎÅÎÏ ÂÅÚ Ñ×ÎÏÇÏ ÐÏÄÔ×ÅÒÖÄÅÎÉÑ ÏÔ ÓÏÐÒÏ×ÏÖÄÁÀÝÅÇÏ. åÓÌÉ ÓÏÐÒÏ×ÏÖÄÁÀÝÉÊ ÎÅ ÏÔ×ÅÞÁÅÔ × ÔÅÞÅÎÉÅ ÔÒ£È ÍÅÓÑÃÅ×, ÔÏ ÓÞÉÔÁÅÔÓÑ, ÞÔÏ ÏÎ ÏÔÓÕÔÓÔ×ÕÅÔ, É ËÁË ÓÏÐÒÏ×ÏÖÄÁÀÝÉÊ ÐÏÒÔÁ, Ï ËÏÔÏÒÏÍ ÉÄ£Ô ÒÅÞØ, ÍÏÖÅÔ ÂÙÔØ ÚÁÍÅΣÎ. éÓËÌÀÞÅÎÉÑÍÉ ÉÚ ÜÔÏÇÏ ÐÒÁ×ÉÌÁ Ñ×ÌÑÅÔÓÑ ×Ó£, ÞÔÏ ÓÏÐÒÏ×ÏÖÄÁÅÔ &a.portmgr; ÉÌÉ &a.security-officer;. úÁÐÒÅÝÅÎÏ ÄÅÌÁÔØ ÌÀÂÙÅ ÎÅÓÁÎËÃÉÏÎÉÒÏ×ÁÎÎÙÅ ÉÚÍÅÎÅÎÉÑ × ÐÏÒÔÁÈ, ËÏÔÏÒÙÅ ×ÅÄÕÔ ÜÔÉ ÇÒÕÐÐÙ. íÙ ÏÓÔÁ×ÌÑÅÍ ÚÁ ÓÏÂÏÊ ÐÒÁ×Ï ÉÚÍÅÎÑÔØ ÓÏÏÂÝÅÎÉÅ ÓÏÐÒÏ×ÏÖÄÁÀÝÅÇÏ ÄÌÑ ÌÕÞÛÅÇÏ ÓÏÏÔ×ÅÔÓÔ×ÉÑ ÓÕÝÅÓÔ×ÕÀÝÉÍ ÐÏÌÉÔÉËÁÍ É ÓÔÉÌÀ ëÏÌÌÅËÃÉÉ ðÏÒÔÏ× ÂÅÚ Ñ×ÎÏÇÏ ÏÄÏÂÒÅÎÉÑ ÓÏ ÓÔÏÒÏÎÙ ÏÔÐÒÁ×ÉÔÅÌÑ. ôÁËÖÅ, ËÒÕÐÎÙÅ ÉÚÍÅÎÅÎÉÑ × ÉÎÆÒÁÓÔÒÕËÔÕÒÅ ÍÏÇÕÔ ÐÏ×ÌÅÞØ ÉÚÍÅÎÅÎÉÑ × ÐÏÒÔÅ ÂÅÚ ÓÏÇÌÁÓÉÑ ÓÏÐÒÏ×ÏÖÄÁÀÝÅÇÏ. ôÁËÏÊ ×ÉÄ ÉÚÍÅÎÅÎÉÊ ÎÉËÏÇÄÁ ÎÅ ÂÕÄÅÔ ÚÁÔÒÁÇÉ×ÁÔØ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔØ ÐÏÒÔÁ. úÁ &a.portmgr; ÏÓÔÁ×ÌÑÅÔÓÑ ÐÒÁ×Ï ÓÎÑÔØ ÉÌÉ ÎÁÚÎÁÞÉÔØ ËÏÇÏ-ÌÉÂÏ ÓÏÐÒÏ×ÏÖÄÁÀÝÉÍ ÐÏ ÌÀÂÏÊ ÐÒÉÞÉÎÅ, Á ÚÁ the &a.security-officer; ÏÓÔÁ×ÌÑÅÔÓÑ ÐÒÁ×Ï ÌÉÛÁÔØ ÉÌÉ ÎÁÚÎÁÞÁÔØ ÐÒÁ×Á ÎÁ ÓÏÐÒÏ×ÏÖÄÅÎÉÅ ÐÏÒÔÁ ÐÏ ÓÏÏÂÒÁÖÅÎÉÑÍ ÉÎÆÏÒÍÁÃÉÏÎÎÏÊ ÂÅÚÏÐÁÓÎÏÓÔÉ. <makevar>COMMENT</makevar> üÔÏ ÏÄÎÏÓÔÒÏÞÎÏÅ ÏÐÉÓÁÎÉÅ ÐÏÒÔÁ. ðÏÖÁÌÕÊÓÔÁ, ÎÅ ×ËÌÀÞÁÊÔÅ ÓÀÄÁ ÎÁÚ×ÁÎÉÅ ÐÁËÅÔÁ (ÉÌÉ ÎÏÍÅÒ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ). ëÏÍÍÅÎÔÁÒÉÊ ÄÏÌÖÅÎ ÎÁÞÉÎÁÔØÓÑ Ó ÚÁÇÌÁ×ÎÏÊ ÂÕË×Ù É ÎÅ ÚÁËÁÎÞÉ×ÁÔØÓÑ ÔÏÞËÏÊ. ÷ÏÔ ÐÒÉÍÅÒ: A cat chasing a mouse all over the screen ÷ ÆÁÊÌÅ Makefile ÐÅÒÅÍÅÎÎÁÑ COMMENT ÄÏÌÖÎÁ ÓÌÅÄÏ×ÁÔØ ÓÒÁÚÕ ÚÁ ÐÅÒÅÍÅÎÎÏÊ MAINTAINER. ðÏÖÁÌÕÊÓÔÁ, ÐÏÓÔÁÒÁÊÔÅÓØ ÄÅÌÁÔØ ÓÔÒÏËÕ COMMENT ÄÌÉÎÏÊ ÎÅ ÂÏÌØÛÅ, ÞÅÍ 70 ÓÉÍ×ÏÌÏ×, ÔÁË ËÁË ÜÔÁ ÓÔÒÏËÁ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎÁ ÐÒÏÇÒÁÍÍÏÊ &man.pkg.info.1; ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ÏÄÎÏÓÔÒÏÞÎÏÇÏ ÏÐÉÓÁÎÉÑ ÐÏÒÔÁ. úÁ×ÉÓÉÍÏÓÔÉ íÎÏÇÉÅ ÐÏÒÔÙ ÚÁ×ÉÓÑÔ ÏÔ ÄÒÕÇÉÈ ÐÏÒÔÏ×. üÔÏ ÏÞÅÎØ ÕÄÏÂÎÁÑ ÚÁÍÅÞÁÔÅÌØÎÁÑ ÏÓÏÂÅÎÎÏÓÔØ ÂÏÌØÛÉÎÓÔ×Á Unix-ÐÏÄÏÂÎÙÈ ÏÐÅÒÁÃÉÏÎÎÙÈ ÓÉÓÔÅÍ, ×ËÌÀÞÁÑ &os;. íÎÏÖÅÓÔ×Ï ÐÏÒÔÏ× ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÏÂÝÕÀ ÚÁ×ÉÓÉÍÏÓÔØ ÓÏ×ÍÅÓÔÎÏ, Á ÎÅ ×ËÌÀÞÁÔØ Å£ × ÓÏÓÔÁ× ËÁÖÄÏÇÏ ÐÏÒÔÁ ÉÌÉ ÐÁËÅÔÁ, ËÏÔÏÒÙÊ × ÎÅÊ ÎÕÖÄÁÅÔÓÑ. éÍÅÅÔÓÑ ÓÅÍØ ÐÅÒÅÍÅÎÎÙÈ, ËÏÔÏÒÙÅ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÏÂÅÓÐÅÞÅÎÉÑ ÔÏÇÏ, ÞÔÏ ×Ó£ ÔÒÅÂÕÅÍÏÅ ÎÁÈÏÄÉÔÓÑ ÎÁ ÍÁÛÉÎÅ ÐÏÌØÚÏ×ÁÔÅÌÑ. éÍÅÅÔÓÑ ÔÁËÖÅ ÎÅÓËÏÌØËÏ ÐÒÅÄÏÐÒÅÄÅÌ£ÎÎÙÈ ÐÅÒÅÍÅÎÎÙÈ, ÏÔÒÁÖÁÀÝÉÈ ÚÁ×ÉÓÉÍÏÓÔÉ ÄÌÑ ÏÂÝÉÈ ÓÌÕÞÁÅ×, ÐÌÀÓ ÅÝ£ ÎÅÓËÏÌØËÏ ÄÌÑ ÕÐÒÁ×ÌÅÎÉÑ ÐÏ×ÅÄÅÎÉÅÍ ÚÁ×ÉÓÉÍÏÓÔÅÊ. <makevar>LIB_DEPENDS</makevar> üÔÁ ÐÅÒÅÍÅÎÎÁÑ ÕËÁÚÙ×ÁÅÔ, ÏÔ ËÁËÉÈ ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÕÅÍÙÈ ÂÉÂÌÉÏÔÅË ÚÁ×ÉÓÉÔ ÐÏÒÔ. üÔÏ ÓÐÉÓÏË ÐÁÒ lib:dir:target ÇÄÅ lib - ÜÔÏ ÉÍÑ ÂÉÂÌÉÏÔÅËÉ, dir - ÜÔÏ ËÁÔÁÌÏÇ, × ËÏÔÏÒÏÍ ÍÏÖÎÏ ÅÅ ÎÁÊÔÉ × ÓÌÕÞÁÅ, ÅÓÌÉ ÅÅ ÎÅÔ ÎÁ ÍÁÛÉÎÅ, É target - ÜÔÏ ÃÅÌØ, ËÏÔÏÒÕÀ ÎÕÖÎÏ ×ÙÚ×ÁÔØ × ÜÔÏÍ ËÁÔÁÌÏÇÅ. îÁÐÒÉÍÅÒ, LIB_DEPENDS= jpeg:${PORTSDIR}/graphics/jpeg ÐÒÏ×ÅÒÉÔ ÎÁÌÉÞÉÅ ÂÉÂÌÉÏÔÅËÉ jpeg Ó ÌÀÂÙÍ ÎÏÍÅÒÏÍ ×ÅÒÓÉÉ É ÐÅÒÅÊÄÅÔ × ÐÏÄËÁÔÁÌÏÇ graphics/jpeg ×ÁÛÅÇÏ ÄÅÒÅ×Á ÐÏÒÔÏ× ÄÌÑ ÅÅ ÐÏÓÔÒÏÅÎÉÑ É ÕÓÔÁÎÏ×ËÉ, ÅÓÌÉ ÂÉÂÌÉÏÔÅËÁ ÏÔÓÕÔÓÔ×ÕÅÔ. þÁÓÔØ target ÍÏÖÅÔ ÂÙÔØ ÏÐÕÝÅÎÁ, ÅÓÌÉ ÏÎÁ ÒÁ×ÎÁ DEPENDS_TARGET (ÐÏ ÕÍÏÌÞÁÎÉÀ install). þÁÓÔØ lib Ñ×ÌÑÅÔÓÑ ÒÅÇÕÌÑÒÎÙÍ ×ÙÒÁÖÅÎÉÅÍ, ËÏÔÏÒÏÅ ×ÙÚÙ×ÁÅÔÓÑ ÄÌÑ ×Ù×ÏÄÁ, ÐÏÌÕÞÅÎÎÏÇÏ ÉÚ ldconfig -r. òÁÚÒÅÛÁÀÔÓÑ ÔÁËÉÅ ÚÎÁÞÅÎÉÑ, ËÁË intl.9 É intl.[5-7]. ðÅÒ×ÙÊ ÛÁÂÌÏÎ, intl.9, ÓÏ×ÐÁÄÁÅÔ ÔÏÌØËÏ Ó intl ×ÅÒÓÉÉ 9, × ÔÏ ×ÒÅÍÑ ËÁË intl.[5-7] ÓÏ×ÐÁÄÁÅÔ Ó ÌÀÂÙÍ ÉÚ: intl.5, intl.6 É intl.7. úÁ×ÉÓÉÍÏÓÔØ ÐÒÏ×ÅÒÑÅÔÓÑ Ä×ÁÖÄÙ, ÏÄÉÎ ÒÁÚ ×ÎÕÔÒÉ ÃÅÌÉ extract, Á ÚÁÔÅÍ ÉÚ ÃÅÌÉ install. ëÒÏÍÅ ÔÏÇÏ, ÉÍÑ ÚÁ×ÉÓÉÍÏÓÔÉ ÐÏÍÅÝÁÅÔÓÑ × ÐÁËÅÔ, ÔÁË ÞÔÏ &man.pkg.add.1; ÂÕÄÅÔ Á×ÔÏÍÁÔÉÞÅÓËÉ ÅÇÏ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ, ÅÓÌÉ ÅÇÏ ÎÅÔ ÎÁ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÊ ÓÉÓÔÅÍÅ. <makevar>RUN_DEPENDS</makevar> ÷ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÐÅÒÅÞÉÓÌÑÀÔÓÑ ×ÙÐÏÌÎÉÍÙÅ ÆÁÊÌÙ ÉÌÉ ÆÁÊÌÙ, ÏÔ ËÏÔÏÒÙÈ ÚÁ×ÉÓÉÔ ÒÁÂÏÔÁ ÐÏÒÔÁ. üÔÏ ÓÐÉÓÏË ÐÁÒ ×ÉÄÁ path:dir:target ÇÄÅ path - ÜÔÏ ÉÍÑ ÐÒÏÇÒÁÍÍÙ ÉÌÉ ÆÁÊÌÁ, Á dir - ËÁÔÁÌÏÇ, × ËÏÔÏÒÏÍ ÍÏÖÎÏ ÎÁÊÔÉ ÐÏÒÔ × ÓÌÕÞÁÅ, ÅÓÌÉ ÅÇÏ ÎÅÔ × ÓÉÓÔÅÍÅ, É target - ÜÔÏ ÃÅÌØ, ËÏÔÏÒÕÀ ÎÕÖÎÏ ×ÙÚ×ÁÔØ × ÜÔÏÍ ËÁÔÁÌÏÇÅ. åÓÌÉ path ÎÁÞÉÎÁÅÔÓÑ ÓÏ ÓÌÜÛÁ (/), ÏÎ ×ÏÓÐÒÉÎÉÍÁÅÔÓÑ ËÁË ÆÁÊÌ É ÅÇÏ ÓÕÝÅÓÔ×Ï×ÁÎÉÅ ÐÒÏ×ÅÒÑÅÔÓÑ ËÏÍÁÎÄÏÊ test -e; × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ, ÞÔÏ ÜÔÏ ×ÙÐÏÌÎÉÍÙÊ ÆÁÊÌ, É ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÔÏÇÏ, ÉÍÅÅÔÓÑ ÌÉ ÐÒÏÇÒÁÍÍÁ × ÐÕÔÉ ÐÏÉÓËÁ, ÉÓÐÏÌØÚÕÅÔÓÑ ËÏÍÁÎÄÁ which -s. îÁÐÒÉÍÅÒ, RUN_DEPENDS= ${LOCALBASE}/news/bin/innd:${PORTSDIR}/news/inn \ xmlcatmgr:${PORTSDIR}/textproc/xmlcatmgr ÐÒÏ×ÅÒÉÔ ÓÕÝÅÓÔ×Ï×ÁÎÉÅ ÆÁÊÌÁ ÉÌÉ ËÁÔÁÌÏÇÁ /usr/local/news/bin/innd, É ÅÓÌÉ ÎÉÞÅÇÏ ÎÅ ÂÕÄÅÔ ÎÁÊÄÅÎÏ, ÔÏ ÐÏÓÔÒÏÉÔ É ÕÓÔÁÎÏ×ÉÔ ÐÏÒÔ ÉÚ ÐÏÄËÁÔÁÌÏÇÁ news/inn ÄÅÒÅ×Á ÐÏÒÔÏ×. ôÁËÖÅ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎÁ ÐÒÏ×ÅÒËÁ, ÐÒÉÓÕÔÓÔ×ÕÅÔ ÌÉ × ÐÕÔÉ ÐÏÉÓËÁ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ Ó ÉÍÅÎÅÍ xmlcatmgr, É ÐÅÒÅÊÄÅÔ × ÐÏÄËÁÔÁÌÏÇ textproc/xmlcatmgr ×ÁÛÅÇÏ ÄÅÒÅ×Á ÐÏÒÔÏ× ÄÌÑ ÅÇÏ ÐÏÓÔÒÏÅÎÉÑ É ÕÓÔÁÎÏ×ËÉ, ÅÓÌÉ ÏÎ ÎÅ ÂÕÄÅÔ ÎÁÊÄÅÎ. ÷ ÐÒÉ×ÅÄÅÎÎÏÍ ÐÒÉÍÅÒÅ innd Ñ×ÌÑÅÔÓÑ ×ÙÐÏÌÎÉÍÙÍ ÆÁÊÌÏÍ; ÅÓÌÉ ×ÙÐÏÌÎÉÍÙÊ ÆÁÊÌ ÎÁÈÏÄÉÔÓÑ × ÍÅÓÔÅ, ËÏÔÏÒÏÅ ÏÔÓÕÔÓÔ×ÕÅÔ × ÓÐÉÓËÅ ÐÕÔÅÊ ÆÁÊÌÏ×, ÔÏ ×Ù ÄÏÌÖÎÙ ÕËÁÚÁÔØ ÐÏÌÎÙÊ ÐÕÔØ Ë ÆÁÊÌÕ. ïÆÉÃÉÁÌØÎÙÍ ÚÎÁÞÅÎÉÅÍ ÐÅÒÅÍÅÎÎÏÊ ÐÏÉÓËÁ PATH, ÉÓÐÏÌØÚÕÅÍÙÍ × ËÌÁÓÔÅÒÅ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÏ× Ñ×ÌÑÅÔÓÑ /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin úÁ×ÉÓÉÍÏÓÔØ ÐÒÏ×ÅÒÑÅÔÓÑ ×ÎÕÔÒÉ ÃÅÌÉ install. ëÒÏÍÅ ÔÏÇÏ, ÉÍÑ ÚÁ×ÉÓÉÍÏÓÔÉ ÐÏÍÅÝÁÅÔÓÑ × ÐÁËÅÔ, ÔÁË ÞÔÏ ÐÒÏÇÒÁÍÍÁ &man.pkg.add.1; ÂÕÄÅÔ Á×ÔÏÍÁÔÉÞÅÓËÉ ÅÇÏ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ, ÅÓÌÉ ÏÎ ÎÅ ÂÕÄÅÔ ÎÁÊÄÅÎ × ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÊ ÓÉÓÔÅÍÅ. þÁÓÔØ target ÍÏÖÅÔ ÂÙÔØ ÏÐÕÝÅÎÁ, ÅÓÌÉ ÏÎÁ ÓÏ×ÐÁÄÁÅÔ Ó DEPENDS_TARGET. äÏ×ÏÌØÎÏ ÒÁÓÐÒÏÓÔÒÁÎÅÎÎÏÊ Ñ×ÌÑÅÔÓÑ ÓÉÔÕÁÃÉÑ, ËÏÇÄÁ RUN_DEPENDS ÂÕË×ÁÌØÎÏ ÔÁËÁÑ ÖÅ ËÁË BUILD_DEPENDS, ÏÓÏÂÅÎÎÏ ÅÓÌÉ ÐÅÒÅÎÏÓÉÍÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÎÁÐÉÓÁÎÏ ÎÁ ÑÚÙËÅ ÓÃÅÎÁÒÉÅ×, ÉÌÉ ÅÓÌÉ ÏÎÏ ÔÒÅÂÕÅÔ ÔÁËÏÅ ÖÅ ÏËÒÕÖÅÎÉÅ ÄÌÑ ÉÓÐÏÌÎÅÎÉÑ, ËÁË É ÉÓÐÏÌØÚÕÅÍÏÅ ×Ï ×ÒÅÍÑ ÐÏÓÔÒÏÅÎÉÑ. ÷ ÜÔÏÍ ÓÌÕÞÁÅ, ÏÞÅÎØ ÚÁÍÁÎÞÉ×ÙÍ ÉÌÉ ÄÏ×ÏÌØÎÏ ÅÓÔÅÓÔ×ÅÎÎÙÍ Ñ×ÌÑÅÔÓÑ ÐÒÉÓ×ÏÅÎÉÅ ÏÄÎÏÇÏ ÄÒÕÇÏÍÕ: RUN_DEPENDS= ${BUILD_DEPENDS} ôÅÍ ÎÅ ÍÅÎÅÅ, ÐÏÄÏÂÎÙÅ ÐÒÉÓ×ÏÅÎÉÑ ÍÏÇÕÔ ÚÁÇÒÑÚÎÑÔØ ÚÁ×ÉÓÉÍÏÓÔÉ ×ÒÅÍÅÎÉ ÉÓÐÏÌÎÅÎÉÑ ÓÏÄÅÒÖÉÍÙÍ, ÎÅ ÚÁÄÁÎÎÙÍ × BUILD_DEPENDS ÉÓÈÏÄÎÏÇÏ ÐÏÒÔÁ. ôÁËÏÅ ÓÌÕÞÁÅÔÓÑ ÉÚ-ÚÁ ÌÅÎÉ×ÏÇÏ ×ÙÞÉÓÌÅÎÉÑ × &man.make.1; ÐÒÉÓ×ÁÉ×ÁÅÍÙÈ ÐÅÒÅÍÅÎÎÙÈ. ðÒÅÄÓÔÁרÔÅ Makefile Ó ÐÅÒÅÍÅÎÎÙÍÉ USE_*, ËÏÔÏÒÙÅ ÏÂÒÁÂÁÔÙ×ÁÀÔÓÑ × ports/Mk/bsd.*.mk ÄÌÑ ÐÏÐÏÌÎÅÎÉÑ ÐÅÒ×ÏÎÁÞÁÌØÎÙÈ ÚÁ×ÉÓÉÍÏÓÔÅÊ ÐÏÓÔÒÏÅÎÉÑ. îÁÐÒÉÍÅÒ, USE_GMAKE=yes ÄÏÂÁ×ÌÑÅÔ devel/gmake × BUILD_DEPENDS. äÌÑ ÐÒÅÄÏÔ×ÒÁÝÅÎÉÑ ÚÁÇÒÑÚÎÅÎÉÑ RUN_DEPENDS ÐÏÄÏÂÎÙÍÉ ÄÏÐÏÌÎÉÔÅÌØÎÙÍÉ ÚÁ×ÉÓÉÍÏÓÔÑÍÉ ÐÒÏÑ×ÌÑÊÔÅ ÏÓÔÏÒÏÖÎÏÓÔØ Ó ÐÒÉÓ×ÏÅÎÉÅÍ Ó ÒÁÓËÒÙÔÉÅÍ, Ô.Å. Ó ÒÁÓËÒÙÔÉÅÍ ÚÎÁÞÅÎÉÑ ÐÅÒÅÄ ÅÇÏ ÐÒÉÓ×ÏÅÎÉÅÍ ÐÅÒÅÍÅÎÎÏÊ: RUN_DEPENDS:= ${BUILD_DEPENDS} <makevar>BUILD_DEPENDS</makevar> ÷ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÐÅÒÅÞÉÓÌÑÀÔÓÑ ×ÙÐÏÌÎÉÍÙÅ ÉÌÉ ÏÂÙÞÎÙÅ ÆÁÊÌÙ, ËÏÔÏÒÙÅ ÔÒÅÂÕÀÔÓÑ ÐÏÒÔÕ ÄÌÑ ÅÇÏ ÐÏÓÔÒÏÅÎÉÑ. ëÁË É RUN_DEPENDS, ÜÔÏ ÓÐÉÓÏË ÐÁÒ path:dir:target îÁÐÒÉÍÅÒ, BUILD_DEPENDS= unzip:${PORTSDIR}/archivers/unzip ÂÕÄÅÔ ÐÒÏ×ÅÒÑÔØ ÎÁÌÉÞÉÅ ×ÙÐÏÌÎÉÍÏÇÏ ÆÁÌÁ Ó ÉÍÅÎÅÍ unzip É ÐÅÒÅÊÄÅÔ × ÐÏÄËÁÔÁÌÏÇ archivers/unzip ×ÁÛÅÇÏ ÄÅÒÅ×Á ÐÏÒÔÏ× ÄÌÑ ÅÇÏ ÐÏÓÔÒÏÅÎÉÑ É ÕÓÔÁÎÏ×ËÉ, ÅÓÌÉ ÐÏÓÌÅÄÎÉÊ ÎÅ ÂÕÄÅÔ ÎÁÊÄÅÎ. ðÏÄ ÐÏÓÔÒÏÅÎÉÅÍ ÚÄÅÓØ ÐÏÎÉÍÁÅÔÓÑ ×Ó£, ÏÔ ÒÁÓÐÁËÏ×ËÉ ÄÏ ËÏÍÐÉÌÑÃÉÉ. úÁ×ÉÓÉÍÏÓÔØ ÐÒÏ×ÅÒÑÅÔÓÑ ÉÚ ÃÅÌÉ extract. þÁÓÔØ target ÍÏÖÅÔ ÂÙÔØ ÏÐÕÝÅÎÁ, ÅÓÌÉ ÏÎÁ ÓÏ×ÐÁÄÁÅÔ Ó DEPENDS_TARGET. <makevar>FETCH_DEPENDS</makevar> ÷ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÐÅÒÅÞÉÓÌÑÀÔÓÑ ×ÙÐÏÌÎÑÅÍÙÅ ÆÁÊÌÙ ÉÌÉ ÐÒÏÓÔÏ ÆÁÊÌÙ, ËÏÔÏÒÙÅ ÔÒÅÂÕÀÔÓÑ ÐÏÒÔÕ ÄÌÑ ÓÇÒÕÚËÉ. ëÁË É ÐÒÅÄÙÄÕÝÉÅ Ä×Å ÐÅÒÅÍÅÎÎÙÅ, ÜÔÏ ÓÐÉÓÏË ÐÁÒ path:dir:target îÁÐÒÉÍÅÒ, FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 ÂÕÄÅÔ ÐÒÏ×ÅÒÑÔØ ÎÁÌÉÞÉÅ ×ÙÐÏÌÎÑÅÍÏÇÏ ÆÁÊÌÁ Ó ÉÍÅÎÅÍ ncftp2 É ÐÅÒÅÊÄÅÔ × ËÁÔÁÌÏÇ net/ncftp2 ×ÁÛÅÇÏ ÄÅÒÅ×Á ÐÏÒÔÏ× ÄÌÑ ÅÇÏ ÐÏÓÔÒÏÅÎÉÑ É ÕÓÔÁÎÏ×ËÉ, ÅÓÌÉ ÔÏÔ ÎÅ ÂÕÄÅÔ ÎÁÊÄÅÎ. úÁ×ÉÓÉÍÏÓÔØ ÐÒÏ×ÅÒÑÅÔÓÑ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ÃÅÌÉ fetch. þÁÓÔØ target ÍÏÖÅÔ ÂÙÔØ ÏÐÕÝÅÎÁ, ÅÓÌÉ ÏÎÁ ÓÏ×ÐÁÄÁÅÔ Ó DEPENDS_TARGET. <makevar>EXTRACT_DEPENDS</makevar> ÷ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÕËÁÚÙ×ÁÀÔÓÑ ÐÒÏÇÒÁÍÍÙ ÉÌÉ ÆÁÊÌÙ, ËÏÔÏÒÙÅ ÔÒÅÂÕÀÔÓÑ ÄÌÑ ÒÁÓÐÁËÏ×ËÉ ÐÏÒÔÁ. ëÁË É × ÐÒÅÄÙÄÕÝÉÈ ÓÌÕÞÁÑÈ, ÜÔÏ ÓÐÉÓÏË ÐÁÒ ×ÉÄÁ path:dir:target. îÁÐÒÉÍÅÒ, EXTRACT_DEPENDS= unzip:${PORTSDIR}/archivers/unzip ÂÕÄÅÔ ÐÒÏ×ÅÒÑÔØ ÎÁÌÉÞÉÅ ÐÒÏÇÒÁÍÍÙ Ó ÉÍÅÎÅÍ unzip, É ÐÅÒÅÊÄ£Ô × ÐÏÄËÁÔÁÌÏÇ archivers/unzip ×ÁÛÅÇÏ ÄÅÒÅ×Á ÐÏÒÔÏ× ÄÌÑ Å£ ÐÏÓÔÒÏÅÎÉÑ É ÕÓÔÁÎÏ×ËÉ, ÅÓÌÉ ÔÁËÏÊ ÐÒÏÇÒÁÍÍÙ ÎÅ ÂÕÄÅÔ ÎÁÊÄÅÎÏ. úÁ×ÉÓÉÍÏÓÔØ ÐÒÏ×ÅÒÑÅÔÓÑ ×ÎÕÔÒÉ ÃÅÌÉ extract. þÁÓÔØ target ÍÏÖÅÔ ÂÙÔØ ÏÐÕÝÅÎÁ, ÅÓÌÉ ÏÎÁ ÓÏ×ÐÁÄÁÅÔ Ó DEPENDS_TARGET. éÓÐÏÌØÚÕÊÔÅ ÜÔÕ ÐÅÒÅÍÅÎÎÕÀ, ÔÏÌØËÏ ÅÓÌÉ ÒÁÓÐÁËÏ×ËÁ ÎÅ ÒÁÂÏÔÁÅÔ (ÐÏ ÕÍÏÌÞÁÎÉÀ ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ gzip) É ÜÔÏ ÎÅ ÉÓÐÒÁ×ÌÑÅÔÓÑ ÐÒÉ ÐÏÍÏÝÉ USE_ZIP ÉÌÉ USE_BZIP2, ËÏÔÏÒÙÅ ÏÐÉÓÁÎÙ × . <makevar>PATCH_DEPENDS</makevar> üÔÁ ÐÅÒÅÍÅÎÎÁÑ ÕËÁÚÙ×ÁÅÔ ÎÁ ÐÒÏÇÒÁÍÍÙ ÉÌÉ ÆÁÊÌÙ, ËÏÔÏÒÙÅ ÎÕÖÎÙ ÐÏÒÔÕ ÄÌÑ ÐÒÉÍÅÎÅÎÉÑ ÐÁÔÞÅÊ. ëÁË É × ÐÒÅÄÙÄÕÝÉÈ ÓÌÕÞÁÑÈ, ÜÔÏ ÓÐÉÓÏË ÐÁÒ ×ÉÄÁ path:dir:target. îÁÐÒÉÍÅÒ, PATCH_DEPENDS= ${NONEXISTENT}:${PORTSDIR}/java/jfc:extract ÂÕÄÅÔ ÐÅÒÅÈÏÄÉÔØ × ÐÏÄËÁÔÁÌÏÇ java/jfc ×ÁÛÅÇÏ ÄÅÒÅ×Á ÐÏÒÔÏ× ÄÌÑ ÒÁÓÐÁËÏ×ËÉ. úÁ×ÉÓÉÍÏÓÔØ ÐÒÏ×ÅÒÑÅÔÓÑ ×ÎÕÔÒÉ ÃÅÌÉ patch. þÁÓÔØ target ÍÏÖÅÔ ÂÙÔØ ÏÐÕÝÅÎÁ, ÅÓÌÉ ÏÎÁ ÓÏ×ÐÁÄÁÅÔ Ó DEPENDS_TARGET. <makevar>USE_<replaceable>*</replaceable></makevar> äÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÏÂÝÉÈ ÚÁ×ÉÓÉÍÏÓÔÅÊ, ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÕÅÍÙÈ ÍÎÏÇÉÍÉ ÐÏÒÔÁÍÉ, ÐÒÅÄÎÁÚÎÁÞÅÎÏ ÎÅÓËÏÌØËÏ ÐÅÒÅÍÅÎÎÙÈ. éÈ ÉÓÐÏÌØÚÏ×ÁÎÉÅ Ñ×ÌÑÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÍ, ÎÏ ÐÏÍÏÇÁÅÔ ÕÐÒÏÓÔÉÔØ ÉÚÂÙÔÏÞÎÏÓÔØ ÆÁÊÌÏ× Makefile ÐÏÒÔÁ. ëÁÖÄÙÊ ÉÚ ÎÉÈ ÏÆÏÒÍÌÑÅÔÓÑ ËÁË USE_*. üÔÉ ÐÅÒÅÍÅÎÎÙÅ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ × Makefile ÐÏÒÔÁ É ports/Mk/bsd.*.mk. ïÎÉ ÎÅ ÐÒÅÄÎÁÚÎÁÞÅÎÙ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÐÏÌØÚÏ×ÁÔÅÌÑÍÉ ÐÁÒÁÍÅÔÒÏ× — ÉÓÐÏÌØÚÕÊÔÅ ÄÌÑ ÜÔÉÈ ÃÅÌÅÊ PORT_OPTIONS. õÓÔÁÎÏ×ËÁ ÌÀÂÙÈ USE_* × /etc/make.conf ×ÓÅÇÄÁ Ñ×ÌÑÅÔÓÑ ÏÛÉÂÏÞÎÙÍ ÄÅÊÓÔ×ÉÅÍ. ÷ ÞÁÓÔÎÏÓÔÉ, ÕÓÔÁÎÏ×ËÁ USE_GCC= 3.4 ÄÏÂÁ×ÉÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ gcc34 Ë ËÁÖÄÏÍÕ ÐÏÒÔÕ, ×ËÌÀÞÁÑ ÓÁÍ gcc34! ðÅÒÅÍÅÎÎÙÅ <makevar>USE_<replaceable>*</replaceable></makevar> ðÅÒÅÍÅÎÎÁÑ óÍÙÓÌ USE_BZIP2 tar-ÁÒÈÉ×Ù ÐÏÒÔÁ ÕÐÁËÏ×ÁÎÙ ÐÒÉ ÐÏÍÏÝÉ bzip2. USE_ZIP tar-ÁÒÈÉ×Ù ÐÏÒÔÁ ÕÐÁËÏ×ÁÎÙ ÐÒÉ ÐÏÍÏÝÉ zip. USE_BISON äÌÑ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔ ÉÓÐÏÌØÚÕÅÔ bison. USE_CDRTOOLS ðÏÒÔ ÔÒÅÂÕÅÔ cdrecord ÉÚ sysutils/cdrtools ÉÌÉ sysutils/cdrtools-cjk × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÐÒÅÄÐÏÞÔÅÎÉÊ ÐÏÌØÚÏ×ÁÔÅÌÑ. USE_GCC ðÏÒÔ ÔÒÅÂÕÅÔ ÄÌÑ ÓÂÏÒËÉ ÓÐÅÃÉÁÌØÎÕÀ ×ÅÒÓÉÀ gcc. ôÏÞÎÁÑ ×ÅÒÓÉÑ ÍÏÖÅÔ ÂÙÔØ ÕËÁÚÁÎÁ × ÚÎÁÞÅÎÉÉ ÐÅÒÅÍÅÎÎÏÊ, ÎÁÐÒÉÍÅÒ 3.4. íÉÎÉÍÁÌØÎÏ ÎÅÏÂÈÏÄÉÍÕÀ ×ÅÒÓÉÀ ÍÏÖÎÏ ÕËÁÚÁÔØ ËÁË 3.4+. gcc ÉÚ ÏÓÎÏ×ÎÏÊ ÓÉÓÔÅÍÙ ÉÓÐÏÌØÚÕÅÔÓÑ × ÓÌÕÞÁÅ, ÅÓÌÉ ÏÎ ÕÄÏ×ÌÅÔ×ÏÒÑÅÔ ÚÁÐÒÏÛÅÎÎÏÊ ×ÅÒÓÉÉ, ÉÎÁÞÅ ÐÒÏÉÚ×ÏÄÉÔÓÑ ËÏÍÐÉÌÑÃÉÑ ÐÏÄÈÏÄÑÝÅÊ ×ÅÒÓÉÉ gcc ÉÚ ÐÏÒÔÏ× Ó ËÏÒÒÅËÃÉÊ ÐÅÒÅÍÅÎÎÙÈ CC É CXX.
ðÅÒÅÍÅÎÎÙÅ, ÏÔÎÏÓÑÝÉÅÓÑ Ë gmake É ÓÃÅÎÁÒÉÀ configure, ÏÐÉÓÁÎÙ × , Á autoconf, automake É libtool ÏÐÉÓÁÎÙ × . ðÅÒÅÍÅÎÎÙÅ, Ó×ÑÚÁÎÎÙÅ Ó Perl, ÏÐÉÓÁÎÙ × . ðÅÒÅÍÅÎÎÙÅ X11 ÐÅÒÅÞÉÓÌÅÎÙ × . ÒÁÂÏÔÁÅÔ Ó ÐÅÒÅÍÅÎÎÙÍÉ GNOME É Ó KDE. ÏÐÉÓÙ×ÁÅÔ ÐÅÒÅÍÅÎÎÙÅ Java, Á ÓÏÄÅÒÖÉÔ ÉÎÆÏÒÍÁÃÉÀ Ï Apache, PHP É ÍÏÄÕÌÑÈ PEAR. Python ÏÂÓÕÖÄÁÅÔÓÑ × , Á Ruby × . ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÐÅÒÅÍÅÎÎÙÅ, ÉÓÐÏÌØÚÕÅÍÙÅ ÄÌÑ ÐÒÉÌÏÖÅÎÉÊ SDL, É, ÎÁËÏÎÅÃ, ÓÏÄÅÒÖÉÔ ÉÎÆÏÒÍÁÃÉÀ Ï ÐÒÉÌÏÖÅÎÉÉ Xfce.
íÉÎÉÍÁÌØÎÁÑ ×ÅÒÓÉÑ ÚÁ×ÉÓÉÍÏÓÔÉ íÉÎÉÍÁÌØÎÁÑ ×ÅÒÓÉÑ ÚÁ×ÉÓÉÍÏÓÔÉ ÍÏÖÅÔ ÂÙÔØ ÕËÁÚÁÎÁ × ÌÀÂÏÊ ÐÅÒÅÍÅÎÎÏÊ *_DEPENDS, ÚÁ ÉÓËÌÀÞÅÎÉÅÍ LIB_DEPENDS, Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÓÌÅÄÕÀÝÅÇÏ ÓÉÎÔÁËÓÉÓÁ: p5-Spiffy>=0.26:${PORTSDIR}/devel/p5-Spiffy ðÅÒ×ÏÅ ÐÏÌÅ ÓÏÄÅÒÖÉÔ ÎÁÚ×ÁÎÉÅ ÚÁ×ÉÓÉÍÏÇÏ ÐÁËÅÔÁ, ËÏÔÏÒÏÅ ÏÂÑÚÁÎÏ ÓÏ×ÐÁÄÁÔØ Ó ÚÁÐÉÓØÀ × ÂÁÚÅ ÄÁÎÎÙÅ ÐÁËÅÔÏ×, ÚÎÁË ÓÒÁ×ÎÅÎÉÑ É ×ÅÒÓÉÀ ×ÅÒÓÉÀ ÐÁËÅÔÁ. úÁ×ÉÓÉÍÏÓÔØ ÕÄÏ×ÌÅÔ×ÏÒÑÅÔÓÑ ÅÓÌÉ ÎÁ ÍÁÛÉÎÅ ÕÓÔÁÎÏ×ÌÅÎ p5-Spiffy-0.26 ÉÌÉ ÎÏ×ÅÅ. úÁÍÅÞÁÎÉÑ ËÁÓÁÔÅÌØÎÏ ÚÁ×ÉÓÉÍÏÓÔÅÊ ëÁË ÕÖÅ ÏÔÍÅÞÅÎÏ ×ÙÛÅ, ÃÅÌØÀ, ËÏÔÏÒÁÑ ×ÙÚÙ×ÁÅÔÓÑ ÐÏ ÕÍÏÌÞÁÎÉÀ × ÓÌÕÞÁÅ, ËÏÇÄÁ ÜÔÏ ÔÒÅÂÕÅÔ ÚÁ×ÉÓÉÍÏÓÔØ, Ñ×ÌÑÅÔÓÑ DEPENDS_TARGET. ïÎÁ ÐÏ ÕÍÏÌÞÁÎÉÀ ÅÓÔØ install. üÔÏ ÐÏÌØÚÏ×ÁÔÅÌØÓËÁÑ ÐÅÒÅÍÅÎÎÁÑ; ÏÎÁ ÎÉÇÄÅ ÎÅ ÏÐÒÅÄÅÌÅÎÁ × ÆÁÊÌÅ Makefile ÐÏÒÔÁ. åÓÌÉ ×ÁÛÅÍÕ ÐÏÒÔÕ ÔÒÅÂÕÅÔÓÑ ÏÓÏÂÙÊ ÍÅÔÏÄ ÏÂÒÁÂÏÔËÉ ÚÁ×ÉÓÉÍÏÓÔÉ, ×ÏÓÐÏÌØÚÕÊÔÅÓØ ÞÁÓÔØÀ :target ÐÅÒÅÍÅÎÎÏÊ *_DEPENDS ×ÍÅÓÔÏ ÔÏÇÏ, ÞÔÏÂÙ ÐÅÒÅÏÐÒÅÄÅÌÑÔØ DEPENDS_TARGET. ëÏÇÄÁ ×Ù ÎÁÂÉÒÁÅÔÅ ËÏÍÁÎÄÕ make clean, ÜÔÁ ÏÐÅÒÁÃÉÑ ÔÁËÖÅ ×ÙÐÏÌÎÑÅÔÓÑ É ÎÁÄ ÚÁ×ÉÓÉÍÏÓÔÑÍÉ ÜÔÏÇÏ ÐÏÒÔÁ. åÓÌÉ ×Ù ÎÅ ÈÏÔÉÔÅ, ÞÔÏÂÙ ÜÔÏ ÓÌÕÞÉÌÏÓØ, ÏÐÒÅÄÅÌÉÔÅ ÐÅÒÅÍÅÎÎÕÀ NOCLEANDEPENDS × ×ÁÛÅÍ ÏËÒÕÖÅÎÉÉ. üÔÏ ÍÏÖÅÔ ÂÙÔØ ÏÓÏÂÅÎÎÏ ÎÕÖÎÙÍ, ÅÓÌÉ ÐÏÒÔ ÉÍÅÅÔ ÎÅÞÔÏ, ÞÔÏ ÚÁÎÉÍÁÅÔ ÍÎÏÇÏ ×ÒÅÍÅÎÉ ÎÁ ÐÏÓÔÒÏÅÎÉÅ, × Ó×Ï£Í ÓÐÉÓËÅ ÚÁ×ÉÓÉÍÏÓÔÅÊ, ÎÁÐÒÉÍÅÒ, KDE, GNOME ÉÌÉ Mozilla. þÔÏÂÙ ÂÅÚÕÓÌÏ×ÎÏ ÚÁ×ÉÓÅÔØ ÏÔ ÄÒÕÇÏÇÏ ÐÏÒÔÁ, ÕËÁÖÉÔÅ ÐÅÒÅÍÅÎÎÕÀ ${NONEXISTENT} × ËÁÞÅÓÔ×Å ÐÅÒ×ÏÇÏ ÐÏÌÑ ÐÅÒÅÍÅÎÎÏÊ BUILD_DEPENDS ÉÌÉ RUN_DEPENDS. ðÏÌØÚÕÊÔÅÓØ ÜÔÉÍ, ÔÏÌØËÏ ËÏÇÄÁ ×ÁÍ ÎÕÖÎÏ ÉÍÅÔØ ÉÓÈÏÄÎÙÊ ËÏÄ ÄÒÕÇÏÇÏ ÐÏÒÔÁ. ÷Ù ÍÏÖÅÔÅ ÓÜËÏÎÏÍÉÔØ ×ÒÅÍÑ ÎÁ ËÏÍÐÉÌÑÃÉÉ, ÕËÁÚÁ× ÔÁËÖÅ É ÃÅÌØ. îÁÐÒÉÍÅÒ, BUILD_DEPENDS= ${NONEXISTENT}:${PORTSDIR}/graphics/jpeg:extract ×ÓÅÇÄÁ ÂÕÄÅÔ ÐÅÒÅÈÏÄÉÔØ × ËÁÔÁÌÏÇ Ó ÐÏÒÔÏÍ jpeg É ÒÁÓÐÁËÏ×Ù×ÁÔØ ÅÇÏ. úÁÃÉËÌÅÎÎÙÅ ÚÁ×ÉÓÉÍÏÓÔÉ ÆÁÔÁÌØÎÙ îÅ ÐÏÍÅÝÁÊÔÅ ÚÁÃÉËÌÉ×ÁÀÝÉÅÓÑ ÚÁ×ÉÓÉÍÏÓÔÉ × ÄÅÒÅ×Ï ÐÏÒÔÏ×! ôÅÈÎÏÌÏÇÉÑ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÏ× ÎÅ ÚÁÝÉÝÅÎÁ ÏÔ ÚÁÃÉËÌÅÎÎÙÈ ÚÁ×ÉÓÉÍÏÓÔÅÊ. åÓÌÉ ×Ù ÓÏÚÄÁÄÉÔÅ ÔÁËÕÀ, ÔÏ Õ ËÏÇÏ-ÎÉÂÕÄØ É ÇÄÅ-ÎÉÂÕÄØ ÕÓÔÁÎÏ×ËÁ FreeBSD ÂÕÄÅÔ ÎÅÍÅÄÌÅÎÎÏ ÓÌÏÍÁÎÁ, Á Õ ÏÓÔÁÌØÎÙÈ ÓÌÏÍÁÅÔÓÑ ÎÅÓËÏÌØËÏ ÐÏÚÖÅ. üÔÏ ÎÁ ÓÁÍÏÍ ÄÅÌÅ ÏÞÅÎØ ÔÒÕÄÎÏ ÒÁÓÐÏÚÎÁÔØ; ÅÓÌÉ ×Ù ÓÏÍÎÅ×ÁÅÔÅÓØ, ÔÏ ÐÅÒÅÄ ×ÎÅÓÅÎÉÅÍ ÉÚÍÅÎÅÎÉÊ ÐÒÏ×ÅÒØÔÅ, ÞÔÏ ×ÙÐÏÌÎÉÌÉ ÓÌÅÄÕÀÝÅÅ: cd /usr/ports; make index. üÔÏÔ ÐÒÏÃÅÓÓ ÍÏÖÅÔ ÂÙÔØ ÄÏÓÔÁÔÏÞÎÏ ÍÅÄÌÅÎÎÙÍ ÎÁ ÓÔÁÒÙÈ ÍÁÛÉÎÁÈ, ÈÏÔÑ ÍÙ ÓÍÏÖÅÔÅ ÓÐÁÓÔÉ ÂÏÌØÛÏÅ ËÏÌÉÞÅÓÔ×Ï ÌÀÄÅÊ—×ËÌÀÞÁÑ ÓÅÂÑ—ÏÔ ÇÒÑÄÕÝÉÈ ÂÅÄ. á×ÔÏÍÁÔÉÞÅÓËÉÅ ÚÁ×ÉÓÉÍÏÓÔÉ É ÐÒÏÂÌÅÍÙ, ËÏÔÏÒÙÅ ÏÎÉ ×ÙÚÙ×ÁÀÔ úÁ×ÉÓÉÍÏÓÔÉ ÄÏÌÖÎÙ ÂÙÔØ ÕËÁÚÁÎÙ ÌÉÂÏ Ñ×ÎÏ, ÌÉÂÏ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÆÒÅÊÍ×ÏÒËÁ OPTIONS. éÓÐÏÌØÚÏ×ÁÎÉÅ ÐÒÏÞÉÈ ÍÅÔÏÄÏ×, ÔÁËÉÈ ËÁË Á×ÔÏÍÁÔÉÞÅÓËÏÅ ÏÂÎÁÒÕÖÅÎÉÅ ÚÁ×ÉÓÉÍÏÓÔÅÊ, ÕÓÌÏÖÎÑÅÔ ÉÎÄÅËÓÉÒÏ×ÁÎÉÅ, ÞÔÏ ×ÙÚÙ×ÁÅÔ ÐÒÏÂÌÅÍÙ × ÕÐÒÁ×ÌÅÎÉÉ ÐÏÒÔÁÍÉ É ÐÁËÅÔÁÍÉ. îÅËÏÒÒÅËÔÎÏÅ ÏÂßÑ×ÌÅÎÉÅ ÎÅÏÂÑÚÁÔÅÌØÎÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ .include <bsd.port.pre.mk> .if exists(${LOCALBASE}/bin/foo) LIB_DEPENDS= bar:${PORTSDIR}/foo/bar .endif ðÒÏÂÌÅÍÁ Á×ÔÏÍÁÔÉÞÅÓËÏÇÏ ÄÏÂÁ×ÌÅÎÉÑ ÚÁ×ÉÓÉÍÏÓÔÅÊ ÚÁËÌÀÞÁÅÔÓÑ × ÔÏÍ, ÞÔÏ ÆÁÊÌÙ É ÎÁÓÔÒÏÊËÉ ÚÁ ÐÒÅÄÅÌÁÍÉ ÐÏÒÔÁ ÍÏÇÕÔ ÐÒÏÉÚ×ÏÌØÎÏ ÍÅÎÑÔØÓÑ. ðÒÉÍÅÒ: ÐÏÓÌÅ ÐÏÓÔÒÏÅÎÉÑ ÉÎÄÅËÓÁ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÎÁÂÏÒ ÐÏÒÔÏ×. ðÒÉ ÜÔÏÍ ÏÄÉÎ ÉÚ ÎÉÈ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÐÒÏ×ÅÒÑÅÍÙÊ ÆÁÊÌ. îÁ ÜÔÏÍ ÜÔÁÐÅ ÉÎÄÅËÓ ÂÕÄÅÔ ÎÅÐÒÁ×ÉÌØÎÙÍ, ÐÏÔÏÍÕ ÞÔÏ ÕÓÔÁÎÏ×ÌÅÎÎÙÊ ÐÏÒÔ ÎÅÏÖÉÄÁÎÎÏ ÐÏÌÕÞÉÔ ÎÏ×ÕÀ ÚÁ×ÉÓÉÍÏÓÔØ. éÎÄÅËÓ ÍÏÖÅÔ ÂÙÔØ ÐÏ ÐÒÅÖÎÅÍÕ ÎÅÐÒÁ×ÉÌØÎÙÍ ÄÁÖÅ ÐÏÓÌÅ ÅÇÏ ÐÅÒÅÓÔÒÏÅÎÉÑ, × ÓÌÕÞÁÅ ÅÓÌÉ ÄÒÕÇÉÅ ÐÏÒÔÙ ÔÁËÖÅ ÏÐÒÅÄÅÌÑÔ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÚÁ×ÉÓÉÍÏÓÔÉ, ÏÓÎÏ×Ù×ÁÑÓØ ÎÁ ÓÕÝÅÓÔ×Ï×ÁÎÉÉ ÄÒÕÇÉÈ ÆÁÊÌÏ×. ëÏÒÒÅËÔÎÏÅ ÏÂßÑ×ÌÅÎÉÅ ÎÅÏÂÑÚÁÔÅÌØÎÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ OPTIONS_DEFINE= BAR BAR_DESC= Enable bar support .include <bsd.port.options.mk> .if ${PORTOPTIONS:MBAR} LIB_DEPENDS= bar:${PORTSDIR}/foo/bar .endif ðÒÁ×ÉÌØÎÙÍ ÓÐÏÓÏÂÏÍ Ñ×ÌÑÅÔÓÑ ÐÒÏ×ÅÒËÁ ÐÅÒÅÍÅÎÎÙÈ ÐÁÒÁÍÅÔÒÏ×. üÔÏÔ ÓÐÏÓÏ ÎÅ ÐÒÉ×ÏÄÉÔ Ë ÎÅÓÏÏÔ×ÅÔÓÔ×ÉÑÍ × ÉÎÄÅËÓÅ ÎÁÂÏÒÁ ÐÏÒÔÏ×, ÐÏÓËÏÌØËÕ ÐÁÒÁÍÅÔÒÙ ÏÐÒÅÄÅÌÅÎÙ ÄÏ ÐÏÓÔÒÏÅÎÉÑ ÉÎÄÅËÓÁ. ðÒÉ ÜÔÏÍ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÏÓÔÙÅ ÓËÒÉÐÔÙ ÄÌÑ Á×ÔÏÍÁÔÉÚÁÃÉÉ ÐÏÓÔÒÏÅÎÉÑ, ÕÓÔÁÎÏ×ËÉ É ÏÂÎÏ×ÌÅÎÉÑ ÜÔÉÈ ÐÏÒÔÏ× É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÉÍ ÐÁËÅÔÏ×. <makevar>USE_</makevar> É <makevar>WANT_</makevar> ðÅÒÅÍÅÎÎÙÅ USE_ ÚÁÄÁÀÔÓÑ ÍÅÊÎÔÅÊÎÅÒÏÍ ÐÏÒÔÁ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ, ÏÔ ËÏÔÏÒÏÇÏ ÜÔÏÔ ÐÏÒÔ ÚÁ×ÉÓÉÔ. ðÏÒÔ, ÄÌÑ ËÏÔÏÒÏÇÏ ÎÕÖÅÎ Firefox, ÕËÁÖÅÔ USE_FIREFOX= yes îÅËÏÔÏÒÙÅ ÐÅÒÅÍÅÎÎÙÅ USE_ ÍÏÇÕÔ ÐÒÉÎÉÍÁÔØ ÎÏÍÅÒÁ ×ÅÒÓÉÊ ÉÌÉ ÄÒÕÇÉÅ ÐÁÒÁÍÅÔÒÙ. îÁÐÒÉÍÅÒ, ÐÏÒÔ, ËÏÔÏÒÙÊ ÔÒÅÂÕÅÔ Apache 2.2, ÕËÁÖÅÔ USE_APACHE= 22 ÷ ÎÅËÏÔÏÒÙÈ ÓÌÕÞÁÑÈ ÄÌÑ ÂÏÌØÛÅÇÏ ËÏÎÔÒÏÌÑ ÎÁÄ ÚÁ×ÉÓÉÍÏÓÔÑÍÉ ÉÓÐÏÌØÚÕÀÔÓÑ ÐÅÒÅÍÅÎÎÙÅ WANT_, ËÏÔÏÒÙÅ ÐÏÚ×ÏÌÑÀÔ ÕËÁÚÙ×ÁÔØ ÔÒÅÂÏ×ÁÎÉÑ × ÂÏÌÅÅ ÔÏÞÎÏÊ ÆÏÒÍÅ. îÁÐÒÉÍÅÒ, ×ÚÇÌÑÎÉÔÅ ÎÁ ÐÏÒÔ mail/squirrelmail. üÔÏÍÕ ÐÏÒÔÕ ÎÕÖÎÙ ÎÅÓËÏÌØËÏ ÍÏÄÕÌÅÊ PHP, ËÏÔÏÒÙÅ ÐÅÒÅÞÉÓÌÅÎÙ × ÐÅÒÅÍÅÎÎÏÊ USE_PHP: USE_PHP= session mhash gettext mbstring pcre openssl xml üÔÉ ÍÏÄÕÌÉ ÄÏÓÔÕÐÎÙ × ×ÅÒÓÉÑÈ CLI É web, ÐÏÜÔÏÍÕ ×ÅÒÓÉÑ web ×ÙÂÒÁÎÁ Ó ÐÅÒÅÍÅÎÎÏÊ WANT_: WANT_PHP_WEB= yes éÍÅÀÝÉÅÓÑ ÐÅÒÅÍÅÎÎÙÅ USE_ É WANT_ ÏÐÒÅÄÅÌÅÎÙ × ÆÁÊÌÁÈ /usr/ports/Mk.
<makevar>MASTERDIR</makevar> åÓÌÉ ×ÁÛÅÍÕ ÐÏÒÔÕ ÔÒÅÂÕÅÔÓÑ ÐÏÓÔÒÏÅÎÉÅ ÄÏ×ÏÌØÎÏ ÒÁÚÌÉÞÁÀÝÉÈÓÑ ×ÅÒÓÉÊ ÐÁËÅÔÏ× ÞÅÒÅÚ ÐÅÒÅÍÅÎÎÕÀ (ÚÁÄÁÀÝÕÀ, ÎÁÐÒÉÍÅÒ, ÒÁÚÒÅÛÅÎÉÅ, ÉÌÉ ÒÁÚÍÅÒ ÂÕÍÁÇÉ), ËÏÔÏÒÁÑ ÐÒÉÎÉÍÁÅÔ ÒÁÚÌÉÞÎÙÅ ÚÎÁÞÅÎÉÑ, ÓÏÚÄÁÊÔÅ ÄÌÑ ËÁÖÄÏÇÏ ÐÁËÅÔÁ ÏÔÄÅÌØÎÙÊ ÐÏÄËÁÔÁÌÏÇ, ÞÔÏÂÙ ÐÏÌØÚÏ×ÁÔÅÌÑÍ ÂÙÌÏ ÌÅÇÞÅ ÏÐÒÅÄÅÌÉÔØ, ËÁËÉÍ ÐÁËÅÔÏÍ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ, ÎÏ ÐÏÐÒÏÂÕÊÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÏ×ÍÅÓÔÎÏ ÍÅÖÄÕ ÐÏÒÔÁÍÉ ËÁË ÍÏÖÎÏ ÂÏÌØÛÅ ÆÁÊÌÏ×. ÷ ÔÉÐÉÞÎÏÍ ÓÌÕÞÁÅ ×ÁÍ ÐÏÔÒÅÂÕÀÔÓÑ ÔÏÌØËÏ ÏÞÅÎØ ËÏÒÏÔËÉÅ ÆÁÊÌÙ Makefile ×Ï ×ÓÅÈ ËÁÔÁÌÏÇÁÈ, ËÒÏÍÅ ÏÄÎÏÇÏ, ÅÓÌÉ ×Ù ÂÕÄÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÅÒÅÍÅÎÎÙÅ Ó ÕÍÏÍ. ÷ ÏÔÄÅÌØÎÙÈ ÆÁÊÌÁÈ Makefile ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÅÒÅÍÅÎÎÕÀ MASTERDIR ÄÌÑ ÕËÁÚÁÎÉÑ ËÁÔÁÌÏÇÁ, × ËÏÔÏÒÏÍ ÎÁÈÏÄÑÔÓÑ ×ÓÅ ÏÓÔÁÌØÎÙÅ ÆÁÊÌÙ. ôÁËÖÅ ÉÓÐÏÌØÚÕÊÔÅ ÐÅÒÅÍÅÎÎÕÀ ËÁË ÞÁÓÔØ PKGNAMESUFFIX, ÞÔÏÂÙ ÐÁËÅÔÙ ÉÍÅÌÉ ÒÁÚÎÙÅ ÉÍÅÎÁ. ðÒÏÄÅÍÏÎÓÔÒÉÒÕÅÍ ÜÔÏ ÎÁ ÐÒÉÍÅÒÅ. ÷ÏÔ ÞÁÓÔØ ÆÁÊÌÁ japanese/xdvi300/Makefile: PORTNAME= xdvi PORTVERSION= 17 PKGNAMEPREFIX= ja- PKGNAMESUFFIX= ${RESOLUTION} : # default RESOLUTION?= 300 .if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \ ${RESOLUTION} != 300 && ${RESOLUTION} != 400 @${ECHO_MSG} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\"" @${ECHO_MSG} "Possible values are: 118, 240, 300 (default) and 400." @${FALSE} .endif ðÏÒÔ japanese/xdvi300 ÓÏÄÅÒÖÉÔ ÔÁËÖÅ ×ÓÅ ÏÂÙÞÎÙÅ ÐÁÔÞÉ, ÆÁÊÌÙ ÄÌÑ ÐÁËÅÔÁ É ÔÁË ÄÁÌÅÅ. åÓÌÉ ×Ù ××ÅÄÅÔÅ ÚÄÅÓØ ËÏÍÁÎÄÕ make, ÏÎÁ ×ÏÚØÍÅÔ × ËÁÞÅÓÔ×Å ÒÁÚÒÅÛÅÎÉÑ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ (300) É ÐÏÓÔÒÏÉÔ ÐÏÒÔ ÏÂÙÞÎÙÍ ÏÂÒÁÚÏÍ. äÌÑ ÄÒÕÇÏÇÏ ÒÁÚÒÅÛÅÎÉÑ ÐÒÉ×ÅÄÅÍ ÐÏÌÎÙÊ xdvi118/Makefile: RESOLUTION= 118 MASTERDIR= ${.CURDIR}/../xdvi300 .include "${MASTERDIR}/Makefile" (xdvi240/Makefile É xdvi400/Makefile ÐÏÈÏÖÉ). úÁÄÁÎÉÅ MASTERDIR ÇÏ×ÏÒÉÔ bsd.port.mk, ÞÔÏ ÏÂÙÞÎÙÊ ÎÁÂÏÒ ÐÏÄËÁÔÁÌÏÇÏ× ÔÉÐÁ FILESDIR É SCRIPTDIR ÎÁÈÏÄÉÔÓÑ × ËÁÔÁÌÏÇÅ xdvi300. óÔÒÏÞËÁ RESOLUTION=118 ÐÅÒÅÏÐÒÅÄÅÌÑÔ ÓÔÒÏËÕ RESOLUTION=300 × ÆÁÊÌÅ xdvi300/Makefile É ÐÏÒÔ ÂÕÄÅÔ ÐÏÓÔÒÏÅÎ Ó ÒÁÚÒÅÛÅÎÉÅÍ 118. óÔÒÁÎÉÃÙ óÐÒÁ×ÏÞÎÉËÁ ðÅÒÅÍÅÎÎÙÅ MAN[1-9LN] Á×ÔÏÍÁÔÉÞÅÓËÉ ÄÏÂÁ×ÑÔ ÌÀÂÙÅ ÓÔÒÁÎÉÃÙ óÐÒÁ×ÏÞÎÉËÁ Ë ÆÁÊÌÕ pkg-plist (ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ×ÁÍ ÎÅ ÎÕÖÎÏ ÕËÁÚÙ×ÁÔØ ÓÔÒÁÎÉÃÙ óÐÒÁ×ÏÞÎÉËÁ × ÆÁÊÌÅ pkg-plist—ÏÂÒÁÔÉÔÅÓØ Ë ÇÌÁ×Å Ï ÇÅÎÅÒÁÃÉÉ ÆÁÊÌÁ PLIST ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÊ ÉÎÆÏÒÍÁÃÉÉ). üÔÏ ÔÁËÖÅ ÐÏÚ×ÏÌÑÅÔ ÎÁ ÜÔÁÐÅ ÕÓÔÁÎÏ×ËÉ Á×ÔÏÍÁÔÉÞÅÓËÉ ÕÐÁËÏ×Ù×ÁÔØ É ÒÁÓÐÁËÏ×Ù×ÁÔØ ÓÔÒÁÎÉÃÙ óÐÒÁ×ÏÞÎÉËÁ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÚÎÁÞÅÎÉÑ ÐÅÒÅÍÅÎÎÏÊ NO_MANCOMPRESS × ÆÁÊÌÅ /etc/make.conf. åÓÌÉ ×ÁÛ ÐÏÒÔ ÐÙÔÁÅÔÓÑ ÚÁÄÁÔØ ÎÅÓËÏÌØËÏ ÉÍÅÎ ÄÌÑ ÓÔÒÁÎÉà óÐÒÁ×ÏÞÎÉËÁ ÐÒÉ ÐÏÍÏÝÉ ÓÉÍ×ÏÌÉÞÅÓËÉÈ ÉÌÉ ÖÅÓÔËÉÈ ÓÓÙÌÏË, ÔÏ ×Ù ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÅÒÅÍÅÎÎÕÀ MLINKS, ÞÔÏÂÙ ÕËÁÚÁÔØ ÎÁ ÜÔÏ. óÓÙÌËÁ, ÕÓÔÁÎÏ×ÌÅÎÎÁÑ ×ÁÛÉÍ ÐÏÒÔÏÍ, ÂÕÄÅÔ ÕÎÉÞÔÏÖÅÎÁ É ÓÏÚÄÁÎÁ ÚÁÎÏ×Ï ÓÃÅÎÁÒÉÅÍ bsd.port.mk ÄÌÑ ÐÒÏ×ÅÒËÉ ÔÏÇÏ, ÞÔÏ ÏÎÁ ÕËÁÚÙ×ÁÅÔ ÎÁ ÐÒÁ×ÉÌØÎÙÊ ÆÁÊÌ. ìÀÂÙÅ ÓÔÒÁÎÉÃÙ óÐÒÁ×ÏÞÎÉËÁ, ÐÅÒÅÞÉÓÌÅÎÎÙÅ × ÐÅÒÅÍÅÎÎÏÊ MLINKS, ÎÅ ÄÏÌÖÎÙ ÆÉÇÕÒÉÒÏ×ÁÔØ × ÆÁÊÌÅ pkg-plist. äÌÑ ÕËÁÚÁÎÉÑ ÔÏÇÏ, ÞÔÏ ÓÔÒÁÎÉÃÙ óÐÒÁ×ÏÞÎÉËÁ ÎÕÖÎÏ ÓÖÉÍÁÔØ ×Ï ×ÒÅÍÑ ÕÓÔÁÎÏ×ËÉ, ÉÓÐÏÌØÚÕÊÔÅ ÐÅÒÅÍÅÎÎÕÀ MANCOMPRESSED. üÔÁ ÐÅÒÅÍÅÎÎÁÑ ÍÏÖÅÔ ÐÒÉÎÉÍÁÔØ ÔÒÉ ÚÎÁÞÅÎÉÑ - yes, no É maybe. yes ÏÚÎÁÞÁÅÔ, ÞÔÏ ÓÔÒÁÎÉÃÙ óÐÒÁ×ÏÞÎÉËÁ ÕÓÔÁÎÁ×ÌÉ×ÁÀÔÓÑ ÕÖÅ ÓÖÁÔÙÍÉ, no ÏÚÎÁÞÁÅÔ, ÞÔÏ ÏÎÉ ÎÅ ÓÖÉÍÁÀÔÓÑ É maybe ÏÚÎÁÞÁÅÔ, ÞÔÏ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÐÒÉÎÉÍÁÅÔ ×Ï ×ÎÉÍÁÎÉÅ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ NO_MANCOMPRESS, ÔÁË ÞÔÏ ÓÃÅÎÁÒÉÀ bsd.port.mk ÎÉÞÅÇÏ ÄÏÐÏÌÎÉÔÅÌØÎÏ ÄÅÌÁÔØ ÎÅ ÎÕÖÎÏ. úÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ MANCOMPRESSED Á×ÔÏÍÁÔÉÞÅÓËÉ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × yes, ÅÓÌÉ ÐÅÒÅÍÅÎÎÁÑ USE_IMAKE ÚÁÄÁÎÁ, Á NO_INSTALL_MANPAGES ÎÅÔ, É × ÚÎÁÞÅÎÉÅ no × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ. ÷ÁÍ ÎÅ ÎÕÖÎÏ ÚÁÄÁ×ÁÔØ ÅÅ Ñ×ÎÏ, ÅÓÌÉ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÐÏÄÈÏÄÉÔ ×ÁÛÅÍÕ ÐÏÒÔÕ. åÓÌÉ ×ÁÛ ÐÏÒÔ ÏÐÒÅÄÅÌÑÅÔ ËÏÒÎÅÍ ÄÌÑ ÆÁÊÌÏ× óÐÒÁ×ÏÞÎÉËÁ ËÁÔÁÌÏÇ, ÏÔÌÉÞÎÙÊ ÏÔ PREFIX, ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÅÒÅÍÅÎÎÕÀ MANPREFIX, ÞÔÏÂÙ ÚÁÄÁÔØ ÅÇÏ Ñ×ÎÏ. ëÒÏÍÅ ÔÏÇÏ, ÅÓÌÉ ÓÔÒÁÎÉÃÙ ÔÏÌØËÏ ÎÅËÏÔÏÒÙÈ ÒÁÚÄÅÌÏ× ÐÏÍÅÝÁÀÔÓÑ × ÎÅÓÔÁÎÄÁÒÔÎÏÅ ÍÅÓÔÏ, ÎÁÐÒÉÍÅÒ, × ÓÌÕÞÁÅ ÐÏÒÔÏ× ÍÏÄÕÌÅÊ ÑÚÙËÁ perl Perl, ×Ù ÍÏÖÅÔÅ ÕÓÔÁÎÏ×ÉÔØ ÍÁÒÛÒÕÔÙ Ë ÓÐÒÁ×ÏÞÎÙÍ ÓÔÒÁÎÉÃÁÍ ÉÎÄÉ×ÉÄÕÁÌØÎÏ, ÐÒÉ ÐÏÍÏÝÉ MANsectPREFIX (ÇÄÅ sect ÐÒÉÎÉÍÁÅÔ ÚÎÁÞÅÎÉÑ 1-9, L ÉÌÉ N). åÓÌÉ ÓÔÒÁÎÉÃÙ óÐÒÁ×ÏÞÎÉËÁ ÐÏÍÅÝÁÀÔÓÑ × ÐÏÄËÁÔÁÌÏÇÉ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÎÅËÏÔÏÒÏÍÕ ÑÚÙËÕ, ÔÏ ÚÁÄÁÊÔÅ ÎÁÚ×ÁÎÉÅ ÑÚÙËÁ ÑÚÙËÁ × ÐÅÒÅÍÅÎÎÏÊ MANLANG. úÎÁÞÅÎÉÅ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÐÏ ÕÍÏÌÞÁÎÉÀ ÒÁ×ÎÏ "" (ÔÏ ÅÓÔØ ÔÏÌØËÏ ÁÎÇÌÉÊÓËÉÊ ÑÚÙË). ÷ÏÔ ÐÒÉÍÅÒ, × ËÏÔÏÒÏÍ ÐÒÉ×ÏÄÑÔÓÑ ×ÓÅ ÓÌÕÞÁÉ. MAN1= foo.1 MAN3= bar.3 MAN4= baz.4 MLINKS= foo.1 alt-name.8 MANLANG= "" ja MAN3PREFIX= ${PREFIX}/share/foobar MANCOMPRESSED= yes úÄÅÓØ ÕËÁÚÁÎÏ, ÞÔÏ ÜÔÏÔ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ 6 ÆÁÊÌÏ×: ${MANPREFIX}/man/man1/foo.1.gz ${MANPREFIX}/man/ja/man1/foo.1.gz ${PREFIX}/share/foobar/man/man3/bar.3.gz ${PREFIX}/share/foobar/man/ja/man3/bar.3.gz ${MANPREFIX}/man/man4/baz.4.gz ${MANPREFIX}/man/ja/man4/baz.4.gz ëÒÏÍÅ ÔÏÇÏ, ÆÁÊÌ ${MANPREFIX}/man/man8/alt-name.8.gz ÍÏÖÅÔ ÂÙÔØ, Á ÍÏÖÅÔ É ÎÅ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎ ×ÁÛÉÍ ÐÏÒÔÏÍ. ÷ ÌÀÂÏÍ ÓÌÕÞÁÅ ÂÕÄÅÔ ÓÏÚÄÁÎÁ ÓÉÍ×ÏÌÉÞÅÓËÁÑ ÓÓÙÌËÁ ÄÌÑ ÏÂßÅÄÉÎÅÎÉÑ ÓÔÒÁÎÉà óÐÒÁ×ÏÞÎÉËÁ foo(1) É alt-name(8). åÓÌÉ ÐÅÒÅ×ÅÄÅÎÁ ÔÏÌØËÏ ÞÁÓÔØ ÓÔÒÁÎÉà ÓÐÒÁ×ÏÞÎÉËÁ, ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÎÅËÏÔÏÒÙÅ ÐÅÒÅÍÅÎÎÙÅ, ÓÏÚÄÁÎÎÙÅ ÄÉÎÁÍÉÞÅÓËÉ ÉÚ ÓÏÄÅÒÖÉÍÏÇÏ MANLANG: MANLANG= "" de ja MAN1= foo.1 MAN1_EN= bar.1 MAN3_DE= baz.3 þÔÏ ÐÅÒÅ×ÏÄÉÔÓÑ × ÔÁËÏÊ ÓÐÉÓÏË ÆÁÊÌÏ×: ${MANPREFIX}/man/man1/foo.1.gz ${MANPREFIX}/man/de/man1/foo.1.gz ${MANPREFIX}/man/ja/man1/foo.1.gz ${MANPREFIX}/man/man1/bar.1.gz ${MANPREFIX}/man/de/man3/baz.3.gz æÁÊÌÙ × ÆÏÒÍÁÔÅ info åÓÌÉ × ×ÁÛÅÍ ÐÁËÅÔÅ ÎÕÖÎÁ ÕÓÔÁÎÏ×ËÁ ÆÁÊÌÏ× GNU info, ÏÎÉ ÄÏÌÖÎÙ ÂÙÔØ ÐÅÒÅÞÉÓÌÅÎÙ × ÐÅÒÅÍÅÎÎÏÊ INFO (ÂÅÚ ÏËÏÎÞÁÎÉÑ .info), ÐÏ ÚÁÐÉÓÉ ÎÁ ÄÏËÕÍÅÎÔ. ðÒÅÄÐÏÌÁÇÁÅÔÓÑ, ÞÔÏ ÜÔÉ ÆÁÊÌÙ ÕÓÔÁÎÁ×ÌÉ×ÁÀÔÓÑ × PREFIX/INFO_PATH. ÷Ù ÍÏÖÅÔÅ ÉÚÍÅÎÉÔØ INFO_PATH, ÅÓÌÉ ×ÁÛ ÐÁËÅÔ ÉÓÐÏÌØÚÕÅÔ ÄÒÕÇÏÅ ÍÅÓÔÏ ÄÌÑ ÒÁÚÍÅÝÅÎÉÑ. ïÄÎÁËÏ, ÜÔÏ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÄÅÌÁÔØ. üÔÉ ÚÁÐÉÓÉ ×ÓÅÇÏ ÌÉÛØ ÓÏÄÅÒÖÁÔ ÐÕÔØ ÏÔÎÏÓÉÔÅÌØÎÏ PREFIX/INFO_PATH. îÁÐÒÉÍÅÒ, lang/gcc34 ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÆÁÊÌÙ info × PREFIX/INFO_PATH/gcc34, É × INFO ÂÕÄÅÔ ÞÔÏ-ÔÏ ×ÒÏÄÅ ÜÔÏÇÏ: INFO= gcc34/cpp gcc34/cppinternals gcc34/g77 ... ðÅÒÅÄ ÒÅÇÉÓÔÒÁÃÉÅÊ ÐÁËÅÔÁ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ËÏÄ ÕÓÔÁÎÏ×ËÉ/ÕÄÁÌÅÎÉÑ ÂÕÄÅÔ Á×ÔÏÍÁÔÉÞÅÓËÉ ÄÏÂÁ×ÌÅÎ ×Ï ×ÒÅÍÅÎÎÙÊ pkg-plist. ïÐÃÉÉ ÄÌÑ Makefile íÎÏÇÉÅ ÐÒÉÌÏÖÅÎÉÑ ÍÏÇÕÔ ÂÙÔØ ÐÏÓÔÒÏÅÎÙ × ÒÁÚÌÉÞÎÙÈ ËÏÎÆÉÇÕÒÁÃÉÑÈ É Ó ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔØÀ. îÁÐÒÉÍÅÒ, ×ÙÂÏÒ ÅÓÔÅÓÔ×ÅÎÎÏÇÏ (ÞÅÌÏ×ÅÞÅÓËÏÇÏ) ÑÚÙËÁ, GUI ÐÒÏÔÉ× ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ÉÌÉ ÔÉÐÁ ÉÓÐÏÌØÚÕÅÍÏÊ ÂÁÚÙ ÄÁÎÎÙÈ. ðÏÌØÚÏ×ÁÔÅÌÉ ÍÏÇÕÔ ÎÕÖÄÁÔØÓÑ × ÒÁÚÌÉÞÎÙÈ ËÏÎÆÉÇÕÒÁÃÉÑÈ, ÏÔÌÉÞÎÙÈ ÏÔ ÉÓÐÏÌØÚÕÅÍÏÊ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÐÏÜÔÏÍÕ × ÓÉÓÔÅÍÅ ÐÏÒÔÏ× ÐÒÅÄÕÓÍÏÔÒÅÎ ÍÅÈÁÎÉÚÍ, ÐÏÚ×ÏÌÑÀÝÉÊ Á×ÔÏÒÕ ÐÏÒÔÁ ÕÐÒÁ×ÌÑÔØ ÓÂÏÒËÏÊ ÔÏÇÏ ÉÌÉ ÉÎÏÇÏ ×ÁÒÉÁÎÔÁ ËÏÎÆÉÇÕÒÁÃÉÉ. ðÒÁ×ÉÌØÎÁÑ ÐÏÄÄÅÒÖËÁ ÜÔÉÈ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ ÐÁÒÁÍÅÔÒÏ× ÏÂÌÅÇÞÁÅÔ ÐÏÌØÚÏ×ÁÔÅÌÑÍ ÖÉÚÎØ É ÄÁ£Ô Ä×Á ÉÌÉ ÂÏÌÅÅ ÐÏÒÔÁ ÐÏ ÃÅÎÅ ÏÄÎÏÇÏ. Knobs <makevar>WITH_<replaceable>*</replaceable></makevar> É <makevar>WITHOUT_<replaceable>*</replaceable></makevar> üÔÉ ÐÅÒÅÍÅÎÎÙÅ ÐÒÅÄÎÁÚÎÁÞÅÎÙ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÓÉÓÔÅÍÎÙÍ ÁÄÍÉÎÉÓÔÒÁÔÏÒÏÍ. íÎÏÇÉÅ ÉÚ ÎÉÈ ÓÔÁÎÄÁÒÔÉÚÏ×ÁÎÙ × ÆÁÊÌÅ ports/KNOBS. ðÒÉ ÓÏÚÄÁÎÉÉ ÐÏÒÔÁ ÎÅ ÄÁ×ÁÊÔÅ ÉÍÑ ÄÌÑ knob, ÓÐÅÃÉÆÉÞÎÏÅ ÄÌÑ ÄÁÎÎÏÇÏ ÐÒÉÌÏÖÅÎÉÑ. îÁ ÐÒÉÍÅÒÅ ÐÏÒÔÁ Avahi, ÉÓÐÏÌØÚÕÊÔÅ WITHOUT_MDNS ×ÍÅÓÔÏ WITHOUT_AVAHI_MDNS. îÅ ÓÔÏÉÔ ÒÁÓÓÞÉÔÙ×ÁÔØ, ÞÔÏ WITH_* ÏÂÑÚÁÔÅÌØÎÏ ÉÍÅÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÕÀ ÐÅÒÅÍÅÎÎÕÀ WITHOUT_*, É ÎÁÏÂÏÒÏÔ. ÷ ÏÂÝÅÍ ÓÌÕÞÁÅ, ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ. åÓÌÉ ÏÂÒÁÔÎÏÅ ÎÅ ÕËÁÚÁÎÏ, ÔÏ ÐÒÏ×ÅÒÑÅÔÓÑ ÔÏÌØËÏ ÆÁËÔ ÕÓÔÁÎÏ×ËÉ ÓÁÍÉÈ ÐÅÒÅÍÅÎÎÙÈ, ÎÏ ÎÅ ÉÈ ËÏÎËÒÅÔÎÏÅ ÚÎÁÞÅÎÉÅ ÔÉÐÁ YES ÉÌÉ NO. ïÓÎÏ×ÎÙÅ ÐÅÒÅÍÅÎÎÙÅ <makevar>WITH_<replaceable>*</replaceable></makevar> É <makevar>WITHOUT_<replaceable>*</replaceable></makevar> ðÅÒÅÍÅÎÎÁÑ úÎÁÞÅÎÉÑ WITHOUT_NLS åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÁ, ÕËÁÚÙ×ÁÅÔ ÎÅ ÚÁÄÅÊÓÔ×Ï×ÁÔØ ÉÎÔÅÒÎÁÃÉÏÎÁÌÉÚÁÃÉÀ, ÞÔÏ ÍÏÖÅÔ ÕÓËÏÒÉÔØ ËÏÍÐÉÌÑÃÉÀ. ðÏ ÕÍÏÌÞÁÎÉÀ, ÉÎÔÅÒÎÁÃÉÏÎÁÌÉÚÁÃÉÑ ÉÓÐÏÌØÚÕÅÔÓÑ. WITH_OPENSSL_BASE éÓÐÏÌØÚÏ×ÁÔØ ×ÅÒÓÉÀ OpenSSL ÉÚ ÂÁÚÏ×ÏÊ ÓÉÓÔÅÍÙ. WITH_OPENSSL_PORT õÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÅÒÓÉÀ OpenSSL ÉÚ security/openssl, ÄÁÖÅ ÅÓÌÉ × ÂÁÚÏ×ÏÊ ÓÉÓÔÅÍÅ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ. WITHOUT_X11 ðÏÒÔÙ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÂÙÔØ ÓÏÂÒÁÎÙ Ó ÐÏÄÄÅÒÖËÏÊ ÉÌÉ ÂÅÚ ÐÏÄÄÅÒÖËÉ X, ÏÂÙÞÎÏ ÓÏÂÉÒÁÀÔÓÑ Ó ÐÏÄÄÅÒÖËÏÊ X. åÓÌÉ ÜÔÁ ÐÅÒÅÍÅÎÎÁÑ ÏÐÒÅÄÅÌÅÎÁ, ÔÏ ÂÕÄÅÔ ÓÏÂÒÁÎÁ ×ÅÒÓÉÑ ÂÅÚ ÐÏÄÄÅÒÖËÉ X.
îÁÉÍÅÎÏ×ÁÎÉÅ KNOBS ðÏÒÔÅÒÙ ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÁË ÎÁÚÙ×ÁÅÍÙÅ knobs ÄÌÑ ÐÏÍÏÝÉ ËÏÎÅÞÎÙÍ ÐÏÌØÚÏ×ÁÔÅÌÑÍ É ÄÌÑ ÐÏÄÄÅÒÖÁÎÉÑ ËÏÌÉÞÅÓÔ×Á ÎÁÉÍÅÎÏ×ÁÎÉÊ knobs × ÎÅÂÏÌØÛÏÍ ËÏÌÉÞÅÓÔ×Å. óÐÉÓÏË ÐÏÐÕÌÑÒÎÙÈ ÎÁÚ×ÁÎÉÊ knobs ÍÏÖÎÏ ÎÁÊÔÉ × ÆÁÊÌÅ KNOBS îÁÚ×ÁÎÉÑ knobs ÄÏÌÖÎÙ ÏÔÒÁÖÁÔØ, ÞÔÏ ÜÔÏ ÔÁËÏÅ É ÞÔÏ ×ÙÐÏÌÎÑÅÔ. åÓÌÉ Õ ÐÏÒÔÁ ÉÍÅÅÔÓÑ ÂÉÂÌÉÏÔÅÞÎÙÊ ÐÒÅÆÉËÓ × PORTNAME, ÔÏ ÏÎ ÄÏÌÖÅÎ ÐÒÉÓÕÔÓÔ×Ï×ÁÔØ × ÎÁÚ×ÁÎÉÉ knobs.
<makevar>OPTIONS</makevar> ïÐÉÓÁÎÉÅ ðÒÉ ÕÓÔÁÎÏ×ËÅ ÐÏÒÔÁ ÐÅÒÅÍÅÎÎÙÅ OPTIONS_* ÐÒÅÄÏÓÔÁ×ÌÑÀÔ ÐÏÌØÚÏ×ÁÔÅÌÀ ÏËÎÏ ÄÉÁÌÏÇÁ Ó ÏÔÏÂÒÁÖÅÎÉÅÍ ÄÏÓÔÕÐÎÙÈ ÐÁÒÁÍÅÔÒÏ×, Ó ÚÁÐÉÓØÀ ×ÙÂÒÁÎÎÙÈ ÐÁÒÁÍÅÔÒÏ× × ÆÁÊÌ /var/db/ports/${UNIQUENAME}/options. üÔÉ ÏÐÃÉÉ ÐÏ×ÔÏÒÎÏ ÉÓÐÏÌØÚÕÀÔÓÑ ÐÒÉ ÓÌÅÄÕÀÝÅÍ ÐÏÓÔÒÏÅÎÉÉ ÐÏÒÔÁ. ëÏÇÄÁ ÐÏÌØÚÏ×ÁÔÅÌØ ÚÁÐÕÓËÁÅÔ make config (ÉÌÉ ÚÁÐÕÓËÁÅÔ ×ÐÅÒ×ÙÅ make build), ÉÎÆÒÁÓÔÒÕËÔÕÒÁ ×ÙÐÏÌÎÑÅÔ ÐÒÏ×ÅÒËÕ ÓÕÝÅÓÔ×Ï×ÁÎÉÑ ÆÁÊÌÁ /var/db/ports/${UNIQUENAME}/options. åÓÌÉ ÜÔÏÔ ÆÁÊÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ, ÔÏ ÉÓÐÏÌØÚÕÀÔÓÑ ÚÎÁÞÅÎÉÑ OPTIONS_* É ÏÔÏÂÒÁÖÁÅÔÓÑ ÄÉÁÌÏÇÏ×ÏÅ ÏËÎÏ, × ËÏÔÏÒÏÍ ÜÔÉ ÐÁÒÁÍÅÔÒÙ ÍÏÖÎÏ ×ËÌÀÞÉÔØ ÉÌÉ ×ÙËÌÀÞÉÔØ. úÁÔÅÍ ÓÏÈÒÁÎÑÅÔÓÑ ÆÁÊÌ ÏÐÃÉÊ options, É ×ÙÂÒÁÎÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÉÓÐÏÌØÚÕÀÔÓÑ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ ÐÏÒÔÁ. åÓÌÉ ÎÏ×ÁÑ ×ÅÒÓÉÑ ÐÏÒÔÁ ÄÏÂÁ×ÌÑÅÔ ÎÏ×ÙÅ ÚÎÁÞÅÎÉÑ OPTIONS, ÔÏ ÐÏÌØÚÏ×ÁÔÅÌÀ ÂÕÄÅÔ ÐÒÅÄÓÔÁ×ÌÅÎÏ ÏËÎÏ ÄÉÁÌÏÇÁ Ó ÓÏÈÒÁÎÅÎÎÙÍÉ ÚÁÐÏÌÎÅÎÎÙÍÉ ÚÎÁÞÅÎÉÑÍÉ ÓÔÁÒÙÈ OPTIONS. make showconfig ÏÔÏÂÒÁÖÁÅÔ ÓÏÈÒÁÎÅÎÎÕÀ ËÏÎÆÉÇÕÒÁÃÉÀ. äÌÑ ÕÄÁÌÅÎÉÑ ÓÏÈÒÁÎÅÎÎÏÊ ËÏÎÆÉÇÕÒÁÃÉÉ ÉÓÐÏÌØÚÕÊÔÅ make rmconfig. óÉÎÔÁËÓÉÓ OPTIONS_DEFINE ÓÏÄÅÒÖÉÔ ÓÐÉÓÏË ÉÓÐÏÌØÚÕÅÍÙÈ OPTIONS. ïÎÉ ÎÅÚÁ×ÉÓÉÍÙ ÄÒÕÇ ÏÔ ÄÒÕÇÁ É ÎÅ ÓÇÒÕÐÐÉÒÏ×ÁÎÙ: OPTIONS_DEFINE= OPT1 OPT2 äÁÌÅÅ ÐÏÓÌÅ ÏÐÒÅÄÅÌÅÎÉÑ ÓÌÅÄÕÅÔ ÏÐÉÓÁÎÉÅ OPTIONS (ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍ, ÎÏ ÎÁÓÔÏÑÔÅÌØÎÏ ÒÅËÏÍÅÎÄÕÅÔÓÑ): OPT1_DESC= Describe OPT1 OPT2_DESC= Describe OPT2 OPT3_DESC= Describe OPT3 OPT4_DESC= Describe OPT4 OPT5_DESC= Describe OPT5 OPT6_DESC= Describe OPT6 ports/Mk/bsd.options.desc.mk ÓÏÄÅÒÖÉÔ ÏÐÉÓÁÎÉÅ ÍÎÏÖÅÓÔ×Á ÎÁÉÂÏÌÅÅ ÉÓÐÏÌØÚÕÅÍÙÈ OPTIONS; ÐÅÒÅÏÐÒÅÄÅÌÑÔØ ÉÈ, ËÁË ÐÒÁ×ÉÌÏ, ÎÅ ÎÕÖÎÏ. ðÒÉ ÏÐÉÓÁÎÉÉ ÐÁÒÁÍÅÔÒÏ× ÓÔÁÒÁÊÔÅÓØ ÐÒÅÄÓÔÁ×ÉÔØ ÓÅÂÑ ÎÁ ÍÅÓÔÅ ÐÏÌØÚÏ×ÁÔÅÌÑ: þÔÏ ÜÔÏ ÄÅÌÁÅÔ? É äÌÑ ÞÅÇÏ ÂÙ Ñ ÚÁÈÏÔÅÌ ×ËÌÀÞÉÔØ ÜÔÏ? îÅ ÄÅÌÁÊÔÅ ÐÒÏÓÔÏÅ ÐÏ×ÔÏÒÅÎÉÅ ÎÁÚ×ÁÎÉÑ. îÁÐÒÉÍÅÒ, ÏÐÉÓÁÎÉÅ ÐÁÒÁÍÅÔÒÁ NLS ËÁË include NLS support (×ËÌÀÞÉÔØ ÐÏÄÄÅÒÖËÕ NLS) ÎÅ ÐÏÍÏÖÅÔ ÐÏÌØÚÏ×ÁÔÅÌÀ, ËÏÔÏÒÙÊ ÕÖÅ ×ÉÄÉÔ ÎÁÚ×ÁÎÉÅ ÐÁÒÁÍÅÔÒÁ, ÎÏ ÍÏÖÅÔ ÎÅ ÚÎÁÔØ, ÞÔÏ ÜÔÏ ÏÚÎÁÞÁÅÔ. ïÐÉÓÁ× ÅÇÏ ËÁË Native Language Support via gettext utilities (ðÏÄÄÅÒÖËÁ ÎÁÃÉÏÎÁÌØÎÏÇÏ ÑÚÙËÁ ÞÅÒÅÚ ÕÔÉÌÉÔÙ gettext), ×Ù ÐÏÍÏÖÅÔÅ ÐÏÌØÚÏ×ÁÔÅÌÀ ÇÏÒÁÚÄÏ ÂÏÌØÛÅ. OPTIONS ÍÏÖÎÏ ÇÒÕÐÐÉÒÏ×ÁÔØ × ×ÉÄÅ ÐÅÒÅËÌÀÞÁÔÅÌÅÊ, ÄÌÑ ËÏÔÏÒÙÈ ÒÁÚÒÅÛÅÎ ×ÙÂÏÒ ÅÄÉÎÓÔ×ÅÎÎÏÇÏ ×ÁÒÉÁÎÔÁ × ËÁÖÄÏÊ ÇÒÕÐÐÅ: OPTIONS_SINGLE= SG1 OPTIONS_SINGLE_SG1= OPT3 OPT4 OPTIONS ÔÁËÖÅ ÍÏÖÎÏ ÇÒÕÐÐÉÒÏ×ÁÔØ × ×ÉÄÅ ÓÐÉÓËÏ× ÓÏ ÍÎÏÖÅÓÔ×ÅÎÎÙÍ ×ÙÂÏÒÏÍ, ÄÌÑ ËÏÔÏÒÙÈ ÏÂÑÚÁÎ ÂÙÔØ ×ËÌÀÞÅÎ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÉÎ ÉÚ ÐÁÒÁÍÅÔÒÏ×: OPTIONS_MULTI= MG1 OPTIONS_MULTI_MG1= OPT5 OPT6 OPTIONS_MULTI É OPTIONS_SINGLE ÔÁËÖÅ ÄÏÐÕÓËÁÀÔ ÏÔÓÕÔÓÔ×ÉÅ ×ÙÂÏÒÁ ÐÕÔ£Í ×ËÌÀÞÅÎÉÑ ÇÒÕÐÐÙ × OPTIONS_DEFINE: OPTIONS_DEFINE= MG1 OPTIONS_MULTI= MG1 OPTIONS_MULTI_MG1= OPT5 OPT6 ðÏÓÌÅ ÜÔÏÇÏ ÇÒÕÐÐÁ ÔÒÅÂÕÅÔ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÉÎ OPTION ÉÚ MG1, ÔÏÌØËÏ ÅÓÌÉ ×ÙÂÒÁÎ ÎÏ×ÙÊ MG1 OPTION. òÅËÏÍÅÎÄÕÅÔÓÑ ÐÏÜËÓÐÅÒÉÍÅÎÔÉÒÏ×ÁÔØ, ÞÔÏÂÙ ÕÌÕÞÛÉÔØ ÐÏÎÉÍÁÎÉÅ. ðÏ ÕÍÏÌÞÁÎÉÀ OPTIONS ÎÁÈÏÄÉÔÓÑ × ×ÙËÌÀÞÅÎÎÏÍ ÐÏÌÏÖÅÎÉÉ, ÅÓÌÉ ÐÒÉ ÜÔÏÍ ÏÎÏ ÔÁËÖÅ ÏÔÓÕÔÓÔ×ÕÅÔ × ÓÐÉÓËÅ OPTIONS_DEFAULT: OPTIONS_DEFAULT= OPT1 OPT3 OPT6 ïÐÒÅÄÅÌÅÎÉÑ OPTIONS ÏÂÑÚÁÎÙ ÐÏÑ×ÉÔØÓÑ ÄÏ ÐÏÄËÌÀÞÅÎÉÑ bsd.port.options.mk. ðÅÒÅÍÅÎÎÙÅ PORT_OPTIONS ÍÏÇÕÔ ÂÙÔØ ÐÒÏ×ÅÒÅÎÙ ÔÏÌØËÏ ÐÏÓÌÅ ÐÏÄËÌÀÞÅÎÉÑ bsd.port.options.mk. ÷ÍÅÓÔÏ ÜÔÏÇÏ ÔÁËÖÅ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÏÄËÌÀÞÅÎÉÅ bsd.port.pre.mk, ÞÔÏ ×ÓÅ ÅÝÅ ÛÉÒÏËÏ ÉÓÐÏÌØÚÕÅÔÓÑ × ÐÏÒÔÁÈ, ÎÁÐÉÓÁÎÎÙÈ ÄÏ ÐÏÑ×ÌÅÎÉÑ bsd.port.options.mk. îÏ ÉÍÅÊÔÅ × ×ÉÄÕ, ÞÔÏ ÎÅËÏÔÏÒÙÅ ÐÅÒÅÍÅÎÎÙÅ, ÏÂÙÞÎÏ, ÜÔÏ ÎÅËÏÔÏÒÙÅ ÆÌÁÇÉ USE_*, ÐÏÓÌÅ ÐÏÄËÌÀÞÅÎÉÑ bsd.port.pre.mk ÂÕÄÕÔ ÒÁÂÏÔÁÔØ ÎÅ ÔÁË, ËÁË ÜÔÏÇÏ ÏÔ ÎÉÈ ÏÖÉÄÁÀÔ. ðÒÏÓÔÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ <makevar>OPTIONS</makevar> OPTIONS_DEFINE= FOO BAR FOO_DESC= Enable option foo BAR_DESC= Support feature bar .include <bsd.port.options.mk> .if ${PORT_OPTIONS:MFOO} CONFIGURE_ARGS+=--with-foo .else CONFIGURE_ARGS+=--without-foo .endif .if ${PORT_OPTIONS:MBAR} RUN_DEPENDS+= bar:${PORTSDIR}/bar/bar .endif .include <bsd.port.mk> ðÒÉÍÅÒ ÒÅÁÌØÎÏÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ <makevar>OPTIONS</makevar> OPTIONS_DEFINE= EXAMPLES OPTIONS_SINGLE= BACKEND OPTIONS_SINGLE_BACKEND= MYSQL PGSQL BDB OPTIONS_MULTI= AUTH OPTIONS_MULTI_AUTH= LDAP PAM SSL EXAMPLES_DESC= Install extra examples MYSQL_DESC= Use MySQL as backend PGSQL_DESC= Use PostgreSQL as backend BDB_DESC= Use Berkeley DB as backend LDAP_DESC= Build with LDAP authentication support PAM_DESC= Build with PAM support SSL_DESC= Build with OpenSSL support OPTIONS_DEFAULT= PGSQL LDAP SSL .include <bsd.port.options.mk> .if ${PORT_OPTIONS:MPGSQL} USE_PGSQL= yes CONFIGURE_ARGS+= --with-postgres .else CONFIGURE_ARGS+= --without-postgres .endif .if ${PORT_OPTIONS:MICU} LIB_DEPENDS+= icuuc:${PORTSDIR}/devel/icu .endif # Check other OPTIONS .include <bsd.port.mk> éÓÐÏÌØÚÏ×ÁÎÉÅ <makevar>OPTIONS</makevar> × ÓÔÁÒÏÍ ÓÔÉÌÅ OPTIONS= FOO "Enable option foo" On .include <bsd.port.pre.mk> .if defined(WITHOUT_FOO) CONFIGURE_ARGS+= --without-foo .else CONFIGURE_ARGS+= --with-foo .endif .include <bsd.port.post.mk> ôÁËÏÊ ÓÐÏÓÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ OPTIONS Ñ×ÌÑÅÔÓÑ ÕÓÔÁÒÅ×ÛÉÍ, É × ÂÕÄÕÝÅÍ ÅÇÏ ÐÏÄÄÅÒÖËÁ ÂÕÄÅÔ ÕÄÁÌ£ÎÁ. îÅ ÉÓÐÏÌØÚÕÊÔÅ ÜÔÏÔ ÓÐÏÓÏ ÄÌÑ ÎÏ×ÙÈ ÐÏÒÔÏ×. æÕÎËÃÉÑ Á×ÔÏÍÁÔÉÞÅÓËÏÊ ÁËÔÉ×ÁÃÉÉ ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÓÃÅÎÁÒÉÑ GNU configure, ÓÌÅÄÉÔÅ ÚÁ ÔÅÍ, ËÁËÉÅ ÎÅÏÂÑÚÁÔÅÌØÎÙÅ ÆÕÎËÃÉÉ ÚÁÄÅÊÓÔ×ÕÀÔÓÑ ÐÏÓÒÅÄÓÔ×ÏÍ Á×ÔÏÍÁÔÉÞÅÓËÏÊ ÁËÔÉ×ÁÃÉÉ. ïÔËÌÀÞÁÊÔÅ Ñ×ÎÙÍ ÏÂÒÁÚÏÍ ÔÅ ÎÅÏÂÑÚÁÔÅÌØÎÙÅ ÆÕÎËÃÉÉ, ËÏÔÏÒÙÅ ×Ù ÎÅ ÈÏÔÅÌÉ ÂÙ ÉÓÐÏÌØÚÏ×ÁÔØ, ÞÅÒÅÚ ÐÅÒÅÄÁÞÕ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ --without-xxx ÉÌÉ --disable-xxx × ÐÅÒÅÍÅÎÎÏÊ CONFIGURE_ARGS. îÅÐÒÁ×ÉÌØÎÏÅ ÕÐÒÁ×ÌÅÎÉÅ ÏÐÃÉÅÊ .if ${PORT_OPTIONS:MFOO} LIB_DEPENDS+= foo:${PORTSDIR}/devel/foo CONFIGURE_ARGS+= --enable-foo .endif ÷ ÐÒÉ×ÅÄÅÎÎÏÍ ×ÙÛÅ ÐÒÉÍÅÒÅ ÐÒÅÄÓÔÁרÔÅ ÓÅÂÅ ÂÉÂÌÉÏÔÅËÕ libfoo, ÕÓÔÁÎÏ×ÌÅÎÎÕÀ × ÓÉÓÔÅÍÅ. ðÏÌØÚÏ×ÁÔÅÌØ ÎÅ ÖÅÌÁÅÔ, ÞÔÏÂÙ ÐÒÉÌÏÖÅÎÉÅ ÉÓÐÏÌØÚÏ×ÁÌÏ libfoo, É ÐÏÜÔÏÍÕ ÏÎ ×ÙËÌÀÞÁÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÕÀ ÏÐÃÉÀ × ÄÉÁÌÏÇÅ make config. îÏ ÓÃÅÎÁÒÉÊ configure ÐÒÉÌÏÖÅÎÉÑ ÏÐÒÅÄÅÌÑÅÔ ÎÁÌÉÞÉÅ ÂÉÂÌÉÏÔÅËÉ × ÓÉÓÔÅÍÅ É ×ËÌÀÞÁÅÔ ÅÅ ÐÏÄÄÅÒÖËÕ × ÉÔÏÇÏ×ÙÊ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ. ôÅÐÅÒØ, ËÏÇÄÁ ÐÏÌØÚÏ×ÁÔÅÌØ ÒÅÛÉÔ ÕÄÁÌÉÔØ libfoo ÉÚ ÓÉÓÔÅÍÙ, ÓÉÓÔÅÍÁ ÐÏÒÔÏ× ÐÏÚ×ÏÌÉÔ ÜÔÏ ÓÄÅÌÁÔØ (Ô.Ë. ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ libfoo ÎÅ ÂÙÌÁ ÚÁÐÉÓÁÎÁ), ÎÏ ÐÒÉÌÏÖÅÎÉÅ ÐÅÒÅÓÔÁÎÅÔ ÒÁÂÏÔÁÔØ. ðÒÁ×ÉÌØÎÏÅ ÕÐÒÁ×ÌÅÎÉÅ ÏÐÃÉÅÊ .if ${PORT_OPTIONS:MFOO} LIB_DEPENDS+= foo:${PORTSDIR}/devel/foo CONFIGURE_ARGS+= --enable-foo .else CONFIGURE_ARGS+= --disable-foo .endif ÷Ï ×ÔÏÒÏÍ ÐÒÉÍÅÒÅ ÂÉÂÌÉÏÔÅËÁ libfoo ÏÔËÌÀÞÅÎÁ Ñ×ÎÙÍ ÏÂÒÁÚÏÍ. óÃÅÎÁÒÉÊ configure ÎÅ ×ËÌÀÞÁÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÆÕÎËÃÉÉ × ÐÒÉÌÏÖÅÎÉÉ, ÎÅÓÍÏÔÒÑ ÎÁ ÐÒÉÓÕÔÓÔ×ÉÅ ÂÉÂÌÉÏÔÅËÉ × ÓÉÓÔÅÍÅ.
úÁÄÁÎÉÅ ÒÁÂÏÞÅÇÏ ËÁÔÁÌÏÇÁ ëÁÖÄÙÊ ÐÏÒÔ ÒÁÓÐÁËÏ×Ù×ÁÅÔÓÑ × ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ, ËÏÔÏÒÙÊ ÄÏÌÖÅÎ ÂÙÔØ ÄÏÓÔÕÐÎÙÍ ÄÌÑ ÚÁÐÉÓÉ. ÷ ÓÉÓÔÅÍÅ ÐÏÒÔÏ× ÐÏ ÕÍÏÌÞÁÎÉÀ DISTFILES ÒÁÓÐÁËÏ×Ù×ÁÀÔÓÑ × ËÁÔÁÌÏÇ Ó ÉÍÅÎÅÍ ${DISTNAME}. äÒÕÇÉÍÉ ÓÌÏ×ÁÍÉ, ÅÓÌÉ ×Ù ÚÁÄÁÌÉ: PORTNAME= foo PORTVERSION= 1.0 ÔÏ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÅ ÆÁÊÌÙ ÐÏÒÔÁ ÓÏÄÅÒÖÁÔ ËÁÔÁÌÏÇ ×ÅÒÈÎÅÇÏ ÕÒÏ×ÎÑ, foo-1.0, É ×ÓÅ ÆÁÊÌÙ ÒÁÓÐÏÌÏÖÅÎÙ × ÜÔÏÍ ËÁÔÁÌÏÇÅ. åÓÌÉ ÜÔÏ ÎÅ ×ÁÛ ÓÌÕÞÁÊ, ÔÏ ÉÍÅÅÔÓÑ ÎÅÓËÏÌØËÏ ÐÅÒÅÍÅÎÎÙÈ, ËÏÔÏÒÙÅ ×Ù ÍÏÖÅÔÅ ÐÅÒÅÏÐÒÅÄÅÌÉÔØ. <makevar>WRKSRC</makevar> üÔÁ ÐÅÒÅÍÅÎÎÁÑ ÚÁÄÁ£Ô ÉÍÑ ËÁÔÁÌÏÇÁ, ËÏÔÏÒÙÊ ÓÏÚÄÁ£ÔÓÑ ÐÒÉ ÒÁÓÐÁËÏ×ËÅ ÉÓÈÏÄÎÙÈ ÆÁÊÌÏ× ÐÒÉÌÏÖÅÎÉÑ. ÷ ÎÁÛÅÍ ÐÒÅÄÙÄÕÝÅÍ ÐÒÉÍÅÒÅ ÅÓÌÉ ÂÙ ÒÁÓÐÁËÏ×ËÁ ÐÒÏÉÓÈÏÄÉÌÁ × ËÁÔÁÌÏÇ Ó ÉÍÅÎÅÍ foo (Á ÎÅ foo-1.0), ÔÏ ×Ù ÄÏÌÖÎÙ ÎÁÐÉÓÁÔØ: WRKSRC= ${WRKDIR}/foo ÉÌÉ, ËÁË ×ÁÒÉÁÎÔ WRKSRC= ${WRKDIR}/${PORTNAME} <makevar>NO_WRKSUBDIR</makevar> åÓÌÉ ÐÏÒÔ ×ÏÏÂÝÅ ÎÅ ÒÁÓÐÁËÏ×Ù×ÁÅÔÓÑ ÎÉ × ËÁËÏÊ ËÁÔÁÌÏÇ, ÔÏ ×Ù ÄÏÌÖÎÙ ÚÁÄÁÔØ ÐÅÒÅÍÅÎÎÕÀ NO_WRKSUBDIR ÄÌÑ ÕËÁÚÁÎÉÑ ÎÁ ÜÔÏÔ ÆÁËÔ. NO_WRKSUBDIR= yes òÁÚÒÅÛÅÎÉÅ ËÏÎÆÌÉËÔÏ× äÌÑ ÒÅÇÉÓÔÒÁÃÉÉ ËÏÎÆÌÉËÔÁ ÍÅÖÄÕ ÐÁËÅÔÁÍÉ É ÐÏÒÔÁÍÉ ÉÓÐÏÌØÚÕÀÔÓÑ ÔÒÉ ÒÁÚÌÉÞÎÙÅ ÐÅÒÅÍÅÎÎÙÅ: CONFLICTS, CONFLICTS_INSTALL É CONFLICTS_BUILD. ðÅÒÅÍÅÎÎÙÅ ÒÅÇÉÓÔÒÁÃÉÉ ËÏÎÆÌÉËÔÁ Á×ÔÏÍÁÔÉÞÅÓËÉ ÏÐÒÅÄÅÌÑÀÔ ÐÅÒÅÍÅÎÎÕÀ IGNORE, ËÏÔÏÒÁÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏ ÏÐÉÓÁÎÁ × . ðÒÉ ÕÄÁÌÅÎÉÉ ÏÄÎÏÇÏ ÉÚ ËÏÎÆÌÉËÔÕÀÝÉÈ ÐÏÒÔÏ× ÃÅÌÅÓÏÏÂÒÁÚÎÏ ÓÏÈÒÁÎÉÔØ ÚÁÐÉÓÉ CONFLICTS × ÔÅÈ ÄÒÕÇÉÈ ÐÏÒÔÁÈ × ÔÅÞÅÎÉÉ ÎÅÓËÏÌØËÉÈ ÍÅÓÑÃÅ×, ÞÔÏÂÙ ÐÏÚÁÂÏÔÉÔØÓÑ Ï ÔÅÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ËÏÔÏÒÙÅ ÏÂÎÏ×ÌÑÀÔÓÑ ÏÔ ÓÌÕÞÁÑ Ë ÓÌÕÞÁÀ. <makevar>CONFLICTS_INSTALL</makevar> åÓÌÉ ×ÁÛ ÐÁËÅÔ ÎÅ ÍÏÖÅÔ ÓÕÝÅÓÔ×Ï×ÁÔØ ×ÍÅÓÔÅ Ó ÄÒÕÇÉÍÉ (ÉÚ-ÚÁ ËÏÎÆÌÉËÔÁ ÆÁÊÌÏ×, ÎÅÓÏ×ÍÅÓÔÉÍÏÓÔÉ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ É ÔÁË ÄÁÌÅÅ), ÐÅÒÅÞÉÓÌÉÔÅ ÉÍÅÎÁ ÏÓÔÁÌØÎÙÈ ÐÁËÅÔÏ× × ÐÅÒÅÍÅÎÎÏÊ CONFLICTS_INSTALL. úÄÅÓØ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÛÁÂÌÏÎÙ ËÏÍÁÎÄÎÏÇÏ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ, ÔÁËÉÅ ËÁË * É ?. éÍÅÎÁ ÐÁËÅÔÏ× ÄÏÌÖÎÙ ×ÙÇÌÑÄÅÔØ ÔÁË ÖÅ, ËÁË × /var/db/pkg. ðÏÖÁÌÕÊÓÔÁ, ÕÂÅÄÉÔÅÓØ, ÞÔÏ CONFLICTS_INSTALL ÎÅ ÓÏÄÅÒÖÉÔ ÐÁËÅÔ ÓÁÍÏÇÏ ÜÔÏÇÏ ÐÏÒÔÁ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÎÅ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ ÕÓÔÁÎÏ×ËÁ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÅÒÅÍÅÎÎÏÊ FORCE_PKG_REGISTER. ðÒÏ×ÅÒËÁ CONFLICTS_INSTALL ×ÙÐÏÌÎÑÅÔÓÑ ÐÏÓÌÅ ÐÒÏÃÅÓÓÁ ÓÂÏÒËÉ É ÄÏ ÐÒÏÃÅÓÓÁ ÕÓÔÁÎÏ×ËÉ. <makevar>CONFLICTS_BUILD</makevar> åÓÌÉ ×ÁÛ ÐÏÒÔ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÓÏÂÒÁÎ, ËÏÇÄÁ ÕÖÅ ÕÓÔÁÎÏ×ÌÅÎ ÄÒÕÇÏÊ, ÐÅÒÅÞÉÓÌÉÔÅ ÉÍÅÎÁ ÏÓÔÁÌØÎÙÈ ÐÏÒÔÏ× × ÐÅÒÅÍÅÎÎÏÊ CONFLICTS_BUILD. úÄÅÓØ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÛÁÂÌÏÎÙ ËÏÍÁÎÄÎÏÇÏ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ, ÔÁËÉÅ ËÁË * É ?. éÍÅÎÁ ÐÁËÅÔÏ× ÄÏÌÖÎÙ ×ÙÇÌÑÄÅÔØ ÔÁË ÖÅ, ËÁË × /var/db/pkg. ðÒÏ×ÅÒËÁ CONFLICTS_BUILD ×ÙÐÏÌÎÑÅÔÓÑ ÄÏ ÐÒÏÃÅÓÓÁ ÓÂÏÒËÉ. ëÏÎÆÌÉËÔÙ ÓÂÏÒËÉ × ÐÏÌÕÞÁÅÍÏÍ ÐÁËÅÔÅ ÎÅ ÚÁÐÉÓÙ×ÁÀÔÓÑ. <makevar>CONFLICTS</makevar> åÓÌÉ ×ÁÛ ÐÏÒÔ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÓÏÂÒÁÎ, ËÏÇÄÁ ÕÖÅ ÕÓÔÁÎÏ×ÌÅÎ ÄÒÕÇÏÊ, Á ÐÏÌÕÞÁÅÍÙÊ ÐÁËÅÔ ÎÅ ÍÏÖÅÔ ÓÕÝÅÓÔ×Ï×ÁÔØ ×ÍÅÓÔÅ Ó ÄÒÕÇÉÍÉ, ÐÅÒÅÞÉÓÌÉÔÅ ÉÍÅÎÁ ÏÓÔÁÌØÎÙÈ ÐÁËÅÔÏ× × ÐÅÒÅÍÅÎÎÏÊ CONFLICTS. úÄÅÓØ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÛÁÂÌÏÎÙ ËÏÍÁÎÄÎÏÇÏ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ, ÔÁËÉÅ ËÁË * É ?. éÍÅÎÁ ÐÁËÅÔÏ× ÄÏÌÖÎÙ ×ÙÇÌÑÄÅÔØ ÔÁË ÖÅ, ËÁË × /var/db/pkg. ðÏÖÁÌÕÊÓÔÁ, ÕÂÅÄÉÔÅÓØ, ÞÔÏ CONFLICTS ÎÅ ÓÏÄÅÒÖÉÔ ÐÁËÅÔ ÓÁÍÏÇÏ ÜÔÏÇÏ ÐÏÒÔÁ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÎÅ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ ÕÓÔÁÎÏ×ËÁ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÅÒÅÍÅÎÎÏÊ FORCE_PKG_REGISTER. ðÒÏ×ÅÒËÁ CONFLICTS ×ÙÐÏÌÎÑÅÔÓÑ ÄÏ ÐÒÏÃÅÓÓÏ× ÓÂÏÒËÉ É ÕÓÔÁÎÏ×ËÉ. õÓÔÁÎÏ×ËÁ ÆÁÊÌÏ× íÁËÒÏÓÙ INSTALL_* éÓÐÏÌØÚÕÊÔÅ ÍÁËÒÏÓÙ, ËÏÔÏÒÙÅ ÅÓÔØ × ÆÁÊÌÅ bsd.port.mk ÄÌÑ ÏÂÅÓÐÅÞÅÎÉÑ ÐÒÁ×ÉÌØÎÙÈ ÐÒÁ× ÄÏÓÔÕÐÁ É ×ÌÁÄÅÎÉÑ ÆÁÊÌÏ× × Ó×ÏÉÈ ÃÅÌÑÈ *-install. INSTALL_PROGRAM - ÜÔÏ ËÏÍÁÎÄÁ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÂÉÎÁÒÎÙÈ ×ÙÐÏÌÎÉÍÙÈ ÆÁÊÌÏ×. INSTALL_SCRIPT - ÜÔÏ ËÏÍÁÎÄÁ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ×ÙÐÏÌÎÉÍÙÈ ÓËÒÉÐÔÏ×. INSTALL_LIB - ÜÔÏ ËÏÍÁÎÄÁ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË. INSTALL_KLD - ÜÔÏ ËÏÍÁÎÄÁ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÚÁÇÒÕÖÁÅÍÙÈ ÍÏÄÕÌÅÊ ÑÄÒÁ. îÅËÏÔÏÒÙÅ ÁÒÈÉÔÅËÔÕÒÙ ÐÒÅÄÐÏÞÉÔÁÀÔ, ÞÔÏÂÙ ÄÌÑ ÍÏÄÕÌÅÊ ÓÏÈÒÁÎÑÌÉÓØ ÏÔÌÁÄÏÞÎÙÅ Ó×ÅÄÅÎÉÑ, ÐÏ ÜÔÏÊ ÐÒÉÞÉÎÅ ÉÓÐÏÌØÚÕÊÔÅ ÜÔÕ ËÏÍÁÎÄÕ ×ÍÅÓÔÏ INSTALL_PROGRAM. INSTALL_DATA - ÜÔÏ ËÏÍÁÎÄÁ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÕÅÍÙÈ ÆÁÊÌÏ× ÄÁÎÎÙÈ. INSTALL_MAN - ÜÔÏ ËÏÍÁÎÄÁ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÓÔÒÁÎÉà óÐÒÁ×ÏÞÎÉËÁ É ÄÒÕÇÏÊ ÄÏËÕÍÅÎÔÁÃÉÉ (ÎÉËÁËÉÈ ÆÁÊÌÏ× ÏÎÁ ÎÅ ÓÖÉÍÁÅÔ). ÷ ÏÓÎÏ×Å ÒÁÂÏÔÙ ÜÔÉÈ ÍÁËÒÏÓÏ× ÌÅÖÉÔ ËÏÍÁÎÄÁ install ÓÏ ×ÓÅÍÉ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍÉ ÆÌÁÇÁÍÉ. óÍÏÔÒÉÔÅ ÐÒÉÍÅÒ ÉÈ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÎÉÖÅ. õÄÁÌÅÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ × ÂÉÎÁÒÎÙÈ ÆÁÊÌÁÈ É ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅËÁÈ îÅ ÕÄÁÌÑÊÔÅ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÂÉÎÁÒÎÙÈ ÆÁÊÌÏ× ×ÒÕÞÎÕÀ, ÅÓÌÉ ×Ù ÜÔÏ ÄÅÌÁÌÉ. ÷Ï ×ÓÅÈ Ä×ÏÉÞÎÙÈ ÆÁÊÌÁÈ ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÄÏÌÖÎÁ ÂÙÔØ ÕÄÁÌÅÎÁ, É ÍÁËÒÏÓ INSTALL_PROGRAM ×ÙÐÏÌÎÉÔ ÕÓÔÁÎÏ×ËÕ É ÕÄÁÌÅÎÉÅ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÏÄÎÏ×ÒÅÍÅÎÎÏ (ÏÂÒÁÔÉÔÅÓØ Ë ÓÌÅÄÕÀÝÅÍÕ ÒÁÚÄÅÌÕ). íÁËÒÏÓ INSTALL_LIB ÄÅÌÁÅÔ ÔÏ ÖÅ ÓÁÍÏÅ ÄÌÑ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË. åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÕÄÁÌÉÔØ ÏÔÌÁÄÏÞÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÆÁÊÌÁ ÂÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÍÁËÒÏÓÏ× INSTALL_PROGRAM É INSTALL_LIB, ÔÏ ÜÔÏ ÍÏÖÎÏ ÓÄÅÌÁÔØ ÐÒÉ ÐÏÍÏÝÉ ${STRIP_CMD}. ïÂÙÞÎÏ ÜÔÏ ÄÅÌÁÅÔÓÑ ×ÎÕÔÒÉ ÃÅÌÉ post-install. ë ÐÒÉÍÅÒÕ: post-install: ${STRIP_CMD} ${PREFIX}/bin/xdl äÌÑ ÐÒÏ×ÅÒËÉ ÔÏÇÏ, ÕÄÁÌÅÎÁ ÌÉ ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÉÚ ÕÓÔÁÎÏ×ÌÅÎÎÏÇÏ ×ÙÐÏÌÎÉÍÏÇÏ ÆÁÊÌÁ, ×ÙÐÏÌÎÉÔÅ ËÏÍÁÎÄÕ &man.file.1;. åÓÌÉ ÕÔÉÌÉÔÁ ÎÅ ×ÙÄÁÓÔ ÓÔÒÏËÕ not stripped, ÔÏ ÆÁÊÌ ÕÖÅ ÏÂÒÁÂÏÔÁÎ. ëÒÏÍÅ ÔÏÇÏ, &man.strip.1; ÎÅ ÂÕÄÅÔ ÏÂÒÁÂÁÔÙ×ÁÔØ ÐÒÏÇÒÁÍÍÕ, ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÉÚ ËÏÔÏÒÏÊ ÕÖÅ ÕÄÁÌÅÎÁ; ×ÍÅÓÔÏ ÜÔÏÇÏ ÕÔÉÌÉÔÁ ÐÒÏÓÔÏ ÚÁ×ÅÒÛÉÔ Ó×ÏÀ ÒÁÂÏÔÕ. õÓÔÁÎÏ×ËÁ ÃÅÌÏÇÏ ÄÅÒÅ×Á ÆÁÊÌÏ× éÎÏÇÄÁ ÓÕÝÅÓÔ×ÕÅÔ ÎÅÏÂÈÏÄÉÍÏÓÔØ × ÕÓÔÁÎÏ×ËÅ ÂÏÌØÛÏÇÏ ËÏÌÉÞÅÓÔ×Á ÆÁÊÌÏ× Ó ÓÏÈÒÁÎÅÎÉÅÍ ÉÈ ÉÅÒÁÒÈÉÞÅÓËÏÊ ÏÒÇÁÎÉÚÁÃÉÉ, Ô.Å. × ËÏÐÉÒÏ×ÁÎÉÉ ÄÅÒÅ×Á ËÁÔÁÌÏÇÏ× ÃÅÌÉËÏÍ ÉÚ WRKSRC × ÃÅÌÅ×ÏÊ ËÁÔÁÌÏÇ ×ÎÕÔÒÉ PREFIX. äÌÑ ÜÔÏÊ ÓÉÔÕÁÃÉÉ ÓÕÝÅÓÔ×ÕÅÔ Ä×Á ÍÁËÒÏÓÁ. ðÒÅÉÍÕÝÅÓÔ×Ï ÏÔ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÜÔÉÈ ÍÁËÒÏÓÏ× ×ÍÅÓÔÏ ËÏÍÁÎÄÙ cp × ÔÏÍ, ÞÔÏ ÏÎÉ ÇÁÒÁÎÔÉÒÕÀÔ ÕÓÔÁÎÏ×ËÕ ÐÒÁ×ÉÌØÎÏÇÏ ×ÌÁÄÅÌØÃÁ É ÐÒÁ× ÎÁ ËÏÎÅÞÎÙÅ ÆÁÊÌÙ. ðÅÒ×ÙÊ ÍÁËÒÏÓ, COPYTREE_BIN, ÄÅÌÁÅÔ ×ÓÅ ÕÓÔÁÎÁ×ÌÉ×ÁÅÍÙÅ ÆÁÊÌÙ ÉÓÐÏÌÎÑÅÍÙÍÉ, ÞÔÏ ÐÏÄÈÏÄÉÔ ÄÌÑ ÕÓÔÁÎÏ×ËÉ × PREFIX/bin. ÷ÔÏÒÏÊ ÍÁËÒÏÓ, COPYTREE_SHARE, ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÎÁ ÆÁÊÌÙ ÐÒÁ×Á ÉÓÐÏÌÎÅÎÉÑ, É, ÔÁËÉÍ ÏÂÒÁÚÏÍ, ÐÏÄÈÏÄÉÔ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÆÁÊÌÏ× ×ÎÕÔÒÉ ËÁÔÁÌÏÇÁ PREFIX/share. post-install: ${MKDIR} ${EXAMPLESDIR} (cd ${WRKSRC}/examples/ && ${COPYTREE_SHARE} \* ${EXAMPLESDIR}) ÷ ÜÔÏÍ ÐÒÉÍÅÒÅ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÓÏÄÅÒÖÉÍÏÅ ËÁÔÁÌÏÇÁ examples ÉÚ ÕÓÔÁÎÏ×ÏÞÎÙÈ ÆÁÊÌÏ× ÐÒÏÉÚ×ÏÄÉÔÅÌÑ × ÎÁÄÌÅÖÁÝÅÅ ÍÅÓÔÏ ÄÌÑ ÐÒÉÍÅÒÏ× ×ÁÛÅÇÏ ÐÏÒÔÁ. post-install: ${MKDIR} ${DATADIR}/summer (cd ${WRKSRC}/temperatures/ && ${COPYTREE_SHARE} "June July August" ${DATADIR}/summer/) á × ÜÔÏÍ ÐÒÉÍÅÒÅ ÂÕÄÕÔ ÕÓÔÁÎÏ×ÌÅÎÙ ÄÁÎÎÙÅ ÌÅÔÎÉÈ ÍÅÓÑÃÅ× × ÐÏÄËÁÔÁÌÏÇ summer ËÁÔÁÌÏÇÁ DATADIR. ÷ ËÁÞÅÓÔ×Å ÔÒÅÔØÅÇÏ ÐÁÒÁÍÅÔÒÁ × ÍÁËÒÏÓÅ COPYTREE_* ÍÏÖÎÏ ÐÅÒÅÄÁÔØ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÁÒÁÍÅÔÒÙ find. îÁÐÒÉÍÅÒ, ÞÔÏÂÙ × ÐÅÒ×ÏÍ ÐÒÉÍÅÒÅ ÕÓÔÁÎÏ×ÉÔØ ×ÓÅ ÆÁÊÌÙ ËÒÏÍÅ ÆÁÊÌÏ× Makefile, ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÌÅÄÕÀÝÕÀ ËÏÍÁÎÄÕ. post-install: ${MKDIR} ${EXAMPLESDIR} (cd ${WRKSRC}/examples/ && \ ${COPYTREE_SHARE} \* ${EXAMPLESDIR} "! -name Makefile") ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÜÔÉ ÍÁËÒÏÓÙ ÎÅ ÐÒÏÉÚ×ÏÄÑÔ ÄÏÂÁ×ÌÅÎÉÅ ÕÓÔÁÎÁ×ÌÉ×ÁÅÍÙÈ ÆÁÊÌÏ× × pkg-plist. ÷ÁÍ ×ÓÅ ÅÝÅ ÎÕÖÎÏ ÉÈ ÐÅÒÅÞÉÓÌÉÔØ. õÓÔÁÎÏ×ËÁ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÄÏËÕÍÅÎÔÁÃÉÉ åÓÌÉ Ó ×ÁÛÉÍ ÐÒÏÇÒÁÍÍÎÙÍ ÏÂÅÓÐÅÞÅÎÉÅÍ ÐÏÓÔÁ×ÌÑÅÔÓÑ ÎÅËÏÔÏÒÁÑ ÄÏËÕÍÅÎÔÁÃÉÑ, ÏÔÌÉÞÁÀÝÁÑÓÑ ÏÔ ÓÔÁÎÄÁÒÔÎÙÈ ÓÔÒÁÎÉà óÐÒÁ×ÏÞÎÉËÁ É ÆÁÊÌÏ× info, ËÏÔÏÒÁÑ, ËÁË ×Ù ÄÕÍÁÅÔÅ, ÂÕÄÅÔ ÐÏÌÅÚÎÁ ÐÏÌØÚÏ×ÁÔÅÌÑÍ, ÕÓÔÁÎÏ×ÉÔÅ ÅÅ × ËÁÔÁÌÏÇ PREFIX/share/doc. üÔÏ ÍÏÖÅÔ ÂÙÔØ ÓÄÅÌÁÎÏ, ËÁË É × ÐÒÅÄÙÄÕÝÅÍ ÒÁÚÄÅÌÅ, × ÃÅÌÉ post-install. óÏÚÄÁÊÔÅ ÄÌÑ ×ÁÛÅÇÏ ÐÏÒÔÁ ÎÏ×ÙÊ ËÁÔÁÌÏÇ. éÍÑ ËÁÔÁÌÏÇÁ ÄÏÌÖÎÏ ÓÏÏÔ×ÅÔÓÔ×Ï×ÁÔØ ÔÏÍÕ, ÞÔÏ ÐÒÅÄÓÔÁ×ÌÑÅÔ ÉÚ ÓÅÂÑ ÐÏÒÔ. ïÂÙÞÎÏ ÜÔÏ ÏÚÎÁÞÁÅÔ PORTNAME. ïÄÎÁËÏ, ÅÓÌÉ ×Ù ÄÕÍÁÅÔÅ, ÞÔÏ ÐÏÌØÚÏ×ÁÔÅÌØ ÚÁÈÏÞÅÔ ÉÍÅÔØ ÒÁÚÎÙÅ ×ÅÒÓÉÉ ÐÏÒÔÁ, ÕÓÔÁÎÏ×ÌÅÎÎÙÅ ÏÄÎÏ×ÒÅÍÅÎÎÏ, ÔÏ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÏÌÎÏÅ ÉÍÑ PKGNAME. óÄÅÌÁÊÔÅ ÕÓÔÁÎÏ×ËÕ ÄÏËÕÍÅÎÔÁÃÉÉ ÚÁ×ÉÓÑÝÅÊ ÏÔ ÐÅÒÅÍÅÎÎÏÊ NOPORTDOCS ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÏÌØÚÏ×ÁÔÅÌÉ ÍÏÇÌÉ ×ÙËÌÀÞÉÔØ ÜÔÏ × ÆÁÊÌÅ /etc/make.conf, ËÁË ÚÄÅÓØ: post-install: .if !defined(NOPORTDOCS) ${MKDIR} ${DOCSDIR} ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${DOCSDIR} .endif ÷ÏÔ ÎÅÓËÏÌØËÏ ÐÏÌÅÚÎÙÈ ÐÅÒÅÍÅÎÎÙÈ É ÔÏ, ËÁË ÏÎÉ ÐÒÅÏÂÒÁÚÕÀÔÓÑ ÐÏ ÕÍÏÌÞÁÎÉÀ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ × Makefile: DATADIR ÐÒÅÏÂÒÁÚÕÅÔÓÑ × PREFIX/share/PORTNAME. DATADIR_REL ÐÒÅÏÂÒÁÚÕÅÔÓÑ × share/PORTNAME. DOCSDIR ÐÒÅÏÂÒÁÚÕÅÔÓÑ × PREFIX/share/doc/PORTNAME. DOCSDIR_REL ÐÒÅÏÂÒÁÚÕÅÔÓÑ × share/doc/PORTNAME. EXAMPLESDIR ÐÒÅÏÂÒÁÚÕÅÔÓÑ × PREFIX/share/examples/PORTNAME. EXAMPLESDIR_REL ÐÒÅÏÂÒÁÚÕÅÔÓÑ × share/examples/PORTNAME. NOPORTDOCS ÕÐÒÁ×ÌÑÅÔ ÕÓÔÁÎÏ×ËÏÊ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÄÏËÕÍÅÎÔÁÃÉÉ × DOCSDIR. üÔÏ ÎÅ ÏÔÎÏÓÉÔÓÑ Ë ÓÔÁÎÄÁÒÔÎÙÍ ÓÔÒÁÎÉÃÁÍ ÓÐÒÁ×ÏÞÎÉËÁ É ÓÔÒÁÎÉÃÁÍ info. ÷ÓÅ, ÞÔÏ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × DATADIR É EXAMPLESDIR, ÕÐÒÁ×ÌÑÅÔÓÑ ÞÅÒÅÚ NOPORTDATA É NOPORTEXAMPLES ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ. üÔÉ ÐÅÒÅÍÅÎÎÙÅ ÜËÓÐÏÒÔÉÒÕÀÔÓÑ × PLIST_SUB. éÈ ÚÎÁÞÅÎÉÑ ÐÏÑ×ÑÔÓÑ ÔÁÍ × ×ÉÄÅ ÉͣΠÐÕÔÅÊ ÏÔÎÏÓÉÔÅÌØÎÏ PREFIX, ÅÓÌÉ ÜÔÏ ×ÏÚÍÏÖÎÏ. ôÏ ÅÓÔØ share/doc/PORTNAME × ÓÐÉÓËÅ ÓÂÏÒËÉ ÐÏ ÕÍÏÌÞÁÎÉÀ ÂÕÄÅÔ ÚÁÍÅÎÅÎ ÎÁ %%DOCSDIR%%, É ÔÁË ÄÁÌÅÅ. (äÏÐÏÌÎÉÔÅÌØÎÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÐÏÄÓÔÁÎÏ×ËÅ × pkg-plist ÍÏÖÎÏ ÎÁÊÔÉ ÚÄÅÓØ.) ÷ÓÅ ÕÓÌÏ×ÎÏ ÕÓÔÁÎÁ×ÌÉ×ÁÅÍÙÅ ÆÁÊÌÙ É ËÁÔÁÌÏÇÉ Ó ÄÏËÕÍÅÎÔÁÃÉÅÊ ÄÏÌÖÎÙ ÂÙÔØ ÐÅÒÅÞÉÓÌÅÎÙ × ÆÁÊÌÅ pkg-plist Ó ÐÒÅÆÉËÓÏÍ %%PORTDOCS%%, ÎÁÐÒÉÍÅÒ: %%PORTDOCS%%%%DOCSDIR%%/AUTHORS %%PORTDOCS%%%%DOCSDIR%%/CONTACT %%PORTDOCS%%@dirrm %%DOCSDIR%% ÷ ËÁÞÅÓÔ×Å ÁÌØÔÅÒÎÁÔÉ×Ù ÐÅÒÅÞÉÓÌÅÎÉÀ ÆÁÊÌÏ× ÄÏËÕÍÅÎÔÁÃÉÉ × ÆÁÊÌÅ pkg-plist, ÐÏÒÔ ÍÏÖÅÔ ÕËÁÚÁÔØ × ÐÅÒÅÍÅÎÎÏÊ PORTDOCS ÓÐÉÓÏË ÉͣΠÆÁÊÌÏ× É ÇÌÏÂÁÌØÎÙÈ ÛÁÂÌÏÎÏ× ËÏÍÁÎÄÎÏÇÏ ÐÒÏÃÅÓÓÏÒÁ ÄÌÑ ÄÏÂÁ×ÌÅÎÉÑ × ÏËÏÎÞÁÔÅÌØÎÙÊ ÓÐÉÓÏË ÓÂÏÒËÉ. éÍÅÎÁ ÂÕÄÕÔ ÚÁÄÁ×ÁÔØÓÑ ÏÔÎÏÓÉÔÅÌØÎÏ DOCSDIR. ôÁËÉÍ ÏÂÒÁÚÏÍ, ÐÏÒÔ, ÉÓÐÏÌØÚÕÀÝÉÊ PORTDOCS É ÎÅÓÔÁÎÄÁÒÔÎÏÅ ÍÅÓÔÏÐÏÌÏÖÅÎÉÅ ÄÏËÕÍÅÎÔÁÃÉÉ, ÄÏÌÖÅÎ ÚÁÄÁ×ÁÔØ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍ ÏÂÒÁÚÏÍ É DOCSDIR. åÓÌÉ ËÁÔÁÌÏÇ ÕËÁÚÁÎ × PORTDOCS ÉÌÉ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÛÁÂÌÏÎÕ ÄÌÑ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ, ÔÏ ÐÏÌÎÏÅ ÐÏÄÄÅÒÅ×Ï Ó ×ÈÏÄÑÝÉÍÉ × ÎÅÇÏ ÆÁÊÌÁÍÉ É ËÁÔÁÌÏÇÁÍÉ ÂÕÄÅÔ ÒÅÇÉÓÔÒÉÒÏ×ÁÔØÓÑ × ÏËÏÎÞÁÔÅÌØÎÏÍ ÓÐÉÓËÅ ÓÂÏÒËÉ. åÓÌÉ ÏÐÒÅÄÅÌÅÎÁ NOPORTDOCS, ÔÏ ÆÁÊÌÙ É ËÁÔÁÌÏÇÉ, ÐÅÒÅÞÉÓÌÅÎÎÙÅ × PORTDOCS, ÎÅ ÂÕÄÕÔ ÕÓÔÁÎÏ×ÌÅÎÙ É ÄÏÂÁ×ÌÅÎÙ × ÓÐÉÓÏË ÓÂÏÒËÉ ÐÏÒÔÁ. õÓÔÁÎÏ×ËÁ ÄÏËÕÍÅÎÔÁÃÉÉ × PORTDOCS, ËÁË ÜÔÏ ÐÏËÁÚÁÎÏ ×ÙÛÅ, ÏÓÔÁ£ÔÓÑ ÚÁ ÓÁÍÉÍ ÐÏÒÔÏÍ. ôÉÐÉÞÎÙÊ ÐÒÉÍÅÒ ÉÓÐÏÌØÚÏ×ÁÎÉÑ PORTDOCS ×ÙÇÌÑÄÉÔ ÓÌÅÄÕÀÝÉÍ ÏÂÒÁÚÏÍ: PORTDOCS= README.* ChangeLog docs/* üË×É×ÁÌÅÎÔÁÍÉ PORTDOCS ÄÌÑ ÆÁÊÌÏ×, ÕÓÔÁÎÁ×ÌÉ×ÁÅÍÙÈ × DATADIR É EXAMPLESDIR Ñ×ÌÑÀÔÓÑ PORTDATA É PORTEXAMPLES ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ. ëÒÏÍÅ ÔÏÇÏ, ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÁÊÌ pkg-message ÄÌÑ ×Ù×ÏÄÁ ÓÏÏÂÝÅÎÉÊ ×Ï ×ÒÅÍÑ ÕÓÔÁÎÏ×ËÉ. úÁ ÐÏÄÒÏÂÎÏÊ ÉÎÆÏÒÍÁÃÉÅÊ ÏÂÒÁÔÉÔÅÓØ Ë ÒÁÚÄÅÌÕ Ï ÉÓÐÏÌØÚÏ×ÁÎÉÉ pkg-message. æÁÊÌ pkg-message ÎÅ ÎÕÖÎÏ ÄÏÂÁ×ÌÑÔØ × pkg-plist. ðÏÄËÁÔÁÌÏÇÉ ×ÎÕÔÒÉ PREFIX ðÏÐÒÏÂÕÊÔÅ ÐÏÍÅÓÔÉÔØ ×ÓÅ ÆÁÊÌÙ ÐÏÒÔÁ × ÐÒÁ×ÉÌØÎÙÈ ÐÏÄËÁÔÁÌÏÇÁÈ ËÁÔÁÌÏÇÁ PREFIX. îÅËÏÔÏÒÙÅ ÐÏÒÔÙ ÉÇÎÏÒÉÒÕÀÔ ×ÓÅ ÕÓÔÁÎÏ×ËÉ É ÐÏÍÅÝÁÀÔ ×ÓÅ × ÐÏÄËÁÔÁÌÏÇ Ó ÉÍÅÎÅÍ ÐÏÒÔÁ, ÞÔÏ ÎÅÐÒÁ×ÉÌØÎÏ. ôÁËÖÅ ÍÎÏÇÉÅ ÐÏÒÔÙ ÐÏÍÅÝÁÀÔ ×ÓÅ, ËÒÏÍÅ ÂÉÎÁÒÎÙÈ ÆÁÊÌÏ×, ÆÁÊÌÏ× ÚÁÇÏÌÏ×ËÏ× É ÓÔÒÁÎÉà óÐÒÁ×ÏÞÎÉËÁ, × ÐÏÄËÁÔÁÌÏÇ ËÁÔÁÌÏÇÁ lib, ÞÔÏ ÎÅ ÏÞÅÎØ ÈÏÒÏÛÏ ÒÁÂÏÔÁÅÔ Ó ÐÏÄÈÏÄÏÍ BSD. íÎÏÇÉÅ ÆÁÊÌÙ ÄÏÌÖÎÙ ÂÙÔØ ÐÅÒÅÍÅÝÅÎÙ × ÏÄÎÏ ÉÚ ÓÌÅÄÕÀÝÉÈ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ: etc (ÎÁÓÔÒÏÅÞÎÙÅ/ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÅ ÆÁÊÌÙ), libexec (×ÙÐÏÌÎÉÍÙÅ ÆÁÊÌÙ, ÚÁÐÕÓËÁÅÍÙÅ ÉÚ ÄÒÕÇÉÈ ÐÒÏÇÒÁÍÍ), sbin (ÉÓÐÏÌÎÉÍÙÅ ÆÁÊÌÙ ÄÌÑ ÁÄÍÉÎÉÓÔÒÁÔÏÒÏ×/ÍÅÎÅÄÖÅÒÏ× ÓÉÓÔÅÍÙ), info (ÄÏËÕÍÅÎÔÁÃÉÑ × ÆÏÒÍÁÔÅ info ÄÌÑ ÐÒÏÓÍÏÔÒÝÉËÁ info) ÉÌÉ share (ÎÅÚÁ×ÉÓÉÍÙÅ ÏÔ ÁÒÈÉÔÅËÔÕÒÙ ÆÁÊÌÙ). ïÂÒÁÔÉÔÅÓØ Ë &man.hier.7; ÄÌÑ ÐÒÏÑÓÎÅÎÉÑ ÄÅÔÁÌÅÊ; ÐÒÁ×ÉÌÁ, ÐÏËÒÙ×ÁÀÝÉÅ /usr, ÄÏÓÔÁÔÏÞÎÏ ÈÏÒÏÛÏ ÐÏÄÈÏÄÑÔ ÔÁËÖÅ É Ë /usr/local. éÓËÌÀÞÅÎÉÅÍ Ñ×ÌÑÀÔÓÑ ÐÏÒÔÙ, ÉÍÅÀÝÉÅ ÄÅÌÏ Ó ÎÏ×ÏÓÔÑÍÉ USENET. ïÎÉ ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØ ËÁÔÁÌÏÇ PREFIX/news ÄÌÑ ÕÓÔÁÎÏ×ËÉ Ó×ÏÉÈ ÆÁÊÌÏ×.
ïÓÏÂÙÅ ÓÏÇÌÁÛÅÎÉÑ éÍÅÅÔÓÑ ÅÝ£ ÎÅÓËÏÌØËÏ ×ÅÝÅÊ, ËÏÔÏÒÙÅ ×Ù ÄÏÌÖÎÙ ÉÍÅÔØ × ×ÉÄÕ ÐÒÉ ÓÏÚÄÁÎÉÉ ÐÏÒÔÁ. üÔÏÔ ÒÁÚÄÅÌ ÏÐÉÓÙ×ÁÅÔ ÎÁÉÂÏÌÅÅ ÞÁÓÔÏ ×ÓÔÒÅÞÁÀÝÉÅÓÑ ÉÚ ÎÉÈ. äÉÎÁÍÉÞÅÓËÉÅ ÂÉÂÌÉÏÔÅËÉ åÓÌÉ ×ÁÛ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÏÄÎÕ ÉÌÉ ÎÅÓËÏÌØËÏ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË, ÏÐÒÅÄÅÌÉÔÅ ÐÅÒÅÍÅÎÎÕÀ USE_LDCONFIG, ËÏÔÏÒÁÑ ÐÒÉ×ÅÄ£Ô Ë ÚÁÐÕÓËÕ ÉÚ bsd.port.mk ËÏÍÁÎÄÙ ${LDCONFIG} -m ÏÔÎÏÓÉÔÅÌØÎÏ ËÁÔÁÌÏÇÁ, × ËÏÔÏÒÙÊ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÎÏ×ÁÑ ÂÉÂÌÉÏÔÅËÁ (ËÁË ÐÒÁ×ÉÌÏ, ÜÔÏ PREFIX/lib), ×Ï ×ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ ÃÅÌÉ post-install ÄÌÑ Å£ ÒÅÇÉÓÔÒÁÃÉÉ × ËÜÛÅ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË. üÔÁ ÐÅÒÅÍÅÎÎÁÑ, ÅÓÌÉ ÏÎÁ ÏÐÒÅÄÅÌÅÎÁ, ÔÁËÖÅ ÐÒÉ×ÅÄ£Ô Ë ÄÏÂÁ×ÌÅÎÉÀ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ÐÁÒÙ ËÏÍÁÎÄ @exec /sbin/ldconfig -m É @unexec /sbin/ldconfig -R × ×ÁÛ ÆÁÊÌ pkg-plist, ÔÁË ÞÔÏ ÐÏÌØÚÏ×ÁÔÅÌØ, ÕÓÔÁÎÁ×ÌÉ×ÁÀÝÉÊ ÐÁËÅÔ, ÓÍÏÖÅÔ ÓÒÁÚÕ ÖÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÉÎÁÍÉÞÅÓËÕÀ ÂÉÂÌÉÏÔÅËÕ, Á ÕÄÁÌÅÎÉÅ ÐÁËÅÔÁ ÎÅ ÐÒÉ×ÅÄ£Ô Ë ÔÏÍÕ, ÞÔÏ ÓÉÓÔÅÍÁ ÂÕÄÅÔ ÐÒÅÄÐÏÌÁÇÁÔØ, ÞÔÏ ÂÉÂÌÉÏÔÅËÁ ×Ó£ ÅÝ£ ÉÍÅÅÔÓÑ × ÎÁÌÉÞÉÉ. USE_LDCONFIG= yes åÓÌÉ ÎÕÖÎÏ, ×Ù ÍÏÖÅÔÅ ÐÅÒÅÏÐÒÅÄÅÌÉÔØ ËÁÔÁÌÏÇ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÚÁÄÁ× ÚÎÁÞÅÎÉÅ USE_LDCONFIG, × ËÏÔÏÒÏÍ ÄÏÌÖÎÙ ÂÙÔØ ÐÅÒÅÞÉÓÌÅÎÙ ËÁÔÁÌÏÇÉ, × ËÏÔÏÒÙÅ ÕÓÔÁÎÁ×ÌÉ×ÁÀÔÓÑ ÄÉÎÁÍÉÞÅÓËÉÅ ÂÉÂÌÉÏÔÅËÉ. îÁÐÒÉÍÅÒ, ÅÓÌÉ ×ÁÛ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÄÉÎÁÍÉÞÅÓËÉÅ ÂÉÂÌÉÏÔÅËÉ × ËÁÔÁÌÏÇÉ PREFIX/lib/foo É PREFIX/lib/bar, ÔÏ ×Ù ÍÏÖÅÔÅ × ÆÁÊÌÅ Makefile ÕËÁÚÁÔØ ÓÌÅÄÕÀÝÅÅ: USE_LDCONFIG= ${PREFIX}/lib/foo ${PREFIX}/lib/bar âÕÄØÔÅ ÄÏÂÒÙ ÐÅÒÅÐÒÏ×ÅÒÉÔØ, Ô.Ë. ÞÁÓÔÏ ÜÔÏ ×Ï×ÓÅ ÎÅ Ñ×ÌÑÅÔÓÑ ÎÅÏÂÈÏÄÉÍÙÍ É ÍÏÖÅÔ ÂÙÔØ ÒÅÛÅÎÏ ÉÎÁÞÅ Ó ÐÏÍÏÝØÀ -rpath ÉÌÉ ÕÓÔÁÎÏ×ËÉ LD_RUN_PATH ×Ï ×ÒÅÍÑ ËÏÍÐÏÎÏ×ËÉ (ÄÌÑ ÐÒÉÍÅÒÁ ÓÍÏÔÒÉÔÅ lang/moscow_ml), ÉÌÉ Ó ÐÏÍÏÝØÀ ÓÃÅÎÁÒÉÑ-Ï£ÒÔËÉ, ËÏÔÏÒÙÊ ×ÙÓÔÁ×ÌÑÅÔ LD_LIBRARY_PATH ÐÅÒÅÄ ÚÁÐÕÓËÏÍ ÉÓÐÏÌÎÑÅÍÏÇÏ ÆÁÊÌÁ ËÁË ÜÔÏ ÄÅÌÁÅÔ www/seamonkey. ðÒÉ ÕÓÔÁÎÏ×ËÅ 32-ÒÁÚÒÑÄÎÙÈ ÂÉÂÌÉÏÔÅË ÎÁ 64-ÒÁÚÒÑÄÎÏÊ ÓÉÓÔÅÍÅ ÉÓÐÏÌØÚÕÊÔÅ ×ÍÅÓÔÏ ÜÔÏÇÏ USE_LDCONFIG32. ðÏÓÔÁÒÁÊÔÅÓØ ÓÏÈÒÁÎÑÔØ ÎÏÍÅÒÁ ×ÅÒÓÉÊ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË × ÆÏÒÍÁÔÅ libfoo.so.0. îÁÛ ËÏÍÐÏÎÏ×ÝÉË ÐÏÚÁÂÏÔÉÔÓÑ ÔÏÌØËÏ Ï ÓÔÁÒÛÅÍ (ÐÅÒ×ÏÍ) ÎÏÍÅÒÅ. åÓÌÉ ÐÒÉ ÏÂÎÏ×ÌÅÎÉÉ ÐÏÒÔÁ Õ×ÅÌÉÞÉ×ÁÅÔÓÑ ÓÔÁÒÛÉÊ ÎÏÍÅÒ ×ÅÒÓÉÉ ÂÉÂÌÉÏÔÅËÉ, ÔÏ ÄÌÑ ×ÓÅÈ ÐÏÒÔÏ×, ËÏÍÐÏÎÕÅÍÙÈ Ó ÚÁÔÒÏÎÕÔÏÊ ÂÉÂÌÉÏÔÅËÏÊ, ÓÌÅÄÕÅÔ Õ×ÅÌÉÞÉÔØ ÚÎÁÞÅÎÉÅ PORTREVISION ÄÌÑ ÆÏÒÓÉÒÏ×ÁÎÉÑ ÐÅÒÅËÏÍÐÉÌÑÃÉÉ Ó ÎÏ×ÏÊ ×ÅÒÓÉÅÊ ÂÉÂÌÉÏÔÅËÉ. ðÏÒÔÙ Ó ÏÇÒÁÎÉÞÅÎÉÑÍÉ ÎÁ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÅ ìÉÃÅÎÚÉÉ ÂÙ×ÁÀÔ ÒÁÚÎÙÈ ×ÉÄÏ×, É ÎÅËÏÔÏÒÙÅ ÎÁËÌÁÄÙ×ÁÀÔ ÏÇÒÁÎÉÞÅÎÉÅ ÎÁ ÔÏ, ËÁË ÐÒÉÌÏÖÅÎÉÅ ÍÏÖÅÔ ÂÙÔØ ÏÆÏÒÍÌÅÎÏ × ×ÉÄÅ ÐÁËÅÔÁ, ÍÏÖÅÔ ÌÉ ÏÎÏ ÐÒÏÄÁ×ÁÔØÓÑ ÄÌÑ ÉÚ×ÌÅÞÅÎÉÑ ËÏÍÍÅÒÞÅÓËÏÊ ×ÙÇÏÄÙ, É ÔÁË ÄÁÌÅÅ. îÁ ×ÁÓ, ËÁË ÎÁ ÞÅÌÏ×ÅËÁ, ÐÏÒÔÉÒÕÀÝÅÇÏ ÐÒÉÌÏÖÅÎÉÅ, ÌÏÖÉÔÓÑ ÏÂÑÚÁÎÎÏÓÔØ ÐÒÏÞÅÓÔØ ÌÉÃÅÎÚÉÏÎÎÙÅ ÓÏÇÌÁÛÅÎÉÑ ÎÁ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ É ÕÄÏÓÔÏ×ÅÒÉÔØÓÑ, ÞÔÏ ÐÒÏÅËÔ FreeBSD ÎÅ ÂÕÄÅÔ Ñ×ÌÑÔØÓÑ ÉÈ ÎÁÒÕÛÉÔÅÌÅÍ, ÅÓÌÉ ÂÕÄÅÔ ÚÁÎÉÍÁÔØÓÑ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÅÍ ÉÓÈÏÄÎÏÇÏ ËÏÄÁ ÉÌÉ × ÂÉÎÁÒÎÏÍ ×ÉÄÅ ÐÏ FTP/HTTP ÉÌÉ ÎÁ CD-ROM. åÓÌÉ Õ ×ÁÓ ×ÏÚÎÉËÌÉ ÓÏÍÎÅÎÉÑ, ÔÏ, ÐÏÖÁÌÕÊÓÔÁ, ÏÂÒÁÔÉÔÅÓØ × &a.ports;. ÷ ÐÏÄÏÂÎÙÈ ÓÉÔÕÁÃÉÑÈ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÅÒÅÍÅÎÎÙÅ, ÏÐÉÓÙ×ÁÅÍÙÅ × ÐÏÓÌÅÄÕÀÝÉÈ ÒÁÚÄÅÌÁÈ. <makevar>NO_PACKAGE</makevar> üÔÁ ÐÅÒÅÍÅÎÎÁÑ ÕËÁÚÙ×ÁÅÔ, ÞÔÏ ÍÙ ÎÅ ÍÏÖÅÍ ÓÏÚÄÁ×ÁÔØ ÄÌÑ ÐÒÉÌÏÖÅÎÉÑ Ä×ÏÉÞÎÙÊ ÐÁËÅÔ. ë ÐÒÉÍÅÒÕ, ÌÉÃÅÎÚÉÑ ÎÅ ÐÏÚ×ÏÌÑÅÔ ÂÉÎÁÒÎÏÅ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÅ ÉÌÉ ÏÎÁ ÍÏÖÅÔ ÚÁÐÒÅÝÁÔØ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÅ ÐÁËÅÔÏ×, ÓÏÚÄÁÎÎÙÈ ÉÚ ÉÚÍÅΣÎÎÙÈ ÉÓÈÏÄÎÉËÏ×. ïÄÎÁËÏ ÆÁÊÌÙ DISTFILES ÍÏÇÕÔ Ó×ÏÂÏÄÎÏ ÚÅÒËÁÌÉÒÏ×ÁÔØÓÑ ÐÏ FTP/HTTP. ïÎÉ ÔÁËÖÅ ÍÏÇÕÔ ÒÁÓÐÒÏÓÔÒÁÎÑÔØÓÑ, ÉÓÐÏÌØÚÕÑ CD-ROM (ÉÌÉ ÎÁ ÐÏÈÏÖÉÈ ÎÏÓÉÔÅÌÑÈ), ÅÓÌÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ ÐÅÒÅÍÅÎÎÁÑ NO_CDROM. NO_PACKAGE ÄÏÌÖÎÁ ÔÁËÖÅ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ, ÅÓÌÉ Ä×ÏÉÞÎÙÊ ÐÁËÅÔ, ËÁË ÐÒÁ×ÉÌÏ, ÂÅÓÐÏÌÅÚÅÎ, Á ÐÒÉÌÏÖÅÎÉÅ ÄÏÌÖÎÏ ×ÓÅÇÄÁ ËÏÍÐÉÌÉÒÏ×ÁÔØÓÑ ÉÚ ÉÓÈÏÄÎÏÇÏ ËÏÄÁ. ë ÐÒÉÍÅÒÕ, ÅÓÌÉ × ÐÒÉÌÏÖÅÎÉÅ ×Ï ×ÒÅÍÑ ËÏÍÐÉÌÑÃÉÉ Ö£ÓÔËÏ ×ËÌÀÞÁÅÔÓÑ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÁÑ ÉÎÆÏÒÍÁÃÉÑ, ÐÒÉ×ÑÚÁÎÎÁÑ Ë ËÏÎËÒÅÔÎÏÊ ÓÉÓÔÅÍÅ, ÔÏ ÚÁÄÁÊÔÅ ÐÅÒÅÍÅÎÎÕÀ NO_PACKAGE. úÎÁÞÅÎÉÅÍ ÐÅÒÅÍÅÎÎÏÊ NO_PACKAGE ÄÏÌÖÎÁ ÂÙÔØ ÓÔÒÏËÁ, ÏÐÉÓÙ×ÁÀÝÁÑ ÐÒÉÞÉÎÕ, ÐÏ ËÏÔÏÒÏÊ ÐÁËÅÔ ÎÅ ÄÏÌÖÅÎ ÓÏÚÄÁ×ÁÔØÓÑ. <makevar>NO_CDROM</makevar> üÔÁ ÐÅÒÅÍÅÎÎÁÑ ÕËÁÚÙ×ÁÅÔ ÎÁ ÔÏ, ÞÔÏ, ÈÏÔÑ ÍÙ ÉÍÅÅÍ ÐÒÁ×Ï ÓÏÚÄÁ×ÁÔØ ÂÉÎÁÒÎÙÅ ÐÁËÅÔÙ, ÍÙ ÎÅ ÍÏÖÅÍ ÐÏÍÅÝÁÔØ ÜÔÉ ÐÁËÅÔÙ ÉÌÉ ÆÁÊÌÙ DISTFILES ÐÏÒÔÁ ÎÁ CD-ROM (ÉÌÉ ÎÁ ÐÏÈÏÖÉÅ ÎÏÓÉÔÅÌÉ) ÄÌÑ ÐÅÒÅÐÒÏÄÁÖÉ. ïÄÎÁËÏ ÂÉÎÁÒÎÙÅ ÐÁËÅÔÙ É ÆÁÊÌÙ DISTFILES ÐÏÒÔÁ ÂÕÄÕÔ ÏÓÔÁ×ÁÔØÓÑ ÄÏÓÔÕÐÎÙÍÉ ÐÏÓÒÅÄÓÔ×ÏÍ FTP/HTTP. åÓÌÉ ÜÔÁ ÐÅÒÅÍÅÎÎÁÑ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ×ÍÅÓÔÅ Ó NO_PACKAGE, ÔÏ ÔÏÌØËÏ ÆÁÊÌÙ ÐÏÒÔÁ DISTFILES ÂÕÄÕÔ ÄÏÓÔÕÐÎÙ, É ÔÏÌØËÏ ÐÏÓÒÅÄÓÔ×ÏÍ FTP/HTTP. ÷ ËÁÞÅÓÔ×Å ÚÎÁÞÅÎÉÑ NO_CDROM ÄÏÌÖÎÁ ÕËÁÚÙ×ÁÔØÓÑ ÓÔÒÏËÁ, ÏÐÉÓÙ×ÁÀÝÁÑ ÐÒÉÞÉÎÙ, ÐÏ ËÏÔÏÒÙÍ ÐÏÒÔ ÎÅ ÍÏÖÅÔ ÒÁÓÐÒÏÓÔÒÁÎÑÔØÓÑ ÎÁ CD-ROM. ë ÐÒÉÍÅÒÕ, ÜÔÏ ÐÒÉÍÅÎÑÅÔÓÑ, ÅÓÌÉ ÌÉÃÅÎÚÉÏÎÎÏÅ ÓÏÇÌÁÛÅÎÉÅ ÐÒÉÌÏÖÅÎÉÑ ÐÒÅÄÐÏÌÁÇÁÅÔ ÔÏÌØËÏ ÅÇÏ ÎÅËÏÍÍÅÒÞÅÓËÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ. <makevar>NOFETCHFILES</makevar> æÁÊÌÙ, ÏÐÒÅÄÅÌÅÎÎÙÅ × ÐÅÒÅÍÅÎÎÏÊ NOFETCHFILES, ÎÅ ÂÕÄÕÔ ÉÚ×ÌÅËÁÔØÓÑ ÎÉ ÉÚ ÏÄÎÏÇÏ ÉÚ MASTER_SITES. ðÒÉÍÅÒÏÍ ÔÁËÏÇÏ ÆÁÊÌÁ Ñ×ÌÑÅÔÓÑ ÆÁÊÌ, ÐÏÓÔÁ×ÌÑÅÍÙÊ ÎÁ CD-ROM. éÎÓÔÒÕÍÅÎÔÙ, ÐÒÏ×ÅÒÑÀÝÉÅ ÄÏÓÔÕÐÎÏÓÔØ ÜÔÉÈ ÆÁÊÌÏ× ÎÁ MASTER_SITES, ÄÏÌÖÎÙ ÉÇÎÏÒÉÒÏ×ÁÔØ ÜÔÉ ÆÁÊÌÙ É ÎÅ ÓÏÏÂÝÁÔØ Ï ÎÉÈ. <makevar>RESTRICTED</makevar> úÁÄÁÊÔÅ ÜÔÕ ÐÅÒÅÍÅÎÎÕÀ, ÅÓÌÉ ÌÉÃÅÎÚÉÑ ÎÁ ÐÒÉÌÏÖÅÎÉÅ ÎÅ ÐÏÚ×ÏÌÑÅÔ ÎÉ ÚÅÒËÁÌÉÒÏ×ÁÔØ ÆÁÊÌÙ DISTFILES, ÎÉ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÂÉÎÁÒÎÙÊ ÐÁËÅÔ ÞÅÒÅÚ FTP/HTTP ÉÌÉ ÎÁ CD-ROM. îÉ NO_CDROM, ÎÉ NO_PACKAGE ÎÅ ÓÔÏÉÔ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ×ÍÅÓÔÅ Ó RESTRICTED, ÔÁË ËÁË ÐÏÓÌÅÄÎÑÑ ÐÅÒÅÍÅÎÎÁÑ ÐÏÄÒÁÚÕÍÅ×ÁÅÔ ÐÅÒ×ÙÅ Ä×Å. ÷ ËÁÞÅÓÔ×Å ÚÎÁÞÅÎÉÑ RESTRICTED ÄÏÌÖÎÁ ÕËÁÚÙ×ÁÔØÓÑ ÓÔÒÏËÁ, ÏÐÉÓÙ×ÁÀÝÁÑ ÐÒÉÞÉÎÙ, ÐÏ ËÏÔÏÒÙÍ ÐÏÒÔ ÎÅÌØÚÑ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ. ïÂÙÞÎÏ ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÐÏÒÔ ÉÓÐÏÌØÚÕÅÔ ÚÁËÒÙÔÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ, Á ÐÏÌØÚÏ×ÁÔÅÌØ ÄÏÌÖÅÎ ×ÒÕÞÎÕÀ ÓÇÒÕÚÉÔØ ÆÁÊÌÙ DISTFILES, ×ÏÚÍÏÖÎÏ, ÐÏÓÌÅ ÚÁÐÏÌÎÅÎÉÑ ÒÅÇÉÓÔÒÁÃÉÏÎÎÏÊ ÆÏÒÍÙ ÉÌÉ ÐÏÄÔ×ÅÒÖÄÅÎÉÑ ÓÏÇÌÁÛÅÎÉÑ Ó ÕÓÌÏ×ÉÑÍÉ EULA. <makevar>RESTRICTED_FILES</makevar> åÓÌÉ ÚÁÄÁÎÙ RESTRICTED ÉÌÉ NO_CDROM, ÔÏ ÚÎÁÞÅÎÉÅ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÐÏ ÕÍÏÌÞÁÎÉÀ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ${DISTFILES} ${PATCHFILES}, × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÏÎÁ ÐÕÓÔÁ. åÓÌÉ ÏÇÒÁÎÉÞÅÎÙ × ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÉ ÌÉÛØ ÎÅËÏÔÏÒÙÅ ÉÚ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ×, ÔÏ × ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÚÁÄÁ£ÔÓÑ ÉÈ ÓÐÉÓÏË. ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÐÒÉ ×ËÌÀÞÅÎÉÉ ÐÏÒÔÁ × ÄÅÒÅ×Ï ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× ÓÉÓÔÅÍÙ ËÏÍÍÉÔÔÅÒ ÄÏÌÖÅÎ ÄÏÂÁ×ÉÔØ ÚÁÐÉÓØ × ÆÁÊÌ /usr/ports/LEGAL ÄÌÑ ËÁÖÄÏÇÏ ÉÚ ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÆÁÊÌÏ×, × ÔÏÞÎÏÓÔÉ ÏÐÉÓÁ×, ÞÔÏ ÐÏÄÒÁÚÕÍÅ×ÁÀÔ ÏÇÒÁÎÉÞÅÎÉÑ. ðÒÉÍÅÒÙ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ðÒÅÄÐÏÞÔÉÔÅÌØÎÙÍ ÓÐÏÓÏÂÏÍ ÒÅÁÌÉÚÁÃÉÉ ÕÔ×ÅÒÖÄÅÎÉÑ "ÁÒÈÉ×Ù ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× ÄÌÑ ÜÔÏÇÏ ÐÏÒÔÁ ÄÏÌÖÎÙ ÚÁÇÒÕÖÁÔØÓÑ ÓÁÍÏÓÔÏÑÔÅÌØÎÏ" Ñ×ÌÑÅÔÓÑ ÓÌÅÄÕÀÝÅÅ: .if !exists(${DISTDIR}/${DISTNAME}${EXTRACT_SUFX}) IGNORE= may not be redistributed because of licensing reasons. Please visit some-website to accept their license and download ${DISTFILES} into ${DISTDIR} .endif üÔÏ ÏÄÎÏ×ÒÅÍÅÎÎÏ É ÉÎÆÏÒÍÉÒÕÅÔ ÐÏÌØÚÏ×ÁÔÅÌÑ, É ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÎÕÖÎÙÅ ÍÅÔÁÄÁÎÎÙÅ ÎÁ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÊ ÍÁÛÉÎÅ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ Á×ÔÏÍÁÔÉÞÅÓËÉÍÉ ÐÒÏÇÒÁÍÍÁÍÉ. ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÄÁÎÎÁÑ ËÌÑÕÚÁ ÄÏÌÖÎÁ ÐÒÅÄÛÅÓÔ×Ï×ÁÔØ ÐÏÄËÌÀÞÅÎÉÀ ÆÁÊÌÁ bsd.port.pre.mk. íÅÈÁÎÉÚÍÙ ÐÏÓÔÒÏÅÎÉÑ ðÁÒÁÌÌÅÌØÎÏÅ ÐÏÓÔÒÏÅÎÉÅ ÐÏÒÔÏ× éÎÆÒÁÓÔÒÕËÔÕÒÁ ÐÏÒÔÏ× &os; ÐÏÄÄÅÒÖÉ×ÁÅÔ ÐÁÒÁÌÌÅÌØÎÏÅ ÐÏÓÔÒÏÅÎÉÅ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÍÎÏÖÅÓÔ×ÅÎÎÙÈ ÐÏÄÐÒÏÃÅÓÓÏ× make, ÞÔÏ ÐÏÚ×ÏÌÑÅÔ ÓÉÓÔÅÍÁÍ SMP ÚÁÄÅÊÓÔ×Ï×ÁÔØ ×ÓÀ ÄÏÓÔÕÐÎÕÀ ÍÏÝÎÏÓÔØ CPU, ÔÅÍ ÓÁÍÙÍ ÄÅÌÁÑ ÐÏÓÔÒÏÅÎÉÅ ÐÏÒÔÏ× ÂÏÌÅÅ ÂÙÓÔÒÙÍ É ÜÆÆÅËÔÉ×ÎÙÍ. üÔÏ ÄÏÓÔÉÇÁÅÔÓÑ ÐÕÔÅÍ ÐÅÒÅÄÁÞÉ ÆÌÁÇÁ -jX ËÏÍÁÎÄÅ &man.make.1;. ë ÓÏÖÁÌÅÎÉÀ, ÎÅ ×ÓÅ ÐÏÒÔÙ ÐÏÄÄÅÒÖÉ×ÁÀÔ ÐÁÒÁÌÌÅÌØÎÕÀ ÓÂÏÒËÕ ÄÏÓÔÁÔÏÞÎÏ ÈÏÒÏÛÏ. ðÏÜÔÏÍÕ ÔÒÅÂÕÅÔÓÑ ×ËÌÀÞÁÔØ ÜÔÏÔ ÍÅÈÁÎÉÚÍ Ñ×ÎÙÍ ÏÂÒÁÚÏÍ ÐÕÔÅÍ ÄÏÂÁ×ÌÅÎÉÑ ÓÔÒÏËÉ MAKE_JOBS_SAFE=yes × Makefile ÇÄÅ-ÎÉÂÕÄØ ÐÏÓÌÅ ÒÁÚÄÅÌÁ Ó ÏÂßÑ×ÌÅÎÉÑÍÉ ÚÁ×ÉÓÉÍÏÓÔÅÊ. äÒÕÇÏÊ ÏÐÃÉÅÊ ÕÐÒÁ×ÌÅÎÉÑ ÜÔÉÍ ÍÅÈÁÎÉÚÍÏÍ Ó ÔÏÞËÉ ÚÒÅÎÉÑ ÓÏÐÒÏ×ÏÖÄÁÀÝÅÇÏ Ñ×ÌÑÅÔÓÑ MAKE_JOBS_UNSAFE=yes. üÔÁ ÐÅÒÅÍÅÎÎÁÑ ÉÓÐÏÌØÚÕÅÔÓÑ × ÓÌÕÞÁÅ, ËÏÇÄÁ ÉÚ×ÅÓÔÎÏ, ÞÔÏ ÐÏÒÔ ÌÏÍÁÅÔÓÑ Ó -jX, É ÐÏÌØÚÏ×ÁÔÅÌØ ÆÏÒÓÉÒÕÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÎÏÇÏÐÒÏÃÅÓÓÏÒÎÏÊ ËÏÍÐÉÌÑÃÉÉ ÄÌÑ ×ÓÅÈ ÐÏÒÔÏ× Ó ÐÅÒÅÍÅÎÎÏÊ FORCE_MAKE_JOBS=yes × /etc/make.conf. <command>make</command>, <command>gmake</command> É <command>imake</command> åÓÌÉ ×ÁÛ ÐÏÒÔ ÉÓÐÏÌØÚÕÅÔ GNU make, ÔÏ ÕÓÔÁÎÏ×ÉÔÅ USE_GMAKE=yes. ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ <application>gmake</application> ðÅÒÅÍÅÎÎÁÑ úÎÁÞÅÎÉÅ USE_GMAKE äÌÑ ÓÂÏÒËÉ ÐÏÒÔÁ ÔÒÅÂÕÅÔÓÑ gmake. GMAKE ðÏÌÎÙÊ ÐÕÔØ Ë ËÏÍÁÎÄÅ gmake, ÅÓÌÉ ÏÔÓÕÔÓÔ×ÕÅÔ × PATH.
åÓÌÉ ×ÁÛ ÐÏÒÔ Ñ×ÌÑÅÔÓÑ ÐÒÉÌÏÖÅÎÉÅÍ X, ËÏÔÏÒÏÅ ÓÏÚÄÁÅÔ ÆÁÊÌÙ Makefile ÉÚ Imakefile, ÉÓÐÏÌØÚÕÑ imake, ÔÏ ÕÓÔÁÎÏ×ÉÔÅ USE_IMAKE=yes. üÔÏ ÚÁÓÔÁ×ÉÔ ÓÔÁÄÉÀ ËÏÎÆÉÇÕÒÉÒÏ×ÁÎÉÑ Á×ÔÏÍÁÔÉÞÅÓËÉ ×ÙÐÏÌÎÉÔØ xmkmf -a. åÓÌÉ ÆÌÁÇ ÐÒÅÄÓÔÁ×ÌÑÅÔ ÄÌÑ ×ÁÛÅÇÏ ÐÏÒÔÁ ÐÒÏÂÌÅÍÕ, ÔÏ ÕÓÔÁÎÏ×ÉÔÅ XMKMF=xmkmf. åÓÌÉ ÐÏÒÔ ÉÓÐÏÌØÚÕÅÔ imake, ÎÏ ÎÅ ÐÏÎÉÍÁÅÔ ÃÅÌØ install.man, ÔÏ ÓÌÅÄÕÅÔ ÕÓÔÁÎÏ×ÉÔØ NO_INSTALL_MANPAGES=yes. åÓÌÉ ÉÓÈÏÄÎÙÊ Makefile ×ÁÛÅÇÏ ÐÏÒÔÁ ÉÍÅÅÔ ÞÔÏ-ÎÉÂÕÄØ ÐÏÍÉÍÏ all × ËÁÞÅÓÔ×Å ÏÓÎÏ×ÎÏÊ ÃÅÌÉ ÐÏÓÔÒÏÅÎÉÑ, ÔÏ ÚÁÄÁÊÔÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ ÚÎÁÞÅÎÉÅ ALL_TARGET. ôÏ ÖÅ ËÁÓÁÅÔÓÑ install É INSTALL_TARGET.
óÃÅÎÁÒÉÊ <command>configure</command> åÓÌÉ ×ÁÛ ÐÏÒÔ ÉÓÐÏÌØÚÕÅÔ ÓÃÅÎÁÒÉÊ configure ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÆÁÊÌÏ× Makefile ÉÚ ÆÁÊÌÏ× Makefile.in, ÔÏ ÕÓÔÁÎÏ×ÉÔÅ GNU_CONFIGURE=yes. åÓÌÉ ×Ù ÈÏÔÉÔÅ ÄÁÔØ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÁÒÁÍÅÔÒÙ ÓÃÅÎÁÒÉÀ configure (ÁÒÇÕÍÅÎÔÏÍ ÐÏ ÕÍÏÌÞÁÎÉÀ Ñ×ÌÑÅÔÓÑ --prefix=${PREFIX} --infodir=${PREFIX}/${INFO_PATH} --mandir=${MANPREFIX}/man --build=${CONFIGURE_TARGET}), ÕÓÔÁÎÏ×ÉÔÅ ÜÔÉ ÐÁÒÁÍÅÔÒÙ × CONFIGURE_ARGS. äÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÏËÒÕÖÅÎÉÑ ÍÏÖÎÏ ÐÅÒÅÄÁÔØ, ÉÓÐÏÌØÚÕÑ ÐÅÒÅÍÅÎÎÕÀ CONFIGURE_ENV. ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ <command>configure</command> ðÅÒÅÍÅÎÎÁÑ úÎÁÞÅÎÉÅ GNU_CONFIGURE ðÏÒÔ ÉÓÐÏÌØÚÕÅÔ ÓÃÅÎÁÒÉÊ configure ÄÌÑ ÐÏÄÇÏÔÏ×ËÉ ÐÏÓÔÒÏÅÎÉÑ. HAS_CONFIGURE ôÏ ÖÅ, ÞÔÏ É GNU_CONFIGURE, ËÒÏÍÅ ÔÏÇÏ, ÞÔÏ ÃÅÌØ configure ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÅ ÄÏÂÁ×ÌÑÅÔÓÑ × CONFIGURE_ARGS. CONFIGURE_ARGS äÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÁÒÁÍÅÔÒÙ, ÐÅÒÅÄÁ×ÁÅÍÙÅ ÓÃÅÎÁÒÉÀ configure. CONFIGURE_ENV äÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÏËÒÕÖÅÎÉÑ, ÚÁÄÁ×ÁÅÍÙÅ ÄÌÑ ÚÁÐÕÓËÁ ÓÃÅÎÁÒÉÑ configure. CONFIGURE_TARGET ðÅÒÅÏÐÒÅÄÅÌÉÔØ ÃÅÌØ configure ÐÏ ÕÍÏÌÞÁÎÉÀ. úÎÁÞÅÎÉÅÍ ÐÏ ÕÍÏÌÞÁÎÉÀ Ñ×ÌÑÅÔÓÑ ${MACHINE_ARCH}-portbld-freebsd${OSREL}.
éÓÐÏÌØÚÏ×ÁÎÉÅ <command>scons</command> åÓÌÉ ×ÁÛ ÐÏÒÔ ÉÓÐÏÌØÚÕÅÔ SCons, ÏÐÒÅÄÅÌÉÔÅ USE_SCONS=yes. ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ <command>scons</command> ðÅÒÅÍÅÎÎÁÑ úÎÁÞÅÎÉÑ SCONS_ARGS óÐÅÃÉÆÉÞÎÙÅ ÄÌÑ ÐÏÒÔÁ ÆÌÁÇÉ SCons, ÐÅÒÅÄÁ×ÁÅÍÙÅ ÏËÒÕÖÅÎÉÀ SCons. SCONS_BUILDENV ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÕÓÔÁÎÏ×ËÉ × ÓÉÓÔÅÍÎÏÍ ÏËÒÕÖÅÎÉÉ. SCONS_ENV ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÕÓÔÁÎÏ×ËÉ × ÏËÒÕÖÅÎÉÉ SCons. SCONS_TARGET ðÏÓÌÅÄÎÉÊ ÐÁÒÁÍÅÔÒ ÄÌÑ ÐÅÒÅÄÁÞÉ SCons, ÐÏÈÏÖÉÊ ÎÁ MAKE_TARGET.
äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÓÔÏÒÏÎÎÉÊ SConstruct ÓÏÏÔ×ÅÔÓÔ×Ï×ÁÌ ×ÓÅÍÕ, ÞÔÏ ÐÅÒÅÄÁÅÔÓÑ SCons × ÐÅÒÅÍÅÎÎÏÊ SCONS_ENV (ÓÁÍÏÅ ÇÌÁ×ÎÏÅ, ÜÔÏ CC/CXX/CFLAGS/CXXFLAGS), ÐÒÉÍÅÎÉÔÅ ÐÁÔÞ Ë SConstruct, ÔÁË ÞÔÏÂÙ ÐÅÒÅÍÅÎÎÁÑ ÐÏÓÔÒÏÅÎÉÑ Environment ×ÙÇÌÑÄÅÌÁ ÓÌÅÄÕÀÝÉÍ ÏÂÒÁÚÏÍ: env = Environment(**ARGUMENTS) ÷ ÄÁÌØÎÅÊÛÅÍ ÅÅ ÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÐÒÉ ÐÏÍÏÝÉ env.Append É env.Replace.
éÓÐÏÌØÚÏ×ÁÎÉÅ GNU autotools ÷×ÅÄÅÎÉÅ òÁÚÌÉÞÎÙÅ ÉÎÓÔÒÕÍÅÎÔÙ GNU autotools ÐÒÅÄÏÓÔÁ×ÌÑÀÔ ÍÅÈÁÎÉÚÍ ÁÂÓÔÒÁËÃÉÉ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ ÞÁÓÔÅÊ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ ÎÁ ÛÉÒÏËÏÍ ÎÁÂÏÒÅ ÏÐÅÒÁÃÉÏÎÎÙÈ ÓÉÓÔÅÍ É ÁÐÐÁÒÁÔÎÙÈ ÁÒÈÉÔÅËÔÕÒ. ÷ÎÕÔÒÉ ëÏÌÌÅËÃÉÉ ðÏÒÔÏ× ÏÔÄÅÌØÎÙÊ ÐÏÒÔ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÉ ÉÎÓÔÒÕÍÅÎÔÙ ÐÒÉ ÐÏÍÏÝÉ ÐÒÏÓÔÙÈ ËÏÎÓÔÒÕËÃÉÊ: USE_AUTOTOOLS= tool:version[:operation] ... ë ÍÏÍÅÎÔÕ ÎÁÐÉÓÁÎÉÑ tool ÍÏÖÅÔ ÂÙÔØ ÏÄÎÉÍ ÉÚ libtool, libltdl, autoconf, autoheader, automake ÉÌÉ aclocal. version ÕËÁÚÙ×ÁÅÔ ËÏÎËÒÅÔÎÕÀ ×ÅÒÓÉÀ ÉÓÐÏÌØÚÕÅÍÏÇÏ ÉÎÓÔÒÕÍÅÎÔÁ (ÄÅÊÓÔ×ÕÀÝÉÅ ×ÅÒÓÉÉ ÓÍÏÔÒÉÔÅ × devel/{automake,autoconf,libtool}[0-9]+). operation Ñ×ÌÑÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÍ ÒÁÓÛÉÒÅÎÉÅÍ É ÕËÁÚÙ×ÁÅÔ ÎÁ ÓÐÏÓÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÉÎÓÔÒÕÍÅÎÔÁ. ïÄÎÏ×ÒÅÍÅÎÎÏ ÍÏÖÅÔ ÂÙÔØ ÕËÁÚÁÎÏ ÎÅÓËÏÌØËÏ ÉÎÓÔÒÕÍÅÎÔÏ×, ÄÏÂÁ×ÌÑÑ ÉÈ ×ÓÅ ÎÁ ÏÄÎÏÊ ÓÔÒÏËÅ ÉÌÉ ÉÓÐÏÌØÚÕÑ ËÏÎÓÔÒÕËÃÉÀ Makefile +=. ÷ ÚÁËÌÀÞÅÎÉÅ, ÓÕÝÅÓÔ×ÕÅÔ ÓÐÅÃÉÁÌØÎÙÊ ÉÎÓÔÒÕÍÅÎÔ ÐÏ ÎÁÚÙ×ÁÎÉÀ autotools, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÕÄÏÂÎÏÊ ÆÕÎËÃÉÅÊ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ×ÓÅÈ ÄÏÓÔÕÐÎÙÈ ×ÅÒÓÉÊ autotools ÄÌÑ ×ÏÚÍÏÖÎÏÓÔÉ ÐÒÏ×ÅÄÅÎÉÑ ËÒÏÓÓ-ÒÁÚÒÁÂÏÔËÉ. üÔÏ ÔÁËÖÅ ÍÏÖÅÔ ÂÙÔØ ÄÏÓÔÉÇÎÕÔÏ ÐÕÔÅÍ ÕÓÔÁÎÏ×ËÉ ÐÏÒÔÁ devel/autotools. <command>libtool</command> äÉÎÁÍÉÞÅÓËÉÅ ÂÉÂÌÉÏÔÅËÉ, ÉÓÐÏÌØÚÕÀÝÉÅ ÉÎÆÒÁÓÔÒÕËÔÕÒÕ ÐÏÓÔÒÏÅÎÉÑ GNU, ÏÂÙÞÎÏ ÉÓÐÏÌØÚÕÀÔ libtool ÄÌÑ ÎÁÓÔÒÏÊËÉ ËÏÍÐÉÌÑÃÉÉ É ÕÓÔÁÎÏ×ËÉ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÏÓÏÂÅÎÎÏÓÔÑÍÉ ÄÁÎÎÏÊ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ. ÷ ÔÉÐÉÞÎÏÊ ÐÒÁËÔÉËÅ ÉÓÐÏÌØÚÕÅÔÓÑ ËÏÐÉÒÏ×ÁÎÉÅ ×ÓÔÒÏÅÎÎÏÇÏ × ÐÒÉÌÏÖÅÎÉÅ libtool. åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÎÅÛÎÀÀ ËÏÍÁÎÄÕ libtool, ÔÏ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÅÒÓÉÀ, ÐÏÓÔÁ×ÌÑÅÍÕÀ ëÏÌÌÅËÃÉÅÊ ðÏÒÔÏ×: USE_AUTOTOOLS= libtool:version[:env] ðÒÉ ÏÔÓÕÔÓÔ×ÉÉ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÏÐÅÒÁÃÉÊ, libtool:version ÓÏÏÂÝÁÅÔ ÉÎÆÒÁÓÔÒÕËÔÕÒÅ ÐÏÓÔÒÏÅÎÉÑ Ï ÐÒÉÍÅÎÅÎÉÉ ÐÁÔÞÁ Ë ÓÃÅÎÁÒÉÀ configure Ó ÕÓÔÁÎÏ×ÌÅÎÎÏÊ × ÓÉÓÔÅÍÅ ËÏÐÉÅÊ libtool. ðÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ The GNU_CONFIGURE âÏÌÅÅ ÔÏÇÏ, ÎÅËÏÔÏÒÙÅ ÐÅÒÅÍÅÎÎÙÅ make É ÏÂÏÌÏÞËÉ shell ÂÕÄÕÔ ÎÁÚÎÁÞÅÎÙ ÄÌÑ ÄÁÌØÎÅÊÛÅÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÜÔÉÍ ÐÏÒÔÏÍ. ðÏÄÒÏÂÎÏÓÔÉ ÓÍÏÔÒÉÔÅ × bsd.autotools.mk. ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÏÐÅÒÁÃÉÉ :env ÂÕÄÅÔ ÎÁÓÔÒÏÅÎÏ ÔÏÌØËÏ ÏËÒÕÖÅÎÉÅ. îÁËÏÎÅÃ, LIBTOOLFLAGS É LIBTOOLFILES ÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÐÏ ÖÅÌÁÎÉÀ, ÞÔÏÂÙ ÐÅÒÅÏÐÒÅÄÅÌÉÔØ ÎÁÉÂÏÌÅÅ ×ÅÒÏÑÔÎÙÅ ÁÒÇÕÍÅÎÔÙ ÄÌÑ libtool É ÆÁÊÌÙ, ÐÒÅÄÎÁÚÎÁÞÅÎÎÙÅ ÄÌÑ ÉÚÍÅÎÅÎÉÑ. âÏÌØÛÉÎÓÔ×Õ ÐÏÒÔÏ× ÜÔÏ ÓËÏÒÅÅ ×ÓÅÇÏ ÎÅ ÐÏÎÁÄÏÂÉÔÓÑ. äÌÑ ÄÁÌØÎÅÊÛÉÈ ÐÏÄÒÏÂÎÏÓÔÅÊ ÓÍÏÔÒÉÔÅ bsd.autotools.mk. <command>libltdl</command> îÅËÏÔÏÒÙÅ ÐÏÒÔÙ ÚÁÄÅÊÓÔ×ÕÀÔ ÐÁËÅÔ Ó ÂÉÂÌÉÏÔÅËÏÊ libltdl, ËÏÔÏÒÁÑ Ñ×ÌÑÅÔÓÑ ÞÁÓÔØÀ ËÏÍÐÌÅËÔÁ libtool. éÓÐÏÌØÚÏ×ÁÎÉÅ ÜÔÏÊ ÂÉÂÌÉÏÔÅËÉ ÎÅ ×ÙÚÙ×ÁÅÔ Á×ÔÏÍÁÔÉÞÅÓËÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÓÁÍÏÊ libtool, É, ÔÁËÉÍ ÏÂÒÁÚÏÍ, ÏÂÅÓÐÅÞÉ×ÁÅÔÓÑ ÏÔÄÅÌØÎÁÑ ËÏÎÓÔÒÕËÃÉÑ. USE_AUTOTOOLS= libltdl:version ÷Ó£, ÞÔÏ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ ÏÎÁ ÄÅÌÁÅÔ, ÜÔÏ ÄÏÂÁ×ÌÅÎÉÅ LIB_DEPENDS ÄÌÑ ÐÏÄÈÏÄÑÝÅÇÏ ÐÏÒÔÁ libltdl, ÐÏÔÏÍÕ ÏÎÁ ÐÒÅÄÏÓÔÁ×ÌÑÅÔÓÑ ËÁË ÕÄÏÂÎÁÑ ÆÕÎËÃÉÑ ÄÌÑ ÐÏÍÏÝÉ × ÕÓÔÒÁÎÅÎÉÉ ×ÓÑËÉÈ ÚÁ×ÉÓÉÍÏÓÔÅÊ ÏÔ ÐÏÒÔÏ× autotools ×ÎÅ ÉÎÆÒÁÓÔÒÕËÔÕÒÙ USE_AUTOTOOLS. äÌÑ ÜÔÏÇÏ ÉÎÓÔÒÕÍÅÎÔÁ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ ÏÐÅÒÁÃÉÊ. <command>autoconf</command> É <command>autoheader</command> îÅËÏÔÏÒÙÅ ÐÏÒÔÙ ÎÅ ÓÏÄÅÒÖÁÔ ÓÃÅÎÁÒÉÊ configure, ÎÏ ÓÏÄÅÒÖÁÔ ÛÁÂÌÏÎ autoconf × ÆÁÊÌÅ configure.ac. ÷Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÌÅÄÕÀÝÉÅ ÐÒÉÓ×ÏÅÎÉÑ, ÞÔÏÂÙ ÐÏÚ×ÏÌÉÔØ autoconf ÓÏÚÄÁÔØ ÓÃÅÎÁÒÉÊ configure, Á autoheader ÓÏÚÄÁÔØ ÚÁÇÏÌÏ×ËÉ ÛÁÂÌÏÎÁ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × ÓÃÅÎÁÒÉÉ configure. USE_AUTOTOOLS= autoconf:version[:env] É USE_AUTOTOOLS= autoheader:version ËÏÔÏÒÙÅ ÔÁËÖÅ ÐÏÄÒÁÚÕÍÅ×ÁÀÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ autoconf:version. áÎÁÌÏÇÉÞÎÏ ËÏÍÁÎÄÅ libtool, ÐÏÄËÌÀÞÅÎÉÅ ÎÅÏÂÑÚÁÔÅÌØÎÏÊ ÏÐÅÒÁÃÉÉ :env ×ÓÅÇÏ ÌÉÛØ ÎÁÓÔÒÁÉ×ÁÅÔ ÏËÒÕÖÅÎÉÅ ÄÌÑ ÄÁÌØÎÅÊÛÅÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ. âÅÚ ÜÔÏÇÏ ×ÙÐÏÌÎÑÅÔÓÑ ÎÁÌÏÖÅÎÉÅ ÐÁÔÞÅÊ É ÐÅÒÅËÏÎÆÉÇÕÒÉÒÏ×ÁÎÉÅ ÐÏÒÔÁ. äÏÐÏÌÎÉÔÅÌØÎÙÅ ÎÅÏÂÑÚÁÔÅÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ AUTOCONF_ARGS É AUTOHEADER_ARGS ÍÏÖÎÏ ÐÅÒÅÏÐÒÅÄÅÌÉÔØ × Makefile ÐÏÒÔÁ, ÅÓÌÉ ÕËÁÚÁÎÏ Ñ×ÎÙÍ ÏÂÒÁÚÏÍ. ëÁË É Ó ÜË×É×ÁÌÅÎÔÁÍÉ libtool, ÂÏÌØÛÉÎÓÔ×Õ ÐÏÒÔÏ× ÜÔÏ ×ÒÑÄ ÌÉ ÐÏÎÁÄÏÂÉÔÓÑ. <command>automake</command> É <command>aclocal</command> îÅËÏÔÏÒÙÅ ÐÁËÅÔÙ ÓÏÄÅÒÖÁÔ ÔÏÌØËÏ ÆÁÊÌÙ Makefile.am. ïÎÉ ÄÏÌÖÎÙ ÂÙÔØ ÐÒÅÏÂÒÁÚÏ×ÁÎÙ × ÆÁÊÌÙ Makefile.in Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ automake É ÄÁÌØÎÅÊÛÅÊ ÏÂÒÁÂÏÔËÏÊ configure ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÎÁÓÔÏÑÝÅÇÏ Makefile. áÎÁÌÏÇÉÞÎÏ, ÉÎÏÇÄÁ ÐÁËÅÔÙ ÎÅ ÐÏÓÔÁ×ÌÑÀÔÓÑ Ó ×ÌÏÖÅÎÎÙÍÉ ÆÁÊÌÁÍÉ aclocal.m4, ÓÎÏ×Á ÔÒÅÂÕÅÍÙÈ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ. üÔÏÇÏ ÍÏÖÎÏ ÄÏÓÔÉÞØ Ó aclocal, ËÏÔÏÒÁÑ ÐÒÏÓÍÁÔÒÉ×ÁÅÔ configure.ac ÉÌÉ configure.in. aclocal ÉÍÅÅÔ ÐÏÈÏÖÕÀ Ó×ÑÚØ Ó automake, ËÁË Õ autoheader Ó autoconf, ÞÔÏ ÏÐÉÓÁÎÏ × ÐÒÅÄÙÄÕÝÅÊ ÇÌÁ×Å. aclocal ÐÏÄÒÁÚÕÍÅ×ÁÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ automake, ÔÁËÉÍ ÏÂÒÁÚÏÍ, ÍÙ ÉÍÅÅÍ: USE_AUTOTOOLS= automake:version[:env] É USE_AUTOTOOLS= aclocal:version ËÏÔÏÒÙÅ ÔÁËÖÅ ÐÏÄÒÁÚÕÍÅ×ÁÀÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ automake:version. ôÁËÖÅ ËÁË É ÄÌÑ libtool É autoconf, ÐÏÄËÌÀÞÅÎÉÅ ÎÅÏÂÑÚÁÔÅÌØÎÏÊ ÏÐÅÒÁÃÉÉ :env ×ÓÅÇÏ ÌÉÛØ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÏËÒÕÖÅÎÉÅ ÄÌÑ ÄÁÌØÎÅÊÛÅÇÏ ÐÏÌØÚÏ×ÁÎÉÑ. âÅÚ ÜÔÏÇÏ ×ÙÐÏÌÎÑÅÔÓÑ ÒÅËÏÎÆÉÇÕÒÉÒÏ×ÁÎÉÅ ÜÔÏÇÏ ÐÏÒÔÁ. ëÁË É × ÓÌÕÞÁÅ Ó autoconf É autoheader, ÏÂÅ automake É aclocal ÉÍÅÀÔ ÎÅÏÂÑÚÁÔÅÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ AUTOMAKE_ARGS É ACLOCAL_ARGS, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, ËÏÔÏÒÙÅ ÐÒÉ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÍÏÖÎÏ ÐÅÒÅÏÐÒÅÄÅÌÉÔØ × Makefile ÐÏÒÔÁ. éÓÐÏÌØÚÏ×ÁÎÉÅ GNU <literal>gettext</literal> ðÒÏÓÔÏÊ ×ÁÒÉÁÎÔ ÉÓÐÏÌØÚÏ×ÁÎÉÑ åÓÌÉ ÄÌÑ ×ÁÛÅÇÏ ÐÏÒÔÁ ÔÒÅÂÕÅÔ gettext, ÐÒÏÓÔÏ ÕÓÔÁÎÏ×ÉÔÅ ÐÅÒÅÍÅÎÎÕÀ USE_GETTEXT × ÚÎÁÞÅÎÉÅ yes, É × ×ÁÛ ÐÏÒÔ ÄÏÂÁ×ÉÔÓÑ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ devel/gettext. ëÒÏÍÅ ÔÏÇÏ, × USE_GETTEXT ÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÔÒÅÂÕÅÍÕÀ ×ÅÒÓÉÀ ÂÉÂÌÉÏÔÅËÉ libintl, ÏÓÎÏ×ÎÏÇÏ ËÏÍÐÏÎÅÎÔÁ gettext, ÎÏ ÔÁËÏÊ ÍÅÈÁÎÉÚÍ ÌÕÞÛÅ ÎÅ ÉÓÐÏÌØÚÏ×ÁÔØ. ÷ÁÛ ÐÏÒÔ ÄÏÌÖÅÎ ÒÁÂÏÔÁÔØ É Ó ÔÅËÕÝÅÊ ×ÅÒÓÉÅÊ devel/gettext. äÏ×ÏÌØÎÏ ÒÁÓÐÒÏÓÔÒÁÎÅÎÎÙÍ ÓÌÕÞÁÅÍ Ñ×ÌÑÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ × ÐÏÒÔÅ gettext É configure. ëÁË ÐÒÁ×ÉÌÏ, GNU configure ÓÐÏÓÏÂÅÎ ÎÁÈÏÄÉÔØ gettext Á×ÔÏÍÁÔÉÞÅÓËÉ. åÓÌÉ ÏÎ ×ÓÅ ÖÅ ÎÅ ÓÍÏÖÅÔ ÜÔÏ ÓÄÅÌÁÔØ, ÔÏ ÐÏÄÓËÁÚËÉ ÄÌÑ ÒÁÚÍÅÝÅÎÉÑ gettext ÍÏÖÎÏ ÐÅÒÅÄÁÔØ ÞÅÒÅÚ ÐÅÒÅÍÅÎÎÙÅ ÏËÒÕÖÅÎÉÑ CPPFLAGS É LDFLAGS: USE_GETTEXT= yes CPPFLAGS+= -I${LOCALBASE}/include LDFLAGS+= -L${LOCALBASE}/lib GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" \ LDFLAGS="${LDFLAGS}" Of course, the code can be more compact if there are no more flags to pass to configure: USE_GETTEXT= yes GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ LDFLAGS="-L${LOCALBASE}/lib" ïÐÔÉÍÁÌØÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ îÅËÏÔÏÒÙÅ ÐÒÏÇÒÁÍÍÎÙÅ ÐÒÏÄÕËÔÙ ÐÏÚ×ÏÌÑÀÔ ÏÔËÌÀÞÁÔØ NLS, Ë ÐÒÉÍÅÒÕ ÞÅÒÅÚ ÐÅÒÅÄÁÞÕ ÐÁÒÁÍÅÔÒÁ ÓÃÅÎÁÒÉÀ configure. ÷ ÜÔÏÍ ÓÌÕÞÁÅ, ×ÁÛ ÐÏÒÔ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØ gettext × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÓÔÁÔÕÓÁ ÐÅÒÅËÌÀÞÁÔÅÌÑ WITHOUT_NLS. äÌÑ ÐÏÒÔÏ× ÎÅÂÏÌØÛÏÊ ÉÌÉ ÓÒÅÄÎÅÊ ÓÌÏÖÎÏÓÔÉ ×Ù ÍÏÖÅÔÅ ÐÏÌÁÇÁÔØÓÑ ÎÁ ÓÌÅÄÕÀÝÕÀ ÉÄÉÏÍÕ: GNU_CONFIGURE= yes .if !defined(WITHOUT_NLS) USE_GETTEXT= yes PLIST_SUB+= NLS="" .else CONFIGURE_ARGS+= --disable-nls PLIST_SUB+= NLS="@comment " .endif óÌÅÄÕÀÝÉÊ ÐÕÎËÔ × ×ÁÛÅÍ ÓÐÉÓËÅ ÄÅÌ ÒÁÚÏÂÒÁÔØÓÑ, ÞÔÏÂÙ ÆÁÊÌÙ ËÁÔÁÌÏÇÁ ÓÏÏÂÝÅÎÉÑ ×ËÌÀÞÁÌÉÓØ × ÓÐÉÓÏË ÕÐÁËÏ×ËÉ ÐÏ ÕÓÌÏ×ÉÀ. þÁÓÔØ, ×ÈÏÄÑÝÁÑ × Makefile, ÕÖÅ ÏÂÅÓÐÅÞÅÎÁ ÜÔÏÊ ÉÄÉÏÍÏÊ. ïÓÔÁÌØÎÏÅ ÏÂßÑÓÎÑÅÔÓÑ × ÇÌÁ×Å ÐÒÏÄ×ÉÎÕÔÙÅ ÐÒÁËÔÉËÉ pkg-plist. ÷ËÒÁÔÃÅ, ËÁÖÄÏÅ ×ÈÏÖÄÅÎÉÅ %%NLS%% × pkg-plist ÂÕÄÅÔ ÚÁÍÅÎÅÎÏ ÎÁ @comment , ÅÓÌÉ NLS ×ÙËÌÀÞÅÎ, ÉÌÉ ÐÕÓÔÏÊ ÓÔÒÏËÏÊ, ÅÓÌÉ ×ËÌÀÞÅÎ. ÷ ÒÅÚÕÌØÔÁÔÅ ÓÔÒÏËÉ, ÐÒÅÄ×ÁÒÑÅÍÙÅ %%NLS%%, ÓÔÁÎÕÔ ËÏÍÍÅÎÔÁÒÉÑÍÉ × ÉÔÏÇÏ×ÏÍ ÌÉÓÔÅ ÕÐÁËÏ×ËÉ, ÅÓÌÉ NLS ×ÙËÌÀÞÅÎ; ÉÎÁÞÅ, ÐÒÅÆÉËÓ ÂÕÄÅÔ ÐÒÏÓÔÏ ÕÄÁÌÅÎ. ÷Ó£, ÞÔÏ ×ÁÍ ÎÕÖÎÏ, ÜÔÏ ×ÓÔÁ×ÉÔØ %%NLS%% ÐÅÒÅÄ ËÁÖÄÙÍ ÐÕÔÅÍ Ë ÆÁÊÌÕ ËÁÔÁÌÏÇÁ ÓÏÏÂÝÅÎÉÊ × pkg-plist. îÁÐÒÉÍÅÒ: %%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo %%NLS%%share/locale/no/LC_MESSAGES/foobar.mo ÷ ÏÓÏÂÏ ÓÌÏÖÎÙÈ ÓÌÕÞÁÑÈ ×ÁÍ ÐÏÎÁÄÏÂÉÔØÓÑ ÉÓÐÏÌØÚÏ×ÁÔØ ÂÏÌÅÅ ÐÒÏÄ×ÉÎÕÔÙÅ ÔÅÈÎÉËÉ, ÞÅÍ ÄÁÎÎÙÊ ÒÅÃÅÐÔ, ÔÁËÉÅ ËÁË ÄÉÎÁÍÉÞÅÓËÉÅ ÓÐÉÓËÉ ÕÐÁËÏ×ËÉ. õÐÒÁ×ÌÅÎÉÅ ËÁÔÁÌÏÇÁÍÉ ÓÏÏÂÝÅÎÉÊ óÕÝÅÓÔ×ÕÅÔ ÍÏÍÅÎÔ, ËÏÔÏÒÙÊ ÓÌÅÄÕÅÔ ÕÞÉÔÙ×ÁÔØ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÆÁÊÌÏ× ËÁÔÁÌÏÇÏ× ÓÏÏÂÝÅÎÉÊ. ãÅÌÅ×ÙÅ ËÁÔÁÌÏÇÉ ÄÌÑ ÒÁÚÍÅÝÅÎÉÑ, ÒÁÓÐÏÌÏÖÅÎÎÙÅ ÐÏÄ LOCALBASE/share/locale, ÒÅÄËÏ ËÏÇÄÁ ÄÏÌÖÎÙ ÓÏÚÄÁ×ÁÔØÓÑ É ÕÄÁÌÑÔØÓÑ ×ÁÛÉÍ ÐÏÒÔÏÍ. äÌÑ ÎÁÉÂÏÌÅÅ ÐÏÐÕÌÑÒÎÙÈ ÑÚÙËÏ× ÉÍÅÀÔÓÑ ÓÏÂÓÔ×ÅÎÎÙÅ ËÁÔÁÌÏÇÉ, ÐÅÒÅÞÉÓÌÅÎÎÙÅ × /etc/mtree/BSD.local.dist; ÔÁËÉÍ ÏÂÒÁÚÏÍ, ÏÎÉ ×ËÌÀÞÅÎÙ × ÏÓÎÏ×ÎÕÀ ÓÉÓÔÅÍÕ. ëÁÔÁÌÏÇÉ ÄÌÑ ÍÎÏÖÅÓÔ×Á ÄÒÕÇÉÈ ÑÚÙËÏ× ÕÐÒÁ×ÌÑÀÔÓÑ Ó ÐÏÍÏÝØÀ ÐÏÒÔÁ devel/gettext. ÷ÏÚÍÏÖÎÏ, ×ÁÍ ÐÏÎÁÄÏÂÉÔØÓÑ ÏÂÒÁÔÉÔØ ×ÎÉÍÁÎÉÅ ÎÁ ÅÇÏ pkg-plist É ÐÏÓÍÏÔÒÅÔØ, ËÕÄÁ ×ÁÛ ÐÏÒÔ ÓÏÂÉÒÁÅÔÓÑ ÕÓÔÁÎÏ×ÉÔØ ÆÁÊÌÙ ËÁÔÁÌÏÇÏ× ÓÏÏÂÝÅÎÉÊ ÄÌÑ ÅÄÉÎÓÔ×ÅÎÎÏÇÏ × Ó×ÏÅÍ ÒÏÄÅ ÑÚÙËÁ. éÓÐÏÌØÚÏ×ÁÎÉÅ <application>Perl</application> åÓÌÉ MASTER_SITES ÕÓÔÁÎÏ×ÌÅÎÁ × ÚÎÁÞÅÎÉÅ MASTER_SITE_PERL_CPAN, ÔÏ ÐÒÅÄÐÏÞÔÉÔÅÌØÎÙÍ ÚÎÁÞÅÎÉÅÍ MASTER_SITE_SUBDIR Ñ×ÌÑÅÔÓÑ ÉÍÑ ÉÅÒÁÒÈÉÉ ×ÅÒÈÎÅÇÏ ÕÒÏ×ÎÑ. îÁÐÒÉÍÅÒ, ÒÅËÏÍÅÎÄÕÅÍÙÍ ÚÎÁÞÅÎÉÅÍ ÄÌÑ p5-Module-Name Ñ×ÌÑÅÔÓÑ Module. éÅÒÁÒÈÉÀ ×ÅÒÈÎÅÇÏ ÕÒÏ×ÎÑ ÍÏÖÎÏ ÐÏÓÍÏÔÒÅÔØ ÎÁ ÓÁÊÔÅ cpan.org. üÔÏ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÐÏÒÔ × ÒÁÂÏÞÅÍ ÓÏÓÔÏÑÎÉÉ ÐÒÉ ÉÚÍÅÎÅÎÉÉ ÍÏÄÕÌÑ Á×ÔÏÒÏÍ. éÓËÌÀÞÅÎÉÅÍ ÜÔÏÇÏ ÐÒÁ×ÉÌÁ Ñ×ÌÑÅÔÓÑ ÏÔÓÕÔÓÔ×ÉÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ËÁÔÁÌÏÇÁ ÉÌÉ ÆÁÊÌÁ Ó ÄÉÓÔÒÉÂÕÔÉ×ÏÍ × ÜÔÏÍ ËÁÔÁÌÏÇÅ. ÷ ÜÔÏÍ ÓÌÕÞÁÅ × ËÁÞÅÓÔ×Å MASTER_SITE_SUBDIR ÒÁÚÒÅÛÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÔØ id Á×ÔÏÒÁ. ÷ÓÅ ÉÚ ÎÁÓÔÒÁÉ×ÁÅÍÙÈ knobs ÎÉÖÅ ÐÒÉÎÉÍÁÀÔ ÌÉÂÏ YES, ÌÉÂÏ ÓÔÒÏËÕ Ó ×ÅÒÓÉÅÊ ×ÉÄÁ 5.8.0+. YES ÏÚÎÁÞÁÅÔ, ÞÔÏ ÄÁÎÎÙÊ ÐÏÒÔ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ Ó ÌÀÂÏÊ ÉÚ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ×ÅÒÓÉÊ Perl. åÓÌÉ ÐÏÒÔ ÒÁÂÏÔÁÅÔ ÔÏÌØËÏ Ó ÎÅËÏÔÏÒÙÍÉ ×ÅÒÓÉÑÍÉ Perl, ÔÏ ÜÔÏ ÍÏÖÎÏ ÏÂÏÚÎÁÞÉÔØ ÐÒÉ ÐÏÍÏÝÉ ÓÔÒÏËÉ Ó ×ÅÒÓÉÅÊ, ÕËÁÚÙ×ÁÀÝÅÊ ÎÁ ÍÉÎÉÍÁÌØÎÕÀ ×ÅÒÓÉÀ (ÐÒÉÍÅÒ: 5.7.3+), ÍÁËÓÉÍÁÌØÎÕÀ ×ÅÒÓÉÀ (ÐÒÉÍÅÒ: 5.8.0-) ÉÌÉ ÔÏÞÎÕÀ ×ÅÒÓÉÀ (ÐÒÉÍÅÒ: 5.8.3). ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ <application>Perl</application> ðÅÒÅÍÅÎÎÁÑ úÎÁÞÅÎÉÅ USE_PERL5 Perl 5 ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ É ÒÁÂÏÔÙ. USE_PERL5_BUILD Perl 5 ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ. USE_PERL5_RUN Perl 5 ÉÓÐÏÌØÚÕÅÔÓÑ ×Ï ×ÒÅÍÑ ÒÁÂÏÔÙ. PERL ðÏÌÎÙÊ ÐÕÔØ Ë ÉÎÔÅÒÐÒÅÔÁÔÏÒÕ Perl 5, ÌÉÂÏ × ÓÉÓÔÅÍÅ, ÌÉÂÏ ÕÓÔÁÎÏ×ÌÅÎÎÏÍÕ ÉÚ ÐÏÒÔÏ×, ÎÏ ÂÅÚ ÎÏÍÅÒÁ ×ÅÒÓÉÉ. éÓÐÏÌØÚÕÊÔÅ ÜÔÏ, ÅÓÌÉ ×ÁÍ ÎÕÖÎÏ ÚÁÍÅÎÉÔØ ÓÔÒÏËÉ #! × ÓËÒÉÐÔÁÈ. PERL_CONFIGURE ëÏÎÆÉÇÕÒÁÃÉÑ ÐÒÉ ÐÏÍÏÝÉ MakeMaker ÑÚÙËÁ Perl. ÷ÌÅÞ£Ô USE_PERL5. PERL_MODBUILD ëÏÎÆÉÇÕÒÁÃÉÑ, ÐÏÓÔÒÏÅÎÉÅ É ÕÓÔÁÎÏ×ËÁ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ Module::Build. ÷ÌÅÞ£Ô PERL_CONFIGURE. ðÅÒÅÍÅÎÎÙÅ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ úÎÁÞÅÎÉÅ PERL_VERSION ðÏÌÎÁÑ ×ÅÒÓÉÑ ÕÓÔÁÎÏ×ÌÅÎÎÏÇÏ Perl (ÎÁÐÒÉÍÅÒ, 5.8.9). PERL_LEVEL õÓÔÁÎÏ×ÌÅÎÎÁÑ ×ÅÒÓÉÑ Perl × ÆÏÒÍÅ ÃÅÌÏÇÏ ÞÉÓÌÁ ×ÉÄÁ MNNNPP (ÎÁÐÒÉÍÅÒ, 500809). PERL_ARCH íÅÓÔÏ, × ËÏÔÏÒÏÍ Perl ÈÒÁÎÉÔ ÁÒÈÉÔÅËÔÕÒÎÏ-ÚÁ×ÉÓÉÍÙÅ ÂÉÂÌÉÏÔÅËÉ. ðÏ ÕÍÏÌÞÁÎÉÀ ÜÔÏ ${ARCH}-freebsd. PERL_PORT îÁÚ×ÁÎÉÅ ÕÓÔÁÎÏ×ÌÅÎÎÏÇÏ ÐÏÒÔÁ Perl, (Ë ÐÒÉÍÅÒÕ, perl5). SITE_PERL éÍÑ ËÁÔÁÌÏÇÁ, ËÕÄÁ ÐÏÍÅÝÁÀÔÓÑ ÓÐÅÃÉÆÉÞÎÙÅ ÄÌÑ ÓÁÊÔÁ ÐÁËÅÔÙ Perl. üÔÏ ÚÎÁÞÅÎÉÅ ÄÏÂÁ×ÌÑÅÔÓÑ Ë PLIST_SUB.
ðÏÒÔÙ ÄÌÑ ÍÏÄÕÌÅÊ Perl, ËÏÔÏÒÙÅ ÎÅ ÉÍÅÀÔ ÏÆÉÃÉÁÌØÎÏÇÏ ×ÅÂÓÁÊÔÁ, ÄÏÌÖÎÙ ÕËÁÚÙ×ÁÔØ cpan.org × ÓÔÒÏËÅ WWW × ÆÁÊÌÅ pkg-descr. ðÒÅÄÐÏÞÔÉÔÅÌØÎÁÑ ÆÏÒÍÁ URL http://search.cpan.org/dist/Module-Name/ (×ËÌÀÞÁÑ ÚÁ×ÅÒÛÁÀÝÉÊ ÓÌÜÛ). îÅ ÉÓÐÏÌØÚÕÊÔÅ ${SITE_PERL} × ÏÂßÑ×ÌÅÎÉÉ ÚÁ×ÉÓÉÍÏÓÔÅÊ. éÓÐÏÌØÚÏ×ÁÎÉÅ ÜÔÏÊ ËÏÎÓÔÒÕËÃÉÉ ÐÏÄÒÁÚÕÍÅ×ÁÅÔ ÎÁÌÉÞÉÅ ÐÏÄËÌÀÞÅÎÎÏÇÏ bsd.perl.mk, ÞÔÏ ÎÅ ×ÓÅÇÄÁ ÔÁË. ðÏÒÔÙ, ÚÁ×ÉÓÉÍÙÅ ÏÔ ÜÔÏÇÏ ÐÏÒÔÁ, ÐÏÌÕÞÁÔ ÎÅÐÒÁ×ÉÌØÎÙÅ ÚÁ×ÉÓÉÍÏÓÔÉ, ÅÓÌÉ ÆÁÊÌÙ ÜÔÏÇÏ ÐÏÒÔÁ ÂÕÄÕÔ ÐÅÒÅÍÅÝÅÎÙ ÐÒÉ ÐÏÓÌÅÄÕÀÝÅÍ ÏÂÎÏ×ÌÅÎÉÉ. ðÒÁ×ÉÌØÎÙÊ ÓÐÏÓÏ ÏÂßÑ×ÌÅÎÉÑ ÚÁ×ÉÓÉÍÏÓÔÅÊ ÄÌÑ ÍÏÄÕÌÅÊ Perl ÐÏËÁÚÁÎ × ÐÒÉÍÅÒÅ ÎÉÖÅ. ðÒÉÍÅÒ ÚÁ×ÉÓÉÍÏÓÔÉ Perl p5-IO-Tee>=0.64:${PORTSDIR}/devel/p5-IO-Tee
éÓÐÏÌØÚÏ×ÁÎÉÅ X11 ëÏÍÐÏÎÅÎÔÙ X.Org X.Org Ñ×ÌÑÅÔÓÑ ÒÅÁÌÉÚÁÃÉÅÊ X11, ÄÏÓÔÕÐÎÏÊ × ëÏÌÌÅËÃÉÉ ðÏÒÔÏ×. åÓÌÉ ×ÁÛÅ ÐÒÉÌÏÖÅÎÉÅ ÚÁ×ÉÓÉÔ ÏÔ ËÏÍÐÏÎÅÎÔÏ× X, ÕÓÔÁÎÏ×ÉÔÅ × ÐÅÒÅÍÅÎÎÕÀ USE_XORG × ÐÅÒÅÞÅÎØ ÔÒÅÂÕÅÍÙÈ ËÏÍÐÏÎÅÎÔÏ×. ë ÎÁÓÔÏÑÝÅÍÕ ×ÒÅÍÅÎÉ ÄÏÓÔÕÐÎÙÍÉ ËÏÍÐÏÎÅÎÔÁÍÉ Ñ×ÌÑÀÔÓÑ: bigreqsproto compositeproto damageproto dmx dmxproto dri2proto evieproto fixesproto fontcacheproto fontenc fontsproto fontutil glproto ice inputproto kbproto libfs oldx pciaccess pixman printproto randrproto recordproto renderproto resourceproto scrnsaverproto sm trapproto videoproto x11 xau xaw xaw6 xaw7 xbitmaps xcmiscproto xcomposite xcursor xdamage xdmcp xevie xext xextproto xf86bigfontproto xf86dgaproto xf86driproto xf86miscproto xf86rushproto xf86vidmodeproto xfixes xfont xfontcache xft xi xinerama xineramaproto xkbfile xkbui xmu xmuu xorg-server xp xpm xprintapputil xprintutil xproto xproxymngproto xrandr xrender xres xscrnsaver xt xtrans xtrap xtst xv xvmc xxf86dga xxf86misc xxf86vm. ÷ÓÅÇÄÁ ÁËÔÕÁÌØÎÙÊ ÐÅÒÅÞÅÎØ ÍÏÖÎÏ ÎÁÊÔÉ × /usr/ports/Mk/bsd.xorg.mk. ðÒÏÅËÔ Mesa Ñ×ÌÑÅÔÓÑ ÐÏÐÙÔËÏÊ ÏÂÅÓÐÅÞÉÔØ Ó×ÏÂÏÄÎÕÀ ÒÅÁÌÉÚÁÃÉÀ OpenGL. ÷Ù ÍÏÖÅÔÅ ÕËÁÚÁÔØ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ÒÁÚÌÉÞÎÙÈ ËÏÍÐÏÎÅÎÔÏ× ÜÔÏÇÏ ÐÒÏÅËÔÁ ÐÒÉ ÐÏÍÏÝÉ ÐÅÒÅÍÅÎÎÏÊ USE_GL. äÅÊÓÔ×ÉÔÅÌØÎÙÅ ÏÐÃÉÉ: glut, glu, glw, glew, gl É linux. äÌÑ ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ ÚÎÁÞÅÎÉÅ yes ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ glu. ðÒÉÍÅÒ ÄÌÑ USE_XORG USE_XORG= xrender xft xkbfile xt xaw USE_GL= glu îÅËÏÔÏÒÙÅ ÐÏÒÔÙ ÏÐÒÅÄÅÌÑÀÔ USE_XLIB, ËÏÔÏÒÁÑ ÄÅÌÁÅÔ ÐÏÒÔ ÚÁ×ÉÓÉÍÙÍ ÏÔÏ ×ÓÅÈ 50 ÉÌÉ ÏËÏÌÏ ÔÏÇÏ ÂÉÂÌÉÏÔÅË. üÔÁ ÐÅÒÅÍÅÎÎÁÑ ÓÕÝÅÓÔ×ÕÅÔ ÄÌÑ ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ, Ô.Ë. ÐÒÅÄÛÅÓÔ×ÕÅÔ ÍÏÄÕÌØÎÏÍÕ X.Org, É ÎÅ ÄÏÌÖÎÁ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ × ÎÏ×ÙÈ ÐÏÒÔÁÈ. ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ X USE_XLIB ðÏÒÔ ÉÓÐÏÌØÚÕÅÔ ÂÉÂÌÉÏÔÅËÉ X. ñ×ÌÑÅÔÓÑ ÕÓÔÁÒÅ×ÛÉÍ - ÉÓÐÏÌØÚÕÊÔÅ ×ÍÅÓÔÏ ÜÔÏÇÏ ÓÐÉÓÏË ËÏÍÐÏÎÅÎÔÏ× X.Org × ÐÅÒÅÍÅÎÎÏÊ USE_XORG. USE_IMAKE ðÏÒÔ ÉÓÐÏÌØÚÕÅÔ imake. XMKMF úÁÄÁ£ÔÓÑ ÍÁÒÛÒÕÔ ÄÏ xmkmf, ÅÓÌÉ ÏÎ ÏÔÓÕÔÓÔ×ÕÅÔ × ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ PATH. ðÏ ÕÍÏÌÞÁÎÉÀ ÜÔÏ xmkmf -a.
ðÅÒÅÍÅÎÎÙÅ, ÏÐÒÅÄÅÌÑÀÝÉÅ ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÏÔÄÅÌØÎÙÈ ÞÁÓÔÅÊ X11 X_IMAKE_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ imake É ÎÅÓËÏÌØËÏ ÄÒÕÇÉÈ ÕÔÉÌÉÔ, ÉÓÐÏÌØÚÕÅÍÙÈ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ X11. X_LIBRARIES_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ÂÉÂÌÉÏÔÅËÉ X11. X_CLIENTS_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ËÌÉÅÎÔÏ× X. X_SERVER_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ÓÅÒ×ÅÒ X. X_FONTSERVER_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ÓÅÒ×ÅÒ ÛÒÉÆÔÏ×. X_PRINTSERVER_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ÓÅÒ×ÅÒ ÐÅÞÁÔÉ. X_VFBSERVER_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ÓÅÒ×ÅÒ ×ÉÒÔÕÁÌØÎÏÇÏ ÆÒÅÊÍÂÕÆÅÒÁ. X_NESTSERVER_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ×ÌÏÖÅÎÎÙÊ ÓÅÒ×ÅÒ X. X_FONTS_ENCODINGS_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ËÏÄÉÒÏ×ËÉ ÄÌÑ ÛÒÉÆÔÏ×. X_FONTS_MISC_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ÐÒÏÞÉÅ ÒÁÓÔÒÏ×ÙÅ ÛÒÉÆÔÙ. X_FONTS_100DPI_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ 100dpi ÒÁÓÔÒÏ×ÙÅ ÛÒÉÆÔÙ. X_FONTS_75DPI_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ 75dpi ÒÁÓÔÒÏ×ÙÅ ÛÒÉÆÔÙ. X_FONTS_CYRILLIC_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ËÉÒÉÌÌÉÞÅÓËÉÅ ÒÁÓÔÒÏ×ÙÅ ÛÒÉÆÔÙ. X_FONTS_TTF_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ÛÒÉÆÔÙ &truetype;. X_FONTS_TYPE1_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ÛÒÉÆÔÙ Type1. X_MANUALS_PORT ðÏÒÔ, ÐÒÅÄÏÓÔÁ×ÌÑÀÝÉÊ ÓÔÒÁÎÉÃÙ ÓÐÒÁ×ÏÞÎÉËÁ, ÐÒÅÄÎÁÚÎÁÞÅÎÎÙÅ ÄÌÑ ÒÁÚÒÁÂÏÔÞÉËÏ×.
éÓÐÏÌØÚÏ×ÁÎÉÅ ÐÅÒÅÍÅÎÎÙÈ X11 × ÐÏÒÔÅ # Use some X11 libraries and depend on # font server as well as cyrillic fonts. RUN_DEPENDS= ${LOCALBASE}/bin/xfs:${X_FONTSERVER_PORT} \ ${LOCALBASE}/lib/X11/fonts/cyrillic/crox1c.pcf.gz:${X_FONTS_CYRILLIC_PORT} USE_XORG= x11 xpm
ðÏÒÔÙ, ËÏÔÏÒÙÍ ÔÒÅÂÕÅÔÓÑ Motif åÓÌÉ ×ÁÛÅÍÕ ÐÏÒÔÕ ÔÒÅÂÕÅÔÓÑ Motif, ÚÁÄÁÊÔÅ ÐÅÒÅÍÅÎÎÕÀ USE_MOTIF × ÆÁÊÌÅ Makefile. òÅÁÌÉÚÁÃÉÑ Motif, ÉÓÐÏÌØÚÕÅÍÁÑ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÎÁÈÏÄÉÔÓÑ × x11-toolkits/open-motif. ðÏÌØÚÏ×ÁÔÅÌÉ ×ÍÅÓÔÏ ÜÔÏÇÏ ÍÏÇÕÔ ×ÙÂÒÁÔØ x11-toolkits/lesstif ÞÅÒÅÚ ÕÓÔÁÎÏ×ËÕ ÐÅÒÅÍÅÎÎÏÊ WANT_LESSTIF. ðÅÒÅÍÅÎÎÁÑ MOTIFLIB ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎÁ × bsd.port.mk, ÞÔÏÂÙ ÓÓÙÌÁÔØÓÑ ÎÁ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÕÀ ÂÉÂÌÉÏÔÅËÕ Motif. ðÏÖÁÌÕÊÓÔÁ, ÉÚÍÅÎÉÔÅ ÉÓÈÏÄÎÙÅ ÔÅËÓÔÙ ×ÁÛÅÇÏ ÐÏÒÔÁ ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ${MOTIFLIB} ×ÅÚÄÅ, ÇÄÅ ÕÐÏÍÉÎÁÅÔÓÑ ÂÉÂÌÉÏÔÅËÁ Motif, × ÐÅÒ×ÏÎÁÞÁÌØÎÏÍ Makefile ÉÌÉ Imakefile. óÕÝÅÓÔ×ÕÅÔ Ä×Á ÏÂÝÉÈ ÓÌÕÞÁÑ: åÓÌÉ ÐÏÒÔ ÏÂÒÁÝÁÅÔÓÑ Ë ÂÉÂÌÉÏÔÅËÅ Motif ËÁË -lXm × Ó×ÏÉÈ ÆÁÊÌÁÈ Makefile ÉÌÉ Imakefile, ÐÒÏÓÔÏ ÐÏÄÓÔÁרÔÅ ×ÍÅÓÔÏ ÜÔÉÈ ÏÂÒÁÝÅÎÉÊ ${MOTIFLIB}. åÓÌÉ ÐÏÒÔ ÉÓÐÏÌØÚÕÅÔ XmClientLibs × Ó×ÏÅÍ ÆÁÊÌÅ Imakefile, ÉÚÍÅÎÉÔÅ ÜÔÏ ÏÂÒÁÝÅÎÉÅ ÎÁ ${MOTIFLIB} ${XTOOLLIB} ${XLIB}. úÁÍÅÔØÔÅ, ÞÔÏ ÐÅÒÅÍÅÎÎÁÑ MOTIFLIB (ËÁË ÐÒÁ×ÉÌÏ) ÒÁÓËÒÙ×ÁÅÔÓÑ × -L/usr/local/lib -lXm ÉÌÉ /usr/local/lib/libXm.a, ÔÁË ÞÔÏ ÎÅÔ ÎÕÖÄÙ ×ÐÅÒÅÄÉ ÄÏÂÁ×ÌÑÔØ -L ÉÌÉ -l. ûÒÉÆÔÙ ÄÌÑ X11 åÓÌÉ ×ÁÛ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÛÒÉÆÔÙ ÄÌÑ X Window System, ÐÏÍÅÓÔÉÔÅ ÉÈ × ËÁÔÁÌÏÇ LOCALBASE/lib/X11/fonts/local. ðÏÌÕÞÅÎÉÅ ÐÏÄÄÅÌØÎÏÇÏ <envar>DISPLAY</envar>, ÉÓÐÏÌØÚÕÑ Xvfb îÅËÏÔÏÒÙÅ ÐÒÉÌÏÖÅÎÉÑ ÄÌÑ ÕÓÐÅÛÎÏÊ ËÏÍÐÉÌÑÃÉÉ ÔÒÅÂÕÀÔ ÎÁÌÉÞÉÅ ÒÁÂÏÔÁÀÝÅÇÏ ÄÉÓÐÌÅÑ X11. üÔÏ ÓÏÚÄÁÅÔ ÐÒÏÂÌÅÍÕ ÄÌÑ ÍÁÛÉÎ, ËÏÔÏÒÙÅ ÒÁÂÏÔÁÀÔ × ÒÅÖÉÍÅ headless. ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÓÌÅÄÕÀÝÅÇÏ ËÁÎÏÎÉÞÅÓËÏÇÏ ÈÁËÁ ÉÎÆÒÁÓÔÒÕËÔÕÒÁ ÐÏÓÔÒÏÅÎÉÑ ÚÁÐÕÓÔÉÔ ÓÅÒ×ÅÒ X × ×ÉÒÔÕÁÌØÎÏÍ ÆÒÅÊÍÂÕÆÅÒÅ. úÁÔÅÍ ÐÅÒÅÍÅÎÎÁÑ ÒÁÂÏÔÁÀÝÅÇÏ DISPLAY ÐÅÒÅÄÁÅÔÓÑ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ. USE_DISPLAY= yes üÌÅÍÅÎÔÙ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ üÌÅÍÅÎÔÙ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ (ÓÔÁÎÄÁÒÔÁ Freedesktop) ÐÒÅÄÏÓÔÁ×ÌÑÀÔ ÓÐÏÓÏ Á×ÔÏÍÁÔÉÞÅÓËÏÊ ÎÁÓÔÒÏÊËÉ ÆÕÎËÃÉÊ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÎÏ×ÏÊ ÐÒÏÇÒÁÍÍÙ, ÎÅ ÔÒÅÂÕÑ ×ÍÅÛÁÔÅÌØÓÔ×Á ÐÏÌØÚÏ×ÁÔÅÌÑ. îÁÐÒÉÍÅÒ, ÎÏ×ÙÅ ÐÒÏÇÒÁÍÍÙ Á×ÔÏÍÁÔÉÞÅÓËÉ ÏÔÏÂÒÁÖÁÀÔÓÑ × ÍÅÎÀ ÐÒÉÌÏÖÅÎÉÊ ÓÏ×ÍÅÓÔÉÍÙÈ ÏËÒÕÖÅÎÉÊ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ. üÌÅÍÅÎÔÙ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ ÉÚÎÁÞÁÌØÎÏ ÐÏÑ×ÉÌÉÓØ × ÏËÒÕÖÅÎÉÉ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ GNOME, ÎÏ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ Ñ×ÌÑÀÔÓÑ ÓÔÁÎÄÁÒÔÏÍ É ÔÁËÖÅ ÒÁÂÏÔÁÀÔ Ó KDE É Xfce. ôÁËÁÑ ÎÅÂÏÌØÛÁÑ Á×ÔÏÍÁÔÉÚÁÃÉÑ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÒÅÁÌØÎÏÅ ÕÄÏÂÓÔ×Ï ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÑ, É ÐÏÓÅÍÕ ÜÌÅÍÅÎÔÙ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ ÐÒÉ×ÅÔÓÔ×ÕÀÔÓÑ × ÐÒÉÌÏÖÅÎÉÑÈ, ËÏÔÏÒÙÅ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ × ÏËÒÕÖÅÎÉÉ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ. éÓÐÏÌØÚÏ×ÁÎÉÅ ÐÒÅÄÏÐÒÅÄÅÌÅÎÎÙÈ ÆÁÊÌÏ× <filename>.desktop</filename> ðÏÒÔÙ, ×ËÌÀÞÁÀÝÉÅ ÐÒÅÄÏÐÒÅÄÅÌÅÎÎÙÅ ÆÁÊÌÙ *.desktop, ÄÏÌÖÎÙ ×ËÌÀÞÁÔØ ÜÔÉ ÆÁÊÌÙ × pkg-plist É ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÉÈ × ËÁÔÁÌÏÇ $LOCALBASE/share/applications. äÌÑ ÕÓÔÁÎÏ×ËÉ ÜÔÉÈ ÆÁÊÌÏ× ÉÓÐÏÌØÚÕÅÔÓÑ ÍÁËÒÏÓ INSTALL_DATA. óÏÚÄÁÎÉÅ ÜÌÅÍÅÎÔÏ× ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ <makevar>DESKTOP_ENTRIES</makevar> üÌÅÍÅÎÔÙ ÒÁÂÏÞÅÇÏ ÓÔÏÌÁ ÍÏÖÎÏ ÌÅÇËÏ ÓÏÚÄÁ×ÁÔØ ÄÌÑ ÐÒÉÌÏÖÅÎÉÊ, ÉÓÐÏÌØÚÕÑ ÐÅÒÅÍÅÎÎÕÀ DESKTOP_ENTRIES. âÕÄÅÔ Á×ÔÏÍÁÔÉÞÅÓËÉ ÓÏÚÄÁÎ, ÕÓÔÁÎÏ×ÌÅÎ É ÄÏÂÁ×ÌÅÎ × pkg-plist ÆÁÊÌ Ó ÎÁÚ×ÁÎÉÅÍ name.desktop. óÉÎÔÁËÓÉÓ: DESKTOP_ENTRIES= "NAME" "COMMENT" "ICON" "COMMAND" "CATEGORY" StartupNotify ðÅÒÅÞÅÎØ ×ÏÚÍÏÖÎÙÈ ËÁÔÅÇÏÒÉÊ ÄÏÓÔÕÐÅÎ ÎÁ ×ÅÂÓÁÊÔÅ Freedesktop. StartupNotify ÏÔÏÂÒÁÚÉÔ, ÐÏÄÄÅÒÖÉ×ÁÅÔ ÌÉ ÐÒÉÌÏÖÅÎÉÅ Õ×ÅÄÏÍÌÅÎÉÑ Ï ÚÁÐÕÓËÅ. ëÁË ÐÒÁ×ÉÌÏ, ÜÔÏ ÇÒÁÆÉÞÅÓËÉÊ ÉÎÄÉËÁÔÏÒ ÞÁÓÙ ×ÍÅÓÔÏ ÕËÁÚÁÔÅÌÑ ÍÙÛÉ, ÍÅÎÀ ÉÌÉ ÐÁÎÅÌØ, ËÏÔÏÒÙÅ Õ×ÅÄÏÍÌÑÀÔ ÐÏÌØÚÏ×ÁÔÅÌÑ Ï ÚÁÇÒÕÚËÅ ÐÒÏÇÒÁÍÍÙ. ðÒÏÇÒÁÍÍÁ, ÐÏÄÄÅÒÖÉ×ÁÀÝÁÑ Õ×ÅÄÏÍÌÅÎÉÑ Ï ÚÁÐÕÓËÅ, ÏÞÉÓÔÉÔ ÜÔÏÔ ÉÎÄÉËÁÔÏÒ ÐÏÓÌÅ ÚÁÐÕÓËÁ. ðÒÏÇÒÁÍÍÙ, ÎÅÓÏ×ÍÅÓÔÉÍÙÅ Ó Õ×ÅÄÏÍÌÅÎÉÑÍÉ Ï ÚÁÐÕÓËÅ, ÎÅ ÂÕÄÕÔ ÏÞÉÝÁÔØ ÉÎÄÉËÁÔÏÒ (×ÏÚÍÏÖÎÏ, ×ÙÚÙ×ÁÑ ÐÕÔÁÎÉÃÕ É ÐÒÉ×ÏÄÑ ÐÏÌØÚÏ×ÁÔÅÌÅÊ × ÂÅÛÅÎÓÔ×Ï), É ÐÏÜÔÏÍÕ ÄÏÌÖÎÙ ÉÍÅÔØ StartupNotify × ×ÙËÌÀÞÅÎÎÏÍ ÓÏÓÔÏÑÎÉÉ false; ÔÏÇÄÁ ÉÎÄÉËÁÔÏÒ ÎÅ ÂÕÄÅÔ ÏÔÏÂÒÁÖÁÔØÓÑ ÓÏ×ÓÅÍ. ðÒÉÍÅÒ: DESKTOP_ENTRIES= "ToME" "Roguelike game based on JRR Tolkien's work" \ "${DATADIR}/xtra/graf/tome-128.png" \ "tome -v -g" "Application;Game;RolePlaying;" \ false
éÓÐÏÌØÚÏ×ÁÎÉÅ GNOME äÌÑ ÚÁÄÁÎÉÑ ÔÏÇÏ, ËÁËÉÅ ËÏÍÐÏÎÅÎÔÙ GNOME ÉÓÐÏÌØÚÕÅÔ ËÏÎËÒÅÔÎÙÊ ÐÏÒÔ, ÐÒÏÅËÔ FreeBSD/GNOME ÉÓÐÏÌØÚÕÅÔ ÓÏÂÓÔ×ÅÎÎÙÊ ÎÁÂÏÒ ÐÅÒÅÍÅÎÎÙÈ. îÁ ÓÔÒÁÎÉÃÅ ÐÒÏÅËÔÁ FreeBSD/GNOME ÒÁÚÍÅݣΠÉÓÞÅÒÐÙ×ÁÀÝÉÊ ÓÐÉÓÏË ÜÔÉÈ ÐÅÒÅÍÅÎÎÙÈ. éÓÐÏÌØÚÏ×ÁÎÉÅ Qt ðÏÒÔÙ, ÄÌÑ ËÏÔÏÒÙÈ ÔÒÅÂÕÅÔÓÑ Qt ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ Qt USE_QT_VER ðÏÒÔ ÉÓÐÏÌØÚÕÅÔ ÉÎÓÔÒÕÍÅÎÔÁÌØÎÙÊ ÐÁËÅÔ Qt. ÷ÏÚÍÏÖÎÙÍÉ ÚÎÁÞÅÎÉÑÍÉ Ñ×ÌÑÀÔÓÑ 3 É 4, ËÁÖÄÁÑ ÉÚ ËÏÔÏÒÙÈ ÕËÁÚÙ×ÁÅÔ ÎÁ ÓÔÁÒÛÉÊ ÎÏÍÅÒ ÉÓÐÏÌØÚÕÅÍÏÊ ×ÅÒÓÉÉ Qt. óÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÐÁÒÁÍÅÔÒÙ ÐÅÒÅÄÁÀÔÓÑ × ÓÃÅÎÁÒÉÊ configure É make. QT_PREFIX õÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × ÚÎÁÞÅÎÉÅ, ÓÏÄÅÒÖÁÝÅÅ ÐÕÔØ Ë ÕÓÔÁÎÏ×ÌÅÎÎÏÍÕ Qt (ÐÅÒÅÍÅÎÎÁÑ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ). MOC õÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × ÚÎÁÞÅÎÉÅ, ÓÏÄÅÒÖÁÝÅÅ ÐÕÔØ Ë moc (ÐÅÒÅÍÅÎÎÁÑ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ). ðÏ ÕÍÏÌÞÁÎÉÀ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ ÓÏ ÚÎÁÞÅÎÉÅÍ USE_QT_VER. QTCPPFLAGS äÏÐÏÌÎÉÔÅÌØÎÙÅ ÆÌÁÇÉ ËÏÍÐÉÌÑÔÏÒÁ ÄÌÑ ÉÎÓÔÒÕÍÅÎÔÁÌØÎÏÇÏ ÐÁËÅÔÁ Qt, ÐÅÒÅÄÁ×ÁÅÍÙÅ ÞÅÒÅÚ ÐÅÒÅÍÅÎÎÕÀ CONFIGURE_ENV. ðÏ ÕÍÏÌÞÁÎÉÀ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ ÓÏ ÚÎÁÞÅÎÉÅÍ USE_QT_VER. QTCFGLIBS äÏÐÏÌÎÉÔÅÌØÎÙÅ ÆÌÁÇÉ ËÏÍÐÏÎÏ×ËÉ ÄÌÑ ÉÎÓÔÒÕÍÅÎÔÁÌØÎÏÇÏ ÐÁËÅÔÁ Qt, ÐÅÒÅÄÁ×ÁÅÍÙÅ ÞÅÒÅÚ ÐÅÒÅÍÅÎÎÕÀ CONFIGURE_ENV. ðÏ ÕÍÏÌÞÁÎÉÀ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ ÓÏ ÚÎÁÞÅÎÉÅÍ USE_QT_VER. QTNONSTANDARD ðÏÄÁ×ÌÑÅÔ ÉÚÍÅÎÅÎÉÅ CONFIGURE_ENV, CONFIGURE_ARGS, CPPFLAGS É MAKE_ENV.
äÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ Qt 4.x QT_COMPONENTS õËÁÚÙ×ÁÅÔ ÉÎÓÔÒÕÍÅÎÔÙ É ÂÉÂÌÉÏÔÅËÉ × ËÁÞÅÓÔ×Å ÚÁ×ÉÓÉÍÏÓÔÅÊ ÄÌÑ Qt 4. óÍÏÔÒÉÔÅ ÐÏÄÒÏÂÎÅÅ ÎÉÖÅ. UIC õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÐÕÔØ Ë uic (ÐÅÒÅÍÅÎÎÁÑ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ). QMAKE õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÐÕÔØ Ë qmake (ÐÅÒÅÍÅÎÎÁÑ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ). QMAKESPEC õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÐÕÔØ Ë ËÏÎÆÉÇÕÒÁÃÉÏÎÎÏÍÕ ÆÁÊÌÕ ÄÌÑ qmake (ÐÅÒÅÍÅÎÎÁÑ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ).
ðÒÉ ÕÓÔÁÎÏ×ÌÅÎÎÏÊ ÐÅÒÅÍÅÎÎÏÊ USE_QT_VER ÓÃÅÎÁÒÉÀ configure ÍÏÖÎÏ ÐÅÒÅÄÁ×ÁÔØ ÎÅËÏÔÏÒÙÅ ÐÏÌÅÚÎÙÅ ÎÁÓÔÒÏÊËÉ: CONFIGURE_ARGS+= --with-qt-includes=${QT_PREFIX}/include \ --with-qt-libraries=${QT_PREFIX}/lib \ --with-extra-libs=${LOCALBASE}/lib \ --with-extra-includes=${LOCALBASE}/include CONFIGURE_ENV+= MOC="${MOC}" LIBS="${QTCFGLIBS}" \ QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}" CPPFLAGS+= ${QTCPPFLAGS} åÓÌÉ ÐÅÒÅÍÅÎÎÁÑ USE_QT_VER ÕÓÔÁÎÏ×ÌÅÎÁ × ÚÎÁÞÅÎÉÅ 4, ÔÏ ÔÁËÖÅ ÒÁÚ×ÏÒÁÞÉ×ÁÀÔÓÑ ÓÌÅÄÕÀÝÉÅ ÎÁÓÔÒÏÊËÉ: CONFIGURE_ENV+= UIC="${UIC}" QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}" MAKE_ENV+= QMAKESPEC="${QMAKESPEC}"
÷ÙÂÏÒ ËÏÍÐÏÎÅÎÔÏ× (ÔÏÌØËÏ ÄÌÑ Qt 4.x) åÓÌÉ USE_QT_VER ÕÓÔÁÎÏ×ÌÅÎÁ × ÚÎÁÞÅÎÉÅ 4, ÔÏ × ÐÅÒÅÍÅÎÎÏÊ QT_COMPONENTS ÍÏÖÎÏ ÕËÁÚÁÔØ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ÏÔÄÅÌØÎÙÈ ÉÎÓÔÒÕÍÅÎÔÏ× É ÂÉÂÌÉÏÔÅË Qt 4. ë ËÁÖÄÏÍÕ ËÏÍÐÏÎÅÎÔÕ ÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÓÕÆÆÉËÓ, _build ÉÌÉ _run, ÏÔÒÁÖÁÀÝÉÊ, ËÏÇÄÁ ÄÏÌÖÎÁ ÂÙÔØ ÐÒÉÍÅÎÅÎÁ ÚÁ×ÉÓÉÍÏÓÔØ, ×Ï ×ÒÅÍÑ ÓÂÏÒËÉ ÉÌÉ ×ÙÐÏÌÎÅÎÉÑ, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ. åÓÌÉ ÓÕÆÆÉËÓ ÏÔÓÕÔÓÔ×ÕÅÔ, ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ËÏÍÐÏÎÅÎÔÁ ÂÕÄÅÔ É ÄÌÑ ×ÒÅÍÅÎÉ ÓÂÏÒËÉ, É ÄÌÑ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÅÎÉÑ. ïÂÙÞÎÏ, ËÏÍÐÏÎÅÎÔÙ ÂÉÂÌÉÏÔÅË ÄÏÌÖÎÙ ÕËÁÚÙ×ÁÔØÓÑ ÂÅÚ ÓÕÆÆÉËÓÏ×, ËÏÍÐÏÎÅÎÔÙ ÉÎÓÔÒÕÍÅÎÔÏ× - Ó ÓÕÆÆÉËÓÏÍ _build, Á ËÏÍÐÏÎÅÎÔÙ ÐÌÁÇÉÎÏ× - Ó ÓÕÆÆÉËÓÏÍ _run. îÁÉÂÏÌÅÅ ÏÂÝÉÅ ÉÓÐÏÌØÚÕÅÍÙÅ ËÏÍÐÏÎÅÎÔÙ ÐÅÒÅÞÉÓÌÅÎÙ ÎÉÖÅ (×ÓÅ ÄÏÓÔÕÐÎÙÅ ËÏÍÐÏÎÅÎÔÙ ÐÅÒÅÞÉÓÌÅÎÙ × _QT_COMPONENTS_ALL × ÆÁÊÌÅ /usr/ports/Mk/bsd.qt.mk): äÏÓÔÕÐÎÙÅ ÂÉÂÌÉÏÔÅÞÎÙÅ ËÏÍÐÏÎÅÎÔÙ Qt 4 îÁÚ×ÁÎÉÅ ïÐÉÓÁÎÉÅ corelib ÏÓÎÏ×ÎÁÑ ÂÉÂÌÉÏÔÅËÁ (ÍÏÖÎÏ ÏÐÕÓÔÉÔØ, ÅÓÌÉ ÐÏÒÔ ÎÅ ÉÓÐÏÌØÚÕÅÔ ÎÉÞÅÇÏ, ËÒÏÍÅ corelib) gui ÂÉÂÌÉÏÔÅËÁ ÇÒÁÆÉÞÅÓËÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ network ÓÅÔÅ×ÁÑ ÂÉÂÌÉÏÔÅËÁ opengl ÂÉÂÌÉÏÔÅËÁ OpenGL qt3support ÂÉÂÌÉÏÔÅËÁ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó Qt 3 qtestlib ÂÉÂÌÉÏÔÅËÁ ÍÏÄÕÌØÎÏÇÏ ÔÅÓÔÉÒÏ×ÁÎÉÑ script ÂÉÂÌÉÏÔÅËÁ ÓÃÅÎÁÒÉÅ× sql ÂÉÂÌÉÏÔÅËÁ SQL xml ÂÉÂÌÉÏÔÅËÁ XML
÷Ù ÍÏÖÅÔÅ ÏÐÒÅÄÅÌÉÔØ, ÏÔ ËÁËÉÈ ÂÉÂÌÉÏÔÅË ÚÁ×ÉÓÉÔ ÐÒÉÌÏÖÅÎÉÅ, ÚÁÐÕÓÔÉ× ldd ÎÁ ÏÓÎÏ×ÎÏÊ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ ÐÏÓÌÅ ÕÓÐÅÛÎÏÊ ËÏÍÐÉÌÑÃÉÉ. äÏÓÔÕÐÎÙÅ ËÏÍÐÏÎÅÎÔÙ ÉÎÓÔÒÕÍÅÎÔÏ× Qt 4 îÁÚ×ÁÎÉÅ ïÐÉÓÁÎÉÅ moc ÍÅÔÁ-ÏÂßÅËÔÎÙÊ ËÏÍÐÉÌÑÔÏÒ (ÎÕÖÅÎ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ ÐÏÞÔÉ ÄÌÑ ËÁÖÄÏÇÏ ÐÒÉÌÏÖÅÎÉÑ Qt) qmake ÇÅÎÅÒÁÔÏÒ Makefile / ÕÔÉÌÉÔÁ ÐÏÓÔÒÏÅÎÉÑ rcc ËÏÍÐÉÌÑÔÏÒ ÒÅÓÕÒÓÏ× (ÎÕÖÅÎ, ÅÓÌÉ ÐÒÉÌÏÖÅÎÉÅ ÉÄÅÔ ×ÍÅÓÔÅ Ó ÆÁÊÌÁÍÉ *.rc ÉÌÉ *.qrc) uic ËÏÍÐÉÌÑÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ (ÎÕÖÅÎ, ÅÓÌÉ ÐÒÉÌÏÖÅÎÉÅ ÉÄÅÔ ×ÍÅÓÔÅ Ó ÆÁÊÌÁÍÉ *.ui, ÓÏÚÄÁÎÎÙÍÉ ÐÒÉ ÐÏÍÏÝÉ Qt Designer, - ÎÁ ÐÒÁËÔÉËÅ ËÁÖÄÏÅ ÐÒÉÌÏÖÅÎÉÅ Qt Ó GUI)
äÏÓÔÕÐÎÙÅ ËÏÍÐÏÎÅÎÔÙ ÐÌÁÇÉÎÏ× Qt 4 îÁÚ×ÁÎÉÅ ïÐÉÓÁÎÉÅ iconengines ÐÌÁÇÉÎ ÄÌÑ Ä×ÉÖËÁ ÉËÏÎÏË SVG (ÅÓÌÉ ÐÒÉÌÏÖÅÎÉÅ ÐÏÓÔÁ×ÌÑÅÔÓÑ Ó ÉËÏÎËÁÍÉ SVG) imageformats ÐÌÁÇÉÎÙ ÄÌÑ ÇÒÁÆÉÞÅÓËÉÈ ÆÏÒÍÁÔÏ× GIF, JPEG, MNG É SVG (ÅÓÌÉ ÐÒÉÌÏÖÅÎÉÅ ÐÏÓÔÁ×ÌÑÅÔÓÑ Ó ÇÒÁÆÉÞÅÓËÉÍÉ ÆÁÊÌÁÍÉ)
÷ÙÂÏÒ ËÏÍÐÏÎÅÎÔÏ× Qt 4 ÷ ÜÔÏÍ ÐÒÉÍÅÒÅ ÐÏÒÔÉÒÏ×ÁÎÎÏÅ ÐÒÉÌÏÖÅÎÉÅ ÉÓÐÏÌØÚÕÅÔ ÂÉÂÌÉÏÔÅËÕ ÇÒÁÆÉÞÅÓËÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ Qt 4, ÏÓÎÏ×ÎÕÀ ÂÉÂÌÉÏÔÅËÕ Qt 4, ×ÓÅ ÉÎÓÔÒÕÍÅÎÔÙ ÇÅÎÅÒÁÃÉÉ ËÏÄÁ Qt 4 É ÇÅÎÅÒÁÔÏÒ Makefile Qt 4. ðÏÓËÏÌØËÕ ÂÉÂÌÉÏÔÅËÁ gui ÐÏÄÒÁÚÕÍÅ×ÁÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ÏÓÎÏ×ÎÏÊ ÂÉÂÌÉÏÔÅËÉ, ÕËÁÚÙ×ÁÔØ corelib ÎÅÔ ÎÅÏÂÈÏÄÉÍÏÓÔÉ. éÎÓÔÒÕÍÅÎÔÙ ÇÅÎÅÒÁÃÉÉ ËÏÄÁ Qt 4 moc, uic É rcc, Á ÔÁËÖÅ ÇÅÎÅÒÁÔÏÒ Makefile qmake ÎÕÖÎÙ ÔÏÌØËÏ ÄÌÑ ×ÒÅÍÅÎÉ ÐÏÓÔÒÏÅÎÉÑ, ÐÏÜÔÏÍÕ ÏÎÉ ÕËÁÚÁÎÙ Ó ÓÕÆÆÉËÓÏÍ _build: USE_QT_VER= 4 QT_COMPONENTS= gui moc_build qmake_build rcc_build uic_build
ðÒÏÞÉÅ ÓÏÏÂÒÁÖÅÎÉÑ åÓÌÉ ×ÍÅÓÔÅ Ó ÐÒÉÌÏÖÅÎÉÅÍ ×ÍÅÓÔÏ configure ÐÏÓÔÁ×ÌÑÅÔÓÑ ÆÁÊÌ .pro, ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÌÅÄÕÀÝÅÅ: HAS_CONFIGURE= yes do-configure: @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \ ${QMAKE} PREFIX=${PREFIX} texmaker.pro ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ ÎÁ ÓÈÏÄÓÔ×Ï ÓÏ ÓÔÒÏËÏÊ qmake ÉÚ ÐÒÉÌÁÇÁÅÍÏÇÏ ÓÃÅÎÁÒÉÑ BUILD.sh. ðÅÒÅÄÁÞÁ CONFIGURE_ENV ÏÂÅÓÐÅÞÉ×ÁÅÔ ×ÉÄÉÍÏÓÔØ ÐÅÒÅÍÅÎÎÏÊ QMAKESPEC ÄÌÑ qmake, ÂÅÚ ËÏÔÏÒÏÊ ËÏÍÁÎÄÁ ÎÅ ÍÏÖÅÔ ÒÁÂÏÔÁÔØ. qmake ÐÏÒÏÖÄÁÅÔ ÓÔÁÎÄÁÒÔÎÙÅ Makefile, É, ÔÁËÉÍ ÏÂÒÁÚÏÍ, ÏÔÐÁÄÁÅÔ ÎÅÏÂÈÏÄÉÍÏÓÔØ × ÎÁÐÉÓÁÎÉÉ Ó×ÏÉÈ ÓÏÂÓÔ×ÅÎÎÙÈ ÃÅÌÅÊ build. ðÒÉÌÏÖÅÎÉÑ Qt ÞÁÓÔÏ ÐÉÛÕÔÓÑ × ËÒÏÓÓÐÌÁÔÆÏÒÍÅÎÎÏÊ ÍÁÎÅÒÅ, É X11/Unix ÞÁÓÔÏ ÎÅ Ñ×ÌÑÅÔÓÑ ÄÌÑ ÎÉÈ ÐÌÁÔÆÏÒÍÏÊ ÒÁÚÒÁÂÏÔËÉ, ÞÔÏ × Ó×ÏÀ ÏÞÅÒÅÄØ ÞÁÓÔÏ ÐÒÉ×ÏÄÉÔ Ë ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍ ÕÐÕÝÅÎÎÙÍ ÍÏÍÅÎÔÁÍ: ïÔÓÕÔÓÔ×ÕÀÝÉÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÕÔÉ ÄÌÑ ÚÁÇÏÌÏ×ÏÞÎÙÈ ÆÁÊÌÏ×. íÎÏÇÉÅ ÐÒÉÌÏÖÅÎÉÑ ÉÄÕÔ Ó ÐÏÄÄÅÒÖËÏÊ ÉËÏÎËÉ × ÓÉÓÔÅÍÎÏÍ ÔÒÅÅ, ÎÏ ÐÒÅÎÅÂÒÅÇÁÀÔ ÓÍÏÔÒÅÔØ ÎÁ ÎÁÌÉÞÉÅ ÚÁÇÏÌÏ×ÏÞÎÙÈ ÆÁÊÌÏ× É/ÉÌÉ ÂÉÂÌÉÏÔÅËÁÍÉ × ËÁÔÁÌÏÇÁÈ X11. ÷Ù ÍÏÖÅÔÅ ÓÏÏÂÝÉÔØ qmake, ÞÔÏÂÙ ÏÎÁ ÄÏÂÁ×ÉÌÁ ËÁÔÁÌÏÇÉ × ÐÕÔÉ ÐÏÉÓËÁ ÚÁÇÏÌÏ×ÏÞÎÙÈ ÆÁÊÌÏ× É ÂÉÂÌÉÏÔÅË ÞÅÒÅÚ ËÏÍÁÎÄÎÕÀ ÓÔÒÏËÕ. ë ÐÒÉÍÅÒÕ: ${QMAKE} PREFIX=${PREFIX} INCLUDEPATH+=${LOCALBASE}/include \ LIBS+=-L${LOCALBASE}/lib sillyapp.pro æÉËÔÉ×ÎÙÅ ÐÕÔÉ ÕÓÔÁÎÏ×ËÉ. éÎÏÇÄÁ ÄÁÎÎÙÅ, ÔÁËÉÅ ËÁË ÉËÏÎËÉ É ÆÁÊÌÙ .desktop, ÕÓÔÁÎÁ×ÌÉ×ÁÀÔÓÑ ÐÏ ÕÍÏÌÞÁÎÉÀ × ËÁÔÁÌÏÇÉ, ËÏÔÏÒÙÅ ÎÅ ÐÒÏÓÍÁÔÒÉ×ÁÀÔÓÑ XDG-ÓÏ×ÍÅÓÔÉÍÙÍÉ ÐÒÉÌÏÖÅÎÉÑÍÉ. ðÒÉÍÅÒÏÍ Ñ×ÌÑÅÔÓÑ editors/texmaker - ×ÚÇÌÑÎÉÔÅ ÎÁ patch-texmaker.pro ÉÚ ËÁÔÁÌÏÇÁ files ÜÔÏÇÏ ÐÏÒÔÁ, ËÏÔÏÒÙÊ ÍÏÖÎÏ ×ÚÑÔØ × ËÁÞÅÓÔ×Å ÛÁÂÌÏÎÁ ÉÓÐÒÁ×ÌÅÎÉÑ ÜÔÏÇÏ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × ÆÁÊÌÅ ÐÒÏÅËÔÁ qmake.
éÓÐÏÌØÚÏ×ÁÎÉÅ KDE úÁÄÁÎÉÅ ÐÅÒÅÍÅÎÎÙÈ (ÔÏÌØËÏ ÄÌÑ KDE 3.x) ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ KDE 3.x USE_KDELIBS_VER ðÏÒÔ ÉÓÐÏÌØÚÕÅÔ ÂÉÂÌÉÏÔÅËÉ KDE. ïÐÒÅÄÅÌÑÅÔ ÓÔÁÒÛÉÊ ÎÏÍÅÒ ÉÓÐÏÌØÚÕÅÍÏÊ ×ÅÒÓÉÉ KDE. ðÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ×ËÌÀÞÅÎÉÅ USE_QT_VER ÐÏÄÈÏÄÑÝÅÊ ×ÅÒÓÉÉ. åÄÉÎÓÔ×ÅÎÎÙÍ ×ÏÚÍÏÖÎÙÍ ÚÎÁÞÅÎÉÅÍ Ñ×ÌÑÅÔÓÑ 3. USE_KDEBASE_VER ðÏÒÔ ÉÓÐÏÌØÚÕÅÔ × ËÁÞÅÓÔ×Å ÕÓÔÁÎÏ×ËÉ ËÏÒÎÅ×ÏÊ ËÁÔÁÌÏÇ KDE. ïÐÒÅÄÅÌÑÅÔ ÓÔÁÒÛÉÊ ÎÏÍÅÒ ÉÓÐÏÌØÚÕÅÍÏÊ ×ÅÒÓÉÉ KDE. ðÏÄÒÁÚÕÍÅ×ÁÅÔ ×ËÌÀÞÅÎÉÅ USE_QT_VER ÐÏÄÈÏÄÑÝÅÊ ×ÅÒÓÉÉ. åÄÉÎÓÔ×ÅÎÎÙÍ ×ÏÚÍÏÖÎÙÍ ÚÎÁÞÅÎÉÅÍ Ñ×ÌÑÅÔÓÑ 3.
úÁÄÁÎÉÅ ÐÅÒÅÍÅÎÎÙÈ KDE 4 åÓÌÉ ×ÁÛÅ ÐÒÉÌÏÖÅÎÉÅ ÚÁ×ÉÓÉÔ ÏÔ KDE 4.x, ÐÒÉÓ×ÏÊÔÅ USE_KDE4 ÓÐÉÓÏË ÔÒÅÂÕÅÍÙÈ ËÏÍÐÏÎÅÎÔÏ×. äÌÑ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ ÔÉÐÁ ÚÁ×ÉÓÉÍÏÓÔÉ ËÏÍÐÏÎÅÎÔÁ ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ ÓÕÆÆÉËÓÙ _build É _run (ÎÁÐÒÉÍÅÒ, baseapps_run). åÓÌÉ ÓÕÆÆÉËÓ ÎÅ ÚÁÄÁÎ, ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÔÉÐ ÚÁ×ÉÓÉÍÏÓÔÉ ÐÏ ÕÍÏÌÞÁÎÉÀ. åÓÌÉ ×Ù ÈÏÔÉÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÏÂÁ ÔÉÐÁ, ÄÏÂÁרÔÅ ËÏÍÐÏÎÅÎÔ Ä×ÁÖÄÙ Ó ÏÂÏÉÍÉ ÓÕÆÆÉËÓÁÍÉ (ÎÁÐÒÉÍÅÒ, automoc4_build automoc4_run). ïÓÎÏ×ÎÙÅ ÎÁÉÂÏÌÅÅ ÉÓÐÏÌØÚÕÅÍÙÅ ËÏÍÐÏÎÅÎÔÙ ÐÅÒÅÞÉÓÌÅÎÙ ÎÉÖÅ (ÁËÔÕÁÌØÎÙÅ ËÏÍÐÏÎÅÎÔÙ ÚÁÄÏËÕÍÅÎÔÉÒÏ×ÁÎÙ × ÎÁÞÁÌÅ ÆÁÊÌÁ /usr/ports/Mk/bsd.kde4.mk): äÏÓÔÕÐÎÙÅ ËÏÍÐÏÎÅÎÔÙ KDE 4 îÁÚ×ÁÎÉÅ ïÐÉÓÁÎÉÅ baseapps ïÓÎÏ×ÎÙÅ ÐÒÉÌÏÖÅÎÉÑ KDE Desktop kdehier éÅÒÁÒÈÉÑ ÏÓÎÏ×ÎÙÈ ËÁÔÁÌÏÇÏ× KDE kdelibs KDE Developer Platform kdeprefix åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÏ, ÔÏ ÐÏÒÔ ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎ × ${KDE4_PREFIX} ×ÍÅÓÔÏ ${LOCALBASE} pimlibs âÉÂÌÉÏÔÅËÉ KDE-Pim workspace ðÏÌØÚÏ×ÁÔÅÌØÓËÉÅ ÏËÒÕÖÅÎÉÑ KDE akonadi óÅÒ×ÅÒ ÈÒÁÎÅÎÉÑ KDE-Pim automoc4 automoc ÄÌÑ ÐÁËÅÔÏ× Qt 4
äÌÑ ÉÚÂÅÖÁÎÉÑ ËÏÎÆÌÉËÔÏ× Ó ÐÏÒÔÁÍÉ KDE 3.x, ÐÏÒÔÙ KDE 4.x ÕÓÔÁÎÁ×ÌÉ×ÁÀÔÓÑ × KDE4_PREFIX, ÞÔÏ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ /usr/local/kde4. üÔÏ ÄÏÓÔÉÇÁÅÔÓÑ ÐÕÔÅÍ ÕËÁÚÁÎÉÑ ËÏÍÐÏÎÅÎÔÁ kdeprefix, ËÏÔÏÒÙÊ ÏÐÒÅÄÅÌÑÅÔ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ PREFIX. ôÅÍ ÎÅ ÍÅÎÅÅ, ÐÏÒÔÙ ÕÞÉÔÙ×ÁÀÔ ÌÀÂÙÅ PREFIX, ÕÓÔÁÎÏ×ÌÅÎÎÙÅ ÞÅÒÅÚ ÐÅÒÅÍÅÎÎÕÀ ÏËÒÕÖÅÎÉÑ MAKEFLAGS É/ÉÌÉ ÐÁÒÁÍÅÔÒÙ make. ðÒÉÍÅÒ <makevar>USE_KDE4</makevar> üÔÏ ÐÒÏÓÔÏÊ ÐÒÉÍÅÒ ÄÌÑ ÐÏÒÔÁ KDE 4. USE_CMAKE ÕËÁÚÙ×ÁÅÔ ÐÏÒÔÕ ÉÓÐÏÌØÚÏ×ÁÔØ CMake — ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÉÎÓÔÒÕÍÅÎÔ, ÛÉÒÏËÏ ÒÁÓÐÒÏÓÔÒÁÎÅÎÎÙÊ ÓÒÅÄÉ ÐÒÏÅËÔÏ× KDE 4. USE_KDE4 ÄÏÂÁ×ÌÑÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ÂÉÂÌÉÏÔÅË KDE É ÚÁÓÔÁ×ÌÑÅÔ ÐÏÒÔÙ ÉÓÐÏÌØÚÏ×ÁÔØ automoc4 ×Ï ×ÒÅÍÑ ÓÂÏÒËÉ. ôÒÅÂÕÅÍÙÅ ËÏÍÐÏÎÅÎÔÙ KDE É ÄÒÕÇÉÅ ÚÁ×ÉÓÉÍÏÓÔÉ ÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ × ÖÕÒÎÁÌÅ configure. USE_KDE4 ÎÅ ÐÏÄÒÁÚÕÍÅ×ÁÅÔ USE_QT_VER. åÓÌÉ ÐÏÒÔ ÔÒÅÂÕÅÔ ËÁËÏÊ-ÌÉÂÏ ÉÚ ËÏÍÐÏÎÅÎÔÏ× Qt 4, ÔÏ ÓÌÅÄÕÅÔ ÕÓÔÁÎÏ×ÉÔØ USE_QT_VER, Á ÚÁÔÅÍ ÍÏÖÎÏ ÕËÁÚÁÔØ ÎÅÏÂÈÏÄÉÍÙÅ ËÏÍÐÏÎÅÎÔÙ. USE_CMAKE= yes USE_KDE4= kdelibs kdeprefix automoc4 USE_QT_VER= 4 QT_COMPONENTS= moc_build qmake_build rcc_build uic_build
éÓÐÏÌØÚÏ×ÁÎÉÅ Java úÁÄÁÎÉÅ ÐÅÒÅÍÅÎÎÙÈ åÓÌÉ ×ÁÛÅÍÕ ÐÏÒÔÕ ÎÅÏÂÈÏÄÉÍÏ ÎÁÌÉÞÉÅ Java™ Development Kit (JDK™) ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ, ÒÁÂÏÔÙ ÉÌÉ ÄÁÖÅ ÒÁÓÐÁËÏ×ËÉ ÄÉÓÔÒÉÂÕÔÉ×ÎÏÇÏ ÆÁÊÌÁ, ÔÏ × Î£Í ÄÏÌÖÎÁ ÂÙÔØ ÚÁÄÁÎÁ ÐÅÒÅÍÅÎÎÁÑ USE_JAVA. ÷ ëÏÌÌÅËÃÉÉ ðÏÒÔÏ× ÐÒÉÓÕÔÓÔ×ÕÀÔ ÎÅÓËÏÌØËÏ JDK ÒÁÚÌÉÞÎÙÈ ÒÁÚÒÁÂÏÔÞÉËÏ× É ÒÁÚÎÙÈ ×ÅÒÓÉÊ. åÓÌÉ ×ÁÛ ÐÏÒÔ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØ ÏÄÎÕ ÉÚ ÜÔÉÈ ×ÅÒÓÉÊ, ÔÏ ×Ù ÄÏÌÖÎÙ ÕËÁÚÁÔØ, ËÁËÕÀ ÉÍÅÎÎÏ. óÁÍÏÊ ÐÏÓÌÅÄÎÅÊ ×ÅÒÓÉÅÊ Ñ×ÌÑÅÔÓÑ java/jdk16. ðÅÒÅÍÅÎÎÙÅ, ËÏÔÏÒÙÅ ËÏÔÏÒÙÅ ÍÏÇÕÔ ÚÁÄÁ×ÁÔØÓÑ ÐÏÒÔÁÍÉ, ÉÓÐÏÌØÚÕÀÝÉÍÉ Java ðÅÒÅÍÅÎÎÁÑ úÎÁÞÅÎÉÅ USE_JAVA äÏÌÖÎÁ ÂÙÔØ ÏÐÒÅÄÅÌÅÎÁ ÄÌÑ ÔÏÇÏ, ÞÔÏ ÐÏÓÌÅÄÕÀÝÉÅ ÐÅÒÅÍÅÎÎÙÅ ×ÓÔÕÐÉÌÉ × ÄÅÊÓÔ×ÉÅ. JAVA_VERSION óÐÉÓÏË ×ÅÒÓÉÊ Java, ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÞÅÒÅÚ ÐÒÏÂÅÌ, ÐÏÄÈÏÄÑÝÉÈ ÄÌÑ ÐÏÒÔÁ. ïÐÃÉÏÎÁÌØÎÙÊ ÚÎÁË "+" ÐÏÚ×ÏÌÑÅÔ ×ÁÍ ÕËÁÚÁÔØ ÄÉÁÐÁÚÏÎ ×ÅÒÓÉÊ (×ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: 1.5[+] 1.6[+] 1.7[+] ). JAVA_OS óÐÉÓÏË ÏÐÅÒÁÃÉÏÎÎÙÈ ÓÉÓÔÅÍ, ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÞÅÒÅÚ ÐÒÏÂÅÌ, ÐÏÒÔÙ JDK ÄÌÑ ËÏÔÏÒÙÈ ÐÏÄÈÏÄÑÔ ÄÌÑ ÐÏÒÔÁ (×ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: native linux). JAVA_VENDOR óÐÉÓÏË ÒÁÚÒÁÂÏÔÞÉËÏ× ÐÏÒÔÏ× JDK, ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÞÅÒÅÚ ÐÒÏÂÅÌ, ËÏÔÏÒÙÅ ÐÏÄÈÏÄÑÔ ÄÌÑ ÐÏÒÔÁ (×ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: freebsd bsdjava sun openjdk). JAVA_BUILD åÓÌÉ ÚÁÄÁÎÁ, ÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ×ÙÂÒÁÎÎÙÊ ÐÏÒÔ JDK ÄÏÌÖÅÎ ÂÙÔØ ÄÏÂÁ×ÌÅÎ Ë ÚÁ×ÉÓÉÍÏÓÔÑÍ ÐÏÒÔÁ ÄÌÑ ÅÇÏ ÐÏÓÔÒÏÅÎÉÑ. JAVA_RUN åÓÌÉ ÚÁÄÁÎÁ, ÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ×ÙÂÒÁÎÎÙÊ ÐÏÒÔ JDK ÄÏÌÖÅÎ ÂÙÔØ ÄÏÂÁ×ÌÅÎ × ÚÁ×ÉÓÉÍÏÓÔÑÍ ÐÏÒÔÁ ÄÌÑ ÅÇÏ ÒÁÂÏÔÙ. JAVA_EXTRACT åÓÌÉ ÚÁÄÁÎÁ, ÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ×ÙÂÒÁÎÎÙÊ ÐÏÒÔ JDK ÄÏÌÖÅÎ ÂÙÔØ ÄÏÂÁ×ÌÅÎ × ÚÁ×ÉÓÉÍÏÓÔÑÍ ÐÏÒÔÁ ÄÌÑ ÒÁÓÐÁËÏ×ËÉ ÅÇÏ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ×.
îÉÖÅ ÐÅÒÅÞÉÓÌÑÀÔÓÑ ×ÓÅ ÚÎÁÞÅÎÉÑ, ËÏÔÏÒÙÅ ÐÒÉÎÉÍÁÀÔ ÐÅÒÅÍÅÎÎÙÅ ÐÏÓÌÅ ÚÁÄÁÎÉÑ ÐÅÒÅÍÅÎÎÏÊ USE_JAVA: ðÅÒÅÍÅÎÎÙÅ, ÄÏÓÔÕÐÎÙÅ × ÐÏÒÔÁÈ, ÉÓÐÏÌØÚÕÀÝÉÈ Java ðÅÒÅÍÅÎÎÁÑ úÎÁÞÅÎÉÅ JAVA_PORT îÁÚ×ÁÎÉÅ ÐÏÒÔÁ JDK (Ë ÐÒÉÍÅÒÕ, 'java/openjdk6'). JAVA_PORT_VERSION ðÏÌÎÏÅ ÎÁÉÍÅÎÏ×ÁÎÉÉ ×ÅÒÓÉÉ ÐÏÒÔÁ JDK (Ë ÐÒÉÍÅÒÕ, '1.6.0'). åÓÌÉ ×ÁÍ ÎÕÖÎÙ ÔÏÌØËÏ ÐÅÒ×ÙÅ Ä×Å ÃÉÆÒÙ ÎÏÍÅÒÁ ×ÅÒÓÉÉ, ÉÓÐÏÌØÚÕÊÔÅ ËÏÎÓÔÒÕËÃÉÀ ${JAVA_PORT_VERSION:C/^([0-9])\.([0-9])(.*)$/\1.\2/}. JAVA_PORT_OS ïÐÅÒÁÃÉÏÎÎÁÑ ÓÉÓÔÅÍÁ, ÉÓÐÏÌØÚÕÅÍÁÑ ÐÏÒÔÏÍ JDK (Ë ÐÒÉÍÅÒÕ, 'native'). JAVA_PORT_VENDOR òÁÚÒÁÂÏÔÞÉË ÐÏÒÔÁ JDK (Ë ÐÒÉÍÅÒÕ, 'openjdk'). JAVA_PORT_OS_DESCRIPTION ïÐÉÓÁÎÉÅ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ, ÉÓÐÏÌØÚÕÅÍÏÊ ÐÏÒÔÏÍ JDK (Ë ÐÒÉÍÅÒÕ, 'Native'). JAVA_PORT_VENDOR_DESCRIPTION ïÐÉÓÁÎÉÅ ÒÁÚÒÁÂÏÔÞÉËÁ ÐÏÒÔÁ JDK (Ë ÐÒÉÍÅÒÕ, 'OpenJDK BSD Porting Team'). JAVA_HOME íÁÒÛÒÕÔ Ë ÕÓÔÁÎÏ×ÏÞÎÏÍÕ ËÁÔÁÌÏÇÕ JDK (Ë ÐÒÉÍÅÒÕ, '/usr/local/openjdk6'). JAVAC íÁÒÛÒÕÔ Ë ÉÓÐÏÌØÚÕÅÍÏÍÕ ËÏÍÐÉÌÑÔÏÒÕ Java (Ë ÐÒÉÍÅÒÕ, '/usr/local/openjdk6/bin/javac'. JAR íÁÒÛÒÕÔ Ë ÉÓÐÏÌØÚÕÅÍÏÊ ÕÔÉÌÉÔÅ jar (Ë ÐÒÉÍÅÒÕ, '/usr/local/openjdk6/bin/jar' ÉÌÉ '/usr/local/bin/fastjar'). APPLETVIEWER íÁÒÛÒÕÔ Ë ÕÔÉÌÉÔÅ appletviewer (Ë ÐÒÉÍÅÒÕ, '/usr/local/openjdk6/bin/appletviewer'). JAVA íÁÒÛÒÕÔ Ë ×ÙÐÏÌÎÑÅÍÏÍÕ ÆÁÊÌÕ java. éÓÐÏÌØÚÕÊÔÅ ÅÇÏ ÄÌÑ ÚÁÐÕÓËÁ Java-ÐÒÏÇÒÁÍÍ (Ë ÐÒÉÍÅÒÕ, '/usr/local/openjdk6/bin/java'). JAVADOC íÁÒÛÒÕÔ Ë ×ÓÐÏÍÏÇÁÔÅÌØÎÏÊ ÐÒÏÇÒÁÍÍÅ javadoc. JAVAH íÁÒÛÒÕÔ Ë ÐÒÏÇÒÁÍÍÅ javah. JAVAP íÁÒÛÒÕÔ Ë ÐÒÏÇÒÁÍÍÅ javap. JAVA_KEYTOOL íÁÒÛÒÕÔ Ë ×ÓÐÏÍÏÇÁÔÅÌØÎÏÊ ÐÒÏÇÒÁÍÍÅ keytool. JAVA_N2A íÁÒÛÒÕÔ Ë ÕÔÉÌÉÔÅ native2ascii. JAVA_POLICYTOOL íÁÒÛÒÕÔ Ë ÐÒÏÇÒÁÍÍÅ policytool. JAVA_SERIALVER íÁÒÛÒÕÔ Ë ×ÓÐÏÍÏÇÁÔÅÌØÎÏÊ ÐÒÏÇÒÁÍÍÅ serialver. RMIC íÁÒÛÒÕÔ Ë ÇÅÎÅÒÁÔÏÒÕ ËÁÒËÁÓÁ ÐÒÏÇÒÁÍÍ RMI, ÕÔÉÌÉÔÅ rmic. RMIREGISTRY íÁÒÛÒÕÔ Ë ÐÒÏÇÒÁÍÍÅ ÒÅÇÉÓÔÒÁÃÉÉ RMI, rmiregistry. RMID íÁÒÛÒÕÔ Ë ÐÒÏÇÒÁÍÍÅ-ÄÁÅÍÏÎÕ RMI rmid. JAVA_CLASSES íÁÒÛÒÕÔ Ë ÁÒÈÉ×Õ, ËÏÔÏÒÙÊ ÓÏÄÅÒÖÉÔ ÆÁÊÌÙ ËÌÁÓÓÏ× JDK, ${JAVA_HOME}/jre/lib/rt.jar.
÷Ù ÍÏÖÅÔÅ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ make-ÃÅÌØÀ java-debug ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÉÎÆÏÒÍÁÃÉÉ, ÎÅÏÂÈÏÄÉÍÏÊ ÄÌÑ ÏÔÌÁÄËÉ ×ÁÛÅÇÏ ÐÏÒÔÁ. ðÒÉ Å£ ×ÙÐÏÌÎÅÎÉÉ ÂÕÄÕÔ ×ÙÄÁÎÙ ÚÎÁÞÅÎÉÑ ÍÎÏÇÉÈ ÕÐÏÍÑÎÕÔÙÈ ×ÙÛÅ ÐÅÒÅÍÅÎÎÙÈ. ëÒÏÍÅ ÔÏÇÏ, ÄÌÑ ÅÄÉÎÏÏÂÒÁÚÉÑ ÕÓÔÁÎÏ×ËÉ ×ÓÅÈ ÐÏÒÔÏ× Java ÏÐÒÅÄÅÌÅÎÙ ÓÌÅÄÕÀÝÉÅ ËÏÎÓÔÁÎÔÙ: ëÏÎÓÔÁÎÔÙ, ÏÐÒÅÄÅÌ£ÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ Java ëÏÎÓÔÁÎÔÁ úÎÁÞÅÎÉÅ JAVASHAREDIR ëÏÒÎÅ×ÏÊ ËÁÔÁÌÏÇ ÄÌÑ ×ÓÅÇÏ, ÞÔÏ Ó×ÑÚÁÎÏ Ó Java. ðÏ ÕÍÏÌÞÁÎÉÀ: ${PREFIX}/share/java. JAVAJARDIR ëÁÔÁÌÏÇ, × ËÏÔÏÒÙÊ ÄÏÌÖÎÙ ÕÓÔÁÎÁ×ÌÉ×ÁÔØÓÑ JAR-ÆÁÊÌÙ. ðÏ ÕÍÏÌÞÁÎÉÀ: ${JAVASHAREDIR}/classes. JAVALIBDIR ëÁÔÁÌÏÇ, × ËÏÔÏÒÙÊ ÕÓÔÁÎÁ×ÌÉ×ÁÀÔÓÑ JAR-ÆÁÊÌÙ ÉÚ ÄÒÕÇÉÈ ÐÏÒÔÏ×. ðÏ ÕÍÏÌÞÁÎÉÀ: ${LOCALBASE}/share/java/classes.
óÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÚÁÐÉÓÉ ÏÐÒÅÄÅÌÑÀÔÓÑ × ÏÂÏÉÈ ÐÅÒÅÍÅÎÎÙÈ PLIST_SUB (ÏÐÉÓÁÎÁ × ) É SUB_LIST.
ðÏÓÔÒÏÅÎÉÅ Ó Ant åÓÌÉ ÐÏÓÔÒÏÅÎÉÅ ÐÏÒÔÁ ÐÒÏÉÚ×ÏÄÉÔÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ Apache Ant, ÔÏ ÎÅÏÂÈÏÄÉÍÏ ÏÐÒÅÄÅÌÉÔØ USE_ANT. ôÁËÉÍ ÏÂÒÁÚÏÍ Ant ÓÔÁÎÏ×ÉÔÓÑ ÐÏÄËÏÍÁÎÄÏÊ make. åÓÌÉ × ÐÏÒÔÅ ÎÅ ÏÐÒÅÄÅÌÅÎÁ ÃÅÌØ do-build, ÔÏ ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎÁ ÃÅÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ, ËÏÔÏÒÁÑ ÐÒÏÓÔÏ ÚÁÐÕÓËÁÅÔ Ant × ÓÏÏÔ×ÅÔÓÔ×ÉÉ ÓÏ ÚÎÁÞÅÎÉÅÍ MAKE_ENV, MAKE_ARGS É ALL_TARGET. üÔÏ ÐÏÈÏÖÅ ÎÁ ÍÅÈÁÎÉÚÍ USE_GMAKE, ËÏÔÏÒÙÊ ÏÐÉÓÁÎ × . ðÒÁËÔÉÞÅÓËÉÅ ÒÅËÏÍÅÎÄÁÃÉÉ ðÒÉ ÐÏÒÔÉÒÏ×ÁÎÉÉ Java-ÂÉÂÌÉÏÔÅËÉ ×ÁÛ ÐÏÒÔ ÄÏÌÖÅÎ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ JAR-ÆÁÊÌ(Ù) × ËÁÔÁÌÏÇ ${JAVAJARDIR}, Á ×ÓÅ ÏÓÔÁÌØÎÙÅ ÄÁÎÎÙÅ × ËÁÔÁÌÏÇ ${JAVASHAREDIR}/${PORTNAME} (ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ÄÏËÕÍÅÎÔÁÃÉÉ, Ï ËÏÔÏÒÏÊ ÐÏÊÄ£Ô ÒÅÞØ ÎÉÖÅ). äÌÑ ÕÍÅÎØÛÅÎÉÑ ÒÁÚÍÅÒÁ ÕÐÁËÏ×ÁÎÎÏÇÏ ÆÁÊÌÁ ×Ù ÍÏÖÅÔÅ ÓÏÓÌÁÔØÓÑ ÎÁ JAR-ÆÁÊÌ(Ù) ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × ÆÁÊÌÅ Makefile. ðÒÏÓÔÏ ×ÏÓÐÏÌØÚÕÊÔÅÓØ ÓÌÅÄÕÀÝÅÊ ÄÉÒÅËÔÉ×ÏÊ (× ËÏÔÏÒÏÊ myport.jar Ñ×ÌÑÅÔÓÑ ÉÍÅÎÅÍ JAR-ÆÁÊÌÁ, ÕÓÔÁÎÁ×ÌÉ×ÁÅÍÏÇÏ ËÁË ÞÁÓÔØ ÐÏÒÔÁ): PLIST_FILES+= %%JAVAJARDIR%%/myport.jar ðÒÉ ÐÏÒÔÉÒÏ×ÁÎÉÉ Java-ÐÒÉÌÏÖÅÎÉÑ ÐÏÒÔ ÏÂÙÞÎÏ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ×Ó£ × ÏÄÉÎ ËÁÔÁÌÏÇ (× ÔÏÍ ÞÉÓÌÅ ×ÓÅ Ó×ÏÉ JAR-ÚÁ×ÉÓÉÍÏÓÔÉ). ÷ ÜÔÏÍ ÏÔÎÏÛÅÎÉÉ ÎÁÓÔÏÑÔÅÌØÎÏ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ${JAVASHAREDIR}/${PORTNAME}. îÁ ÕÓÍÏÔÒÅÎÉÅ ÓÏÚÄÁÔÅÌÑ ÐÏÒÔÁ ÏÓÔÁ£ÔÓÑ ÒÅÛÅÎÉÅ ×ÏÐÒÏÓÁ Ï ÔÏÍ, ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÌÉ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ JAR-ÚÁ×ÉÓÉÍÏÓÔÉ × ÜÔÏÔ ËÁÔÁÌÏÇ ÉÌÉ ÎÁÐÒÑÍÕÀ ÉÓÐÏÌØÚÏ×ÁÔØ ÕÖÅ ÕÓÔÁÎÏ×ÌÅÎÎÙÅ (ÉÚ ËÁÔÁÌÏÇÁ ${JAVAJARDIR}). ÷ÎÅ ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÔÉÐÁ ×ÁÛÅÇÏ ÐÏÒÔÁ (ÂÉÂÌÉÏÔÅËÁ ÜÔÏ ÉÌÉ ÐÒÉÌÏÖÅÎÉÅ), ÄÏÐÏÌÎÉÔÅÌØÎÁÑ ÄÏËÕÍÅÎÔÁÃÉÑ ÄÏÌÖÎÁ ÂÙÔØ ÕÓÔÁÎÁ×ÌÉ×ÁÔØÓÑ × ÔÏÖÅ ÓÁÍÏÅ ÍÅÓÔÏ, ÞÔÏ É ÄÌÑ ÄÒÕÇÉÈ ÐÏÒÔÏ×. éÚ×ÅÓÔÎÏ, ÞÔÏ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÉÓÐÏÌØÚÕÅÍÏÊ ×ÅÒÓÉÉ JDK ÕÔÉÌÉÔÁ JavaDoc ÇÅÎÅÒÉÒÕÅÔ ÒÁÚÌÉÞÎÙÅ ÎÁÂÏÒÙ ÆÁÊÌÏ×. äÌÑ ÐÏÒÔÏ×, ËÏÔÏÒÙÅ ÎÅ ÐÒÉ×ÑÚÁÎÙ Ë ÉÓÐÏÌØÚÏ×ÁÎÉÀ ÏÐÒÅÄÅÌ£ÎÎÏÊ ×ÅÒÓÉÉ JDK, ÔÁËÉÍ ÏÂÒÁÚÏÍ ÓÔÁÎÏ×ÉÔÓÑ ÐÒÏÂÌÅÍÁÔÉÞÎÙÍ ÏÐÒÅÄÅÌÉÔØ ÓÐÉÓÏË ÆÁÊÌÏ× ÄÌÑ ÕÐÁËÏ×ËÉ (pkg-plist). üÔÏ ÏÄÎÁ ÉÚ ÐÒÉÞÉÎ, ÐÏ ËÏÔÏÒÏÊ ÓÏÚÄÁÔÅÌÑÍ ÐÏÒÔÏ× ÎÁÓÔÏÑÔÅÌØÎÏ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÔØ ÍÁËÒÏÓ PORTDOCS. âÏÌÅÅ ÔÏÇÏ, ÄÁÖÅ ÅÓÌÉ ×Ù ÓÍÏÖÅÔÅ ÕÇÁÄÁÔØ ÎÁÂÏÒ ÆÁÊÌÏ×, ËÏÔÏÒÙÊ ÂÕÄÅÔ ÓÇÅÎÅÒÉÒÏ×ÁÎ ÕÔÉÌÉÔÏÊ javadoc, ÒÁÚÍÅÒ ÐÏÌÕÞÁÀÝÅÇÏÓÑ ÆÁÊÌÁ pkg-plist ÇÏÌÏÓÕÅÔ ÚÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ PORTDOCS. úÎÁÞÅÎÉÅÍ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ ÐÅÒÅÍÅÎÎÏÊ DATADIR Ñ×ÌÑÅÔÓÑ ${PREFIX}/share/${PORTNAME}. èÏÒÏÛÅÊ ÉÄÅÅÊ Ñ×ÌÑÅÔÓÑ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÄÌÑ Java-ÐÏÒÔÏ× ÚÎÁÞÅÎÉÑ DATADIR ËÁË ${JAVASHAREDIR}/${PORTNAME}. îÁ ÓÁÍÏÍ ÄÅÌÅ DATADIR Á×ÔÏÍÁÔÉÞÅÓËÉ ÄÏÂÁ×ÌÑÅÔÓÑ Ë PLIST_SUB (ÜÔÏ ÏÐÉÓÁÎÏ × ), ÔÁË ÞÔÏ ×Ù ÓÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ %%DATADIR%% ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × pkg-plist. þÔÏ ËÁÓÁÅÔÓÑ ×ÙÂÏÒÁ ÍÅÖÄÕ ÐÏÓÔÒÏÅÎÉÅÍ ÐÏÒÔÏ× Java ÉÚ ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× ÉÌÉ ÉÈ ÐÒÑÍÏÊ ÕÓÔÁÎÏ×ËÏÊ ÉÚ ÂÉÎÁÒÎÙÈ ÄÉÓÔÒÉÂÕÔÉ×Ï×, ÔÏ ÎÁ ÍÏÍÅÎÔ ÓÏÚÄÁÎÉÑ ÜÔÏÇÏ ÔÅËÓÔÁ ÏÐÒÅÄÅÌ£ÎÎÏÊ ÐÏÌÉÔÉËÉ ÎÁ ÜÔÏÔ ÓÞ£Ô ÎÅ ÓÕÝÅÓÔ×ÕÅÔ. ïÄÎÁËÏ ÕÞÁÓÔÎÉËÉ ðÒÏÅËÔÁ &os; Java ÒÅËÏÍÅÎÄÕÀÔ ÓÏÚÄÁÔÅÌÑÍ ÐÏÒÔÏ× ÓÔÒÏÉÔØ ÉÈ ÉÚ ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ×, ÅÓÌÉ ÜÔÁ ÚÁÄÁÞÁ Ñ×ÌÑÅÔÓÑ ÎÅÓÌÏÖÎÏÊ. ÷ÓÅ ×ÏÚÍÏÖÎÏÓÔÉ, ËÏÔÏÒÙÅ ÂÙÌÉ ÏÐÉÓÁÎÙ × ÜÔÏÍ ÒÁÚÄÅÌÅ, ÒÅÁÌÉÚÏ×ÁÎÙ × ÆÁÊÌÅ bsd.java.mk. åÓÌÉ ×Ù ÐÒÅÄÐÏÌÏÖÉÔÅ, ÞÔÏ ×ÁÛÅÍÕ ÐÏÒÔÕ ÔÒÅÂÕÅÔÓÑ ÍÅÎÅÅ ÔÒÉ×ÉÁÌØÎÁÑ ÐÏÄÄÅÒÖËÁ Java, ÐÏÖÁÌÕÊÓÔÁ, ×ÚÇÌÑÎÉÔÅ ÓÎÁÞÁÌÁ ÎÁ ÖÕÒÎÁÌ ÉÚÍÅÎÅÎÉÊ bsd.java.mk × SVN, ÔÁË ËÁË ÄÌÑ ÄÏËÕÍÅÎÔÉÒÏ×ÁÎÉÑ ÐÏÓÌÅÄÎÉÈ ÉÚÍÅÎÅÎÉÊ ÔÒÅÂÕÅÔÓÑ ËÁËÏÅ-ÔÏ ×ÒÅÍÑ. úÁÔÅÍ, ÅÓÌÉ ×Ù ÄÕÍÁÅÔÅ, ÞÔÏ ÎÅ È×ÁÔÁÀÝÁÑ ×ÁÍ ÐÏÄÄÅÒÖËÁ ÏËÁÖÅÔÓÑ ÐÏÌÅÚÎÏÊ ÄÌÑ ÍÎÏÇÉÈ ÄÒÕÇÉÈ ÐÏÒÔÏ× Java, ÏÂÓÕÄÉÔÅ ×ÁÛ ×ÏÐÒÏÓ × &a.java;. èÏÔÑ × ÂÁÚÅ ÓÏÏÂÝÅÎÉÊ Ï ÏÛÉÂËÁÈ ÄÌÑ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ PR ÉÍÅÅÔÓÑ ËÁÔÅÇÏÒÉÑ java, ÏÎÁ ÏÔÎÏÓÉÔÓÑ Ë ÒÁÂÏÔÅ ÎÁÄ ÐÏÒÔÉÒÏ×ÁÎÉÅÍ JDK, ËÏÔÏÒÙÅ ÐÒÏ×ÏÄÉÔ ðÒÏÅËÔ &os; Java. ôÁËÉÍ ÏÂÒÁÚÏÍ, ×Ù ÄÏÌÖÎÙ ÏÔÎÏÓÉÔØ Ó×ÏÊ Java-ÐÏÒÔ, ËÁË É ÌÀÂÏÊ ÄÒÕÇÏÊ, Ë ËÁÔÅÇÏÒÉÉ ports, ÅÓÌÉ ÒÅÛÁÅÍÙÊ ×ÁÍÉ ×ÏÐÒÏÓ ÎÅ ÏÔÎÏÓÉÔÓÑ ÎÉ Ë ÒÅÁÌÉÚÁÃÉÉ JDK, ÎÉ Ë bsd.java.mk. ðÏÈÏÖÉÍ ÏÂÒÁÚÏÍ ÏÐÒÅÄÅÌÅÎÁ ÐÏÌÉÔÉËÁ ÐÏ ÏÔÎÏÛÅÎÉÀ Ë CATEGORIES ÐÏÒÔÁ Java, ËÏÔÏÒÁÑ ÐÏÄÒÏÂÎÏ ÏÐÉÓÁÎÁ × .
÷ÅÂ-ÐÒÉÌÏÖÅÎÉÑ, Apache É PHP Apache ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ Apache USE_APACHE ðÏÒÔ ÔÒÅÂÕÅÔ Apache. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: yes (ÂÅÒ£Ô ÌÀÂÕÀ ×ÅÒÓÉÀ), 20, 22, 20-22, 20+ É ÔÁË ÄÁÌÅÅ. ÷ÅÒÓÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ 22. âÏÌÅÅ ÐÏÄÒÏÂÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÓÏÄÅÒÖÉÔÓÑ × ÆÁÊÌÅ ports/Mk/bsd.apache.mk É ÎÁ ÓÔÒÁÎÉÃÅ wiki.freebsd.org/Apache/. WITH_APACHE2 üÔÁ ÐÅÒÅÍÅÎÎÁÑ Ñ×ÌÑÅÔÓÑ ÕÓÔÁÒÅ×ÛÅÊ É ÎÅ ÄÏÌÖÎÁ ÂÏÌØÛÅ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ. APXS ðÏÌÎÙÊ ÐÕÔØ Ë ÉÓÐÏÌÎÑÅÍÏÍÕ ÆÁÊÌÕ apxs. íÏÖÅÔ ÂÙÔØ ÐÅÒÅÏÐÒÅÄÅÌÅÎ × ×ÁÛÅÍ ÐÏÒÔÕ. HTTPD ðÏÌÎÙÊ ÐÕÔØ Ë ÉÓÐÏÌÎÑÅÍÏÍÕ ÆÁÊÌÕ httpd. íÏÖÅÔ ÂÙÔØ ÐÅÒÅÏÐÒÅÄÅÌÅÎ × ×ÁÛÅÍ ÐÏÒÔÕ. APACHE_VERSION ÷ÅÒÓÉÑ ÕÓÔÁÎÏ×ÌÅÎÎÏÇÏ Apache (ÐÅÒÅÍÅÎÎÁÑ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ). üÔÁ ÐÅÒÅÍÅÎÎÁÑ ÄÏÓÔÕÐÎÁ ÔÏÌØËÏ ÐÏÓÌÅ ÐÏÄËÌÀÞÅÎÉÑ bsd.port.pre.mk. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: 20, 22. APACHEMODDIR ëÁÔÁÌÏÇ ÄÌÑ ÍÏÄÕÌÅÊ Apache. úÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÏÄÓÔÁ×ÌÑÅÔÓÑ × pkg-plist. APACHEINCLUDEDIR ëÁÔÁÌÏÇ ÄÌÑ ÚÁÇÏÌÏ×ËÏ× Apache. úÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÏÄÓÔÁ×ÌÑÅÔÓÑ × pkg-plist. APACHEETCDIR ëÁÔÁÌÏÇ ÄÌÑ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÈ ÆÁÊÌÏ× Apache. úÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÏÄÓÔÁ×ÌÑÅÔÓÑ × pkg-plist.
éÓÐÏÌØÚÕÅÍÙÅ ÐÅÒÅÍÅÎÎÙÅ ÐÒÉ ÐÏÒÔÉÒÏ×ÁÎÉÉ ÍÏÄÕÌÅÊ Apache MODULENAME îÁÚ×ÁÎÉÅ ÍÏÄÕÌÑ. úÎÁÞÅÎÉÅÍ ÐÏ ÕÍÏÌÞÁÎÉÀ Ñ×ÌÑÅÔÓÑ PORTNAME. ðÒÉÍÅÒ: mod_hello SHORTMODNAME ëÒÁÔËÏÅ ÎÁÚ×ÁÎÉÅ ÍÏÄÕÌÑ. îÁÓÌÅÄÕÅÔÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ ÏÔ MODULENAME, ÎÏ ÍÏÖÅÔ ÂÙÔØ ÐÅÒÅÏÐÒÅÄÅÌÅÎÏ. ðÒÉÍÅÒ: hello AP_FAST_BUILD éÓÐÏÌØÚÏ×ÁÔØ apxs ÄÌÑ ËÏÍÐÉÌÑÃÉÉ É ÕÓÔÁÎÏ×ËÉ ÍÏÄÕÌÑ. AP_GENPLIST ôÁËÖÅ Á×ÔÏÍÁÔÉÞÅÓËÉ ÓÏÚÄÁÅÔ pkg-plist. AP_INC äÏÂÁ×ÌÑÅÔ ËÁÔÁÌÏÇ Ë ÐÕÔÉ ÐÏÉÓËÁ ÚÁÇÏÌÏ×ËÏ× ×Ï ×ÒÅÍÑ ËÏÍÐÉÌÑÃÉÉ. AP_LIB äÏÂÁ×ÌÑÅÔ ËÁÔÁÌÏÇ Ë ÐÕÔÉ ÐÏÉÓËÁ ÂÉÂÌÉÏÔÅË ×Ï ×ÒÅÍÑ ËÏÍÐÉÌÑÃÉÉ. AP_EXTRAS äÏÐÏÌÎÉÔÅÌØÎÙÅ ÆÌÁÇÉ, ÐÅÒÅÄÁ×ÁÅÍÙÅ apxs.
÷ÅÂ-ÐÒÉÌÏÖÅÎÉÑ ÷ÅÂ-ÐÒÉÌÏÖÅÎÉÑ ÓÌÅÄÕÅÔ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ × PREFIX/www/appname. äÌÑ ×ÁÛÅÇÏ ÕÄÏÂÓÔ×Á ÜÔÏÔ ÐÕÔØ ÏÄÉÎÁËÏ×Ï ÄÏÓÔÕÐÅÎ × Makefile É pkg-plist ËÁË ÐÅÒÅÍÅÎÎÁÑ WWWDIR, Á ÐÕÔØ ÏÔÎÏÓÉÔÅÌØÎÏ PREFIX ÄÏÓÔÕÐÅÎ × Makefile ËÁË WWWDIR_REL. ðÏÌØÚÏ×ÁÔÅÌØ É ÇÒÕÐÐÁ ÐÒÏÃÅÓÓÁ ×ÅÂ-ÓÅÒ×ÅÒÁ ÄÏÓÔÕÐÎÙ ËÁË WWWOWN É WWWGRP, × ÓÌÕÞÁÅ ÅÓÌÉ ×ÁÍ ÎÕÖÎÏ ÉÚÍÅÎÉÔØ ×ÌÁÄÅÌØÃÁ ÄÌÑ ÎÅËÏÔÏÒÙÈ ÆÁÊÌÏ×. úÎÁÞÅÎÉÅÍ ÐÏ ÕÍÏÌÞÁÎÉÀ É ÄÌÑ ×ÌÁÄÅÌØÃÁ, É ÄÌÑ ÇÒÕÐÐÙ Ñ×ÌÑÅÔÓÑ www. åÓÌÉ ×Ù ÈÏÔÉÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ × ×ÁÛÅÍ ÐÏÒÔÅ ÄÒÕÇÉÅ ÚÎÁÞÅÎÉÑ, ×ÏÓÐÏÌØÚÕÊÔÅÓØ ÄÌÑ ÜÔÏÇÏ ÎÏÔÁÃÉÅÊ WWWOWN?= myuser, ÞÔÏÂÙ ÐÏÚ×ÏÌÉÔØ ÐÏÌØÚÏ×ÁÔÅÌÀ ÌÅÇËÏ ÐÅÒÅÏÐÒÅÄÅÌÉÔØ ÉÈ. îÅ ÄÏÂÁ×ÌÑÊÔÅ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ Apache, ÅÓÌÉ ×ÅÂ-ÐÒÉÌÏÖÅÎÉÅ Ñ×ÎÙÍ ÏÂÒÁÚÏÍ ÎÅ ÎÕÖÄÁÅÔÓÑ × Apache. õÞÉÔÙ×ÁÊÔÅ, ÞÔÏ ÐÏÌØÚÏ×ÁÔÅÌÉ ÍÏÇÕÔ ÐÏÖÅÌÁÔØ ÚÁÐÕÓÔÉÔØ ×ÁÛÅ ×ÅÂ-ÐÒÉÌÏÖÅÎÉÅ ÎÁ ÄÒÕÇÏÍ ×ÅÂ-ÓÅÒ×ÅÒÅ ÐÏÍÉÍÏ Apache. PHP ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ PHP USE_PHP ðÏÒÔ ÔÒÅÂÕÅÔ PHP. úÎÁÞÅÎÉÅ yes ÄÏÂÁ×ÌÑÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ PHP. ÷ÍÅÓÔÏ ÜÔÏÇÏ ÍÏÖÅÔ ÂÙÔØ ÕËÁÚÁÎ ÐÅÒÅÞÅÎØ ÔÒÅÂÕÅÍÙÈ ÒÁÓÛÉÒÅÎÉÊ PHP. ðÒÉÍÅÒ: pcre xml gettext DEFAULT_PHP_VER ÷ÙÂÉÒÁÅÔ ÓÔÁÒÛÉÊ ÎÏÍÅÒ ×ÅÒÓÉÉ, Ó ËÏÔÏÒÙÍ ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎ PHP ËÁË ÚÁ×ÉÓÉÍÏÓÔØ × ÓÌÕÞÁÅ, ËÏÇÄÁ PHP ÅÝÅ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ. ðÏ ÕÍÏÌÞÁÎÉÀ 5. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: 4, 5 IGNORE_WITH_PHP ðÏÒÔ ÎÅ ÒÁÂÏÔÁÅÔ Ó PHP ÄÁÎÎÏÊ ×ÅÒÓÉÉ. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: 4, 5 USE_PHPIZE ðÏÒÔ ÂÕÄÅÔ ÐÏÓÔÒÏÅÎ ËÁË ÒÁÓÛÉÒÅÎÉÅ PHP. USE_PHPEXT ðÏÒÔ ÂÕÄÅÔ ÓÞÉÔÁÔØÓÑ ÒÁÓÛÉÒÅÎÉÅÍ PHP, ×ËÌÀÞÁÑ ÕÓÔÁÎÏ×ËÕ É ÒÅÇÉÓÔÒÁÃÉÀ × ÒÅÅÓÔÒÅ ÒÁÓÛÉÒÅÎÉÊ. USE_PHP_BUILD õÓÔÁÎÏ×ÉÔØ PHP ËÁË ÚÁ×ÉÓÉÍÏÓÔØ ×ÒÅÍÅÎÉ ÐÏÓÔÒÏÅÎÉÑ. WANT_PHP_CLI èÏÞÅÔ CLI (ËÏÍÁÎÄÎÁÑ ÓÔÒÏËÁ) ×ÅÒÓÉÀ PHP. WANT_PHP_CGI èÏÞÅÔ CGI ×ÅÒÓÉÀ PHP. WANT_PHP_MOD èÏÞÅÔ PHP ËÁË ÍÏÄÕÌØ Apache. WANT_PHP_SCR èÏÞÅÔ CLI ÉÌÉ CGI ×ÅÒÓÉÀ PHP. WANT_PHP_WEB èÏÞÅÔ ÍÏÄÕÌØ Apache ÉÌÉ CGI ×ÅÒÓÉÀ PHP.
íÏÄÕÌÉ PEAR ðÏÒÔÉÒÏ×ÁÎÉÅ ÍÏÄÕÌÅÊ PEAR Ñ×ÌÑÅÔÓÑ ÏÞÅÎØ ÐÒÏÓÔÙÍ ÐÒÏÃÅÓÓÏÍ. éÓÐÏÌØÚÕÊÔÅ ÐÅÒÅÍÅÎÎÙÅ FILES, TESTS, DATA, SQLS, SCRIPTFILES, DOCS and EXAMPLES ÄÌÑ ÐÅÒÅÞÉÓÌÅÎÉÑ ÆÁÊÌÏ×, ËÏÔÏÒÙÅ ×Ù ÈÏÔÉÔÅ ÕÓÔÁÎÏ×ÉÔØ. ÷ÓÅ ÐÅÒÅÞÉÓÌÅÎÎÙÅ ÆÁÊÌÙ ÂÕÄÕÔ Á×ÔÏÍÁÔÉÞÅÓËÉ ÕÓÔÁÎÏ×ÌÅÎÙ × ÐÏÄÈÏÄÑÝÉÅ ÍÅÓÔÁ É ÄÏÂÁ×ÌÅÎÙ × pkg-plist. ðÏÄËÌÀÞÉÔÅ ${PORTSDIR}/devel/pear/bsd.pear.mk ÎÁ ÐÏÓÌÅÄÎÅÊ ÓÔÒÏËÅ Makefile. ðÒÉÍÅÒ Makefile ÄÌÑ ËÌÁÓÓÏ× PEAR PORTNAME= Date PORTVERSION= 1.4.3 CATEGORIES= devel www pear MAINTAINER= example@domain.com COMMENT= PEAR Date and Time Zone Classes BUILD_DEPENDS= ${PEARDIR}/PEAR.php:${PORTSDIR}/devel/pear-PEAR RUN_DEPENDS:= ${BUILD_DEPENDS} FILES= Date.php Date/Calc.php Date/Human.php Date/Span.php \ Date/TimeZone.php TESTS= test_calc.php test_date_methods_span.php testunit.php \ testunit_date.php testunit_date_span.php wknotest.txt \ bug674.php bug727_1.php bug727_2.php bug727_3.php \ bug727_4.php bug967.php weeksinmonth_4_monday.txt \ weeksinmonth_4_sunday.txt weeksinmonth_rdm_monday.txt \ weeksinmonth_rdm_sunday.txt DOCS= TODO _DOCSDIR= . .include <bsd.port.pre.mk> .include "${PORTSDIR}/devel/pear/bsd.pear.mk" .include <bsd.port.post.mk>
éÓÐÏÌØÚÏ×ÁÎÉÅ Python ëÏÌÌÅËÃÉÑ ðÏÒÔÏ× ÐÏÄÄÅÒÖÉ×ÁÅÔ ÐÁÒÁÌÌÅÌØÎÕÀ ÕÓÔÁÎÏ×ËÕ ÍÎÏÖÅÓÔ×Á ×ÅÒÓÉÊ Python. óÌÅÄÕÅÔ ÕÂÅÄÉÔØÓÑ, ÞÔÏ × ÐÏÒÔÁÈ ÉÓÐÏÌØÚÕÅÔÓÑ ÐÒÁ×ÉÌØÎÙÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ python × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÐÅÒÅÍÅÎÎÏÊ PYTHON_VERSION, ÕÓÔÁÎÏ×ÌÅÎÎÏÊ ÐÏÌØÚÏ×ÁÔÅÌÅÍ. ðÏ ÂÏÌØÛÅÊ ÞÁÓÔÉ ÜÔÏ ÏÚÎÁÞÁÅÔ ÚÁÍÅÎÕ ÐÕÔÉ Ë ÉÓÐÏÌÎÑÅÍÏÍÕ ÆÁÊÌÕ python × ÓÃÅÎÁÒÉÑÈ ÎÁ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ PYTHON_CMD. ðÏÒÔÙ, ÕÓÔÁÎÁ×ÌÉ×ÁÀÝÉÅ ÆÁÊÌÙ ÐÏÄ ËÁÔÁÌÏÇ PYTHON_SITELIBDIR, ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÅÆÉËÓ ×ÉÄÁ pyXY-, ÔÁËÉÍ ÏÂÒÁÚÏÍ ÎÁÚ×ÁÎÉÑ ÐÁËÅÔÏ× ÂÕÄÕÔ ×ËÌÀÞÁÔØ × ÓÅÂÑ ×ÅÒÓÉÀ Python, Ó ËÏÔÏÒÏÊ ÏÎÉ ÕÓÔÁÎÏ×ÌÅÎÙ. PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ËÏÔÏÒÙÅ ÉÓÐÏÌØÚÕÀÔ Python USE_PYTHON äÌÑ ÜÔÏÇÏ ÐÏÒÔÁ ÎÕÖÅÎ Python. íÉÎÉÍÁÌØÎÁÑ ÔÒÅÂÕÅÍÁÑ ×ÅÒÓÉÑ ÍÏÖÅÔ ÂÙÔØ ÕËÁÚÁÎÁ Ó ÔÁËÉÍ ÚÎÁÞÅÎÉÅÍ ËÁË 2.6+. ôÁËÖÅ ÍÏÖÎÏ ÕËÁÚÁÎ ÄÉÁÐÁÚÏÎ ×ÅÒÓÉÊ Ó ÒÁÚÄÅÌÅÎÉÅÍ Ä×ÕÈ ×ÅÒÓÉÊ ÞÅÒÅÚ ‐, ÎÁÐÒÉÍÅÒ: 2.6-2.7 USE_PYDISTUTILS éÓÐÏÌØÚÏ×ÁÔØ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÅ ÕÔÉÌÉÔÙ (distutils) Python ÄÌÑ ËÏÎÆÉÇÕÒÁÃÉÉ, ËÏÍÐÉÌÑÃÉÉ É ÕÓÔÁÎÏ×ËÉ. îÅÏÂÈÏÄÉÍÏ, ÅÓÌÉ ÐÏÒÔ ÉÓÐÏÌØÚÕÅÔ setup.py. ðÅÒÅÏÐÒÅÄÅÌÑÅÔ ÃÅÌÉ do-build É do-install É ÔÁËÖÅ ÍÏÖÅÔ ÐÅÒÅÏÐÒÅÄÅÌÑÔØ do-configure, ÅÓÌÉ ÎÅ ÏÐÒÅÄÅÌÅÎÁ GNU_CONFIGURE. PYTHON_PKGNAMEPREFIX éÓÐÏÌØÚÕÅÔÓÑ ËÁË PKGNAMEPREFIX ÄÌÑ ÏÔÌÉÞÉÑ ÐÁËÅÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ ÒÁÚÎÙÅ ×ÅÒÓÉÉ Python. ðÒÉÍÅÒ: py24- PYTHON_SITELIBDIR íÅÓÔÏÎÁÈÏÖÄÅÎÉÅ ÄÅÒÅ×Á site-packages, ËÏÔÏÒÏÅ ÓÏÄÅÒÖÉÔ ÐÕÔØ ÕÓÔÁÎÏ×ËÉ Python (ÏÂÙÞÎÏ, LOCALBASE). ðÅÒÅÍÅÎÎÁÑ PYTHON_SITELIBDIR ÍÏÖÅÔ ÂÙÔØ ÏÞÅÎØ ÐÏÌÅÚÎÏÊ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÍÏÄÕÌÅÊ Python. PYTHONPREFIX_SITELIBDIR ÷ÁÒÉÁÎÔ PYTHON_SITELIBDIR ÂÅÚ PREFIX. ðÏ ×ÏÚÍÏÖÎÏÓÔÉ ×ÓÅÇÄÁ ÉÓÐÏÌØÚÕÊÔÅ %%PYTHON_SITELIBDIR%% × pkg-plist. úÎÁÞÅÎÉÅÍ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ %%PYTHON_SITELIBDIR%% Ñ×ÌÑÅÔÓÑ lib/python%%PYTHON_VERSION%%/site-packages PYTHON_CMD ëÏÍÁÎÄÎÁÑ ÓÔÒÏËÁ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ Python, ×ËÌÀÞÁÑ ÎÏÍÅÒ ×ÅÒÓÉÉ. PYNUMERIC óÔÒÏËÁ ÚÁ×ÉÓÉÍÏÓÔÉ ÄÌÑ ÒÁÓÛÉÒÅÎÉÑ numeric. PYNUMPY óÔÒÏËÁ ÚÁ×ÉÓÉÍÏÓÔÉ ÄÌÑ ÎÏ×ÏÇÏ ÒÁÓÛÉÒÅÎÉÑ numeric, numpy (PYNUMERIC ÏÂßÑ×ÌÅÎ ÕÓÔÁÒÅ×ÛÉÍ ×ÙÛÅÓÔÏÑÝÉÍ ÐÒÏÉÚ×ÏÄÉÔÅÌÅÍ). PYXML óÔÒÏËÁ ÚÁ×ÉÓÉÍÏÓÔÉ ÄÌÑ ÒÁÓÛÉÒÅÎÉÑ XML (ÎÅ ÎÕÖÎÏ ÄÌÑ Python 2.0 É ×ÙÛÅ, Ô.Ë. ×ËÌÀÞÅÎÏ × ÏÓÎÏ×ÎÏÊ ÄÉÓÔÒÉÂÕÔÉ×). USE_TWISTED äÏÂÁ×ÉÔØ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ twistedCore. ðÅÒÅÞÅÎØ ÔÒÅÂÕÅÍÙÈ ËÏÍÐÏÎÅÎÔÏ× ÍÏÖÅÔ ÂÙÔØ ÕËÁÚÁÎ ËÁË ÚÎÁÞÅÎÉÅ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ. ðÒÉÍÅÒ: web lore pair flow USE_ZOPE äÏÂÁ×ÉÔØ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ Zope, ÐÌÁÔÆÏÒÍÙ ×Å ÐÒÉÌÏÖÅÎÉÊ. éÚÍÅÎÑÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ Python ÎÁ Python 2.7. ðÅÒÅÍÅÎÎÁÑ ZOPEBASEDIR ÓÏÄÅÒÖÉÔ ÄÉÒÅËÔÏÒÉÀ Ó ÕÓÔÁÎÏ×ÌÅÎÎÙÍ Zope.
ðÏÌÎÙÊ ÐÅÒÅÞÅÎØ ÄÏÓÔÕÐÎÙÈ ÐÅÒÅÍÅÎÎÙÈ ÍÏÖÎÏ ÎÁÊÔÉ × /usr/ports/Mk/bsd.python.mk.
éÓÐÏÌØÚÏ×ÁÎÉÅ <application>Tcl/Tk</application> ÷ ëÏÌÌÅËÃÉÉ ðÏÒÔÏ× ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÏÄÎÏ×ÒÅÍÅÎÎÁÑ ÕÓÔÁÎÏ×ËÁ ÍÎÏÖÅÓÔ×ÅÎÎÙÈ ×ÅÒÓÉÊ Tcl/Tk. ðÏÒÔÙ ÄÏÌÖÎÙ ÐÙÔÁÔØÓÑ ÐÏÄÄÅÒÖÉ×ÁÔØ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ×ÅÒÓÉÀ Tcl/Tk, ÉÓÐÏÌØÚÕÅÍÕÀ ÐÏ ÕÍÏÌÞÁÎÉÀ, É ×ÙÛÅ Ó ÐÏÍÏÝØÀ ÐÅÒÅÍÅÎÎÙÈ USE_TCL É USE_TK. öÅÌÁÅÍÕÀ ×ÅÒÓÉÀ tcl ÍÏÖÎÏ ÕËÁÚÁÔØ × ÐÅÒÅÍÅÎÎÏÊ WITH_TCL_VER. îÁÉÂÏÌÅÅ ×ÏÓÔÒÅÂÏ×ÁÎÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ËÏÔÏÒÙÅ ÉÓÐÏÌØÚÕÀÔ <application>Tcl/Tk</application> USE_TCL ðÏÒÔ ÚÁ×ÉÓÉÔ ÏÔ ÂÉÂÌÉÏÔÅËÉ Tcl (ÎÅ ÏÂÏÌÏÞËÉ). íÉÎÉÍÁÌØÎÕÀ ÔÒÅÂÕÅÍÕÀ ×ÅÒÓÉÀ ÍÏÖÎÏ ÕËÁÚÁÔØ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÔÁËÉÈ ÚÎÁÞÅÎÉÊ, ËÁË 84+. ïÔÄÅÌØÎÙÅ ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ×ÅÒÓÉÉ ÕËÁÚÙ×ÁÀÔÓÑ × ÐÅÒÅÍÅÎÎÏÊ INVALID_TCL_VER. USE_TCL_BUILD Tcl ÎÕÖÅÎ ÄÌÑ ÐÏÒÔÁ ÔÏÌØËÏ ÎÁ ×ÒÅÍÑ ÓÂÏÒËÉ. USE_TCL_WRAPPER üÔÕ ÎÏ×ÕÀ ÐÅÒÅÍÅÎÎÕÀ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÐÏÒÔÏ×, ÄÌÑ ËÏÔÏÒÙÈ ÔÒÅÂÕÅÔÓÑ ÏÂÏÌÏÞËÁ Tcl É ÎÅ ÔÒÅÂÕÅÔÓÑ ËÏÎËÒÅÔÎÁÑ ×ÅÒÓÉÑ tclsh. ïÂÅÒÔËÁ tclsh ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × ÓÉÓÔÅÍÕ. ðÏÌØÚÏ×ÁÔÅÌØ ÍÏÖÅÔ ÕËÁÚÁÔØ ÖÅÌÁÅÍÕÀ ÏÂÏÌÏÞËÕ tcl ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ. WITH_TCL_VER ïÐÒÅÄÅÌÑÅÍÙÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÐÅÒÅÍÅÎÎÙÅ, ËÏÔÏÒÙÅ ÕÓÔÁÎÁ×ÌÉ×ÁÀÔ ÖÅÌÁÅÍÕÀ ×ÅÒÓÉÀ Tcl. UNIQUENAME_WITH_TCL_VER ðÏÄÏÂÎÏ WITH_TCL_VER, ÎÏ ÄÌÑ ËÁÖÄÏÇÏ ÐÏÒÔÁ. USE_TCL_THREADS ôÒÅÂÕÅÔ ÍÎÏÇÏÐÏÔÏÞÎÕÀ ÓÂÏÒËÕ Tcl/Tk. USE_TK ðÏÒÔ ÚÁ×ÉÓÉÔ ÏÔ ÂÉÂÌÉÏÔÅËÉ Tk (ÎÅ ÏÔ ÐÒÅÄÐÏÞÉÔÁÅÍÏÊ ÏÂÏÌÏÞËÉ). ðÏÄÒÁÚÕÍÅ×ÁÅÔ USE_TCL Ó ÔÅÍ ÖÅ ÚÎÁÞÅÎÉÅÍ. äÌÑ ÂÏÌØÛÅÊ ÉÎÆÏÒÍÁÃÉÉ ÓÍÏÔÒÉÔÅ ÏÐÉÓÁÎÉÅ ÐÅÒÅÍÅÎÎÏÊ USE_TCL. USE_TK_BUILD áÎÁÌÏÇÉÞÎÏ USE_TCL_BUILD. USE_TK_WRAPPER áÎÁÌÏÇÉÞÎÏ USE_TCL_WRAPPER. WITH_TK_VER áÎÁÌÏÇÉÞÎÏ WITH_TCL_VER, ÐÏÄÒÁÚÕÍÅ×ÁÅÔ WITH_TCL_VER ÔÏÊ ÖÅ ×ÅÒÓÉÉ.
ðÏÌÎÙÊ ÐÅÒÅÞÅÎØ ÄÏÓÔÕÐÎÙÈ ÐÅÒÅÍÅÎÎÙÈ ÎÁÈÏÄÉÔÓÑ × /usr/ports/Mk/bsd.tcl.mk.
éÓÐÏÌØÚÏ×ÁÎÉÅ Emacs üÔÏÔ ÒÁÚÄÅÌ ÅÝ£ ÐÒÅÄÓÔÏÉÔ ÎÁÐÉÓÁÔØ. éÓÐÏÌØÚÏ×ÁÎÉÅ Ruby ðÏÌÅÚÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ Ruby ðÅÒÅÍÅÎÎÁÑ ïÐÉÓÁÎÉÅ USE_RUBY ðÏÒÔ ÔÒÅÂÕÅÔ Ruby. USE_RUBY_EXTCONF ðÏÒÔ ÉÓÐÏÌØÚÕÅÔ ÄÌÑ ËÏÎÆÉÇÕÒÁÃÉÉ extconf.rb. USE_RUBY_SETUP ðÏÒÔ ÉÓÐÏÌØÚÕÅÔ ÄÌÑ ËÏÎÆÉÇÕÒÁÃÉÉ setup.rb. RUBY_SETUP õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÁÌØÔÅÒÎÁÔÉ×ÎÏÅ ÉÍÑ ÄÌÑ setup.rb. òÁÓÐÒÏÓÔÒÁÎÅÎÎÙÍ ÚÎÁÞÅÎÉÅÍ Ñ×ÌÑÅÔÓÑ install.rb.
óÌÅÄÕÀÝÁÑ ÔÁÂÌÉÃÁ ÏÔÒÁÖÁÅÔ ÎÅËÏÔÏÒÙÅ ÐÅÒÅÍÅÎÎÙÅ, ÄÏÓÔÕÐÎÙÅ Á×ÔÏÒÁÍ ÐÏÒÔÏ× ÞÅÒÅÚ ÉÎÆÒÁÓÔÒÕËÔÕÒÕ ÐÏÒÔÏ×. üÔÉ ÐÅÒÅÍÅÎÎÙÅ ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÆÁÊÌÏ× × ÐÒÁ×ÉÌØÎÏÅ ÍÅÓÔÏÒÁÓÐÏÌÏÖÅÎÉÅ. éÓÐÏÌØÚÕÊÔÅ ÉÈ × pkg-plist ËÁË ÍÏÖÎÏ ÂÏÌØÛÅ. üÔÉ ÐÅÒÅÍÅÎÎÙÅ ÎÅ ÄÏÌÖÎÙ ÐÅÒÅÏÐÒÅÄÅÌÑÔØÓÑ × ÓÁÍÏÍ ÐÏÒÔÅ. ïÔÏÂÒÁÎÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ Ruby ðÅÒÅÍÅÎÎÁÑ ïÐÉÓÁÎÉÅ ðÒÉÍÅÒÎÏÅ ÚÎÁÞÅÎÉÅ RUBY_PKGNAMEPREFIX éÓÐÏÌØÚÕÅÔÓÑ ËÁË PKGNAMEPREFIX ÄÌÑ ÒÁÚÌÉÞÉÑ ÐÁËÅÔÏ× ÏÔ ÒÁÚÎÙÈ ×ÅÒÓÉÊ Ruby. ruby18- RUBY_VERSION ðÏÌÎÁÑ ×ÅÒÓÉÑ Ruby × ÆÏÒÍÅ x.y.z. 1.8.2 RUBY_SITELIBDIR ðÕÔØ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÁÒÈÉÔÅËÔÕÒÏÎÅÚÁ×ÉÓÉÍÙÈ ÂÉÂÌÉÏÔÅË. /usr/local/lib/ruby/site_ruby/1.8 RUBY_SITEARCHLIBDIR ðÕÔØ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÁÒÈÉÔÅËÔÕÒÏÚÁ×ÉÓÉÍÙÈ ÂÉÂÌÉÏÔÅË. /usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd6 RUBY_MODDOCDIR ðÕÔØ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÄÏËÕÍÅÎÔÁÃÉÉ ÍÏÄÕÌÑ. /usr/local/share/doc/ruby18/patsy RUBY_MODEXAMPLESDIR ðÕÔØ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÐÒÉÍÅÒÏ× ÍÏÄÕÌÑ. /usr/local/share/examples/ruby18/patsy
ðÏÌÎÙÊ ÐÅÒÅÞÅÎØ ÄÏÓÔÕÐÎÙÈ ÐÅÒÅÍÅÎÎÙÈ ÎÁÈÏÄÉÔÓÑ × /usr/ports/Mk/bsd.ruby.mk.
éÓÐÏÌØÚÏ×ÁÎÉÅ SDL ðÅÒÅÍÅÎÎÁÑ USE_SDL ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ Á×ÔÏÍÁÔÉÞÅÓËÏÊ ÎÁÓÔÒÏÊËÉ ÚÁ×ÉÓÉÍÏÓÔÅÊ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ ÂÉÂÌÉÏÔÅËÉ ÎÁ ÏÓÎÏ×Å SDL, ÔÁËÉÅ ËÁË devel/sdl12 ÉÌÉ x11-toolkits/sdl_gui. îÁ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ÒÁÓÐÏÚÎÁÀÔÓÑ ÓÌÅÄÕÀÝÉÅ SDL-ÂÉÂÌÉÏÔÅËÉ: sdl: devel/sdl12 gfx: graphics/sdl_gfx gui: x11-toolkits/sdl_gui image: graphics/sdl_image ldbad: devel/sdl_ldbad mixer: audio/sdl_mixer mm: devel/sdlmm net: net/sdl_net sound: audio/sdl_sound ttf: graphics/sdl_ttf ôÁËÉÍ ÏÂÒÁÚÏÍ, ÅÓÌÉ ÐÏÒÔ ÉÍÅÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ net/sdl_net É audio/sdl_mixer, ÔÏ ÓÔÒÏËÁ ÂÕÄÅÔ ÓÌÅÄÕÀÝÅÊ: USE_SDL= net mixer úÁ×ÉÓÉÍÏÓÔØ ÏÔ ÐÏÒÔÁ devel/sdl12, ËÏÔÏÒÙÊ ÔÒÅÂÕÅÔÓÑ ÄÌÑ net/sdl_net É audio/sdl_mixer ÂÕÄÅÔ ÔÁËÖÅ Á×ÔÏÍÁÔÉÞÅÓËÉ ÄÏÂÁ×ÌÅÎ. åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ USE_SDL, ÔÏ ÏÎ Á×ÔÏÍÁÔÉÞÅÓËÉ: äÏÂÁ×ÌÑÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ sdl12-config Ë BUILD_DEPENDS äÏÂÁ×ÌÑÅÔ ÐÅÒÅÍÅÎÎÕÀ SDL_CONFIG Ë CONFIGURE_ENV äÏÂÁ×ÌÑÅÔ ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÕËÁÚÁÎÎÙÈ ÂÉÂÌÉÏÔÅË Ë LIB_DEPENDS äÌÑ ÐÒÏ×ÅÒËÉ ÎÁÌÉÞÉÑ ÂÉÂÌÉÏÔÅËÉ SDL ×Ù ÍÏÖÅÔÅ ÄÅÌÁÔØ ÜÔÏ ÐÒÉ ÐÏÍÏÝÉ ÐÅÒÅÍÅÎÎÏÊ WANT_SDL: WANT_SDL=yes .include <bsd.port.pre.mk> .if ${HAVE_SDL:Mmixer}!="" USE_SDL+= mixer .endif .include <bsd.port.post.mk> éÓÐÏÌØÚÏ×ÁÎÉÅ <application>wxWidgets</application> üÔÁ ÇÌÁ×Á ÏÐÉÓÙ×ÁÅÔ ÓÔÁÔÕÓ ÂÉÂÌÉÏÔÅË wxWidgets × ÄÅÒÅ×Å ÐÏÒÔÏ× É ÉÈ ÉÎÔÅÇÒÁÃÉÀ Ó ÓÉÓÔÅÍÏÊ ÐÏÒÔÏ×. ÷×ÅÄÅÎÉÅ óÕÝÅÓÔ×ÕÅÔ ÍÎÏÖÅÓÔ×Ï ×ÅÒÓÉÊ ÂÉÂÌÉÏÔÅË wxWidgets, ËÏÎÆÌÉËÔÕÀÝÉÈ ÍÅÖÄÕ ÓÏÂÏÊ (ÕÓÔÁÎÁ×ÌÉ×ÁÀÔ ÆÁÊÌÙ ÐÏÄ ÔÅÍ ÖÅ ÉÍÅÎÅÍ). ÷ ÄÅÒÅ×Å ÐÏÒÔÏ× ÜÔÁ ÐÒÏÂÌÅÍÁ ÒÅÛÅÎÁ ÐÕÔÅÍ ÕÓÔÁÎÏ×ËÉ ËÁÖÄÏÊ ×ÅÒÓÉÉ ÐÏÄ ÓÏÂÓÔ×ÅÎÎÙÍ ÎÁÚ×ÁÎÉÅÍ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÎÏÍÅÒÁ ×ÅÒÓÉÉ × ËÁÞÅÓÔ×Å ÓÕÆÆÉËÓÁ. ïÞÅ×ÉÄÎÙÍ ÎÅÄÏÓÔÁÔËÏÍ ÜÔÏÇÏ Ñ×ÌÑÅÔÓÑ ÎÅÏÂÈÏÄÉÍÏÓÔØ ÉÚÍÅÎÅÎÉÑ ËÁÖÄÏÇÏ ÐÒÉÌÏÖÅÎÉÑ ÄÌÑ ÎÁÈÏÖÄÅÎÉÑ ÉÓËÏÍÏÊ ×ÅÒÓÉÉ. ë ÓÞÁÓÔØÀ, ÂÏÌØÛÉÎÓÔ×Ï ÐÒÉÌÏÖÅÎÉÊ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÎÕÖÎÏÇÏ ËÏÍÐÉÌÑÔÏÒÁ É ÆÌÁÇÏ× ËÏÍÐÏÎÏ×ËÉ ×ÙÚÙ×ÁÀÔ ÓÃÅÎÁÒÉÊ wx-config. äÌÑ ËÁÖÄÏÊ ÄÏÓÔÕÐÎÏÊ ×ÅÒÓÉÉ ÜÔÏÔ ÓÃÅÎÁÒÉÊ ÉÍÅÅÔ Ó×Ï£ ÉÍÑ. âÏÌØÛÉÎÓÔ×Ï ÐÒÉÌÏÖÅÎÉÊ ÕÞÉÔÙ×ÁÀÔ ÐÅÒÅÍÅÎÎÕÀ ÏËÒÕÖÅÎÉÑ ÉÌÉ ÐÒÉÎÉÍÁÀÔ ÁÒÇÕÍÅÎÔ configure ÄÌÑ ÕËÁÚÁÎÉÑ, ËÁËÏÊ ÓÃÅÎÁÒÉÊ wx-config ÓÌÅÄÕÅÔ ×ÙÚÙ×ÁÔØ. îÁ ×ÓÅ ÏÓÔÁÌØÎÙÅ ÐÒÉÈÏÄÉÔÓÑ ÎÁËÌÁÄÙ×ÁÔØ ÐÁÔÞ. ÷ÙÂÏÒ ×ÅÒÓÉÉ äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÚÁÓÔÁ×ÉÔØ ×ÁÛ ÐÏÒÔ ÉÓÐÏÌØÚÏ×ÁÔØ ËÏÎËÒÅÔÎÕÀ ×ÅÒÓÉÀ wxWidgets, ÓÕÝÅÓÔ×ÕÅÔ Ä×Å ÄÏÓÔÕÐÎÙÅ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÐÅÒÅÍÅÎÎÙÅ (ÅÓÌÉ ÏÐÒÅÄÅÌÅÎÁ ÔÏÌØËÏ ÏÄÎÁ, ÔÏ ×ÔÏÒÁÑ ÐÒÉÍÅÔ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ): ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ×ÙÂÏÒÁ ×ÅÒÓÉÉ <application>wxWidgets</application> ðÅÒÅÍÅÎÎÁÑ ïÐÉÓÁÎÉÅ úÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ USE_WX ðÅÒÅÞÅÎØ ×ÅÒÓÉÊ, ËÏÔÏÒÙÅ ÐÏÒÔ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÷ÓÅ ÄÏÓÔÕÐÎÙÅ ×ÅÒÓÉÉ USE_WX_NOT ðÅÒÅÞÅÎØ ×ÅÒÓÉÊ, ËÏÔÏÒÙÅ ÐÏÒÔ ÎÅ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ îÅÔ
ðÅÒÅÞÅÎØ ÄÏÓÔÕÐÎÙÈ ×ÅÒÓÉÊ wxWidgets É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÉÍ ÐÏÒÔÏ× × ÄÅÒÅ×Å: äÏÓÔÕÐÎÙÅ ×ÅÒÓÉÉ <application>wxWidgets</application> ÷ÅÒÓÉÑ ðÏÒÔ 2.4 x11-toolkits/wxgtk24 2.6 x11-toolkits/wxgtk26 2.8 x11-toolkits/wxgtk28
÷ÅÒÓÉÉ ÎÁÞÉÎÁÑ Ó 2.5 ÔÁËÖÅ ÐÏÓÔÁ×ÌÑÀÔÓÑ Ó Unicode É ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÐÏÄÞÉÎÅÎÎÙÍ ÐÏÒÔÏÍ Ó ÎÁÚ×ÁÎÉÅÍ ËÁË ËÁË Õ ÏÂÙÞÎÏÇÏ, ÎÏ Ó ÓÕÆÆÉËÓÏÍ -unicode, ÎÏ ÜÔÉÍ ÍÏÖÎÏ ÕÐÒÁ×ÌÑÔØ ÐÒÉ ÐÏÍÏÝÉ ÐÅÒÅÍÅÎÎÙÈ (ÓÍÏÔÒÉÔÅ ). ðÅÒÅÍÅÎÎÙÅ × ÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ × ÏÄÎÕ ÉÌÉ ÂÏÌÅÅ ÓÌÅÄÕÀÝÉÈ ËÏÍÂÉÎÁÃÉÊ, ÒÁÚÄÅÌÅÎÎÙÈ ÐÒÏÂÅÌÁÍÉ: ïÐÒÅÄÅÌÅÎÉÅ ×ÅÒÓÉÉ ÄÌÑ <application>wxWidgets</application> ïÐÉÓÁÎÉÅ ðÒÉÍÅÒ åÄÉÎÉÞÎÁÑ ×ÅÒÓÉÑ 2.4 ÷ÏÓÈÏÄÑÝÉÊ ÄÉÁÐÁÚÏÎ 2.4+ îÉÓÈÏÄÑÝÉÊ ÄÉÁÐÁÚÏÎ 2.6- ðÏÌÎÙÊ ÄÉÁÐÁÚÏÎ (ÏÂÑÚÁÎ ÂÙÔØ ×ÏÓÈÏÄÑÝÉÍ) 2.4-2.6
ëÒÏÍÅ ÔÏÇÏ, ÓÕÝÅÓÔ×ÕÅÔ ÎÅÓËÏÌØËÏ ÐÅÒÅÍÅÎÎÙÈ ÄÌÑ ×ÙÂÏÒÁ ÐÒÅÄÐÏÞÉÔÁÅÍÙÈ ×ÅÒÓÉÊ ÉÚ ÐÅÒÅÞÎÑ ÄÏÓÔÕÐÎÙÈ. ïÎÉ ÍÏÇÕÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÙ × ÎÅÓËÏÌØËÏ ×ÅÒÓÉÊ, ÐÅÒ×ÁÑ ÉÚ ËÏÔÏÒÙÈ ÂÕÄÅÔ ÉÍÅÔØ ÎÁÉÂÏÌØÛÉÊ ÐÒÉÏÒÉÔÅÔ. ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ×ÙÂÏÒÁ ÐÒÅÄÐÏÞÉÔÁÅÍÙÈ ×ÅÒÓÉÊ <application>wxWidgets</application> îÁÚ×ÁÎÉÅ ðÒÅÄÎÁÚÎÁÞÅÎÉÅ WANT_WX_VER ÐÏÒÔ WITH_WX_VER ÐÏÌØÚÏ×ÁÔÅÌØ
÷ÙÂÏÒ ËÏÍÐÏÎÅÎÔÏ× óÕÝÅÓÔ×ÕÀÔ ÄÒÕÇÉÅ ÐÒÉÌÏÖÅÎÉÑ, ËÏÔÏÒÙÅ, ÈÏÔÑ É ÎÅ Ñ×ÌÑÀÔÓÑ ÂÉÂÌÉÏÔÅËÁÍÉ wxWidgets, ÎÏ × ÔÏÖÅ ×ÒÅÍÑ ÏÔÎÏÓÑÔÓÑ Ë ÎÉÍ. üÔÉ ÐÒÉÌÏÖÅÎÉÑ ÍÏÖÎÏ ÕËÁÚÁÔØ × ÐÅÒÅÍÅÎÎÏÊ WX_COMPS. äÏÓÔÕÐÎÙ ÓÌÅÄÕÀÝÉÅ ËÏÍÐÏÎÅÎÔÙ: äÏÓÔÕÐÎÙÅ ËÏÍÐÏÎÅÎÔÙ <application>wxWidgets</application> îÁÚ×ÁÎÉÅ ïÐÉÓÁÎÉÅ ïÇÒÁÎÉÞÅÎÉÅ ×ÅÒÓÉÉ wx ÏÓÎÏ×ÎÁÑ ÂÉÂÌÉÏÔÅËÁ ÎÅÔ contrib ÓÔÏÒÏÎÎÉÅ ÂÉÂÌÉÏÔÅËÉ ÎÅÔ python wxPython (ÐÒÉ×ÑÚËÉ Ë Python) 2.4-2.6 mozilla wxMozilla 2.4 svg wxSVG 2.6
ôÉÐ ÄÏÂÁ×ÌÑÅÍÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ ÐÒÉ ×ÙÂÏÒÅ ËÁÖÄÏÇÏ ËÏÍÐÏÎÅÎÔÁ ÍÏÖÅÔ ÂÙÔØ ÕËÁÚÁÎ ×ÒÕÞÎÕÀ ÐÕÔÅÍ ÄÏÂÁ×ÌÅÎÉÑ ÓÕÆÆÉËÓÁ, ÏÔÄÅÌÅÎÎÏÇÏ ÔÏÞËÏÊ Ó ÚÁÐÑÔÏÊ. åÓÌÉ ÔÁËÏ×ÏÊ ÏÔÓÕÔÓÔ×ÕÅÔ, ÎÏ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎÏ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ (ÓÍÏÔÒÉÔÅ ). äÏÓÔÕÐÎÙÅ ÔÉÐÙ ÚÁ×ÉÓÉÍÏÓÔÉ: äÏÓÔÕÐÎÙÅ ÔÉÐÙ ÚÁ×ÉÓÉÍÏÓÔÉ <application>wxWidgets</application> îÁÚ×ÁÎÉÅ ïÐÉÓÁÎÉÅ build ëÏÍÐÏÎÅÎÔ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ, ÜË×É×ÁÌÅÎÔÅÎ BUILD_DEPENDS run ëÏÍÐÏÎÅÎÔ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÚÁÐÕÓËÁ, ÜË×É×ÁÌÅÎÔÅÎ RUN_DEPENDS lib ëÏÍÐÏÎÅÎÔ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ É ÚÁÐÕÓËÁ, ÜË×É×ÁÌÅÎÔÅÎ LIB_DEPENDS
úÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ ËÏÍÐÏÎÅÎÔÏ× ÐÏÄÒÏÂÎÏ ÒÁÓÓÍÁÔÒÉ×ÁÀÔÓÑ × ÓÌÅÄÕÀÝÅÊ ÔÁÂÌÉÃÅ: ôÉÐÙ ÚÁ×ÉÓÉÍÏÓÔÉ <application>wxWidgets</application>, ÉÓÐÏÌØÚÕÅÍÙÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ëÏÍÐÏÎÅÎÔ ôÉÐ ÚÁ×ÉÓÉÍÏÓÔÉ wx lib contrib lib python run mozilla lib svg lib
÷ÙÂÏÒ ËÏÍÐÏÎÅÎÔÏ× <application>wxWidgets</application> óÌÅÄÕÀÝÉÊ ÆÒÁÇÍÅÎÔ ÏÔÎÏÓÉÔÓÑ Ë ÐÏÒÔÕ, × ËÏÔÏÒÏÍ ÉÓÐÏÌØÚÕÅÔÓÑ wxWidgets ×ÅÒÓÉÉ 2.4 Ó ÅÇÏ ÓÔÏÒÏÎÎÉÍÉ ÂÉÂÌÉÏÔÅËÁÍÉ. USE_WX= 2.4 WX_COMPS= wx contrib
Unicode âÉÂÌÉÏÔÅËÁ wxWidgets ÐÏÄÄÅÒÖÉ×ÁÅÔ Unicode ÎÁÞÉÎÁÑ Ó ×ÅÒÓÉÉ 2.5. ÷ ÄÅÒÅ×Å ÐÏÒÔÏ× ÄÏÓÔÕÐÎÙ ÏÂÅ ×ÅÒÓÉÉ É ÍÏÇÕÔ ÂÙÔØ ×ÙÂÒÁÎÙ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÓÌÅÄÕÀÝÉÈ ÐÅÒÅÍÅÎÎÙÈ: ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ×ÙÂÏÒÁ ×ÅÒÓÉÉ <application>wxWidgets</application> Ó Unicode ðÅÒÅÍÅÎÎÁÑ ïÐÉÓÁÎÉÅ ðÒÅÄÎÁÚÎÁÞÅÎÉÅ WX_UNICODE ðÏÒÔ ÒÁÂÏÔÁÅÔ ÔÏÌØËÏ Ó ×ÅÒÓÉÅÊ Unicode ÐÏÒÔ WANT_UNICODE ðÏÒÔ ÒÁÂÏÔÁÅÔ Ó ÏÂÅÉÍÉ ×ÅÒÓÉÑÍÉ, ÎÏ ÐÒÅÄÐÏÞÉÔÁÅÔ ×ÅÒÓÉÀ Ó Unicode ÐÏÒÔ WITH_UNICODE ðÏÒÔ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÅÒÓÉÀ Unicode ÐÏÌØÚÏ×ÁÔÅÌØ WITHOUT_UNICODE ðÏÒÔ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÏÂÙÞÎÕÀ ×ÅÒÓÉÀ, ÅÓÌÉ ÜÔÏ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ (ËÏÇÄÁ WX_UNICODE ÎÅ ÏÐÒÅÄÅÌÅÎÁ) ÐÏÌØÚÏ×ÁÔÅÌØ
îÅ ÉÓÐÏÌØÚÕÊÔÅ WX_UNICODE ÄÌÑ ÐÏÒÔÏ×, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÏÂÅ ×ÅÒÓÉÉ. åÓÌÉ ×Ù ÈÏÔÉÔÅ, ÞÔÏÂÙ ÐÏÒÔ ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÏ×ÁÌ Unicode, ÏÐÒÅÄÅÌÉÔÅ ×ÍÅÓÔÏ ÜÔÏÇÏ WANT_UNICODE.
ïÂÎÁÒÕÖÅÎÉÅ ÕÓÔÁÎÏ×ÌÅÎÎÙÈ ×ÅÒÓÉÊ äÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ÕÓÔÁÎÏ×ÌÅÎÎÏÊ ×ÅÒÓÉÉ ×ÁÍ ÎÅÏÂÈÏÄÉÍÏ ÚÁÄÁÔØ ÐÅÒÅÍÅÎÎÕÀ WANT_WX. åÓÌÉ ×Ù ÎÅ ÐÒÉÓ×ÏÉÔÅ ÅÊ ÏÐÒÅÄÅÌÅÎÎÕÀ ×ÅÒÓÉÀ, ÔÏ ËÏÍÐÏÎÅÎÔÙ ÐÏÌÕÞÁÔ ÓÕÆÆÉËÓ ×ÅÒÓÉÉ. ðÅÒÅÍÅÎÎÁÑ HAVE_WX ÂÕÄÅÔ ÚÁÐÏÌÎÅÎÁ ÐÏÓÌÅ ÏÂÎÁÒÕÖÅÎÉÑ. ïÂÎÁÒÕÖÅÎÉÅ ÕÓÔÁÎÏ×ÌÅÎÎÙÈ ×ÅÒÓÉÊ É ËÏÍÐÏÎÅÎÔÏ× <application>wxWidgets</application> óÌÅÄÕÀÝÉÊ ÆÒÁÇÍÅÎÔ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ × ÐÏÒÔÕ, ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÕÅÔ wxWidgets, × ÓÌÕÞÁÅ ÅÓÌÉ ÏÎ ÕÓÔÁÎÏ×ÌÅÎ ÉÌÉ ×ÙÂÒÁÎ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÐÁÒÁÍÅÔÒ. WANT_WX= yes .include <bsd.port.pre.mk> .if defined(WITH_WX) || !empty(PORT_OPTIONS:MWX) || !empty(HAVE_WX:Mwx-2.4) USE_WX= 2.4 CONFIGURE_ARGS+=--enable-wx .endif óÌÅÄÕÀÝÉÊ ÆÒÁÇÍÅÎÔ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ × ÐÏÒÔÕ, ËÏÔÏÒÙÊ ÚÁÄÅÊÓÔ×ÕÅÔ ÐÏÄÄÅÒÖËÕ wxPython, × ÓÌÕÞÁÅ ÅÓÌÉ ÏÎ ÕÓÔÁÎÏ×ÌÅÎ ÉÌÉ ×ÙÂÒÁÎ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÐÁÒÁÍÅÔÒ, × ÄÏÐÏÌÎÅÎÉÅ Ë wxWidgets, ÏÂÅ ×ÅÒÓÉÉ 2.6. USE_WX= 2.6 WX_COMPS= wx WANT_WX= 2.6 .include <bsd.port.pre.mk> .if defined(WITH_WXPYTHON) || !empty(PORT_OPTIONS:MWXPYTHON) || !empty(HAVE_WX:Mpython) WX_COMPS+= python CONFIGURE_ARGS+=--enable-wxpython .endif ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ óÌÅÄÕÀÝÉÅ ÐÅÒÅÍÅÎÎÙÅ ÄÏÓÔÕÐÎÙ × ÐÏÒÔÕ (ÐÏÓÌÅ ÏÐÒÅÄÅÌÅÎÉÑ ÏÄÎÏÊ ÉÚ ÐÅÒÅÍÅÎÎÙÈ ÉÚ ). ðÅÒÅÍÅÎÎÙÅ, ÏÐÒÅÄÅÌÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ <application>wxWidgets</application> îÁÚ×ÁÎÉÅ ïÐÉÓÁÎÉÅ WX_CONFIG ðÕÔØ Ë ÓÃÅÎÁÒÉÀ wxWidgets wx-config (Ó ÄÒÕÇÉÍ ÉÍÅÎÅÍ) WXRC_CMD ðÕÔØ Ë ÐÒÏÇÒÁÍÍÅ wxWidgets wxrc (Ó ÄÒÕÇÉÍ ÉÍÅÎÅÍ) WX_VERSION ÷ÅÒÓÉÑ wxWidgets, ËÏÔÏÒÁÑ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ (ÎÁÐÒÉÍÅÒ, 2.6) WX_UNICODE åÓÌÉ ÎÅ ÏÐÒÅÄÅÌÅÎÁ, ÎÏ Unicode ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ, ÔÏ ÏÎÁ ÂÕÄÅÔ ÏÐÒÅÄÅÌÅÎÁ
ïÂÒÁÂÏÔËÁ × <filename>bsd.port.pre.mk</filename> åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÅÒÅÍÅÎÎÙÅ ÄÌÑ ÚÁÐÕÓËÁ ËÏÍÁÎÄ ÓÒÁÚÕ ÐÏÓÌÅ ÐÏÄËÌÀÞÅÎÉÑ bsd.port.pre.mk, ÔÏ ×ÁÍ ÎÕÖÎÏ ÏÐÒÅÄÅÌÉÔØ WX_PREMK. åÓÌÉ ×Ù ÏÐÒÅÄÅÌÉÔÅ WX_PREMK, ÔÏ ×ÅÒÓÉÑ, ÚÁ×ÉÓÉÍÏÓÔÉ, ËÏÍÐÏÎÅÎÔÙ É ÚÁÄÁÎÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÎÅ ÉÚÍÅÎÑÔØÓÑ, × ÓÌÕÞÁÅ ×Ù ÉÚÍÅÎÉÌÉ ÐÅÒÅÍÅÎÎÙÅ ÐÏÒÔÁ wxWidgets ÐÏÓÌÅ ÐÏÄËÌÀÞÅÎÉÑ bsd.port.pre.mk. éÓÐÏÌØÚÏ×ÁÎÉÅ ÐÅÒÅÍÅÎÎÙÈ <application>wxWidgets</application> × ËÏÍÁÎÄÁÈ óÌÅÄÕÀÝÉÊ ÆÒÁÇÍÅÎÔ ÉÌÌÀÓÔÒÉÒÕÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÅÒÅÍÅÎÎÏÊ WX_PREMK ÐÏÓÒÅÄÓÔ×ÏÍ ÚÁÐÕÓËÁ ÓÃÅÎÁÒÉÑ wx-config ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÓÔÒÏËÉ Ó ÐÏÌÎÏÊ ×ÅÒÓÉÅÊ Ó ÐÒÉÓ×ÏÅÎÉÅÍ ÅÅ ÐÅÒÅÍÅÎÎÏÊ É ÐÅÒÅÄÁÞÅÊ × ÐÒÏÇÒÁÍÍÕ. USE_WX= 2.4 WX_PREMK= yes .include <bsd.port.pre.mk> .if exists(${WX_CONFIG}) VER_STR!= ${WX_CONFIG} --release PLIST_SUB+= VERSION="${VER_STR}" .endif ðÅÒÅÍÅÎÎÙÅ wxWidgets ÍÏÖÎÏ ÂÅÚÏÐÁÓÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ × ËÏÍÁÎÄÁÈ ×ÎÕÔÒÉ ÃÅÌÅÊ ÂÅÚ ÎÅÏÂÈÏÄÉÍÏÓÔÉ × ÉÓÐÏÌØÚÏ×ÁÎÉÉ WX_PREMK. äÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÁÒÁÍÅÔÒÙ <command>configure</command> îÅËÏÔÏÒÙÅ ÓÃÅÎÁÒÉÉ GNU configure ÎÅ ÍÏÇÕÔ ÎÁÊÔÉ wxWidgets ÔÏÌØËÏ Ó ÕÓÔÁÎÏ×ÌÅÎÎÏÊ ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ WX_CONFIG, ÔÒÅÂÕÑ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÁÒÁÍÅÔÒÙ. äÌÑ ÉÈ ÐÅÒÅÄÁÞÉ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÅÒÅÍÅÎÎÕÀ WX_CONF_ARGS. äÏÐÕÓÔÉÍÙÅ ÚÎÁÞÅÎÉÑ <makevar>WX_CONF_ARGS</makevar> ÷ÏÚÍÏÖÎÏÅ ÚÎÁÞÅÎÉÅ ðÏÌÕÞÁÅÍÙÊ ÐÁÒÁÍÅÔÒ absolute --with-wx-config=${WX_CONFIG} relative --with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T}
éÓÐÏÌØÚÏ×ÁÎÉÅ <application>Lua</application> üÔÁ ÇÌÁ×Á ÏÐÉÓÙ×ÁÅÔ ÓÔÁÔÕÓ ÂÉÂÌÉÏÔÅË Lua × ÄÅÒÅ×Å ÐÏÒÔÏ× É ÉÈ ÉÎÔÅÇÒÁÃÉÀ × ÓÉÓÔÅÍÕ ÐÏÒÔÏ×. ÷×ÅÄÅÎÉÅ óÕÝÅÓÔ×ÕÅÔ ÍÎÏÖÅÓÔ×Ï ×ÅÒÓÉÊ ÂÉÂÌÉÏÔÅË Lua É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÉÎÔÅÒÐÒÅÔÁÔÏÒÏ×, ËÏÎÆÌÉËÔÕÀÝÉÈ ÍÅÖÄÕ ÓÏÂÏÊ (ÕÓÔÁÎÁ×ÌÉ×ÁÀÔ ÆÁÊÌÙ ÐÏÄ ÔÅÍ ÖÅ ÉÍÅÎÅÍ). ÷ ÄÅÒÅ×Å ÐÏÒÔÏ× ÜÔÁ ÐÒÏÂÌÅÍÁ ÒÅÛÅÎÁ ÐÕÔÅÍ ÕÓÔÁÎÏ×ËÉ ËÁÖÄÏÊ ×ÅÒÓÉÉ × ÓÏÂÓÔ×ÅÎÎÏÅ ÍÅÓÔÏ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÎÏÍÅÒÁ ×ÅÒÓÉÉ × ËÁÞÅÓÔ×Å ÓÕÆÆÉËÓÁ. ïÞÅ×ÉÄÎÙÍ ÎÅÄÏÓÔÁÔËÏÍ ÜÔÏÇÏ Ñ×ÌÑÅÔÓÑ ÎÅÏÂÈÏÄÉÍÏÓÔØ ÉÚÍÅÎÅÎÉÑ ËÁÖÄÏÇÏ ÐÒÉÌÏÖÅÎÉÑ ÄÌÑ ÎÁÈÏÖÄÅÎÉÑ ÉÓËÏÍÏÊ ×ÅÒÓÉÉ. îÏ ÜÔÏ ÒÅÛÁÅÔÓÑ ÄÏÂÁ×ÌÅÎÉÅÍ ÎÅËÏÔÏÒÙÈ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÆÌÁÇÏ× ÄÌÑ ËÏÍÐÉÌÑÔÏÒÁ É ËÏÍÐÏÎÏ×ÝÉËÁ. ÷ÙÂÏÒ ×ÅÒÓÉÉ äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÚÁÓÔÁ×ÉÔØ ×ÁÛ ÐÏÒÔ ÉÓÐÏÌØÚÏ×ÁÔØ ËÏÎËÒÅÔÎÕÀ ×ÅÒÓÉÀ Lua, ÓÕÝÅÓÔ×ÕÅÔ Ä×Å ÄÏÓÔÕÐÎÙÅ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÐÅÒÅÍÅÎÎÙÅ (ÅÓÌÉ ÏÐÒÅÄÅÌÅÎÁ ÔÏÌØËÏ ÏÄÎÁ, ÔÏ ×ÔÏÒÁÑ ÐÒÉÍÅÔ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ): ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ×ÙÂÏÒÁ ×ÅÒÓÉÉ <application>Lua</application> ðÅÒÅÍÅÎÎÁÑ ïÐÉÓÁÎÉÅ úÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ USE_LUA ðÅÒÅÞÅÎØ ×ÅÒÓÉÊ, ËÏÔÏÒÙÅ ÐÏÒÔ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÷ÓÅ ÄÏÓÔÕÐÎÙÅ ×ÅÒÓÉÉ USE_LUA_NOT ðÅÒÅÞÅÎØ ×ÅÒÓÉÊ, ËÏÔÏÒÙÅ ÐÏÒÔ ÎÅ ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ðÕÓÔÏ
ðÅÒÅÞÅÎØ ÄÏÓÔÕÐÎÙÈ ×ÅÒÓÉÊ Lua É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÐÏÒÔÏ× × ÄÅÒÅ×Å: äÏÓÔÕÐÎÙÅ ×ÅÒÓÉÉ <application>Lua</application> ÷ÅÒÓÉÑ ðÏÒÔ 4.0 lang/lua4 5.0 lang/lua50 5.1 lang/lua
ðÅÒÅÍÅÎÎÙÅ ÉÚ ÍÏÇÕÔ ÉÍÅÔØ ËÏÍÂÉÎÁÃÉÉ ÉÚ ÏÄÎÏÇÏ ÉÌÉ ÎÅÓËÏÌØËÉÈ ÚÎÁÞÅÎÉÊ, ÒÁÚÄÅÌÅÎÎÙÈ ÐÒÏÂÅÌÏÍ: ïÐÒÅÄÅÌÅÎÉÅ ×ÅÒÓÉÉ <application>Lua</application> ïÐÉÓÁÎÉÅ ðÒÉÍÅÒ åÄÉÎÉÞÎÁÑ ×ÅÒÓÉÑ 4.0 ÷ÏÓÈÏÄÑÝÉÊ ÄÉÁÐÁÚÏÎ 5.0+ îÉÓÈÏÄÑÝÉÊ ÄÉÁÐÁÚÏÎ 5.0- ðÏÌÎÙÊ ÄÉÁÐÁÚÏÎ (ÏÂÑÚÁÎ ÂÙÔØ ×ÏÓÈÏÄÑÝÉÍ) 5.0-5.1
ëÒÏÍÅ ÔÏÇÏ, ÓÕÝÅÓÔ×ÕÅÔ ÎÅÓËÏÌØËÏ ÐÅÒÅÍÅÎÎÙÈ ÄÌÑ ×ÙÂÏÒÁ ÐÒÅÄÐÏÞÉÔÁÅÍÙÈ ×ÅÒÓÉÊ ÉÚ ÐÅÒÅÞÎÑ ÄÏÓÔÕÐÎÙÈ. ïÎÉ ÍÏÇÕÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÙ × ÎÅÓËÏÌØËÏ ×ÅÒÓÉÊ, ÐÅÒ×ÁÑ ÉÚ ËÏÔÏÒÙÈ ÂÕÄÅÔ ÉÍÅÔØ ÎÁÉÂÏÌØÛÉÊ ÐÒÉÏÒÉÔÅÔ. ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ×ÙÂÏÒÁ ÐÒÅÄÐÏÞÉÔÁÅÍÙÈ ×ÅÒÓÉÊ <application>Lua</application> îÁÚ×ÁÎÉÅ ðÒÅÄÎÁÚÎÁÞÅÎÉÅ WANT_LUA_VER ÐÏÒÔ WITH_LUA_VER ÐÏÌØÚÏ×ÁÔÅÌØ
÷ÙÂÏÒ ×ÅÒÓÉÉ <application>Lua</application> óÌÅÄÕÀÝÉÊ ÆÒÁÇÍÅÎÔ ×ÚÑÔ ÉÚ ÐÏÒÔÁ, ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÕÅÔ Lua ×ÅÒÓÉÊ 5.0 ÉÌÉ 5.1, ÐÏ ÕÍÏÌÞÁÎÉÀ 5.0. úÎÁÞÅÎÉÅ ÍÏÖÅÔ ÂÙÔØ ÐÅÒÅÏÐÒÅÄÅÌÅÎÏ ÐÏÌØÚÏ×ÁÔÅÌÅÍ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÅÒÅÍÅÎÎÏÊ WITH_LUA_VER. USE_LUA= 5.0-5.1 WANT_LUA_VER= 5.0
÷ÙÂÏÒ ËÏÍÐÏÎÅÎÔÏ× óÕÝÅÓÔ×ÕÀÔ ÄÒÕÇÉÅ ÐÒÉÌÏÖÅÎÉÑ, ËÏÔÏÒÙÅ ÈÏÔÑ É ÎÅ Ñ×ÌÑÀÔÓÑ ÂÉÂÌÉÏÔÅËÁÍÉ Lua, ÎÏ ÏÔÎÏÓÑÔÓÑ Ë ÎÉÍ. üÔÉ ÐÒÉÌÏÖÅÎÉÑ ÍÏÖÎÏ ÕËÁÚÁÔØ × ÐÅÒÅÍÅÎÎÏÊ LUA_COMPS. äÏÓÔÕÐÎÙ ÓÌÅÄÕÀÝÉÅ ËÏÍÐÏÎÅÎÔÙ: äÏÓÔÕÐÎÙÅ ËÏÍÐÏÎÅÎÔÙ <application>Lua</application> îÁÚ×ÁÎÉÅ ïÐÉÓÁÎÉÅ ïÇÒÁÎÉÞÅÎÉÅ ×ÅÒÓÉÉ lua ïÓÎÏ×ÎÁÑ ÂÉÂÌÉÏÔÅËÁ ÎÅÔ tolua âÉÂÌÉÏÔÅËÁ ÄÏÓÔÕÐÁ Ë ËÏÄÕ C/C++ 4.0-5.0 ruby ðÒÉ×ÑÚËÁ Ë Ruby 4.0-5.0
åÓÔØ É ÄÒÕÇÉÅ ËÏÍÐÏÎÅÎÔÙ, ÎÏ ÏÎÉ ÏÔÎÏÓÑÔÓÑ Ë ÍÏÄÕÌÑÍ ÄÌÑ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ É ÎÅ ÉÓÐÏÌØÚÕÀÔÓÑ ÐÒÉÌÏÖÅÎÉÑÍÉ (ÔÏÌØËÏ ÄÒÕÇÉÍÉ ÍÏÄÕÌÑÍÉ). ôÉÐ ÚÁ×ÉÓÉÍÏÓÔÉ ÍÏÖÎÏ ×ÙÂÒÁÔØ ÄÌÑ ËÁÖÄÏÇÏ ËÏÍÐÏÎÅÎÔÁ ÞÅÒÅÚ ÄÏÂÁ×ÌÅÎÉÅ ÓÕÆÆÉËÓÁ, ÏÔÄÅÌÅÎÎÏÇÏ ÔÏÞËÏÊ Ó ÚÁÐÑÔÏÊ. ÷ ÓÌÕÞÁÅ ÏÔÓÕÔÓÔ×ÉÑ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÔÉÐ ÐÏ ÕÍÏÌÞÁÎÉÀ (ÓÍÏÔÒÉÔÅ ). äÏÓÔÕÐÎÙÅ ÓÌÅÄÕÀÝÉÅ ÔÉÐÙ: äÏÓÔÕÐÎÙÅ ÔÉÐÙ ÚÁ×ÉÓÉÍÏÓÔÉ <application>Lua</application> îÁÚ×ÁÎÉÅ ïÐÉÓÁÎÉÅ build ëÏÍÐÏÎÅÎÔ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ, ÜË×É×ÁÌÅÎÔÅÎ BUILD_DEPENDS run ëÏÍÐÏÎÅÎÔ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÚÁÐÕÓËÁ, ÜË×É×ÁÌÅÎÔÅÎ RUN_DEPENDS lib ëÏÍÐÏÎÅÎÔ ÔÒÅÂÕÅÔÓÑ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ É ÚÁÐÕÓËÁ, ÜË×É×ÁÌÅÎÔÅÎ LIB_DEPENDS
úÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ ËÏÍÐÏÎÅÎÔÏ× ÐÏÄÒÏÂÎÏ ÒÁÓÓÍÁÔÒÉ×ÁÀÔÓÑ × ÓÌÅÄÕÀÝÅÊ ÔÁÂÌÉÃÅ: ôÉÐÙ ÚÁ×ÉÓÉÍÏÓÔÉ <application>Lua</application>, ÉÓÐÏÌØÚÕÅÍÙÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ëÏÍÐÏÎÅÎÔ ôÉÐ ÚÁ×ÉÓÉÍÏÓÔÉ lua lib ÄÌÑ 4.0-5.0 (ÄÉÎÁÍÉÞÅÓËÁÑ) É build ÄÌÑ 5.1 (ÓÔÁÔÉÞÅÓËÁÑ) tolua build (ÓÔÁÔÉÞÅÓËÁÑ) ruby lib (ÄÉÎÁÍÉÞÅÓËÁÑ)
÷ÙÂÏÒ ËÏÍÐÏÎÅÎÔÏ× <application>Lua</application> óÌÅÄÕÀÝÉÊ ÆÒÁÇÍÅÎÔ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÐÏÒÔÕ, ÉÓÐÏÌØÚÕÀÝÅÍÕ Lua ×ÅÒÓÉÉ 4.0 É ÐÒÉ×ÑÚËÕ Ë Ruby. USE_LUA= 4.0 LUA_COMPS= lua ruby
ïÂÎÁÒÕÖÅÎÉÅ ÕÓÔÁÎÏ×ÌÅÎÎÙÈ ×ÅÒÓÉÊ äÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ÕÓÔÁÎÏ×ÌÅÎÎÏÊ ×ÅÒÓÉÉ ×ÁÍ ÎÅÏÂÈÏÄÉÍÏ ÚÁÄÁÔØ ÐÅÒÅÍÅÎÎÕÀ WANT_LUA. åÓÌÉ ×Ù ÎÅ ÐÒÉÓ×ÏÉÔÅ ÅÊ ÏÐÒÅÄÅÌÅÎÎÕÀ ×ÅÒÓÉÀ, ÔÏ ËÏÍÐÏÎÅÎÔÙ ÐÏÌÕÞÁÔ ÓÕÆÆÉËÓ ×ÅÒÓÉÉ. ðÅÒÅÍÅÎÎÁÑ HAVE_LUA ÂÕÄÅÔ ÚÁÐÏÌÎÅÎÁ ÐÏÓÌÅ ÏÂÎÁÒÕÖÅÎÉÑ. ïÂÎÁÒÕÖÅÎÉÅ ÕÓÔÁÎÏ×ÌÅÎÎÙÈ ×ÅÒÓÉÊ É ËÏÍÐÏÎÅÎÔÏ× <application>Lua</application> óÌÅÄÕÀÝÉÊ ÆÒÁÇÍÅÎÔ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÐÏÒÔÁ, ÉÓÐÏÌØÚÕÀÝÅÇÏ Lua, ÅÓÌÉ ÏÎÁ ÕÓÔÁÎÏ×ÌÅÎÁ, ÉÌÉ ÂÙÌ ×ÙÂÒÁÎ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÐÁÒÁÍÅÔÒ. WANT_LUA= yes .include <bsd.port.pre.mk> .if defined(WITH_LUA5) || !empty(PORT_OPTIONS:MLUA5) || !empty(HAVE_LUA:Mlua-5.[01]) USE_LUA= 5.0-5.1 CONFIGURE_ARGS+=--enable-lua5 .endif óÌÅÄÕÀÝÉÊ ÆÒÁÇÍÅÎÔ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÐÏÒÔÁ, ËÏÔÏÒÙÊ ×ËÌÀÞÁÅÔ ÐÏÄÄÅÒÖËÕ tolua, ÅÓÌÉ ÔÁËÏÊ ËÏÍÐÏÎÅÎÔ ÕÓÔÁÎÏ×ÌÅÎ, ÉÌÉ ÂÙÌ ×ÙÂÒÁÎ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÐÁÒÁÍÅÔÒ × ÄÏÐÏÌÎÅÎÉÅ Ë Lua, ÏÂÁ ÉÍÅÀÔ ×ÅÒÓÉÀ 4.0. USE_LUA= 4.0 LUA_COMPS= lua WANT_LUA= 4.0 .include <bsd.port.pre.mk> .if defined(WITH_TOLUA) || !empty(PORT_OPTIONS:MTOLUA) || !empty(HAVE_LUA:Mtolua) LUA_COMPS+= tolua CONFIGURE_ARGS+=--enable-tolua .endif ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ óÌÅÄÕÀÝÉÅ ÐÅÒÅÍÅÎÎÙÅ ÄÏÓÔÕÐÎÙ × ÐÏÒÔÕ (ÐÏÓÌÅ ÏÐÒÅÄÅÌÅÎÉÑ ÏÄÎÏÊ ÉÚ ÐÅÒÅÍÅÎÎÙÈ ÉÚ ). ðÅÒÅÍÅÎÎÙÅ, ÏÐÒÅÄÅÌÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ <application>Lua</application> îÁÚ×ÁÎÉÅ ïÐÉÓÁÎÉÅ LUA_VER ÷ÅÒÓÉÑ Lua, ËÏÔÏÒÁÑ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ (ÎÁÐÒÉÍÅÒ, 5.1) LUA_VER_SH óÔÁÒÛÉÊ ÎÏÍÅÒ ×ÅÒÓÉÉ ÄÉÎÁÍÉÞÅÓËÏÊ ÂÉÂÌÉÏÔÅËÉ Lua (ÎÁÐÒÉÍÅÒ, 1) LUA_VER_STR ÷ÅÒÓÉÑ Lua ÂÅÚ ÔÏÞËÉ (ÎÁÐÒÉÍÅÒ, 51) LUA_PREFIX ðÒÅÆÉËÓ, × ËÏÔÏÒÙÊ ÕÓÔÁÎÏ×ÌÅÎÁ Lua (É ËÏÍÐÏÎÅÎÔÙ) LUA_SUBDIR ëÁÔÁÌÏÇ ÐÏÄ ${PREFIX}/bin, ${PREFIX}/share É ${PREFIX}/lib, × ËÏÔÏÒÙÊ ÕÓÔÁÎÏ×ÌÅÎÁ Lua LUA_INCDIR ëÁÔÁÌÏÇ, × ËÏÔÏÒÙÊ ÕÓÔÁÎÏ×ÌÅÎÙ ÚÁÇÏÌÏ×ÏÞÎÙÅ ÆÁÊÌÙ Lua É tolua LUA_LIBDIR ëÁÔÁÌÏÇ, × ËÏÔÏÒÙÊ ÕÓÔÁÎÏ×ÌÅÎÙ ÂÉÂÌÉÏÔÅËÉ Lua É tolua LUA_MODLIBDIR ëÁÔÁÌÏÇ, × ËÏÔÏÒÙÊ ÕÓÔÁÎÏ×ÌÅÎÙ ÍÏÄÕÌÉ ÂÉÂÌÉÏÔÅËÉ Lua (.so) LUA_MODSHAREDIR ëÁÔÁÌÏÇ, × ËÏÔÏÒÙÊ ÕÓÔÁÎÏ×ÌÅÎÙ ÍÏÄÕÌÉ Lua (.lua) LUA_PKGNAMEPREFIX ðÒÅÆÉËÓ Ó ÉÍÅÎÅÍ ÐÁËÅÔÁ, ÉÓÐÏÌØÚÕÅÍÙÊ ÍÏÄÕÌÑÍÉ Lua LUA_CMD ðÕÔØ Ë ÉÎÔÅÒÐÒÅÔÁÔÏÒÕ Lua LUAC_CMD ðÕÔØ Ë ËÏÍÐÉÌÑÔÏÒÕ Lua TOLUA_CMD ðÕÔØ Ë ÐÒÏÇÒÁÍÍÅ tolua
õËÁÚÁÎÉÅ ÄÌÑ ÐÏÒÔÁ, ÇÄÅ ÉÓËÁÔØ <application>Lua</application> óÌÅÄÕÀÝÉÊ ÆÒÁÇÍÅÎÔ ÐÏËÁÚÙ×ÁÅÔ, ËÁË ÓÏÏÂÝÉÔØ ÐÏÒÔÕ, ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÕÅÔ ÓÃÅÎÁÒÉÊ configure, ÇÄÅ ÒÁÓÐÏÌÏÖÅÎÙ ÚÁÇÏÌÏ×ÏÞÎÙÅ ÆÁÊÌÙ É ÂÉÂÌÉÏÔÅËÉ Lua. USE_LUA= 4.0 GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="-I${LUA_INCDIR}" LDFLAGS="-L${LUA_LIBDIR}"
ïÂÒÁÂÏÔËÁ × <filename>bsd.port.pre.mk</filename> åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÅÒÅÍÅÎÎÙÅ ÄÌÑ ÚÁÐÕÓËÁ ËÏÍÁÎÄ ÓÒÁÚÕ ÐÏÓÌÅ ÐÏÄËÌÀÞÅÎÉÑ bsd.port.pre.mk, ÄÌÑ ÜÔÏÇÏ ×ÁÍ ÎÕÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÐÅÒÅÍÅÎÎÕÀ LUA_PREMK. åÓÌÉ ×Ù ÚÁÄÁÅÔÅ LUA_PREMK, ÔÏ ×ÅÒÓÉÑ, ÚÁ×ÉÓÉÍÏÓÔÉ, ËÏÍÐÏÎÅÎÔÙ É ÕÖÅ ÚÁÄÁÎÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÎÅ ÂÕÄÕÔ ÉÚÍÅÎÅÎÙ, × ÓÌÕÞÁÅ ÅÓÌÉ ×Ù ÉÚÍÅÎÉÌÉ ÐÅÒÅÍÅÎÎÙÅ ÐÏÒÔÁ Lua ÐÏÓÌÅ ÐÏÄËÌÀÞÅÎÉÑ bsd.port.pre.mk. éÓÐÏÌØÚÏ×ÁÎÉÅ ÐÅÒÅÍÅÎÎÙÈ <application>Lua</application> × ËÏÍÁÎÄÁÈ óÌÅÄÕÀÝÉÊ ÆÒÁÇÍÅÎÔ ÉÌÌÀÓÔÒÉÒÕÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ LUA_PREMK ÐÏÓÒÅÄÓÔ×ÏÍ ÚÁÐÕÓËÁ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ Lua ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÏÌÕÞÉÔØ ÓÔÒÏËÕ Ó ÐÏÌÎÏÊ ×ÅÒÓÉÅÊ, ÓÏÈÒÁÎÉÔØ ÅÅ × ÐÅÒÅÍÅÎÎÕÀ É ÐÅÒÅÄÁÔØ ÐÒÏÇÒÁÍÍÅ. USE_LUA= 5.0 LUA_PREMK= yes .include <bsd.port.pre.mk> .if exists(${LUA_CMD}) VER_STR!= ${LUA_CMD} -v CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" .endif ðÅÒÅÍÅÎÎÙÅ Lua ÍÏÖÎÏ ÂÅÚÏÐÁÓÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ × ËÏÍÁÎÄÁÈ ×ÎÕÔÒÉ ÃÅÌÅÊ ÂÅÚ ÎÅÏÂÈÏÄÉÍÏÓÔÉ × ÉÓÐÏÌØÚÏ×ÁÎÉÉ LUA_PREMK.
éÓÐÏÌØÚÏ×ÁÎÉÅ Xfce ðÅÒÅÍÅÎÎÁÑ USE_XFCE ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ Á×ÔÏÍÁÔÉÞÅÓËÏÊ ËÏÎÆÉÇÕÒÁÃÉÉ ÚÁ×ÉÓÉÍÏÓÔÅÊ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ ÂÉÂÌÉÏÔÅËÉ ÉÌÉ ÐÒÉÌÏÖÅÎÉÑ ÎÁ ÏÓÎÏ×Å Xfce, ÔÁËÉÅ ËÁË x11-toolkits/libxfce4gui É x11-wm/xfce4-panel. ÷ ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ ÒÁÓÐÏÚÎÁÀÔÓÑ ÓÌÅÄÕÀÝÉÅ ÂÉÂÌÉÏÔÅËÉ É ÐÒÉÌÏÖÅÎÉÑ Xfce: libexo: x11/libexo libgui: x11-toolkits/libxfce4gui libutil: x11/libxfce4util libmcs: x11/libxfce4mcs mcsmanager: sysutils/xfce4-mcs-manager panel: x11-wm/xfce4-panel thunar: x11-fm/thunar wm: x11-wm/xfce4-wm xfdev: dev/xfce4-dev-tools òÁÓÐÏÚÎÁÀÔÓÑ ÓÌÅÄÕÀÝÉÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÁÒÁÍÅÔÒÙ: configenv: éÓÐÏÌØÚÕÊÔÅ, ÅÓÌÉ ×ÁÛ ÐÏÒÔ ÔÒÅÂÕÅÔ ÓÐÅÃÉÁÌØÎÏ ÉÚÍÅÎÅÎÎÏÇÏ ÚÎÁÞÅÎÉÑ CONFIGURE_ENV ÄÌÑ ÐÏÉÓËÁ ÔÒÅÂÕÅÍÙÈ ÄÌÑ ÐÏÒÔÁ ÂÉÂÌÉÏÔÅË. -I${LOCALBASE}/include -L${LOCALBASE}/lib ÄÏÂÁ×ÌÑÅÔÓÑ × CPPFLAGS Ë CONFIGURE_ENV. óÌÅÄÏ×ÁÔÅÌØÎÏ, ÅÓÌÉ Õ ÐÏÒÔÁ ÉÍÅÅÔÓÑ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ sysutils/xfce4-mcs-manager, É ÐÏÒÔ ÔÒÅÂÕÅÔ ÓÐÅÃÉÁÌØÎÙÈ CPPFLAGS × Ó×ÏÅÍ ÏËÒÕÖÅÎÉÉ configure, ÔÏ ÓÉÎÔÁËÓÉÓ ÂÕÄÅÔ ÓÌÅÄÕÀÝÉÍ: USE_XFCE= mcsmanager configenv éÓÐÏÌØÚÏ×ÁÎÉÅ Mozilla ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ Mozilla USE_GECKO ïÄÉÎ ÉÚ ÂÜËÜÎÄÏ× Gecko, Ó ËÏÔÏÒÙÍ ÍÏÖÅÔ ÒÁÂÏÔÁÔØ ÐÏÒÔ. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: libxul (libxul.so), seamonkey (libgtkembedmoz.so, ÕÓÔÁÒÅ×ÛÉÊ, ÂÏÌØÛÅ ÎÅ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ). USE_FIREFOX äÌÑ ÚÁÐÕÓËÁ ÐÏÒÔÁ ÔÒÅÂÕÅÔÓÑ Firefox. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: yes (ÂÅÒÅÔÓÑ ×ÅÒÓÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ), 40, 36, 35. ðÏ ÕÍÏÌÞÁÎÉÀ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ×ÅÒÓÉÉ 40. USE_FIREFOX_BUILD äÌÑ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÁ ÔÒÅÂÕÅÔÓÑ Firefox. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: ÓÍÏÔÒÉÔÅ USE_FIREFOX. á×ÔÏÍÁÔÉÞÅÓËÉ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ USE_FIREFOX Ó ÐÒÉÓ×ÏÅÎÉÅÍ ÔÏÇÏ ÖÅ ÚÎÁÞÅÎÉÑ. USE_SEAMONKEY äÌÑ ÚÁÐÕÓËÁ ÐÏÒÔÁ ÔÒÅÂÕÅÔÓÑ SeaMonkey. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: yes (ÂÅÒÅÔÓÑ ×ÅÒÓÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ), 20, 11 (ÕÓÔÁÒÅÌÏ, ÂÏÌØÛÅ ÎÅ ÄÏÌÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ). ðÏ ÕÍÏÌÞÁÎÉÀ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ×ÅÒÓÉÉ 20. USE_SEAMONKEY_BUILD äÌÑ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÁ ÔÒÅÂÕÅÔÓÑ SeaMonkey. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: ÓÍÏÔÒÉÔÅ USE_SEAMONKEY. á×ÔÏÍÁÔÉÞÅÓËÉ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ USE_SEAMONKEY Ó ÐÒÉÓ×ÏÅÎÉÅÍ ÔÏÇÏ ÖÅ ÚÎÁÞÅÎÉÑ. USE_THUNDERBIRD äÌÑ ÚÁÐÕÓËÁ ÐÏÒÔÁ ÔÒÅÂÕÅÔÓÑ Thunderbird. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: yes (ÂÅÒÅÔÓÑ ×ÅÒÓÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ), 31, 30 (ÕÓÔÁÒÅÌÏ, ÂÏÌØÛÅ ÎÅ ÄÏÌÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ). ðÏ ÕÍÏÌÞÁÎÉÀ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ×ÅÒÓÉÉ 31. USE_THUNDERBIRD_BUILD äÌÑ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÁ ÔÒÅÂÕÅÔÓÑ Thunderbird. ÷ÏÚÍÏÖÎÙÅ ÚÎÁÞÅÎÉÑ: ÓÍÏÔÒÉÔÅ USE_THUNDERBIRD. á×ÔÏÍÁÔÉÞÅÓËÉ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ USE_THUNDERBIRD Ó ÐÒÉÓ×ÏÅÎÉÅÍ ÔÏÇÏ ÖÅ ÚÎÁÞÅÎÉÑ.
ðÏÌÎÙÊ ÐÅÒÅÞÅÎØ ÄÏÓÔÕÐÎÙÈ ÐÅÒÅÍÅÎÎÙÈ ÍÏÖÎÏ ÐÏÌÕÞÉÔØ × ÆÁÊÌÅ /usr/ports/Mk/bsd.gecko.mk.
éÓÐÏÌØÚÏ×ÁÎÉÅ ÂÁÚ ÄÁÎÎÙÈ ðÅÒÅÍÅÎÎÙÅ ÄÌÑ ÐÏÒÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈ ÂÁÚÙ ÄÁÎÎÙÈ ðÅÒÅÍÅÎÎÁÑ úÎÁÞÅÎÉÑ USE_BDB åÓÌÉ ÐÅÒÅÍÅÎÎÁÑ ÕÓÔÁÎÏ×ÌÅÎÁ × yes, ÄÏÂÁ×ÌÑÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ÐÏÒÔÁ databases/db41. ôÁËÖÅ ÐÅÒÅÍÅÎÎÏÊ ÍÏÖÎÏ ÐÒÉÓ×ÏÉÔØ ÚÎÁÞÅÎÉÑ: 2, 3, 40, 41, 42, 43, 44, 46, 47, 48 ÉÌÉ 51. ÷Ù ÍÏÖÅÔÅ ÏÂßÑ×ÉÔØ ÄÉÁÐÁÚÏÎ ÐÒÉÎÉÍÁÅÍÙÈ ÚÎÁÞÅÎÉÊ, USE_BDB=42+ ÂÕÄÅÔ ÉÓËÁÔØ ÕÓÔÁÎÏ×ÌÅÎÎÕÀ ×ÅÒÓÉÀ Ó ÎÁÉÂÏÌØÛÉÍ ÎÏÍÅÒÏÍ, É, ÅÓÌÉ ÎÉÞÅÇÏ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÏ, ×ÅÒÎÅÔÓÑ Ë 42. USE_MYSQL åÓÌÉ ÐÅÒÅÍÅÎÎÁÑ ÕÓÔÁÎÏ×ÌÅÎÁ × yes, ÄÏÂÁ×ÌÑÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ÐÏÒÔÁ databases/mysql55-client. ëÁË Ó×ÑÚÁÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ, WANT_MYSQL_VER ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÁ × ÚÎÁÞÅÎÉÅ 323, 40, 41, 50, 51, 52, 55 ÉÌÉ 60. USE_PGSQL åÓÌÉ ÕÓÔÁÎÏ×ÌÅÎÁ × yes, ÄÏÂÁ×ÌÑÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ÐÏÒÔÁ databases/postgresql90-client. ëÁË Ó×ÑÚÁÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ, WANT_PGSQL_VER ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÁ × ÚÎÁÞÅÎÉÅ 83, 84, 90, 91 ÉÌÉ 92. ÷Ù ÍÏÖÅÔÅ ÕËÁÚÁÔØ ÍÁËÓÉÍÁÌØÎÏÅ É ÍÉÎÉÍÁÌØÎÏÅ ÚÎÁÞÅÎÉÑ; WANT_PGSQL_VER= 90+ ÓÄÅÌÁÅÔ ÐÏÒÔ ÚÁ×ÉÓÉÍÙÍ ÏÔ ÍÉÎÉÍÁÌØÎÏÊ ×ÅÒÓÉÉ 9.0. USE_SQLITE åÓÌÉ ÐÅÒÅÍÅÎÎÁÑ ÉÍÅÅÔ ÚÎÁÞÅÎÉÅ yes, ÄÏÂÁ×ÌÑÅÔ ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ ÐÏÒÔÁ databases/sqlite3. ðÅÒÅÍÅÎÎÁÑ ÍÏÖÅÔ ÐÒÉÎÉÍÁÔØ ÚÎÁÞÅÎÉÑ: 3, 2.
ðÏÄÒÏÂÎÅÅ ÓÍÏÔÒÉÔÅ × bsd.database.mk.
úÁÐÕÓË É ÏÓÔÁÎÏ×ËÁ ÓÌÕÖ (ÓÃÅÎÁÒÉÉ <literal>rc</literal>) óÃÅÎÁÒÉÉ rc.d ÉÓÐÏÌØÚÕÀÔÓÑ ÄÌÑ ÚÁÐÕÓËÁ ÓÌÕÖ ÐÒÉ ÚÁÐÕÓËÅ ÓÉÓÔÅÍÙ É ÄÁÀÔ ÁÄÍÉÎÉÓÔÒÁÔÏÒÕ ÓÔÁÎÄÁÒÔÎÙÊ ÓÐÏÓÏ ÏÓÔÁÎÏ×ËÉ, ÚÁÐÕÓËÁ É ÐÅÒÅÚÁÐÕÓËÁ ÓÌÕÖÂÙ. ðÏÒÔÙ ÉÎÔÅÇÒÉÒÕÀÔÓÑ × ÓÉÓÔÅÍÎÕÀ ÉÎÆÒÁÓÔÒÕËÔÕÒÕ rc.d. ðÏÄÒÏÂÎÏÓÔÉ ÐÏ Å£ ÉÓÐÏÌØÚÏ×ÁÎÉÀ ÍÏÖÎÏ ÎÁÊÔÉ × ÇÌÁ×Å rc.d òÕËÏ×ÏÄÓÔ×Á. ðÏÄÒÏÂÎÏÅ ÏÂßÑÓÎÅÎÉÅ ÄÏÓÔÕÐÎÙÈ ËÏÍÁÎÄ ÎÁÈÏÄÉÔÓÑ × &man.rc.8; É &man.rc.subr.8;. îÁËÏÎÅÃ, ÅÓÔØ ÓÔÁÔØÑÏ ÐÒÁËÔÉÞÅÓËÉÈ ÁÓÐÅËÔÁÈ ÎÁÐÉÓÁÎÉÑ ÓÃÅÎÁÒÉÅ× rc.d. õÓÔÁÎÏ×ÉÔØ ÍÏÖÎÏ ÏÄÉÎ ÉÌÉ ÂÏÌÅÅ ÓÃÅÎÁÒÉÅ× rc.d: USE_RC_SUBR= doormand óÃÅÎÁÒÉÉ ÏÂÑÚÁÎÙ ÒÁÚÍÅÝÁÔØÓÑ × ÐÏÄËÁÔÁÌÏÇÅ files Ó ÏÂÑÚÁÔÅÌØÎÙÍ ÄÏÂÁ×ÌÅÎÉÅÍ ÓÕÆÆÉËÓÁ .in Ë ÉÍÅÎÉ ÆÁÊÌÁ. äÌÑ ÜÔÏÇÏ ÆÁÊÌÁ ÂÕÄÕÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÓÔÁÎÄÁÒÔÎÙÅ ÒÁÓÛÉÒÅÎÉÑ SUB_LIST. ôÁËÖÅ ÏÓÏÂÅÎÎÏ ÐÒÉ×ÅÔÓÔ×ÕÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÒÁÓÛÉÒÅÎÉÊ %%PREFIX%% É %%LOCALBASE%%. ðÏÄÒÏÂÎÅÅ Ï SUB_LIST × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ÇÌÁ×Å. äÏ &os; 6.1-RELEASE ÉÎÔÅÇÒÁÃÉÑ Ó &man.rcorder.8; ÄÏÓÔÕÐÎÁ ÞÅÒÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÅ USE_RCORDER ×ÍÅÓÔÏ USE_RC_SUBR. ïÄÎÁËÏ, ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÏÔ ÍÅÔÏÄ ÎÅ ÎÕÖÎÏ, ÅÓÌÉ ×ÁÛ ÐÏÒÔ ÎÅ ×ËÌÀÞÁÅÔ ÏÐÃÉÀ ÐÏ Ó×ÏÅÊ ÕÓÔÁÎÏ×ËÅ × ÏÓÎÏ×ÎÕÀ ÓÉÓÔÅÍÕ ÉÌÉ ÓÌÕÖÂÅ ÎÅ ÎÕÖÎÏ ÚÁÐÕÓËÁÔØÓÑ ÄÏ ×ÙÐÏÌÎÅÎÉÑ ÓÃÅÎÁÒÉÑ FILESYSTEMS ÉÚ rc.d ÏÓÎÏ×ÎÏÊ ÓÉÓÔÅÍÙ. îÁÞÉÎÁÑ Ó &os; 6.1-RELEASE ÌÏËÁÌØÎÙÅ ÓÃÅÎÁÒÉÉ rc.d (×ËÌÀÞÁÑ ÕÓÔÁÎÏ×ÌÅÎÎÙÅ ÉÚ ÐÏÒÔÏ×) ×ËÌÀÞÅÎÙ × ÏÂÝÉÊ &man.rcorder.8; ÏÓÎÏ×ÎÏÊ ÓÉÓÔÅÍÙ. ðÒÉÍÅÒ ÐÒÏÓÔÏÇÏ ÓÃÅÎÁÒÉÑ rc.d: #!/bin/sh # $FreeBSD$ # # PROVIDE: doormand # REQUIRE: LOGIN # KEYWORD: shutdown # # # Add the following lines to /etc/rc.conf.local or /etc/rc.conf to enable doorman: # doorman_enable (bool): Set to "NO" by default. # Set it to "YES" to enable doorman # doorman_config (path): Set to "%%PREFIX%%/etc/doormand/doormand.cf" by default. # Add the following lines to /etc/rc.conf.local or /etc/rc.conf # to enable this service: # # doormand_enable (bool): Set to NO by default. # Set it to YES to enable doormand. # doormand_config (path): Set to %%PREFIX%%/etc/doormand/doormand.cf # by default. # . /etc/rc.subr name=doormand rcvar=doormand_enable load_rc_config $name : ${doormand_enable:="NO"} : ${doormand_config="%%PREFIX%%/etc/doormand/doormand.cf"} command=%%PREFIX%%/sbin/${name} pidfile=/var/run/${name}.pid command_args="-p $pidfile -f $doormand_config" run_rc_command "$1" åÓÌÉ ÎÅÔ ÓÔÏÑÝÅÊ ÐÒÉÞÉÎÙ ÚÁÐÕÓËÁÔØ ÓÌÕÖÂÙ ÒÁÎØÛÅ ×ÓÅÈ ÐÏÒÔÏ×, ÓÃÅÎÁÒÉÉ ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ REQUIRE: LOGIN åÓÌÉ ÓÌÕÖÂÁ ÒÁÂÏÔÁÅÔ ÐÏÄ ÏÐÒÅÄÅÌÅÎÎÙÍ ÐÏÌØÚÏ×ÁÔÅÌÅÍ (ÏÔÌÉÞÎÙÍ ÏÔ root), ÔÏ ÜÔÏ ÄÅÌÁÅÔÓÑ ÐÒÉÎÕÄÉÔÅÌØÎÏ. ÷ ÓÃÅÎÁÒÉÊ ×ÙÛÅ ×ËÌÀÞÅÎÁ ËÏÎÓÔÒÕËÃÉÑ KEYWORD: shutdown ÐÏÔÏÍÕ ÞÔÏ ×ÙÍÙÛÌÅÎÎÙÊ ÐÏÒÔ, ËÏÔÏÒÙÊ ÍÙ ÉÓÐÏÌØÚÕÅÍ × ËÁÞÅÓÔ×Å ÐÒÉÍÅÒÁ, ÚÁÐÕÓËÁÅÔ ÓÌÕÖÂÕ, É ÏÎÁ ÄÏÌÖÎÁ ËÏÒÒÅËÔÎÏ ÚÁ×ÅÒÛÉÔØÓÑ ÐÒÉ ×ÙËÌÀÞÅÎÉÉ ÓÉÓÔÅÍÙ. åÓÌÉ ÓÃÅÎÁÒÉÊ ÎÅ ÚÁÐÕÓËÁÅÔ ÐÏÓÔÏÑÎÎÕÀ ÓÌÕÖÂÕ, ÔÏ ÜÔÏ ÎÅ Ñ×ÌÑÅÔÓÑ ÎÅÏÂÈÏÄÉÍÙÍ. äÌÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ ÜÌÅÍÅÎÔÏ× ËÏÎÆÉÇÕÒÁÃÉÉ ÐÒÉÓ×ÏÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ ÐÏ ÕÍÏÌÞÁÎÉÀ × ÓÔÉÌÅ "=" Ñ×ÌÑÅÔÓÑ ÂÏÌÅÅ ÐÒÅÄÐÏÞÔÉÔÅÌØÎÙÍ ÐÏ ÓÒÁ×ÎÅÎÉÀ ÓÏ ÓÔÉÌÅÍ ":=", ÉÓÐÏÌØÚÕÅÍÙÍ ÚÄÅÓØ, ÐÏÓËÏÌØËÕ ÐÅÒ×ÙÊ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÔÏÌØËÏ ÅÓÌÉ ÐÅÒÅÍÅÎÎÁÑ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ, Á ÐÏÓÌÅÄÎÉÊ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ Å£, ÅÓÌÉ ÐÅÒÅÍÅÎÎÁÑ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ ÉÌÉ ÏÂÎÕÌÅÎÁ. ðÏÌØÚÏ×ÁÔÅÌØ ×ÐÏÌÎÅ ÍÏÖÅÔ ÎÁÐÉÓÁÔØ × Ó×ÏÅÍ ÆÁÊÌÅ rc.conf.local ÞÔÏ-ÎÉÂÕÄØ ÔÉÐÁ doormand_flags="" É ÔÏÇÄÁ ÐÒÏÉÚÏÊÄÅÔ ÎÅÕÍÅÓÔÎÁÑ ÐÏÄÓÔÁÎÏ×ËÁ ÐÅÒÅÍÅÎÎÏÊ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ":=", ÞÔÏ ÐÅÒÅÏÐÒÅÄÅÌÉÔ ÎÁÍÅÒÅÎÉÑ ÐÏÌØÚÏ×ÁÔÅÌÑ. îÏ×ÙÅ ÓÃÅÎÁÒÉÉ ÎÅ ÓÌÅÄÕÅÔ ÄÏÂÁ×ÌÑÔØ Ó ÓÕÆÆÉËÓÏÍ .sh. ÷ ÏÐÒÅÄÅÌÅÎÎÙÊ ÍÏÍÅÎÔ ÂÕÄÅÔ ÐÒÏÉÚ×ÅÄÅÎÏ ÍÁÓÓÏ×ÏÅ ÒÅÐÏÚÉÔÏÒÎÏÅ ËÏÐÉÒÏ×ÁÎÉÅ ×ÓÅÈ ÓÃÅÎÁÒÉÅ×, ×ÓÅ ÅÝÅ ÉÍÅÀÝÉÈ ÜÔÏÔ ÓÕÆÆÉËÓ. ïÓÔÁÎÏ×ËÁ ÓÌÕÖ ÐÒÉ ÕÄÁÌÅÎÉÉ óÕÝÅÓÔ×ÕÅÔ ×ÏÚÍÏÖÎÏÓÔØ ÓÄÅÌÁÔØ Á×ÔÏÍÁÔÉÞÅÓËÕÀ ÏÓÔÁÎÏ×ËÕ ÓÌÕÖÂÙ ÞÁÓÔØÀ ÐÒÏÃÅÄÕÒÙ ÕÄÁÌÅÎÉÑ. íÙ ÓÏ×ÅÔÕÅÍ ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÕ ÆÕÎËÃÉÀ ÔÏÌØËÏ ÐÒÉ ÁÂÓÏÌÀÔÎÏÊ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÏÓÔÁÎÏ×ËÉ ÓÌÕÖÂÙ ÐÅÒÅÄ ÔÅÍ ËÁË ÆÁÊÌÙ ÂÕÄÕÔ ÕÄÁÌÅÎÙ. ëÁË ÐÒÁ×ÉÌÏ, ÒÅÛÅÎÉÅ Ï ÏÓÔÁÎÏ×ËÅ ÓÌÕÖÂÙ ÐÒÉ ÕÄÁÌÅÎÉÉ ÏÓÔÁÅÔÓÑ ÚÁ ÁÄÍÉÎÉÓÔÒÁÔÏÒÏÍ. ôÁËÖÅ ÕÞÉÔÙ×ÁÊÔÅ, ÞÔÏ ÜÔÏ × ÔÏÍ ÞÉÓÌÅ ËÁÓÁÅÔÓÑ ÏÂÎÏ×ÌÅÎÉÊ. ÷ pkg-plist ÄÏÂÁ×ÌÑÀÔÓÑ ÐÒÉÍÅÒÎÏ ÔÁËÉÅ ÓÔÒÏËÉ: @stopdaemon doormand ðÁÒÁÍÅÔÒ ÏÂÑÚÁÔÅÌØÎÏ ÄÏÌÖÅÎ ÓÏ×ÐÁÄÁÔØ Ó ÓÏÄÅÒÖÉÍÙÍ ÐÅÒÅÍÅÎÎÏÊ USE_RC_SUBR. ëÏÎÔÒÏÌØÎÙÊ ÓÐÉÓÏË ÐÅÒÅÄ ×ÎÅÓÅÎÉÅÍ ÉÚÍÅÎÅÎÉÊ ðÅÒÅÄ ÔÅÍ, ËÁË ÏÔÓÙÌÁÔØ ÐÏÒÔ ÓÏ ÓÃÅÎÁÒÉÅÍ rc.d, É ÔÅÍ ÂÏÌÅÅ ÐÅÒÅÄ ÅÇÏ ËÏÍÍÉÔÏÍ, Ó×ÅÒØÔÅÓØ ÓÏ ÓÌÅÄÕÀÝÉÍ ËÏÎÔÒÏÌØÎÙÍ ÓÐÉÓËÏÍ, ÞÔÏÂÙ ÕÂÅÄÉÔØÓÑ, ÞÔÏ ÐÏÒÔ ÄÌÑ ÜÔÏÇÏ ÇÏÔÏ×. åÓÌÉ ÜÔÏ ÎÏ×ÙÊ ÆÁÊÌ, ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÌÉ ÏÎ ÎÁ .sh? åÓÌÉ ÜÔÏ ÔÁË, ÔÏ ÉÍÑ ÆÁÊÌÁ ÄÏÌÖÎÏ ÂÙÔØ ÉÚÍÅÎÅÎÏ ÎÁ file.in, ÐÏÓËÏÌØËÕ ÎÏ×ÙÅ ÆÁÊÌÙ rc.d ÎÅ ÍÏÇÕÔ ÏËÁÎÞÉ×ÁÔØÓÑ ÎÁ ÔÁËÏÅ ÒÁÓÛÉÒÅÎÉÅ. ðÒÉÓÕÔÓÔ×ÕÅÔ ÌÉ × ÆÁÊÌÅ ÔÅÇ $FreeBSD$? óÏÏÔ×ÅÔÓÔ×ÕÀÔ ÌÉ ÄÒÕÇ ÄÒÕÇÕ ÉÍÑ ÆÁÊÌÁ (ÂÅÚ .in), ÓÔÒÏËÁ PROVIDE É $name? éÍÑ ÆÁÊÌÁ, ÓÏ×ÐÁÄÁÀÝÅÅ Ó PROVIDE, ÕÐÒÏÝÁÅÔ ÏÔÌÁÄËÕ, ÏÓÏÂÅÎÎÏ ÄÌÑ ÐÒÏÂÌÅÍ, Ó×ÑÚÁÎÎÙÈ Ó &man.rcorder.8;. óÏÏÔ×ÅÔÓÔ×ÉÅ ÉÍÅÎÉ ÆÁÊÌÁ É $name ÔÁËÖÅ ÕÐÒÏÝÁÅÔ ÐÏÎÉÍÁÎÉÅ, ËÁËÉÅ ÐÅÒÅÍÅÎÎÙÅ ÉÍÅÀÔ ÏÔÎÏÛÅÎÉÅ Ë ÓÃÅÎÁÒÉÀ × rc.conf[.local]. ðÏÓÌÅÄÎÅÅ ÔÁËÖÅ Ñ×ÌÑÅÔÓÑ ÔÅÍ, ÞÔÏ ×Ù ÍÏÇÌÉ ÂÙ ÎÁÚ×ÁÔØ "ÐÏÌÉÔÉËÏÊ" ÄÌÑ ×ÓÅÈ ÎÏ×ÙÈ ÓÃÅÎÁÒÉÅ×, ×ËÌÀÞÁÑ ÔÅ, ÞÔÏ ×ÈÏÄÑÔ × ÂÁÚÏ×ÕÀ ÓÉÓÔÅÍÕ. óÏÄÅÒÖÉÔ ÌÉ ÓÔÒÏËÁ REQUIRE ÚÎÁÞÅÎÉÅ LOGIN? üÔÏ ÕÓÌÏ×ÉÅ ÏÂÑÚÁÔÅÌØÎÏ ÄÌÑ ÓÃÅÎÁÒÉÅ×, ÒÁÂÏÔÁÀÝÉÈ ÎÅ ÉÚ ÐÏÄ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌÑ. åÓÌÉ ÓÃÅÎÁÒÉÊ ÚÁÐÕÓËÁÅÔÓÑ ÉÚ-ÐÏÄ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌÑ, ÔÏ ÓÔÏÉÔ ÌÉ ÅÇÏ ÚÁÐÕÓËÁÔØ ÄÏ LOGIN? åÓÌÉ ÎÅÔ, ÔÏ ÅÇÏ ÓÌÅÄÕÅÔ ÚÁÐÕÓËÁÔØ ÐÏÓÌÅ, ÔÁË ÞÔÏÂÙ ÍÙ ÍÏÇÌÉ Ó×ÏÂÏÄÎÏ ÓÇÒÕÐÐÉÒÏ×ÁÔØ ÌÏËÁÌØÎÙÅ ÓÃÅÎÁÒÉÉ × ÔÏÊ ÔÏÞËÅ &man.rcorder.8;, ËÏÇÄÁ ÐÏÞÔÉ ×ÓÅ ÓÃÅÎÁÒÉÉ × ÂÁÚÏ×ÏÊ ÓÉÓÔÅÍÅ ÕÖÅ ÓÔÁÒÔÏ×ÁÌÉ. úÁÐÕÓËÁÅÔ ÌÉ ÓÃÅÎÁÒÉÊ ÐÏÓÔÏÑÎÎÕÀ ÓÌÕÖÂÕ? åÓÌÉ ÄÁ, ÔÏ ÏÎ ÄÏÌÖÅÎ ÉÍÅÔØ KEYWORD: shutdown. õÂÅÄÉÔÅÓØ × ÔÏÍ, ÞÔÏ × ÓÃÅÎÁÒÉÉ ÏÔÓÕÔÓÔ×ÕÅÔ KEYWORD: FreeBSD. üÔÏ ÐÅÒÅÓÔÁÌÏ ÂÙÔØ ÎÕÖÎÙÍ É ÎÅÖÅÌÁÔÅÌØÎÏ ÕÖÅ ÍÎÏÇÏ ÌÅÔ. üÔÏ ÔÁËÖÅ ÓÌÕÖÉÔ ÉÎÄÉËÁÔÏÒÏÍ ÔÏÇÏ, ÞÔÏ ÎÏ×ÙÊ ÓÃÅÎÁÒÉÊ ÂÙÌ ÓËÏÐÉÒÏ×ÁÎ ÓÏ ÓÔÁÒÏÇÏ, ÐÏÜÔÏÍÕ ÏÓÏÂÏÅ ×ÎÉÍÁÎÉÅ ÄÏÌÖÎÏ ÂÙÔØ ÕÄÅÌÅÎÏ ÐÒÉ ÐÒÏ×ÅÒËÅ. åÓÌÉ ÓÃÅÎÁÒÉÊ ÉÓÐÏÌØÚÕÅÔ ÉÎÔÅÒÐÒÅÔÉÒÕÅÍÙÊ ÑÚÙË, ÔÁËÏÊ ËÁË perl, python ÉÌÉ ruby, ÔÏ ÕÂÅÄÉÔÅÓØ, ÞÔÏ ÚÎÁÞÅÎÉÅ command_interpreter ÕÓÔÁÎÏ×ÌÅÎÏ ÄÏÌÖÎÙÍ ÏÂÒÁÚÏÍ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ &prompt.root; service name stop ×ÏÚÍÏÖÎÏ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ ÎÅÐÒÁ×ÉÌØÎÏ. óÍÏÔÒÉÔÅ &man.service.8; ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ. ÷ÓÅ ÌÉ ×ÈÏÖÄÅÎÉÑ /usr/local ÂÙÌÉ ÚÁÍÅÎÅÎÙ ÎÁ %%PREFIX%%? éÄÅÔ ÌÉ ÐÒÉÓ×ÏÅÎÉÅ ÐÅÒÅÍÅÎÎÙÍ ÚÎÁÞÅÎÉÊ ÐÏ ÕÍÏÌÞÁÎÉÀ ÐÏÓÌÅ load_rc_config? éÓÐÏÌØÚÕÀÔÓÑ ÌÉ ÐÕÓÔÙÅ ÓÔÒÏËÉ ÐÒÉ ÐÒÉÓ×ÏÅÎÉÉ ÚÎÁÞÅÎÉÊ ÐÏ ÕÍÏÌÞÁÎÉÀ? ôÁËÉÅ ÐÒÉÓ×ÏÅÎÉÑ ÄÏÌÖÎÙ ÂÙÔØ ÕÄÁÌÅÎÙ, ÎÏ ÐÅÒÅÐÒÏ×ÅÒØÔÅ, ÞÔÏ ÜÔÉ ÐÁÒÁÍÅÔÒÙ ÚÁÄÏËÕÍÅÎÔÉÒÏ×ÁÎÙ × ËÏÍÍÅÎÔÁÒÉÑÈ × ÎÁÞÁÌÅ ÆÁÊÌÁ. äÅÊÓÔ×ÉÔÅÌØÎÏ ÌÉ × ÓÃÅÎÁÒÉÑÈ ÉÓÐÏÌØÚÕÀÔÓÑ ÚÎÁÞÅÎÉÑ, ÐÒÉÓ×ÏÅÎÎÙÅ ÐÅÒÅÍÅÎÎÙÍ? ñ×ÌÑÀÔÓÑ ÌÉ ÐÁÒÁÍÅÔÒÙ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÐÅÒÅÞÉÓÌÅÎÎÙÅ × name_flags, ÏÂÑÚÁÔÅÌØÎÙÍÉ? åÓÌÉ ÜÔÏ ÔÁË, ÔÏ ÉÈ ÓÌÅÄÕÅÔ ÐÏÍÅÓÔÉÔØ × command_args. ðÁÒÁÍÅÔÒ ÚÄÅÓØ - ÜÔÏ ËÁË ËÒÁÓÎÙÊ ÆÌÁÇ (ÐÒÏÛÕ ÐÒÏÝÅÎÉÑ ÚÁ ËÁÌÁÍÂÕÒ), ÐÏÓËÏÌØËÕ ÏÂÙÞÎÏ ÏÎ ÐÒÉÍÅÎÑÅÔÓÑ ÄÌÑ “ÄÅÍÏÎÉÚÁÃÉÉ“ ÐÒÏÃÅÓÓÁ É ÐÏÜÔÏÍÕ ÎÁ ÓÁÍÏÍ ÄÅÌÅ ÏÂÑÚÁÔÅÌØÎÙÊ. îÉËÏÇÄÁ ÎÅ ×ËÌÀÞÁÊÔÅ ÐÅÒÅÍÅÎÎÕÀ name_flags × command_args (É ÎÁÏÂÏÒÏÔ; × ÐÒÏÞÅÍ, ÔÁËÁÑ ÏÛÉÂËÁ ×ÓÔÒÅÞÁÅÔÓÑ ÒÅÖÅ). úÁÐÕÓËÁÅÔ ÌÉ ÓÃÅÎÁÒÉÊ ËÁËÏÊ-ÌÉÂÏ ËÏÄ ÂÅÚÕÓÌÏ×ÎÏ? üÔÏ ÎÅÈÏÒÏÛÏ. ïÂÙÞÎÏ ÔÁËÉÅ ×ÅÝÉ ÍÏÇÕÔ/ÄÏÌÖÎÙ ÐÏÍÅÝÁÔØÓÑ × start_precmd. ÷ÓÅ ÌÏÇÉÞÅÓËÉÅ ÕÓÌÏ×ÉÑ ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÕÎËÃÉÀ checkyesno. îÅ ÐÉÛÉÔÅ ÓÁÍÏÐÉÓÎÙÈ ÐÒÏ×ÅÒÏË ÄÌÑ [Yy][Ee][Ss], É ÔÁË ÄÁÌÅÅ. åÓÌÉ × ÓÃÅÎÁÒÉÉ ×ÙÐÏÌÎÑÅÔÓÑ ÃÉËÌ (ÎÁÐÒÉÍÅÒ, ÏÖÉÄÁÎÉÅ ÞÅÇÏ-ÌÉÂÏ ÐÅÒÅÄ ÓÔÁÒÔÏÍ), ÉÓÐÏÌØÚÕÅÔÓÑ ÌÉ ÓÞÅÔÞÉË ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ ÃÉËÌÁ? íÙ ÎÅ ÈÏÔÉÍ ÂÅÓËÏÎÅÞÎÏÇÏ ÏÖÉÄÁÎÉÑ ÚÁÇÒÕÚËÉ × ÓÌÕÞÁÅ ×ÏÚÎÉËÎÏ×ÅÎÉÑ ÏÛÉÂËÉ. óÏÚÄÁÅÔ ÌÉ ÓÃÅÎÁÒÉÊ ÆÁÊÌÙ ÉÌÉ ËÁÔÁÌÏÇÉ, ËÏÔÏÒÙÍ ÎÕÖÎÙ ÏÓÏÂÙÅ ÐÒÁ×Á ÄÏÓÔÕÐÁ? îÁÐÒÉÍÅÒ, ÆÁÊÌ pid, ËÏÔÏÒÙÊ ÄÏÌÖÅÎ ÐÒÉÎÁÄÌÅÖÁÔØ ÐÏÌØÚÏ×ÁÔÅÌÀ, ÉÚ-ÐÏÄ ËÏÔÏÒÏÇÏ ÚÁÐÕÓËÁÅÔÓÑ ÐÒÏÃÅÓÓ. ÷ÍÅÓÔÏ ÔÒÁÄÉÃÉÏÎÎÙÈ ËÏÍÁÎÄ &man.touch.1;/&man.chown.8;/&man.chmod.1; ÐÏÄÕÍÁÊÔÅ Ï ÉÓÐÏÌØÚÏ×ÁÎÉÉ &man.install.1; Ó ÐÏÄÈÏÄÑÝÉÍÉ ÁÒÇÕÍÅÎÔÁÍÉ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ, ÄÌÑ ÔÏÇÏ ÞÔÏÂÙ ×ÙÐÏÌÎÉÔØ ×ÓÀ ÐÒÏÃÅÄÕÒÕ ÚÁ ÏÄÉÎ ÛÁÇ. äÏÂÁ×ÌÅÎÉÅ ÐÏÌØÚÏ×ÁÔÅÌÅÊ É ÇÒÕÐÐ îÅËÏÔÏÒÙÅ ÐÏÒÔÙ ÔÒÅÂÕÀÔ × ÕÓÔÁÎÏ×ÌÅÎÎÏÊ ÓÉÓÔÅÍÅ ÎÁÌÉÞÉÅ ÏÐÒÅÄÅÌÅÎÎÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ. ÷ÙÂÅÒÉÔÅ Ó×ÏÂÏÄÎÙÊ UID × ÄÉÁÐÁÚÏÎÅ ÏÔ 50 ÄÏ 999 É ÚÁÒÅÇÉÓÔÒÉÒÕÊÔÅ ÅÇÏ × ports/UIDs (ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÅÊ) É/ÉÌÉ × ports/GIDs (ÄÌÑ ÇÒÕÐÐ). õÄÏÓÔÏ×ÅÒØÔÅÓØ, ÞÔÏ ÎÅ ÉÓÐÏÌØÚÕÅÔÅ UID, ÕÖÅ ÉÓÐÏÌØÚÕÅÍÙÊ ÓÉÓÔÅÍÏÊ ÉÌÉ ÄÒÕÇÉÍÉ ÐÏÒÔÁÍÉ. ðÏÖÁÌÕÊÓÔÁ, ×ËÌÀÞÉÔÅ × ÐÁÔÞ ÉÚÍÅÎÅÎÉÅ ÄÌÑ ÜÔÉÈ Ä×ÕÈ ÆÁÊÌÏ×, ÅÓÌÉ ×ÁÍ ÔÒÅÂÕÅÔÓÑ ÓÏÚÄÁÔØ ÎÏ×ÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ ÉÌÉ ÇÒÕÐÐÕ ÄÌÑ ×ÁÛÅÇÏ ÐÏÒÔÁ. úÁÔÅÍ ×Ù ÓÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ × ×ÁÛÅÍ Makefile ÐÅÒÅÍÅÎÎÙÅ USERS É GROUPS, É ÐÏÌØÚÏ×ÁÔÅÌØ Á×ÔÏÍÁÔÉÞÅÓËÉÅ ÓÏÚÄÁÓÔÓÑ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÐÏÒÔÁ. ôÅËÕÝÉÊ ÐÅÒÅÞÅÎØ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÎÎÙÈ UID É GID ÎÁÈÏÄÉÔÓÑ × ports/UIDs É ports/GIDs. ðÏÒÔÙ, ÔÒÅÂÕÀÝÉÅ ÎÁÌÉÞÉÑ ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× ÑÄÒÁ îÅËÏÔÏÒÙÍ ÐÏÒÔÁÍ (ÔÁËÉÍ ËÁË ÚÁÇÒÕÖÁÅÍÙÅ ÍÏÄÕÌÉ ÑÄÒÁ) ÄÌÑ ËÏÍÐÉÌÑÃÉÉ ÎÕÖÎÙ ÆÁÊÌÙ Ó ÉÓÈÏÄÎÙÍÉ ÔÅËÓÔÁÍÉ ÑÄÒÁ. îÉÖÅ ÕËÁÚÁÎ ËÏÒÒÅËÔÎÙÊ ÓÐÏÓÏ ÏÐÒÅÄÅÌÅÎÉÑ, ÕÓÔÁÎÏ×ÌÅÎÙ ÌÉ ÏÎÉ ÐÏÌØÚÏ×ÁÔÅÌÅÍ: .if !exists(${SRC_BASE}/sys/Makefile) IGNORE= requires kernel sources to be installed .endif
ðÒÏÄ×ÉÎÕÔÙÅ ÐÒÁËÔÉËÉ <filename>pkg-plist</filename> éÚÍÅÎÅÎÉÅ ÓÏÄÅÒÖÉÍÏÇÏ <filename>pkg-plist</filename> × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ make-ÐÅÒÅÍÅÎÎÙÈ îÅËÏÔÏÒÙÅ ÐÏÒÔÙ, × ÞÁÓÔÎÏÓÔÉ, ÐÏÒÔÙ p5-, ÄÏÌÖÎÙ ÍÅÎÑÔØ ÓÏÄÅÒÖÉÍÏÅ Ó×ÏÉÈ ÆÁÊÌÏ× pkg-plist × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÔÏÇÏ, Ó ËÁËÉÍÉ ÐÁÒÁÍÅÔÒÁÍÉ ÏÎÉ ÂÙÌÉ ÏÔËÏÎÆÉÇÕÒÉÒÏ×ÁÎÙ (ÉÌÉ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ×ÅÒÓÉÉ ÑÚÙËÁ perl × ÓÌÕÞÁÅ ÐÏÒÔÏ× p5-). þÔÏÂÙ ÏÂÌÅÇÞÉÔØ ÜÔÏÔ ÐÒÏÃÅÓÓ, ÌÀÂÙÅ ×ÈÏÖÄÅÎÉÑ ËÌÀÞÅ×ÙÈ ÓÌÏ× %%OSREL%%, %%PERL_VER%% É %%PERL_VERSION%% × ÆÁÊÌÅ pkg-plist ÂÕÄÕÔ ÚÁÍÅÎÑÔØÓÑ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍÉ ÚÎÁÞÅÎÉÑÍÉ. úÎÁÞÅÎÉÅÍ %%OSREL%% Ñ×ÌÑÅÔÓÑ ÎÏÍÅÒ ×ÅÒÓÉÉ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ (ÎÁÐÒÉÍÅÒ, 4.9). %%PERL_VERSION%% É %%PERL_VER%% ÏÂÏÚÎÁÞÁÀÔ ÐÏÌÎÙÊ ÎÏÍÅÒ ×ÅÒÓÉÉ perl (ÎÁÐÒÉÍÅÒ, 5.8.9). îÅËÏÔÏÒÙÅ ÄÒÕÇÉÅ %%VARS%%, ÉÍÅÀÝÉÅ ÏÔÎÏÛÅÎÉÅ Ë ÆÁÊÌÁÍ ÄÏËÕÍÅÎÔÁÃÉÉ ÐÏÒÔÁ, ÏÐÉÓÁÎÙ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÍ ÒÁÚÄÅÌÅ. åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÓÄÅÌÁÔØ ÄÒÕÇÉÅ ÐÏÄÓÔÁÎÏ×ËÉ, ×Ù ÍÏÖÅÔÅ ÕËÁÚÁÔØ × ÐÅÒÅÍÅÎÎÏÊ PLIST_SUB ÓÐÉÓÏË ÐÁÒ VAR=VALUE, É ×ÓÅ ×ÈÏÖÄÅÎÉÑ %%VAR%% × ÆÁÊÌÅ pkg-plist ÂÕÄÕÔ ÚÁÍÅÎÑÔØÓÑ ÎÁ ÚÎÁÞÅÎÉÅ VALUE. îÁÐÒÉÍÅÒ, ÅÓÌÉ Õ ×ÁÓ ÉÍÅÅÔÓÑ ÐÏÒÔ, ËÏÔÏÒÙÊ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÍÎÏÇÏ ÆÁÊÌÏ× × ËÁÔÁÌÏÇ, ÚÁ×ÉÓÑÝÉÊ ÏÔ ×ÅÒÓÉÉ, ×Ù ÍÏÖÅÔÅ ÚÁÄÁÔØ ÎÅÞÔÏ ÔÉÐÁ OCTAVE_VERSION= 2.0.13 PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION} × ÆÁÊÌÅ Makefile É ÉÓÐÏÌØÚÏ×ÁÔØ %%OCTAVE_VERSION%% ×ÅÚÄÅ, ÇÄÅ ÎÕÖÎÏ ÕËÁÚÁÔØ ÎÏÍÅÒ ×ÅÒÓÉÉ × ÆÁÊÌÅ pkg-plist. ôÁËÉÍ ÏÂÒÁÚÏÍ, ÐÒÉ ÏÂÎÏ×ÌÅÎÉÉ ÐÏÒÔÁ ×ÁÍ ÎÅ ÎÕÖÎÏ ÂÕÄÅÔ ÍÅÎÑÔØ ÄÅÓÑÔËÉ (Á × ÎÅËÏÔÏÒÙÈ ÓÌÕÞÁÑÈ É ÓÏÔÎÉ) ÓÔÒÏË × ÆÁÊÌÅ pkg-plist. åÓÌÉ ×ÁÛ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÆÁÊÌÙ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÕÓÔÁÎÏ×ÌÅÎÎÙÍÉ × ÐÏÒÔÕ ÏÐÃÉÑÍÉ, ÔÏ ÏÂÙÞÎÙÍ ÓÐÏÓÏÂÏÍ ÕÐÒÁ×ÌÅÎÉÑ Ñ×ÌÑÅÔÓÑ ÄÏÂÁ×ÌÅÎÉÅ ÐÒÅÆÉËÓÏ× %%TAG%% ÄÌÑ ÓÔÒÏË pkg-plist Ó ÄÏÂÁ×ÌÅÎÉÅÍ ÜÔÏÇÏ TAG × ÐÅÒÅÍÅÎÎÕÀ PLIST_SUB ×ÎÕÔÒÉ Makefile ÓÏ ÓÐÅÃÉÁÌØÎÙÍ ÚÎÁÞÅÎÉÅÍ @comment, ËÏÔÏÒÏÅ ÕËÁÚÙ×ÁÅÔ ÐÁËÅÔÎÙÍ ÉÎÓÔÒÕÍÅÎÔÁÍ ÉÇÎÏÒÉÒÏ×ÁÔØ ÜÔÉ ÓÔÒÏËÉ: .if defined(WITH_X11) PLIST_SUB+= X11="" .else PLIST_SUB+= X11="@comment " .endif É × ÓÁÍÏÍ pkg-plist: %%X11%%bin/foo-gui üÔÁ ÐÏÄÓÔÁÎÏ×ËÁ (ÔÁËÖÅ, ËÁË É ÄÏÂÁ×ÌÅÎÉÅ ÌÀÂÙÈ ÓÐÒÁ×ÏÞÎÙÈ ÓÔÒÁÎÉÃ) ÂÕÄÅÔ ÓÄÅÌÁÎÁ ÍÅÖÄÕ ×ÙÐÏÌÎÅÎÉÅÍ ÃÅÌÅÊ pre-install É do-install, ÐÏÓÒÅÄÓÔ×ÏÍ ÞÔÅÎÉÑ ÆÁÊÌÁ PLIST É ÚÁÐÉÓØÀ × ÆÁÊÌ TMPPLIST (ÐÏ ÕÍÏÌÞÁÎÉÀ ÜÔÏ ÆÁÊÌ WRKDIR/.PLIST.mktmp). ôÁË ÞÔÏ ÅÓÌÉ ×ÁÛ ÐÏÒÔ ÓÔÒÏÉÔ PLIST ÎÁ ÌÅÔÕ, ÄÅÌÁÊÔÅ ÜÔÏ ×Ï ×ÒÅÍÑ ÉÌÉ ÄÏ ×ÙÐÏÌÎÅÎÉÑ ÃÅÌÉ pre-install. ëÒÏÍÅ ÔÏÇÏ, ÅÓÌÉ ×ÁÛÅÍÕ ÐÏÒÔÕ ÔÒÅÂÕÅÔÓÑ ÏÔÒÅÄÁËÔÉÒÏ×ÁÔØ ÐÏÌÕÞÁÀÝÉÊÓÑ ÆÁÊÌ, ÄÅÌÁÊÔÅ ÜÔÏ × ÃÅÌÉ post-install ÉÚÍÅÎÅÎÉÅÍ ÆÁÊÌÁ TMPPLIST. äÒÕÇÏÊ ÓÐÏÓÏ ÉÚÍÅÎÅÎÉÑ ÓÐÉÓËÁ ÓÂÏÒËÉ ÐÏÒÔÁ ÏÓÎÏ×ÁÎ ÎÁ ÏÐÒÅÄÅÌÅÎÉÉ ÚÎÁÞÅÎÉÊ ÐÅÒÅÍÅÎÎÙÈ PLIST_FILES É PLIST_DIRS. ëÁÖÄÏÅ ÉÚ ÎÉÈ ÒÁÓÓÍÁÔÒÉ×ÁÅÔÓÑ ËÁË ÐÅÒÅÞÅÎØ ÐÕÔÅÊ ÄÌÑ ÚÁÐÉÓÉ × TMPPLIST ÓÏÄÅÒÖÉÍÏÇÏ PLIST. éÍÅÎÁ, ÐÅÒÅÞÉÓÌÅÎÎÙÅ × PLIST_FILES É PLIST_DIRS, ÐÏÄ×ÅÒÇÁÀÔÓÑ ÐÏÄÓÔÁÎÏ×ËÅ %%VAR%%, ËÁË ÏÐÉÓÁÎÏ ×ÙÛÅ. úÁ ÉÓËÌÀÞÅÎÉÅÍ ÜÔÏÇÏ, ÉÍÅÎÁ ÉÚ PLIST_FILES ÂÕÄÕÔ ÐÏÑ×ÌÑÔØÓÑ × ÏËÏÎÞÁÔÅÌØÎÏÍ ×ÁÒÉÁÎÔÅ ÐÅÒÅÞÎÑ ÓÂÏÒËÉ ÂÅÚ ÉÚÍÅÎÅÎÉÊ, ËÏÇÄÁ ËÁË @dirrm ÂÕÄÅÔ ÐÒÅÄÛÅÓÔ×Ï×ÁÔØ ÉÍÅÎÁÍ ÉÚ PLIST_DIRS. äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ×ÏÚÙÍÅÔØ ÄÅÊÓÔ×ÉÅ, PLIST_FILES É PLIST_DIRS ÄÏÌÖÎÙ ÚÁÄÁ×ÁÔØÓÑ ÄÏ ÔÏÇÏ, ËÁË ÂÕÄÅÔ ÚÁÐÉÓÙ×ÁÔØÓÑ TMPPLIST, ÔÏ ÅÓÔØ × ÃÅÌÉ pre-install ÉÌÉ ÅÝ£ ÒÁÎØÛÅ. ðÕÓÔÙÅ ËÁÔÁÌÏÇÉ ïÞÉÓÔËÁ ÐÕÓÔÙÈ ËÁÔÁÌÏÇÏ× úÁÓÔÁרÔÅ ×ÁÛ ÐÏÒÔÙ ÕÄÁÌÑÔØ ÐÕÓÔÙÅ ËÁÔÁÌÏÇÉ ÐÒÉ ÕÄÁÌÅÎÉÉ. ïÂÙÞÎÏ ÜÔÏ ÄÏÓÔÉÇÁÅÔÓÑ ÄÏÂÁ×ÌÅÎÉÅÍ ÓÔÒÏË @dirrm ÄÌÑ ×ÓÅÈ ËÁÔÁÌÏÇÏ×, ËÏÔÏÒÙÅ ÓÏÚÄÁÀÔÓÑ ÜÔÉÍ ÐÏÒÔÏÍ. ÷ÁÍ ÎÕÖÎÏ ÕÄÁÌÉÔØ ÐÏÄËÁÔÁÌÏÇÉ ÄÏ ÔÏÇÏ, ËÁË ×Ù ÓÍÏÖÅÔÅ ÕÄÁÌÉÔØ ÒÏÄÉÔÅÌØÓËÉÅ ËÁÔÁÌÏÇÉ. : lib/X11/oneko/pixmaps/cat.xpm lib/X11/oneko/sounds/cat.au : @dirrm lib/X11/oneko/pixmaps @dirrm lib/X11/oneko/sounds @dirrm lib/X11/oneko ïÄÎÁËÏ, ÉÎÏÇÄÁ @dirrm ÂÕÄÅÔ ×ÙÄÁ×ÁÔØ ÏÛÉÂËÉ, ÐÏÔÏÍÕ ÞÔÏ ÄÒÕÇÉÅ ÐÏÒÔÙ ÉÓÐÏÌØÚÕÀÔ ÔÏÔ ÖÅ ÓÁÍÙÊ ÐÏÄËÁÔÁÌÏÇ. ÷Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ @dirrmtry ÄÌÑ ÕÄÁÌÅÎÉÑ ÔÏÌØËÏ ÐÕÓÔÙÈ ËÁÔÁÌÏÇÏ× ÂÅÚ ×ÙÄÁÞÉ ÐÒÅÄÕÐÒÅÖÄÅÎÉÊ. @dirrmtry share/doc/gimp üÔÁ ËÏÍÁÎÄÁ ÎÅ ×Ù×ÅÄÅÔ ÎÉËÁËÉÈ ÓÏÏÂÝÅÎÉÊ Ï ÏÛÉÂËÁÈ É ÎÅ ×ÙÚÏ×ÅÔ Á×ÁÒÉÊÎÏÇÏ ÚÁ×ÅÒÛÅÎÉÑ ÒÁÂÏÔÙ &man.pkg.delete.1;, ÄÁÖÅ ÅÓÌÉ ËÁÔÁÌÏÇ ${PREFIX}/share/doc/gimp ÎÅ ÐÕÓÔ ÉÚ-ÚÁ ÔÏÇÏ, ÞÔÏ ÄÒÕÇÉÅ ÐÏÒÔÙ ÕÓÔÁÎÏ×ÉÌÉ ÓÀÄÁ ËÁËÉÅ-ÔÏ ÆÁÊÌÙ. óÏÚÄÁÎÉÅ ÐÕÓÔÙÈ ËÁÔÁÌÏÇÏ× ðÕÓÔÙÍ ËÁÔÁÌÏÇÁÍ, ÓÏÚÄÁ×ÁÅÍÙÍ ×Ï ×ÒÅÍÑ ÕÓÔÁÎÏ×ËÉ ÐÏÒÔÁ, ÎÕÖÎÏ ÏÓÏÂÏÅ ×ÎÉÍÁÎÉÅ. ïÎÉ ÎÅ ÂÕÄÕÔ ÓÏÚÄÁÎÙ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÐÁËÅÔÁ, ÐÏÔÏÍÕ ÞÔÏ ÐÁËÅÔÙ ÓÏÄÅÒÖÁÔ ÔÏÌØËÏ ÆÁÊÌÙ, Á &man.pkg.add.1; ÓÏÚÄÁÅÔ ÄÌÑ ÎÉÈ ËÁÔÁÌÏÇÉ ÐÏ ÍÅÒÅ ÎÁÄÏÂÎÏÓÔÉ. þÔÏÂÙ ÕÂÅÄÉÔØÓÑ, ÞÔÏ ÐÕÓÔÏÊ ËÁÔÁÌÏÇ ÓÏÚÄÁÅÔÓÑ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÐÁËÅÔÁ, ÄÏÂÁרÔÅ ÜÔÕ ÓÔÒÏËÕ × pkg-plist ÐÅÒÅÄ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ÓÔÒÏËÏÊ @dirrm: @exec mkdir -p %D/share/foo/templates ëÏÎÆÉÇÕÒÁÃÉÏÎÎÙÅ ÆÁÊÌÙ åÓÌÉ ×ÁÛ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÅ ÆÁÊÌÙ × ËÁÔÁÌÏÇ PREFIX/etc (ÉÌÉ ËÕÄÁ-ÔÏ ÅÝÅ), ÎÅ ÄÅÌÁÊÔÅ ÉÈ ÐÒÏÓÔÏÇÏ ÐÅÒÅÞÉÓÌÅÎÉÑ × ÆÁÊÌÅ pkg-plist. üÔÏ ÐÒÉ×ÅÄ£Ô Ë ÔÏÍÕ, ÞÔÏ ÐÏ ËÏÍÁÎÄÅ &man.pkg.delete.1; ÉÌÉ ÐÒÉ ÎÏ×ÏÊ ÕÓÔÁÎÏ×ËÅ ÆÁÊÌÙ, ÔÝÁÔÅÌØÎÏ ÏÔÒÅÄÁËÔÉÒÏ×ÁÎÎÙÅ É ÎÁÓÔÒÏÅÎÎÙÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ, ÂÕÄÕÔ ÕÎÉÞÔÏÖÅÎÙ. ÷ÍÅÓÔÏ ÜÔÏÇÏ ÕÓÔÁÎÏ×ÉÔÅ ÆÁÊÌ(Ù) Ó ÐÒÉÍÅÒÁÍÉ Ó ÒÁÓÛÉÒÅÎÉÅÍ filename.sample. úÁÔÅÍ ÓËÏÐÉÒÕÊÔÅ ÆÁÊÌ Ó ÐÒÉÍÅÒÏÍ ÎÁ ÍÅÓÔÏ ÎÁÓÔÏÑÝÅÇÏ ÆÁÊÌÁ ËÏÎÆÉÇÕÒÁÃÉÉ, ÅÓÌÉ ÔÁËÏ×ÏÊ ÅÝ£ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ. ðÒÉ ÄÅÉÎÓÔÁÌÌÑÃÉÉ ÕÄÁÌÑÊÔÅ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÔÏÌØËÏ × ÔÏÍ ÓÌÕÞÁÅ, ÅÓÌÉ ÏÎ ÉÄÅÎÔÉÞÅÎ ÆÁÊÌÕ Ó ÒÁÓÛÉÒÅÎÉÅÍ .sample. ÷ÁÍ ÎÕÖÎÏ ÕÐÒÁ×ÌÑÔØ ÜÔÉÍ × Makefile É × pkg-plist (ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÉÚ ÐÁËÅÔÁ). ðÒÉÍÅÒ ÞÁÓÔÉ Makefile: post-install: @if [ ! -f ${PREFIX}/etc/orbit.conf ]; then \ ${CP} -p ${PREFIX}/etc/orbit.conf.sample ${PREFIX}/etc/orbit.conf ; \ fi äÏÂÁרÔÅ ÐÏ ÔÒÉ ÓÔÒÏËÉ × pkg-plist ÄÌÑ ËÁÖÄÏÇÏ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÏÇÏ ÆÁÊÌÁ, ËÁË ÐÏËÁÚÁÎÏ ÎÉÖÅ: @unexec if cmp -s %D/etc/orbit.conf.sample %D/etc/orbit.conf; then rm -f %D/etc/orbit.conf; fi etc/orbit.conf.sample @exec if [ ! -f %D/etc/orbit.conf ] ; then cp -p %D/%F %B/orbit.conf; fi äÁÎÎÙÅ ÓÔÒÏËÉ Ñ×ÌÑÀÔÓÑ ÕÐÏÒÑÄÏÞÅÎÎÙÍÉ. îÁ ÜÔÁÐÅ ÕÄÁÌÅÎÉÑ ÆÁÊÌ Ó ÐÒÉÍÅÒÏÍ ÓÒÁ×ÎÉ×ÁÅÔÓÑ Ó ÒÁÂÏÞÉÍ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÍ ÆÁÊÌÏÍ. ðÏÌÎÏÅ ÓÏ×ÐÁÄÅÎÉÅ ÏÚÎÁÞÁÅÔ ÏÔÓÕÔÓÔ×ÉÅ ËÁËÉÈ-ÌÉÂÏ ÉÚÍÅÎÅÎÉÊ × ÒÁÂÏÞÅÍ ÆÁÊÌÅ ÓÏ ÓÔÏÒÏÎÙ ÐÏÌØÚÏ×ÁÔÅÌÑ, É ÓÌÅÄÏ×ÁÔÅÌØÎÏ ÜÔÏÔ ÆÁÊÌ ÍÏÖÅÔ ÂÙÔØ ÂÅÚÏÐÁÓÎÏ ÕÄÁÌ£Î. ôÁË ËÁË ÆÁÊÌ Ó ÐÒÉÍÅÒÏÍ ×Ó£ ÅÝ£ ÄÏÌÖÅÎ ÓÕÝÅÓÔ×Ï×ÁÔØ ÄÌÑ ÓÒÁ×ÎÅÎÉÑ, ÓÔÒÏËÁ @unexec ÓÌÅÄÕÅÔ ÐÅÒÅÄ ÉÍÅÎÅÍ ÆÁÊÌÁ Ó ÐÒÉÍÅÒÏÍ ËÏÎÆÉÇÕÒÁÃÉÉ. îÁ ÜÔÁÐÅ ÕÓÔÁÎÏ×ËÉ, ÅÓÌÉ ÒÁÂÏÞÉÊ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÏÔÓÕÔÓÔ×ÕÅÔ, ÏÎ ËÏÐÉÒÕÅÔÓÑ ÉÚ ÆÁÊÌÁ Ó ÐÒÉÍÅÒÏÍ. æÁÊÌ Ó ÐÒÉÍÅÒÏÍ ÏÂÑÚÁÔÅÌØÎÏ ÄÏÌÖÅÎ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎ ÄÏ ÏÐÅÒÁÃÉÉ ËÏÐÉÒÏ×ÁÎÉÑ, ÐÏÜÔÏÍÕ ÓÔÒÏËÁ @exec ÓÌÅÄÕÅÔ ÐÏÓÌÅ ÉÍÅÎÉ ÆÁÊÌÁ Ó ÐÒÉÍÅÒÏÍ ËÏÎÆÉÇÕÒÁÃÉÉ. äÌÑ ÐÏÌÕÞÅÎÉÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÇÏ ÏÔÌÁÄÏÞÎÏÇÏ ×Ù×ÏÄÁ ÎÁ ÜËÒÁÎ ÍÏÖÎÏ ×ÒÅÍÅÎÎÏ ÕÄÁÌÉÔØ ÐÁÒÁÍÅÔÒ -s ÉÚ ËÏÍÁÎÄÙ &man.cmp.1;. äÌÑ ÐÏÌÕÞÅÎÉÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÁÃÉÉ ÐÏ ÉÓÐÏÌØÚÏ×ÁÎÉÀ %D É ÐÒÏÞÉÈ ÍÁÒËÅÒÏ× ÐÏÄÓÔÁÎÏ×ËÉ ÏÂÒÁÔÉÔÅÓØ Ë ÓÔÒÁÎÉÃÅ óÐÒÁ×ÏÞÎÉËÁ &man.pkg.create.1;. åÓÌÉ ÓÕÝÅÓÔ×ÕÅÔ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÓÔÏÑÝÁÑ ÐÒÉÞÉÎÁ ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÒÁÂÏÞÉÊ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÕÂÅÒÉÔÅ ÓÔÒÏËÕ @exec ÉÚ pkg-plist É ÄÏÂÁרÔÅ ÓÏÏÂÝÅÎÉÅ, ÕËÁÚÙ×ÁÀÝÅÅ ÎÁ ÔÏ, ÞÔÏ ÐÏÌØÚÏ×ÁÔÅÌØ ÏÂÑÚÁÎ ÓËÏÐÉÒÏ×ÁÔØ É ÏÔÒÅÄÁËÔÉÒÏ×ÁÔØ ÜÔÏÔ ÆÁÊÌ ÐÅÒÅÄ ÔÅÍ, ËÁË ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÎÁÞÎ£Ô ÒÁÂÏÔÁÔØ. äÉÎÁÍÉÞÅÓËÉÊ ÉÌÉ ÓÔÁÔÉÞÅÓËÉÊ ÓÐÉÓÏË ÕÐÁËÏ×ËÉ óÔÁÔÉÞÅÓËÉÊ ÓÐÉÓÏË ÕÐÁËÏ×ËÉ ÜÔÏ ÓÐÉÓÏË ÕÐÁËÏ×ËÉ, ËÏÔÏÒÙÊ ÄÏÓÔÕÐÅÎ × ëÏÌÌÅËÃÉÉ ðÏÒÔÏ× ÉÌÉ ËÁË ÆÁÊÌ pkg-plist (Ó ÐÏÄÓÔÁÎÏ×ËÏÊ ÐÅÒÅÍÅÎÎÙÈ ÉÌÉ ÂÅÚ ÎÅ£), ÉÌÉ ËÁË ×ÓÔÒÏÅÎÎÙÊ × Makefile ÐÏÓÒÅÄÓÔ×ÏÍ PLIST_FILES É PLIST_DIRS. äÁÖÅ ÅÓÌÉ ÓÏÄÅÒÖÉÍÏÅ Ñ×ÌÑÅÔÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÏÒÏÖÄÁÅÍÙÍ ÐÒÉ ÐÏÍÏÝÉ ÉÎÓÔÒÕÍÅÎÔÁ ÉÌÉ × ÒÅÚÕÌØÔÁÔÅ ×ÙÐÏÌÎÅÎÉÑ ÃÅÌÉ × Makefile ÄÏ ×ËÌÀÞÅÎÉÑ × ëÏÌÌÅËÃÉÀ ðÏÒÔÏ× ËÏÍÍÉÔÔÅÒÏÍ, ÔÏ ÓÐÉÓÏË ×Ó£ ÅÝ£ ÂÕÄÅÔ ÓÞÉÔÁÔØÓÑ ÓÔÁÔÉÞÅÓËÉÍ, ÐÏÓËÏÌØËÕ ÅÇÏ ÍÏÖÎÏ ÕÚÎÁÔØ ÂÅÚ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÓËÁÞÉ×ÁÎÉÑ ÉÌÉ ËÏÍÐÉÌÑÃÉÉ ÄÉÓÔÒÉÂÕÔÉ×Á. äÉÎÁÍÉÞÅÓËÉÊ ÓÐÉÓÏË ÕÐÁËÏ×ËÉ ÜÔÏ ÓÐÉÓÏË ÕÐÁËÏ×ËÉ, ËÏÔÏÒÙÊ ÐÏÌÕÞÁÅÔÓÑ ×Ï ×ÒÅÍÑ ËÏÍÐÉÌÑÃÉÉ ÐÏÒÔÁ É ÓÔÒÏÉÔÓÑ ÎÁ ÏÓÎÏ×Å ÕÓÔÁÎÁ×ÌÉ×ÁÅÍÙÈ ÆÁÊÌÏ× É ËÁÔÁÌÏÇÏ×. õÚÎÁÔØ ÔÁËÏÊ ÓÐÉÓÏË ÎÅ×ÏÚÍÏÖÎÏ ÄÏ ÔÏÇÏ, ËÁË ÉÓÈÏÄÎÙÊ ËÏÄ ÐÏÒÔÉÒÕÅÍÏÇÏ ÐÒÉÌÏÖÅÎÉÑ ÂÕÄÅÔ ÓËÁÞÅÎ É ÓËÏÍÐÉÌÉÒÏ×ÁÎ, ÉÌÉ ÐÏÓÌÅ ÚÁÐÕÓËÁ make clean. èÏÔÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÄÉÎÁÍÉÞÅÓËÉÈ ÓÐÉÓÏË ÕÐÁËÏ×ËÉ ÎÅ ÚÁÐÒÅÝÅÎÏ, ÓÏÐÒÏ×ÏÖÄÁÀÝÉÅ ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÁÔÉÞÅÓËÉÅ ÓÐÉÓËÉ ÕÐÁËÏ×ËÉ ×ÅÚÄÅ, ÇÄÅ ÜÔÏ ×ÏÚÍÏÖÎÏ, ÐÏÓËÏÌØËÕ ÜÔÏ ÐÏÚ×ÏÌÑÅÔ ÐÏÌØÚÏ×ÁÔÅÌÑÍ ×ÙÐÏÌÎÑÔØ &man.grep.1; ÐÏ ÄÏÓÔÕÐÎÙÍ ÐÏÒÔÁÍ ÄÌÑ ÏÂÎÁÒÕÖÅÎÉÑ, ÎÁÐÒÉÍÅÒ, ËÏÔÏÒÙÊ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÏÐÒÅÄÅÌÅÎÎÙÊ ÆÁÊÌ. äÉÎÁÍÉÞÅÓËÉÅ ÓÐÉÓËÉ ÄÏÌÖÎÙ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ × ÏÓÎÏ×ÎÏÍ ÄÌÑ ÓÌÏÖÎÙÈ ÐÏÒÔÏ×, ÄÌÑ ËÏÔÏÒÙÈ ÉÚÍÅÎÅÎÉÑ × ÓÐÉÓËÅ ÕÐÁËÏ×ËÉ ËÁÒÄÉÎÁÌØÎÙÍ ÏÂÒÁÚÏÍ ÏÓÎÏ×ÁÎÙ ÎÁ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ ×ÏÚÍÏÖÎÏÓÔÑÈ ÐÏÒÔÁ (É, ÔÁËÉÍ ÏÂÒÁÚÏÍ, ÄÅÌÁÑ ÓÏÐÒÏ×ÏÖÄÅÎÉÅ ÓÔÁÔÉÞÅÓËÉÈ ÓÐÉÓËÏ× ÕÐÁËÏ×ËÉ ÎÅ×ÏÚÍÏÖÎÙÍ), ÉÌÉ ÐÏÒÔÏ×, ËÏÔÏÒÙÅ ÉÚÍÅÎÑÀÔ ÓÐÉÓÏË ÕÐÁËÏ×ËÉ ÎÁ ÏÓÎÏ×Å ×ÅÒÓÉÉ ÉÓÐÏÌØÚÕÅÍÏÇÏ ÉÍ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ (ÎÁÐÒÉÍÅÒ, ÐÏÒÔÙ, ËÏÔÏÒÙÅ ÐÏÒÏÖÄÁÀÔ ÄÏËÕÍÅÎÔÙ ÐÒÉ ÐÏÍÏÝÉ Javadoc). óÏÐÒÏ×ÏÖÄÁÀÝÉÍ, ËÏÔÏÒÙÅ ÐÒÅÄÐÏÞÉÔÁÀÔ ÄÉÎÁÍÉÞÅÓËÉÅ ÓÐÉÓËÉ ÕÐÁËÏ×ËÉ, ÒÅËÏÍÅÎÄÕÅÔÓÑ ÄÏÂÁ×ÌÑÔØ × Ó×ÏÉ ÐÏÒÔÙ ÎÏ×ÕÀ ÃÅÌØ, ËÏÔÏÒÁÑ ÐÒÏÉÚ×ÏÄÉÔ ÆÁÊÌ pkg-plist, ÞÔÏÂÙ ÐÏÌØÚÏ×ÁÔÅÌÉ ÍÏÇÌÉ ÉÚÕÞÁÔØ ÓÏÄÅÒÖÉÍÏÅ. á×ÔÏÍÁÔÉÞÅÓËÏÅ ÓÏÚÄÁÎÉÅ ÓÐÉÓËÁ ÕÐÁËÏ×ËÉ ðÅÒ×ÙÍ ÄÅÌÏÍ ÕÂÅÄÉÔÅÓØ, ÞÔÏ ×ÁÛ ÐÏÒÔ ÐÒÁËÔÉÞÅÓËÉ ÐÏÌÎÏÓÔØÀ ÚÁ×ÅÒÛ£Î É ÏÓÔÁÌÏÓØ ÓÏÚÄÁÔØ ÔÏÌØËÏ pkg-plist. äÁÌÅÅ ÓÏÚÄÁÊÔÅ ×ÒÅÍÅÎÎÏÅ ÄÅÒÅ×Ï ËÁÔÁÌÏÇÏ×, ËÕÄÁ ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎ ×ÁÛ ÐÏÒÔ, É ÕÓÔÁÎÏ×ÉÔÅ ×ÓÅ ÚÁ×ÉÓÉÍÏÓÔÉ. &prompt.root; mkdir /var/tmp/`make -V PORTNAME` &prompt.root; mtree -U -f `make -V MTREE_FILE` -d -e -p /var/tmp/`make -V PORTNAME` &prompt.root; make depends PREFIX=/var/tmp/`make -V PORTNAME` óÏÈÒÁÎÉÔÅ ÓÔÒÕËÔÕÒÕ ËÁÔÁÌÏÇÏ× × ÎÏ×ÏÍ ÆÁÊÌÅ. &prompt.root; (cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort > OLD-DIRS óÏÚÄÁÊÔÅ ÐÕÓÔÏÊ ÆÁÊÌ pkg-plist: &prompt.root; :>pkg-plist åÓÌÉ ×ÁÛ ÐÏÒÔ ÐÒÉÎÉÍÁÅÔ ×Ï ×ÎÉÍÁÎÉÅ PREFIX (Á ÏÎ ÄÏÌÖÅÎ ÜÔÏ ÄÅÌÁÔØ), ÔÏ ÔÏÇÄÁ ×Ù ÍÏÖÅÔÅ ÕÓÔÁÎÏ×ÉÔØ ÐÏÒÔ É ÓÏÚÄÁÔØ ÓÐÉÓÏË ÕÐÁËÏ×ËÉ. &prompt.root; make install PREFIX=/var/tmp/`make -V PORTNAME` &prompt.root; (cd /var/tmp/`make -V PORTNAME` && find -d * \! -type d) | sort > pkg-plist ëÒÏÍÅ ÔÏÇÏ, × ÓÐÉÓÏË ÕÐÁËÏ×ËÉ ×Ù ÄÏÌÖÎÙ ÄÏÂÁ×ÉÔØ ×ÓÅ ×ÎÏר ÓÏÚÄÁÎÎÙÅ ËÁÔÁÌÏÇÉ. &prompt.root; (cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort | comm -13 OLD-DIRS - | sort -r | sed -e 's#^#@dirrm #' >> pkg-plist é ÎÁËÏÎÅÃ, ×ÁÍ ÎÕÖÎÏ ×ÒÕÞÎÕÀ ÏÔÛÌÉÆÏ×ÁÔØ ÓÐÉÓÏË ÕÐÁËÏ×ËÉ; ÅÇÏ ÓÏÚÄÁÎÉÅ Á×ÔÏÍÁÔÉÚÉÒÏ×ÁÎÏ ÎÅ ÐÏÌÎÏÓÔØÀ. óÔÒÁÎÉÃÙ ÓÐÒÁ×ÏÞÎÏÊ ÓÉÓÔÅÍÙ ÄÏÌÖÎÙ ÂÙÔØ ÐÅÒÅÞÉÓÌÅÎÙ × ÆÁÊÌÅ Makefile ÐÏÒÔÁ × ÐÅÒÅÍÅÎÎÙÈ MANn, Á ÎÅ × ÓÐÉÓËÅ ÕÐÁËÏ×ËÉ. ðÏÌØÚÏ×ÁÔÅÌØÓËÉÅ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÅ ÆÁÊÌÙ ÄÏÌÖÎÙ ÂÙÔØ ÕÄÁÌÅÎÙ ÉÌÉ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎÙ ËÁË filename.sample. æÁÊÌ info/dir ×ËÌÀÞÁÔØ × ÓÐÉÓÏË ÎÅ ÎÕÖÎÏ, ÎÏ ÄÏÌÖÎÙ ÂÙÔØ ÄÏÂÁ×ÌÅÎÙ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÓÔÒÏÞËÉ install-info, ÔÁË, ËÁË ÜÔÏ ÏÐÉÓÁÎÏ × ÒÁÚÄÅÌÅ Ï ÆÁÊÌÁÈ × ÆÏÒÍÁÔÅ info. ÷ÓÅ ÂÉÂÌÉÏÔÅËÉ, ÕÓÔÁÎÁ×ÌÉ×ÁÅÍÙÅ ÐÏÒÔÏÍ, ÄÏÌÖÎÙ ÂÙÔØ ÐÅÒÅÞÉÓÌÅÎÙ ÔÁË, ËÁË ÜÔÏ ÏÐÉÓÁÎÏ × ÒÁÚÄÅÌÅ Ï ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅËÁÈ. ëÁË ÁÌØÔÅÒÎÁÔÉ×Õ, ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓËÒÉÐÔ plist ÉÚ /usr/ports/Tools/scripts/ ÄÌÑ Á×ÔÏÍÁÔÉÞÅÓËÏÇÏ ÐÏÓÔÒÏÅÎÉÑ ÓÐÉÓËÁ ÕÐÁËÏ×ËÉ. óËÒÉÐÔ plist - ÜÔÏ ÓÃÅÎÁÒÉÊ ÎÁ Ruby, ËÏÔÏÒÙÊ Á×ÔÏÍÁÔÉÚÉÒÕÅÔ ÂÏÌØÛÉÎÓÔ×Ï ÒÕÞÎÙÈ ÏÐÅÒÁÃÉÊ, ÉÚÌÏÖÅÎÎÙÈ × ÐÒÅÄÙÄÕÝÅÍ ÐÁÒÁÇÒÁÆÅ. ðÅÒ×ÙÊ ÛÁÇ ÔÁËÏÊ ÖÅ ËÁË ×ÙÛÅ: ×ÚÑÔØ ÐÅÒ×ÙÅ ÔÒÉ ÓÔÒÏËÉ, mkdir, mtree É make depends. úÁÔÅÍ ÓÏÂÒÁÔØ É ÕÓÔÁÎÏ×ÉÔØ ÐÏÒÔ: &prompt.root; make install PREFIX=/var/tmp/`make -V PORTNAME` é ÐÏÚ×ÏÌÉÔØ plist ÓÏÚÄÁÔØ ÆÁÊÌ pkg-plist: &prompt.root; /usr/ports/Tools/scripts/plist -Md -m `make -V MTREE_FILE` /var/tmp/`make -V PORTNAME` > pkg-plist óÐÉÓÏË ÕÐÁËÏ×ËÉ ×Ó£ ÅÝ£ ÄÏÌÖÅÎ ÂÙÔØ ÐÏÄÞÉÝÅÎ ×ÒÕÞÎÕÀ ËÁË ÏÐÉÓÁÎÏ ×ÙÛÅ. äÌÑ ÐÅÒ×ÏÎÁÞÁÌØÎÏÇÏ ÓÏÚÄÁÎÉÑ pkg-plist ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÒÕÇÏÊ ÉÎÓÔÒÕÍÅÎÔ ports-mgmt/genplist. ëÁË É Ó ÐÒÏÞÉÍÉ Á×ÔÏÍÁÔÉÚÉÒÏ×ÁÎÎÙÍÉ ÉÎÓÔÒÕÍÅÎÔÁÍÉ, ÐÏÌÕÞÁÅÍÙÊ pkg-plist ÓÌÅÄÕÅÔ ÐÒÏ×ÅÒÉÔØ É ÐÒÉ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÏÔÒÅÄÁËÔÉÒÏ×ÁÔØ ×ÒÕÞÎÕÀ. æÁÊÌÙ <filename>pkg-<replaceable>*</replaceable></filename> åÓÔØ ÎÅÓËÏÌØËÏ ÐÒÉ£ÍÏ× ÒÁÂÏÔÙ Ó ÆÁÊÌÁÍÉ pkg-*, ËÏÔÏÒÙÅ ÍÙ ÅÝ£ ÎÅ ÏÐÉÓÁÌÉ, ÎÏ ÏÎÉ ÉÎÏÇÄÁ ÍÏÇÕÔ ÂÙÔØ ÏÞÅÎØ ËÓÔÁÔÉ. <filename>pkg-message</filename> åÓÌÉ ×ÁÍ ÎÕÖÎÏ ×Ù×ÅÓÔÉ ÓÏÏÂÝÅÎÉÅ ÄÌÑ ÞÅÌÏ×ÅËÁ, ÕÓÔÁÎÁ×ÌÉ×ÁÀÝÅÇÏ ÐÒÉÌÏÖÅÎÉÅ, ÔÏ ×Ù ÍÏÖÅÔÅ ÐÏÍÅÓÔÉÔØ ÓÏÏÂÝÅÎÉÅ × ÆÁÊÌ pkg-message. üÔÁ ×ÏÚÍÏÖÎÏÓÔØ ÞÁÓÔÏ ÏËÁÚÙ×ÁÅÔÓÑ ÐÏÌÅÚÎÏÊ ÄÌÑ ×Ù×ÏÄÁ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÛÁÇÏ× ÕÓÔÁÎÏ×ËÉ, ËÏÔÏÒÙÅ ÎÕÖÎÏ ÐÒÅÄÐÒÉÎÑÔØ ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄÙ &man.pkg.add.1;, ÉÌÉ ÄÌÑ ×Ù×ÏÄÁ ÉÎÆÏÒÍÁÃÉÉ Ï ÌÉÃÅÎÚÉÒÏ×ÁÎÉÉ. åÓÌÉ ÄÏÌÖÎÙ ×Ù×ÏÄÉÔØÓÑ ÎÅËÏÔÏÒÙÅ ÓÔÒÏËÉ Ï knobs ×ÒÅÍÅÎÉ ÐÏÓÔÒÏÅÎÉÑ ÉÌÉ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ, ÉÓÐÏÌØÚÕÊÔÅ ECHO_MSG. æÁÊÌ pkg-message ÔÏÌØËÏ ÄÌÑ ÐÏÓÌÅÕÓÔÁÎÏ×ÏÞÎÙÈ ÛÁÇÏ×. ôÁËÖÅ ÓÌÅÄÕÅÔ ÉÍÅÔØ × ×ÉÄÕ ÒÁÚÌÉÞÉÅ ÍÅÖÄÕ ECHO_MSG É ECHO_CMD. ðÅÒ×ÏÅ ÐÒÅÄÎÁÚÎÁÞÅÎÏ ÄÌÑ ×Ù×ÏÄÁ ÎÁ ÜËÒÁÎ ÉÎÆÏÒÍÁÃÉÏÎÎÏÇÏ ÔÅËÓÔÁ, Á ×ÔÏÒÏÅ ÄÌÑ ËÏÎ×ÅÊÅÒÁ ËÏÍÁÎÄ: update-etc-shells: @${ECHO_MSG} "updating /etc/shells" @${CP} /etc/shells /etc/shells.bak @( ${GREP} -v ${PREFIX}/bin/bash /etc/shells.bak; \ ${ECHO_CMD} ${PREFIX}/bin/bash) >/etc/shells @${RM} /etc/shells.bak æÁÊÌ pkg-message ÎÅ ÎÕÖÎÏ ÄÏÂÁ×ÌÑÔØ × pkg-plist. é ÏÎ ÎÅ ÂÕÄÅÔ Á×ÔÏÍÁÔÉÞÅÓËÉ ×Ù×ÏÄÉÔØÓÑ, ÅÓÌÉ ÐÏÌØÚÏ×ÁÔÅÌØ ÉÓÐÏÌØÚÕÅÔ ÐÏÒÔ, Á ÎÅ ÐÁËÅÔ, ÔÁË ÞÔÏ ×Ù ÄÏÌÖÎÙ ÂÕÄÅÔÅ ÓÁÍÉ ×Ù×ÏÄÉÔØ ÅÇÏ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ÃÅÌÉ post-install. <filename>pkg-install</filename> åÓÌÉ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÂÉÎÁÒÎÏÇÏ ÐÁËÅÔÁ ÐÏ ËÏÍÁÎÄÅ &man.pkg.add.1; ×ÁÛÅÍÕ ÐÏÒÔÕ ÎÕÖÎÏ ×ÙÐÏÌÎÉÔØ ËÁËÉÅ-ÔÏ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÄÅÊÓÔ×ÉÑ ÉÌÉ ËÏÍÁÎÄÙ, ÔÏ ×Ù ÍÏÖÅÔÅ ÓÄÅÌÁÔØ ÜÔÏ Ó ÐÏÍÏÝØÀ ÓËÒÉÐÔÁ pkg-install. üÔÏÔ ÓËÒÉÐÔ ÂÕÄÅÔ Á×ÔÏÍÁÔÉÞÅÓËÉ ÄÏÂÁ×ÌÅÎ Ë ÐÁËÅÔÕ, É ÂÕÄÅÔ Ä×ÁÖÄÙ ÚÁÐÕÓËÁÔØÓÑ ÐÏ ËÏÍÁÎÄÅ &man.pkg.add.1;: ÐÅÒ×ÙÊ ÒÁÚ × ×ÉÄÅ ${SH} pkg-install ${PKGNAME} PRE-INSTALL, Á ×ÔÏÒÏÊ ÒÁÚ ËÁË ${SH} {PKGNAME} POST-INSTALL. äÌÑ ÒÁÓÐÏÚÎÁ×ÁÎÉÑ ÔÏÇÏ, × ËÁËÏÍ ÒÅÖÉÍÅ ÚÁÐÕÝÅÎ ÓËÒÉÐÔ, ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÁÒÁÍÅÔÒ $2. ðÅÒÅÍÅÎÎÁÑ ÏËÒÕÖÅÎÉÑ PKG_PREFIX ÂÕÄÅÔ ÐÒÉÎÉÍÁÔØ ÚÎÁÞÅÎÉÅ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ ËÁÔÁÌÏÇÕ, × ËÏÔÏÒÙÊ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÐÁËÅÔ. äÏÐÏÌÎÉÔÅÌØÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÎÁÈÏÄÉÔÓÑ ÎÁ ÓÔÒÁÎÉÃÅ óÐÒÁ×ÏÞÎÉËÁ Ï ËÏÍÁÎÄÅ &man.pkg.add.1;. üÔÏÔ ÓËÒÉÐÔ ÎÅ ÚÁÐÕÓËÁÅÔÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ, ÅÓÌÉ ×Ù ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÅ ÐÏÒÔ ËÏÍÁÎÄÏÊ make install. åÓÌÉ ÖÅ ×ÁÍ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÎÅÏÂÈÏÄÉÍÏ ÅÇÏ ÚÁÐÕÓÔÉÔØ, ÔÏ ÚÁÐÕÓÔÉÔÅ ÅÇÏ Ñ×ÎÏ ÉÚ ÆÁÊÌÁ Makefile ÐÏÒÔÁ ÓÔÒÏËÏÊ ×ÉÄÁ PKG_PREFIX=${PREFIX} ${SH} $ {PKGINSTALL}${PKGNAME} PRE-INSTALL. <filename>pkg-deinstall</filename> üÔÏÔ ÓËÒÉÐÔ ×ÙÚÙ×ÁÅÔÓÑ ÐÒÉ ÕÄÁÌÅÎÉÉ ÐÁËÅÔÁ. üÔÏÔ ÓËÒÉÐÔ ÕÔÉÌÉÔÏÊ &man.pkg.delete.1; ÂÕÄÅÔ ÚÁÐÕÓËÁÔØÓÑ Ä×ÁÖÄÙ. ðÅÒ×ÙÊ ÒÁÚ ËÁË ${SH} pkg-deinstall ${PKGNAME} DEINSTALL, Á ×ÔÏÒÏÊ ÒÁÚ ËÁË ${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL. <filename>pkg-req</filename> åÓÌÉ ×ÁÛÅÍÕ ÐÏÒÔÕ ÎÕÖÎÏ ÏÐÒÅÄÅÌÑÔØ, ÄÏÌÖÅÎ ÌÉ ÏÎ ÕÓÔÁÎÁ×ÌÉ×ÁÔØÓÑ ÉÌÉ ÎÅÔ, ÔÏ ×Ù ÍÏÖÅÔÅ ÓÏÚÄÁÔØ ÓËÒÉÐÔ ÎÅÏÂÈÏÄÉÍÏÓÔÉ pkg-req. ïÎ ÂÕÄÅÔ ×ÙÚ×ÁÎ Á×ÔÏÍÁÔÉÞÅÓËÉ × ÍÏÍÅÎÔ ÕÓÔÁÎÏ×ËÉ/ÕÄÁÌÅÎÉÑ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÔÏÇÏ, ÄÏÌÖÎÙ ÌÉ ÏÎÉ ÒÅÁÌØÎÏ ×ÙÐÏÌÎÑÔØÓÑ. óËÒÉÐÔ ÂÕÄÅÔ ÚÁÐÕÝÅÎ × ÐÒÏÃÅÓÓÅ ÕÓÔÁÎÏ×ËÉ ËÏÍÁÎÄÏÊ &man.pkg.add.1;, ËÁË pkg-req ${PKGNAME} INSTALL. ÷ ÐÒÏÃÅÓÓÅ ÕÄÁÌÅÎÉÑ ÏÎ ÂÕÄÅÔ ÚÁÐÕÝÅÎ ËÏÍÁÎÄÏÊ &man.pkg.delete.1; ËÁË pkg-req ${PKGNAME} DEINSTALL. éÚÍÅÎÅÎÉÅ ÉͣΠÆÁÊÌÏ× <filename>pkg-<replaceable>*</replaceable></filename> ÷ÓÅ ÉÍÅÎÁ ÆÁÊÌÏ× pkg-* ÏÐÒÅÄÅÌÑÀÔÓÑ Ó ÐÏÍÏÝØÀ ÐÅÒÅÍÅÎÎÙÈ, ÔÁË ÞÔÏ ×Ù ÍÏÖÅÔÅ ÉÚÍÅÎÉÔØ ÉÈ, ÅÓÌÉ ÜÔÏ ÎÕÖÎÏ, × ×ÁÛÅÍ ÆÁÊÌÅ Makefile. üÔÏ ÏÓÏÂÅÎÎÏ ÐÏÌÅÚÎÏ, ÅÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ ÏÄÎÉ É ÔÅ ÖÅ ÆÁÊÌÙ pkg-* ÓÏ×ÍÅÓÔÎÏ ÍÅÖÄÕ ÎÅÓËÏÌØËÉÍÉ ÐÏÒÔÁÍÉ ÉÌÉ ÐÉÛÅÔÅ × ÏÄÉÎ ÉÚ ×ÙÛÅÐÅÒÅÞÉÓÌÅÎÎÙÈ ÆÁÊÌÏ× (× ÇÌÁ×Å Ï ÚÁÐÉÓÉ × ËÁÔÁÌÏÇÉ, ÏÔÌÉÞÎÙÅ ÏÔ WRKDIR ÏÂßÑÓÎÅÎÏ, ÐÏÞÅÍÕ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÏÓÕÝÅÓÔ×ÌÑÔØ ÚÁÐÉÓØ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × ÆÁÊÌÙ pkg-*. ÷ÏÔ ÓÐÉÓÏË ÉͣΠÐÅÒÅÍÅÎÎÙÈ É ÉÈ ÚÎÁÞÅÎÉÊ ÐÏ ÕÍÏÌÞÁÎÉÀ. (úÎÁÞÅÎÉÅ PKGDIR ÐÏ ÕÍÏÌÞÁÎÉÀ ÒÁ×ÎÏ ${MASTERDIR}.) ðÅÒÅÍÅÎÎÁÑ úÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ DESCR ${PKGDIR}/pkg-descr PLIST ${PKGDIR}/pkg-plist PKGINSTALL ${PKGDIR}/pkg-install PKGREQ ${PKGDIR}/pkg-req PKGMESSAGE ${PKGDIR}/pkg-message ðÏÖÁÌÕÊÓÔÁ, ÉÚÍÅÎÑÊÔÅ ÚÎÁÞÅÎÉÑ ÜÔÉÈ ÐÅÒÅÍÅÎÎÙÈ, Á ÎÅ ÐÅÒÅÏÐÒÅÄÅÌÑÊÔÅ PKG_ARGS. åÓÌÉ ×Ù ÉÚÍÅÎÉÔÅ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÙÈ PKG_ARGS, ÔÏ ÜÔÉ ÆÁÊÌÙ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÉÚ ÐÏÒÔÁ ÂÕÄÕÔ ÕÓÔÁÎÏ×ÌÅÎÙ × ËÁÔÁÌÏÇ /var/db/pkg ÎÅËÏÒÒÅËÔÎÏ. éÓÐÏÌØÚÏ×ÁÎÉÅ <makevar>SUB_FILES</makevar> É <makevar>SUB_LIST</makevar> ðÅÒÅÍÅÎÎÙÅ SUB_FILES É SUB_LIST ÐÏÄÈÏÄÑÔ ÄÌÑ ÚÁÄÁÎÉÑ × ÆÁÊÌÁÈ ÐÏÒÔÁ ÄÉÎÁÍÉÞÅÓËÉÈ ÚÎÁÞÅÎÉÊ, ÔÁËÉÈ ËÁË PREFIX ÕÓÔÁÎÏ×ËÉ × pkg-message. ÷ ÐÅÒÅÍÅÎÎÏÊ SUB_FILES ÕËÁÚÙ×ÁÅÔÓÑ ÐÅÒÅÞÅÎØ ÆÁÊÌÏ× ÄÌÑ Á×ÔÏÍÁÔÉÞÅÓËÏÇÏ ÉÚÍÅÎÅÎÉÑ. ëÁÖÄÙÊ file ÉÚ ÐÅÒÅÞÎÑ SUB_FILES ÏÂÑÚÁÎ ÉÍÅÔØ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ file.in, ÐÒÉÓÕÔÓÔ×ÕÀÝÉÊ × FILESDIR. éÚÍÅÎÅÎÎÁÑ ×ÅÒÓÉÑ ÂÕÄÅÔ ÓÏÚÄÁÎÁ × WRKDIR. æÁÊÌÙ, ÏÐÒÅÄÅÌÅÎÎÙÅ × ËÁÞÅÓÔ×Å ÚÎÁÞÅÎÉÑ USE_RC_SUBR (ÉÌÉ ÕÓÔÁÒÅ×ÛÅÇÏ USE_RCORDER), Á×ÔÏÍÁÔÉÞÅÓËÉ ÄÏÂÁ×ÌÑÀÔÓÑ × SUB_FILES. äÌÑ ÆÁÊÌÏ× pkg-message, pkg-install, pkg-deinstall É pkg-req ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÁÑ ÐÅÒÅÍÅÎÎÁÑ Makefile, ÕËÁÚÙ×ÁÀÝÁÑ ÎÁ ÏÂÒÁÂÏÔÁÎÎÕÀ ×ÅÒÓÉÀ. ðÅÒÅÍÅÎÎÁÑ SUB_LIST ÓÏÄÅÒÖÉÔ ÐÅÒÅÞÅÎØ ÐÁÒ VAR=VALUE. ÷ ËÁÖÄÏÍ ÆÁÊÌÅ ÉÚ SUB_FILES ÄÌÑ ËÁÖÄÏÊ ÐÁÒÙ ÂÕÄÅÔ ÐÒÏÉÚ×ÅÄÅÎÁ ÚÁÍÅÎÁ %%VAR%% ÎÁ VALUE. îÅËÏÔÏÒÙÅ ÏÂÝÉÅ ÐÁÒÙ ÏÐÒÅÄÅÌÑÀÔÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ: PREFIX, LOCALBASE, DATADIR, DOCSDIR, EXAMPLESDIR. ìÀÂÁÑ ÓÔÒÏËÁ, ÎÁÞÉÎÁÀÝÁÑÓÑ Ó @comment, ÂÕÄÅÔ ÕÄÁÌÅÎÁ ÉÚ ËÏÎÅÞÎÏÇÏ ÆÁÊÌÁ ÐÏÓÌÅ ÐÏÄÓÔÁÎÏ×ËÉ ÐÅÒÅÍÅÎÎÏÊ . ÷ ÓÌÅÄÕÀÝÅÍ ÐÒÉÍÅÒÅ × pkg-message ÂÕÄÅÔ ÓÄÅÌÁÎÁ ÚÁÍÅÎÁ %%ARCH%% ÎÁ ÓÉÓÔÅÍÎÕÀ ÁÒÈÉÔÅËÔÕÒÕ: SUB_FILES= pkg-message SUB_LIST= ARCH=${ARCH} ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ × ÜÔÏÍ ÐÒÉÍÅÒÅ × FILESDIR ÏÂÑÚÁÔÅÌØÎÏ ÓÕÝÅÓÔ×Ï×ÁÎÉÅ ÆÁÊÌÁ pkg-message.in. ðÒÉÍÅÒ ÈÏÒÏÛÅÇÏ pkg-message.in: Now it's time to configure this package. Copy %%PREFIX%%/share/examples/putsy/%%ARCH%%.conf into your home directory as .putsy.conf and edit it. ôÅÓÔÉÒÏ×ÁÎÉÅ ×ÁÛÅÇÏ ÐÏÒÔÁ úÁÐÕÓË <command>make describe</command> îÅËÏÔÏÒÙÅ ÕÔÉÌÉÔÙ &os; ÄÌÑ ÓÏÐÒÏ×ÏÖÄÅÎÉÑ ÐÏÒÔÏ×, ÎÁÐÒÉÍÅÒ, &man.portupgrade.1;, ÏÐÉÒÁÀÔÓÑ ÎÁ ÂÁÚÕ ÄÁÎÎÙÈ Ó ÉÍÅÎÅÍ /usr/ports/INDEX, × ËÏÔÏÒÏÊ ÏÔÓÌÅÖÉ×ÁÀÔÓÑ ÔÁËÉÅ ÈÁÒÁËÔÅÒÉÓÔÉËÉ ÐÏÒÔÏ×, ËÁË ÉÈ ÚÁ×ÉÓÉÍÏÓÔÉ. æÁÊÌ INDEX ÓÏÚÄÁ£ÔÓÑ ÐÒÉ ÐÏÍÏÝÉ ports/Makefile ×ÅÒÈÎÅÇÏ ÕÒÏ×ÎÑ ÐÏ ËÏÍÁÎÄÅ make index, ÓÐÕÓËÁÀÝÅÊÓÑ × ÐÏÄËÁÔÁÌÏÇ ËÁÖÄÏÇÏ ÐÏÒÔÁ É ×ÙÐÏÌÎÑÀÝÅÊ × Î£Í make describe. ôÁËÉÍ ÏÂÒÁÚÏÍ, ÅÓÌÉ ×ÙÐÏÌÎÅÎÉÅ make describe Ó ËÁËÉÍ-ÌÉÂÏ ÐÏÒÔÏÍ ÚÁ×ÅÒÛÉÔÓÑ ÎÅÕÄÁÞÎÏ, ÔÏ ÎÉËÏÍÕ ÎÅ ÕÄÁÓÔÓÑ ÓÏÚÄÁÔØ INDEX, ÐÒÉ ÜÔÏÍ ÍÎÏÇÏ ÌÀÄÅÊ ×ÓËÏÒÅ ÓÔÁÎÕÔ ÎÅÓÞÁÓÔÎÙ. ÷ÏÚÍÏÖÎÏÓÔØ ÇÅÎÅÒÉÒÏ×ÁÔØ ÜÔÏÔ ÆÁÊÌ ÏÞÅÎØ ×ÁÖÎÁ ×ÎÅ ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÔÏÇÏ, ËÁËÉÅ ÐÁÒÁÍÅÔÒÙ ÐÒÉÓÕÔÓÔ×ÕÀÔ × make.conf, ÐÏÜÔÏÍÕ, ÐÏÖÁÌÕÊÓÔÁ, ÉÚÂÅÇÁÊÔÅ, ÔÁËÉÈ ×ÅÝÅÊ, ËÁË ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÄÅËÌÁÒÁÃÉÉ .error, ËÏÇÄÁ (Ë ÐÒÉÍÅÒÕ) ÔÒÅÂÏ×ÁÎÉÑ Ë ÚÁ×ÉÓÉÍÏÓÔÉ ÎÅ ÂÙÌÏ ÕÄÏ×ÌÅÔ×ÏÒÅÎÏ. (óÍÏÔÒÉÔÅ .) åÓÌÉ ËÏÍÁÎÄÁ make describe ×ÙÄÁ£Ô ÓÔÒÏÞËÕ, Á ÎÅ ÏÛÉÂËÕ, ÔÏ ÄÌÑ ×ÁÓ ÜÔÏ ÐÒÏÊÄ£Ô ÂÅÚÂÏÌÅÚÎÅÎÎÏ. ïÂÒÁÔÉÔÅÓØ Ë ÆÁÊÌÕ bsd.port.mk, ÞÔÏÂÙ ×ÙÑÓÎÉÔØ ÚÎÁÞÅÎÉÅ ×ÙÄÁ×ÁÅÍÙÈ ÓÔÒÏË. úÁÍÅÔØÔÅ ÔÁËÖÅ, ÞÔÏ ÚÁÐÕÓË ÐÏÓÌÅÄÎÅÊ ×ÅÒÓÉÉ portlint (ËÁË ÕËÁÚÁÎÏ × ÓÌÅÄÕÀÝÅÍ ÒÁÚÄÅÌÅ) ÐÒÉ×ÅÄ£Ô Ë Á×ÔÏÍÁÔÉÞÅÓËÏÍÕ ÚÁÐÕÓËÕ ËÏÍÁÎÄÙ make describe. Portlint ðÒÏ×ÅÒØÔÅ Ó×ÏÀ ÒÁÂÏÔÕ ËÏÍÁÎÄÏÊ portlint ÐÅÒÅÄ ÔÅÍ, ËÁË Å£ ÏÔÏÓÌÁÔØ ÉÌÉ ÐÅÒÅÎÅÓÔÉ × ÄÅÒÅ×Ï ÐÏÒÔÏ×. portlint ÐÒÅÄÕÐÒÅÖÄÁÅÔ ×ÁÓ Ï ÍÎÏÇÉÈ ÒÁÓÐÒÏÓÔÒÁΣÎÎÙÈ ÏÛÉÂËÁÈ, ËÁË ÆÕÎËÃÉÏÎÁÌØÎÙÈ, ÔÁË É ÓÔÉÌÉÓÔÉÞÅÓËÉÈ. äÌÑ ÎÏ×ÏÇÏ (ÉÌÉ ÓËÏÐÉÒÏ×ÁÎÎÏÇÏ ×ÎÕÔÒÉ ÈÒÁÎÉÌÉÝÁ) ÐÏÒÔÁ ÓÁÍÙÍ ÐÏÄÈÏÄÑÝÉÍ Ñ×ÌÑÅÔÓÑ ÚÁÐÕÓË portlint -A; ÄÌÑ ÕÖÅ ÓÕÝÅÓÔ×ÕÀÝÅÇÏ ÐÏÒÔÁ ÄÏÓÔÁÔÏÞÎÏ ÂÕÄÅÔ ÚÁÐÕÓÔÉÔØ portlint -C. ôÁË ËÁË ÄÌÑ ÏÂÎÁÒÕÖÅÎÉÑ ÏÛÉÂÏË portlint ÉÓÐÏÌØÚÕÅÔ Ü×ÒÉÓÔÉÞÅÓËÉÅ ÍÅÔÏÄÙ, ÔÏ ÉÍ ÍÏÇÕÔ ×ÙÄÁ×ÁÔØÓÑ É ÏÛÉÂÏÞÎÙÅ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ. ëÒÏÍÅ ÔÏÇÏ, ×ÒÅÍÑ ÏÔ ×ÒÅÍÅÎÉ ÎÅÞÔÏ, ÏÔÍÅÞÁÅÍÏÅ ËÁË ÎÅËÏÒÒÅËÔÎÏÓÔØ, ÉÚ-ÚÁ ÏÇÒÁÎÉÞÅÎÉÊ ÍÅÈÁÎÉÚÍÁ ÓÏÚÄÁÎÉÑ ÐÏÒÔÏ× ÎÅ ÍÏÖÅÔ ÂÙÔØ ÓÄÅÌÁÎÏ ÎÉËÁË ÉÎÁÞÅ. åÓÌÉ ×Ù ÓÏÍÎÅ×ÁÅÔÅÓØ, ÔÏ ÌÕÞÛÅ ×ÓÅÇÏ ÓÐÒÏÓÉÔØ × &a.ports;. Port Tools ðÒÏÇÒÁÍÍÁ ports-mgmt/porttools ×ÈÏÄÉÔ × ÓÏÓÔÁ× ëÏÌÌÅËÃÉÉ ðÏÒÔÏ×. port Ñ×ÌÑÅÔÓÑ ÓÃÅÎÁÒÉÅÍ ÐÅÒÅÄÎÅÇÏ ÐÌÁÎÁ, ËÏÔÏÒÙÊ ÍÏÖÅÔ ÕÐÒÏÓÔÉÔØ ×ÁÍ ÚÁÄÁÞÕ ÔÅÓÔÉÒÏ×ÁÎÉÑ. åÓÌÉ ×Ù ÈÏÔÉÔÅ ÐÒÏ×ÅÒÉÔØ ÎÏ×ÙÊ ÐÏÒÔ ÉÌÉ ÏÂÎÏ×ÉÔØ ÓÕÝÅÓÔ×ÕÀÝÉÊ, ÔÏ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ port test ÄÌÑ ÐÒÏ×ÅÒËÉ ×ÁÛÅÇÏ ÐÏÒÔÁ, ×ËÌÀÞÁÑ ÐÒÏ×ÅÒËÕ portlint. üÔÁ ËÏÍÁÎÄÁ ÔÁËÖÅ ÎÁÈÏÄÉÔ É ÏÔÏÂÒÁÖÁÅÔ ÌÀÂÙÅ ÆÁÊÌÙ, ËÏÔÏÒÙÅ ÎÅ×ËÌÀÞÅÎÎÙÅ × pkg-plist. óÍÏÔÒÉÔÅ ÓÌÅÄÕÀÝÉÊ ÐÒÉÍÅÒ: &prompt.root; port test /usr/ports/net/csup <makevar>PREFIX</makevar> É <makevar>DESTDIR</makevar> ðÅÒÅÍÅÎÎÁÑ PREFIX ÏÐÒÅÄÅÌÑÅÔ, ËÕÄÁ ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎ ÐÏÒÔ. ðÏ ÕÍÏÌÞÁÎÉÀ ÜÔÏ /usr/local, ÎÏ ÍÏÖÅÔ ÍÅÎÑÔØÓÑ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÎÁ ÓÏÂÓÔ×ÅÎÎÙÊ ÐÕÔØ, ÔÁËÏÊ ËÁË /opt. ÷ ×ÁÛÅÍ ÐÏÒÔÕ ÚÎÁÞÅÎÉÅ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÄÏÌÖÎÏ ÕÞÉÔÙ×ÁÔØÓÑ. åÓÌÉ ÐÏÌØÚÏ×ÁÔÅÌØ ÕÓÔÁÎÏ×ÉÌ ÐÅÒÅÍÅÎÎÕÀ DESTDIR, ÔÏ ÏÎÁ ÏÐÒÅÄÅÌÑÅÔ ÐÏÌÎÏÅ ÁÌØÔÅÒÎÁÔÉ×ÎÏÅ ÏËÒÕÖÅÎÉÅ, ÏÂÙÞÎÏ, ÜÔÏ jail ÉÌÉ ÕÓÔÁÎÏ×ÌÅÎÎÁÑ ÓÉÓÔÅÍÁ, ÓÍÏÎÔÉÒÏ×ÁÎÎÁÑ × ÍÅÓÔÅ, ÏÔÌÉÞÎÏÍ ÏÔ /. îÁ ÓÁÍÏÍ ÄÅÌÅ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × DESTDIR/PREFIX É ÒÅÇÉÓÔÒÉÒÕÅÔÓÑ × ÂÁÚÅ ÄÁÎÎÙÈ ÐÁËÅÔÏ× × DESTDIR/var/db/pkg. ðÏÓËÏÌØËÕ ÕÐÒÁ×ÌÅÎÉÅ DESTDIR ÐÒÏÉÚ×ÏÄÉÔÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ ÉÎÆÒÁÓÔÒÕËÔÕÒÏÊ ÐÏÒÔÏ× Ó ÐÏÍÏÝØÀ &man.chroot.8;, ×ÁÍ ÎÅ ÎÕÖÎÙ ÎÉËÁËÉÅ ÉÚÍÅÎÅÎÉÑ ÉÌÉ ÐÒÏÑ×ÌÅÎÉÅ ÏÓÏÂÏÊ ÏÓÔÏÒÏÖÎÏÓÔÉ ÐÒÉ ÎÁÐÉÓÁÎÉÉ DESTDIR-ÓÏ×ÍÅÓÔÉÍÙÈ ÐÏÒÔÏ×. úÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ PREFIX ÂÕÄÅÔ ÕÓÔÁÎÏ×ÌÅÎÏ × LOCALBASE (ÐÏ ÕÍÏÌÞÁÎÉÀ /usr/local). åÓÌÉ ÚÁÄÁÎÁ ÐÅÒÅÍÅÎÎÁÑ USE_LINUX_PREFIX, ÔÏ PREFIX ÐÒÉÍÅÔ ÚÎÁÞÅÎÉÅ LINUXBASE (ÐÏ ÕÍÏÌÞÁÎÉÀ /compat/linux). éÚÂÅÇÁÎÉÅ Ñ×ÎÏ ÐÒÏÐÉÓÙ×ÁÅÍÙÈ ÐÕÔÅÊ /usr/local × ÉÓÈÏÄÎÏÍ ËÏÄÅ ÓÄÅÌÁÅÔ ÐÏÒÔ ÇÏÒÁÚÄÏ ÂÏÌÅÅ ÇÉÂËÉÍ É ÓÐÏÓÏÂÎÙÍ ÕÄÏ×ÌÅÔ×ÏÒÉÔØ ÐÏÔÒÅÂÎÏÓÔÉ ÄÒÕÇÉÈ ÓÅÒ×ÅÒÏ×. þÁÓÔÏ ÜÔÏÇÏ ÍÏÖÎÏ ÄÏÂÉÔØÓÑ ÐÒÏÓÔÏÊ ÚÁÍÅÎÏÊ ÓÔÒÏË /usr/local × ÒÁÚÌÉÞÎÙÈ ÆÁÊÌÁÈ Makefile ×ÎÕÔÒÉ ÐÏÒÔÁ ÎÁ ${PREFIX}. üÔÁ ÐÅÒÅÍÅÎÎÁÑ Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÅÒÅÄÁ£ÔÓÑ ÄÁÌÅÅ ÎÁ ËÁÖÄÏÍ ÜÔÁÐÅ ÐÏÓÔÒÏÅÎÉÑ É ÕÓÔÁÎÏ×ËÉ. ðÒÏ×ÅÒØÔÅ, ÞÔÏ ×ÁÛÅ ÐÒÉÌÏÖÅÎÉÅ ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÞÅÇÏ-ÌÉÂÏ × ËÁÔÁÌÏÇ /usr/local ×ÍÅÓÔÏ PREFIX. îÁÌÉÞÉÅ Ñ×ÎÏ ÕËÁÚÁÎÎÙÈ ÐÕÔÅÊ ÍÏÖÎÏ ÂÙÓÔÒÏ ÐÒÏ×ÅÒÉÔØ ÓÌÅÄÕÀÝÉÍ ÏÂÒÁÚÏÍ: &prompt.root; make clean; make package PREFIX=/var/tmp/`make -V PORTNAME` åÓÌÉ ÞÔÏ-ÔÏ ÂÙÌÏ ÕÓÔÁÎÏ×ÌÅÎÏ ÚÁ ÐÒÅÄÅÌÁÍÉ PREFIX, ÔÏ ÐÒÏÃÅÓÓ ÓÏÚÄÁÎÉÑ ÐÁËÅÔÁ ÓÏÏÂÝÉÔ Ï ÏÔÓÕÔÓÔ×ÉÉ ÆÁÊÌÏ×. üÔÏÔ ÔÅÓÔ ÎÅ ÎÁÊÄÅÔ Ñ×ÎÏ ÕËÁÚÁÎÎÙÈ ÐÕÔÅÊ ×ÎÕÔÒÉ ÆÁÊÌÏ× ÐÏÒÔÁ É ÎÅ ÐÒÏ×ÅÒÉÔ ËÏÒÒÅËÔÎÏÓÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÑ LOCALBASE × ËÁÞÅÓÔ×Å ÓÓÙÌËÉ ÎÁ ÆÁÊÌÙ ÉÚ ÄÒÕÇÉÈ ÐÏÒÔÏ×. ðÏÒÔ, ×ÒÅÍÅÎÎÏ ÕÓÔÁÎÏ×ÌÅÎÎÙÊ × /var/tmp/`make -V PORTNAME`, ÓÌÅÄÕÅÔ ÐÒÏ×ÅÒÑÔØ ÎÁ ÒÁÂÏÔÏÓÐÏÓÏÂÎÏÓÔØ, ÞÔÏÂÙ ÕÂÅÄÉÔØÓÑ × ÏÔÓÕÔÓÔ×ÉÉ ÐÒÏÂÌÅÍ Ó ÐÕÔÑÍÉ. ðÅÒÅÍÅÎÎÁÑ PREFIX ÎÅ ÄÏÌÖÎÁ ÚÁÄÁ×ÁÔØÓÑ Ñ×ÎÏ × ÆÁÊÌÅ Makefile ÐÏÒÔÁ. ðÏÌØÚÏ×ÁÔÅÌÉ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÐÏÒÔÁ ÍÏÇÕÔ ÚÁÄÁÔØ × PREFIX Ó×ÏÅ ÓÏÂÓÔ×ÅÎÎÏÅ ÍÅÓÔÏ, É ÐÏÒÔ ÄÏÌÖÅÎ ÕÞÉÔÙ×ÁÔØ ÜÔÏ ÚÎÁÞÅÎÉÅ. ïÂÒÁÔÉÔÅÓØ Ë ÐÒÏÇÒÁÍÍÁÍ/ÆÁÊÌÁÍ ÉÚ ÄÒÕÇÉÈ ÐÏÒÔÏ× Ó ÐÅÒÅÍÅÎÎÙÍÉ, ÐÅÒÅÞÉÓÌÅÎÎÙÍÉ ×ÙÛÅ, ÂÅÚ ÕËÁÚÁÎÉÑ Ñ×ÎÙÈ ÍÁÒÛÒÕÔÏ×. îÁÐÒÉÍÅÒ, ÅÓÌÉ ×ÁÛ ÐÏÒÔ ÔÒÅÂÕÅÔ, ÞÔÏÂÙ ÍÁËÒÏÓ PAGER Ñ×ÌÑÌÓÑ ÐÏÌÎÙÍ ÐÕÔÅÍ ÕÔÉÌÉÔÙ less, ÎÅ ÉÓÐÏÌØÚÕÊÔÅ ÓÔÒÏËÏ×ÙÊ ÐÕÔØ /usr/local/bin/less. ÷ÍÅÓÔÏ ÜÔÏÇÏ ÉÓÐÏÌØÚÕÊÔÅ ${LOCALBASE}: -DPAGER=\"${LOCALBASE}/bin/less\" ðÕÔØ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ LOCALBASE ÉÍÅÅÔ ÂÏÌØÛÅ ÛÁÎÓÏ× ÏÓÔÁ×ÁÔØÓÑ ÒÁÂÏÔÏÓÐÏÓÏÂÎÙÍ, ÅÓÌÉ ÓÉÓÔÅÍÎÙÊ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÐÅÒÅÍÅÓÔÉÌ ×Ó£ ÄÅÒÅ×Ï /usr/local ËÕÄÁ-ÔÏ × ÄÒÕÇÏÅ ÍÅÓÔÏ. Tinderbox åÓÌÉ ×Ù ÁÌÞÎÙÊ ËÏÎÔÒÉÂÕÔÏÒ ÐÏÒÔÏ×, ÔÏ ×Ù ÍÏÖÅÔÅ ÚÁÈÏÔÅÔØ ×ÚÇÌÑÎÕÔØ ÎÁ Tinderbox. üÔÏ ÍÏÝÎÁÑ ÓÉÓÔÅÍÁ ÐÏÓÔÒÏÅÎÉÑ É ÔÅÓÔÉÒÏ×ÁÎÉÑ ÐÏÒÔÏ×, ÏÓÎÏ×ÁÎÎÁÑ ÎÁ ÓÃÅÎÁÒÉÑÈ, ÉÓÐÏÌØÚÕÅÍÙÈ × Pointyhat. Tinderbox ÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ, ÉÓÐÏÌØÚÕÑ ÐÏÒÔ ports-mgmt/tinderbox. ïÂÑÚÁÔÅÌØÎÏ ÐÒÏÞÉÔÁÊÔÅ ÐÏÓÔÁ×ÌÑÅÍÕÀ ÄÏËÕÍÅÎÔÁÃÉÀ, ÐÏÓËÏÌØËÕ ËÏÎÆÉÇÕÒÁÃÉÑ ÎÅ Ñ×ÌÑÅÔÓÑ ÔÒÉ×ÉÁÌØÎÏÊ. äÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÄÒÏÂÎÏÓÔÅÊ ÐÏÓÅÔÉÔÅ ×ÅÂÓÁÊÔ Tinderbox. ïÂÎÏ×ÌÅÎÉÅ ÏÔÄÅÌØÎÏÇÏ ÐÏÒÔÁ åÓÌÉ ×Ù ÚÁÍÅÔÉÔÅ, ÞÔÏ ×ÁÛ ÐÏÒÔ ÕÓÔÁÒÅÌ ÐÏ ÓÒÁ×ÎÅÎÉÀ Ó ÐÏÓÌÅÄÎÅÊ Á×ÔÏÒÓËÏÊ ×ÅÒÓÉÅÊ, ÐÅÒ×ÙÍ ÄÅÌÏÍ ×Ù ÄÏÌÖÎÙ ÐÏÌÕÞÉÔØ ÓÁÍÕÀ ÐÏÓÌÅÄÎÀÀ ×ÅÒÓÉÑ ÐÏÒÔÁ. ÷Ù ÍÏÖÅÔÅ ÎÁÊÔÉ ÉÈ × ËÁÔÁÌÏÇÅ ports/ports-current ÎÁ ÚÅÒËÁÌØÎÙÈ FTP-ÓÅÒ×ÅÒÁÈ &os;. ïÄÎÁËÏ ÅÓÌÉ ×Ù ÒÁÂÏÔÁÅÔÅ Ó ÄÏÓÔÁÔÏÞÎÏ ÂÏÌØÛÉÍ ËÏÌÉÞÅÓÔ×ÏÍ ÐÏÒÔÏ×, ÎÁ×ÅÒÎÏÅ, ÂÕÄÅÔ ÐÒÏÝÅ ÉÓÐÏÌØÚÏ×ÁÔØ CVSup ÄÌÑ ÐÏÄÄÅÒÖÁÎÉÑ ×ÓÅÊ ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ× × ÁËÔÕÁÌØÎÏÍ ÓÏÓÔÏÑÎÉÉ, ËÁË ÜÔÏ ÏÐÉÓÁÎÏ × òÕËÏ×ÏÄÓÔ×Å. ë ÔÏÍÕ ÖÅ ÜÔÏ ÄÁÓÔ ×ÏÚÍÏÖÎÏÓÔØ ÏÔÓÌÅÖÉ×ÁÔØ ×ÓÅ ÚÁ×ÉÓÉÍÏÓÔÉ ÐÏÒÔÏ×. îÁ ÓÌÅÄÕÀÝÅÍ ÛÁÇÅ ÎÅÏÂÈÏÄÉÍÏ ×ÙÑÓÎÉÔØ, ÎÅÔ ÏÖÉÄÁÅÔ ÌÉ ÕÖÅ ÜÔÏ ÏÂÎÏ×ÌÅÎÉÅ Ó×ÏÅÊ ÏÞÅÒÅÄÉ. äÌÑ ÜÔÏÇÏ Õ ×ÁÓ ÅÓÔØ Ä×Å ×ÏÚÍÏÖÎÏÓÔÉ. óÕÝÅÓÔ×ÕÅÔ ÉÎÔÅÒÆÅÊÓ Ë ÂÁÚÅ ÄÁÎÎÙÈ ÓÏÏÂÝÅÎÉÊ Ï ÐÒÏÂÌÅÍÁÈ FreeBSD (PR) (ÉÚ×ÅÓÔÎÏÊ ÔÁËÖÅ ËÁË GNATS) Ó ÐÏÉÓËÏ×ÙÍÉ ×ÏÚÍÏÖÎÏÓÔÑÍÉ. ÷ÙÂÅÒÉÔÅ ÉÚ ×ÙÐÁÄÁÀÝÅÇÏ ÓÐÉÓËÁ ports É ××ÅÄÉÔÅ ÎÁÚ×ÁÎÉÅ ÐÏÒÔÁ. ïÄÎÁËÏ ÉÎÏÇÄÁ ÌÀÄÉ ÚÁÂÙ×ÁÀÔ ÐÏÍÅÓÔÉÔØ ÎÁÚ×ÁÎÉÅ ÐÏÒÔÁ × ÐÏÌÅ Synopsis × ÔÏÞÎÏÍ ×ÉÄÅ. ÷ ÔÁËÏÍ ÓÌÕÞÁÅ ×Ù ÍÏÖÅÔÅ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ óÉÓÔÅÍÏÊ ÍÏÎÉÔÏÒÉÎÇÁ ÐÏÒÔÏ× FreeBSD (ËÏÔÏÒÁÑ ÉÚ×ÅÓÔÎÁ ÔÁËÖÅ ËÁË portsmon). ÷ ÒÁÍËÁÈ ÜÔÏÊ ÓÉÓÔÅÍÙ ÄÅÌÁÅÔÓÑ ÐÏÐÙÔËÁ ËÌÁÓÓÉÆÉÃÉÒÏ×ÁÔØ PR, ËÁÓÁÀÝÉÅÓÑ ÐÏÒÔÏ×, ÐÏ ÉÍÅÎÉ ÐÏÒÔÁ. äÌÑ ÐÏÉÓËÁ PR, ÏÔÎÏÓÑÝÉÈÓÑ Ë ÏÐÒÅÄÅÌ£ÎÎÏÍÕ ÐÏÒÔÕ, ÉÓÐÏÌØÚÕÊÔÅ ÍÅÈÁÎÉÚÍ ðÒÏÓÍÏÔÒÁ ÐÏ ÏÄÎÏÍÕ ÐÏÒÔÕ. åÓÌÉ ÔÁËÉÈ ÏÔÌÏÖÅÎÎÙÈ PR ÎÅ ÓÕÝÅÓÔ×ÕÅÔ, ÔÏ ÎÁ ÓÌÅÄÕÀÝÅÍ ÜÔÁÐÅ ÓÌÅÄÕÅÔ ÐÏÓÌÁÔØ ÓÏÏÂÝÅÎÉÅ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÙ ÞÅÌÏ×ÅËÕ, ÐÏÄÄÅÒÖÉ×ÁÀÝÅÍÕ ÐÏÒÔ, ËÏÔÏÒÙÊ ×ÙÄÁ£ÔÓÑ ÐÏ ËÏÍÁÎÄÅ make maintainer. üÔÏÔ ÞÅÌÏ×ÅË ÍÏÖÅÔ ÕÖÅ ÒÁÂÏÔÁÔØ ÎÁÄ ÏÂÎÏ×ÌÅÎÉÅÍ, ÉÌÉ ÉÍÅÔØ ÐÒÉÞÉÎÕ ÎÅ ÏÂÎÏ×ÌÑÔØ ÐÏÒÔ ÐÒÑÍÏ ÓÅÊÞÁÓ (ÎÁÐÒÉÍÅÒ, ÉÚ-ÚÁ ÐÒÏÂÌÅÍ ÓÏ ÓÔÁÂÉÌØÎÏÓÔØÀ ÆÕÎËÃÉÏÎÉÒÏ×ÁÎÉÑ ÎÏ×ÏÊ ×ÅÒÓÉÉ); ×ÁÍ ÎÅÔ ÎÕÖÄÙ ÄÕÂÌÉÒÏ×ÁÔØ ÉÈ ÒÁÂÏÔÕ. úÁÍÅÔØÔÅ, ÞÔÏ ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÐÏÒÔÙ ÐÅÒÅÞÉÓÌÑÀÔÓÑ Ó ÁÄÒÅÓÏÍ ÓÏÐÒÏ×ÏÖÄÁÀÝÅÇÏ ports@FreeBSD.org, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ×ÓÅÇÏ ÌÉÛØ ÁÄÒÅÓÏÍ ÏÂÝÅÇÏ ÓÐÉÓËÁ ÒÁÓÓÙÌËÉ, ÔÁË ÞÔÏ ÏÔÐÒÁ×ËÁ ÔÕÄÁ ÓÏÏÂÝÅÎÉÊ, ÓËÏÒÅÅ ×ÓÅÇÏ, × ÄÁÎÎÏÍ ÓÌÕÞÁÅ ÎÅ ÐÏÍÏÖÅÔ. åÓÌÉ ÓÏÐÒÏ×ÏÖÄÁÀÝÉÊ ÐÒÏÓÉÔ ×ÁÓ ×ÙÐÏÌÎÉÔØ ÏÂÎÏ×ÌÅÎÉÅ, ÌÉÂÏ ÓÏÐÒÏ×ÏÖÄÁÀÝÉÊ ÏÔÓÕÔÓÔ×ÕÅÔ, ÔÏ Õ ×ÁÓ ÐÏÑ×ÌÑÅÔÓÑ ÛÁÎÓ ÐÏÍÏÞØ &os;, ÐÒÉÇÏÔÏ×É× ÏÂÎÏ×ÌÅÎÉÅ ÓÁÍÉÍ! ðÏÖÁÌÕÊÓÔÁ, ÄÅÌÁÊÔÅ ÜÔÏ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ËÏÍÁÎÄÙ &man.diff.1; × ÏÓÎÏ×ÎÏÊ ÓÉÓÔÅÍÅ. þÔÏÂÙ ÓÏÚÄÁÔØ ÐÏÄÈÏÄÑÝÉÊ diff ÄÌÑ ÏÄÎÏÇÏ ÐÁÔÞÁ, ÓËÏÐÉÒÕÊÔÅ ÆÁÊÌ, ËÏÔÏÒÙÊ ÎÕÖÎÏ ÐÒÏÐÁÔÞÉÔØ, × something.orig, ÓÏÈÒÁÎÉÔÅ ×ÁÛÉ ÉÚÍÅÎÅÎÉÑ × something, Á ÚÁÔÅÍ ÓÏÚÄÁÊÔÅ ×ÁÛÅ ÐÁÔÞ: &prompt.user; /usr/bin/diff something.orig something > something.diff ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ, ×ÁÍ ÓÌÅÄÕÅÔ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ÍÅÔÏÄÏÍ svn diff (), ÌÉÂÏ ÓËÏÐÉÒÏ×ÁÔØ ÓÏÄÅÒÖÉÍÏÅ ÐÏÒÔÁ × ÏÔÄÅÌØÎÙÊ ËÁÔÁÌÏÇ É ÐÒÉÍÅÎÉÔØ ÒÅÚÕÌØÔÁÔ ÒÅËÕÒÓÉ×ÎÏÊ ËÏÍÁÎÄÙ &man.diff.1; ÍÅÖÄÕ ÎÏ×ÙÍ É ÓÔÁÒÙÍ ËÁÔÁÌÏÇÁÍÉ ÐÏÒÔÁ (ÎÁÐÒÉÍÅÒ, ÅÓÌÉ ËÁÔÁÌÏÇ Ó ÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÙÍ ÐÏÒÔÏÍ ÎÁÚÙ×ÁÅÔÓÑ superedit, Á ÏÒÉÇÉÎÁÌØÎÙÊ, ÓÏ×ÐÁÄÁÀÝÉÊ Ó ÎÁÈÏÄÑÝÉÍÓÑ × ÎÁÛÅÍ ÄÅÒÅ×Å ÐÏÒÔÏ×, superedit.bak, ÔÏ ÓÏÈÒÁÎÉÔÅ ÒÅÚÕÌØÔÁÔ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄÙ diff -ruN superedit.bak superedit). ðÏÄÏÊÄ£Ô ËÁË ÕÎÉÆÉÃÉÒÏ×ÁÎÎÙÊ, ÔÁË É ËÏÎÔÅËÓÔÎÙÊ ÄÉÆÆ, ÏÄÎÁËÏ ËÏÍÍÉÔÔÅÒÙ ÐÏÒÔÏ× ÏÂÙÞÎÏ ÐÒÅÄÐÏÞÉÔÁÀÔ ÕÎÉÆÉÃÉÒÏ×ÁÎÎÙÊ ÆÏÒÍÁÔ. ïÔÍÅÔØÔÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÏÐÃÉÉ -N—ÜÔÏ ÏÄÏÂÒÑÅÍÙÊ ÓÐÏÓÏ ÚÁÓÔÁ×ÉÔØ diff ËÏÒÒÅËÔÎÏ ÒÁÂÏÔÁÔØ × ÓÌÕÞÁÅ ÄÏÂÁ×ÌÅÎÉÑ ÎÏ×ÙÈ ÆÁÊÌÏ× ÉÌÉ ÕÄÁÌÅÎÉÑ ÓÔÁÒÙÈ. ðÅÒÅÄ ÔÅÍ, ËÁË ÐÏÓÙÌÁÔØ ÎÁÍ diff-ÆÁÊÌ, ÐÏÖÁÌÕÊÓÔÁ, ÐÒÏ×ÅÒØÔÅ ÅÇÏ, ÞÔÏÂÙ ÕÂÅÄÉÔØÓÑ × ÚÎÁÞÉÍÏÓÔÉ ×ÓÅÈ ×ÎÅÓ£ÎÎÙÈ ÉÚÍÅÎÅÎÉÊ. (÷ ÞÁÓÔÎÏÓÔÉ, ÕÂÅÄÉÔÅÓØ, ÞÔÏ ×Ù ÏÞÉÓÔÉÌÉ ÒÁÂÏÞÉÅ ËÁÔÁÌÏÇÉ ËÏÍÁÎÄÏÊ make clean). äÌÑ ÕÐÒÏÝÅÎÉÑ ÐÏ×ÔÏÒÑÀÝÉÈÓÑ ÏÐÅÒÁÃÉÊ Ó ÆÁÊÌÁÍÉ ÚÁÐÌÁÔÏË ×Ù ÍÏÖÅÔÅ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ÓËÒÉÐÔÏÍ /usr/ports/Tools/scripts/patchtool.py. ðÅÒÅÄ ÔÅÍ, ËÁË ÅÇÏ ÚÁÐÕÓËÁÔØ, ÐÏÖÁÌÕÊÓÔÁ, ÐÒÏÞÔÉÔÅ /usr/ports/Tools/scripts/README.patchtool. åÓÌÉ ÐÏÒÔ ÎÉËÅÍ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ, Á ×Ù ÁËÔÉ×ÎÏ ÅÇÏ ÉÓÐÏÌØÚÕÅÔÅ, ÐÏÖÁÌÕÊÓÔÁ, ÐÏÄÕÍÁÊÔÅ ÎÁÄ ÔÅÍ, ÞÔÏÂÙ ÄÏÂÒÏ×ÏÌØÎÏ ÓÔÁÔØ ÅÇÏ ÓÏÐÒÏ×ÏÖÄÁÀÝÉÍ. ÷Ï &os; ÉÍÅÅÔÓÑ ÂÏÌÅÅ 4000 ÐÏÒÔÏ× ÂÅÚ ÐÏÄÄÅÒÖËÉ, É ÜÔÏ ËÁË ÒÁÚ ÔÁ ÏÂÌÁÓÔØ, ÇÄÅ ×ÓÅÇÄÁ ÎÕÖÎÙ ÄÏÂÒÏ×ÏÌØÃÙ. (äÅÔÁÌØÎÏÅ ÏÐÉÓÁÎÉÅ ÏÂÑÚÁÎÎÏÓÔÅÊ ÓÏÐÒÏ×ÏÖÄÁÀÝÅÇÏ ÍÏÖÎÏ ÎÁÊÔÉ × ÒÁÚÄÅÌÅ × òÕËÏ×ÏÄÓÔ×Å òÁÚÒÁÂÏÔÞÉËÁ.) ìÕÞÛÅ ×ÓÅÇÏ ÐÏÓÌÁÔØ ÎÁÍ diff-ÆÁÊÌ, ×ËÌÀÞÉ× ÅÇÏ × ÐÏÓÙÌËÕ ÐÏ ËÏÍÁÎÄÅ &man.send-pr.1; (ËÁÔÅÇÏÒÉÑ ports). åÓÌÉ ×Ù ÓÏÐÒÏ×ÏÖÄÁÅÔÅ ÐÏÒÔ, ÏÂÑÚÁÔÅÌØÎÏ ÐÏÍÅÓÔÉÔÅ ÔÅËÓÔ [maintainer update] × ÎÁÞÁÌÅ ÓÔÒÏËÉ ÏÐÉÓÁÎÉÑ É ÚÁÄÁÊÔÅ × ÐÏÌÅ Class ×ÁÛÅÇÏ PR ÓÔÒÏÞËÕ maintainer-update. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ × ÐÏÌÅ Class ×ÁÛÅÇÏ PR ÄÏÌÖÎÏ ÂÙÔØ ÕËÁÚÁÎÏ change-request. âÕÄØÔÅ ÄÏÂÒÙ, × ÓÏÏÂÝÅÎÉÉ ÏÔÍÅÔØÔÅ ×ÓÅ ÄÏÂÁ×ÌÅÎÎÙÅ ÉÌÉ ÕÄÁÌ£ÎÎÙÅ ÆÁÊÌÙ, ÔÁË ËÁË ÏÎÉ ÂÕÄÕÔ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÕËÁÚÁÎÙ &man.svn.1; ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ÏÐÅÒÁÃÉÉ ËÏÍÍÉÔÁ. åÓÌÉ diff-ÆÁÊÌ ÉÍÅÅÔ ÒÁÚÍÅÒ, ÐÒÅ×ÙÛÁÀÝÉÊ 20ëâ, ÓÏÖÍÉÔÅ ÅÇÏ É ÏÂÒÁÂÏÔÁÊÔÅ ÕÔÉÌÉÔÏÊ uuencode; × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÐÒÏÓÔÏ ×ËÌÀÞÉÔÅ ÅÇÏ ËÁË ÅÓÔØ × PR. ðÒÅÖÄÅ ÞÅÍ ÐÏÌØÚÏ×ÁÔØÓÑ &man.send-pr.1; ×Ù ÄÏÌÖÎÙ ÐÒÏÓÍÏÔÒÅÔØ ÒÁÚÄÅÌ Ï îÁÐÉÓÁÎÉÉ ÓÏÏÂÝÅÎÉÊ Ï ÐÒÏÂÌÅÍÁÈ × ÓÔÁÔØÅ Ï óÏÏÂÝÅÎÉÑÈ Ï ÏÛÉÂËÁÈ; ÏÎ ÓÏÄÅÒÖÉÔ ÇÏÒÁÚÄÏ ÂÏÌØÛÅ ÉÎÆÏÒÍÁÃÉÉ Ï ÔÏÍ, ËÁË ÐÉÓÁÔØ ÐÏÌÅÚÎÙÅ ÓÏÏÂÝÅÎÉÑ Ï ÐÒÏÂÌÅÍÁÈ. åÓÌÉ ×ÁÛÅ ÏÂÎÏ×ÌÅÎÉÅ ×ÙÚ×ÁÎÏ ÓÏÏÂÒÁÖÅÎÉÑÍÉ ÉÎÆÏÒÍÁÃÉÏÎÎÏÊ ÂÅÚÏÐÁÓÎÏÓÔÉ ÉÌÉ ÎÁÌÉÞÉÅÍ ÓÅÒØ£ÚÎÙÈ ÏÛÉÂÏË × ÉÍÅÀÝÅÍÓÑ ÐÏÒÔÅ, ÐÏÖÁÌÕÊÓÔÁ, ÏÐÏ×ÅÓÔÉÔÅ &a.portmgr; Ï ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÎÅÍÅÄÌÅÎÎÏÇÏ ÐÅÒÅÐÏÓÔÒÏÅÎÉÑ É ÐÏ×ÔÏÒÎÏÇÏ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÑ ÐÁËÅÔÁ ×ÁÛÅÇÏ ÐÏÒÔÁ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÎÉÞÅÇÏ ÎÅ ÐÏÄÏÚÒÅ×ÁÀÝÉÅ ÐÏÌØÚÏ×ÁÔÅÌÉ &man.pkg.add.1; ÂÕÄÕÔ ÐÒÏÄÏÌÖÁÔØ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÓÔÁÒÕÀ ×ÅÒÓÉÀ ÐÏ ËÏÍÁÎÄÅ pkg_add -r × ÔÅÞÅÎÉÅ ÅÝ£ ÎÅÓËÏÌØËÉÈ ÎÅÄÅÌØ. ðÏ×ÔÏÒÑÅÍ ÅÝÅ ÒÁÚ - ÄÌÑ ÐÏÓÙÌËÉ ÏÂÎÏ×ÌÅÎÉÊ ÓÕÝÅÓÔ×ÕÀÝÉÈ ÐÏÒÔÏ× ÉÓÐÏÌØÚÕÊÔÅ ÕÔÉÌÉÔÕ &man.diff.1;, Á ÎÅ &man.shar.1;! üÔÏ ÐÏÍÏÖÅÔ ÐÏÎÑÔØ ËÏÍÍÉÔÔÅÒÁÍ ÐÏÒÔÏ×, ÞÔÏ ÉÍÅÎÎÏ ÂÙÌÏ ÉÚÍÅÎÅÎÏ. ôÅÐÅÒØ, ËÏÇÄÁ ×Ù ÐÒÏÄÅÌÁÌÉ ×Ó£ ÜÔÏ, ×ÁÍ ÍÏÖÅÔ ÐÏÎÁÄÏÂÉÔØÓÑ ÐÒÏÞÅÓÔØ Ï ÔÏÍ, ËÁË ÐÏÄÄÅÒÖÉ×ÁÔØ ÁËÔÕÁÌØÎÏÅ ÓÏÓÔÏÑÎÉÅ, × . éÓÐÏÌØÚÏ×ÁÎÉÅ <literal>SVN</literal> ÄÌÑ ÓÏÚÄÁÎÉÑ ÐÁÔÞÅÊ ðÏ ×ÏÚÍÏÖÎÏÓÔÉ ÐÒÉÓÙÌÁÊÔÅ ÉÓÐÒÁ×ÌÅÎÉÑ × ÆÏÒÍÁÔÅ &man.svn.1; diff; × ÔÁËÏÍ ×ÉÄÅ ÉÈ ÐÒÏÝÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÏ ÓÒÁ×ÎÅÎÉÀ Ó ÒÁÚÎÉÃÅÊ ÍÅÖÄÕ ÓÔÁÒÙÍ É ÎÏ×ÙÍ ËÁÔÁÌÏÇÁÍÉ. ë ÔÏÍÕ ÖÅ, ×ÁÍ ÐÒÏÝÅ Õ×ÉÄÅÔØ ×ÁÛÉ ÉÚÍÅÎÅÎÉÑ É ÏÂÎÏ×ÉÔØ ÉÈ × ÓÌÕÞÁÅ, ÅÓÌÉ ÞÔÏ-ÎÉÂÕÄØ ÉÚÍÅÎÉÌÏÓØ × ëÏÌÌÅËÃÉÉ ðÏÒÔÏ× Ó ÔÅÈ ÐÏÒ, ËÁË ×Ù ÎÁÞÁÌÉ ÒÁÂÏÔÕ, ÐÏËÁ ×Ù ÎÅ ÏÔÐÒÁ×ÉÔÅ ×ÁÛÉ ÉÚÍÅÎÅÎÉÑ, ÌÉÂÏ ÅÓÌÉ ËÏÍÍÉÔÔÅÒ ÐÏÐÒÏÓÉÔ ×ÁÓ ÉÓÐÒÁ×ÉÔØ ÞÔÏ-ÔÏ ÅÝÅ. &prompt.user; cd ~/my_wrkdir &prompt.user; svn co svn://svn.FreeBSD.org/ports/head/dns/pdnsd &prompt.user; cd ~/my_wrkdir/pdnsd üÔÏ ÍÏÖÅÔ ÂÙÔØ ÇÄÅ ÕÇÏÄÎÏ; ÍÅÓÔÏ, × ËÏÔÏÒÏÍ ÐÒÏÉÚ×ÏÄÉÔÓÑ ÐÏÓÔÒÏÅÎÉÅ ÐÏÒÔÏ×, ÎÅ ÐÒÉ×ÑÚÁÎÏ Ë /usr/ports/. svn.FreeBSD.org — ÜÔÏ ÏÂÝÅÄÏÓÔÕÐÎÙÊ SVN ÓÅÒ×ÅÒ. îÁÈÏÄÑÓØ × ÒÁÂÏÞÅÍ ËÁÔÁÌÏÇÅ, ×ÎÏÓÉÔÅ ÌÀÂÙÅ ÉÚÍÅÎÅÎÉÑ, ËÏÔÏÒÙÅ ÏÂÙÞÎÏ ÄÅÌÁÀÔ ÄÌÑ ÐÏÒÔÁ. ðÒÉ ÄÏÂÁ×ÌÅÎÉÉ ÉÌÉ ÕÄÁÌÅÎÉÉ ÆÁÊÌÁ ÉÓÐÏÌØÚÕÊÔÅ svn ÄÌÑ ÏÔÓÌÅÖÉ×ÁÎÉÑ ÜÔÉÈ ÉÚÍÅÎÅÎÉÊ: &prompt.user; svn add new_file &prompt.user; svn remove deleted_file õÂÅÄÉÔÅÓØ, ÞÔÏ ×Ù ÐÒÏ×ÅÒÑÅÔÅ ÐÏÒÔ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÒÅËÏÍÅÎÄÕÅÍÙÍ ÐÏÒÑÄËÏÍ ÐÒÏ×ÅÒËÉ, ÏÐÉÓÁÎÎÙÍ × É . &prompt.user; svn status &prompt.user; svn update üÔÁ ËÏÍÁÎÄÁ ÐÏÐÙÔÁÅÔÓÑ ×ÙÐÏÌÎÉÔØ ÓÌÉÑÎÉÅ ÒÁÚÌÉÞÉÊ ÍÅÖÄÕ ×ÁÛÉÍ ÐÁÔÞÅÍ É ÔÅËÕÝÉÍ ÓÏÄÅÒÖÉÍÙÍ × SVN; ×ÎÉÍÁÔÅÌØÎÏ ÐÒÏ×ÅÒØÔÅ ÐÏÌÕÞÅÎÎÙÊ ×Ù×ÏÄ. âÕË×Á ÐÅÒÅÄ ÎÁÚ×ÁÎÉÅÍ ËÁÖÄÏÇÏ ÆÁÊÌÁ ÏÚÎÁÞÁÅÔ ÔÉÐ ÉÚÍÅÎÅÎÉÑ, ÓÄÅÌÁÎÎÏÇÏ Ó ÜÔÉÍ ÆÁÊÌÏÍ. äÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÌÎÏÇÏ ÓÐÉÓËÁ ÓÍÏÔÒÉÔÅ . ðÒÅÆÉËÓÙ ÆÁÊÌÏ× ÄÌÑ <literal>SVN</literal> update U æÁÊÌ ÏÂÎÏ×ÌÅÎ ÂÅÚ ÐÒÏÂÌÅÍ. G æÁÊÌ ÏÂÎÏ×ÌÅÎ ÂÅÚ ÐÒÏÂÌÅÍ (×Ù Õ×ÉÄÉÔÅ ÜÔÏ ÔÏÌØËÏ ÐÒÉ ÒÁÂÏÔÅ Ó ÕÄÁÌÅÎÎÙÍ ÒÅÐÏÚÉÔÏÒÉÅÍ). M æÁÊÌ Ó ÌÏËÁÌØÎÙÍÉ ÉÚÍÅÎÅÎÉÑÍÉ, ÓÌÉÑÎÉÅ ×ÙÐÏÌÎÅÎÏ ÂÅÚ ËÏÎÆÌÉËÔÏ×. C æÁÊÌ Ó ÌÏËÁÌØÎÙÍÉ ÉÚÍÅÎÅÎÉÑÍÉ, ÓÌÉÑÎÉÅ ×ÙÐÏÌÎÅÎÏ Ó ËÏÎÆÌÉËÔÁÍÉ.
åÓÌÉ × ÒÅÚÕÌØÔÁÔÅ ×ÙÐÏÌÎÅÎÉÑ svn update ×Ù ÐÏÌÕÞÉÌÉ C, ÔÏ ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÞÔÏ-ÔÏ ÉÚÍÅÎÉÌÏÓØ × ÒÅÐÏÚÉÔÏÒÉÉ SVN É &man.svn.1; ÎÅ ÓÍÏÇÌÁ ×ÙÐÏÌÎÉÔØ ÓÌÉÑÎÉÅ ×ÁÛÉÈ ÌÏËÁÌØÎÙÈ ÉÚÍÅÎÅÎÉÊ Ó ÐÏÌÕÞÅÎÎÙÍÉ ÉÚ ÒÅÐÏÚÉÔÏÒÉÑ. ÷ ÌÀÂÏÍ ÓÌÕÞÁÅ ÎÉËÏÇÄÁ ÎÅ ÐÏÍÅÛÁÅÔ ÐÒÏÓÍÏÔÒÅÔØ ÉÚÍÅÎÅÎÉÑ, ÐÏÓËÏÌØËÕ &man.svn.1; ÎÉÞÅÇÏ ÎÅ ÚÎÁÅÔ Ï ÔÏÍ, ËÁËÉÍ ÄÏÌÖÅÎ ÂÙÔØ ÐÏÒÔ, ÐÏÜÔÏÍÕ ÜÔÁ ËÏÍÁÎÄÁ ÍÏÖÅÔ (É, ×ÅÒÏÑÔÎÏ, ÂÕÄÅÔ) ÄÅÌÁÔØ ÓÌÉÑÎÉÅ ÔÅÈ ÉÚÍÅÎÅÎÉÊ, ËÏÔÏÒÙÅ ÎÅ ÉÍÅÀÔ ÓÍÙÓÌÁ. ðÏÓÌÅÄÎÉÍ ÛÁÇÏÍ Ñ×ÌÑÅÔÓÑ ÓÏÚÄÁÎÉÅ ÕÎÉÆÉÃÉÒÏ×ÁÎÎÏÇÏ &man.diff.1; ÄÌÑ ÆÁÊÌÏ× ÏÔÎÏÓÉÔÅÌØÎÏ SVN: &prompt.user; svn diff > ../`basename ${PWD}`.diff éÎÆÏÒÍÁÃÉÑ Ï ÌÀÂÙÈ ÕÄÁÌÑÅÍÙÈ ÆÁÊÌÏ× ÄÏÌÖÎÁ ÂÙÔØ Ñ×ÎÙÍ ÏÂÒÁÚÏÍ ÕËÁÚÁÎÁ × PR, ÐÏÓËÏÌØËÕ ÎÅÏÂÈÏÄÉÍÏÓÔØ × ÕÄÁÌÅÎÉÉ ÆÁÊÌÁ ÄÌÑ ËÏÍÍÉÔÔÅÒÁ ÍÏÖÅÔ ÂÙÔØ ÎÅÏÞÅ×ÉÄÎÁ. ðÒÉÓÙÌÁÊÔÅ Ó×ÏÉ ÐÁÔÞÉ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÒÕËÏ×ÏÄÓÔ×ÏÍ, ÏÐÉÓÁÎÎÏÍ × .
æÁÊÌÙ <filename>UPDATING</filename> É <filename>MOVED</filename> åÓÌÉ ÐÒÉ ÏÂÎÏ×ÌÅÎÉÉ ÐÏÒÔÁ ÔÒÅÂÕÀÔÓÑ ÓÐÅÃÉÁÌØÎÙÅ ÛÁÇÉ, ÔÁËÉÅ ËÁË ÉÚÍÅÎÅÎÉÅ ÆÁÊÌÏ× ËÏÎÆÉÇÕÒÁÃÉÉ ÉÌÉ ÚÁÐÕÓË ÓÐÅÃÉÁÌØÎÏÊ ÐÒÏÇÒÁÍÍÙ, ÔÏ ×ÁÍ ÓÌÅÄÕÅÔ ÜÔÏ ÚÁÄÏËÕÍÅÎÔÉÒÏ×ÁÔØ × ÆÁÊÌÅ /usr/ports/UPDATING. æÏÒÍÁÔ ÚÁÐÉÓÉ × ÜÔÏÍ ÆÁÊÌÅ ÐÒÉ×ÏÄÉÔÓÑ ÎÉÖÅ: YYYYMMDD: AFFECTS: users of portcategory/portname AUTHOR: Your name <Your email address> Special instructions åÓÌÉ ×Ù ×ËÌÀÞÁÅÔÅ ÔÏÞÎÙÅ ÉÎÓÔÒÕËÃÉÉ portmaster ÉÌÉ portupgrading, ÐÏÖÁÌÕÊÓÔÁ, ÕÂÅÄÉÔÅÓØ × ÐÒÁ×ÉÌØÎÏÍ ÜËÒÁÎÉÒÏ×ÁÎÉÉ ÓÉÍ×ÏÌÏ× ×ÎÕÔÒÉ ËÏÍÁÎÄÎÏÊ ÏÂÏÌÏÞËÉ. æÁÊÌ /usr/ports/MOVED ÓÏÄÅÒÖÉÔ ÚÁÐÉÓÉ Ï ÕÄÁÌ£ÎÎÙÈ ÉÌÉ ÐÅÒÅÍÅÝ£ÎÎÙÈ ÐÏÒÔÁÈ. ëÁÖÄÁÑ ÓÔÒÏËÁ × ÜÔÏÍ ÆÁÊÌÅ ÓÏÓÔÏÉÔ ÉÚ ÐÏÌÅÊ: ÎÁÚ×ÁÎÉÅ ÐÏÒÔÁ, ÍÅÓÔÏ, ËÕÄÁ ÏÎ ÂÙÌ ÐÅÒÅÍÅÝ£Î, ÄÁÔÁ É ÐÒÉÞÉÎÁ ÐÅÒÅÍÅÝÅÎÉÑ. åÓÌÉ ÐÏÒÔ ÂÙÌ ÕÄÁÌ£Î, ÔÏ ÐÏÌÅ, ÕËÁÚÙ×ÁÀÝÅÅ ÎÏ×ÏÅ ÍÅÓÔÏ, ÍÏÖÅÔ ÏÓÔÁ×ÁÔØÓÑ ÎÅÚÁÐÏÌÎÅÎÎÙÍ. ðÏÌÑ ÄÏÌÖÎÙ ÒÁÚÄÅÌÑÔØÓÑ ÓÉÍ×ÏÌÏÍ | (pipe), ËÁË ÜÔÏ ÐÏËÁÚÁÎÏ ÎÉÖÅ: old name|new name (blank for deleted)|date of move|reason äÁÔÕ ÓÌÅÄÕÅÔ ××ÏÄÉÔØ × ÆÏÒÍÁÔÅ YYYY-MM-DD. îÏ×ÙÅ ÚÁÐÉÓÉ ÓÌÅÄÕÅÔ ÄÏÂÁ×ÌÑÔØ × ËÏÎÅà ÆÁÊÌÁ × ÈÒÏÎÏÌÏÇÉÞÅÓËÏÍ ÐÏÒÑÄËÅ. åÓÌÉ ÐÏÒÔ ÂÙÌ ÐÅÒÅÍÅÝ£Î, ÎÏ × ÄÁÌØÎÅÊÛÅÍ ×ÏÓÓÔÁÎÏ×ÌÅÎ ÎÁ ÐÒÅÖÎÅÍ ÍÅÓÔÅ, ÕÄÁÌÉÔÅ × ÜÔÏÍ ÆÁÊÌÅ ÓÔÒÏËÕ, ÓÏÄÅÒÖÁÝÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÐÅÒÅÍÅÝÅÎÉÉ. ðÏÌÕÞÅÎÎÙÅ ÉÚÍÅÎÅÎÉÑ ÍÏÖÎÏ ÐÒÏ×ÅÒÉÔØ ËÏÍÁÎÄÏÊ Tools/scripts/MOVEDlint.awk.
âÅÚÏÐÁÓÎÏÓÔØ ÐÏÒÔÏ× ðÏÞÅÍÕ ÂÅÚÏÐÁÓÎÏÓÔØ ÔÁË ×ÁÖÎÁ ïÛÉÂËÉ × ÐÒÏÇÒÁÍÍÎÏÍ ÏÂÅÓÐÅÞÅÎÉÉ ÐÏÑ×ÌÑÀÔÓÑ ÓÌÕÞÁÊÎÏ. ÷ÏÚÍÏÖÎÏ, ÓÁÍÙÅ ÏÐÁÓÎÙÅ ÉÚ ÎÉÈ ÔÅ, ÞÔÏ ÓÏÚÄÁÀÔ ÕÑÚ×ÉÍÏÓÔÉ ÂÅÚÏÐÁÓÎÏÓÔÉ. ó ÔÅÈÎÉÞÅÓËÏÊ ÔÏÞËÉ ÚÒÅÎÉÑ ÐÏÄÏÂÎÙÅ ÕÑÚ×ÉÍÏÓÔÉ ÄÏÌÖÎÙ ÂÙÔØ ÚÁËÒÙÔÙ ÐÕÔÅÍ ÉÓÐÒÁ×ÌÅÎÉÑ ×ÙÚÙ×ÁÀÝÉÈ ÉÈ ÏÛÉÂÏË. ôÅÍ ÎÅ ÍÅÎÅÅ, ÐÏÌÉÔÉËÉ ÏÂÒÁÂÏÔËÉ ÎÅÓÕÝÅÓÔ×ÅÎÎÙÈ ÏÛÉÂÏË É ÕÑÚ×ÉÍÏÓÔÅÊ ÏÞÅÎØ ÒÁÚÌÉÞÁÀÔÓÑ. ïÂÙÞÎÁÑ ÎÅÂÏÌØÛÁÑ ÏÛÉÂËÁ ÚÁÔÒÁÇÉ×ÁÅÔ ÔÏÌØËÏ ÔÅÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ËÏÔÏÒÙÅ ÚÁÄÅÊÓÔ×ÕÀÔ ÎÅËÏÔÏÒÙÅ ËÏÍÂÉÎÁÃÉÉ ÎÁÓÔÒÏÅË, ÁËÔÉ×ÉÒÕÀÝÉÅ ÜÔÕ ÏÛÉÂËÕ. òÁÚÒÁÂÏÔÞÉË × ËÏÎÅÞÎÏÍ ÓÞÅÔÅ ×ÙÐÕÓÔÉÔ ÐÁÔÞ, Á ÚÁÞÔÅÍ ÎÏ×ÕÀ ×ÅÒÓÉÀ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ, Ó×ÏÂÏÄÎÏÇÏ ÏÔ ÏÛÉÂËÉ, ÎÏ ÂÏÌØÛÉÎÓÔ×Ï ÐÏÌØÚÏ×ÁÔÅÌÅÊ ÎÅ ÐÏÓÞÉÔÁÀÔ ÎÕÖÎÙÍ ÓÒÁÚÕ ÖÅ ÐÒÏÉÚ×ÅÓÔÉ ÏÂÎÏ×ÌÅÎÉÅ, ÐÏÓËÏÌØËÕ ÜÔÁ ÏÛÉÂËÁ ÎÉËÏÇÄÁ Õ ÎÉÈ ÎÅ ÐÒÏÑ×ÌÑÌÁÓØ. ëÒÉÔÉÞÅÓËÁÑ ÏÛÉÂËÁ, ËÏÔÏÒÁÑ ÍÏÖÅÔ ÐÒÉ×ÏÄÉÔØ Ë ÐÏÔÅÒÅ ÄÁÎÎÙÈ, ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÅÒØÅÚÎÕÀ ÐÒÏÂÌÅÍÕ. ôÅÍ ÎÅ ÍÅÎÅÅ, ÐÒÅÄÕÓÍÏÔÒÉÔÅÌØÎÙÅ ÐÏÌØÚÏ×ÁÔÅÌÉ ÚÎÁÀÔ, ÞÔÏ ÂÏÌØÛÉÎÓÔ×Ï ×ÏÚÍÏÖÎÙÈ ÐÒÏÉÓÛÅÓÔ×ÉÊ, É ÓÒÅÄÉ ÎÉÈ ÐÒÏÇÒÁÍÍÎÙÅ ÏÛÉÂËÉ, ÓËÏÒÅÅ ×ÓÅÇÏ ÐÒÉ×ÏÄÑÔ Ë ÐÏÔÅÒÅ ÄÁÎÎÙÈ, ÐÏÜÔÏÍÕ ÏÎÉ ×ÙÐÏÌÎÑÀÔ ÒÅÚÅÒ×ÎÏÅ ËÏÐÉÒÏ×ÁÎÉÅ ×ÁÖÎÙÈ ÄÁÎÎÙÈ; ÄÏÐÏÌÎÉÔÅÌØÎÏ, ËÒÉÔÉÞÅÓËÁÑ ÏÛÉÂËÁ ÂÕÄÅÔ ÏÂÎÁÒÕÖÅÎÁ ÏÞÅÎØ ÓËÏÒÏ. ó ÕÑÚ×ÉÍÏÓÔØÀ ÂÅÚÏÐÁÓÎÏÓÔÉ ×Ó£ ÉÎÁÞÅ. ÷Ï-ÐÅÒ×ÙÈ, ÏÎÁ ÍÏÖÅÔ ÓÏÈÒÁÎÑÔØÓÑ ÎÅÏÂÎÁÒÕÖÅÎÎÏÊ ÃÅÌÙÅ ÇÏÄÙ, ÐÏÔÏÍÕ ÞÔÏ ÞÁÝÅ ×ÓÅÇÏ ÎÅ ×ÙÚÙ×ÁÅÔ ÏÛÉÂÏË × ÒÁÂÏÔÅ. ÷Ï-×ÔÏÒÙÈ, ËÏÍÐÁÎÉÑ ÚÌÏÕÍÙÛÌÅÎÎÉËÏ× ÍÏÖÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÅÅ ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÎÅÁ×ÔÏÒÉÚÏ×ÁÎÎÏÇÏ ÄÏÓÔÕÐÁ Ë ÕÑÚ×ÉÍÏÊ ÓÉÓÔÅÍÅ, ÕÎÉÞÔÏÖÉÔØ ÉÌÉ ÐÏÄÍÅÎÉÔØ ×ÁÖÎÙÅ ÄÁÎÎÙÅ; × ÈÕÄÛÅÍ ÓÌÕÞÁÅ ÐÏÌØÚÏ×ÁÔÅÌØ ÄÁÖÅ ÎÅ ÚÁÍÅÔÉÔ ÎÁÎÅÓÅÎÎÙÊ ÕÒÏÎ. ÷-ÔÒÅÔØÉÈ, ×ÚÌÏÍ ÕÑÚ×ÉÍÏÊ ÓÉÓÔÅÍÙ ÞÁÓÔÏ ÕÐÒÏÝÁÅÔ ÚÁÄÁÞÕ ÐÒÏÎÉËÎÏ×ÅÎÉÑ ÁÔÁËÕÀÝÉÈ × ÄÒÕÇÉÅ ÓÉÓÔÅÍÙ, ËÏÔÏÒÙÅ ÎÅ ÍÏÇÕÔ ÂÙÔØ ÓËÏÍÐÒÏÍÅÔÉÒÏ×ÁÎÙ ÉÎÁÞÅ. ôÁËÉÍ ÏÂÒÁÚÏÍ, ÕÓÔÒÁÎÅÎÉÅ ÕÑÚ×ÉÍÏÓÔÉ ËÁË ÔÁËÏ×ÏÊ ÎÅÄÏÓÔÁÔÏÞÎÏ: ÓÌÅÄÕÅÔ ÒÁÚÏÓÌÁÔØ ×ÓÅÍ ÚÁÉÎÔÅÒÅÓÏ×ÁÎÎÙÍ Õ×ÅÄÏÍÌÅÎÉÑ × ÎÁÉÂÏÌÅÅ ÐÏÎÑÔÎÏÊ É ÉÓÞÅÒÐÙ×ÁÀÝÅÊ ÆÏÒÍÅ, ÞÔÏ ÐÏÚ×ÏÌÉÔ ÏÃÅÎÉÔØ ÒÉÓË É ÐÒÅÄÐÒÉÎÑÔØ ÐÏÄÈÏÄÑÝÉÅ ÍÅÒÙ. éÓÐÒÁ×ÌÅÎÉÅ ÕÑÚ×ÉÍÏÓÔÅÊ ÂÅÚÏÐÁÓÎÏÓÔÉ þÔÏ ËÁÓÁÅÔÓÑ ÐÏÒÔÏ× É ÐÁËÅÔÏ×, ÕÑÚ×ÉÍÏÓÔØ ÂÅÚÏÐÁÓÎÏÓÔÉ ÉÚÎÁÞÁÌØÎÏ ÍÏÖÅÔ ÐÏÑ×ÉÔØÓÑ × ÉÓÈÏÄÎÏÍ ÄÉÓÔÒÉÂÕÔÉ×Å ÉÌÉ ÆÁÊÌÁÈ ÐÏÒÔÁ. ÷ ÐÅÒ×ÏÍ ÓÌÕÞÁÅ, ÒÁÚÒÁÂÏÔÞÉË ÉÓÈÏÄÎÏÇÏ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ ÓËÏÒÅÅ ×ÓÅÇÏ ÓÒÁÚÕ ÖÅ ×ÙÐÕÓÔÉÔ ÐÁÔÞ ÉÌÉ ÎÏ×ÕÀ ×ÅÒÓÉÀ, É ×ÁÍ ÌÉÛØ ÐÏÎÁÄÏÂÉÔÓÑ ÓÒÁÚÕ ÏÂÎÏ×ÉÔØ ÐÏÒÔ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÉÓÐÒÁ×ÌÅÎÉÅÍ Á×ÔÏÒÁ. åÓÌÉ ÉÓÐÒÁ×ÌÅÎÉÅ ÐÏ ËÁËÏÊ-ÔÏ ÐÒÉÞÉÎÅ ÚÁÄÅÒÖÉ×ÁÅÔÓÑ, ×ÁÍ ÓÌÅÄÕÅÔ ÌÉÂÏ ÐÏÍÅÔÉÔØ ÐÏÒÔ ËÁË FORBIDDEN, ÌÉÂÏ ÄÏÂÁ×ÉÔØ × ÐÏÒÔ ×ÁÛ ÓÏÂÓÔ×ÅÎÎÙÊ ÐÁÔÞ. ÷ ÓÌÕÞÁÅ ÕÑÚ×ÉÍÏÓÔÉ ÐÏÒÔÁ ÐÒÏÓÔÏ ÉÓÐÒÁרÔÅ ÜÔÏÔ ÐÏÒÔ ËÁË ÍÏÖÎÏ ÓËÏÒÅÅ. ÷ ÌÀÂÏÍ ÓÌÕÞÁÅ ÎÕÖÎÏ ÓÌÅÄÏ×ÁÔØ ÓÔÁÎÄÁÒÔÎÏÊ ÐÒÏÃÅÄÕÒÅ ÏÔÐÒÁ×ËÉ ×ÁÛÅÇÏ ÉÚÍÅÎÅÎÉÑ, ÅÓÌÉ ×Ù ÎÅ ÏÂÌÁÄÁÅÔÅ ÐÒÁ×ÁÍÉ ÎÁ ËÏÍÍÉÔ ÉÚÍÅÎÅÎÉÑ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ × ÄÅÒÅ×Ï ÐÏÒÔÏ×. âÙÔØ ËÏÍÍÉÔÔÅÒÏÍ ÐÏÒÔÏ× ÎÅÄÏÓÔÁÔÏÞÎÏ ÄÌÑ ËÏÍÍÉÔÁ ÐÒÏÉÚ×ÏÌØÎÏÇÏ ÐÏÒÔÁ. ðÏÍÎÉÔÅ, ÞÔÏ ÏÂÙÞÎÏ Õ ÐÏÒÔÏ× ÅÓÔØ ÓÏÐÒÏ×ÏÖÄÁÀÝÉÅ, ÍÎÅÎÉÅ ËÏÔÏÒÙÈ ×Ù ÄÏÌÖÎÙ ÕÞÉÔÙ×ÁÔØ. ðÏÖÁÌÕÊÓÔÁ, ÕÂÅÄÉÔÅÓØ, ÞÔÏ ÒÅ×ÉÚÉÑ ÐÏÒÔÁ ÐÏÓÌÅ ÚÁËÒÙÔÉÑ ÕÑÚ×ÉÍÏÓÔÉ Õ×ÅÌÉÞÅÎÁ. ÷ÏÔ ËÁË ÐÏÌØÚÏ×ÁÔÅÌÉ, ÏÂÎÏ×ÌÑÀÝÉÅ ÕÓÔÁÎÏ×ÌÅÎÎÙÅ ÐÁËÅÔÙ ÎÁ ÐÏÓÔÏÑÎÎÏÊ ÏÓÎÏ×Å, Õ×ÉÄÑÔ, ÞÔÏ ÉÍ ÎÕÖÎÏ ÚÁÐÕÓÔÉÔØ ÏÂÎÏ×ÌÅÎÉÅ. ëÒÏÍÅ ÔÏÇÏ, ÎÏ×ÙÊ ÐÁËÅÔ ÂÕÄÅÔ ÓÏÂÒÁÎ É ÒÁÓÐÒÏÓÔÒÁÎÅÎ ÞÅÒÅÚ FTP É WWW ÚÅÒËÁÌÁ, ÚÁÍÅÝÁÑ ÕÑÚ×ÉÍÙÊ. åÓÌÉ × ÐÒÏÃÅÓÓÅ ÉÓÐÒÁ×ÌÅÎÉÑ ÕÑÚ×ÉÍÏÓÔÉ ÎÅ ÂÙÌÏ ÉÚÍÅÎÅÎÏ ÚÎÁÞÅÎÉÅ PORTVERSION, ÔÏ ÄÏÌÖÎÏ ÂÙÔØ Õ×ÅÌÉÞÅÎÏ ÚÎÁÞÅÎÉÅ PORTREVISION. ÷ÁÍ ÓÌÅÄÕÅÔ Õ×ÅÌÉÞÉÔØ ÚÎÁÞÅÎÉÅ PORTREVISION ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × ÐÏÒÔ ÆÁÊÌÁ Ó ÐÁÔÞÅÍ, ÎÏ ÎÅ ËÏÇÄÁ ×Ù ÏÂÎÏ×ÉÌÉ ÐÏÒÔ ÄÏ ÐÏÓÌÅÄÎÅÊ ×ÅÒÓÉÉ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ, ÐÏÐÕÔÎÏ ÚÁÔÒÏÎÕ× ÐÒÉ ÜÔÏÍ PORTVERSION. úÁ ÄÁÌØÎÅÊÛÅÊ ÉÎÆÏÒÍÁÃÉÅÊ ÏÂÒÁÝÁÊÔÅÓØ Ë ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÍÕ ÒÁÚÄÅÌÕ. ïÂÅÓÐÅÞÅÎÉÅ ÓÏÏÂÝÅÓÔ×Á ÉÎÆÏÒÍÁÃÉÅÊ âÁÚÁ ÄÁÎÎÙÈ VuXML ïÞÅÎØ ×ÁÖÎÙÍ É ÐÅÒ×ÏÓÔÅÐÅÎÎÙÍ ÛÁÇÏÍ ÐÒÉ ÄÅÊÓÔ×ÉÉ ËÁË ÍÏÖÎÏ ÒÁÎØÛÅ ÐÏÓÌÅ ÒÁÓËÒÙÔÉÑ ÕÑÚ×ÉÍÏÓÔÉ Ñ×ÌÑÅÔÓÑ Õ×ÅÄÏÍÌÅÎÉÅ ÓÏÏÂÝÅÓÔ×Á ÐÏÌØÚÏ×ÁÔÅÌÅÊ ÐÏÒÔÁ Ï ÏÐÁÓÎÏÓÔÉ. ôÁËÉÅ Õ×ÅÄÏÍÌÅÎÉÑ ÓÌÕÖÁÔ Ä×ÕÍ ÃÅÌÑÍ. ÷Ï-ÐÅÒ×ÙÈ, × ÓÌÕÞÁÅ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÓÅÒØÅÚÎÏÊ ÕÇÒÏÚÙ, ÂÕÄÅÔ ÐÏÓÏ×ÅÔÏ×ÁÎÏ ÐÒÉÍÅÎÉÔØ ÍÇÎÏ×ÅÎÎÏÅ ×ÏÚÄÅÊÓÔ×ÉÅ. îÁÐÒÉÍÅÒ, ÏÓÔÁÎÏ×ÉÔØ ÚÁÔÒÁÇÉ×ÁÅÍÙÊ ÓÅÔÅ×ÏÊ ÓÅÒ×ÉÓ ÉÌÉ ÄÁÖÅ ÕÄÁÌÉÔØ ÐÏÒÔ ÃÅÌÉËÏÍ, ÐÏËÁ ÕÑÚ×ÉÍÏÓÔØ ÎÅ ÂÕÄÅÔ ÕÓÔÒÁÎÅÎÁ. ÷Ï-×ÔÏÒÙÈ, ÍÁÓÓÁ ÐÏÌØÚÏ×ÁÔÅÌÅÊ ÉÍÅÅÔ ÔÅÎÄÅÎÃÉÀ ÏÂÎÏ×ÌÑÔØ ÕÓÔÁÎÏ×ÌÅÎÎÙÅ ÐÁËÅÔÙ ÔÏÌØËÏ ÏÔ ÓÌÕÞÁÑ Ë ÓÌÕÞÁÀ. éÚ Õ×ÅÄÏÍÌÅÎÉÑ ÏÎÉ ÕÚÎÁÀÔ, ÞÔÏ ÄÏÌÖÎÙ ÏÂÎÏ×ÉÔØ ÐÁËÅÔ ÂÅÚ ÐÒÏÍÅÄÌÅÎÉÑ ÓÒÁÚÕ ÖÅ ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÉÓÐÒÁ×ÌÅÎÎÏÊ ×ÅÒÓÉÉ. õÞÉÔÙ×ÁÑ ÏÇÒÏÍÎÏÅ ÞÉÓÌÏ ÐÏÒÔÏ× × ÄÅÒÅ×Å, ÎÅ×ÏÚÍÏÖÎÏ ÐÏ ËÁÖÄÏÍÕ ÓÌÕÞÁÀ ×ÙÐÕÓËÁÔØ ÂÀÌÌÅÔÅÎØ ÂÅÚÏÐÁÓÎÏÓÔÉ ÂÅÚ ÓÏÚÄÁÎÉÑ ÆÌÕÄÁ É ÐÏÔÅÒÉ ×ÎÉÍÁÎÉÑ ÓÏÏÂÝÅÓÔ×Á Ë ÍÏÍÅÎÔÕ ÐÏÑ×ÌÅÎÉÑ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÓÅÒØÅÚÎÙÈ ÐÒÉÞÉÎ. ðÏÜÔÏÍÕ ÕÑÚ×ÉÍÏÓÔÉ ÂÅÚÏÐÁÓÎÏÓÔÉ, ÏÂÎÁÒÕÖÅÎÎÙÅ × ÐÏÒÔÁÈ, ÚÁÐÉÓÙ×ÁÀÔÓÑ × ÂÁÚÕ ÄÁÎÎÙÈ FreeBSD VuXML. þÌÅÎÙ ëÏÍÁÎÄÙ ïÆÉÃÅÒÏ× âÅÚÏÐÁÓÎÏÓÔÉ ÔÁËÖÅ ÏÔÓÌÅÖÉ×ÁÀÔ Å£ ÎÁ ÐÒÅÄÍÅÔ ÐÏÑ×ÌÅÎÉÑ ×ÏÐÒÏÓÏ×, ÔÒÅÂÕÀÝÉÈ ÉÈ ×ÍÅÛÁÔÅÌØÓÔ×Á. åÓÌÉ ×Ù ÏÂÌÁÄÁÅÔÅ ÐÒÁ×ÁÍÉ ËÏÍÍÉÔÔÅÒÁ, ×Ù ÍÏÖÅÔÅ ÓÁÍ ÏÂÎÏ×ÉÔØ ÂÁÚÕ ÄÁÎÎÙÈ VuXML. ôÁË ×Ù ÐÏÍÏÖÅÔÅ ëÏÍÁÎÄÅ ïÆÉÃÅÒÏ× âÅÚÏÐÁÓÎÏÓÔÉ É Ó×ÏÅ×ÒÅÍÅÎÎÏ ÐÏÛÌÅÔÅ ÃÅÎÎÕÀ ÉÎÆÏÒÍÁÃÉÀ ÓÏÏÂÝÅÓÔ×Õ. ôÅÍ ÎÅ ÍÅÎÅÅ, ÅÓÌÉ ×Ù ÎÅ Ñ×ÌÑÅÔÅÓØ ËÏÍÍÉÔÔÅÒÏÍ ÉÌÉ ×ÅÒÉÔÅ, ÞÔÏ ÎÁÛÌÉ ÉÓËÌÀÞÉÔÅÌØÎÏ ÓÅÒØÅÚÎÕÀ ÕÑÚ×ÉÍÏÓÔØ, ÔÏ ÎÅ ÚÁÄÕÍÙ×ÁÑÓØ Ó×ÑÖÉÔÅÓØ Ó ëÏÍÁÎÄÏÊ ïÆÉÃÅÒÏ× âÅÚÏÐÁÓÎÏÓÔÉ ÎÁÐÒÑÍÕÀ ËÁË ÜÔÏ ÏÐÉÓÁÎÏ ÎÁ ÓÔÒÁÎÉÃÅ ÉÎÆÏÒÍÁÃÉÏÎÎÏÊ ÂÅÚÏÐÁÓÎÏÓÔÉ FreeBSD. âÁÚÁ ÄÁÎÎÙÈ VuXML Ñ×ÌÑÅÔÓÑ ÄÏËÕÍÅÎÔÏÍ XML. åÇÏ ÉÓÈÏÄÎÙÊ ÆÁÊÌ vuln.xml ÓÏÄÅÒÖÉÔÓÑ ÐÒÑÍÏ ×ÎÕÔÒÉ ÐÏÒÔÁ security/vuxml. ðÏÜÔÏÍÕ ÐÏÌÎÏÅ ÉÍÑ ÐÕÔÉ Ë ÆÁÊÌÕ ÂÕÄÅÔ PORTSDIR/security/vuxml/vuln.xml. ëÁÖÄÙÊ ÒÁÚ, ÐÒÉ ÏÂÎÁÒÕÖÅÎÉÉ ×ÁÍÉ × ÐÏÒÔÅ ÕÑÚ×ÉÍÏÓÔÉ ÂÅÚÏÐÁÓÎÏÓÔÉ ÄÏÂÁרÔÅ Ï ÜÔÏÍ ÚÁÐÉÓØ × ÜÔÏÔ ÆÁÊÌ. ðÏËÁ ×Ù ÎÅ ÚÎÁËÏÍÙ Ó VuXML, ÌÕÞÛÅÅ, ÞÔÏ ×Ù ÍÏÖÅÔÅ ÓÄÅÌÁÔØ, ÜÔÏ ÎÁÊÔÉ ÓÕÝÅÓÔ×ÕÀÝÕÀ ÚÁÐÉÓØ, ÐÏÄÐÁÄÁÀÝÕÀ ÐÏÄ ×ÁÛ ÓÌÕÞÁÊ, ÚÁÔÅÍ ÓËÏÐÉÒÏ×ÁÔØ ÅÅ É ÉÓÐÏÌØÚÏ×ÁÔØ × ËÁÞÅÓÔ×Å ÛÁÂÌÏÎÁ. ëÏÒÏÔËÏÅ ×ÓÔÕÐÌÅÎÉÅ × VuXML ÷ ÓÏ×ÏËÕÐÎÏÓÔÉ XML Ñ×ÌÑÅÔÓÑ ÏÞÅÎØ ÓÌÏÖÎÙÍ ÆÏÒÍÁÔÏÍ, É ÅÇÏ ÏÐÉÓÁÎÉÅ ×ÙÈÏÄÉÔ ÄÁÌÅËÏ ÚÁ ÒÁÍËÉ ÜÔÏÊ ËÎÉÇÉ. ôÅÍ ÎÅ ÍÅÎÅÅ, ÄÌÑ ÄÏÓÔÉÖÅÎÉÑ ÏÓÎÏ×ÎÏÇÏ ÐÏÎÉÍÁÎÉÑ ÓÔÒÕËÔÕÒÙ ÚÁÐÉÓÉ VuXML ×ÁÍ ÐÏÎÁÄÏÂÉÔÓÑ ×ÓÅÇÏ ÌÉÛØ ÐÏÎÑÔØ ÔÅÇÉ. éÍÅÎÁ ÔÅÇÏ× XML ÏÂÒÁÍÌÑÀÔÓÑ × ÕÇÌÏ×ÙÅ ÓËÏÂËÉ. ëÁÖÄÙÊ ÏÔËÒÙ×ÁÀÝÉÊ <ÔÅÇ> ÄÏÌÖÅÎ ÉÍÅÔØ ÓÏ×ÐÁÄÁÀÝÉÊ ÚÁËÒÙ×ÁÀÝÉÊ </tag>. ôÅÇÉ ÍÏÇÕÔ ÂÙÔØ ×ÌÏÖÅÎÎÙÍÉ. ðÒÉ ×ÌÏÖÅÎÎÏÓÔÉ ×ÎÕÔÒÅÎÎÉÅ ÔÅÇÉ ÄÏÌÖÎÙ ÂÙÔØ ÚÁËÒÙÔÙ ÄÏ ÚÁËÒÙÔÉÑ ×ÎÅÛÎÉÈ. óÕÝÅÓÔ×ÕÅÔ ÉÅÒÁÒÈÉÑ ÔÅÇÏ×, Ô.Å. ÂÏÌÅÅ ÓÌÏÖÎÙÅ ÐÒÁ×ÉÌÁ ×ËÌÁÄÙ×ÁÎÉÑ ÔÅÇÏ×. ïÞÅÎØ ÐÏÈÏÖÅ ÎÁ HTML, ÐÒÁ×ÄÁ? ïÓÎÏ×ÎÏÅ ÏÔÌÉÞÉÅ × ÒÁÓÛÉÒÑÅÍÏÓÔÉ XML, Ô.Å. ÏÐÒÅÄÅÌÅÎÉÉ ÓÏÂÓÔ×ÅÎÎÙÈ ÔÅÇÏ×. éÚ-ÚÁ Ó×ÏÅÊ ÈÁÒÁËÔÅÒÎÏÊ ÓÔÒÕËÔÕÒÙ XML ÐÒÉÄÁÅÔ ÆÏÒÍÕ ÒÁÚÒÏÚÎÅÎÎÙÍ ÄÁÎÎÙÍ. ÷ ÞÁÓÔÎÏÓÔÉ, XML ÐÏÄÈÏÄÉÔ ÄÌÑ ÒÁÚÍÅÔËÉ ÏÐÉÓÁÎÉÊ ÕÑÚ×ÉÍÏÓÔÅÊ ÂÅÚÏÐÁÓÎÏÓÔÉ. ôÅÐÅÒØ ÄÁ×ÁÊÔÅ ×ÏÚØÍÅÍ ÎÁÓÔÏÑÝÕÀ ÚÁÐÉÓØ VuXML: <vuln vid="f4bc80f4-da62-11d8-90ea-0004ac98a7b9"> <topic>Several vulnerabilities found in Foo</topic> <affects> <package> <name>foo</name> <name>foo-devel</name> <name>ja-foo</name> <range><ge>1.6</ge><lt>1.9</lt></range> <range><ge>2.*</ge><lt>2.4_1</lt></range> <range><eq>3.0b1</eq></range> </package> <package> <name>openfoo</name> <range><lt>1.10_7</lt></range> <range><ge>1.2,1</ge><lt>1.3_1,1</lt></range> </package> </affects> <description> <body xmlns="http://www.w3.org/1999/xhtml"> <p>J. Random Hacker reports:</p> <blockquote cite="http://j.r.hacker.com/advisories/1"> <p>Several issues in the Foo software may be exploited via carefully crafted QUUX requests. These requests will permit the injection of Bar code, mumble theft, and the readability of the Foo administrator account.</p> </blockquote> </body> </description> <references> <freebsdsa>SA-10:75.foo</freebsdsa> <freebsdpr>ports/987654</freebsdpr> <cvename>CAN-2010-0201</cvename> <cvename>CAN-2010-0466</cvename> <bid>96298</bid> <certsa>CA-2010-99</certsa> <certvu>740169</certvu> <uscertsa>SA10-99A</uscertsa> <uscertta>SA10-99A</uscertta> <mlist msgid="201075606@hacker.com">http://marc.theaimsgroup.com/?l=bugtraq&amp;m=203886607825605</mlist> <url>http://j.r.hacker.com/advisories/1</url> </references> <dates> <discovery>2010-05-25</discovery> <entry>2010-07-13</entry> <modified>2010-09-17</modified> </dates> </vuln> éÍÅÎÁ ÔÅÇÏ× ÄÏÌÖÎÙ ÂÙÔØ ÓÁÍÏÄÏËÕÍÅÎÔÉÒÕÅÍÙÍÉ, ÞÔÏÂÙ ÍÙ ÓÆÏËÕÓÉÒÏ×ÁÌÉÓØ ÔÏÌØËÏ ÎÁ ÐÏÌÑÈ, ÎÕÖÎÙÈ ÎÁÍ ÄÌÑ ÚÁÐÏÌÎÅÎÉÑ: üÔÏ ÔÅÇ ×ÅÒÈÎÅÇÏ ÕÒÏ×ÎÑ ÚÁÐÉÓÉ VuXML. õ ÎÅÇÏ ÅÓÔØ ÏÂÑÚÁÔÅÌØÎÙÊ ÁÔÒÉÂÕÔ vid, ÕËÁÚÙ×ÁÀÝÉÊ ÎÁ ÕÎÉ×ÅÒÓÁÌØÎÙÊ ÕÎÉËÁÌØÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ (UUID) ÄÌÑ ÜÔÏÊ ÚÁÐÉÓÉ (× ËÁ×ÙÞËÁÈ). ÷Ù ÄÏÌÖÎÙ ÆÏÒÍÉÒÏ×ÁÔØ UUID ÄÌÑ ËÁÖÄÏÊ ÎÏ×ÏÊ ÚÁÐÉÓÉ VuXML (É ÎÅ ÚÁÂÕÄØÔÅ ÚÁÍÅÎÉÔØ ÅÅ ÄÌÑ ÛÁÂÌÏÎÁ UUID, ÅÓÌÉ ×Ù ÎÅ ÐÉÛÅÔÅ ÚÁÐÉÓØ Ó ÎÕÌÑ). äÌÑ ÐÏÌÕÞÅÎÉÑ VuXML UUID ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ &man.uuidgen.1;. ïÄÎÏÓÔÒÏÞÎÏÅ ÏÐÉÓÁÎÉÅ ÎÁÊÄÅÎÎÏÊ ÐÒÏÂÌÅÍÙ. úÄÅÓØ ÐÅÒÅÞÉÓÌÅÎÙ ÉÍÅÎÁ ÚÁÔÒÏÎÕÔÙÈ ÐÁËÅÔÏ×. íÏÖÅÔ ÂÙÔØ ÄÁÎÏ ÎÅÓËÏÌØËÏ ÉÍÅÎ, ÐÏÓËÏÌØËÕ ÎÅËÏÔÏÒÙÅ ÐÁËÅÔÙ ÍÏÇÕÔ ÂÙÔØ ÏÓÎÏ×ÁÎÙ ÎÁ ÏÄÎÏÍ ÇÌÁ×ÎÏÍ ÐÏÒÔÅ ÉÌÉ ÐÒÏÇÒÁÍÍÎÏÍ ÐÒÏÄÕËÔÅ. óÀÄÁ ÍÏÖÎÏ ×ËÌÀÞÉÔØ ÓÔÁÂÉÌØÎÕÀ ×ÅÔר É ×ÅÔר ÒÁÚÒÁÂÏÔËÉ, ÌÏËÁÌÉÚÏ×ÁÎÎÙÅ ×ÅÒÓÉÉ É ÐÏÄÞÉÎÅÎÎÙÅ ÐÏÒÔÙ, ÚÁ×ÉÓÑÝÉÅ ÏÔ ÒÁÚÌÉÞÎÏÇÏ ×ÙÂÏÒÁ ×ÁÖÎÙÈ ×ÁÒÉÁÎÔÏ× ËÏÎÆÉÇÕÒÁÃÉÉ, ÕËÁÚÁÎÎÙÈ ÎÁ ÜÔÁÐÅ ÐÏÓÔÒÏÅÎÉÑ. ðÏÉÓË ×ÓÅÈ ÐÏÄÏÂÎÙÈ ÐÁËÅÔÏ× ÐÒÉ ÎÁÐÉÓÁÎÉÉ ÚÁÐÉÓÉ VuXML ×ÈÏÄÉÔ × ÚÏÎÕ ×ÁÛÅÊ ÏÔ×ÅÔÓÔ×ÅÎÎÏÓÔÉ. éÍÅÊÔÅ × ×ÉÄÕ, ÞÔÏ make search name=foo ÜÔÏ ×ÁÛ ÄÒÕÇ. ðÅÒ×ÉÞÎÙÅ ÔÏÞËÉ ÄÌÑ ÐÏÉÓËÁ ÓÌÅÄÕÀÝÉÅ: ×ÁÒÉÁÎÔ foo-devel ÄÌÑ ÐÏÒÔÁ foo; ÄÒÕÇÉÅ ×ÁÒÉÁÎÔÙ Ó ÓÕÆÆÉËÓÁÍÉ ×ÉÄÁ -a4 (ÄÌÑ ÐÁËÅÔÏ×, Ó×ÑÚÁÎÎÙÈ Ó ÐÅÞÁÔØÀ), -without-gui (ÄÌÑ ÐÁËÅÔÏ× Ó ÏÔËÌÀÞÅÎÎÏÊ ÐÏÄÄÅÒÖËÏÊ X), ÉÌÉ ÐÏÄÏÂÎÙÈ; jp-, ru-, zh- É ÄÒÕÇÉÅ ×ÏÚÍÏÖÎÙÅ ÌÏËÁÌÉÚÏ×ÁÎÎÙÅ ×ÁÒÉÁÎÔÙ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÎÁÃÉÏÎÁÌØÎÙÈ ËÁÔÅÇÏÒÉÑÈ ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ×. úÄÅÓØ ÕËÁÚÁÎÙ ÚÁÔÒÏÎÕÔÙÅ ×ÅÒÓÉÉ ÐÁËÅÔÁ(-Ï×) ËÁË ÏÄÉÎ ÉÌÉ ÂÏÌÅÅ ÄÉÁÐÁÚÏÎÏ× Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ËÏÍÂÉÎÁÃÉÉ ÜÌÅÍÅÎÔÏ× <lt>, <le>, <eq>, <ge>, É <gt>. äÉÁÐÁÚÏÎÙ ×ÎÅÓ£ÎÎÙÈ ×ÅÒÓÉÊ ÎÅ ÄÏÌÖÎÙ ÐÅÒÅÓÅËÁÔØÓÑ. ÷ ÓÐÅÃÉÆÉËÁÃÉÉ ÄÉÁÐÁÚÏÎÏ× * (Ú×£ÚÄÏÞËÁ) ÏÚÎÁÞÁÅÔ ÎÁÉÍÅÎØÛÉÊ ÎÏÍÅÒ ×ÅÒÓÉÉ. ÷ ÞÁÓÔÎÏÓÔÉ, 2.* ÍÅÎØÛÅ, ÞÅÍ 2.a. ðÏÜÔÏÍÕ Ú×ÅÚÄÏÞËÁ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ × ÄÉÁÐÁÚÏÎÅ ÄÌÑ ÓÏ×ÐÁÄÅÎÉÑ ÓÏ ×ÓÅÍÉ ×ÏÚÍÏÖÎÙÍÉ alpha, beta É RC ×ÅÒÓÉÑÍÉ. ëÁË ×ÁÒÉÁÎÔ, <ge>2.*</ge><lt>3.*</lt> ×ÙÂÏÒÏÞÎÏ ÓÏ×ÐÁÄÅÔ Ó ×ÅÒÓÉÅÊ 2.x, Á <ge>2.0</ge><lt>3.0</lt> - ÎÅÔ, ÐÏÓËÏÌØËÕ ÐÏÓÌÅÄÎÅÅ ÎÅ ×ËÌÀÞÁÅÔ 2.r3 É ÓÏ×ÐÁÄÁÅÔ Ó 3.b. ðÒÉÍÅÒ ×ÙÛÅ ÕËÁÚÙ×ÁÅÔ, ÞÔÏ Ë ÚÁÔÒÏÎÕÔÙÍ ÏÔÎÏÓÑÔÓÑ ×ÅÒÓÉÉ Ó 1.6 ÄÏ 1.9 ×ËÌÀÞÉÔÅÌØÎÏ, ×ÅÒÓÉÉ 2.x ÄÏ 2.4_1 É ×ÅÒÓÉÑ 3.0b1. îÅËÏÔÏÒÙÅ Ó×ÑÚÁÎÎÙÅ ÇÒÕÐÐÙ ÐÁËÅÔÏ× (× ËÏÎÅÞÎÏÍ ÓÞÅÔÅ, ÐÏÒÔÙ) ÍÏÇÕÔ ÂÙÔØ ÕËÁÚÁÎÙ × ÒÁÚÄÅÌÅ <affected>. üÔÏ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ, ÅÓÌÉ ÎÅËÏÔÏÒÙÅ ÐÒÏÇÒÁÍÍÎÙÅ ÐÒÏÄÕËÔÙ (ÓËÁÖÅÍ, FooBar, FreeBar and OpenBar) Ñ×ÌÑÀÔÓÑ ÐÒÏÉÚ×ÏÄÎÙÍÉ ÏÔ ÏÂÝÅÊ ËÏÄÏ×ÏÊ ÂÁÚÙ É ×Ó£ ÅÝÅ ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÕÀÔ Å£ ÏÛÉÂËÉ É ÕÑÚ×ÉÍÏÓÔÉ. éÍÅÊÔÅ × ×ÉÄÕ ÏÔÌÉÞÉÅ ÏÔ ÐÅÒÅÞÉÓÌÅÎÉÑ ÍÎÏÖÅÓÔ×ÅÎÎÙÈ ÉÍ£Î × ÏÄÎÏÍ ÒÁÚÄÅÌÅ <package>. äÉÁÐÁÚÏÎÙ ×ÅÒÓÉÊ ÄÏÌÖÎÙ ÕÞÉÔÙ×ÁÔØ PORTEPOCH É PORTREVISION, ÅÓÌÉ ÜÔÏ ÐÒÉÍÅÎÉÍÏ. ðÏÖÁÌÕÊÓÔÁ, ÐÏÍÎÉÔÅ, ÞÔÏ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÐÒÁ×ÉÌÁÍÉ ÓÒÁ×ÎÅÎÉÑ ÓÔÒÏË ×ÅÒÓÉÑ Ó ÎÅÎÕÌÅ×ÙÍ ÚÎÁÞÅÎÉÅÍ PORTEPOCH ×ÙÛÅ, ÞÅÍ ÌÀÂÁÑ ×ÅÒÓÉÑ ÂÅÚ PORTEPOCH, ÎÁÐÒÉÍÅÒ, 3.0,1 ×ÙÛÅ, ÞÅÍ 3.1 ÉÌÉ ÄÁÖÅ 8.9. ó×ÏÄÎÁÑ ÉÎÆÏÒÍÁÃÉÑ Ï ÐÒÏÂÌÅÍÅ. ÷ ÜÔÏÍ ÐÏÌÅ ÉÓÐÏÌØÚÕÅÔÓÑ XHTML. ðÏ ËÒÁÊÎÅÊ ÍÅÒÅ, ÄÏÌÖÎÙ ÂÙÔØ ÏÂÒÁÍÌÑÀÝÉÅ <p> É </p>. íÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ ÂÏÌÅÅ ÓÌÏÖÎÁÑ ÒÁÚÍÅÔËÁ, ÎÏ ÔÏÌØËÏ × ÃÅÌÑÈ ÁËËÕÒÁÔÎÏÓÔÉ É ÑÓÎÏÓÔÉ: ÂÅÚ ÜÓÔÅÔÓÔ×Á, ÐÏÖÁÌÕÊÓÔÁ. üÔÏÔ ÒÁÚÄÅÌ ÓÏÄÅÒÖÉÔ ÓÓÙÌËÉ ÎÁ ÉÍÅÀÝÉÅ ÏÔÎÏÛÅÎÉÅ ÄÏËÕÍÅÎÔÙ. ðÒÉ×ÅÔÓÔ×ÕÅÔÓÑ ËÁË ÍÏÖÎÏ ÂÏÌØÛÅÅ ËÏÌÉÞÅÓÔ×Ï ÓÓÙÌÏË. üÔÏ ÂÀÌÌÅÔÅÎØ ÂÅÚÏÐÁÓÎÏÓÔÉ FreeBSD. üÔÏ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ FreeBSD. éÄÅÎÔÉÆÉËÁÔÏÒ MITRE CVE. üÔÏ SecurityFocus Bug ID. âÀÌÌÅÔÅÎØ ÂÅÚÏÐÁÓÎÏÓÔÉ US-CERT. ðÒÉÍÅÞÁÎÉÅ Ë ÕÑÚ×ÉÍÏÓÔÉ US-CERT. õ×ÅÄÏÍÌÅÎÉÅ ÓÉÓÔÅÍÙ Cyber Security Alert US-CERT. õ×ÅÄÏÍÌÅÎÉÅ ÓÉÓÔÅÍÙ Technical Cyber Security Alert US-CERT. URL Ë ÁÒÈÉ×ÎÏÍÕ ÓÏÏÂÝÅÎÉÀ × ÓÐÉÓËÅ ÒÁÓÓÙÌËÉ. áÔÒÉÂÕÔ msgid Ñ×ÌÑÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÍ É ÍÏÖÅÔ ÕËÁÚÙ×ÁÔØ ÎÁ message ID ÓÏÏÂÝÅÎÉÑ. ïÓÎÏ×ÎÏÊ URL. äÏÌÖÅÎ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ × ÓÌÕÞÁÅ, ÅÓÌÉ ÎÅ ÐÏÄÈÏÄÉÔ ÎÉ ÏÄÎÁ ÉÚ ËÁÔÅÇÏÒÉÊ ÉÓÔÏÞÎÉËÁ. äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÉÚÍÅÎÅÎÉÑ ÌÀÂÏÊ ÉÎÆÏÒÍÁÃÉÉ ÄÁÎÎÏÊ ÚÁÐÉÓÉ (YYYY-MM-DD). îÏ×ÙÅ ÚÁÐÉÓÉ ÎÅ ÄÏÌÖÎÙ ×ËÌÀÞÁÔØ ÜÔÏ ÐÏÌÅ. ðÏÌÅ ÄÏÌÖÎÏ ÂÙÔØ ÄÏÂÁ×ÌÅÎÏ ÐÏÓÌÅ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ÓÕÝÅÓÔ×ÕÀÝÅÊ ÚÁÐÉÓÉ. ôÅÓÔÉÒÏ×ÁÎÉÅ ×ÁÛÉÈ ÉÚÍÅÎÅÎÉÊ × ÂÁÚÅ ÄÁÎÎÙÈ VuXML ðÒÅÄÐÏÌÏÖÉÍ, ÞÔÏ ×Ù ÔÏÌØËÏ ÞÔÏ ÎÁÐÉÓÁÌÉ ÉÌÉ ÚÁÐÏÌÎÉÌÉ ÚÁÐÉÓØ Ï ÕÑÚ×ÉÍÏÓÔÉ × ÐÁËÅÔÅ clamav, ËÏÔÏÒÁÑ ÂÙÌÁ ÉÓÐÒÁ×ÌÅÎÁ × ×ÅÒÓÉÉ 0.65_7. ðÒÅÖÄÅ ×ÓÅÇÏ, ×ÁÍ ÎÕÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÐÏÓÌÅÄÎÉÅ ×ÅÒÓÉÉ ÐÏÒÔÏ× ports-mgmt/portaudit, ports-mgmt/portaudit-db É security/vuxml. äÌÑ ÚÁÐÕÓËÁ packaudit ×Ù ÄÏÌÖÎÙ ÏÂÌÁÄÁÔØ ÐÒÁ×ÁÍÉ ÎÁ ÚÁÐÉÓØ × DATABASEDIR; ËÁË ÐÒÁ×ÉÌÏ, ÜÔÏ /var/db/portaudit. äÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÄÒÕÇÏÇÏ ËÁÔÁÌÏÇÁ ÐÒÉÓ×ÏÊÔÅ ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ DATABASEDIR ÄÒÕÇÏÊ ÐÕÔØ. åÓÌÉ ×Ù ÒÁÂÏÔÁÅÔÅ × ËÁÔÁÌÏÇÅ, ÏÔÌÉÞÎÏÍ ÏÔ ${PORTSDIR}/security/vuxml, ÐÒÉÓ×ÏÊÔÅ ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ VUXMLDIR ÐÕÔØ Ë ËÁÔÁÌÏÇÕ, × ËÏÔÏÒÏÍ ÎÁÈÏÄÉÔÓÑ vuln.xml. ÷Ï-ÐÅÒ×ÙÈ, ÐÒÏ×ÅÒØÔÅ, ÎÅÔ ÌÉ ÕÖÅ ÚÁÐÉÓÉ Ï ÜÔÏÊ ÕÑÚ×ÉÍÏÓÔÉ. åÓÌÉ ÔÁËÁÑ ÚÁÐÉÓØ ÅÓÔØ, ÏÎÁ ÓÏ×ÐÁÄ£Ô Ó ÐÒÅÄÙÄÕÝÅÊ ×ÅÒÓÉÅÊ ÐÁËÅÔÁ 0.65_6: &prompt.user; packaudit &prompt.user; portaudit clamav-0.65_6 åÓÌÉ ÎÉÞÅÇÏ ÎÅ ÎÁÊÄÅÎÏ, ÚÎÁÞÉÔ ×Ù ÐÏÌÕÞÉÌÉ ÚÅÌÅÎÙÊ Ó×ÅÔ ÄÌÑ ÄÏÂÁ×ÌÅÎÉÑ ÎÏ×ÏÊ ÚÁÐÉÓÉ ÄÌÑ ÜÔÏÊ ÕÑÚ×ÉÍÏÓÔÉ. &prompt.user; cd ${PORTSDIR}/security/vuxml &prompt.user; make newentry ëÏÇÄÁ ×Ù ÚÁËÏÎÞÉÔÅ, ÐÒÏ×ÅÒØÔÅ ÓÉÎÔÁËÓÉÓ É ÆÏÒÍÁÔÉÒÏ×ÁÎÉÅ. &prompt.user; make validate ÷ÁÍ ÐÏÎÁÄÏÂÉÔÓÑ ÕÓÔÁÎÏ×ÉÔØ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÏÄÉÎ ÉÚ ÓÌÅÄÕÀÝÉÈ ÐÁËÅÔÏ×: textproc/libxml2, textproc/jade. ôÅÐÅÒØ ×ÙÐÏÌÎÉÔÅ ÐÅÒÅÐÏÓÔÒÏÅÎÉÅ ÂÁÚÙ ÄÁÎÎÙÈ portaudit ÉÚ ÆÁÊÌÁ VuXML: &prompt.user; packaudit þÔÏÂÙ ÕÂÅÄÉÔØÓÑ, ÞÔÏ ÒÁÚÄÅÌ <affected> × ×ÁÛÅÊ ÚÁÐÉÓÉ ÓÏ×ÐÁÄÁÅÔ Ó ÐÒÁ×ÉÌØÎÙÍÉ ÐÁËÅÔÁÍÉ, ×ÙÐÏÌÎÉÔÅ ÓÌÅÄÕÀÝÕÀ ËÏÍÁÎÄÕ: &prompt.user; portaudit -f /usr/ports/INDEX -r uuid äÌÑ ÌÕÞÛÅÇÏ ÐÏÎÉÍÁÎÉÑ ÓÉÎÔÁËÓÉÓÁ ÜÔÏÊ ËÏÍÁÎÄÙ ÏÂÒÁÝÁÊÔÅÓØ Ë &man.portaudit.1;. õÂÅÄÉÔÅÓØ, ÞÔÏ ×ÁÛÁ ÚÁÐÉÓØ ÎÅ ÐÒÏÉÚ×ÏÄÉÔ ÌÏÖÎÙÈ ÓÏ×ÐÁÄÅÎÉÊ × ×Ù×ÏÄÅ. ôÅÐÅÒØ ÐÒÏ×ÅÒØÔÅ, ÓÏ×ÐÁÄÁÅÔ ÌÉ ×ÁÛÁ ÚÁÐÉÓØ Ó ÎÕÖÎÙÍÉ ×ÅÒÓÉÑÍÉ ÐÁËÅÔÁ: &prompt.user; portaudit clamav-0.65_6 clamav-0.65_7 Affected package: clamav-0.65_6 (matched by clamav<0.65_7) Type of problem: clamav remote denial-of-service. Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-0020ed76ef5a.html> 1 problem(s) found. ðÅÒ×ÁÑ ×ÅÒÓÉÑ ÄÏÌÖÎÁ ÓÏ×ÐÁÓÔØ, Á ÐÏÓÌÅÄÎÑÑ ÎÅÔ. ÷ ÚÁËÌÀÞÅÎÉÅ ÐÒÏ×ÅÒØÔÅ, ÞÔÏ ×ÅÂ-ÓÔÒÁÎÉÃÁ, ÓÆÏÒÍÉÒÏ×ÁÎÎÁÑ ÉÚ ÂÁÚÙ ÄÁÎÎÙÈ VuXML, ×ÙÇÌÑÄÉÔ ËÁË ÐÏÌÏÖÅÎÏ: &prompt.user; mkdir -p ~/public_html/portaudit &prompt.user; packaudit &prompt.user; lynx ~/public_html/portaudit/74a9541d-5d6c-11d8-80e3-0020ed76ef5a.html þÔÏ ÄÅÌÁÔØ ÎÕÖÎÏ, É ÞÔÏ ÄÅÌÁÔØ ÎÅÌØÚÑ ÷×ÅÄÅÎÉÅ ÷ÏÔ ÓÐÉÓÏË ÞÁÓÔÏ ×ÓÔÒÅÞÁÀÝÉÈÓÑ ÄÅÊÓÔ×ÉÊ, ËÏÔÏÒÙÅ ÎÕÖÎÏ É ËÏÔÏÒÙÅ ÎÅÌØÚÑ ÄÅÌÁÔØ ×Ï ×ÒÅÍÑ ÐÒÏÃÅÓÓÁ ÐÏÒÔÉÒÏ×ÁÎÉÑ. ÷Ù ÄÏÌÖÎÙ ÐÒÏ×ÅÒÑÔØ ×ÁÛ ÐÏÒÔ ÐÏ ÜÔÏÍÕ ÓÐÉÓËÕ, É ×Ù ÔÁËÖÅ ÍÏÖÅÔÅ ÐÒÏ×ÅÒÑÔØ ÐÏÒÔÙ × ÂÁÚÅ ÓÏÏÂÝÅÎÉÊ PR, ËÏÔÏÒÙÅ ÐÒÉÓÌÁÎÙ ÄÒÕÇÉÍÉ ÌÀÄØÍÉ. ðÒÉÓÙÌÁÊÔÅ ÌÀÂÙÅ ËÏÍÍÅÎÔÁÒÉÉ Ï ÐÏÒÔÁÈ, ËÏÔÏÒÙÅ ×Ù ÐÒÏ×ÅÒÉÌÉ, ÔÁË, ËÁË ÜÔÏ ÏÐÉÓÁÎÏ × ÓÔÁÔØÅ Ï óÏÏÂÝÅÎÉÑÈ Ï ÏÛÉÂËÁÈ É ÏÂÝÉÈ ÚÁÍÅÞÁÎÉÑÈ. ðÒÏ×ÅÒËÁ ÐÏÒÔÏ× × ÂÁÚÅ ÓÏÏÂÝÅÎÉÊ PR ÐÏÚ×ÏÌÉÔ ÎÁÍ ÂÙÓÔÒÅÅ ËÏÍÍÉÔÔÉÔØ ÉÈ É ÕÄÏÓÔÏ×ÅÒÉÔØÓÑ, ÞÔÏ ×Ù ÚÎÁÅÔÅ, ÞÔÏ ÄÅÌÁÅÔÅ. <makevar>WRKDIR</makevar> îÅ ÐÉÛÉÔÅ ÎÉÞÅÇÏ × ÆÁÊÌÙ ×ÎÅ ËÁÔÁÌÏÇÁ WRKDIR. ëÁÔÁÌÏÇ WRKDIR Ñ×ÌÑÅÔÓÑ ÅÄÉÎÓÔ×ÅÎÎÙÍ ÍÅÓÔÏÍ, ËÏÔÏÒÏÅ ÇÁÒÁÎÔÉÒÏ×ÁÎÎÏ ÂÕÄÅÔ ÄÏÓÔÕÐÎÏ ÄÌÑ ÚÁÐÉÓÉ ×Ï ×ÒÅÍÑ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÁ (ÏÂÒÁÔÉÔÅÓØ Ë ÇÌÁ×Å Ï ÕÓÔÁÎÏ×ËÅ ÐÏÒÔÏ× Ó CDROM ÚÁ ÐÒÉÍÅÒÏÍ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÏ× ÉÚ ÄÅÒÅ×Á, ÄÏÓÔÕÐÎÏÇÏ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ). åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÉÚÍÅÎÉÔØ ËÁËÏÊ-ÌÉÂÏ ÉÚ ÆÁÊÌÏ× pkg-*, ÓÄÅÌÁÊÔÅ ÜÔÏ, ÐÅÒÅÏÐÒÅÄÅÌÉ× ÐÅÒÅÍÅÎÎÕÀ, ÎÏ ÎÅ ÐÅÒÅÚÁÐÉÓÙ×ÁÑ ÉÈ. <makevar>WRKDIRPREFIX</makevar> äÏÂÅÊÔÅÓØ ÔÏÇÏ, ÞÔÏÂÙ ×ÁÛ ÐÏÒÔ ÐÒÉÎÉÍÁÌ ×Ï ×ÎÉÍÁÎÉÅ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ WRKDIRPREFIX. âÏÌØÛÉÎÓÔ×Ï ÐÏÒÔÏ× Ï ÜÔÏÍ ÎÅ ÚÁÂÏÔÑÔÓÑ. ÷ ÞÁÓÔÎÏÓÔÉ, ÅÓÌÉ ×Ù ÏÂÒÁÝÁÅÔÅÓØ Ë ËÁÔÁÌÏÇÕ WRKDIR ÄÒÕÇÏÇÏ ÐÏÒÔÁ, ÚÁÍÅÔØÔÅ, ÞÔÏ ÅÇÏ ÐÒÁ×ÉÌØÎÙÍ ÍÅÓÔÏÐÏÌÏÖÅÎÉÅÍ Ñ×ÌÑÅÔÓÑ WRKDIRPREFIXPORTSDIR/subdir/name/work not PORTSDIR/subdir/work ÉÌÉ .CURDIR/../../subdir/name/work ÉÌÉ ÞÔÏ-ÔÏ ÐÏÄÏÂÎÏÅ. ëÒÏÍÅ ÔÏÇÏ, ÅÓÌÉ ×Ù ÓÁÍÉ ÚÁÄÁÅÔÅ WRKDIR, ÔÏ ÄÏÌÖÎÙ ÐÏÓÔÁ×ÉÔØ ÐÅÒÅÄ ÎÉÍ ÚÎÁË ${WRKDIRPREFIX}${.CURDIR}. òÁÚÌÉÞÅÎÉÅ ÏÐÅÒÁÃÉÏÎÎÙÈ ÓÉÓÔÅÍ É ×ÅÒÓÉÊ ïó ÷Ù ÍÏÖÅÔÅ ×ÓÔÒÅÔÉÔØÓÑ Ó ËÏÄÏÍ, ËÏÔÏÒÙÊ ÔÒÅÂÕÅÔ ÍÏÄÉÆÉËÁÃÉÊ ÉÌÉ ÕÓÌÏ×ÎÏÊ ËÏÍÐÉÌÑÃÉÉ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÔÏÇÏ, Ó ËÁËÏÊ ×ÅÒÓÉÅÊ Unix ÏÎ ÒÁÂÏÔÁÅÔ. åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÓÄÅÌÁÔØ ÔÁËÉÅ ÉÚÍÅÎÅÎÉÑ × ËÏÄÅ ÄÌÑ ÕÓÌÏ×ÎÏÊ ËÏÍÐÉÌÑÃÉÉ, ÔÏ ×Ù ÄÏÌÖÎÙ ÄÅÌÁÔØ ÉÚÍÅÎÅÎÉÑ ËÁË ÍÏÖÎÏ ÂÏÌÅÅ ÏÂÝÉÍÉ, ÞÔÏÂÙ ÍÙ ÍÏÇÌÉ ÐÅÒÅÎÅÓÔÉ ËÏÄ ÎÁ ÂÏÌÅÅ ÓÔÁÒÙÅ ÓÉÓÔÅÍÙ FreeBSD, Á ÔÁËÖÅ É ÎÁ ÄÒÕÇÉÅ ÓÉÓÔÅÍÙ BSD, ÔÁËÉÅ, ËÁË 4.4BSD ÏÔ CSRG, BSD/386, 386BSD, NetBSD, É OpenBSD. ðÒÅÄÐÏÞÔÉÔÅÌØÎÙÍ ÓÐÏÓÏÂÏÍ ÏÔÄÅÌÅÎÉÑ ËÏÄÁ ÄÌÑ 4.3BSD/Reno (1990) É É ÂÏÌÅÅ ÎÏ×ÙÈ ×ÅÒÓÉÊ BSD Ñ×ÌÑÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÁËÒÏÓÁ BSD, ÏÐÒÅÄÅÌÅÎÎÏÇÏ × ÆÁÊÌÅ sys/param.h. èÏÒÏÛÏ, ÅÓÌÉ ÜÔÏÔ ÆÁÊÌ ÕÖÅ ×ËÌÀÞÅÎ; ÅÓÌÉ ÜÔÏ ÎÅ ÔÁË, ÔÏ ÄÏÂÁרÔÅ ÔÁËÏÊ ËÏÄ: #if (defined(__unix__) || defined(unix)) && !defined(USG) #include <sys/param.h> #endif × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÍ ÍÅÓÔÅ ÆÁÊÌÁ .c. íÙ ÎÁÄÅÅÍÓÑ, ÞÔÏ ×ÓÅ ÓÉÓÔÅÍÙ, × ËÏÔÏÒÙÈ ÏÐÒÅÄÅÌÅÎÙ ÜÔÉ Ä×Å ËÏÎÓÔÁÎÔÙ, ÉÍÅÀÔ ÆÁÊÌ sys/param.h. åÓÌÉ ×Ù ÏÂÎÁÒÕÖÉÔÅ ÓÉÓÔÅÍÕ, × ËÏÔÏÒÏÊ ÜÔÏ ÎÅ ÔÁË, ÍÙ ÈÏÔÉÍ ÚÎÁÔØ. ðÏÛÌÉÔÅ, ÐÏÖÁÌÕÊÓÔÁ, ÐÉÓØÍÏ ÎÁ ÁÄÒÅÓ &a.ports;. äÒÕÇÉÍ ÓÐÏÓÏÂÏÍ Ñ×ÌÑÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÄÌÑ ÜÔÏÇÏ ÓÔÉÌÑ GNU Autoconf: #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> #endif îÅ ÚÁÂÕÄØÔÅ ÄÏÂÁ×ÉÔØ -DHAVE_SYS_PARAM_H Ë CFLAGS × ÆÁÊÌÅ Makefile ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÜÔÏÇÏ ÍÅÔÏÄÁ. ëÁË ÔÏÌØËÏ ×Ù ×ËÌÀÞÉÔÅ sys/param.h, ÔÏ ÓÍÏÖÅÔÅ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ÓÌÅÄÕÀÝÉÍ: #if (defined(BSD) && (BSD >= 199103)) ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÔÏÇÏ, ËÏÍÐÉÌÉÒÕÅÔÓÑ ÌÉ ÐÒÏÇÒÁÍÍÁ ÎÁ ÏÓÎÏ×Å ËÏÄÁ Net2 ×ÅÒÓÉÉ 4.3 ÉÌÉ ÂÏÌÅÅ ÎÏ×ÏÊ ×ÅÒÓÉÉ (ÎÁÐÒÉÍÅÒ, FreeBSD 1.x, 4.3/Reno, NetBSD 0.9, 386BSD, BSD/386 1.1 É ÎÉÖÅ). éÓÐÏÌØÚÕÊÔÅ: #if (defined(BSD) && (BSD >= 199306)) ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÔÏÇÏ, ËÏÍÐÉÌÉÒÕÅÔÓÑ ÌÉ ÐÒÏÇÒÁÍÍÁ ÎÁ ÏÓÎÏ×Å ËÏÄÁ 4.4 ÉÌÉ ÂÏÌÅÅ ÎÏ×ÏÊ (ÎÁÐÒÉÍÅÒ, FreeBSD 2.x, 4.4, NetBSD 1.0, BSD/386 2.0 É ×ÙÛÅ). úÎÁÞÅÎÉÅ ÍÁËÒÏÓÁ BSD ÒÁ×ÎÏ 199506 ÄÌÑ ËÏÄÁ ÎÁ ÏÓÎÏ×Å 4.4BSD-Lite2. ïÎÏ ÚÁÄÁÎÏ ÔÏÌØËÏ ÄÌÑ ÉÎÆÏÒÍÁÃÉÏÎÎÏÊ ÃÅÌÅÊ. ïÎÏ ÎÅ ÄÏÌÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÄÌÑ ÒÁÚÌÉÞÉÑ ÍÅÖÄÕ ×ÅÒÓÉÑÍÉ FreeBSD, ÏÓÎÏ×ÁÎÎÙÍÉ ÎÁ ËÏÄÅ 4.4-Lite É ×ÅÒÓÉÑÍÉ, × ËÏÔÏÒÙÅ ×ËÌÀÞÅÎÙ ÉÚÍÅÎÅÎÉÑ ÉÚ 4.4-Lite2. ÷ÍÅÓÔÏ ÜÔÏÇÏ ÎÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÍÁËÒÏÓ __FreeBSD__. òÅÖÅ ÉÓÐÏÌØÚÕÊÔÅ: __FreeBSD__ ÏÐÒÅÄẠ̊Π×Ï ×ÓÅÈ ×ÅÒÓÉÑÈ FreeBSD. éÓÐÏÌØÚÕÊÔÅ ÅÇÏ, ÅÓÌÉ ÉÚÍÅÎÅÎÉÅ, ×ÎÏÓÉÍÏÅ ×ÁÍÉ, ËÁÓÁÅÔÓÑ ÔÏÌØËÏ FreeBSD. ðÒÏÂÌÅÍÙ ÐÏÒÔÉÒÏ×ÁÎÉÑ, ÔÁËÉÅ, ËÁË ÉÓÐÏÌØÚÏ×ÁÎÉÅ sys_errlist[] ÉÌÉ strerror() Ñ×ÌÑÀÔÓÑ ÏÓÏÂÅÎÎÏÓÔÑÍÉ ÓÉÓÔÅÍ BSD, Á ÎÅ FreeBSD. ÷Ï FreeBSD 2.x, ÚÎÁÞÅÎÉÅ __FreeBSD__ ÏÐÒÅÄÅÌÅÎÏ ËÁË 2. ÷ ÂÏÌÅÅ ÒÁÎÎÉÈ ×ÅÒÓÉÑÈ ÏÎÏ ÒÁ×ÎÏ 1. ÷ ÂÏÌÅÅ ÐÏÚÄÎÉÈ ×ÅÒÓÉÑÈ ÜÔÏ ÚÎÁÞÅÎÉÅ ×ÓÅÇÄÁ Õ×ÅÌÉÞÉ×ÁÅÔÓÑ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ ÓÏ ÓÔÁÒÛÉÍ ÎÏÍÅÒÏÍ ×ÅÒÓÉÉ ÓÉÓÔÅÍÙ. åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÏÔÄÅÌÉÔØ ÓÉÓÔÅÍÙ FreeBSD 1.x ÏÔ ÓÉÓÔÅÍ FreeBSD 2.x É ÂÏÌÅÅ ÓÔÁÒÛÉÈ, ÐÒÁ×ÉÌØÎÙÍ ÓÐÏÓÏÂÏÍ, ËÁË ÐÒÁ×ÉÌÏ, ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÍÁËÒÏÓÁ BSD, ÏÐÉÓÁÎÎÏÅ ×ÙÛÅ. åÓÌÉ ÜÔÏ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÉÚÍÅÎÅÎÉÅ, ÓÐÅÃÉÆÉÞÎÏÅ ÄÌÑ FreeBSD (ÎÁÐÒÉÍÅÒ, ÏÓÏÂÁÑ ÏÐÃÉÑ ÄÌÑ ÄÉÎÁÍÉÞÅÓËÏÊ ÂÉÂÌÉÏÔÅËÉ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ld), ÔÏ ÄÌÑ ÒÁÓÐÏÚÎÁ×ÁÎÉÑ ÓÉÓÔÅÍ FreeBSD 2.x É ÂÏÌÅÅ ÐÏÚÄÎÉÈ ÎÏÒÍÁÌØÎÙÍ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ __FreeBSD__ É #if __FreeBSD__ > 1. åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÂÏÌÅÅ ÔÏÞÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ×ÅÒÓÉÊ FreeBSD, ÎÁÞÉÎÁÑ Ó 2.0-RELEASE, ÔÏ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÌÅÄÕÀÝÅÅ: #if __FreeBSD__ >= 2 #include <osreldate.h> # if __FreeBSD_version >= 199504 /* 2.0.5+ release specific code here */ # endif #endif éÚ ÓÏÔÅÎ ÕÖÅ ÓÄÅÌÁÎÎÙÈ ÐÏÒÔÏ× ÔÏÌØËÏ × ÏÄÎÏÍ ÉÌÉ Ä×ÕÈ ÓÌÕÞÁÑÈ ÐÏÔÒÅÂÏ×ÁÌÏÓØ ÉÓÐÏÌØÚÏ×ÁÎÉÅ __FreeBSD__. åÓÌÉ ÓÔÁÒÙÅ ÐÏÒÔÙ ÉÓÐÏÌØÚÏ×ÁÌÉ ÜÔÏÔ ÍÁËÒÏÓ ÎÅ ÐÏ ÎÁÚÎÁÞÅÎÉÀ, ×Ï×ÓÅ ÎÅ ÚÎÁÞÉÔ, ÞÔÏ ×ÁÍ ÎÕÖÎÏ ÐÏÓÔÕÐÁÔØ ÔÏÞÎÏ ÔÁËÖÅ. úÎÁÞÅÎÉÑ <literal>__FreeBSD_version</literal> îÉÖÅ ÄÌÑ ÓÐÒÁ×ËÉ ÐÒÉ×ÏÄÉÔÓÑ ÐÅÒÅÞÅÎØ ÚÎÁÞÅÎÉÊ __FreeBSD_version × ×ÉÄÅ, ËÏÔÏÒÙÊ ÏÐÒÅÄÅÌ£Î × sys/param.h: úÎÁÞÅÎÉÑ <literal>__FreeBSD_version</literal> úÎÁÞÅÎÉÅ äÁÔÁ òÅÌÉÚ 119411 2.0-RELEASE 199501, 199503 19 ÍÁÒÔÁ 1995 2.1-CURRENT 199504 9 ÁÐÒÅÌÑ 1995 2.0.5-RELEASE 199508 26 Á×ÇÕÓÔÁ 1995 2.2-CURRENT ÄÏ ×ÙÈÏÄÁ 2.1 199511 10 ÎÏÑÂÒÑ 1995 2.1.0-RELEASE 199512 10 ÎÏÑÂÒÑ 1995 2.2-CURRENT ÄÏ ×ÙÈÏÄÁ 2.1.5 199607 10 ÉÀÌÑ 1996 2.1.5-RELEASE 199608 12 ÉÀÌÑ 1996 2.2-CURRENT ÄÏ ×ÙÈÏÄÁ 2.1.6 199612 15 ÎÏÑÂÒÑ 1996 2.1.6-RELEASE 199612 2.1.7-RELEASE 220000 19 ÆÅ×ÒÁÌÑ 1997 2.2-RELEASE (ÂÅÚ ÉÚÍÅÎÅÎÉÊ) 2.2.1-RELEASE (ÂÅÚ ÉÚÍÅÎÅÎÉÊ) 2.2-STABLE ÐÏÓÌÅ ×ÙÈÏÄÁ 2.2.1-RELEASE 221001 15 ÁÐÒÅÌÑ 1997 2.2-STABLE ÐÏÓÌÅ ×ËÌÀÞÅÎÉÑ texinfo-3.9 221002 30 ÁÐÒÅÌÑ 1997 2.2-STABLE ÐÏÓÌÅ ×ËÌÀÞÅÎÉÑ top 222000 16 ÍÁÑ 1997 2.2.2-RELEASE 222001 19 ÍÁÑ 1997 2.2-STABLE ÐÏÓÌÅ ×ÙÈÏÄÁ 2.2.2-RELEASE 225000 2 ÏËÔÑÂÒÑ 1997 2.2.5-RELEASE 225001 20 ÎÏÑÂÒÑ 1997 2.2-STABLE ÐÏÓÌÅ ×ÙÈÏÄÁ 2.2.5-RELEASE 225002 27 ÄÅËÁÂÒÑ 1997 2.2-STABLE ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ldconfig -R 226000 24 ÍÁÒÔÁ 1998 2.2.6-RELEASE 227000 21 ÉÀÌÑ 1998 2.2.7-RELEASE 227001 21 ÉÀÌÑ 1998 2.2-STABLE ÐÏÓÌÅ ×ÙÈÏÄÁ 2.2.7-RELEASE 227002 19 ÓÅÎÔÑÂÒÑ 1998 2.2-STABLE ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × &man.semctl.2; 228000 29 ÎÏÑÂÒÑ 1998 2.2.8-RELEASE 228001 29 ÎÏÑÂÒÑ 1998 2.2-STABLE ÐÏÓÌÅ ×ÙÈÏÄÁ 2.2.8-RELEASE 300000 19 ÆÅ×ÒÁÌÑ 1996 3.0-CURRENT ÄÏ ÉÚÍÅÎÅÎÉÑ × &man.mount.2; 300001 24 ÓÅÎÔÑÂÒÑ 1997 3.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × &man.mount.2; 300002 2 ÉÀÎÑ 1998 3.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × &man.semctl.2; 300003 7 ÉÀÎÑ 1998 3.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × ÁÒÇÕÍÅÎÔÁÈ ioctl 300004 3 ÓÅÎÔÑÂÒÑ 1998 3.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÈÏÄÁ ÎÁ ÆÏÒÍÁÔ ELF 300005 16 ÏËÔÑÂÒÑ 1998 3.0-RELEASE 300006 16 ÏËÔÑÂÒÑ 1998 3.0-CURRENT ÐÏÓÌÅ ×ÙÈÏÄÁ 3.0-RELEASE 300007 22 ÑÎ×ÁÒÑ 1999 3.0-STABLE ÐÏÓÌÅ ÒÁÚÂÉÅÎÉÑ ÎÁ ×ÅÔËÉ 3/4 310000 9 ÆÅ×ÒÁÌÑ 1999 3.1-RELEASE 310001 27 ÍÁÒÔÁ 1999 3.1-STABLE ÐÏÓÌÅ ×ÙÈÏÄÁ 3.1-RELEASE 310002 14 ÁÐÒÅÌÑ 1999 3.1-STABLE ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × ÐÏÒÑÄËÅ ÓÌÅÄÏ×ÁÎÉÑ ËÏÎÓÔÒÕËÔÏÒÏ×/ÄÅÓÔÒÕËÔÏÒÏ× × C++ 320000 3.2-RELEASE 320001 8 ÍÁÑ 1999 3.2-STABLE 320002 29 Á×ÇÕÓÔÁ 1999 3.2-STABLE ÐÏÓÌÅ ÎÅÓÏ×ÍÅÓÔÉÍÙÈ ÉÚÍÅÎÅÎÉÊ × IPFW É ÓÏËÅÔÁÈ 330000 2 ÓÅÎÔÑÂÒÑ 1999 3.3-RELEASE 330001 16 ÓÅÎÔÑÂÒÑ 1999 3.3-STABLE 330002 24 ÎÏÑÂÒÑ 1999 3.3-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ &man.mkstemp.3; × libc 340000 5 ÄÅËÁÂÒÑ 1999 3.4-RELEASE 340001 17 ÄÅËÁÂÒÑ 1999 3.4-STABLE 350000 20 ÉÀÎÑ 2000 3.5-RELEASE 350001 12 ÉÀÌÑ 2000 3.5-STABLE 400000 22 ÑÎ×ÁÒÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ×ÅÔËÉ 3.4 400001 20 ÆÅ×ÒÁÌÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × ÒÁÂÏÔÅ ÄÉÎÁÍÉÞÅÓËÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÁ 400002 13 ÍÁÒÔÁ 1999 4.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × ÐÏÒÑÄËÅ ÓÌÅÄÏ×ÁÎÉÑ ËÏÎÓÔÒÕËÔÏÒÏ×/ÄÅÓÔÒÕËÔÏÒÏ× × C++ 400003 27 ÍÁÒÔÁ 1999 4.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÆÕÎËÃÉÉ &man.dladdr.3; 400004 5 ÁÐÒÅÌÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÉÓÐÒÁ×ÌÅÎÉÑ ÏÛÉÂËÉ × ÒÁÂÏÔÅ ÆÕÎËÃÉÉ __deregister_frame_info ÄÉÎÁÍÉÞÅÓËÏÇÏ ËÏÍÐÏÎÏ×ÝÉËÁ (Á ÔÁËÖÅ 4.0-CURRENT ÐÏÓÌÅ ÉÎÔÅÇÒÁÃÉÉ EGCS 1.1.2) 400005 27 ÁÐÒÅÌÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÉÎÔÅÒÆÅÊÓÁ ÆÕÎËÃÉÉ &man.suser.9; (Á ÔÁËÖÅ 4.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ newbus) 400006 31 ÍÁÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × ÒÅÇÉÓÔÒÁÃÉÉ cdevsw 400007 17 ÉÀÎÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ so_cred × ÐÒÏ×ÅÒËÉ ÎÁ ÕÒÏ×ÎÅ ÓÏËÅÔÏ× 400008 20 ÉÀÎÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÏÂÒÁÂÏÔÞÉËÁ ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á poll × libc_r 400009 20 ÉÀÌÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÈÏÄÁ × ÑÄÒÅ Ó ÔÉÐÁ dev_t ÎÁ ÕËÁÚÁÔÅÌØ struct specinfo 400010 25 ÓÅÎÔÑÂÒÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÉÓÐÒÁ×ÌÅÎÉÑ ÄÙÒÙ × ÂÅÚÏÐÁÓÎÏÓÔÉ &man.jail.2; 400011 29 ÓÅÎÔÑÂÒÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × ÔÉÐÅ ÄÁÎÎÙÈ sigset_t 400012 15 ÎÏÑÂÒÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÈÏÄÁ ÎÁ ËÏÍÐÉÌÑÔÏÒ GCC 2.95.2 400013 4 ÄÅËÁÂÒÑ 1999 4.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÄÏÂÁ×ÌÑÅÍÙÈ ÏÂÒÁÂÏÔÞÉËÏ× ioctl ÒÅÖÉÍÁ linux 400014 18 ÑÎ×ÁÒÑ 2000 4.0-CURRENT ÐÏÓÌÅ ÚÁÉÍÓÔ×Ï×ÁÎÉÑ OpenSSL 400015 27 ÑÎ×ÁÒÑ 2000 4.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × C++ ABI ËÏÍÐÉÌÑÔÏÒÁ GCC 2.95.2 ÐÏ ÕÍÏÌÞÁÎÉÀ Ó -fvtable-thunks ÎÁ -fno-vtable-thunks 400016 27 ÆÅ×ÒÁÌÑ 2000 4.0-CURRENT ÐÏÓÌÅ ÚÁÉÍÓÔ×Ï×ÁÎÉÑ OpenSSH 400017 13 ÍÁÒÔÁ 2000 4.0-RELEASE 400018 17 ÍÁÒÔÁ 2000 4.0-STABLE ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ 4.0-RELEASE 400019 5 ÍÁÑ 2000 4.0-STABLE ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÏÔÌÏÖÅÎÎÙÈ ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ. 400020 4 ÉÀÎÑ 2000 4.0-STABLE ÐÏÓÌÅ ÉÎÔÅÇÒÁÃÉÉ ËÏÄÁ ÂÉÂÌÉÏÔÅËÉ libxpg4 × libc. 400021 8 ÉÀÌÑ 2000 4.0-STABLE ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ ÐÁËÅÔÁ Binutils ÄÏ ×ÅÒÓÉÉ 2.10.0, ÉÚÍÅÎÅÎÉÑ × ÓÈÅÍÅ ÐÏÍÅÔËÉ ×ÙÐÏÌÎÉÍÙÈ ÆÁÊÌÏ× ELF É ×ËÌÀÞÅÎÉÑ tcsh × ËÁÞÅÓÔ×Å ÂÁÚÏ×ÏÇÏ ËÏÍÐÏÎÅÎÔÁ. 410000 14 ÉÀÌÑ 2000 4.1-RELEASE 410001 29 ÉÀÌÑ 2000 4.1-STABLE ÐÏÓÌÅ ×ÙÈÏÄÁ 4.1-RELEASE 410002 16 ÓÅÎÔÑÂÒÑ 2000 4.1-STABLE ÐÏÓÌÅ ÐÅÒÅÎÏÓÁ ÆÕÎËÃÉÉ &man.setproctitle.3; ÉÚ ÂÉÂÌÉÏÔÅËÉ libutil × libc. 411000 25 ÓÅÎÔÑÂÒÑ 2000 4.1.1-RELEASE 411001 4.1.1-STABLE ÐÏÓÌÅ ×ÙÈÏÄÁ 4.1.1-RELEASE 420000 31 ÏËÔÑÂÒÑ 2000 4.2-RELEASE 420001 10 ÑÎ×ÁÒÑ 2001 4.2-STABLE ÐÏÓÌÅ ÏÂßÅÄÉÎÅÎÉÑ libgcc.a É libgcc_r.a, Á ÔÁËÖÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÉÚÍÅÎÅÎÉÊ × ËÏÍÐÏÎÏ×ËÅ GCC. 430000 6 ÍÁÒÔÁ 2001 4.3-RELEASE 430001 18 ÍÁÑ 2001 4.3-STABLE ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ wint_t. 430002 22 ÉÀÌÑ 2001 4.3-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ API ÓÏÓÔÏÑÎÉÑ ÜÌÅËÔÒÏÐÉÔÁÎÉÑ PCI. 440000 1 Á×ÇÕÓÔÁ 2001 4.4-RELEASE 440001 23 ÏËÔÑÂÒÑ 2001 4.4-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ d_thread_t. 440002 4 ÎÏÑÂÒÑ 2001 4.4-STABLE ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × ÓÔÒÕËÔÕÒÕ ÄÌÑ ÍÏÎÔÉÒÏ×ÁÎÉÑ (ÜÔÏ ÚÁÔÒÁÇÉ×ÁÅÔ KLD ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍ). 440003 18 ÄÅËÁÂÒÑ 2001 4.4-STABLE ÐÏÓÌÅ ÉÍÐÏÒÔÁ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÈ ËÏÍÐÏÎÅÎÔ smbfs. 450000 20 ÄÅËÁÂÒÑ 2001 4.5-RELEASE 450001 24 ÆÅ×ÒÁÌÑ 2002 4.5-STABLE ÐÏÓÌÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ÜÌÅÍÅÎÔÏ× ÓÔÒÕËÔÕÒ usb 450004 16 ÁÐÒÅÌÑ 2002 4.5-STABLE ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÐÅÒÅÍÅÎÎÁÑ &man.rc.conf.5; sendmail_enable ÓÔÁÌÁ ÏÂÒÁÂÁÔÙ×ÁÔØ ÚÎÁÞÅÎÉÅ NONE. 450005 27 ÁÐÒÅÌÑ 2002 4.5-STABLE ÐÏÓÌÅ ÐÅÒÅËÌÀÞÅÎÉÑ ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ ÐÁËÅÔÏ× XFree86 4. 450006 1 ÍÁÑ 2002 4.5-STABLE ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÓÅÔÅ×ÏÊ ÆÉÌØÔÒ ÄÌÑ ÜÔÁÐÁ ÐÏÄÔ×ÅÒÖÄÅÎÉÑ ÓÏÅÄÉÎÅÎÉÑ ÂÙÌ ÉÓÐÒÁ×ÌÅÎ ÔÁËÉÍ ÏÂÒÁÚÏÍ, ÞÔÏ ÏÎ ÂÏÌØÛÅ ÎÅ ÐÏÄ×ÅÒÖÅÎ ÐÒÏÓÔÙÍ DoS-ÁÔÁËÁÍ. 460000 21 ÉÀÎÑ 2002 4.6-RELEASE 460001 21 ÉÀÎÑ 2002 óÐÒÁ×ÏÞÎÁÑ ÓÔÒÁÎÉÃÁ ÐÏ &man.sendfile.2; × 4.6-STABLE ÐÒÉ×ÅÄÅÎÁ × ÓÏÏÔ×ÅÔÓÔ×ÉÅ Ó ÄÏËÕÍÅÎÔÁÃÉÅÊ, ÎÉËÁËÉÅ ÚÁÇÏÌÏ×ËÉ ÎÅ ÓÒÁ×ÎÉ×ÁÀÔÓÑ Ó ËÏÌÉÞÅÓÔ×ÏÍ ÄÁÎÎÙÈ, ÐÏÓÌÁÎÎÙÈ ÉÚ ÆÁÊÌÁ. 460002 19 ÉÀÌÑ 2002 4.6.2-RELEASE 460100 26 ÉÀÎÑ 2002 4.6-STABLE 460101 26 ÉÀÎÑ 2002 4.6-STABLE ÐÏÓÌÅ ÐÅÒÅÎÏÓÁ ÉÚ -CURRENT ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ `sed -i'. 460102 1 ÓÅÎÔÑÂÒÑ 2002 4.6-STABLE ÐÏÓÌÅ MFC ÍÎÏÇÉÈ ÎÏ×ÙÈ ×ÏÚÍÏÖÎÏÓÔÅÊ pkg_install ÉÚ ×ÅÔËÉ HEAD. 470000 8 ÏËÔÑÂÒÑ 2002 4.7-RELEASE 470100 9 ÏËÔÑÂÒÑ 2002 4.7-STABLE 470101 10 ÎÏÑÂÒÑ 2002 îÁÞÁÌÏ ÇÅÎÅÒÁÃÉÉ ÓÓÙÌÏË __std{in,out,err}p ×ÍÅÓÔÏ __sF. üÔÏ ÐÅÒÅÎÏÓÉÔ ×ÙÞÉÓÌÅÎÉÅ ×ÙÒÁÖÅÎÉÊ × std{in,out,err} Ó ÍÏÍÅÎÔÁ ËÏÍÐÉÌÑÃÉÉ ÎÁ ×ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ. 470102 23 ÑÎ×ÁÒÑ 2003 4.7-STABLE ÐÏÓÌÅ MFC ÉÚÍÅÎÅÎÉÊ × mbuf ÄÌÑ ÚÁÍÅÎÙ m_aux mbufs ÎÁ m_tag's 470103 14 ÆÅ×ÒÁÌÑ 2003 ÷ 4.7-STABLE ÐÏÑ×ÌÑÅÔÓÑ OpenSSL 0.9.7 480000 30 ÍÁÒÔÁ 2003 4.8-RELEASE 480100 5 ÁÐÒÅÌÑ 2003 4.8-STABLE 480101 22 ÍÁÑ 2003 4.8-STABLE ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÆÕÎËÃÉÑ &man.realpath.3; ÂÙÌÁ ÓÄÅÌÁÎÁ ÓÏ×ÍÅÓÔÉÍÏÊ Ó ÐÏÔÏËÁÍÉ ×ÙÐÏÌÎÅÎÉÑ 480102 10 Á×ÇÕÓÔÁ 2003 4.8-STABLE ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ 3ware API × twe. 490000 27 ÏËÔÑÂÒÑ 2003 4.9-RELEASE 490100 27 ÏËÔÑÂÒÑ 2003 4.9-STABLE 490101 8 ÑÎ×ÁÒÑ 2004 4.9-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ e_sid × ÓÔÒÕËÔÕÒÕ kinfo_eproc. 490102 4 ÆÅ×ÒÁÌÑ 2004 4.9-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ libmap ÄÌÑ rtld. 491000 25 ÍÁÑ 2004 4.10-RELEASE 491100 1 ÉÀÎÑ 2004 4.10-STABLE 491101 11 Á×ÇÕÓÔÁ 2004 4.10-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÒÅ×ÉÚÉÉ 20040629 ÐÁËÅÔÎÏÇÏ ÉÎÓÔÒÕÍÅÎÔÁÒÉÑ 491102 16 ÎÏÑÂÒÑ 2004 4.10-STABLE ÐÏÓÌÅ ÉÓÐÒÁ×ÌÅÎÉÑ ÏÛÉÂËÉ × VM ÐÒÉ ÏÔ×ÑÚÙ×ÁÎÉÉ (unwire) ÆÉËÔÉ×ÎÙÈ ÓÔÒÁÎÉà 492000 17 ÄÅËÁÂÒÑ 2004 4.11-RELEASE 492100 17 ÄÅËÁÂÒÑ 2004 4.11-STABLE 492101 18 ÁÐÒÅÌÑ 2006 4.11-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ËÁÔÁÌÏÇÏ× libdata/ldconfig × ÆÁÊÌÙ mtree. 500000 13 ÍÁÒÔÁ 2000 5.0-CURRENT 500001 18 ÁÐÒÅÌÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÐÏÌÅÊ × ÚÁÇÏÌÏ×ËÅ ELF É ÉÚÍÅÎÅÎÉÑ ÍÅÔÏÄÁ ÐÏÍÅÔËÉ ÐÒÉÎÁÄÌÅÖÎÏÓÔÉ Ë ÏÐÒÅÄÅÌ£ÎÎÏÊ ÓÉÓÔÅÍÅ ÄÌÑ ×ÙÐÏÌÎÉÍÙÈ ÆÁÊÌÏ× × ÆÏÒÍÁÔÅ ELF. 500002 2 ÍÁÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × ÍÅÔÁÄÁÎÎÙÈ kld. 500003 18 ÍÁÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ buf/bio. 500004 26 ÍÁÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ binutils. 500005 3 ÉÀÎÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÉÎÔÅÇÒÁÃÉÉ ËÏÄÁ ÂÉÂÌÉÏÔÅËÉ libxpg4 × libc É ÐÏÑ×ÌÅÎÉÑ ÉÎÔÅÒÆÅÊÓÁ TASKQ. 500006 10 ÉÀÎÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÉÎÔÅÒÆÅÊÓÏ× AGP. 500007 29 ÉÀÎÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ Perl ÄÏ ×ÅÒÓÉÉ 5.6.0 500008 7 ÉÀÌÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ ËÏÄÁ KAME ÄÏ ×ÅÒÓÉÉ 2000/07. 500009 14 ÉÀÌÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × ether_ifattach() É ether_ifdetach(). 500010 16 ÉÀÌÑ 2000 5.0-CURRENT ÐÏÓÌÅ ×ÏÚ×ÒÁÔÁ × ÎÁÓÔÒÏÊËÁÈ ÕÔÉÌÉÔÙ mtree, ÐÒÉÍÅÎÑÅÍÙÈ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÏÂÒÁÔÎÏ Ë ÏÒÉÇÉÎÁÌØÎÙÍ É ÄÏÂÁ×ÌÅÎÉÑ ÆÌÁÇÁ -L ÄÌÑ ÐÅÒÅÈÏÄÁ ÐÏ ÓÉÍ×ÏÌÉÞÅÓËÉÍ ÓÓÙÌËÁÍ. 500011 18 ÉÀÌÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × API ÄÌÑ kqueue. 500012 2 ÓÅÎÔÑÂÒÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÍÅÝÅÎÉÑ &man.setproctitle.3; ÉÚ ÂÉÂÌÉÏÔÅËÉ libutil × libc. 500013 10 ÓÅÎÔÑÂÒÑ 2000 5.0-CURRENT ÐÏÓÌÅ ÐÅÒ×ÏÇÏ ËÏÍÍÉÔÁ SMPng. 500014 4 ÑÎ×ÁÒÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÎÏÓÁ <sys/select.h> × <sys/selinfo.h>. 500015 10 ÑÎ×ÁÒÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÏÂßÅÄÉÎÅÎÉÑ libgcc.a É libgcc_r.a, Á ÔÁËÖÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÉÚÍÅÎÅÎÉÊ × ËÏÍÐÏÎÏ×ËÅ GCC. 500016 24 ÑÎ×ÁÒÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ, ÐÏÚ×ÏÌÑÀÝÅÇÏ libc É libc_r ÂÙÔØ ÓËÏÍÐÏÎÏ×ÁÎÎÙÍÉ ×ÍÅÓÔÅ, ÞÔÏ ÄÅÌÁÅÔ ÐÁÒÁÍÅÔÒ -pthread ÎÅÎÕÖÎÙÍ. 500017 18 ÆÅ×ÒÁÌÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÈÏÄÁ ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ struct xucred ×ÍÅÓÔÏ struct ucred ÄÌÑ ÓÔÁÂÉÌÉÚÁÃÉÉ ÜËÓÐÏÒÔÉÒÕÅÍÏÇÏ API ÑÄÒÁ ÄÌÑ mountd É Ô.Ä. 500018 24 ÆÅ×ÒÁÌÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÅÒÅÍÅÎÎÏÊ make CPUTYPE ÐÏÚ×ÏÌÑÀÝÅÊ ËÏÎÔÒÏÌÉÒÏ×ÁÔØ ÓÐÅÃÉÆÉÞÎÙÅ ÄÌÑ CPU ÏÐÔÉÍÉÚÁÃÉÉ. 500019 9 ÉÀÎÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÎÏÓÁ machine/ioctl_fd.h × sys/fdcio.h 500020 15 ÉÀÎÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÉÍÅÎ ÄÌÑ ÌÏËÁÌÉÚÁÃÉÉ. 500021 22 ÉÀÎÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ Bzip2. ôÁËÖÅ ÏÚÎÁÞÁÅÔ ÕÄÁÌÅÎÉÅ S/Key. 500022 12 ÉÀÌÑ 2001 5.0-CURRENT Ó ÐÏÄÄÅÒÖËÏÊ SSE. 500023 14 ÓÅÎÔÑÂÒÑ 2001 5.0-CURRENT ÐÏÓÌÅ KSE üÔÁÐ 2. 500024 1 ÏËÔÑÂÒÑ 2001 5.0-CURRENT ÐÏÓÌÅ d_thread_t É ÐÅÒÅÎÏÓÁ UUCP × ÐÏÒÔÙ. 500025 4 ÏËÔÑÂÒÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ABI ÉÚ-ÚÁ ÐÅÒÅÎÏÓÁ ÐÅÒÅÄÁÞÉ ÄÅÓËÒÉÐÔÏÒÁ É ÐÒÁ× ÎÁ 64-ÒÁÚÒÑÄÎÙÅ ÐÌÁÔÆÏÒÍÙ. 500026 9 ÏËÔÑÂÒÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÈÏÄÁ ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ XFree86 4 ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ ÐÁËÅÔÏ× É ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × ÂÉÂÌÉÏÔÅËÕ libc ÎÏ×ÏÊ ÆÕÎËÃÉÉ strnstr(). 500027 10 ÏËÔÑÂÒÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × ÂÉÂÌÉÏÔÅËÕ libc ÎÏ×ÏÊ ÆÕÎËÃÉÉ strcasestr(). 500028 14 ÄÅËÁÂÒÑ 2001 5.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÈ ËÏÍÐÏÎÅÎÔ smbfs. (úÎÁÞÅÎÉÅ ÎÅ ÉÚÍÅÎÅÎÏ) 5.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÎÏ×ÙÈ ÓÐÅÃÉÆÉÞÅÓËÉÈ ÄÌÑ C99 ÃÅÌÏÞÉÓÌÅÎÎÙÈ ÔÉÐÏ×. 500029 29 ÑÎ×ÁÒÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ×ÏÚ×ÒÁÝÁÅÍÏÇÏ ÆÕÎËÃÉÅÊ &man.sendfile.2; ÚÎÁÞÅÎÉÑ. 500030 15 ÆÅ×ÒÁÌÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÎÏ×ÏÇÏ ÔÉÐÁ fflags_t, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÆÁÊÌÏ×ÙÍ ÆÌÁÇÁÍ. 500031 24 ÆÅ×ÒÁÌÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ÜÌÅÍÅÎÔÏ× ÓÔÒÕËÔÕÒ usb. 500032 16 ÍÁÒÔÁ 2002 5.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ Perl ÄÏ ×ÅÒÓÉÉ 5.6.1 500033 3 ÁÐÒÅÌÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÔÏÇÏ ËÁË ÐÅÒÅÍÅÎÎÁÑ &man.rc.conf.5; sendmail_enable ÓÔÁÌÁ ÏÂÒÁÂÁÔÙ×ÁÔØ ÚÎÁÞÅÎÉÅ NONE. 500034 30 ÁÐÒÅÌÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × ÆÕÎËÃÉÀ mtx_init() ÔÒÅÔØÅÇÏ ÐÁÒÁÍÅÔÒÁ. 500035 13 ÍÁÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ Gcc 3.1 500036 17 ÍÁÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ Perl ÉÚ /usr/src 500037 29 ÍÁÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÆÕÎËÃÉÉ &man.dlfunc.3; 500038 24 ÉÀÌÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÂÙÌÉ ÉÚÍÅÎÅÎÙ ÔÉÐÙ ÎÅËÏÔÏÒÙÈ ÚÁÐÉÓÅÊ × ÓÔÒÕËÔÕÒÅ sockbuf, Á ÓÁÍÁ ÓÔÒÕËÔÕÒÁ ÂÙÌÁ ÒÅÏÒÇÁÎÉÚÏ×ÁÎÁ. 500039 1 ÓÅÎÔÑÂÒÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ GCC 3.2.1. ôÁËÖÅ ÐÏÓÌÅ ÔÏÇÏ, ËÁË × ÆÁÊÌÁÈ ÚÁÇÏÌÏ×ËÏ× ÂÙÌÏ ÐÒÅËÒÁÝÅÎÏ ÉÓÐÏÌØÚÏ×ÁÎÉÅ _BSD_FOO_T_ É ÎÁÞÁÔÏ ÉÓÐÏÌØÚÏ×ÁÎÉÅ _FOO_T_DECLARED. üÔÏ ÚÎÁÞÅÎÉÅ ÍÏÖÅÔ ÂÙÔØ ÔÁËÖÅ ÉÓÐÏÌØÚÏ×ÁÎÏ ËÁË ÐÒÉÍÅÒÎÁÑ ÔÏÞËÁ ÎÁÞÁÌÁ ÐÏÄÄÅÒÖËÉ ÐÁËÅÔÏ× × ÆÏÒÍÁÔÅ &man.bzip2.1;. 500040 20 ÓÅÎÔÑÂÒÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÒÁÚÌÉÞÎÙÈ ÉÚÍÅÎÅÎÉÊ × ÄÉÓËÏ×ÙÈ ÆÕÎËÃÉÑÈ, ÓÄÅÌÁÎÎÙÈ ÄÌÑ ÉÚÂÁ×ÌÅÎÉÑ ÏÔ ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ×ÎÕÔÒÅÎÎÅÇÏ ÕÓÔÒÏÊÓÔ×Á ÓÔÒÕËÔÕÒÙ ÍÅÔËÉ ÄÉÓËÁ. 500041 1 ÏËÔÑÂÒÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÆÕÎËÃÉÉ &man.getopt.long.3; × ÂÉÂÌÉÏÔÅËÕ libc. 500042 15 ÏËÔÑÂÒÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ Binutils 2.13, ËÕÄÁ ×ËÌÀÞÅÎÁ ÎÏ×ÁÑ ÜÍÕÌÑÃÉÑ FreeBSD, vec É ÆÏÒÍÁÔ ×ÙÄÁÞÉ. 500043 1 ÎÏÑÂÒÑ 2002 5.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÒÏÓÔÙÈ ÚÁÇÌÕÛÅË pthread_XXX Ë ÂÉÂÌÉÏÔÅËÅ libc, ÞÔÏ ÓÄÅÌÁÌÏ libXThrStub.so ÎÅÎÕÖÎÏÊ. 5.0-RELEASE. 500100 17 ÑÎ×ÁÒÑ 2003 5.0-CURRENT ÐÏÓÌÅ ÓÏÚÄÁÎÉÑ ×ÅÔËÉ ÄÌÑ RELENG_5_0 500101 19 ÆÅ×ÒÁÌÑ 2003 <sys/dkstat.h> ÐÕÓÔ É ÎÅ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ. 500102 25 ÆÅ×ÒÁÌÑ 2003 5.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÉÎÔÅÒÆÅÊÓÁ d_mmap_t. 500103 26 ÆÅ×ÒÁÌÑ 2003 5.0-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÂÙÌÏ ×ÎÅÓÅÎÏ ÉÚÍÅÎÅÎÉÅ, ÐÒÉ ËÏÔÏÒÏÍ taskqueue_swi ÒÁÂÏÔÁÅÔ ÂÅÚ Giant, É ÂÙÌÏ ÄÏÂÁ×ÌÅÎÏ taskqueue_swi_giant, ÒÁÂÏÔÁÀÝÅÅ Ó Giant. 500104 27 ÆÅ×ÒÁÌÑ 2003 cdevsw_add() É cdevsw_remove() ÂÏÌØÛÅ ÎÅ ÓÕÝÅÓÔ×ÕÀÔ. ðÏÑ×ÉÌÁÓØ ÔÅÈÎÏÌÏÇÉÑ ×ÙÄÅÌÅÎÉÑ MAJOR_AUTO. 500105 4 ÍÁÒÔÁ 2003 5.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÎÏ×ÏÇÏ ÍÅÔÏÄÁ ÉÎÉÃÉÁÌÉÚÁÃÉÉ cdevsw. 500106 8 ÍÁÒÔÁ 2003 devstat_add_entry() ÚÁÍÅÎÅÎÏ ÎÁ devstat_new_entry() 500107 15 ÍÁÒÔÁ 2003 éÚÍÅÎÅÎÉÅ ÉÎÔÅÒÆÅÊÓÁ devstat ÓÍÏÔÒÉÔÅ sys/sys/param.h 1.149 500108 15 ÍÁÒÔÁ 2003 éÚÍÅÎÅÎÉÅ × ÉÎÔÅÒÆÅÊÓÅ Token-Ring. 500109 25 ÍÁÒÔÁ 2003 äÏÂÁ×ÌÅÎÉÅ vm_paddr_t. 500110 28 ÍÁÒÔÁ 2003 5.0-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÆÕÎËÃÉÑ &man.realpath.3; ÂÙÌÁ ÓÄÅÌÁÎÁ ÓÏ×ÍÅÓÔÉÍÏÊ Ó ÐÏÔÏËÁÍÉ ×ÙÐÏÌÎÅÎÉÑ 500111 9 ÁÐÒÅÌÑ 2003 5.0-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÆÕÎËÃÉÑ &man.usbhid.3; ÂÙÌÁ ÐÒÉ×ÅÄÅÎÁ × ÓÏÏÔ×ÅÔÓÔ×ÉÅ Ó NetBSD 500112 17 ÁÐÒÅÌÑ 2003 5.0-CURRENT ÐÏÓÌÅ ÎÏ×ÏÊ ÒÅÁÌÉÚÁÃÉÉ NSS É ÄÏÂÁ×ÌÅÎÉÑ ÆÕÎËÃÉÊ POSIX.1 getpw*_r É getgr*_r 500113 2 ÍÁÑ 2003 5.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÓÔÁÒÏÊ ÓÉÓÔÅÍÙ rc. 501000 4 ÉÀÎÑ 2004 5.1-RELEASE. 501100 2 ÉÀÎÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ×ÅÔËÉ RELENG_5_1. 501101 29 ÉÀÎÑ 2003 5.1-CURRENT ÐÏÓÌÅ ËÏÒÒÅËÔÉÒÏ×ËÉ ÓÍÙÓÌÁ ÆÕÎËÃÉÊ sigtimedwait(2) É sigwaitinfo(2). 501102 3 ÉÀÌÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÌÅÊ lockfunc É lockfuncarg × &man.bus.dma.tag.create.9;. 501103 31 ÉÀÌÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÉÎÔÅÇÒÁÃÉÉ ÓÎÜÐÛÏÔÁ GCC 3.3.1-pre 20030711. 501104 5 Á×ÇÕÓÔÁ 2003 5.1-CURRENT ÏÓÌÅ ÉÚÍÅÎÅÎÉÊ 3ware API × twe. 501105 17 Á×ÇÕÓÔÁ 2003 ðÏÄÄÅÒÖËÁ × 5.1-CURRENT ÄÉÎÁÍÉÞÅÓËÉ ÓËÏÍÐÏÎÏ×ÁÎÎÙÈ /bin É /sbin, ÐÅÒÅÍÅÝÅÎÉÅ ÂÉÂÌÉÏÔÅË × /lib. 501106 8 ÓÅÎÔÑÂÒÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × ÑÄÒÏ ÐÏÄÄÅÒÖËÉ Coda 6.x. 501107 17 ÓÅÎÔÑÂÒÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÐÅÒÅÍÅÝÅÎÉÑ ËÏÎÓÔÁÎÔ ÄÌÑ 16550 UART ÉÚ ÆÁÊÌÁ <dev/sio/sioreg.h> × <dev/ic/ns16550.h>. á ÔÁËÖÅ ÍÏÍÅÎÔ, ËÏÇÄÁ rtld ÓÔÁÌ ÐÏÄÄÅÒÖÉ×ÁÔØ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔØ libmap × ÂÅÚÕÓÌÏ×ÎÏÍ ÒÅÖÉÍÅ. 501108 23 ÓÅÎÔÑÂÒÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ × API PFIL_HOOKS 501109 27 ÓÅÎÔÑÂÒÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÆÕÎËÃÉÉ kiconv(3) 501110 28 ÓÅÎÔÑÂÒÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ ÏÐÅÒÁÃÉÊ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ open É close × cdevsw 501111 16 ÏËÔÑÂÒÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × ÓÔÒÕËÔÕÒÅ cdevsw 501112 16 ÏËÔÑÂÒÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÍÎÏÖÅÓÔ×ÅÎÎÏÇÏ ÎÁÓÌÅÄÏ×ÁÎÉÑ ÄÌÑ kobj 501113 31 ÏËÔÑÂÒÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ if_xname × ÓÔÒÕËÔÕÒÅ ifnet 501114 16 ÎÏÑÂÒÑ 2003 5.1-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ, Ó×ÑÚÁÎÎÙÈ Ó ÄÉÎÁÍÉÞÅÓËÏÊ ËÏÍÐÏÎÏ×ËÏÊ /bin É /sbin 502000 7 ÄÅËÁÂÒÑ 2003 5.2-RELEASE 502010 23 ÆÅ×ÒÁÌÑ 2003 5.2.1-RELEASE 502100 7 ÄÅËÁÂÒÑ 2003 5.2-CURRENT ÐÏÓÌÅ ÏÔÄÅÌÅÎÉÑ ×ÅÔËÉ RELENG_5_2 502101 19 ÄÅËÁÂÒÑ 2003 5.2-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × libc ÆÕÎËÃÉÊ __cxa_atexit/__cxa_finalize. 502102 30 ÑÎ×ÁÒÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÓÍÅÎÙ ÉÓÐÏÌØÚÕÅÍÏÊ ÐÏ ÕÍÏÌÞÁÎÉÀ ÂÉÂÌÉÏÔÅËÉ ÒÁÂÏÔÙ Ó ÐÏÔÏËÁÍÉ ×ÙÐÏÌÎÅÎÉÑ libc_r ÎÁ libpthread. 502103 21 ÆÅ×ÒÁÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÂÏÌØÛÏÇÏ ÉÚÍÅÎÅÎÉÑ × API ÄÒÁÊ×ÅÒÏ× ÕÓÔÒÏÊÓÔ×. 502104 25 ÆÅ×ÒÁÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ getopt_long_only(). 502105 5 ÍÁÒÔÁ 2004 5.2-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÍÁËÒÏ-ÐÅÒÅÍÅÎÎÁÑ NULL ÂÙÌÁ ÐÅÒÅÏÐÒÅÄÅÌÅÎÁ ÄÌÑ ÑÚÙËÁ C ËÁË ((void *)0), ÞÔÏ ÐÒÉ×ÅÌÏ Ë Õ×ÅÌÉÞÅÎÉÀ ËÏÌÉÞÅÓÔ×Á ÐÒÅÄÕÐÒÅÖÄÅÎÉÊ ËÏÍÐÉÌÑÔÏÒÁ. 502106 8 ÍÁÒÔÁ 2004 5.2-CURRENT ÐÏÓÌÅ ÕÓÔÁÎÏ×ËÉ É ×ËÌÀÞÅÎÉÑ pf × ÐÒÏÃÅÓÓ ÐÏÓÔÒÏÅÎÉÑ ÓÉÓÔÅÍÙ. 502107 10 ÍÁÒÔÁ 2004 5.2-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÚÎÁÞÅÎÉÅ time_t ÎÁ ÐÌÁÔÆÏÒÍÅ sparc64 ÓÔÁÌÏ 64-ÒÁÚÒÑÄÎÙÍ. 502108 12 ÍÁÒÔÁ 2004 5.2-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÐÏÄÄÅÒÖËÁ ËÏÍÐÉÌÑÔÏÒÁ Intel C/C++ × ÎÅËÏÔÏÒÙÈ ÚÁÇÏÌÏ×ÏÞÎÙÈ ÆÁÊÌÁÈ É execve(2) ÂÙÌÁ ÉÚÍÅÎÅÎÁ ÎÁ ÂÏÌÅÅ ÓÔÒÏÇÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÕÀ POSIX. 502109 22 ÍÁÒÔÁ 2004 5.2-CURRENT ÐÏÓÌÅ ××ÅÄÅÎÉÑ ÐÒÏÇÒÁÍÍÎÏÇÏ ÉÎÔÅÒÆÅÊÓÁ bus_alloc_resource_any 502110 27 ÍÁÒÔÁ 2004 5.2-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ ÌÏËÁÌÉÚÁÃÉÉ UTF-8 502111 11 ÁÐÒÅÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÐÒÏÇÒÁÍÍÎÏÇÏ ÉÎÔÅÒÆÅÊÓÁ getvfsent(3) 502112 13 ÁÐÒÅÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÄÉÒÅËÔÉ×Ù .warning ÄÌÑ make. 502113 4 ÉÀÎÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÆÕÎËÃÉÑ ttyioctl() ÓÔÁÌÁ ÏÂÑÚÁÔÅÌØÎÏÊ ÄÌÑ ÄÒÁÊ×ÅÒÏ× ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÙÈ ÕÓÔÒÏÊÓÔ×. 502114 13 ÉÀÎÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ ALTQ ÉÎÆÒÁÓÔÒÕËÔÕÒÙ. 502115 14 ÉÀÎÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË sema_timedwait(9) ÓÔÁÌ ×ÏÚ×ÒÁÝÁÔØ 0 × ÓÌÕÞÁÅ ÕÓÐÅÈÁ É ÎÅ ÎÕÌÅ×ÏÊ ËÏÄ ÏÛÉÂËÉ × ÓÌÕÞÁÅ ÎÅÕÄÁÞÉ. 502116 16 ÉÀÎÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË kernel ÔÉÐ dev_t ÓÔÁÌ ÕËÁÚÁÔÅÌÅÍ ÎÁ struct cdev *. 502117 17 ÉÀÎÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË kernel ÔÉÐ udev_t ÉÚÍÅÎÉÌÓÑ ÎÁ dev_t. 502118 17 ÉÀÎÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ CLOCK_VIRTUAL É CLOCK_PROF × clock_gettime(2) É clock_getres(2). 502119 22 ÉÀÎÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÂÙÌ ÐÒÏ×ÅģΠÐÅÒÅÓÍÏÔÒ ËÌÏÎÉÒÏ×ÁÎÉÑ ÓÅÔÅ×ÏÇÏ ÉÎÔÅÒÆÅÊÓÁ. 502120 2 ÉÀÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ ÐÁËÅÔÎÏÇÏ ÉÎÓÔÒÕÍÅÎÔÁÒÉÑ ÄÏ ÒÅ×ÉÚÉÉ 20040629. 502121 9 ÉÀÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÏÔÍÅÔËÉ, ÞÔÏ ËÏÄ Bluetooth ÎÅ ÏÇÒÁÎÉÞÅÎ ÁÒÈÉÔÅËÔÕÒÏÊ i386. 502122 11 ÉÀÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÒÁÓÔÒÕËÔÕÒÙ KDB, ÐÅÒÅÎÏÓÁ DDB × ÂÜËÜÎÄ É ÐÏÑ×ÌÅÎÉÑ ÂÜËÜÎÄÁ GDB. 502123 12 ÉÀÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × VFS_ROOT ÎÏ×ÏÇÏ ÁÒÇÕÍÅÎÔÁ struct thread, ÔÁË ÖÅ ËÁË ÜÔÏ ÄÅÌÁÅÔ vflush. óÔÒÕËÔÕÒÁ kinfo_proc ÔÅÐÅÒØ ÉÍÅÅÔ ÕËÁÚÁÔÅÌØ ÎÁ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÅ ÄÁÎÎÙÅ. óÍÅÎÁ ÒÅÁÌÉÚÁÃÉÉ X ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÁ xorg ÂÙÌÏ ÓÄÅÌÁÎÏ × ÜÔÏ ÖÅ ×ÒÅÍÑ. 502124 24 ÉÀÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÒÁÚÄÅÌÅÎÉÑ ÓÐÏÓÏÂÏ× ÚÁÐÕÓËÁ ÓËÒÉÐÔÏ× rc.d ÉÚ ÐÏÒÔÏ× É ÉÍÅÀÝÉÈ ÓÔÁÔÕÓ legacy. 502125 28 ÉÀÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÏÔÍÅÎÙ ÐÒÅÄÙÄÕÝÅÇÏ ÉÚÍÅÎÅÎÉÑ. 502126 31 ÉÀÌÑ 2004 5.2-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ kmem_alloc_pageable() É ÉÍÐÏÒÔÁ gcc 3.4.2. 502127 2 Á×ÇÕÓÔÁ 2004 5.2-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × API ÑÄÒÁ UMA, ÒÁÚÒÅÛÁÀÝÅÇÏ ËÏÎÓÔÒÕËÔÏÒÁÍ/ÉÎÉÃÉÁÌÉÚÁÔÏÒÁÍ (ctors/inits) ×ÏÚ×ÒÁÝÁÔØ ÎÅÕÄÁÞÕ. 502128 8 Á×ÇÕÓÔÁ 2004 5.2-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × ÓÉÇÎÁÔÕÒÅ vfs_mount, Á ÔÁËÖÅ ÐÏÓÌÅ ÏÂÝÅÊ ÚÁÍÅÎÙ PRISON_ROOT ÎÁ SUSER_ALLOWJAIL × API suser(9). 503000 23 Á×ÇÕÓÔÁ 2004 5.3-BETA/RC ÐÅÒÅÄ ÉÚÍÅÎÅÎÉÅÍ × pfil API 503001 22 ÓÅÎÔÑÂÒÑ 2004 5.3-RELEASE 503100 16 ÏËÔÑÂÒÑ 2004 5.3-STABLE ÐÏÓÌÅ ÏÔÄÅÌÅÎÉÑ ×ÅÔËÉ RELENG_5_3 503101 3 ÄÅËÁÂÒÑ 2004 5.3-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × ÆÕÎËÃÉÀ &man.strftime.3; ÐÁÒÁÍÅÔÒÏ× ÏÔÓÔÕÐÁ × ÓÔÉÌÅ glibc. 503102 13 ÆÅ×ÒÁÌÑ 2005 5.3-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÉÍÐÏÒÔÁ nc(1) ÉÚ OpenBSD. 503103 27 ÆÅ×ÒÁÌÑ 2005 5.4-PRERELEASE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÉÓÐÒÁ×ÌÅÎÉÊ × <src/include/stdbool.h> É <src/sys/i386/include/_types.h> ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ GCC × ËÏÍÐÉÌÑÔÏÒÅ Intel C/C++. 503104 28 ÆÅ×ÒÁÌÑ 2005 5.4-PRERELEASE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÉÚÍÅÎÅÎÉÑ ÐÏÌÑ ifi_epoch × ÓÔÒÕËÔÕÒÅ if_data ÓÏ ×ÒÅÍÅÎÉ ÞÁÓÏ× ÎÁ ×ÒÅÍÑ Ó ÍÏÍÅÎÔÁ ÓÔÁÒÔÁ. 503105 2 ÍÁÒÔÁ 2005 5.4-PRERELEASE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÉÓÐÒÁ×ÌÅÎÉÑ × vswprintf(3) ÐÒÏ×ÅÒËÉ ÎÁ EOVERFLOW. 504000 3 ÁÐÒÅÌÑ 2005 5.4-RELEASE. 504100 3 ÁÐÒÅÌÑ 2005 5.4-STABLE ÐÏÓÌÅ ÏÔÄÅÌÅÎÉÑ ×ÅÔËÉ RELENG_5_4 504101 11 ÍÁÑ 2005 5.4-STABLE ÐÏÓÌÅ Õ×ÅÌÉÞÅÎÉÑ ÚÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ ÒÁÚÍÅÒÁ ÓÔÅËÏ× ÐÏÔÏËÁ. 504102 24 ÉÀÎÑ 2005 5.4-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ sha256 504103 3 ÏËÔÑÂÒÑ 2005 5.4-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC if_bridge 504104 13 ÏËÔÑÂÒÑ 2005 5.4-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC bsdiff É portsnap 504105 17 ÑÎ×ÁÒÑ 2006 5.4-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÉÚÍÅÎÅÎÉÑ ldconfig_local_dirs. 505000 12 ÍÁÑ 2006 5.5-RELEASE. 505100 12 ÍÁÑ 2006 5.5-STABLE ÐÏÓÌÅ ÏÔÄÅÌÅÎÉÑ ×ÅÔËÉ RELENG_5_5 600000 18 Á×ÇÕÓÔÁ 2004 6.0-CURRENT 600001 27 Á×ÇÕÓÔÁ 2004 6.0-CURRENT ÐÏÓÌÅ ÐÏÓÔÏÑÎÎÏÇÏ ×ËÌÀÞÅÎÉÑ × ÑÄÒÏ PFIL_HOOKS. 600002 30 Á×ÇÕÓÔÁ 2004 6.0-CURRENT ÐÏÓÌÅ ÐÅÒ×ÏÎÁÞÁÌØÎÏÇÏ ÄÏÂÁ×ÌÅÎÉÑ ifi_epoch × ÓÔÒÕËÔÕÒÕ if_data. ÷ÙÐÏÌÎÅÎ ×ÏÚ×ÒÁÔ ÐÏÓÌÅ ÎÅÓËÏÌØËÉÈ ÄÎÅÊ. îÅ ÉÓÐÏÌØÚÕÊÔÅ ÜÔÏ ÚÎÁÞÅÎÉÅ. 600003 8 ÓÅÎÔÑÂÒÑ 2004 6.0-CURRENT ÐÏÓÌÅ ÐÏ×ÔÏÒÎÏÇÏ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÌÑ ifi_epoch × ÓÔÒÕËÔÕÒÕ if_data. 600004 29 ÓÅÎÔÑÂÒÑ 2004 6.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × pfil API ÓÔÒÕËÔÕÒÙ inpcb ËÁË ÐÁÒÁÍÅÔÒÁ. 600005 5 ÏËÔÑÂÒÑ 2004 6.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × newsyslog ÐÁÒÁÍÅÔÒÁ "-d DESTDIR". 600006 4 ÎÏÑÂÒÑ 2004 6.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × ÆÕÎËÃÉÀ &man.strftime.3; ÐÁÒÁÍÅÔÒÏ× ÏÔÓÔÕÐÁ × ÓÔÉÌÅ glibc. 600007 12 ÄÅËÁÂÒÑ 2004 6.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÊ × ÉÎÆÒÁÓÔÒÕËÔÕÒÅ 802.11. 600008 25 ÑÎ×ÁÒÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × ÆÕÎËÃÉÑÈ VOP_*VOBJECT() É ÐÏÑ×ÌÅÎÉÑ ÆÌÁÇÁ MNTK_MPSAFE ÄÌÑ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍ, Ó×ÏÂÏÄÎÙÈ ÏÔ Giant. 600009 4 ÆÅ×ÒÁÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÉÎÆÒÁÓÔÒÕËÔÕÒÙ É ÄÒÁÊ×ÅÒÏ× cpufreq. 600010 6 ÆÅ×ÒÁÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ nc(1) ÉÚ OpenBSD. 600011 12 ÆÅ×ÒÁÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÐÏÄÏÂÉÑ ÐÏÄÄÅÒÖËÉ SVID2 matherr(). 600012 15 ÆÅ×ÒÁÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ Õ×ÅÌÉÞÅÎÉÑ ÚÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ ÒÁÚÍÅÒÁ ÓÔÅËÏ× ÐÏÔÏËÁ. 600013 19 ÆÅ×ÒÁÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÉÓÐÒÁ×ÌÅÎÉÊ × <src/include/stdbool.h> É <src/sys/i386/include/_types.h> ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ GCC × ËÏÍÐÉÌÑÔÏÒÅ Intel C/C++. 600014 21 ÆÅ×ÒÁÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÉÓÐÒÁ×ÌÅÎÉÑ × vswprintf(3) ÐÒÏ×ÅÒËÉ ÎÁ EOVERFLOW. 600015 25 ÆÅ×ÒÁÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÏÌÑ ifi_epoch × ÓÔÒÕËÔÕÒÅ if_data ÓÏ ×ÒÅÍÅÎÉ ÞÁÓÏ× ÎÁ ×ÒÅÍÑ Ó ÍÏÍÅÎÔÁ ÓÔÁÒÔÁ. 600016 26 ÆÅ×ÒÁÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÆÏÒÍÁÔÁ LC_CTYPE, ÉÓÐÏÌØÚÕÅÍÏÇÏ ÐÒÉ ÚÁÐÉÓÉ ÎÁ ÄÉÓË. 600017 27 ÆÅ×ÒÁÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÆÏÒÍÁÔÁ ËÁÔÁÌÏÇÏ× NLS, ÉÓÐÏÌØÚÕÅÍÏÇÏ ÐÒÉ ÚÁÐÉÓÉ ÎÁ ÄÉÓË. 600018 27 ÆÅ×ÒÁÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÆÏÒÍÁÔÁ LC_COLLATE, ÉÓÐÏÌØÚÕÅÍÏÇÏ ÐÒÉ ÚÁÐÉÓÉ ÎÁ ÄÉÓË. 600019 28 ÆÅ×ÒÁÌÑ 2005 õÓÔÁÎÏ×ËÁ ÐÏÄËÌÀÞÁÅÍÙÈ ÆÁÊÌÏ× acpica × /usr/include. 600020 9 ÍÁÒÔÁ 2005 äÏÂÁ×ÌÅÎÉÅ ÆÌÁÇÁ MSG_NOSIGNAL × API send(2). 600021 17 ÍÁÒÔÁ 2005 äÏÂÁ×ÌÅÎÉÅ ÐÏÌÅÊ × cdevsw. 600022 21 ÍÁÒÔÁ 2005 gtar ÕÄÁÌÅÎ ÉÚ ÏÓÎÏ×ÎÏÊ ÓÉÓÔÅÍÙ. 600023 13 ÁÐÒÅÌÑ 2005 ÷ unix(4) ÄÏÂÁ×ÌÅÎÙ ÐÁÒÁÍÅÔÒÙ ÓÏËÅÔÁ LOCAL_CREDS, LOCAL_CONNWAIT. 600024 19 ÁÐÒÅÌÑ 2005 ÷ 6.0-CURRENT ÄÏÂÁ×ÌÅÎÙ &man.hwpmc.4; É Ó×ÑÚÁÎÎÙÅ ÉÎÓÔÒÕÍÅÎÔÙ. 600025 26 ÁÐÒÅÌÑ 2005 ÷ 6.0-CURRENT ÄÏÂÁ×ÌÅÎÁ ÓÔÒÕËÔÕÒÁ icmphdr. 600026 3 ÍÁÑ 2005 pf ÏÂÎÏ×ÌÅÎ ÄÏ 3.7. 600027 6 ÍÁÑ 2005 ðÒÅÄÓÔÁ×ÌÅÎÙ libalias É ng_nat ÕÒÏ×ÎÑ ÑÄÒÁ. 600028 13 ÍÁÑ 2005 POSIX ttyname_r(3) ÓÄÅÌÁÎ ÄÏÓÔÕÐÎÙÍ ÞÅÒÅÚ unistd.h É libc. 600029 29 ÍÁÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ libpcap ÄÏ v0.9.1 alpha 096. 600030 5 ÉÀÎÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ if_bridge(4) ÉÚ NetBSD. 600031 10 ÉÀÎÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÍÅÝÅÎÉÑ ÓÔÒÕËÔÕÒÙ ifnet ÉÚ ÓÔÒÕËÔÕÒÙ ÄÒÁÊ×ÅÒÏ× softc. 600032 11 ÉÀÌÑ 2005 6.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ libpcap v0.9.1. 600033 25 ÉÀÌÑ 2005 6.0-STABLE ÐÏÓÌÅ Õ×ÅÌÉÞÅÎÉÑ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ×ÓÅÈ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË, ÄÌÑ ËÏÔÏÒÙÈ ÏÎ ÎÅ ÂÙÌ ÉÚÍÅÎÅÎ Ó RELENG_5. 600034 13 Á×ÇÕÓÔÁ 2005 6.0-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÁÒÇÕÍÅÎÔÁ ÕÞÅÔÎÙÈ ÄÁÎÎÙÈ × ÏÂÒÁÂÏÔÞÉË ÓÏÂÙÔÉÊ dev_clone. 6.0-RELEASE. 600100 1 ÎÏÑÂÒÑ 2005 6.0-STABLE ÐÏÓÌÅ 6.0-RELEASE 600101 21 ÄÅËÁÂÒÑ 2005 6.0-STABLE ÐÏÓÌÅ ×ÎÅÄÒÅÎÉÑ ÓÃÅÎÁÒÉÅ× ÉÚ ËÁÔÁÌÏÇÏ× local_startup × ÂÁÚÏ×ÙÊ &man.rcorder.8;. 600102 30 ÄÅËÁÂÒÑ 2005 6.0-STABLE ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ ÔÉÐÏ× É ËÏÎÓÔÁÎÔ ELF. 600103 15 ÑÎ×ÁÒÑ 2006 6.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC API pidfile(3). 600104 17 ÑÎ×ÁÒÑ 2006 6.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÉÚÍÅÎÅÎÉÑ ldconfig_local_dirs. 600105 26 ÆÅ×ÒÁÌÑ 2006 6.0-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ ËÁÔÁÌÏÇÁ NLS ÄÌÑ csh(1). 601000 6 ÍÁÑ 2006 6.1-RELEASE 601100 6 ÍÁÑ 2006 6.1-STABLE ÐÏÓÌÅ 6.1-RELEASE. 601101 22 ÉÀÎÑ 2006 6.1-STABLE ÐÏÓÌÅ ÉÍÐÏÒÔÁ csup. 601102 11 ÉÀÌÑ 2006 6.1-STABLE ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ iwi(4). 601103 17 ÉÀÌÑ 2006 6.1-STABLE ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ ÒÅÚÏÌ×ÅÒÁ ÄÏ BIND9 É ÄÏÂÁ×ÌÅÎÉÑ ÒÅÅÎÔÅÒÁÂÅÌØÎÏÊ ×ÅÒÓÉÉ ÆÕÎËÃÉÊ netdb. 601104 8 Á×ÇÕÓÔÁ 2006 6.1-STABLE ÐÏÓÌÅ ×ËÌÀÞÅÎÉÑ ÐÏÄÄÅÒÖËÉ DSO (ÄÉÎÁÍÉÞÅÓËÉÈ ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÕÅÍÙÈ ÏÂßÅËÔÏ×) × OpenSSL. 601105 2 ÓÅÎÔÑÂÒÑ 2006 6.1-STABLE ÐÏÓÌÅ ÉÓÐÒÁ×ÌÅÎÉÊ × 802.11, ÉÚÍÅÎÑÀÝÉÈ API ÄÌÑ ioctl IEEE80211_IOC_STA_INFO. 602000 15 ÎÏÑÂÒÑ 2006 6.2-RELEASE 602100 15 ÓÅÎÔÑÂÒÑ 2006 6.2-STABLE ÐÏÓÌÅ 6.2-RELEASE 602101 12 ÄÅËÁÂÒÑ 2006 6.2-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ Ë×ÉÒËÁ Wi-Spy. 602102 28 ÄÅËÁÂÒÑ 2006 6.2-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ pci_find_extcap(). 602103 16 ÑÎ×ÁÒÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÉÚÍÅÎÅÎÉÑ dlsym ÄÌÑ ÐÏÉÓËÁ ÚÁÐÒÏÛÅÎÎÏÇÏ ÓÉÍ×ÏÌÁ × ÕËÁÚÁÎÎÏÍ dso É ÅÇÏ ÎÅÑ×ÎÙÈ ÚÁ×ÉÓÉÍÏÓÔÅÊ. 602104 28 ÑÎ×ÁÒÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÕÚÌÏ× netgraph ng_deflate(4) É ng_pred1(4) É ÎÏ×ÏÇÏ ÕÚÌÁ ng_ppp(4) ÓÏ ÓÖÁÔÉÅÍ É ÛÉÆÒÏ×ÁÎÉÅÍ. 602105 20 ÆÅ×ÒÁÌÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÐÏÒÔÉÒÏ×ÁÎÎÏÊ ÉÚ NetBSD ×ÅÒÓÉÉ &man.gzip.1; Ó ÌÉÃÅÎÚÉÅÊ BSD. 602106 31 ÍÁÒÔÁ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÐÏÄÄÅÒÖËÉ PCI MSI É MSI-X. 602107 6 ÁÐÒÅÌÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ncurses 5.6 É ÐÏÄÄÅÒÖËÉ Ä×ÕÈÂÁÊÔÏ×ÙÈ ÓÉÍ×ÏÌÏ×. 602108 11 ÁÐÒÅÌÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÄÏÂÁ×ÌÅÎÉÑ ÐÅÒÉÆÅÒÉÊÎÏÇÏ ÕÓÔÒÏÊÓÔ×Á CAM 'SG', ËÏÔÏÒÏÅ ÒÅÁÌÉÚÕÅÔ ÐÏÄÍÎÏÖÅÓÔ×Ï API ÓË×ÏÚÎÙÈ (passthrough) ÕÓÔÒÏÊÓÔ× Linux SCSI SG. 602109 17 ÁÐÒÅÌÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC readline 5.2 patchset 002. 602110 2 ÍÁÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC pmap_invalidate_cache(), pmap_change_attr(), pmap_mapbios(), pmap_mapdev_attr() É pmap_unmapbios() ÄÌÑ mad64 É i386. 602111 11 ÉÀÎÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC BOP_BDFLUSH É ×ÙÚ×ÁÎÎÏÊ ÜÔÉÍ ÐÏÌÏÍËÉ × KBI ÄÌÑ ÍÏÄÕÌÅÊ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍ. 602112 21 ÓÅÎÔÑÂÒÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ ÓÅÒÉÉ MFC libutil(3). 602113 25 ÏËÔÑÂÒÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÒÁÚÄÅÌÅÎÉÑ Ä×ÕÈÂÁÊÔÏ×ÙÈ É ÏÄÎÏÂÁÊÔÏ×ÙÈ ctype. úÁÎÏ×Ï ÓËÏÍÐÉÌÉÒÏ×ÁÎÎÙÅ Ä×ÏÉÞÎÙÅ ÆÁÊÌÙ, ÓÓÙÌÁÀÝÉÅÓÑ ÎÁ ctype.h, ÍÏÇÕÔ ÐÏÔÒÅÂÏ×ÁÔØ ÎÏ×ÙÊ ÓÉÍ×ÏÌ __mb_sb_limit, ÎÅÄÏÓÔÕÐÎÙÊ ÎÁ ÂÏÌÅÅ ÓÔÁÒÙÈ ÓÉÓÔÅÍÁÈ. 602114 30 ÏËÔÑÂÒÑ 2007 6.2-STABLE ÐÏÓÌÅ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ ctype ABI. 602115 21 ÎÏÑÂÒÑ 2007 6.2-STABLE ÐÏÓÌÅ ÏÔËÁÔÁ ÒÁÚÄÅÌÅÎÉÑ Ä×ÕÈÂÁÊÔÏ×ÙÈ É ÏÄÎÏÂÁÊÔÏ×ÙÈ ctype. 603000 25 ÎÏÑÂÒÑ 2007 6.3-RELEASE 603100 25 ÎÏÑÂÒÑ 2007 6.3-STABLE ÐÏÓÌÅ 6.3-RELEASE. 603101 7 ÄÅËÁÂÒÑ 2007 6.3-STABLE ÐÏÓÌÅ ÉÓÐÒÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ ÍÎÏÇÏÂÁÊÔÏ×ÙÈ ÔÉÐÏ× × ÂÉÔÏ×ÏÍ ÍÁËÒÏÓÅ. 603102 24 ÁÐÒÅÌÑ 2008 6.3-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ l_sysid Ë ÓÔÒÕËÔÕÒÅ flock. 603103 27 ÍÁÑ 2008 6.3-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÆÕÎËÃÉÉ memrchr. 603104 15 ÉÀÎÑ 2008 6.3-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÐÏÄÄÅÒÖËÉ ÍÏÄÉÆÉËÁÔÏÒÁ ÐÅÒÅÍÅÎÎÏÊ :u × make(1). 604000 4 ÏËÔÑÂÒÑ 2008 6.4-RELEASE 604100 4 ÏËÔÑÂÒÑ 2008 6.4-STABLE ÐÏÓÌÅ 6.4-RELEASE. 700000 11 ÉÀÌÑ 2005 7.0-CURRENT. 700001 23 ÉÀÌÑ 2005 7.0-CURRENT ÐÏÓÌÅ Õ×ÅÌÉÞÅÎÉÑ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ×ÓÅÈ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË, ÄÌÑ ËÏÔÏÒÙÈ ÏÎ ÎÅ ÂÙÌ ÉÚÍÅÎÅÎ Ó RELENG_5. 700002 13 Á×ÇÕÓÔÁ 2005 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÁÒÇÕÍÅÎÔÁ ÕÞÅÔÎÙÈ ÄÁÎÎÙÈ × ÏÂÒÁÂÏÔÞÉË ÓÏÂÙÔÉÊ dev_clone. 700003 25 Á×ÇÕÓÔÁ 2005 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ memmem(3) × libc. 700004 30 ÏËÔÑÂÒÑ 2005 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÁÒÁÍÅÔÒÏ× ÆÕÎËÃÉÉ ÑÄÒÁ solisten(9) ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÐÁÒÁÍÅÔÒÁ backlog. 700005 11 ÎÏÑÂÒÑ 2005 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ IFP2ENADDR(), ËÏÔÏÒÙÊ ÔÅÐÅÒØ ×ÏÚ×ÒÁÝÁÅÔ ÕËÁÚÁÔÅÌØ ÎÁ IF_LLADDR(). 700006 11 ÎÏÑÂÒÑ 2005 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÌÑ if_addr × struct ifnet É ÕÄÁÌÅÎÉÑ IFP2ENADDR(). 700007 2 ÄÅËÁÂÒÑ 2005 7.0-CURRENT ÐÏÓÌÅ ×ÎÅÄÒÅÎÉÑ ÓÃÅÎÁÒÉÅ× ÉÚ ËÁÔÁÌÏÇÏ× local_startup × ÂÁÚÏ×ÙÊ &man.rcorder.8;. 700008 5 ÄÅËÁÂÒÑ 2005 7.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÐÁÒÁÍÅÔÒÁ ÍÏÎÔÉÒÏ×ÁÎÉÑ MNT_NODEV. 700009 19 ÄÅËÁÂÒÑ 2005 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ ÔÉÐÁ ELF-64 É ÓÉÍ×ÏÌØÎÏÇÏ ×ÅÒÓÉÏÎÉÒÏ×ÁÎÉÑ. 700010 20 ÄÅËÁÂÒÑ 2005 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÄÒÁÊ×ÅÒÏ× hostb É vgapci, ÄÏÂÁ×ÌÅÎÉÑ pci_find_extcap() É ÉÚÍÅÎÅÎÉÑ × ÄÒÁÊ×ÅÒÁÈ AGP, ÞÔÏÂÙ ÂÏÌØÛÅ ÎÅ ÏÔÏÂÒÁÖÁÔØ × ÐÁÍÑÔØ aperture. 700011 31 ÄÅËÁÂÒÑ 2005 7.0-CURRENT ÐÏÓÌÅ ÚÁÍÅÎÙ tv_sec ÎÁ time_t ÎÁ ×ÓÅÈ ÐÌÁÔÆÏÒÍÁÈ, ËÒÏÍÅ Alpha. 700012 8 ÑÎ×ÁÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ldconfig_local_dirs. 700013 12 ÑÎ×ÁÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × /etc/rc.d/abi ÄÌÑ ÐÏÄÄÅÒÖËÉ /compat/linux/etc/ld.so.cache × ËÁÞÅÓÔ×Å ÓÉÍ×ÏÌÉÞÅÓËÏÊ ÓÓÙÌËÉ ÎÁ ÆÁÊÌÏ×ÕÀ ÓÉÓÔÅÍÕ × ÒÅÖÉÍÅ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ. 700014 26 ÑÎ×ÁÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ pts. 700015 26 ÍÁÒÔÁ 2006 7.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ×ÔÏÒÏÊ ×ÅÒÓÉÉ ABI &man.hwpmc.4; 700016 22 ÁÐÒÅÌÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ &man.fcloseall.3; × libc. 700017 13 ÍÁÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ip6fw. 700018 15 ÉÀÌÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ snd_emu10kx. 700019 29 ÉÀÌÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ OpenSSL 0.9.8b. 700020 3 ÓÅÎÔÑÂÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÆÕÎËÃÉÉ bus_dma_get_tag 700021 4 ÓÅÎÔÑÂÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ libpcap 0.9.4 É tcpdump 3.9.4. 700022 9 ÓÅÎÔÑÂÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ dlsym ÄÌÑ ÐÏÉÓËÁ ÚÁÐÒÏÛÅÎÎÏÇÏ ÓÉÍ×ÏÌÁ × ÕËÁÚÁÎÎÏÍ dso É ÅÇÏ ÎÅÑ×ÎÙÈ ÚÁ×ÉÓÉÍÏÓÔÑÈ. 700023 23 ÓÅÎÔÑÂÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÎÏ×ÙÈ Ú×ÕËÏ×ÙÈ IOCTL ÄÌÑ API ÍÉËÛÅÒÁ OSSv4. 700024 28 ÓÅÎÔÑÂÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ OpenSSL 0.9.8d. 700025 11 ÎÏÑÂÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ libelf. 700026 26 ÎÏÑÂÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÚÎÁÞÉÔÅÌØÎÙÈ ÉÚÍÅÎÅÎÉÊ × sysctl Ú×ÕËÏ×ÏÊ ÐÏÄÓÉÓÔÅÍÙ. 700027 30 ÎÏÑÂÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ Ë×ÉÒËÁ Wi-Spy. 700028 15 ÄÅËÁÂÒÑ 2006 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ×ÙÚÏ×Ï× sctp × libc. 700029 26 ÑÎ×ÁÒÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÉÎËÁÐÓÕÌÑÃÉÉ ÔÕÎÎÅÌÑ IPIP (VIFF_TUNNEL) ÉÚ ËÏÄÁ IPv4 multicast forwarding. 700030 7 ÆÅ×ÒÁÌÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÚÁÍÅÎÙ ÒÅÁÌÉÚÁÃÉÉ GNU &man.gzip.1; ÎÁ ÐÏÒÔÉÒÏ×ÁÎÎÕÀ ÉÚ NetBSD ×ÅÒÓÉÀ Ó ÌÉÃÅÎÚÉÅÊ BSD. 700031 23 ÆÅ×ÒÁÌÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × bus_setup_intr() (newbus). 700032 2 ÍÁÒÔÁ 2007 7.0-CURRENT ÐÏÓÌÅ ×ÎÅÓÅÎÉÑ ÍÉËÒÏËÏÄÁ ipw(4) É iwi(4). 700033 9 ÍÁÒÔÁ 2007 7.0-CURRENT ÐÏÓÌÅ ×ÎÅÓÅÎÉÑ ÐÏÄÄÅÒÖËÉ Ä×ÕÈÂÁÊÔÏ×ÙÈ ÓÉÍ×ÏÌÏ× ncurses. 700034 19 ÍÁÒÔÁ 2007 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × ÒÁÂÏÔÅ insmntque(), getnewvnode() É vfs_hash_insert(). 700035 26 ÍÁÒÔÁ 2007 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÍÅÈÁÎÉÚÍÁ Õ×ÅÄÏÍÌÅÎÉÊ ÐÒÉ ÉÚÍÅÎÅÎÉÉ ÞÁÓÔÏÔÙ CPU. 700036 6 ÁÐÒÅÌÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ZFS. 700037 8 ÁÐÒÅÌÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÅÒÉÆÅÒÉÊÎÏÇÏ ÕÓÔÒÏÊÓÔ×Á CAM 'SG', ËÏÔÏÒÏÅ ÒÅÁÌÉÚÕÅÔ ÐÏÄÍÎÏÖÅÓÔ×Ï API ÓË×ÏÚÎÙÈ (passthrough) ÕÓÔÒÏÊÓÔ× Linux SCSI SG. 700038 30 ÁÐÒÅÌÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ &man.getenv.3;, &man.putenv.3;, &man.setenv.3; É &man.unsetenv.3; ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó POSIX. 700039 1 ÍÁÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÏÔËÁÔÁ ÉÚÍÅÎÅÎÉÊ × 700038. 700040 10 ÍÁÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ &man.flopen.3; × libutil. 700041 13 ÍÁÑ 2007 7.0-CURRENT ÐÏÓÌÅ ×ËÌÀÞÅÎÉÑ ×ÅÒÓÉÏÎÉÒÏ×ÁÎÉÑ ÓÉÍ×ÏÌÏ× É ÉÚÍÅÎÅÎÉÑ ÐÏÔÏËÏ×ÏÊ ÂÉÂÌÉÏÔÅËÉ, ÉÓÐÏÌØÚÕÅÍÏÊ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÎÁ libthr. 700042 19 ÍÁÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ gcc 4.2.0. 700043 21 ÍÁÑ 2007 7.0-CURRENT ÐÏÓÌÅ Õ×ÅÌÉÞÅÎÉÑ ÓÔÁÒÛÅÇÏ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÄÌÑ ×ÓÅÈ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË, ÄÌÑ ËÏÔÏÒÙÈ ÜÔÏ ÎÅ ÂÙÌÏ ÓÄÅÌÁÎÏ Ó ÍÏÍÅÎÔÁ RELENG_6. 700044 7 ÉÀÎÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÁÒÁÍÅÔÒÁ ÄÌÑ vn_open()/VOP_OPEN() ×ÍÅÓÔÏ ÆÁÊÌÏ×ÏÇÏ ÄÅÓËÒÉÐÔÏÒÁ ÎÁ struct file *. 700045 10 ÉÀÎÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ &man.pam.nologin.8; ÄÌÑ ÏÂÅÓÐÅÞÅÎÉÑ ÆÕÎËÃÉÉ ÕÐÒÁ×ÌÅÎÉÑ ÕÞÅÔÎÙÍÉ ÚÁÐÉÓÑÍÉ ×ÍÅÓÔÏ ÆÕÎËÃÉÉ ÁÕÔÅÎÔÉÆÉËÁÃÉÉ ÄÌÑ ÉÎÆÒÁÓÔÒÕËÔÕÒÙ PAM. 700046 11 ÉÀÎÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ ÂÅÓÐÒÏ×ÏÄÎÏÊ Ó×ÑÚÉ 802.11. 700047 11 ÉÀÎÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ×ÏÚÍÏÖÎÏÓÔÅÊ TCP LRO ÉÎÔÅÒÆÅÊÓÁ. 700048 12 ÉÀÎÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × ÓÔÅË IPv4 ÐÏÄÄÅÒÖËÉ API RFC 3678. õÎÁÓÌÅÄÏ×ÁÎÎÏÅ ÏÔ RFC 1724 ÐÏ×ÅÄÅÎÉÅ ioctl IP_MULTICAST_IF ÔÅÐÅÒØ ÕÄÁÌÅÎÏ; 0.0.0.0/8 ÂÏÌØÛÅ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ ÄÌÑ ÕËÁÚÁÎÉÑ ÉÎÄÅËÓÁ ÉÎÔÅÒÆÅÊÓÁ. ÷ÍÅÓÔÏ ÜÔÏÇÏ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÒÕËÔÕÒÕ ipmreqn. 700049 3 ÉÀÌÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ pf ÉÚ OpenBSD 4.1 (ÎÅ ÉÚÍÅÎÅÎÏ) 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ IPv6 ÄÌÑ FAST_IPSEC, ÕÄÁÌÅÎÉÑ KAME IPSEC É ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ FAST_IPSEC × IPSEC. 700050 4 ÉÀÌÑ 2007 7.0-CURRENT ÐÏÓÌÅ ËÏÎ×ÅÒÔÁÃÉÉ ×ÙÚÏ×Ï× setenv/putenv/etc ÉÚ ÔÒÁÄÉÃÉÏÎÎÙÈ BSD × POSIX. 700051 4 ÉÀÌÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÎÏ×ÙÈ ÓÉÓÔÅÍÎÙÈ ×ÙÚÏ×Ï× mmap/lseek/etc. 700052 6 ÉÀÌÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÍÅÝÅÎÉÑ ÚÁÇÏÌÏ×ËÏ× I4B × include/i4b. 700053 30 ÓÅÎÔÑÂÒÑ 2007 7.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ ÄÌÑ ÄÏÍÅÎÏ× PCI. 700054 25 ÏËÔÑÂÒÑ 2007 7.0-CURRENT ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÒÁÚÄÅÌÅÎÉÑ Ä×ÕÈÂÁÊÔÏ×ÙÈ É ÏÄÎÏÂÁÊÔÏ×ÙÈ ctype. 700055 28 ÏËÔÑÂÒÑ 2007 7.0-RELEASE, É 7.0-CURRENT ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ ABI ÄÌÑ IOCTL'ÅÊ PCIOCGETCONF, PCIOCREAD É PCIOCWRITE Ó ×ÅÒÓÉÑÍÉ FreeBSD 4/5/6, ÞÔÏ ×ÙÚ×ÁÌÏ ÐÏ×ÔÏÒÎÕÀ ÐÏÌÏÍËÕ ABI ÄÌÑ PCIOCGETCONF IOCTL 700100 22 ÄÅËÁÂÒÑ 2007 7.0-STABLE ÐÏÓÌÅ 7.0-RELEASE 700101 8 ÆÅ×ÒÁÌÑ 2008 7.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC m_collapse(). 700102 30 ÍÁÒÔÁ 2008 7.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC kdb_enter_why(). 700103 10 ÁÐÒÅÌÑ 2008 7.0-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ l_sysid × ÓÔÒÕËÔÕÒÕ flock. 700104 11 ÁÐÒÅÌÑ 2008 7.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC procstat(1). 700105 11 ÁÐÒÅÌÑ 2008 7.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ×ÏÚÍÏÖÎÏÓÔÅÊ umtx. 700106 15 ÁÐÒÅÌÑ 2008 7.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÐÏÄÄÅÒÖËÉ &man.write.2; ÄÌÑ &man.psm.4;. 700107 20 ÁÐÒÅÌÑ 2008 7.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ËÏÍÁÎÄÙ F_DUP2FD ÄÌÑ &man.fcntl.2; 700108 5 ÍÁÑ 2008 7.0-STABLE ÐÏÓÌÅ ÎÅËÏÔÏÒÙÈ ÉÚÍÅÎÅÎÉÊ × &man.lockmgr.9;, ËÏÔÏÒÙÅ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ &man.lockmgr.9; ÔÒÅÂÕÀÔ ÐÏÄËÌÀÞÅÎÉÑ sys/lock.h. 700109 27 ÍÁÑ 2008 7.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÆÕÎËÃÉÉ memrchr. 700110 5 Á×ÇÕÓÔÁ 2008 7.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC NFS-ËÌÉÅÎÔÁ lockd. 700111 20 Á×ÇÕÓÔÁ 2008 7.0-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ ÆÉÚÉÞÅÓËÉ ÐÒÏÔÑÖÅÎÎÙÈ jumbo-ÆÒÅÊÍÏ×. 700112 27 Á×ÇÕÓÔÁ 2008 7.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÐÏÄÄÅÒÖËÉ DTrace × ÑÄÒÅ. 701000 25 ÎÏÑÂÒÑ 2008 7.1-RELEASE 701100 25 ÎÏÑÂÒÑ 2008 7.1-STABLE ÐÏÓÌÅ 7.1-RELEASE. 701101 10 ÑÎ×ÁÒÑ 2009 7.1-STABLE ÐÏÓÌÅ ÂÅËÐÏÒÔÁ strndup. 701102 17 ÑÎ×ÁÒÑ 2009 7.1-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ cpuctl(4). 701103 7 ÆÅ×ÒÁÌÑ 2009 7.1-STABLE ÐÏÓÌÅ ÂÅËÐÏÒÔÁ jail Ó ÎÅÓËÏÌØËÉÍÉ IP / ÂÅÚ ÕËÁÚÁÎÉÑ IP / Ó IPv6. 701104 14 ÆÅ×ÒÁÌÑ 2009 7.1-STABLE ÐÏÓÌÅ ÓÏÈÒÁÎÅÎÉÑ ×ÌÁÄÅÌØÃÁ ÐÒÉÏÓÔÁÎÏ×ËÉ × ÓÔÒÕËÔÕÒÅ mount É ÐÏÑ×ÌÅÎÉÑ ÍÅÔÏÄÁ vfs_susp_clean × ÓÔÒÕËÔÕÒÅ vfsops. 701105 12 ÍÁÒÔÁ 2009 7.1-STABLE ÐÏÓÌÅ ÎÅÓÏ×ÍÅÓÔÉÍÙÈ ÉÚÍÅÎÅÎÉÊ × sysctl kern.ipc.shmsegs ÄÌÑ ×ÏÚÍÏÖÎÏÓÔÉ ×ÙÄÅÌÅÎÉÑ ÓÅÇÍÅÎÔÏ× ÒÁÚÄÅÌÑÅÍÏÊ ÐÁÍÑÔÉ SysV ÂÏÌØÛÅÇÏ ÒÁÚÍÅÒÁ ÎÁ 64-ÂÉÔÎÙÈ ÁÒÈÉÔÅËÔÕÒÁÈ. 701106 14 ÍÁÒÔÁ 2009 7.1-STABLE ÐÏÓÌÅ ÂÅËÐÏÒÔÁ ÉÓÐÒÁ×ÌÅÎÉÑ ÏÐÅÒÁÃÉÊ ÏÖÉÄÁÎÉÑ ÄÌÑ ÓÅÍÁÆÏÒÏ× POSIX. 702000 15 ÁÐÒÅÌÑ 2009 7.2-RELEASE 702100 15 ÁÐÒÅÌÑ 2009 7.2-STABLE ÐÏÓÌÅ 7.2-RELEASE. 702101 15 ÍÁÑ 2009 7.2-STABLE ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ichsmb(4) ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ×ÓÐÏÍÏÇÁÔÅÌØÎÏÊ ÁÄÒÅÓÁÃÉÉ Ó ×ÙÒÁ×ÎÉ×ÁÎÉÅÍ ÐÏ ÌÅ×ÏÊ ÓÔÏÒÏÎÅ, ËÁË É × ÄÒÕÇÉÈ ÄÒÁÊ×ÅÒÁÈ ËÏÎÔÒÏÌÌÅÒÁ SMBus. 702102 28 ÍÁÑ 2009 7.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÆÕÎËÃÉÉ fdopendir. 702103 6 ÉÀÎÑ 2009 7.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC PmcTools. 702104 14 ÉÀÌÑ 2009 7.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á closefrom. 702105 31 ÉÀÌÑ 2009 7.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÉÚÍÅÎÅÎÉÑ ABI ÄÌÑ SYSVIPC. 702106 14 ÓÅÎÔÑÂÒÑ 2009 7.2-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÕÌÕÞÛÅÎÉÊ × x86 PAT É ÄÏÂÁ×ÌÅÎÉÑ d_mmap_single() É ÏÂßÅËÔÁ VM ÔÉÐÁ "ÓÐÉÓÏË scatter/gather". 703000 9 ÆÅ×ÒÁÌÑ 2010 7.3-RELEASE 703100 9 ÆÅ×ÒÁÌÑ 2010 7.3-STABLE ÐÏÓÌÅ 7.3-RELEASE. 704000 22 ÄÅËÁÂÒÑ 2010 7.4-RELEASE 704100 22 ÄÅËÁÂÒÑ 2010 7.4-STABLE ÐÏÓÌÅ 7.4-RELEASE. 800000 11 ÏËÔÑÂÒÑ 2007 8.0-CURRENT. òÁÚÄÅÌÅÎÉÅ Ä×ÕÈÂÁÊÔÏ×ÙÈ É ÏÄÎÏÂÁÊÔÏ×ÙÈ ctype. 800001 16 ÏËÔÑÂÒÑ 2007 8.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ libpcap 0.9.8 É tcpdump 3.9.8. 800002 21 ÏËÔÑÂÒÑ 2007 8.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ kthread_create() É ÓÏÐÕÔÓÔ×ÕÀÝÉÈ ÆÕÎËÃÉÊ × kproc_create() É Ô.Ä. 800003 24 ÏËÔÑÂÒÑ 2007 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ ABI ÄÌÑ IOCTL'ÅÊ PCIOCGETCONF, PCIOCREAD É PCIOCWRITE Ó ×ÅÒÓÉÑÍÉ FreeBSD 4/5/6, ÞÔÏ ×ÙÚ×ÁÌÏ ÐÏ×ÔÏÒÎÕÀ ÐÏÌÏÍËÕ ABI ÄÌÑ PCIOCGETCONF IOCTL 800004 12 ÎÏÑÂÒÑ 2007 8.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÍÅÝÅÎÉÑ ÄÒÁÊ×ÅÒÁ agp(4) ÉÚ src/sys/pci × src/sys/dev/agp 800005 4 ÄÅËÁÂÒÑ 2007 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × ÒÁÓÐÒÅÄÅÌÉÔÅÌÅ jumbo-ÆÒÅÊÍÏ×. 800006 7 ÄÅËÁÂÒÑ 2007 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ ÚÁÈ×ÁÔÁ ÇÒÁÆÁ ×ÙÚÏ×Ï× × &man.hwpmc.4;. 800007 25 ÄÅËÁÂÒÑ 2007 8.0-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË kdb_enter() ÐÏÌÕÞÉÌÁ ÐÁÒÁÍÅÔÒ "why". 800008 28 ÄÅËÁÂÒÑ 2007 8.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÏÐÃÉÉ LK_EXCLUPGRADE. 800009 9 ÑÎ×ÁÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ &man.lockmgr.disown.9; 800010 10 ÑÎ×ÁÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÒÏÔÏÔÉÐÁ &man.vn.lock.9;. 800011 13 ÑÎ×ÁÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÒÏÔÏÔÉÐÏ× &man.VOP.LOCK.9; É &man.VOP.UNLOCK.9;. 800012 19 ÑÎ×ÁÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ &man.lockmgr.recursed.9;, &man.BUF.RECURSED.9; É &man.BUF.ISLOCKED.9; É ÕÄÁÌÅÎÉÑ BUF_REFCNT(). 800013 23 ÑÎ×ÁÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ËÏÄÉÒÏ×ËÉ ASCII. 800014 24 ÑÎ×ÁÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÒÏÔÏÔÉÐÁ &man.lockmgr.9; É ÕÄÁÌÅÎÉÑ lockcount() É LOCKMGR_ASSERT(). 800015 26 ÑÎ×ÁÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÒÁÓÛÉÒÅÎÉÑ ÔÉÐÏ× ÄÌÑ ÓÔÒÕËÔÕÒ &man.fts.3;. 800016 1 ÆÅ×ÒÁÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÁÒÁÍÅÔÒÁ MEXTADD(9) 800017 6 ÆÅ×ÒÁÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÏÐÃÉÊ LK_NODUP É LK_NOWITNESS × ÐÒÏÓÔÒÁÎÓÔ×Å &man.lockmgr.9;. 800018 8 ÆÅ×ÒÁÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ m_collapse. 800019 9 ÆÅ×ÒÁÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ ÔÅËÕÝÅÇÏ ÒÁÂÏÞÅÇÏ ËÁÔÁÌÏÇÁ, ËÏÒÎÅ×ÏÇÏ ËÁÔÁÌÏÇÁ É ËÁÔÁÌÏÇÏ× jail × sysctl kern.proc.filedesc. 800020 13 ÆÅ×ÒÁÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÆÕÎËÃÉÊ &man.lockmgr.assert.9; É BUF_ASSERT. 800021 15 ÆÅ×ÒÁÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ &man.lockmgr.args.9; É ÕÄÁÌÅÎÉÑ ÆÌÁÇÁ LK_INTERNAL. 800022 (ÏÔÍÅÎÅÎÏ) 8.0-CURRENT ÐÏÓÌÅ ÚÁÍÅÎÙ ÉÓÐÏÌØÚÕÅÍÏÇÏ ÐÏ ÕÍÏÌÞÁÎÉÀ ar ÎÁ BSD &man.ar.1;. 800023 25 ÆÅ×ÒÁÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÒÏÔÏÔÉÐÏ× &man.lockstatus.9; É &man.VOP.ISLOCKED.9;, Á ÉÍÅÎÎÏ ÕÄÁÌÅÎÉÑ ÁÒÇÕÍÅÎÔÁ struct thread. 800024 1 ÍÁÒÔÁ 2008 8.0-CURRENT ÐÏÓÌÅ ÓÏËÒÁÝÅÎÉÑ ÆÕÎËÃÉÊ lockwaiters É BUF_LOCKWAITERS, ÉÚÍÅÎÅÎÉÑ ×ÏÚ×ÒÁÝÁÅÍÏÇÏ ÚÎÁÞÅÎÉÑ ÄÌÑ brelvp Ó void É int É ÐÏÑ×ÌÅÎÉÑ ÎÏ×ÙÈ ÆÌÁÇÏ× ÄÌÑ &man.lockinit.9;. 800025 8 ÍÁÒÔÁ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × &man.fcntl.2; ËÏÍÁÎÄÙ F_DUP2FD. 800026 12 ÍÁÒÔÁ 2008 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÁÒÁÍÅÔÒÁ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ cv_broadcastpri ÔÁË, ÞÔÏ 0 ÏÚÎÁÞÁÅÔ ÏÔÓÕÔÓÔ×ÉÅ ÐÒÉÏÒÉÔÅÔÁ. 800027 24 ÍÁÒÔÁ 2008 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ API ÍÏÎÉÔÏÒÉÎÇÁ bpf, ËÏÇÄÁ ÂÙÌÉ ÄÏÂÁ×ÌÅÎÙ ÂÕÆÅÒÙ zerocopy bpf. 800028 26 ÍÁÒÔÁ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ l_sysid × ÓÔÒÕËÔÕÒÕ flock. 800029 28 ÍÁÒÔÁ 2008 8.0-CURRENT ÐÏÓÌÅ ÒÅÉÎÔÅÇÒÁÃÉÉ ÆÕÎËÃÉÉ BUF_LOCKWAITERS É ÄÏÂÁ×ÌÅÎÉÑ &man.lockmgr.waiters.9;. 800030 1 ÁÐÒÅÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÆÕÎËÃÉÊ &man.rw.try.rlock.9; É &man.rw.try.wlock.9;. 800031 6 ÁÐÒÅÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÆÕÎËÃÉÊ lockmgr_rw É lockmgr_args_rw. 800032 8 ÁÐÒÅÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÒÅÁÌÉÚÁÃÉÉ openat É Ó×ÑÚÁÎÎÙÈ Ó ÎÉÍ ÓÉÓÔÅÍÎÙÈ ×ÙÚÏ×Ï×, ÐÏÑ×ÌÅÎÉÑ ÆÌÁÇÁ O_EXEC ÄÌÑ &man.open.2; É ÏÂÅÓÐÅÞÅÎÉÑ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÓÉÓÔÅÍÎÙÈ ×ÙÚÏ×Ï× ÄÌÑ linux-ÓÏ×ÍÅÓÔÉÍÏÓÔÉ. 800033 8 ÁÐÒÅÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ &man.write.2; ÄÌÑ &man.psm.4; × ÎÁÔÉ×ÎÏÍ ÏÐÅÒÁÃÉÏÎÎÏÍ ÒÅÖÉÍÅ. ôÅÐÅÒØ × /dev/psm%d ÍÏÖÎÏ ÚÁÐÉÓÙ×ÁÔØ ÐÒÏÉÚ×ÏÌØÎÙÅ ËÏÍÁÎÄÙ É ÓÞÉÔÙ×ÁÔØ ÉÚ ÎÅÇÏ ÏÂÒÁÔÎÏ ÓÏÓÔÏÑÎÉÅ. 800034 10 ÁÐÒÅÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÆÕÎËÃÉÉ memrchr. 800035 16 ÁÐÒÅÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÆÕÎËÃÉÉ fdopendir. 800036 20 ÁÐÒÅÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÅÒÅËÌÀÞÅÎÉÑ ÂÅÓÐÒÏ×ÏÄÎÏÊ Ó×ÑÚÉ 802.11 ÎÁ ÐÏÄÄÅÒÖËÕ multi-bss (ÔÁËÖÅ ÉÚ×ÅÓÔÎÏÇÏ ËÁË vaps). 800037 9 ÍÁÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ ÍÕÌØÔÉ-ÒÏÕÔÉÎÇÏ×ÙÈ ÔÁÂÌÉà (ÔÁËÖÅ ÉÚ×ÅÓÔÎÙÈ ËÁË setfib(1), setfib(2)). 800038 26 ÍÁÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ netatm É ISDN4BSD. ôÁËÖÅ, ÄÏÂÁ×ÌÅÎÉÅ ÉÎÓÔÒÕÍÅÎÔÁÒÉÑ Compact C Type (CTF). 800039 14 ÉÀÎÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ sgtty. 800040 26 ÉÀÎÑ 2008 8.0-CURRENT ËÌÉÅÎÔÏÍ NFS lockd × ÑÄÒÅ. 800041 22 ÉÀÌÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ arc4random_buf(3) É arc4random_uniform(3). 800042 8 Á×ÇÕÓÔÁ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ cpuctl(4). 800043 13 Á×ÇÕÓÔÁ 2008 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × bpf(4) ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÅÄÉÎÓÔ×ÅÎÎÏÇÏ ÕÚÌÁ ÕÓÔÒÏÊÓÔ×Á ×ÍÅÓÔÏ ËÌÏÎÉÒÏ×ÁÎÉÑ ÕÓÔÒÏÊÓÔ×. 800044 17 Á×ÇÕÓÔÁ 2008 8.0-CURRENT ÐÏÓÌÅ ËÏÍÍÉÔÁ ÐÅÒ×ÙÈ ÛÁÇÏ× ÐÒÏÅËÔÁ vimage Ó ÐÅÒÅÉÍÅÎÏ×ÁÎÉÅÍ ÇÌÏÂÁÌØÎÙÈ ÐÅÒÅÍÅÎÎÙÈ ÄÌÑ ÉÈ ×ÉÒÔÕÁÌÉÚÁÃÉÉ × ÍÁËÒÏÓÙ Ó ÐÒÅÆÉËÓÏÍ V_ ÄÌÑ ÉÈ ÏÔÏÂÒÁÖÅÎÉÑ ÏÂÒÁÔÎÏ ÎÁ ÇÌÏÂÁÌØÎÙÅ ÉÍÅÎÁ. 800045 20 Á×ÇÕÓÔÁ 2008 8.0-CURRENT ÐÏÓÌÅ ÉÎÔÅÇÒÁÃÉÉ ÐÒÏÓÌÏÊËÉ MPSAFE TTY, ×ËÌÀÞÁÀÝÅÊ ÉÚÍÅÎÅÎÉÑ × ÒÁÚÌÉÞÎÙÈ, ×ÚÁÉÍÏÄÅÊÓÔ×ÕÀÝÉÈ Ó ÎÅÊ ÄÒÁÊ×ÅÒÁÈ É ÕÔÉÌÉÔÁÈ. 800046 8 ÓÅÎÔÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÒÁÚÄÅÌÅÎÉÑ GDT ÄÌÑ ËÁÖÄÏÇÏ CPU × ÁÒÈÉÔÅËÔÕÒÅ amd64. 800047 10 ÓÅÎÔÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ VSVTX, VSGID É VSUID. 800048 16 ÓÅÎÔÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ËÏÄÁ ÍÏÎÔÉÒÏ×ÁÎÉÑ NFS × ÑÄÒÅ ÄÌÑ ÐÒÉÎÑÔÉÑ ÉÎÄÉ×ÉÄÕÁÌØÎÙÈ ÏÐÃÉÊ ÍÏÎÔÉÒÏ×ÁÎÉÑ × iovec nmount(), Á ÎÅ ÔÏÌØËÏ × ÏÄÎÏÊ ÂÏÌØÛÏÊ ÓÔÒÕËÔÕÒÅ nfs_args. 800049 17 ÓÅÎÔÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ &man.suser.9; É &man.suser.cred.9;. 800050 20 ÏËÔÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ × API ËÅÛÁ ÂÕÆÅÒÏ×. 800051 23 ÏËÔÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÍÁËÒÏÓÏ× &man.MALLOC.9; É &man.FREE.9;. 800052 28 ÏËÔÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ accmode_t É ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ÐÁÒÁÍÅÔÒÁ VOP_ACCESS 'a_mode' × 'a_accmode'. 800053 2 ÎÏÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÒÏÔÏÔÉÐÁ &man.vfs.busy.9; É ÐÏÑ×ÌÅÎÉÑ ÅÇÏ ÆÌÁÇÏ× MBF_NOWAIT É MBF_MNTLSTLOCK. 800054 22 ÎÏÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ buf_ring, ÂÁÒØÅÒÏ× ÐÁÍÑÔÉ É ÆÕÎËÃÉÊ ifnet ÄÌÑ ÍÎÏÖÅÓÔ×ÅÎÎÙÈ ÁÐÐÁÒÁÔÎÙÈ ÏÞÅÒÅÄÅÊ ÐÅÒÅÄÁÞÉ ÄÌÑ ÐÏÄÄÅÒÖÉ×ÁÀÝÉÈ ÜÔÏ ËÁÒÔ, Á ÔÁËÖÅ ÒÅÁÌÉÚÁÃÉÉ ring-buffer ÂÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÓÉÎÈÒÏÎÉÚÁÃÉÉ ÄÌÑ ÂÏÌÅÅ ÜÆÆÅËÔÉ×ÎÏÇÏ ÕÐÒÁ×ÌÅÎÉÑ ÏÞÅÒÅÄÑÍÉ ÐÁËÅÔÏ× × ÄÒÁÊ×ÅÒÁÈ. 800055 27 ÎÏÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ &man.hwpmc.4; ÄÌÑ Intel™ Core, Core2 É Atom. 800056 29 ÎÏÑÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ jail Ó ÎÅÓËÏÌØËÉÍÉ IP / ÂÅÚ ÕËÁÚÁÎÉÑ IP / Ó IPv6. 800057 1 ÄÅËÁÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÅÒÅËÌÀÞÅÎÉÑ ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÉÓÈÏÄÎÏÇÏ ËÏÄÁ ath hal. 800058 12 ÄÅËÁÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÏÐÅÒÁÃÉÉ VOP_VPTOCNP. 800059 15 ÄÅËÁÂÒÑ 2008 8.0-CURRENT ×ËÌÀÞÁÅÔ × ÓÅÂÑ ÎÏ×ÙÊ ÐÅÒÅÐÉÓÁÎÎÙÊ arp-v2. 800060 19 ÄÅËÁÂÒÑ 2008 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ makefs. 800061 15 ÑÎ×ÁÒÑ 2009 8.0-CURRENT ÐÏÓÌÅ TCP Appropriate Byte Counting. 800062 28 ÑÎ×ÁÒÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ minor(), minor2unit(), unit2minor(), É Ô.Ä. 800063 18 ÆÅ×ÒÁÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ËÏÎÆÉÇÁ GENERIC ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÓÔÅËÁ USB2, Á ÔÁËÖÅ ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ fdevname(3). 800064 23 ÆÅ×ÒÁÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÐÅÒÅÍÅÝÅÎ ÓÔÅË USB2, É ÏÎ ÚÁÍÅÎÑÅÔ dev/usb. 800065 26 ÆÅ×ÒÁÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ×ÓÅÈ ÆÕÎËÃÉÊ × libmp(3). 800066 27 ÆÅ×ÒÁÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÕÐÒÁ×ÌÅÎÉÑ É ÒÁÓËÌÁÄËÉ USB × devfs. 800067 28 ÆÅ×ÒÁÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ getdelim(), getline(), stpncpy(), strnlen(), wcsnlen(), wcscasecmp() É wcsncasecmp(). 800068 2 ÍÁÒÔÁ 2009 8.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ devclass ushub × uhub. 800069 9 ÍÁÒÔÁ 2009 8.0-CURRENT ÐÏÓÌÅ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ libusb20.so.1 × libusb.so.1. 800070 9 ÍÁÒÔÁ 2009 8.0-CURRENT ÐÏÓÌÅ ÏÂßÅÄÉÎÅÎÉÑ IGMPv3 É Source-Specific Multicast (SSM) × ÓÔÅË IPv4. 800071 14 ÍÁÒÔÁ 2009 8.0-CURRENT ÐÏÓÌÅ ÐÒÉÍÅÎÅÎÉÑ ÐÁÔÞÁ Ë gcc ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ inline-ÓÅÍÁÎÔÉËÉ C99 × ÒÅÖÉÍÅ c99 É gnu99. 800072 15 ÍÁÒÔÁ 2009 8.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÆÌÁÇÁ IFF_NEEDSGIANT; ÓÅÔÅ×ÙÅ ÎÅ-MPSAFE ÄÒÁÊ×ÅÒÁ ÕÓÔÒÏÊÓÔ× ÂÏÌÅÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ. 800073 18 ÍÁÒÔÁ 2009 8.0-CURRENT ÐÏÓÌÅ ÒÅÁÌÉÚÁÃÉÉ ÄÉÎÁÍÉÞÅÓËÏÇÏ ÚÁÍÅÝÅÎÉÑ ÓÔÒÏËÏ×ÙÈ ÔÏËÅÎÏ× ÄÌÑ rpath É ÎÅÏÂÈÏÄÉÍÙÈ ÐÕÔÅÊ. 800074 24 ÍÁÒÔÁ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ tcpdump 4.0.0 É libpcap 1.0.0. 800075 6 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÒÁÓËÌÁÄËÉ × ÓÔÒÕËÔÕÒÁÈ vnet_net, vnet_inet É vnet_ipfw. 800076 9 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÒÏÆÉÌÅÊ ÚÁÄÅÒÖËÉ × dummynet. 800077 14 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ VOP_LEASE() É vop_vector.vop_lease. 800078 15 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÌÅÊ ÓÔÒÕËÔÕÒÙ rt_weight × ÓÔÒÕËÔÕÒÙ rt_metrics É rt_metrics_lite, ÉÚÍÅÎÅÎÉÑ ÒÁÓËÌÁÄËÉ ÓÔÒÕËÔÕÒÙ rt_metrics_lite. óÄÅÌÁÎÏ, ÎÏ ÚÁÔÅÍ ÏÔÍÅÎÅÎÏ Õ×ÅÌÉÞÅÎÉÅ ÎÏÍÅÒÁ ×ÅÒÓÉÉ RTM_VERSION. 800079 15 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÕËÁÚÁÔÅÌÅÊ ÎÁ ÓÔÒÕËÔÕÒÕ llentry × ÓÔÒÕËÔÕÒÙ route É route_in6. 800080 15 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÒÁÓËÌÁÄËÉ ÓÔÒÕËÔÕÒÙ inpcb. 800081 19 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÒÁÓËÌÁÄËÉ ÓÔÒÕËÔÕÒÙ malloc_type. 800082 21 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÒÁÓËÌÁÄËÉ ÓÔÒÕËÔÕÒÙ ifnet É ÐÏÄÓÞÅÔÁ ÓÓÙÌÏË ÎÁ ifnet × if_ref() É if_rele(). 800083 22 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÒÅÁÌÉÚÁÃÉÉ ÎÉÚËÏÕÒÏ×ÎÅÇÏ API Bluetooth HCI. 800084 29 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÉÚÍÅÎÅÎÉÊ × IPv6 SSM É MLDv2. 800085 30 ÁÐÒÅÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ×ËÌÀÞÅÎÉÑ ÐÏÄÄÅÒÖËÉ ÓÂÏÒËÉ ÑÄÒÁ VIMAGE Ó ÏÄÎÉÍ ÁËÔÉ×ÎÙÍ ÏÂÒÁÚÏÍ. 800086 8 ÍÁÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × patch(1) ÐÏÄÄÅÒÖËÉ ÓÔÒÏË ××ÏÄÁ ÐÒÏÉÚ×ÏÌØÎÏÊ ÄÌÉÎÙ. 800087 11 ÍÁÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÎÅËÏÔÏÒÙÈ ÉÚÍÅÎÅÎÉÊ × KPI VFS. ðÁÒÁÍÅÔÒ ÐÏÔÏËÁ ÕÄÁÌÅÎ ÉÚ ÞÁÓÔÅÊ FSD × VFS. æÕÎËÃÉÑÍ VFS_* ÜÔÏÔ ËÏÎÔÅËÓÔ ÂÏÌØÛÅ ÎÅ ÎÕÖÅÎ, ÐÏÔÏÍÕ ÞÔÏ ÏÎ ×ÓÅÇÄÁ ÓÓÙÌÁÅÔÓÑ ÎÁ curthread. ÷ ÎÅËÏÔÏÒÙÈ ÏÓÏÂÙÈ ÓÌÕÞÁÑÈ ÏÓÔÁ×ÌÅÎÏ ÐÒÅÖÎÅÅ ÐÏ×ÅÄÅÎÉÅ. 800088 20 ÍÁÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × ÒÅÖÉÍÅ net80211 monitor. 800089 23 ÍÁÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ ÕÐÒÁ×ÌÑÀÝÅÇÏ ÂÌÏËÁ UDP. 800090 23 ÍÁÑ 2009 8.0-CURRENT ÐÏÓÌÅ ËÌÏÎÉÒÏ×ÁÎÉÑ ×ÉÒÔÕÁÌÉÚÏ×ÁÎÎÙÈ ÉÎÔÅÒÆÅÊÓÏ×. 800091 27 ÍÁÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÉÅÒÁÒÈÉÞÅÓËÉÈ jail É ÕÄÁÌÅÎÉÑ ÇÌÏÂÁÌØÎÏÇÏ securelevel. 800092 29 ÍÁÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ KPI ÄÌÑ sx_init_flags(). äÌÑ ÏÂÒÁÔÎÏÇÏ ÌÏÇÉÞÅÓËÏÇÏ ÕÐÒÁ×ÌÅÎÉÑ ×ÍÅÓÔÏ ÕÂÒÁÎÎÏÊ SX_ADAPTIVESPIN ÐÒÅÄÓÔÁ×ÌÅÎÁ ÎÏ×ÁÑ SX_NOADAPTIVE. 800093 29 ÍÁÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ mnt_xflag × ÓÔÒÕËÔÕÒÕ mount. 800094 30 ÍÁÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ &man.VOP.ACCESSX.9;. 800095 30 ÍÁÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ KPI polling. ïÂÒÁÂÏÔÞÉËÉ polling ÔÅÐÅÒØ ×ÏÚ×ÒÁÝÁÀÔ ËÏÌÉÞÅÓÔ×Ï ÏÂÒÁÂÏÔÁÎÎÙÈ ÐÁËÅÔÏ×. ôÁËÖÅ ÐÒÅÄÓÔÁ×ÌÅÎÁ ÎÏ×ÁÑ IFCAP_POLLING_NOCOUNT ÄÌÑ ÕËÁÚÁÎÉÑ ÎÁ ÎÅ×ÁÖÎÏÓÔØ ×ÏÚ×ÒÁÝÁÅÍÏÇÏ ÚÎÁÞÅÎÉÑ É ÐÒÏÐÕÓËÁ ÓÞÅÔÞÉËÏ×. 800096 1 ÉÀÎÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ ÄÏ ÎÏ×ÏÊ ÒÅÁÌÉÚÁÃÉÉ netisr É ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÓÐÏÓÏÂÁ ÈÒÁÎÅÎÉÑ É ÄÏÓÔÕÐÁ Ë FIB. 800097 8 ÉÀÎÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÈÕËÏ× ÄÌÑ ÄÅÓÔÒÕËÔÏÒÏ× É ÉÎÆÒÁÓÔÒÕËÔÕÒÙ vnet. 800097 11 ÉÀÎÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÏÂÎÁÒÕÖÅÎÉÑ ÐÕÔÉ ×ÙÚÏ×Ï× ÏÔ ÉÓÈÏÄÑÝÅÇÏ ÎÁ ×ÈÏÄÑÝÉÊ ÄÌÑ netgraph É ÐÏÓÔÁÎÏ×ÌÅÎÉÑ × ÏÞÅÒÅÄØ, ÞÔÏ ÔÁËÖÅ ÉÚÍÅÎÑÅÔ ÒÁÓËÌÁÄËÕ ÓÔÒÕËÔÕÒÙ thread. 800098 14 ÉÀÎÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ OpenSSL 0.9.8k. 800099 22 ÉÀÎÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ NGROUPS É ÐÅÒÅÍÅÝÅÎÉÑ ×ÉÒÔÕÁÌÉÚÁÃÉÉ ÍÁÒÛÒÕÔÏ× × Ó×ÏÊ ÓÏÂÓÔ×ÅÎÎÙÊ ÍÏÄÕÌØ VImage. 800100 24 ÉÀÎÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ABI ÄÌÑ SYSVIPC. 800101 29 ÉÀÎÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÓÉÍ×ÏÌØÎÙÈ ÕÓÔÒÏÊÓÔ× /dev/net/*, ÉÓÐÏÌØÚÕÅÍÙÈ ÏÔÄÅÌØÎÏ ÄÌÑ ËÁÖÄÏÇÏ ÉÎÔÅÒÆÅÊÓÁ. 800102 12 ÉÀÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÒÅÚÅÒ×ÎÙÈ ÐÏÌÅÊ × ÓÔÒÕËÔÕÒÁÈ sackhint, tcpcb É tcpstat. 800103 13 ÉÀÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÚÁÍÅÎÙ ÓÔÒÕËÔÕÒÙ tcpopt ÎÁ ÓÔÒÕËÔÕÒÕ toeopt × ÉÎÔÅÒÆÅÊÓÅ ÄÒÁÊ×ÅÒÁ TOE × TCP syncache. 800104 14 ÉÀÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÒÁÓÐÒÅÄÅÌÉÔÅÌÑ, ÉÎÄÉ×ÉÄÕÁÌØÎÏÇÏ ÄÌÑ ËÁÖÄÏÇÏ vnet, ÎÁ ÏÓÎÏ×Å Ó×ÑÚÁÎÎÏÇÏ ÍÎÏÖÅÓÔ×Á. 800105 19 ÉÀÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ Õ×ÅÌÉÞÅÎÉÑ ÎÏÍÅÒÁ ×ÅÒÓÉÉ ÄÌÑ ×ÓÅÈ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË, ÄÌÑ ËÏÔÏÒÙÈ ÎÅ ×ËÌÀÞÅÎÏ ÓÉÍ×ÏÌØÎÏÅ ×ÅÒÓÉÏÎÉÒÏ×ÁÎÉÅ. 800106 24 ÉÀÌÑ 2009 8.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÔÉÐÁ ÏÂßÅËÔÁ VM OBJT_SG. 800107 2 Á×ÇÕÓÔÁ 2009 8.0-CURRENT ÐÏÓÌÅ ÏÓ×ÏÂÏÖÄÅÎÉÑ ÐÏÄÓÉÓÔÅÍÙ newbus ÏÔ Giant ÞÅÒÅÚ ÄÏÂÁ×ÌÅÎÉÅ newbus sxlock. 800108 21 ÎÏÑÂÒÑ 2009 8.0-STABLE ÐÏÓÌÅ ÒÅÁÌÉÚÁÃÉÉ kevent-ÆÉÌØÔÒÁ EVFILT_USER. 800500 7 ÑÎ×ÁÒÑ 2010 8.0-STABLE ÐÏÓÌÅ Õ×ÅÌÉÞÅÎÉÑ ÎÏÍÅÒÁ __FreeBSD_version ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × pkg_add -r packages-8-stable. 800501 24 ÑÎ×ÁÒÑ 2010 8.0-STABLE ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÒÏÔÏÔÉÐÏ× scandir(3) É alphasort(3) ÄÌÑ ÓÏÏÔ×ÅÔÓÔ×ÉÑ SUSv4. 800502 31 ÑÎ×ÁÒÑ 2010 8.0-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ sigpause(3). 800503 25 ÆÅ×ÒÁÌÑ 2010 8.0-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ioctl SIOCGIFDESCR É SIOCSIFDESCR Ë ÓÅÔÅ×ÙÍ ÉÎÔÅÒÆÅÊÓÁÍ. üÔÉ ioctl ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÏÐÉÓÁÎÉÑ ÉÎÔÅÒÆÅÊÓÏ× × ÄÕÈÅ OpenBSD. 800504 1 ÍÁÒÔÁ 2010 8.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÉÍÐÏÒÔÁ x86emu ÉÚ OpenBSD, ÐÒÏÇÒÁÍÍÎÏÇÏ ÜÍÕÌÑÔÏÒÁ ÒÅÁÌØÎÏÇÏ ÒÅÖÉÍÁ ÄÌÑ CPU x86. 800505 18 ÍÁÑ 2010 8.0-STABLE ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC ÄÏÂÁ×ÌÅÎÉÑ liblzma, xz, xzdec, É lzmainfo. 801000 14 ÉÀÎÑ 2010 8.1-RELEASE 801500 14 ÉÀÎÑ 2010 8.1-STABLE ÐÏÓÌÅ 8.1-RELEASE. 801501 3 ÎÏÑÂÒÑ 2010 8.1-STABLE ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ KBI × ÓÔÒÕËÔÕÒÅ sysentvec É ÒÅÁÌÉÚÁÃÉÉ PL_FLAG_SCE/SCX/EXEC/SI É pl_siginfo ÄÌÑ ptrace(PT_LWPINFO). 802000 22 ÄÅËÁÂÒÑ 2010 8.2-RELEASE 802500 22 ÄÅËÁÂÒÑ 2010 8.2-STABLE ÐÏÓÌÅ 8.2-RELEASE. 802501 28 ÆÅ×ÒÁÌÑ 2011 8.2-STABLE ÐÏÓÌÅ ÏÂÒÁÔÎÏÇÏ ÐÏÒÔÉÒÏ×ÁÎÉÑ ÉÚÍÅÎÅÎÉÊ DTrace, ×ËÌÀÞÁÀÝÉÈ ÐÏÄÄÅÒÖËÕ ÔÒÁÓÓÉÒÏ×ËÉ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÈ ÐÒÏÇÒÁÍÍ. 802502 6 ÍÁÒÔÁ 2011 8.2-STABLE ÐÏÓÌÅ ÏÂÒÁÔÎÏÇÏ ÐÏÒÔÉÒÏ×ÁÎÉÑ log2 É log2f × libm. 802503 1 ÍÁÑ 2011 8.2-STABLE ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ gcc ÄÏ ÐÏÓÌÅÄÎÅÊ ×ÅÒÓÉÉ Ó ÌÉÃÅÎÚÉÅÊ GPLv2 ÉÚ FSF gcc-4_2-branch. 802504 28 ÍÁÑ 2011 8.2-STABLE ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ KPI É ×ÓÐÏÍÏÇÁÔÅÌØÎÏÊ ÉÎÆÒÁÓÔÒÕËÔÕÒÙ ÍÏÄÕÌØÎÏÇÏ ËÏÎÔÒÏÌÑ ÐÅÒÅÇÒÕÚËÉ. 802505 28 ÍÁÑ 2011 8.2-STABLE ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ KPI Hhook É Khelp. 802506 28 ÍÁÑ 2011 8.2-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ OSD × ÓÔÒÕËÔÕÒÕ tcpcb. 802507 6 ÉÀÎÑ 2011 8.2-STABLE ÐÏÓÌÅ ÉÍÐÏÒÔÁ ZFS v28. 802508 8 ÉÀÎÑ 2011 8.2-STABLE ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÏÂÒÁÂÏÔÞÉËÁ ÓÏÂÙÔÉÊ schedtail É ÄÏÂÁ×ÌÅÎÉÑ ÍÅÔÏÄÁ sv_schedtail × ÓÔÒÕËÔÕÒÕ sysvec. 802509 14 ÉÀÌÑ 2011 8.2-STABLE ÐÏÓÌÅ ÏÂÒÁÔÎÏÇÏ ÐÏÒÔÉÒÏ×ÁÎÉÑ ÐÏÄÄÅÒÖËÉ SSSE3 × binutils. 802510 19 ÉÀÌÑ 2011 8.2-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÆÌÁÇÁ RFTSIGZMB × rfork(2). 802511 9 ÓÅÎÔÑÂÒÑ 2011 8.2-STABLE ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ Á×ÔÏÍÁÔÉÞÅÓËÏÇÏ ÒÁÓÐÏÚÎÁ×ÁÎÉÑ ÕÓÔÒÏÊÓÔ× USB mass storage, ËÏÔÏÒÙÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔ ËÏÍÁÎÄÕ SCSI no synchronize cache. 802512 10 ÓÅÎÔÑÂÒÑ 2011 8.2-STABLE ÐÏÓÌÅ ÏÂÒÁÔÎÏÇÏ ÐÏÒÔÉÒÏ×ÁÎÉÑ ÐÅÒÅÒÁÂÏÔÁÎÎÏÇÏ auto-quirk. 802513 25 ÏËÔÑÂÒÑ 2011 8.2-STABLE ÐÏÓÌÅ ÏÂÒÁÔÎÏÇÏ ÐÏÒÔÉÒÏ×ÁÎÉÑ ÆÌÁÇÁ MAP_PREFAULT_READ × mmap(2). 802514 16 ÎÏÑÂÒÑ 2011 8.2-STABLE ÐÏÓÌÅ ÏÂÒÁÔÎÏÇÏ ÐÏÒÔÉÒÏ×ÁÎÉÑ ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á posix_fallocate(2). 802515 6 ÑÎ×ÁÒÑ 2012 8.2-STABLE ÐÏÓÌÅ ÏÂÒÁÔÎÏÇÏ ÐÏÒÔÉÒÏ×ÁÎÉÑ ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á posix_fadvise(2). 802516 16 ÑÎ×ÁÒÑ 2012 8.2-STABLE ÐÏÓÌÅ ÏÂÒÁÔÎÏÇÏ ÐÏÒÔÉÒÏ×ÁÎÉÑ gperf 3.0.3. 802517 15 ÆÅ×ÒÁÌÑ 2012 8.2-STABLE ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÎÏ×ÏÇÏ ÒÁÓÛÉÒÑÅÍÏÇÏ ÉÎÔÅÒÆÅÊÓÁ sysctl(3) NET_RT_IFLISTL ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÓÐÉÓËÁ ÁÄÒÅÓÏ× (ÒÅ×. 231769). 803000 3 ÍÁÒÔÁ 2012 8.3-RELEASE. 803500 3 ÍÁÒÔÁ 2012 8.3-STABLE ÐÏÓÌÅ ÏÔÄÅÌÅÎÉÑ ×ÅÔËÉ releng/8.3 (RELENG_8_3). 900000 22 Á×ÇÕÓÔÁ 2009 9.0-CURRENT. 900001 8 ÓÅÎÔÑÂÒÑ 2009 9.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ x86emu ÉÚ OpenBSD, ÐÒÏÇÒÁÍÍÎÏÇÏ ÜÍÕÌÑÔÏÒÁ ÒÅÁÌØÎÏÇÏ ÒÅÖÉÍÁ ÄÌÑ CPU x86. 900002 23 ÓÅÎÔÑÂÒÑ 2009 9.0-CURRENT ÐÏÓÌÅ ÒÅÁÌÉÚÁÃÉÉ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ kevent-ÆÉÌØÔÒÁ EVFILT_USER. 900003 2 ÄÅËÁÂÒÑ 2009 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ sigpause(3) É ÐÏÄÄÅÒÖËÉ PIE × csu. 900004 6 ÄÅËÁÂÒÑ 2009 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ libulog É ÅÇÏ ÉÎÔÅÒÆÅÊÓÁ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ libutempter. 900005 12 ÄÅËÁÂÒÑ 2009 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ sleepq_sleepcnt(), ËÏÔÏÒÕÀ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÚÁÐÒÏÓÁ ËÏÌÉÞÅÓÔ×Á ÏÖÉÄÁÀÝÉÈ × ÕËÁÚÁÎÎÏÊ ÏÞÅÒÅÄÉ ÏÖÉÄÁÎÉÑ. 900006 4 ÑÎ×ÁÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÐÒÏÔÏÔÉÐÏ× scandir(3) É alphasort(3) ÄÌÑ ÓÏÏÔ×ÅÔÓÔ×ÉÑ SUSv4. 900007 13 ÑÎ×ÁÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ utmp(5) É ÄÏÂÁ×ÌÅÎÉÑ utmpx (ÓÍÏÔÒÉÔÅ getutxent(3)) ÄÌÑ ÕÌÕÞÛÅÎÎÏÇÏ ÐÒÏÔÏËÏÌÉÒÏ×ÁÎÉÑ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÈ ×ÈÏÄÏ× É ÓÉÓÔÅÍÎÙÈ ÓÏÂÙÔÉÊ. 900008 20 ÑÎ×ÁÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ BSDL bc/dc É ÏÂßÑ×ÌÅÎÉÑ GNU bc/dc ÕÓÔÁÒÅ×ÛÉÍÉ. 900009 26 ÑÎ×ÁÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ioctl SIOCGIFDESCR É SIOCSIFDESCR Ë ÓÅÔÅ×ÙÍ ÉÎÔÅÒÆÅÊÓÁÍ. üÔÉ ioctl ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÏÐÉÓÁÎÉÑ ÉÎÔÅÒÆÅÊÓÏ× × ÄÕÈÅ OpenBSD. 900010 22 ÍÁÒÔÁ 2010 9.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ zlib 1.2.4. 900011 24 ÁÐÒÅÌÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÖÕÒÎÁÌÉÒÏ×ÁÎÉÑ ÍÑÇËÉÈ ÏÂÎÏ×ÌÅÎÉÊ. 900012 10 ÍÁÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ liblzma, xz, xzdec É lzmainfo. 900013 14 ÍÁÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÐÒÉ×ÌÅÞÅÎÉÑ ÉÓÐÒÁ×ÌÅÎÉÊ USB × linux(4). 900014 10 ÉÀÎÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ Clang. 900015 22 ÉÀÌÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ BSD grep. 900016 28 ÉÀÌÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ mti_zone × ÓÔÒÕËÔÕÒÕ malloc_type_internal. 900017 23 Á×ÇÕÓÔÁ 2010 9.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ grep ÐÏ ÕÍÏÌÞÁÎÉÀ ÏÂÒÁÔÎÏ ÎÁ GNU grep É ÄÏÂÁ×ÌÅÎÉÑ knob WITH_BSD_GREP. 900018 24 Á×ÇÕÓÔÁ 2010 9.0-CURRENT ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÓÉÇÎÁÌ, ÓÇÅÎÅÒÉÒÏ×ÁÎÎÙÊ × pthread_kill(3), ÒÁÓÐÏÚÎÁÅÔÓÑ × si_code ËÁË SI_LWP. òÁÎÅÅ si_code ÓÏÄÅÒÖÁÌ SI_USER. 900019 28 Á×ÇÕÓÔÁ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × mmap(2) ÆÌÁÇÁ MAP_PREFAULT_READ. 900020 9 ÓÅÎÔÑÂÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × sbufs ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ ÏÓÕÛÅÎÉÑ, ÞÔÏ ÔÁËÖÅ ÉÚÍÅÎÉÌÏ ÒÁÓËÌÁÄËÕ × ÓÔÒÕËÔÕÒÅ sbuf. 900021 13 ÓÅÎÔÑÂÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ × DTrace ÐÏÄÄÅÒÖËÉ ÔÒÁÓÓÉÒÏ×ËÉ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÈ ÐÒÏÃÅÓÓÏ×. 900022 2 ÏËÔÑÂÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ BSDL ÕÔÉÌÉÔ man É ÓÐÉÓÁÎÉÑ GNU/GPL ÕÔÉÌÉÔ man. 900023 11 ÏËÔÑÂÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ xz ÄÏ ÓÎÁÐÛÏÔÁ git 20101010. 900024 11 ÎÏÑÂÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÚÁÍÅÎÙ libgcc.a ÎÁ libcompiler_rt.a. 900025 12 ÎÏÑÂÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÍÏÄÕÌØÎÏÇÏ ËÏÎÔÒÏÌÑ ÐÅÒÅÇÒÕÚËÉ. 900026 30 ÎÏÑÂÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÐÒÏÔÏËÏÌÁ ÄÌÑ ÐÏÄÄÅÒÖËÉ ÒÁÓÛÉÒÉÔÅÌÅÊ SAS (SMP, Serial Management Protocol) É ÂÌÏËÏ× ÕÐÒÁ×ÌÅÎÉÑ (CCB) CAM XPT_SMP_IO É XPT_GDEV_ADVINFO. 900027 5 ÄÅËÁÂÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ log2 × libm. 900028 21 ÄÅËÁÂÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ KPI Hhook (Helper Hook), Khelp (Kernel Helpers) É Object Specific Data (OSD). 900029 28 ÄÅËÁÂÒÑ 2010 9.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÓÔÅËÁ TCP ÄÌÑ ×ÚÁÉÍÏÄÅÊÓÔ×ÉÑ Ó ÍÏÄÕÌÑÍÉ Khelp ÞÅÒÅÚ ×ÓÐÏÍÏÇÁÔÅÌØÎÙÅ ÔÏÞËÉ Ó×ÑÚÉ É ÈÒÁÎÅÎÉÑ ÄÁÎÎÙÈ ÕÒÏ×ÎÑ ÓÅÔÅ×ÏÇÏ ÓÏÅÄÉÎÅÎÉÑ × ÕÐÒÁ×ÌÑÀÝÅÍ ÂÌÏËÅ TCP. 900030 12 ÑÎ×ÁÒÑ 2011 9.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ libdialog ÄÏ ×ÅÒÓÉÉ 20100428. 900031 7 ÆÅ×ÒÁÌÑ 2011 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ pthread_getthreadid_np(3). 900032 8 ÆÅ×ÒÁÌÑ 2011 9.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÓÉÍ×ÏÌÁ É ÐÒÏÔÏÔÉÐÁ uio_yield. 900033 18 ÆÅ×ÒÁÌÑ 2011 9.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ binutils ÄÏ ×ÅÒÓÉÉ 2.17.50. 900034 8 ÍÁÒÔÁ 2011 9.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÊ × struct sysvec (sv_schedtail). 900035 29 ÍÁÒÔÁ 2011 9.0-CURRENT ÐÏÓÌÅ ÏÂÎÏ×ÌÅÎÉÑ ÂÁÚÏ×ÙÈ gcc É libstdc++ ÄÏ ÐÏÓÌÅÄÎÉÈ ÒÅ×ÉÚÉÊ, ×ÙÐÏÌÎÅÎÎÙÈ ÐÏÄ ÌÉÃÅÎÚÉÅÊ GPLv2. 900036 18 ÁÐÒÅÌÑ 2011 9.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ libobjc É ÐÏÄÄÅÒÖËÉ Objective-C ÉÚ ÂÁÚÏ×ÏÊ ÓÉÓÔÅÍÙ. 900037 13 ÍÁÑ 2011 9.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ ÂÉÂÌÉÏÔÅËÉ libprocstat(3) É ÕÔÉÌÉÔÙ fuser(1) × ÂÁÚÏ×ÕÀ ÓÉÓÔÅÍÕ. 900038 22 ÍÁÑ 2011 9.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÆÌÁÇÁ Ó ÐÁÒÁÍÅÔÒÁÍÉ ÂÌÏËÉÒÏ×ËÉ × VFS_FHTOVP(9). 900039 28 ÉÀÎÑ 2011 9.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ pf ÉÚ OpenBSD 4.5. 900040 19 ÉÀÌÑ 2011 úÎÁÞÅÎÉÅ MAXCPU, ÉÓÐÏÌØÚÕÅÍÏÅ ÐÏ ÕÍÏÌÞÁÎÉÀ, Õ×ÅÌÉÞÅÎÏ ÄÏ 64 ÎÁ amd64 É ia64, É ÄÏ 128 ÄÌÑ XLP (mips). 900041 13 Á×ÇÕÓÔÁ 2011 9.0-CURRENT ÐÏÓÌÅ ÒÅÁÌÉÚÁÃÉÉ Capsicum capabilities; × fget(9) ÄÏÂÁ×ÌÅÎ ÁÒÇÕÍÅÎÔ rights. 900042 28 Á×ÇÕÓÔÁ 2011 õ×ÅÌÉÞÅÎ ÎÏÍÅÒ ×ÅÒÓÉÉ ÄÌÑ ÄÉÎÁÍÉÞÅÓËÉÈ ÂÉÂÌÉÏÔÅË, ABI ËÏÔÏÒÙÈ ÂÙÌ ÉÚÍÅÎÅÎ, × ÒÁÍËÁÈ ÐÏÄÇÏÔÏ×ËÉ Ë 9.0. 900043 2 ÓÅÎÔÑÂÒÑ 2011 äÏÂÁ×ÌÅÎÏ Á×ÔÏÍÁÔÉÞÅÓËÏÅ ÒÁÓÐÏÚÎÁ×ÁÎÉÅ ÕÓÔÒÏÊÓÔ× USB mass storage, ËÏÔÏÒÙÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔ ËÏÍÁÎÄÕ SCSI no synchronize cache. 900044 10 ÓÅÎÔÑÂÒÑ 2011 ðÅÒÅÒÁÂÏÔÁÎ ÍÅÈÁÎÉÚÍ auto-quirk. 9.0-RELEASE 900045 2 ÑÎ×ÁÒÑ 2012 9.0-CURRENT ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ MFC true/false ÉÚ 1000002. 900500 2 ÑÎ×ÁÒÑ 2012 9.0-STABLE. 900501 6 ÑÎ×ÁÒÑ 2012 9.0-STABLE ÐÏÓÌÅ ÏÂÒÁÔÎÏÇÏ ÐÏÒÔÉÒÏ×ÁÎÉÑ ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á posix_fadvise(2). 900502 16 ÑÎ×ÁÒÑ 2012 9.0-STABLE ÐÏÓÌÅ ÏÂÒÁÔÎÏÇÏ ÐÏÒÔÉÒÏ×ÁÎÉÑ gperf 3.0.3. 900503 15 ÆÅ×ÒÁÌÑ 2012 9.0-STABLE ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÎÏ×ÏÇÏ ÒÁÓÛÉÒÑÅÍÏÇÏ ÉÎÔÅÒÆÅÊÓÁ sysctl(3) NET_RT_IFLISTL ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÓÐÉÓËÁ ÁÄÒÅÓÏ× (ÒÅ×. 231768). 900504 3 ÍÁÒÔÁ 2012 9.0-STABLE ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ ÍÅÈÁÎÉÚÍÁ ÍÏÎÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍ × jail (ÒÅ×. 232728). 900503 13 ÍÁÒÔÁ 2012 9.0-STABLE ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÎÏ×ÙÈ ÐÁÒÁÍÅÔÒÏ× ÓÏËÅÔÁ tcp(4): TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL É TCP_KEEPCNT (ÒÅ×. 232945). 1000000 26 ÓÅÎÔÑÂÒÑ 2011 10.0-CURRENT. 1000001 4 ÎÏÑÂÒÑ 2011 10.0-CURRENT ÐÏÓÌÅ ÄÏÂÁ×ÌÅÎÉÑ ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á posix_fadvise(2). 1000002 12 ÄÅËÁÂÒÑ 2011 10.0-CURRENT ÐÏÓÌÅ ÏÐÒÅÄÅÌÅÎÉÑ ÂÕÌÅ×ÙÈ true/false × sys/types.h, ÚÎÁÞÅÎÉÅ sizeof(bool) ÍÏÇÌÏ ÉÚÍÅÎÉÔØÓÑ (ÒÅ×. 228444). 10-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ xlocale.h (ÒÅ×. r227753). 1000003 15 ÄÅËÁÂÒÑ 2011 10.0-CURRENT ÐÏÓÌÅ ËÒÕÐÎÙÈ ÉÚÍÅÎÅÎÉÊ × carp(4), ÉÚÍÅÎÅÎÉÑ ÒÁÚÍÅÒÁ ÓÔÒÕËÔÕÒ in_aliasreq, in6_aliasreq (ÒÅ×. 228571) É ÂÏÌÅÅ ÓÔÒÏÇÉÈ ÐÒÏ×ÅÒÏË ÐÁÒÁÍÅÔÒÏ× SIOCAIFADDR (ÒÅ× 228574). 1000004 1 ÑÎ×ÁÒÑ 2012 10.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ skpc(9) É ÄÏÂÁ×ÌÅÎÉÑ of memcchr(9) (ÒÅ×. 229200). 1000005 16 ÑÎ×ÁÒÑ 2012 10.0-CURRENT ÐÏÓÌÅ ÕÄÁÌÅÎÉÑ ÐÏÄÄÅÒÖËÉ ioctl SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFDSTADDR (ÒÅ×. 230207). 1000006 26 ÑÎ×ÁÒÑ 2012 10.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÁÓÉÎÈÒÏÎÎÙÈ Õ×ÅÄÏÍÌÅÎÉÊ Ï ÎÁÌÉÞÉÉ ×ÈÏÄÎÙÈ ÄÁÎÎÙÈ × ÕÒÏ×ÎÅ cam(4) (ÒÅ×. 230590). 1000007 5 ÆÅ×ÒÁÌÑ 2012 10.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÎÏ×ÙÈ ÐÁÒÁÍÅÔÒÏ× ÓÏËÅÔÁ tcp(4): TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL É TCP_KEEPCNT (ÒÅ×. 231025). 1000008 11 ÆÅ×ÒÁÌÑ 2012 10.0-CURRENT ÐÏÓÌÅ ÐÏÑ×ÌÅÎÉÑ ÎÏ×ÏÇÏ ÒÁÓÛÉÒÑÅÍÏÇÏ ÉÎÔÅÒÆÅÊÓÁ sysctl(3) NET_RT_IFLISTL ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÓÐÉÓËÁ ÁÄÒÅÓÏ× (ÒÅ×. 231505). 1000010 31 ÍÁÒÔÁ 2012 10.0-CURRENT ÐÏÓÌÅ ÉÓÐÒÁ×ÌÅÎÉÊ × xlocale (ÒÅ×. 233757). 1000011 16 ÁÐÒÅÌÑ 2012 10.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ LLVM/Clang 3.1 trunk r154661 (ÒÅ×. 234353). 1000012 2 ÍÁÑ 2012 10.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ jemalloc (ÒÅ×. 234924). 1000013 22 ÍÁÑ 2012 10.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ byacc (ÒÅ×. 235788). 1000014 27 ÉÀÎÑ 2012 10.0-CURRENT ÐÏÓÌÅ ÉÚÍÅÎÅÎÉÑ sort ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÁ BSD sort (ÒÅ×. 237629). 1000015 12 ÉÀÌÑ 2012 10.0-CURRENT ÐÏÓÌÅ ÉÍÐÏÒÔÁ OpenSSL 1.0.1c (ÒÅ×. 238405). (ÎÅ ÉÚÍÅÎÅÎÏ) 13 ÉÀÌÑ 2012 10-CURRENT ÐÏÓÌÅ ÉÓÐÒÁ×ÌÅÎÉÑ ÒÅÇÒÅÓÓÉÉ × LLVM/Clang 3.1 (ÒÅ×. 238429).
úÁÍÅÔØÔÅ, ÞÔÏ 2.2-STABLE ÉÎÏÇÄÁ ÉÄÅÎÔÉÆÉÃÉÒÕÅÔ ÓÅÂÑ ËÁË 2.2.5-STABLE ÐÏÓÌÅ 2.2.5-RELEASE. ôÁËÏÊ ÐÒÉÎÃÉÐ ÉÓÐÏÌØÚÏ×ÁÌÓÑ ÇÏÄ É ÍÅÓÑÃ, ÎÏ ÍÙ ÒÅÛÉÌÉ ÉÚÍÅÎÉÔØ ÅÇÏ ÎÁ ÂÏÌÅÅ ÏÄÎÏÚÎÁÞÎÕÀ ÓÉÓÔÅÍÕ ÎÕÍÅÒÁÃÉÉ ÓÔÁÒÛÉÊ/ÍÌÁÄÛÉÊ, ÎÁÞÉÎÁÑ Ó ×ÅÒÓÉÉ 2.2. üÔÏ ÏÂßÑÓÎÑÅÔÓÑ ÔÅÍ, ÞÔÏ ÐÁÒÁÌÌÅÌØÎÁÑ ÒÁÚÒÁÂÏÔËÁ × ÎÅÓËÏÌØËÉÈ ×ÅÔËÁÈ ÄÅÌÁÅÔ ÎÅÐÒÁËÔÉÞÎÙÍ ÉÄÅÎÔÉÆÉËÁÃÉÀ ÒÅÌÉÚÏ× ÐÒÏÓÔÏ ÐÏ ÉÈ ÒÅÁÌØÎÙÍ ÄÁÔÁÍ ×ÙÐÕÓËÁ. åÓÌÉ ×Ù ÓÅÊÞÁÓ ÄÅÌÁÅÔÅ ÐÏÒÔ, ×ÁÍ ÎÅ ÓÔÏÉÔ ÚÁÂÏÔÉÔØÓÑ Ï ÓÔÁÒÙÈ ×ÅÒÓÉÑÈ -CURRENT; ÏÎÉ ÐÅÒÅÞÉÓÌÅÎÙ ÚÄÅÓØ ÐÒÏÓÔÏ × ÉÎÆÏÒÍÁÃÉÏÎÎÙÈ ÃÅÌÑÈ.
îÁÐÉÓÁÎÉÅ ÞÅÇÏ-ÌÉÂÏ ÐÏÓÌÅ <filename>bsd.port.mk</filename> îÅ ÐÉÛÉÔÅ ÎÉÞÅÇÏ ÐÏÓÌÅ ÓÔÒÏËÉ .include <bsd.port.mk>. üÔÏÊ ÓÔÒÏËÉ ÍÏÖÎÏ ÉÚÂÅÖÁÔØ, ×ËÌÀÞÉ× × ÇÄÅ-ÔÏ × ÓÅÒÅÄÉÎÕ ×ÁÛÅÇÏ ÆÁÊÌÁ Makefile ÆÁÊÌ bsd.port.pre.mk, É ÆÁÊÌ bsd.port.post.mk × ËÏÎÅÃ. ÷ÁÍ ÎÕÖÎÏ ×ËÌÀÞÉÔØ ÌÉÂÏ ÐÁÒÕ ÆÁÊÌÏ× bsd.port.pre.mk/bsd.port.post.mk, ÌÉÂÏ ÔÏÌØËÏ bsd.port.mk; ÎÅ ÉÓÐÏÌØÚÕÊÔÅ ÏÂÁ ÜÔÉÈ ÍÅÔÏÄÁ ÏÄÎÏ×ÒÅÍÅÎÎÏ. ÷ ÆÁÊÌÅ bsd.port.pre.mk ÏÐÒÅÄÅÌÑÀÔÓÑ ÌÉÛØ ÎÅÓËÏÌØËÏ ÐÅÒÅÍÅÎÎÙÈ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ × ÔÅÓÔÁÈ ÉÚ ÆÁÊÌÁ Makefile, × ÆÁÊÌÅ bsd.port.post.mk ÚÁÄÁÎÙ ÏÓÔÁÌØÎÙÅ. ÷ÏÔ ÎÅËÏÔÏÒÙÅ ×ÁÖÎÙÅ ÐÅÒÅÍÅÎÎÙÅ, ÏÐÒÅÄÅÌÅÎÎÙÅ × ÆÁÊÌÅ bsd.port.pre.mk (ÜÔÏ ÎÅ ÐÏÌÎÙÊ ÓÐÉÓÏË, ÄÌÑ ×ÙÑÓÎÅÎÉÑ ÐÏÌÎÏÇÏ ÓÐÉÓËÁ ÐÒÏÞÔÉÔÅ, ÐÏÖÁÌÕÊÓÔÁ, ÓÁÍ ÆÁÊÌ bsd.port.mk). ðÅÒÅÍÅÎÎÁÑ ïÐÉÓÁÎÉÅ ARCH áÒÈÉÔÅËÔÕÒÁ ÍÁÛÉÎÙ × ×ÉÄÅ, ÐÏÌÕÞÁÅÍÏÍ ÐÏ ËÏÍÁÎÄÅ uname -m (ÎÁÐÒÉÍÅÒ, i386) OPSYS ôÉÐ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ, ÐÏÌÕÞÁÅÍÙÊ ÐÏ ËÏÍÁÎÄÅ uname -s (ÎÁÐÒÉÍÅÒ, FreeBSD) OSREL ÷ÅÒÓÉÑ ÒÅÌÉÚÁ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ (ÎÁÐÒÉÍÅÒ, 2.1.5 ÉÌÉ 2.2.7) OSVERSION ÷ÅÒÓÉÑ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ × ×ÉÄÅ ÞÉÓÌÁ, ÔÁ ÖÅ, ÞÔÏ É __FreeBSD_version. LOCALBASE ëÏÒÅÎØ ÄÅÒÅ×Á local (ÎÁÐÒÉÍÅÒ, /usr/local/) PREFIX ëÕÄÁ, ÓÏÂÓÔ×ÅÎÎÏ, ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÐÏÒÔ (ÏÂÒÁÔÉÔÅÓØ Ë ÐÏÄÒÏÂÎÏÊ ÉÎÆÏÒÍÁÃÉÉ Ï PREFIX). åÓÌÉ ×Ù ÚÁÄÁÅÔÅ ÐÅÒÅÍÅÎÎÙÅ USE_IMAKE ÉÌÉ MASTERDIR, ÔÏ ÄÅÌÁÊÔÅ ÜÔÏ ÄÏ ÐÏÄËÌÀÞÅÎÉÑ bsd.port.pre.mk. ÷ÏÔ ÎÅÓËÏÌØËÏ ÐÒÉÍÅÒÏ× ÔÏÇÏ, ÞÔÏ ×Ù ÍÏÖÅÔÅ ÎÁÐÉÓÁÔØ ÐÏÓÌÅ bsd.port.pre.mk: # no need to compile lang/perl5 if perl5 is already in system .if ${OSVERSION} > 300003 BROKEN= perl is in system .endif # only one shlib version number for ELF .if ${PORTOBJFORMAT} == "elf" TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR} .else TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR} .endif # software already makes link for ELF, but not for a.out post-install: .if ${PORTOBJFORMAT} == "aout" ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so .endif ÷Ù ÎÅ ÚÁÂÙ×ÁÅÔÅ Ï ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÔÁÂÕÌÑÃÉÉ ×ÍÅÓÔÏ ÐÒÏÂÅÌÏ× ÐÏÓÌÅ BROKEN= É TCL_LIB_FILE=, ÎÅ ÔÁË ÌÉ? :-). éÓÐÏÌØÚÏ×ÁÎÉÅ ×ÙÒÁÖÅÎÉÑ <function>exec</function> × ÓÃÅÎÁÒÉÑÈ Ï£ÒÔËÁÈ åÓÌÉ ÐÏÒÔ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÓÃÅÎÁÒÉÊ ÎÁ ÑÚÙËÅ shell, ËÏÔÏÒÙÊ ÓÌÕÖÉÔ ÄÌÑ ÚÁÐÕÓËÁ ÄÒÕÇÏÊ ÐÒÏÇÒÁÍÍÙ, É ÅÓÌÉ ÚÁÐÕÓË ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ Ñ×ÌÑÅÔÓÑ ÐÏÓÌÅÄÎÉÍ ÄÅÊÓÔ×ÉÅÍ ÓÃÅÎÁÒÉÑ, ÕÂÅÄÉÔÅÓØ, ÞÔÏ ÚÁÐÕÓË ÐÒÏÇÒÁÍÍÙ ÐÒÏÉÚ×ÏÄÉÔÓÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ×ÙÒÁÖÅÎÉÑ exec, ÎÁÐÒÉÍÅÒ: #!/bin/sh exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@" ÷ÙÒÁÖÅÎÉÅ exec ÚÁÍÅÎÑÅÔ ÐÒÏÃÅÓÓ ÓÃÅÎÁÒÉÑ ÎÁ ÕËÁÚÁÎÎÕÀ ÐÒÏÇÒÁÍÍÕ. åÓÌÉ exec ÏÐÕÝÅÎ, ÔÏ ÐÒÏÃÅÓÓ ÓÃÅÎÁÒÉÑ ×Ï ×ÒÅÍÑ ÒÁÂÏÔÙ ÐÒÏÇÒÁÍÍÙ ÏÓÔÁÅÔÓÑ × ÐÁÍÑÔÉ, ÂÅÚ ÂÅÓÐÏÌÅÚÎÏ ÐÏÔÒÅÂÌÑÑ ÓÉÓÔÅÍÎÙÅ ÒÅÓÕÒÓÙ. ðÏÓÔÕÐÁÊÔÅ ÒÁÚÕÍÎÏ æÁÊÌ Makefile ÄÏÌÖÅÎ ×ÙÐÏÌÎÑÔØ ÄÅÊÓÔ×ÉÑ ÐÒÏÓÔÏ É ÎÅÂÅÓÐÒÉÞÉÎÎÏ. åÓÌÉ ×Ù ÍÏÖÅÔÅ ÓÄÅÌÁÔØ ÞÔÏ-ÔÏ ÎÁ ÎÅÓËÏÌØËÏ ÓÔÒÏË ËÏÒÏÞÅ ÉÌÉ ÂÏÌÅÅ ÞÉÔÁÂÅÌØÎÏ, ÓÄÅÌÁÊÔÅ ÜÔÏ. ÷ ËÁÞÅÓÔ×Å ÐÒÉÍÅÒÏ× ÍÏÖÎÏ ÐÒÉ×ÅÓÔÉ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ËÏÎÓÔÒÕËÃÉÊ .if ÕÔÉÌÉÔÙ make ×ÍÅÓÔÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ËÏÎÓÔÒÕËÃÉÉ if ËÏÍÁÎÄÎÏÇÏ ÐÒÏÃÅÓÓÏÒÁ, ÎÅÎÕÖÎÏÓÔØ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ ÃÅÌÉ do-extract ÐÒÉ ×ÏÚÍÏÖÎÏÓÔÉ ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÑ EXTRACT* É ÉÓÐÏÌØÚÏ×ÁÎÉÅ GNU_CONFIGURE ×ÍÅÓÔÏ CONFIGURE_ARGS+= --prefix=${PREFIX}. åÓÌÉ ×Ù ÏÂÎÁÒÕÖÉÔÅ, ÞÔÏ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ÞÅÇÏ-ÔÏ ÐÒÉÈÏÄÉÔÓÑ ÐÉÓÁÔØ ÍÎÏÇÏ ÎÏ×ÏÇÏ ËÏÄÁ, ÔÏ, ÐÏÖÁÌÕÊÓÔÁ, ÐÒÏÓÍÏÔÒÉÔÅ ÆÁÊÌ bsd.port.mk ÎÁ ÐÒÅÄÍÅÔ ÔÏÇÏ, ÎÅ ÓÏÄÅÒÖÉÔ ÌÉ ÏÎ ÒÅÁÌÉÚÁÃÉÀ ÉÍÅÎÎÏ ×ÁÛÅÊ ÐÒÏÂÌÅÍÙ. èÏÔÑ ÅÇÏ ÔÒÕÄÎÏ ÞÉÔÁÔØ, ÉÍÅÅÔÓÑ ÍÎÏÇÏ ÐÒÏÂÌÅÍ, ×ÙÇÌÑÄÑÝÉÈ ÓÌÏÖÎÙÍÉ, ÄÌÑ ËÏÔÏÒÙÈ ÆÁÊÌ bsd.port.mk ÕÖÅ ÓÏÄÅÒÖÉÔ ÂÙÓÔÒÏÅ ÒÅÛÅÎÉÅ. òÁÂÏÔÁ ËÁË Ó <makevar>CC</makevar>, ÔÁË É <makevar>CXX</makevar> ðÏÒÔ ÄÏÌÖÅÎ ÐÒÉÎÉÍÁÔØ ×Ï ×ÎÉÍÁÎÉÅ ËÁË ÐÅÒÅÍÅÎÎÕÀ CC, ÔÁË É CXX. ðÏÄ ÜÔÉÍ ÍÙ ÐÏÄÒÁÚÕÍÅ×ÁÅÍ, ÞÔÏ ÐÏÒÔ ÎÉ × ËÏÅÍ ÓÌÕÞÁÅ ÎÅ ÄÏÌÖÅÎ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÚÎÁÞÅÎÉÑ ÜÔÉÈ ÐÅÒÅÍÅÎÎÙÈ, ÐÅÒÅÏÐÒÅÄÅÌÑÑ ÉÍÅÀÝÉÅÓÑ ÚÎÁÞÅÎÉÑ; ×ÍÅÓÔÏ ÜÔÏÇÏ ÍÏÖÎÏ ÄÏÂÁ×ÌÑÔØ ÎÕÖÎÙÅ ÚÎÁÞÅÎÉÑ Ë ÕÖÅ ÉÍÅÀÝÉÍÓÑ. üÔÏ Ó×ÑÚÁÎÏ Ó ÔÅÍ, ÞÔÏ ÐÁÒÁÍÅÔÒÙ ÐÏÓÔÒÏÅÎÉÑ, ÏÔÎÏÓÑÝÉÅÓÑ ËÏ ×ÓÅÍ ÐÏÒÔÁÍ, ÍÏÇÕÔ ÂÙÔØ ÚÁÄÁÎÙ ÇÌÏÂÁÌØÎÏ. åÓÌÉ ÐÏÒÔÙ ÎÅ ÕÞÉÔÙ×ÁÀÔ ÚÎÁÞÅÎÉÑ ÜÔÉÈ ÐÅÒÅÍÅÎÎÙÈ, ÄÏÂÁרÔÅ ÓÔÒÏËÕ NO_PACKAGE=ignores either cc or cxx × ÆÁÊÌ Makefile. äÁÌÅÅ ÓÌÅÄÕÅÔ ÐÒÉÍÅÒ ÆÁÊÌÁ Makefile, ÉÓÐÏÌØÚÕÀÝÅÇÏ ËÁË ÐÅÒÅÍÅÎÎÕÀ CC, ÔÁË É CXX. ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÓÉÍ×ÏÌÏ× ?=: CC?= gcc CXX?= g++ ÷ÏÔ ÐÒÉÍÅÒ, × ËÏÔÏÒÏÍ ÎÅ ÐÒÉÎÉÍÁÀÔÓÑ ×Ï ×ÎÉÍÁÎÉÅ ÎÉ ÐÅÒÅÍÅÎÎÁÑ CC, ÎÉ CXX: CC= gcc CXX= g++ ïÂÅ ÐÅÒÅÍÅÎÎÙÅ CC É CXX ÍÏÇÕÔ ÂÙÔØ ÏÐÒÅÄÅÌÅÎÙ × ÓÉÓÔÅÍÁÈ FreeBSD × ÆÁÊÌÅ /etc/make.conf. ÷ ÐÅÒ×ÏÍ ÐÒÉÍÅÒÅ ÚÁÄÁ£ÔÓÑ ÚÎÁÞÅÎÉÅ, ÅÓÌÉ ÏÎÏ ÒÁÎÅÅ ÎÅ ÂÙÌÏ ÏÐÒÅÄÅÌÅÎÏ × /etc/make.conf, ÞÔÏ ÓÏÈÒÁÎÑÅÔ ÌÀÂÙÅ ÏÐÒÅÄÅÌÅÎÉÑ, ÄÁÎÎÙÅ ÎÁ ÕÒÏ×ÎÅ ÓÉÓÔÅÍÙ × ÃÅÌÏÍ. ÷ÔÏÒÏÊ ÐÒÉÍÅÒ ÐÅÒÅÏÐÒÅÄÅÌÑÅÔ ×Ó£, ÞÔÏ ÂÙÌÏ ÚÁÄÁÎÏ ÒÁÎÅÅ. éÓÐÏÌØÚÏ×ÁÎÉÅ <makevar>CFLAGS</makevar> ðÏÒÔ ÄÏÌÖÅÎ ÐÒÉÎÉÍÁÔØ ×Ï ×ÎÉÍÁÎÉÅ ÐÅÒÅÍÅÎÎÕÀ CFLAGS. ðÏÄ ÜÔÉÍ ÍÙ ÐÏÄÒÁÚÕÍÅ×ÁÅÍ, ÞÔÏ ÐÏÒÔ ÎÉ × ËÏÅÍ ÓÌÕÞÁÅ ÎÅ ÄÏÌÖÅÎ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÚÎÁÞÅÎÉÑ ÜÔÉÈ ÐÅÒÅÍÅÎÎÙÈ, ÐÅÒÅÏÐÒÅÄÅÌÑÑ ÉÍÅÀÝÉÅÓÑ ÚÎÁÞÅÎÉÑ; ×ÍÅÓÔÏ ÜÔÏÇÏ ÍÏÖÎÏ ÄÏÂÁ×ÌÑÔØ ÎÕÖÎÙÅ ÚÎÁÞÅÎÉÑ Ë ÕÖÅ ÉÍÅÀÝÉÍÓÑ. üÔÏ Ó×ÑÚÁÎÏ Ó ÔÅÍ, ÞÔÏ ÐÁÒÁÍÅÔÒÙ ÐÏÓÔÒÏÅÎÉÑ, ÏÔÎÏÓÑÝÉÅÓÑ ËÏ ×ÓÅÍ ÐÏÒÔÁÍ, ÍÏÇÕÔ ÂÙÔØ ÚÁÄÁÎÙ ÇÌÏÂÁÌØÎÏ. åÓÌÉ ÐÏÒÔÙ ÎÅ ÕÞÉÔÙ×ÁÀÔ ÚÎÁÞÅÎÉÑ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ, ÄÏÂÁרÔÅ ÓÔÒÏËÕ NO_PACKAGE=ignores cflags × ÆÁÊÌ Makefile. äÁÌÅÅ ÓÌÅÄÕÅÔ ÐÒÉÍÅÒ ÆÁÊÌÁ Makefile, ÉÓÐÏÌØÚÕÀÝÅÇÏ ÐÅÒÅÍÅÎÎÕÀ CFLAGS. ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÓÉÍ×ÏÌÏ× +=: CFLAGS+= -Wall -Werror á ×ÏÔ ÐÒÉÍÅÒ, × ËÏÔÏÒÏÍ ÎÅ ÕÞÉÔÙ×ÁÅÔÓÑ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ CFLAGS: CFLAGS= -Wall -Werror ÷ ÓÉÓÔÅÍÅ FreeBSD ÐÅÒÅÍÅÎÎÁÑ CFLAGS ÏÐÒÅÄÅÌÅÎÁ × ÆÁÊÌÅ /etc/make.conf. ÷ ÐÅÒ×ÏÍ ÐÒÉÍÅÒÅ Ë ÐÅÒÅÍÅÎÎÏÊ CFLAGS ÄÏÂÁ×ÌÑÀÔÓÑ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÆÌÁÇÉ, ÐÒÉ ÜÔÏÍ ÓÏÈÒÁÎÑÀÔÓÑ ×ÓÅ ÏÐÒÅÄÅÌÅÎÉÑ, ÄÁÎÎÙÅ ÒÁÎÅÅ ÎÁ ÕÒÏ×ÎÅ ÓÉÓÔÅÍÙ. ÷Ï ×ÔÏÒÏÍ ÐÒÉÍÅÒÅ ×Ó£, ÞÔÏ ÂÙÌÏ ÚÁÄÁÎÏ ÒÁÎÅÅ, ÉÇÎÏÒÉÒÕÅÔÓÑ. éÚ ÓÔÏÒÏÎÎÉÈ ÆÁÊÌÏ× Makefile ÓÌÅÄÕÅÔ ÕÄÁÌÉÔØ ÆÌÁÇÉ ÏÐÔÉÍÉÚÁÃÉÉ. ïÂÝÅÓÉÓÔÅÍÎÙÅ ÆÌÁÇÉ ÏÐÔÉÍÉÚÁÃÉÉ ÎÁÈÏÄÑÔÓÑ × ÓÉÓÔÅÍÎÏÊ ÐÅÒÅÍÅÎÎÏÊ CFLAGS. ðÒÉÍÅÒ ÉÚ ÎÅÍÏÄÉÆÉÃÉÒÏ×ÁÎÎÏÇÏ Makefile: CFLAGS= -O3 -funroll-loops -DHAVE_SOUND ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÓÉÓÔÅÍÎÙÈ ÆÌÁÇÏ× ÏÐÔÉÍÉÚÁÃÉÉ Makefile ÓÔÁÎÅÔ ÐÏÈÏÖÉÍ ÎÁ ÓÌÅÄÕÀÝÉÊ ÐÒÉÍÅÒ: CFLAGS+= -DHAVE_SOUND âÉÂÌÉÏÔÅËÉ ÐÏÔÏËÏ× ÷Ï &os; ÂÉÂÌÉÏÔÅËÁ ÐÏÔÏËÏ× ÏÂÑÚÁÎÁ ÂÙÔØ ÓËÏÍÐÏÎÏ×ÁÎÁ Ó ÉÓÐÏÌÎÑÅÍÙÍÉ ÆÁÊÌÁÍÉ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÓÐÅÃÉÁÌØÎÏÇÏ ÆÌÁÇÁ ËÏÍÐÏÎÏ×ÝÉËÁ -pthread. åÓÌÉ ÐÏÒÔ ÎÁÓÔÁÉ×ÁÅÔ ÎÁ ÐÒÑÍÏÊ ËÏÍÐÏÎÏ×ËÅ Ó -lpthread ÉÌÉ -lc_r, ÓÏÚÄÁÊÔÅ ÐÁÔÞ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÅÒÅÍÅÎÎÏÊ PTHREAD_LIBS, ÐÒÅÄÕÓÍÏÔÒÅÎÎÏÊ ÉÎÆÒÁÓÔÒÕËÔÕÒÏÊ ÐÏÒÔÏ×. ïÂÙÞÎÏ ÄÌÑ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÕÓÔÁÎÏ×ÌÅÎÏ ÚÎÁÞÅÎÉÅ -pthread, ÎÏ ÎÁ ÏÐÒÅÄÅÌÅÎÎÙÈ ÁÒÈÉÔÅËÔÕÒÁÈ É ×ÅÒÓÉÑÈ &os; ÏÎÁ ÍÏÖÅÔ ÉÍÅÔØ ÄÒÕÇÉÅ ÚÎÁÞÅÎÉÑ, ÐÏÜÔÏÍÕ ÎÅ ÚÁÄÁ×ÁÊÔÅ -pthread × ÐÁÔÞÁÈ ÓÔÁÔÉÞÅÓËÉ É ×ÓÅÇÄÁ ÉÓÐÏÌØÚÕÊÔÅ PTHREAD_LIBS. åÓÌÉ ÐÏÓÔÒÏÅÎÉÅ ÐÏÒÔÁ ÚÁËÁÎÞÉ×ÁÅÔÓÑ ÏÛÉÂËÏÊ unrecognized option '-pthread' ÐÒÉ ÕÓÔÁÎÏ×ÌÅÎÎÏÊ ÐÅÒÅÍÅÎÎÏÊ PTHREAD_LIBS, ÔÏ ÍÏÖÅÔ ÂÙÔØ ÖÅÌÁÔÅÌØÎÏ ÉÓÐÏÌØÚÏ×ÁÎÉÅ gcc × ËÁÞÅÓÔ×Å ËÏÍÐÏÎÏ×ÝÉËÁ ÞÅÒÅÚ ÕÓÔÁÎÏ×ËÕ CONFIGURE_ENV × LD=${CC}. ðÁÒÁÍÅÔÒ -pthread ÎÁÐÒÑÍÕÀ ËÏÍÁÎÄÏÊ ld ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ. ðÏÖÅÌÁÎÉÑ ðÏÓÙÌÁÊÔÅ ÐÏÄÈÏÄÑÝÉÅ ÉÚÍÅÎÅÎÉÑ/ÐÁÔÞÉ Á×ÔÏÒÁÍ/ÓÏÐÒÏ×ÏÖÄÁÀÝÅÍÕ ÄÌÑ ×ËÌÀÞÅÎÉÑ × ÓÌÅÄÕÀÝÉÊ ÒÅÌÉÚ. üÔÏ ÔÏÌØËÏ ÓÄÅÌÁÅÔ ×ÁÛÕ ÒÁÂÏÔÕ ÇÏÒÁÚÄÏ ÌÅÇÞÅ ÐÒÉ ×ÙÈÏÄÅ ÓÌÅÄÕÀÝÅÇÏ ÒÅÌÉÚÁ. <filename>README.html</filename> îÅ ×ËÌÀÞÁÊÔÅ ÓÀÄÁ ÆÁÊÌ README.html. üÔÏÔ ÆÁÊÌ ÎÅ Ñ×ÌÑÅÔÓÑ ÞÁÓÔØÀ ÄÅÒÅ×Á SVN, É ÏÎ ÇÅÎÅÒÉÒÕÅÔÓÑ ÐÒÉ ÐÏÍÏÝÉ ËÏÍÁÎÄÙ make readme. åÓÌÉ ÎÅ ÕÄÁÅÔÓÑ ×ÙÐÏÌÎÉÔØ make readme, ÕÂÅÄÉÔÅÓØ, ÞÔÏ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ECHO_MSG ÎÅ ÂÙÌÏ ÉÚÍÅÎÅÎÏ ×ÎÕÔÒÉ ÐÏÒÔÁ. ðÏÍÅÔËÁ ÎÅÕÓÔÁÎÁ×ÌÉ×ÁÅÍÏÇÏ ÐÏÒÔÁ ËÁË <makevar>BROKEN</makevar>, <makevar>FORBIDDEN</makevar> ÉÌÉ <makevar>IGNORE</makevar> ÷ ÎÅËÏÔÏÒÙÈ ÓÌÕÞÁÑÈ ÐÏÌØÚÏ×ÁÔÅÌÉ ÎÅ ÄÏÌÖÎÙ ÄÏÐÕÓËÁÔØÓÑ Ë ÕÓÔÁÎÏ×ËÅ ÐÏÒÔÁ. äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÓÏÏÂÝÉÔØ ÐÏÌØÚÏ×ÁÔÅÌÀ, ÞÔÏ ÐÏÒÔ ÎÅ ÓÌÅÄÕÅÔ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ, ÉÍÅÅÔÓÑ ÎÅÓËÏÌØËÏ make-ÐÅÒÅÍÅÎÎÙÈ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ × ÆÁÊÌÅ Makefile ÐÏÒÔÁ. úÎÁÞÅÎÉÑ ÓÌÅÄÕÀÝÉÈ make-ÐÅÒÅÍÅÎÎÙÈ ÂÕÄÕÔ ÐÒÉÞÉÎÏÊ, ×ÏÚ×ÒÁÝÁÅÍÏÊ ÐÏÌØÚÏ×ÁÔÅÌÑÍ, ÐÏ ËÏÔÏÒÏÊ ÐÏÒÔ ÏÔËÁÚÙ×ÁÅÔ × ÕÓÔÁÎÏ×ËÅ. ðÏÖÁÌÕÊÓÔÁ, ÉÓÐÏÌØÚÕÊÔÅ ËÏÒÒÅËÔÎÙÅ make-ÐÅÒÅÍÅÎÎÙÅ, ÔÁË ËÁË ËÁÖÄÁÑ ÐÅÒÅÍÅÎÎÁÑ make ÐÅÒÅÄÁÅÔ ÁÂÓÏÌÀÔÎÏ ÒÁÚÌÉÞÎÙÊ ÓÍÙÓÌ ËÁË ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ÔÁË É ÄÌÑ Á×ÔÏÍÁÔÉÚÉÒÏ×ÁÎÎÙÈ ÓÉÓÔÅÍ, ËÏÔÏÒÙÅ ÐÏÌÁÇÁÀÔÓÑ ÎÁ ÆÁÊÌÙ Makefile, ÔÁËÉÈ ËÁË ËÌÁÓÔÅÒ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÏ×, FreshPorts É portsmon. ðÅÒÅÍÅÎÎÙÅ BROKEN ÐÒÅÄÎÁÚÎÁÞÅÎÁ ÄÌÑ ÐÏÒÔÏ×, ËÏÔÏÒÙÅ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ ÎÅ ËÏÍÐÉÌÉÒÕÀÔÓÑ, ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÀÔÓÑ ÉÌÉ ÎÅ ÕÄÁÌÑÀÔÓÑ ÐÒÁ×ÉÌØÎÏ. óÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÐÏÒÔÏ×, ËÏÇÄÁ ÐÒÏÂÌÅÍÁ ÓÞÉÔÁÅÔÓÑ ×ÒÅÍÅÎÎÏÊ. ÷ ÏÓÏÂÙÈ ÓÌÕÞÁÑÈ ËÌÁÓÔÅÒ ÐÏÓÔÒÏÅÎÉÑ ÂÕÄÅÔ ÐÒÏÄÏÌÖÁÔØ ÐÏÐÙÔËÉ ÓÏÂÒÁÔØ ÉÈ, ÞÔÏÂÙ ÐÏËÁÚÁÔØ, ÒÅÛÅÎÁ ÌÉ ÏÓÎÏ×ÎÁÑ ÐÒÏÂÌÅÍÁ. (ïÄÎÁËÏ, ËÁË ÐÒÁ×ÉÌÏ, ËÌÁÓÔÅÒ ÚÁÐÕÓËÁÅÔÓÑ ÂÅÚ ÜÔÏÊ ×ÏÚÍÏÖÎÏÓÔÉ.) ÷ ÞÁÓÔÎÏÓÔÉ, ÉÓÐÏÌØÚÕÊÔÅ BROKEN, ËÏÇÄÁ ÐÏÒÔ: ÎÅ ËÏÍÐÉÌÉÒÕÅÔÓÑ ÎÅ ×ÙÐÏÌÎÑÅÔ ÐÒÏÃÅÓÓ Ó×ÏÅÊ ËÏÎÆÉÇÕÒÁÃÉÉ ÉÌÉ ÕÓÔÁÎÏ×ËÉ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÆÁÊÌÙ ×Ï×ÎÅ ${LOCALBASE} ÎÅ ÕÄÁÌÑÅÔ ÐÏÌÎÏÓÔØÀ ×ÓÅ Ó×ÏÉ ÆÁÊÌÙ ÐÒÉ ÄÅÉÎÓÔÁÌÌÑÃÉÉ (ÔÅÍ ÎÅ ÍÅÎÅÅ, ÜÔÏ ÍÏÖÅÔ ÂÙÔØ ÄÏÐÕÓÔÉÍÏ, É ÐÏÄÈÏÄÉÔ ÄÌÑ ÐÏÒÔÏ×, ÏÓÔÁ×ÌÑÀÝÉÈ ÐÏÓÌÅ ÓÅÂÑ ÆÁÊÌÙ, ÉÚÍÅÎÅÎÎÙÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ) FORBIDDEN ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÐÏÒÔÏ×, ËÏÔÏÒÙÅ ÓÏÄÅÒÖÁÔ ÕÑÚ×ÉÍÏÓÔÉ × ÉÎÆÏÒÍÁÃÉÏÎÎÏÊ ÂÅÚÏÐÁÓÎÏÓÔÉ ÉÌÉ Ñ×ÌÑÀÔÓÑ ÐÏÔÅÎÃÉÁÌØÎÏ ×ÒÅÄÎÙÍÉ × ÐÌÁÎÅ ÏÂÅÓÐÅÞÅÎÉÑ ÉÎÆÏÒÍÁÃÉÏÎÎÏÊ ÂÅÚÏÐÁÓÎÏÓÔÉ ÓÉÓÔÅÍÙ FreeBSD ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÄÁÎÎÏÇÏ ÐÏÒÔÁ (ÎÁÐÒÉÍÅÒ: ÚÁ×ÅÄÏÍÏ ÎÅÂÅÚÏÐÁÓÎÁÑ ÐÒÏÇÒÁÍÍÁ ÉÌÉ ÐÒÏÇÒÁÍÍÁ, ËÏÔÏÒÁÑ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÌÅÇËÏ ×ÚÌÁÍÙ×ÁÅÍÙÅ ÓÅÒ×ÉÓÙ). ðÏÒÔÙ ÄÏÌÖÎÙ ÐÏÍÅÞÁÔØÓÑ ËÁË FORBIDDEN, ËÁË ÔÏÌØËÏ × ËÏÎËÒÅÔÎÏÍ ÐÒÏÇÒÁÍÍÎÏÍ ÏÂÅÓÐÅÞÅÎÉÉ ÏÂÎÁÒÕÖÉÌÁÓØ ÕÑÚ×ÉÍÏÓÔØ, ÎÏ ÏÂÎÏ×ÌÅÎÉÅ ×ÙÐÕÝÅÎÏ ÎÅ ÂÙÌÏ. ÷ ÉÄÅÁÌØÎÏÍ ÓÌÕÞÁÅ ÐÏÒÔÙ ÄÏÌÖÎÙ ÏÂÎÏ×ÌÑÔØÓÑ ÍÁËÓÉÍÁÌØÎÏ ÂÙÓÔÒÏ ÐÏÓÌÅ ÏÂÎÁÒÕÖÅÎÉÑ ÕÑÚ×ÉÍÏÓÔÉ, ÞÔÏÂÙ ÕÍÅÎØÛÉÔØ ÞÉÓÌÏ ÕÑÚ×ÉÍÙÈ ÈÏÓÔÏ× FreeBSD (ÎÁÍ ÎÒÁ×ÉÔÓÑ ÉÍÅÔØ ÒÅÐÕÔÁÃÉÀ ÂÅÚÏÐÁÓÎÏÊ ÓÉÓÔÅÍÙ), ÏÄÎÁËÏ ÉÎÏÇÄÁ ÓÌÕÞÁÅÔÓÑ ÚÎÁÞÉÔÅÌØÎÙÊ ×ÒÅÍÅÎÎÏÊ ÒÁÚÒÙ× ÍÅÖÄÕ ÏÂÎÁÒÕÖÅÎÉÅÍ ÕÑÚ×ÉÍÏÓÔÉ É ×ÙÈÏÄÏÍ ÏÂÎÏ×Ì£ÎÎÏÇÏ ÒÅÌÉÚÁ ÕÑÚ×ÉÍÏÇÏ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ. îÅ ÐÏÍÅÞÁÊÔÅ ÐÏÒÔ ËÁË FORBIDDEN, ÅÓÌÉ ÐÒÉÞÉÎÁ ÎÅ ×ÙÚ×ÁÎÁ ÓÏÏÂÒÁÖÅÎÉÑÍÉ ÉÎÆÏÒÍÁÃÉÏÎÎÏÊ ÂÅÚÏÐÁÓÎÏÓÔÉ. IGNORE ÐÒÅÄÎÁÚÎÁÞÅÎÁ ÄÌÑ ÐÏÒÔÏ×, ËÏÔÏÒÙÅ ÎÅ ÄÏÌÖÎÙ ÓÔÒÏÉÔØÓÑ ÐÏ ËÁËÏÊ-ÌÉÂÏ ÄÒÕÇÏÊ ÐÒÉÞÉÎÅ. óÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÐÏÒÔÏ×, × ÓÌÕÞÁÅ ËÏÇÄÁ ÐÒÏÂÌÅÍÁ ÓÞÉÔÁÅÔ ËÏÎÓÔÒÕËÔÉ×ÎÏÊ. ëÌÁÓÔÅÒ ÐÏÓÔÒÏÅÎÉÑ ÎÉ ÐÒÉ ËÁËÉÈ ÕÓÌÏ×ÉÑÈ ÎÅ ÂÕÄÅÔ ÓÔÒÏÉÔØ ÐÏÒÔÙ, ÐÏÍÅÞÅÎÎÙÅ ËÁË IGNORE. ÷ ÞÁÓÔÎÏÓÔÉ, ÉÓÐÏÌØÚÕÊÔÅ IGNORE, ËÏÇÄÁ ÐÏÒÔ: ËÏÍÐÉÌÉÒÕÅÔÓÑ, ÎÏ ÒÁÂÏÔÁÅÔ ÎÅÐÒÁ×ÉÌØÎÏ ÎÅ ÒÁÂÏÔÁÅÔ ÎÁ ÕÓÔÁÎÏ×ÌÅÎÎÏÊ ×ÅÒÓÉÉ &os; ÔÒÅÂÕÅÔ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ ÉÓÈÏÄÎÙÅ ÔÅËÓÔÙ ÑÄÒÁ &os;, ÎÏ Õ ÐÏÌØÚÏ×ÁÔÅÌÑ × ÕÓÔÁÎÏ×ÌÅÎÎÏÍ ×ÉÄÅ ÏÎÉ ÏÔÓÕÔÓÔ×ÕÀÔ ÉÍÅÅÔ distfile, ËÏÔÏÒÙÊ ÎÅ ÍÏÖÅÔ ÂÙÔØ Á×ÔÏÍÁÔÉÞÅÓËÉ ÉÚ×ÌÅÞÅÎ ÉÚ-ÚÁ ÌÉÃÅÎÚÉÏÎÎÙÈ ÏÇÒÁÎÉÞÅÎÉÊ ÎÅ ÒÁÂÏÔÁÅÔ Ó ËÁËÉÍ-ÌÉÂÏ ÄÒÕÇÉÍ ÐÏÒÔÏÍ, ÕÓÔÁÎÏ×ÌÅÎÎÙÍ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ (ÎÁÐÒÉÍÅÒ, ÐÏÒÔ ÚÁ×ÉÓÉÔ ÏÔ www/apache20, ÎÏ ÕÓÔÁÎÏ×ÌÅÎ www/apache22) åÓÌÉ ÐÏÒÔ ÂÕÄÅÔ ËÏÎÆÌÉËÔÏ×ÁÔØ Ó ÕÖÅ ÕÓÔÁÎÏ×ÌÅÎÎÙÍ ÐÏÒÔÏÍ, (ÎÁÐÒÉÍÅÒ, ÅÓÌÉ ÏÎÉ ÕÓÔÁÎÁ×ÌÉ×ÁÀÔ ÆÁÊÌ × ÔÏ ÖÅ ÍÅÓÔÏ, ÎÏ Ó ÉÎÙÍ ÆÕÎËÃÉÏÎÁÌØÎÙÍ ÎÁÚÎÁÞÅÎÉÅÍ), ÔÏ ÉÓÐÏÌØÚÕÊÔÅ ×ÍÅÓÔÏ ÜÔÏÇÏ CONFLICTS. CONFLICTS ÓÁÍ ÕÓÔÁÎÏ×ÉÔ ÚÎÁÞÅÎÉÅ IGNORE. åÓÌÉ ÐÏÒÔ ÎÕÖÎÏ ÐÏÍÅÔÉÔØ ËÁË IGNORE ÔÏÌØËÏ ÎÁ ÎÅËÏÔÏÒÙÈ ÁÒÈÉÔÅËÔÕÒÁÈ, ÄÌÑ ÜÔÏÇÏ ÅÓÔØ Ä×Å ÄÒÕÇÉÅ ÕÄÏÂÎÙÅ ÐÅÒÅÍÅÎÎÙÅ, ËÏÔÏÒÙÅ Á×ÔÏÍÁÔÉÞÅÓËÉ ÕÓÔÁÎÏ×ÑÔ ÄÌÑ ×ÁÓ ÚÎÁÞÅÎÉÑ: ONLY_FOR_ARCHS É NOT_FOR_ARCHS. ðÒÉÍÅÒÙ: ONLY_FOR_ARCHS= i386 amd64 NOT_FOR_ARCHS= ia64 sparc64 óÏÂÓÔ×ÅÎÎÏÅ ÓÏÏÂÝÅÎÉÅ IGNORE ÍÏÖÎÏ ÚÁÄÁÔØ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ONLY_FOR_ARCHS_REASON É NOT_FOR_ARCHS_REASON. ïÔÄÅÌØÎÏ ÄÌÑ ËÁÖÄÏÊ ÁÒÈÉÔÅËÔÕÒÙ ÜÔÏ ×ÏÚÍÏÖÎÏ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ONLY_FOR_ARCHS_REASON_ARCH É NOT_FOR_ARCHS_REASON_ARCH. åÓÌÉ ÐÏÒÔ ÚÁÇÒÕÖÁÅÔ É ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÉÓÐÏÌÎÑÅÍÙÅ ÆÁÊÌÙ i386, ÔÏ ÓÌÅÄÕÅÔ ÕÓÔÁÎÏ×ÉÔØ IA32_BINARY_PORT. åÓÌÉ ÜÔÁ ÐÅÒÅÍÅÎÎÁÑ ÕÓÔÁÎÏ×ÌÅÎÁ, ÂÕÄÅÔ ×ÙÐÏÌÎÅÎÁ ÐÒÏ×ÅÒËÁ ÄÏÓÔÕÐÎÏÓÔÉ ËÁÔÁÌÏÇÁ /usr/lib32 ÄÌÑ ÂÉÂÌÉÏÔÅË ×ÅÒÓÉÉ IA32 É ÐÏÄÄÅÒÖËÉ IA32 × ÑÄÒÅ. ðÒÉ ÎÅ×ÙÐÏÌÎÅÎÉÉ ÌÀÂÏÇÏ ÉÚ ÜÔÉÈ ÕÓÌÏ×ÉÊ ÂÕÄÅÔ Á×ÔÏÍÁÔÉÞÅÓËÉ ÕÓÔÁÎÏ×ÌÅÎÁ ÐÅÒÅÍÅÎÎÁÑ IGNORE. úÁÍÅÞÁÎÉÑ ÐÏ ÒÅÁÌÉÚÁÃÉÉ óÔÒÏËÉ ÎÅ ÓÌÅÄÕÅÔ ÂÒÁÔØ × ËÁ×ÙÞËÉ. ôÁËÖÅ ÐÏÓÔÒÏÅÎÉÅ ÓÔÒÏËÉ ÄÏÌÖÎÏ ÎÅÓËÏÌØËÏ ÒÁÚÌÉÞÁÔØÓÑ ÉÚ-ÚÁ ÓÐÏÓÏÂÁ ÏÔÏÂÒÁÖÅÎÉÑ ÉÎÆÏÒÍÁÃÉÉ ÐÏÌØÚÏ×ÁÔÅÌÀ. ðÒÉÍÅÒÙ: BROKEN= this port is unsupported on FreeBSD 5.x IGNORE= is unsupported on FreeBSD 5.x ÐÏÌÕÞÁÅÍÙÅ × ÒÅÚÕÌØÔÁÔÅ ÓÌÅÄÕÀÝÅÇÏ ×Ù×ÏÄÁ make describe: ===> foobar-0.1 is marked as broken: this port is unsupported on FreeBSD 5.x. ===> foobar-0.1 is unsupported on FreeBSD 5.x. ðÏÍÅÔËÁ ÐÏÒÔÁ ÎÁ ÕÄÁÌÅÎÉÅ Ó <makevar>DEPRECATED</makevar> ÉÌÉ <makevar>EXPIRATION_DATE</makevar> ðÏÍÎÉÔÅ, ÞÔÏ BROKEN É FORBIDDEN ÂÕÄÕÔ ÉÓÐÏÌØÚÏ×ÁÎÙ ËÁË ×ÒÅÍÅÎÎÏÅ ÓÒÅÄÓÔ×Ï, ÅÓÌÉ ÐÏÒÔ ÎÅ Ñ×ÌÑÅÔÓÑ ÒÁÂÏÔÁÀÝÉÍ. ðÏÓÔÏÑÎÎÏ ÎÅÒÁÂÏÔÏÓÐÏÓÏÂÎÙÅ ÐÏÒÔÙ ÄÏÌÖÎÙ ÐÏÌÎÏÓÔØÀ ÕÄÁÌÑÔØÓÑ ÉÚ ÄÅÒÅ×Á. ÷ ÐÏÄÈÏÄÑÝÉÈ ÓÉÔÕÁÃÉÑÈ ÐÏÌØÚÏ×ÁÔÅÌÉ ÍÏÇÕÔ ÂÙÔØ ÏÐÏ×ÅÝÅÎÙ Ï ÐÒÅÄÓÔÏÑÝÅÍ ÕÄÁÌÅÎÉÉ ÞÅÒÅÚ ÐÅÒÅÍÅÎÎÙÅ DEPRECATED É EXPIRATION_DATE. ðÅÒ×ÏÅ - ÜÔÏ ÐÒÏÓÔÏ ÓÔÒÏËÁ, ÓÏÏÂÝÁÀÝÁÑ ÐÒÉÞÉÎÕ ÚÁÐÌÁÎÉÒÏ×ÁÎÎÏÇÏ ÕÄÁÌÅÎÉÑ ÐÏÒÔÁ; ×ÔÏÒÁÑ Ñ×ÌÑÅÔÓÑ ÓÔÒÏËÏÊ × ÆÏÒÍÁÔÅ ISO 8601 (YYYY-MM-DD). ïÂÅ ÂÕÄÕÔ ÐÏËÁÚÁÎÙ ÐÏÌØÚÏ×ÁÔÅÌÀ. ðÅÒÅÍÅÎÎÕÀ DEPRECATED ÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÂÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÑ EXPIRATION_DATE (× ÞÁÓÔÎÏÓÔÉ, ÐÒÉ ÒÅËÏÍÅÎÄÁÃÉÉ ÎÏ×ÏÊ ×ÅÒÓÉÉ ÐÏÒÔÁ), ÎÏ ÏÂÒÁÔÎÙÊ ÐÏÒÑÄÏË ÎÅ ÉÍÅÅÔ ÎÉËÁËÏÇÏ ÓÍÙÓÌÁ. îÅ ÓÕÝÅÓÔ×ÕÅÔ ÕÓÔÏÑ×ÛÅÊÓÑ ÐÏÌÉÔÉËÉ, ËÁË ÄÏÌÇÏ ÓÌÅÄÕÅÔ ÐÒÏÄÏÌÖÁÔØ Õ×ÅÄÏÍÌÅÎÉÑ. ôÅËÕÝÁÑ ÐÒÁËÔÉËÁ ÄÁÅÔ ÏËÏÌÏ ÍÅÓÑÃÁ ÄÌÑ ÒÅÛÅÎÉÑ ÐÒÏÂÌÅÍ ÂÅÚÏÐÁÓÎÏÓÔÉ É Ä×Á ÍÅÓÑÃÁ ÄÌÑ ÐÒÏÂÌÅÍ ÐÏÓÔÒÏÅÎÉÑ. üÔÏ ÔÁËÖÅ ÄÁÅÔ ÎÅÍÎÏÇÏ ×ÒÅÍÅÎÉ ÎÁ ÉÓÐÒÁ×ÌÅÎÉÅ ÐÒÏÂÌÅÍ ÌÀÂÙÍ ÚÁÉÎÔÅÒÅÓÏ×ÁÎÎÙÍ ËÏÍÍÉÔÔÅÒÁÍ. éÚÂÅÇÁÊÔÅ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ËÏÎÓÔÒÕËÃÉÉ <literal>.error</literal> ðÒÁ×ÉÌØÎÙÍ ÓÐÏÓÏÂÏÍ ÐÏÄÁÔØ ÓÉÇÎÁÌ ÄÌÑ Makefile Ï ÔÏÍ, ÞÔÏ ÐÏÒÔ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎ ÉÚ-ÚÁ ËÁËÏÇÏ-ÔÏ ×ÎÅÛÎÅÇÏ ÆÁËÔÏÒÁ (ÎÁÐÒÉÍÅÒ, ÐÏÌØÚÏ×ÁÔÅÌØ ÕËÁÚÁÌ ÎÅÄÏÐÕÓÔÉÍÕÀ ËÏÍÂÉÎÁÃÉÀ ÏÐÃÉÊ ÐÏÓÔÒÏÅÎÉÑ), Ñ×ÌÑÅÔÓÑ ÕÓÔÁÎÏ×ËÁ ÎÅÐÕÓÔÏÇÏ ÚÎÁÞÅÎÉÑ ÄÌÑ IGNORE. üÔÏ ÚÎÁÞÅÎÉÅ ÂÕÄÅÔ ÓÆÏÒÍÁÔÉÒÏ×ÁÎÏ É ÐÏËÁÚÁÎÏ ÐÏÌØÚÏ×ÁÔÅÌÀ ×Ï ×ÒÅÍÑ make install. éÓÐÏÌØÚÏ×ÁÎÉÅ ÄÌÑ ÜÔÉÈ ÃÅÌÅÊ .error Ñ×ÌÑÅÔÓÑ ÒÁÓÐÒÏÓÔÒÁÎÅÎÎÏÊ ÏÛÉÂËÏÊ. ðÒÏÂÌÅÍÁ × ÔÏÍ, ÞÔÏ × ÜÔÏÊ ÓÉÔÕÁÃÉÉ ÂÕÄÕÔ ÐÏ×ÒÅÖÄÅÎÙ ÍÎÏÇÉÅ ÉÎÓÔÒÕÍÅÎÔÙ Á×ÔÏÍÁÔÉÚÁÃÉÉ, ÒÁÂÏÔÁÀÝÉÅ Ó ÄÅÒÅ×ÏÍ ÐÏÒÔÏ×. îÁÉÂÏÌØÛÉÍ ÏÂÒÁÚÏÍ ÜÔÏ ÒÁÓÐÒÏÓÔÒÁÎÅÎÏ ÐÒÉ ÐÏÐÙÔËÅ ÐÏÓÔÒÏÉÔØ /usr/ports/INDEX (ÓÍÏÔÒÉÔÅ ). ôÅÍ ÎÅ ÍÅÎÅÅ, ÄÁÖÅ ÂÏÌÅÅ ÐÒÏÓÔÙÅ ËÏÍÁÎÄÙ, ÔÁËÉÅ ËÁË make maintainer, × ÜÔÏÍ ÓÌÕÞÁÅ ÔÁËÖÅ ×ÅÒÎÕÔ ÏÛÉÂËÕ. üÔÏ ÎÅ Ñ×ÌÑÅÔÓÑ ÐÒÉÅÍÌÅÍÙÍ. ëÁË ÉÚÂÅÇÁÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÅ <literal>.error</literal> ðÒÅÄÐÏÌÏÖÉÍ, ÞÔÏ ËÔÏ-ÔÏ ÐÏÍÅÓÔÉÌ ÓÔÒÏËÕ USE_POINTYHAT=yes × make.conf. ðÅÒ×ÙÊ ÉÚ ÐÏÓÌÅÄÕÀÝÉÈ Ä×ÕÈ ×ÁÒÉÁÎÔÏ× ÓÔÒÏË ÆÁÊÌÁ Makefile ÐÒÉ×ÅÄ£Ô Ë ÎÅÕÄÁÞÎÏÍÕ ÚÁ×ÅÒÛÅÎÉÀ ÒÁÂÏÔÙ make index, Á ×ÔÏÒÏÊ - ÎÅÔ: .if USE_POINTYHAT .error "POINTYHAT is not supported" .endif .if USE_POINTYHAT IGNORE=POINTYHAT is not supported .endif éÓÐÏÌØÚÏ×ÁÎÉÅ <filename>sysctl</filename> éÓÐÏÌØÚÏ×ÁÎÉÅ sysctl ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ, ËÒÏÍÅ ËÁË ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ÃÅÌÅÊ. üÔÏ ×ÙÚ×ÁÎÏ ÔÅÍ, ÞÔÏ ×ÙÞÉÓÌÅÎÉÅ ÌÀÂÙÈ makevar, ÔÁËÉÈ ËÁË ×Ï ×ÒÅÍÑ ËÏÍÁÎÄÙ make index, Ó ÎÅÏÂÈÏÄÉÍÏÓÔØÀ ÚÁÐÕÓËÁ ÜÔÏÊ ËÏÍÁÎÄÙ, ÅÝÅ ÂÏÌØÛÅ ÚÁÍÅÄÌÑÅÔ ×ÅÓØ ÐÒÏÃÅÓÓ. &man.sysctl.8; ÓÌÅÄÕÅÔ ×ÓÅÇÄÁ ÉÓÐÏÌØÚÏ×ÁÔØ ÞÅÒÅÚ ÐÅÒÅÍÅÎÎÕÀ SYSCTL, ÐÏÓËÏÌØËÕ ÏÎÁ ÓÏÄÅÒÖÉÔ ÐÏÌÎÏÓÔØÀ ÚÁÄÁÎÎÙÊ ÐÕÔØ, É ÐÒÉ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÍÏÖÅÔ ÂÙÔØ ÐÅÒÅÏÐÒÅÄÅÌÅÎÁ. íÅÎÑÀÝÉÅÓÑ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÅ ÆÁÊÌÙ éÎÏÇÄÁ Á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ ÍÅÎÑÀÔ ÓÏÄÅÒÖÉÍÏÅ ×ÙÐÕÝÅÎÎÙÈ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ× ÂÅÚ ÓÍÅÎÙ ÎÁÚ×ÁÎÉÑ. ÷Ù ÄÏÌÖÎÙ ÐÒÏ×ÅÒÑÔØ, ÞÔÏ ÉÚÍÅÎÅÎÉÑ Ñ×ÌÑÀÔÓÑ ÏÆÉÃÉÁÌØÎÙÍÉ É ÐÒÏÉÚ×ÅÄÅÎÙ Á×ÔÏÒÏÍ. ÷ ÐÒÏÛÌÏÍ ÂÙ×ÁÌÏ, ÞÔÏ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÊ ÆÁÊÌ ÍÏÌÞÁ ÉÚÍÅÎÑÌÓÑ ÎÁ ÓÁÊÔÁÈ ÚÁÇÒÕÚËÉ Ó ÎÁÍÅÒÅÎÉÅÍ ÎÁÎÅÓÔÉ ×ÒÅÄ ÉÌÉ ÓËÏÍÐÒÏÍÅÔÉÒÏ×ÁÔØ ÂÅÚÏÐÁÓÎÏÓÔØ ËÏÎÅÞÎÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ. ïÔÌÏÖÉÔÅ ÓÔÁÒÙÊ ÆÁÊÌ Ó ÄÉÓÔÒÉÂÕÔÉ×ÏÍ × ÓÔÏÒÏÎÕ, ÚÁÇÒÕÚÉÔÅ ÎÏ×ÙÊ, ÒÁÓÐÁËÕÊÔÅ ÅÇÏ É ÓÒÁ×ÎÉÔÅ ÓÏÄÅÒÖÉÍÏÅ ÐÒÉ ÐÏÍÏÝÉ &man.diff.1;. åÓÌÉ ×Ù ÎÅ ×ÉÄÉÔÅ ÎÉÞÅÇÏ ÐÏÄÏÚÒÉÔÅÌØÎÏÇÏ, ÔÏ ÍÏÖÅÔÅ ÏÂÎÏ×ÉÔØ ÆÁÊÌ distinfo. õÂÅÄÉÔÅÓØ, ÞÔÏ ×Ù ÐÏÄÙÔÏÖÉÌÉ ÒÁÚÌÉÞÉÑ × ×ÁÛÅÍ PR ÉÌÉ ÏÐÉÓÁÎÉÉ ËÏÍÍÉÔÁ, ÞÔÏÂÙ ÄÒÕÇÉÅ ÌÀÄÉ ÂÙÌÉ × ËÕÒÓÅ, ÞÔÏ ×Ù ÐÏÚÁÂÏÔÉÌÉÓØ Ï ÔÏÍ, ÞÔÏ ÎÉÞÅÇÏ ÐÌÏÈÏÇÏ ÎÅ ÓÌÕÞÉÌÏÓØ. ÷ÏÚÍÏÖÎÏ ×Ù ÔÁËÖÅ ÚÁÈÏÔÉÔÅ Ó×ÑÚÁÔØÓÑ Ó Á×ÔÏÒÏÍ ÜÔÏÇÏ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ ÄÌÑ ÐÏÄÔ×ÅÒÖÄÅÎÉÑ ÉÚÍÅÎÅÎÉÊ. éÚÂÅÇÁÎÉÅ ÌÉÎÕËÓÉÚÍÏ× îÅ ÉÓÐÏÌØÚÕÊÔÅ /proc, ÅÓÌÉ ÄÏÓÔÕÐÎÙ ÌÀÂÙÅ ÄÒÕÇÉÅ ÉÓÔÏÞÎÉËÉ ÐÏÌÕÞÅÎÉÑ ÉÎÆÏÒÍÁÃÉÉ, ÎÁÐÒÉÍÅÒ, setprogname(argv[0]) × main() É &man.getprogname.3;, × ÓÌÕÞÁÅ ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ÚÎÁÔØ Ó×Ï£ ÉÍÑ. îÅ ÐÏÌÁÇÁÊÔÅÓØ ÎÁ ÐÏ×ÅÄÅÎÉÅ, ÎÅ ÒÅÇÌÁÍÅÎÔÉÒÏ×ÁÎÎÏÅ POSIX. îÅ ×ÙÐÏÌÎÑÊÔÅ ÚÁÐÉÓØ ×ÒÅÍÅÎÎÙÈ ÍÅÔÏË × ËÒÉÔÉÞÅÓËÉÈ ÐÕÔÑÈ ×ÙÐÏÌÎÅÎÉÑ ÐÒÉÌÏÖÅÎÉÑ, ÅÓÌÉ ÍÏÖÎÏ ÏÂÏÊÔÉÓØ ÂÅÚ ÜÔÏÇÏ. ðÏÌÕÞÅÎÉÅ ×ÒÅÍÅÎÎÙÈ ÍÅÔÏË ÍÏÖÅÔ ÂÙÔØ ÍÅÄÌÅÎÎÙÍ, × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÓÔÅÐÅÎÉ ÔÏÞÎÏÓÔÉ ÉÓÐÏÌØÚÕÅÍÙÈ ÞÁÓÏ× × ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÅ. åÓÌÉ ×ÒÅÍÅÎÎÙÅ ÍÅÔËÉ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÎÕÖÎÙ, ÏÐÒÅÄÅÌÉÔÅ ÓÔÅÐÅÎØ ÔÒÅÂÕÅÍÏÊ ÔÏÞÎÏÓÔÉ É ÉÓÐÏÌØÚÕÊÔÅ ÔÏÔ API, × ËÏÔÏÒÏÍ ÄÏËÕÍÅÎÔÉÒÕÅÔÓÑ ÐÏÌÕÞÅÎÉÅ ÄÏÓÔÁÔÏÞÎÏÊ ÔÏÞÎÏÓÔÉ. òÑÄ ÐÒÏÓÔÙÈ ÓÉÓÔÅÍÎÙÈ ×ÙÚÏ×Ï× (ÎÁÐÒÉÍÅÒ, &man.gettimeofday.2;, &man.getpid.2;) ÒÁÂÏÔÁÀÔ ÎÁÍÎÏÇÏ ÂÙÓÔÒÅÅ × &linux; ÐÏ ÓÒÁ×ÎÅÎÉÀ Ó ÌÀÂÏÊ ÄÒÕÇÏÊ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÏÊ ÉÚ-ÚÁ ËÅÛÉÒÏ×ÁÎÉÑ É ÉÓÐÏÌØÚÕÅÍÏÊ ÏÐÔÉÍÉÚÁÃÉÉ vsyscall. îÅ ÐÏÌÁÇÁÊÔÅÓØ ÎÁ ÉÈ ÄÅÛÅ×ÉÚÎÕ × ËÒÉÔÉÞÎÙÈ Ë ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ ÐÒÉÌÏÖÅÎÉÑÈ. ÷ ÃÅÌÏÍ, ÓÔÁÒÁÊÔÅÓØ ÉÚÂÅÇÁÔØ ÓÉÓÔÅÍÎÙÈ ×ÙÚÏ×Ï× ÔÁÍ, ÇÄÅ ÜÔÏ ×ÏÚÍÏÖÎÏ. îÅ ÐÏÌÁÇÁÊÔÅÓØ ÎÁ ÓÐÅÃÉÆÉÞÎÏÅ ÄÌÑ &linux; ÐÏ×ÅÄÅÎÉÅ ÓÏËÅÔÁ. ÷ ÞÁÓÔÎÏÓÔÉ, ÏÔÌÉÞÁÀÔÓÑ ÒÁÚÍÅÒÙ ÂÕÆÅÒÁ ÓÏËÅÔÁ ÐÏ ÕÍÏÌÞÁÎÉÀ (×ÙÐÏÌÎÉÔÅ ×ÙÚÏ× &man.setsockopt.2; Ó SO_SNDBUF É SO_RCVBUF, É × ÔÏ ×ÒÅÍÑ ËÁË × &linux; ÐÒÉ ÚÁÐÏÌÎÅÎÉÉ ÂÕÆÅÒÁ ÓÏËÅÔÁ &man.send.2; ÂÌÏËÉÒÕÅÔÓÑ, &os; ×ÏÚ×ÒÁÝÁÅÔ ÏÛÉÂËÕ É ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ENOBUFS × ËÁÞÅÓÔ×Å ÚÎÁÞÅÎÉÑ errno. åÓÌÉ ÔÒÅÂÕÅÔÓÑ ÒÁÓÓÞÉÔÙ×ÁÔØ ÎÁ ÎÅÓÔÁÎÄÁÒÔÎÏÅ ÐÏ×ÅÄÅÎÉÅ, ÉÎËÁÐÓÕÌÉÒÕÊÔÅ ÜÔÏ ÄÏÌÖÎÙÍ ÏÂÒÁÚÏÍ × ÏÂÝÉÊ ÄÌÑ ×ÓÅÈ API Ó ÐÒÏ×ÅÒËÏÊ ÐÏ×ÅÄÅÎÉÑ ÎÁ ÜÔÁÐÅ ËÏÎÆÉÇÕÒÁÃÉÉ, É ÅÓÌÉ ÔÒÅÂÕÅÍÏÅ ÐÏ×ÅÄÅÎÉÅ ÎÅ ÎÁÊÄÅÎÏ, ÐÒÅËÒÁÝÁÊÔÅ ×ÙÐÏÌÎÅÎÉÅ. éÓÐÏÌØÚÕÊÔÅ ÓÔÒÁÎÉÃÙ ÓÐÒÁ×ÏÞÎÉËÁ ÄÌÑ ÐÒÏ×ÅÒËÉ, ÏÔÎÏÓÉÔÓÑ ÌÉ ÆÕÎËÃÉÑ Ë ÉÎÔÅÒÆÅÊÓÕ POSIX (ÉÝÉÔÅ ÒÁÚÄÅÌ STANDARDS ÎÁ ÓÔÒÁÎÉÃÅ ÓÐÒÁ×ÏÞÎÉËÁ). îÅ ÒÁÓÓÞÉÔÙ×ÁÊÔÅ ÎÁ ÔÏ, ÞÔÏ × ËÁÞÅÓÔ×Å /bin/sh ÉÓÐÏÌØÚÕÅÔÓÑ bash. õÂÅÄÉÔÅÓØ, ÞÔÏ ËÏÍÁÎÄÎÁÑ ÓÔÒÏËÁ, ÐÅÒÅÄÁÎÎÁÑ × &man.system.3;, ÂÕÄÅÔ ÒÁÂÏÔÁÔØ × POSIX-ÓÏ×ÍÅÓÔÉÍÏÊ ÏÂÏÌÏÞËÅ. óÐÉÓÏË ÏÓÎÏ×ÎÙÈ bash-ÉÚÍÏ× ÒÁÓÐÏÌÏÖÅÎ ÚÄÅÓØ. îÅ ÉÓÐÏÌØÚÕÊÔÅ #include <stdint.h>, ÅÓÌÉ ÄÏÓÔÁÔÏÞÎÏ ÐÏÄËÌÀÞÉÔØ inttypes.h. üÔÏ ÐÏÚ×ÏÌÉÔ ÕÂÅÄÉÔØÓÑ, ÞÔÏ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ ÓÏÂÉÒÁÅÔÓÑ ÎÁ ÂÏÌÅÅ ÓÔÁÒÙÈ ×ÅÒÓÉÑÈ &os;. ðÒÏ×ÅÒØÔÅ, ÞÔÏ ÉÓÐÏÌØÚÕÅÍÙÅ ÚÁÇÏÌÏ×ÏÞÎÙÅ ÆÁÊÌÙ ×ËÌÀÞÅÎÙ × POSIX ÉÌÉ ÓÐÉÓÏË, ÒÅËÏÍÅÎÄÕÅÍÙÊ ÓÔÒÁÎÉÃÅÊ ÓÐÒÁ×ÏÞÎÉËÁ, Ô.Ë. ÎÁÐÒÉÍÅÒ, ÚÁÂÙÔØ ÐÏÄËÌÀÞÉÔØ sys/types.h — ÎÅ ÔÁËÁÑ ÕÖ ÐÒÏÂÌÅÍÁ × &linux;, ÏÄÎÁËÏ ÜÔÏ ÎÅ ÔÁË ×Ï &os;. ëÏÍÐÉÌÉÒÕÊÔÅ ÍÎÏÇÏÐÏÔÏÞÎÙÅ ÐÒÉÌÏÖÅÎÉÑ Ó ËÌÀÞÏÍ -pthread, Á ÎÅ -lpthread ÉÌÉ ËÁË-ÌÉÂÏ ÅÝ£. òÁÚÎÏÅ æÁÊÌÙ pkg-descr É pkg-plist ÄÏÌÖÎÙ ÐÒÏ×ÅÒÑÔØÓÑ Ä×ÁÖÄÙ. åÓÌÉ ×Ù ÐÅÒÅÓÍÁÔÒÉ×ÁÅÔÅ ÐÏÒÔ É ÄÕÍÁÅÔÅ, ÞÔÏ ÅÇÏ ÍÏÖÎÏ ÏÐÉÓÁÔØ ÉÎÁÞÅ, ÓÄÅÌÁÊÔÅ ÜÔÏ. ðÏÖÁÌÕÊÓÔÁ, ÎÅ ÓÏÚÄÁ×ÁÊÔÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ËÏÐÉÊ ÌÉÃÅÎÚÉÉ GNU General Public License × ÎÁÛÅÊ ÓÉÓÔÅÍÅ. âÕÄØÔÅ ×ÎÉÍÁÔÅÌØÎÙ Ó ÀÒÉÄÉÞÅÓËÉÍÉ ×ÏÐÒÏÓÁÍÉ! îÅ ÄÅÌÁÊÔÅ ÉÚ ÎÁÓ ÎÅÌÅÇÁÌØÎÙÈ ÒÁÓÐÒÏÓÔÒÁÎÉÔÅÌÅÊ ðï!
ðÒÉÍÅÒÎÙÊ <filename>Makefile</filename> ÷ÏÔ ÐÒÉÍÅÒÎÙÊ Makefile, ËÏÔÏÒÙÊ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÉ ÓÏÚÄÁÎÉÉ ÎÏ×ÏÇÏ ÐÏÒÔÁ. ïÂÑÚÁÔÅÌØÎÏ ÕÄÁÌÉÔÅ ×ÓÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ËÏÍÍÅÎÔÁÒÉÉ (ÔÅ, ËÏÔÏÒÙÅ × ÓËÏÂËÁÈ)! ÷ÁÍ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÓÌÅÄÏ×ÁÔØ ÜÔÏÍÕ ÆÏÒÍÁÔÕ (ÓÏÂÌÀÄÁÑ ÐÏÒÑÄÏË ÓÌÅÄÏ×ÁÎÉÑ ÐÅÒÅÍÅÎÎÙÈ, ÐÕÓÔÙÅ ÓÔÒÏËÉ ÍÅÖÄÕ ÒÁÚÄÅÌÁÍÉ, É ÔÁË ÄÁÌÅÅ). üÔÏÔ ÆÏÒÍÁÔ ÒÁÚÒÁÂÏÔÁÎ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ×ÁÖÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÂÙÌÁ ÌÅÇËÏ ÎÁÊÄÅÎÁ. íÙ ÒÅËÏÍÅÎÄÕÅÍ ×ÁÍ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ ÕÔÉÌÉÔÏÊ portlint ÄÌÑ ÐÒÏ×ÅÒËÉ ÆÁÊÌÁ Makefile. [ÚÁÇÏÌÏ×ÏË...ÐÒÏÓÔÏ ÞÔÏÂÙ ÎÁÍ ÂÙÌÏ ÌÅÇÞÅ ÉÄÅÎÔÉÆÉÃÉÒÏ×ÁÔØ ÐÏÒÔ.] # New ports collection makefile for: xdvi [ÓÔÒÏÞËÁ "version required" ÎÅÏÂÈÏÄÉÍÁ ÔÏÌØËÏ ÔÏÇÄÁ, ËÏÇÄÁ ÐÅÒÅÍÅÎÎÁÑ PORTVERSION ÎÅÄÏÓÔÁÔÏÞÎÏ ËÏÎËÒÅÔÎÁ ÄÌÑ ÏÐÉÓÁÎÉÑ ÐÏÒÔÁ.] # Date created: 26 May 1995 [üÔÏ ÞÅÌÏ×ÅË, ËÏÔÏÒÙÊ ÓÄÅÌÁÌ ÐÅÒ×ÏÎÁÞÁÌØÎÙÊ ÐÏÒÔ ÄÌÑ FreeBSD, × ÞÁÓÔÎÏÓÔÉ, ÔÏÔ, ËÔÏ ÓÏÚÄÁÌ ÐÅÒ×ÕÀ ×ÅÒÓÉÀ ÜÔÏÇÏ ÆÁÊÌÁ Makefile. úÁÐÏÍÎÉÔÅ, ÞÔÏ ÐÏÚÖÅ ÐÒÉ ÏÂÎÏ×ÌÅÎÉÉ ÐÏÒÔÁ ÜÔÁ ÓÔÒÏËÁ ÍÅÎÑÔØÓÑ ÎÅ ÄÏÌÖÎÁ.] # Whom: Satoshi Asami <asami@FreeBSD.org> # # $FreeBSD$ [ ^^^^^^^^^ üÔÁ ÓÔÒÏËÁ ÂÕÄÅÔ Á×ÔÏÍÁÔÉÞÅÓËÉ ÚÁÍÅÎÅÎÁ ÓÏ ÓÔÒÏÞËÏÊ RCS ID ÓÉÓÔÅÍÏÊ SVN ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ÏÐÅÒÁÃÉÉ ËÏÍÍÉÔÁ × ÎÁÛÅ ÈÒÁÎÉÌÉÝÅ. ðÒÉ ÏÂÎÏ×ÌÅÎÉÉ ÐÏÒÔÁ ÎÅ ÐÒÉ×ÏÄÉÔÅ ÜÔÕ ÓÔÒÏËÕ ÏÂÒÁÔÎÏ Ë ×ÉÄÕ "$FreeBSD$". SVN ÓÄÅÌÁÅÔ ÜÔÏ Á×ÔÏÍÁÔÉÞÅÓËÉ.] # [ÓÅËÃÉÑ ÏÐÉÓÁÎÉÑ ÓÏÂÓÔ×ÅÎÎÏ ÐÏÒÔÁ É ÏÓÎÏ×ÎÏÇÏ ÓÅÒ×ÅÒÁ - ÓÎÁÞÁÌÁ ×ÓÅÇÄÁ PORTNAME É PORTVERSIONA, ÚÁ ÎÉÍ ÓÌÅÄÕÅÔ CATEGORIES, Á ÚÁÔÅÍ MASTER_SITES, ÚÁ ËÏÔÏÒÙÍ ÍÏÖÅÔ ÉÄÔÉ MASTER_SITE_SUBDIR. PKGNAMEPREFIX É PKGNAMESUFFIX, ÅÓÌÉ ÏÎÉ ÎÕÖÎÙ, ÓÌÅÄÕÀÔ ÚÁ ÎÉÍÉ. úÁÔÅÍ ÓÌÅÄÕÅÔ DISTNAME, EXTRACT_SUFX É/ÉÌÉ DISTFILES, Á ÐÏÔÏÍ, ÅÓÌÉ ÜÔÏ ÎÕÖÎÏ, EXTRACT_ONLY.] PORTNAME= xdvi PORTVERSION= 18.2.] CATEGORIES= print [ÎÅ ÚÁÂÙ×ÁÊÔÅ ÌÉÄÉÒÕÀÝÉÊ ÓÌÜÛ ("/")! ÅÓÌÉ ×Ù ÎÅ ÉÓÐÏÌØÚÕÅÔÅ ÍÁËÒÏÓÙ MASTER_SITE_*] MASTER_SITES= ${MASTER_SITE_XCONTRIB} MASTER_SITE_SUBDIR= applications PKGNAMEPREFIX= ja- DISTNAME= xdvi-pl18 [ÚÁÄÁÊÔÅ ÜÔÏ, ÅÓÌÉ ÉÓÈÏÄÎÙÊ ËÏÄ ÐÏÓÔÁ×ÌÑÅÔÓÑ ÎÅ × ×ÉÄÅ ÓÔÁÎÄÁÒÔÎÏÇÏ ÆÁÊÌÁ ".tar.gz"] EXTRACT_SUFX= .tar.Z [ÓÅËÃÉÑ ÐÁÔÞÅÊ -- ÍÏÖÅÔ ÂÙÔØ ÐÕÓÔÏÊ] PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/ PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz [ÓÏÐÒÏ×ÏÖÄÁÀÝÉÊ; *ÏÂÑÚÁÔÅÌØÎÏÅ ÐÏÌÅ*! üÔÏ ÞÅÌÏ×ÅË, ËÏÔÏÒÙÊ ÄÏÂÒÏ×ÏÌØÎÏ ÚÁÎÉÍÁÅÔÓÑ ÏÂÎÏ×ÌÅÎÉÑÍÉ ÐÏÒÔÁ É ÎÅÉÓÐÒÁ×ÎÏÓÔÑÍÉ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ, É ËÏÔÏÒÏÍÕ ÐÏÌØÚÏ×ÁÔÅÌØ ÍÏÖÅÔ ÎÁÐÒÁ×ÌÑÔØ ×ÏÐÒÏÓÙ É ÓÏÏÂÝÅÎÉÑ Ï ÏÛÉÂËÁÈ. äÌÑ ÓÏÈÒÁÎÅÎÉÑ ËÁË ÍÏÖÎÏ ÂÏÌÅÅ ×ÙÓÏËÏÇÏ ËÁÞÅÓÔ×Á ëÏÌÌÅËÃÉÉ ðÏÒÔÏ× ÍÙ ÂÏÌØÛÅ ÎÅ ÐÒÉÎÉÍÁÅÍ ÎÏ×ÙÅ ÐÏÒÔÙ, ÎÁÚÎÁÞÅÎÎÙÅ ÎÁ "ports@FreeBSD.org".] MAINTAINER= asami@FreeBSD.org COMMENT= A DVI Previewer for the X Window System [ÚÁ×ÉÓÉÍÏÓÔÉ -- ÍÏÇÕÔ ÂÙÔØ ÐÕÓÔÙÍÉ] RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript LIB_DEPENDS= Xpm:${PORTSDIR}/graphics/xpm [ÜÔÏÔ ÒÁÚÄÅÌ ÄÌÑ ÏÓÔÁÌØÎÙÈ ÓÔÁÎÄÁÒÔÎÙÈ ÐÅÒÅÍÅÎÎÙÈ ÉÚ bsd.port.mk, ËÒÏÍÅ ÔÅÈ, ÞÔÏ ÐÅÒÅÞÉÓÌÅÎÙ ×ÙÛÅ] [åÓÌÉ ÐÏÒÔ ÚÁÄÁÅÔ ×ÏÐÒÏÓÙ ×Ï ×ÒÅÍÑ ÜÔÁÐÏ× ÎÁÓÔÒÏÊËÉ, ÐÏÓÔÒÏÅÎÉÑ, ÕÓÔÁÎÏ×ËÉ...] IS_INTERACTIVE= yes [åÓÌÉ ÒÁÓÐÁËÏ×ËÁ ÐÒÏÉÓÈÏÄÉÔ × ËÁÔÁÌÏÇ, ÏÔÌÉÞÎÙÈ ÏÔ ${DISTNAME}...] WRKSRC= ${WRKDIR}/xdvi-new [åÓÌÉ ÐÁÔÞÉ ÄÅÌÁÌÉÓØ ÎÅ ÏÔÎÏÓÉÔÅÌØÎÏ ${WRKSRC}, ×ÁÍ, ÍÏÖÅÔ ÂÙÔØ, ÎÅ ÐÒÉÄÅÔÓÑ ÉÚÍÅÎÑÔØ ÜÔÕ ÐÅÒÅÍÅÎÎÕÀ] PATCH_DIST_STRIP= -p1 [åÓÌÉ ÐÏÒÔ ÔÒÅÂÕÅÔ ÓËÒÉÐÔÁ "configure", ÇÅÎÅÒÉÒÕÅÍÏÇÏ GNU-×ÅÒÓÉÅÊ ÐÒÏÇÒÁÍÍÙ autoconf] GNU_CONFIGURE= yes [åÓÌÉ ÄÌÑ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÕ ÔÒÅÂÕÅÔÓÑ GNU-×ÅÒÓÉÑ ÕÔÉÌÉÔÙ make, Á ÎÅ /usr/bin/make...] USE_GMAKE= yes [åÓÌÉ ÜÔÏ ÐÒÉÌÏÖÅÎÉÅ X É ÔÒÅÂÕÅÔ ÚÁÐÕÓËÁ "xmkmf -a"...] USE_IMAKE= yes [É ÔÁË ÄÁÌÅÅ] [÷ ÐÒÁ×ÉÌÁÈ ÎÉÖÅ ÉÓÐÏÌØÚÕÀÔÓÑ ÎÅÓÔÁÎÄÁÒÔÎÙÅ ÐÅÒÅÍÅÎÎÙÅ] MY_FAVORITE_RESPONSE= "yeah, right" [ÔÅÐÅÒØ ÓÐÅÃÉÁÌØÎÙÅ ÐÒÁ×ÉÌÁ, × ÐÏÒÑÄËÅ ÉÈ ×ÙÚÏ×Á] pre-fetch: Ñ ÞÔÏ-ÔÏ ×ÙËÁÞÉ×ÁÀ, ÔÏÞÎÏ post-patch: ÍÎÅ ËÏÅ-ÞÔÏ ÓÄÅÌÁÔØ ÐÏÓÌÅ ÐÒÉÍÅÎÅÎÉÑ ÐÁÔÞÁ, ×ÅÌÉËÏÌÅÐÎÏ pre-install: É ÐÏÔÏÍ ÅÝÅ ËÏÅ-ÞÔÏ ÐÅÒÅÄ ÕÓÔÁÎÏ×ËÏÊ, ÏÇÏ [É, ÎÁËÏÎÅÃ, ÜÐÉÌÏÇ] .include <bsd.port.mk> áËÔÕÁÌÉÚÁÃÉÑ ëÏÌÌÅËÃÉÑ ðÏÒÔÏ× &os; ÐÏÓÔÏÑÎÎÏ ÉÚÍÅÎÑÅÔÓÑ. úÄÅÓØ ÎÁÈÏÄÉÔÓÑ ÎÅËÏÔÏÒÁÑ ÉÎÆÏÒÍÁÃÉÑ Ï ÔÏÍ, ËÁË ÐÏÄÄÅÒÖÉ×ÁÔØ Å£ × ÁËÔÕÁÌØÎÏÍ ÓÏÓÔÏÑÎÉÉ. FreshPorts óÁÍÙÍ ÐÒÏÓÔÙÍ ÓÐÏÓÏÂÏÍ ÏÔÓÌÅÖÉ×ÁÔØ ÕÖÅ ÐÒÏÉÚÏÛÅÄÛÉÅ ÏÂÎÏ×ÌÅÎÉÑ Ñ×ÌÑÅÔÓÑ ÐÏÄÐÉÓËÁ ÎÁ FreshPorts. äÌÑ ÍÏÎÉÔÏÒÉÎÇÁ ×Ù ÍÏÖÅÔÅ ×ÙÂÒÁÔØ ÎÅÓËÏÌØËÏ ÐÏÒÔÏ×. íÅÊÎÔÅÊÎÅÒÁÍ ÎÁÓÔÏÑÔÅÌØÎÏ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÐÏÄÐÉÓÁÔØÓÑ ÚÄÅÓØ, ÐÏÔÏÍÕ ÞÔÏ ÏÎÉ ÂÕÄÕÔ ÐÏÌÕÞÁÔØ Õ×ÅÄÏÍÌÅÎÉÑ ÎÅ ÔÏÌØËÏ Ï ÓÏÂÓÔ×ÅÎÎÙÈ ÉÚÍÅÎÅÎÉÑÈ, ÎÏ É Ï ÉÚÍÅÎÅÎÉÑÈ, ÓÄÅÌÁÎÎÙÈ ÌÀÂÙÍ ÄÒÕÇÉÍ ËÏÍÍÉÔÔÅÒÏÍ &os;. (üÔÏ ÞÁÓÔÏ ÎÅÏÂÈÏÄÉÍÏ ÄÌÑ ÓÉÎÈÒÏÎÉÚÁÃÉÉ Ó ÉÚÍÅÎÅÎÉÑÍÉ ÎÁ ÂÏÌÅÅ ÎÉÚËÏÍ ÔÅÈÎÏÌÏÇÉÞÅÓËÏÍ ÕÒÏ×ÎÅ—ÈÏÔÑ ÂÏÌÅÅ ËÏÒÒÅËÔÎÙÍ ÂÙÌÏ ÂÙ ÐÏÌÕÞÅÎÉÅ ÐÒÅÄÕÐÒÅÖÄÅÎÉÊ ÏÔ ÔÅÈ, ËÔÏ ×ÎÏÓÉÔ ÐÏÄÏÂÎÙÅ ÉÚÍÅÎÅÎÉÑ, ÉÎÏÇÄÁ ÜÔÏÔ ÜÔÁÐ ÐÒÏÐÕÓËÁÅÔÓÑ ÉÌÉ ÏÎ ÐÒÏÓÔÏ ÎÅÐÒÁËÔÉÞÅÎ. ëÒÏÍÅ ÔÏÇÏ, × ÎÅËÏÔÏÒÙÈ ÓÌÕÞÁÑÈ ÉÚÍÅÎÅÎÉÑ ÐÏ Ó×ÏÅÊ ÐÒÉÒÏÄÅ ×ÅÓØÍÁ ÎÅÚÎÁÞÉÔÅÌØÎÙ. íÙ ÐÏÌÁÇÁÅÍ, ÞÔÏ ÌÀÂÏÊ ÒÁÚÒÁÂÏÔÞÉË × ÔÁËÉÈ ÓÉÔÕÁÃÉÑÈ ÂÕÄÅÔ ÒÕËÏ×ÏÄÓÔ×Ï×ÁÔØÓÑ ÚÄÒÁ×ÙÍ ÓÍÙÓÌÏÍ). åÓÌÉ ×Ù ÈÏÔÉÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ FreshPorts, ÔÏ ×ÁÍ ÎÕÖÎÁ ÔÏÌØËÏ ÕÞ£ÔÎÁÑ ÚÁÐÉÓØ. åÓÌÉ ÒÅÇÉÓÔÒÁÃÉÏÎÎÙÊ ÁÄÒÅÓ ×ÁÛÅÊ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÙ ÂÕÄÅÔ ÉÍÅÔØ ×ÉÄ @FreeBSD.org, ÔÏ ÓÐÒÁ×Á ÎÁ Web-ÓÔÒÁÎÉÃÁÈ ×Ù Õ×ÉÄÉÔÅ ÄÏÐÏÌÎÉÔÅÌØÎÕÀ ÓÓÙÌËÕ. äÌÑ ÔÅÈ ÉÚ ×ÁÓ, ËÔÏ ÕÖÅ ÐÏÌÕÞÉÌ ÕÞ£ÔÎÕÀ ÚÁÐÉÓØ FreshPorts, ÎÏ ÎÅ ÉÓÐÏÌØÚÏ×ÁÌ ÓÏÂÓÔ×ÅÎÎÙÊ ÁÄÒÅÓ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÙ @FreeBSD.org, ÄÏÓÔÁÔÏÞÎÏ ÓÍÅÎÉÔØ ÁÄÒÅÓ ÎÁ @FreeBSD.org, ÐÏÄÐÉÓÁÔØÓÑ, Á ÚÁÔÅÍ ÓÍÅÎÉÔØ ÅÇÏ ÏÂÒÁÔÎÏ. ÷Ï FreshPorts ÉÍÅÅÔÓÑ ÔÁËÖÅ ÆÕÎËÃÉÑ ÐÒÏ×ÅÒËÉ ÐÒÁ×ÉÌØÎÏÓÔÉ, ËÏÔÏÒÁÑ Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÒÏ×ÅÒÑÅÔ ËÁÖÄÏÅ ÉÚÍÅÎÅÎÉÅ, ×ÎÅÓ£ÎÎÏÅ × ÄÅÒÅ×Ï ÐÏÒÔÏ× FreeBSD. åÓÌÉ ×Ù ÐÏÄÐÉÛÅÔÅÓØ ÎÁ ÜÔÕ ÕÓÌÕÇÕ, ÔÏ ÂÕÄÅÔÅ ÏÐÏ×ÅÝÁÔØÓÑ ÏÂÏ ×ÓÅÈ ÏÛÉÂËÁÈ, ÏÂÎÁÒÕÖÅÎÎÙÈ FreshPorts ÐÒÉ ÐÒÏ×ÅÒËÅ ×ÎÅÓ£ÎÎÙÈ ×ÁÍÉ ÉÚÍÅÎÅÎÉÊ. Web-ÉÎÔÅÒÆÅÊÓ Ë ÈÒÁÎÉÌÉÝÕ ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× æÁÊÌÙ × ÈÒÁÎÉÌÉÝÅ ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× ÍÏÖÎÏ ÐÒÏÓÍÁÔÒÉ×ÁÔØ ÐÒÉ ÐÏÍÏÝÉ Web-ÉÎÔÅÒÆÅÊÓÁ. éÚÍÅÎÅÎÉÑ, ËÏÔÏÒÙÅ ËÁÓÁÀÔÓÑ × ÃÅÌÏÍ ×ÓÅÊ ÓÉÓÔÅÍÙ ÐÏÒÔÏ×, ÔÅÐÅÒØ ÄÏËÕÍÅÎÔÉÒÕÀÔÓÑ × ÆÁÊÌÅ CHANGES. éÚÍÅÎÅÎÉÑ, ËÁÓÁÀÝÉÅÓÑ ÏÔÄÅÌØÎÙÈ ÐÏÒÔÏ×, ÏÔÒÁÖÁÀÔÓÑ ÔÅÐÅÒØ × ÆÁÊÌÅ UPDATING. ïÄÎÁËÏ ÏÄÎÏÚÎÁÞÎÙÊ ÏÔ×ÅÔ ÎÁ ÌÀÂÏÊ ×ÏÐÒÏÓ ÍÏÖÎÏ ÎÁÊÔÉ, ÔÏÌØËÏ ÐÒÏÞÉÔÁ× ÉÓÈÏÄÎÙÈ ËÏÄ bsd.port.mk É Ó×ÑÚÁÎÎÙÈ Ó ÎÉÍ ÆÁÊÌÏ×. óÐÉÓÏË ÒÁÓÓÙÌËÉ &os;, ÐÏÓ×ÑÝ£ÎÎÙÊ ÐÏÒÔÁÍ åÓÌÉ ×Ù ÐÏÄÄÅÒÖÉ×ÁÅÔÅ ÐÏÒÔÙ, ÔÏ ÄÏÌÖÎÙ ÓÌÅÄÉÔØ ÚÁ &a.ports;. ï ×ÁÖÎÙÈ ÉÚÍÅÎÅÎÉÑÈ, ÏÔÒÁÖÁÀÝÉÈÓÑ ÎÁ ÒÁÂÏÔÅ ÐÏÒÔÏ×, ÂÕÄÅÔ ÓÏÏÂÝÁÔØÓÑ ÚÄÅÓØ, Á ÚÁÔÅÍ ÏÎÉ ÐÅÒÅÎÏÓÑÔÓÑ × CHANGES. ëÌÁÓÔÅÒ ÐÏÓÔÒÏÅÎÉÑ ÐÏÒÔÏ× &os; ÎÁ <hostid role="hostname">pointyhat.FreeBSD.org</hostid> ïÄÎÏÊ ÉÚ ÎÁÉÍÅÎÅÅ ÉÚ×ÅÓÔÎÙÈ ÓÉÌØÎÙÈ ÓÔÏÒÏÎ &os; Ñ×ÌÑÅÔÓÑ ÔÏÔ ÆÁËÔ, ÞÔÏ ÄÌÑ ÎÅÐÒÅÒÙ×ÎÏÇÏ ÐÏÓÔÒÏÅÎÉÑ ëÏÌÌÅËÃÉÉ ðÏÒÔÏ× ÄÌÑ ËÁÖÄÏÇÏ ÉÚ ÏÓÎÏ×ÎÙÈ ÒÅÌÉÚÏ× ïó ÄÌÑ ËÁÖÄÏÊ ÁÒÈÉÔÅËÔÕÒÙ ÕÒÏ×ÎÑ ÐÏÄÄÅÒÖËÉ Tier-1 ×ÙÄÅÌÅÎ ÃÅÌÙÊ ËÌÁÓÔÅÒ ÍÁÛÉÎ. ÷Ù ÍÏÖÅÔÅ Õ×ÉÄÅÔØ ÒÅÚÕÌØÔÁÔÙ ÜÔÉÈ ÐÏÓÔÒÏÅÎÉÊ × ÐÒÏÔÏËÏÌÁÈ ÐÏÓÔÒÏÅÎÉÑ ÐÁËÅÔÏ× É ÏÂÎÁÒÕÖÅÎÎÙÈ ÏÛÉÂÏË. ïÔÄÅÌØÎÙÅ ÐÏÒÔÙ ÓÏÂÉÒÁÀÔÓÑ, ÅÓÌÉ ÏÎÉ ÓÐÅÃÉÁÌØÎÏ ÎÅ ÐÏÍÅÞÅÎÙ ËÁË IGNORE. äÌÑ ÐÏÒÔÏ×, ÐÏÍÅÞÅÎÎÙÈ ËÁË BROKEN, ÐÏÐÙÔËÉ ÂÕÄÕÔ ÐÒÏÄÏÌÖÅÎÙ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ Õ×ÉÄÅÔØ, ÅÓÌÉ ÏÓÎÏ×ÎÁÑ ÐÒÏÂÌÅÍÁ ÂÙÌÁ ÒÅÛÅÎÁ. (üÔÏ ÓÄÅÌÁÎÏ ÞÅÒÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÅÒÅÍÅÎÎÏÊ TRYBROKEN ÄÌÑ Makefile ÐÏÒÔÁ.) Portscout: ÓËÁÎÅÒ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ× ÐÏÒÔÏ× &os; ëÌÁÓÔÅÒ ÐÏÓÔÒÏÅÎÉÑ ×ÙÄÅÌÅÎ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ÓÁÍÏÇÏ ÐÏÓÌÅÄÎÅÇÏ ÒÅÌÉÚÁ ËÁÖÄÏÇÏ ÉÚ ÐÏÒÔÏ×, ÄÉÓÔÒÉÂÕÔÉ×ÎÙÅ ÆÁÊÌÙ ËÏÔÏÒÙÈ ÕÖÅ ÂÙÌÉ ÓÇÒÕÖÅÎÙ. ïÄÎÁËÏ ÉÚ-ÚÁ ÐÏÓÔÏÑÎÎÙÈ ÉÚÍÅÎÅÎÉÊ × Internet ÄÉÓÔÒÉÂÕÔÉ×ÎÙÅ ÆÁÊÌÙ ÍÏÇÕÔ ÂÙÓÔÒÏ ÉÓÞÅÚÁÔØ. Portscout, ÓÒÅÄÓÔ×Ï ÓËÁÎÉÒÏ×ÁÎÉÑ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ× &os; ÐÙÔÁÅÔÓÑ ÏÐÒÏÓÉÔØ ËÁÖÄÙÊ ÉÚ ÓÁÊÔÏ×, ÄÏÓÔÕÐÎÙÈ ÄÌÑ ÓÇÒÕÚËÉ ËÁÖÄÏÇÏ ÉÚ ÐÏÒÔÏ×, ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÔÏÇÏ, ÄÏÓÔÕÐÎÙ ÌÉ ÅÝ£ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÅ ÆÁÊÌÙ. Portscout ÍÏÖÅÔ ÇÏÔÏ×ÉÔØ ÏÔÞ£ÔÙ × HTML É ÒÁÓÓÙÌÁÔØ ÜÌÅËÔÒÏÎÎÙÅ ÐÉÓØÍÁ Ï ÉÍÅÀÝÉÈÓÑ ÏÂÎÏ×ÌÅÎÉÑÈ ÄÌÑ ÐÏÒÔÏ× ÔÅÍ, ËÔÏ ÜÔÏ ÚÁÐÒÁÛÉ×ÁÅÔ. íÅÊÎÔÅÊÎÅÒÙ ÐÅÒÉÏÄÉÞÅÓËÉ ÚÁÐÒÁÛÉ×ÁÀÔ ÎÁÌÉÞÉÅ ÉÚÍÅÎÅÎÉÊ, ÌÉÂÏ ×ÒÕÞÎÕÀ, ÌÉÂÏ ÉÓÐÏÌØÚÕÑ ÌÅÎÔÕ RSS. çÌÁ×ÎÁÑ ÓÔÒÁÎÉÃÁ Portscout ÏÔÏÂÒÁÖÁÅÔ email ÍÅÊÎÔÅÊÎÅÒÁ ÐÏÒÔÁ, ËÏÌÉÞÅÓÔ×Ï ÐÏÒÔÏ×, ÚÁ ËÏÔÏÒÙÅ ÏÔ×ÅÔÓÔ×ÅÎÅÎ ÍÅÊÎÔÅÊÎÅÒ, ËÏÌÉÞÅÓÔ×Ï ÐÏÒÔÏ× Ó ÎÏ×ÙÍÉ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÍÉ ÆÁÊÌÁÍÉ É ÐÒÏÃÅÎÔ ÕÓÔÁÒÅ×ÛÉÈ ÐÏÒÔÏ×. æÕÎËÃÉÑ ÐÏÉÓËÁ ×ÙÐÏÌÎÑÅÔ ÐÏÉÓË ÍÅÊÎÔÅÊÎÅÒÁ ÐÏ ÁÄÒÅÓÕ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÙ É ÐÏÚ×ÏÌÑÅÔ ×ÙÂÉÒÁÔØ ÍÅÖÄÕ ×ÓÅÍÉ ÐÏÒÔÁÍÉ ÉÌÉ ÔÏÌØËÏ ÕÓÔÁÒÅ×ÛÉÍÉ. ðÒÉ ÝÅÌÞËÅ ÐÏ ÁÄÒÅÓÕ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÙ ÍÅÊÎÔÅÊÎÅÒÁ ÏÔÏÂÒÁÖÁÅÔÓÑ ÓÐÉÓÏË ×ÓÅÈ ÅÇÏ ÐÏÒÔÏ×, ÒÁÚÄÅÌ£ÎÎÙÈ ÐÏ ËÁÔÅÇÏÒÉÑÍ, ×ÍÅÓÔÅ Ó ÔÅËÕÝÉÍ ÎÏÍÅÒÏÍ ×ÅÒÓÉÉ, ÉÎÆÏÒÍÁÃÉÅÊ Ï ÎÁÌÉÞÉÉ ÎÏ×ÏÊ ×ÅÒÓÉÉ, ×ÒÅÍÅÎÅÍ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ ÐÏÒÔÁ É ×ÒÅÍÅÎÅÍ ÅÇÏ ÐÏÓÌÅÄÎÅÊ ÐÒÏ×ÅÒËÉ. æÕÎËÃÉÑ ÐÏÉÓËÁ ÎÁ ÜÔÏÊ ÓÔÒÁÎÉÃÅ ÐÏÚ×ÏÌÑÅÔ ÐÏÌØÚÏ×ÁÔÅÌÀ ×ÙÐÏÌÎÑÔØ ÐÏÉÓË ËÏÎËÒÅÔÎÏÇÏ ÐÏÒÔÁ. ðÏ ÝÅÌÞËÕ ÎÁ ÎÁÚ×ÁÎÉÅ ÐÏÒÔÁ × ÓÐÉÓËÅ ÏÔÏÂÒÁÖÁÅÔÓÑ ÉÎÆÏÒÍÁÃÉÑ Ï ÐÏÒÔÅ FreshPorts. óÉÓÔÅÍÁ ÍÏÎÉÔÏÒÉÎÇÁ ÐÏÒÔÏ× &os; äÒÕÇÉÍ ÐÏÌÅÚÎÙÍ ÒÅÓÕÒÓÏÍ Ñ×ÌÑÅÔÓÑ óÉÓÔÅÍÁ ÍÏÎÉÔÏÒÉÎÇÁ ÐÏÒÔÏ× FreeBSD (ÉÚ×ÅÓÔÎÁÑ ÔÁËÖÅ ËÁË portsmon). óÉÓÔÅÍÁ ÐÒÅÄÓÔÁ×ÌÑÅÔ ÓÏÂÏÊ ÂÁÚÕ ÄÁÎÎÙÈ, ÏÂÒÁÂÁÔÙ×ÁÀÝÕÀ ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÎÅÓËÏÌØËÉÈ ÉÓÔÏÞÎÉËÏ× É ÐÏÚ×ÏÌÑÀÝÕÀ ÐÒÏÓÍÁÔÒÉ×ÁÔØ ÉÈ ÐÒÉ ÐÏÍÏÝÉ Web-ÉÎÔÅÒÆÅÊÓÁ. îÁ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ÚÁÄÅÊÓÔ×Ï×ÁÎÙ ÂÁÚÁ ÓÏÏÂÝÅÎÉÊ Ï ÏÛÉÂËÁÈ (PR), ÐÒÏÔÏËÏÌÙ ÏÛÉÂÏË ËÌÁÓÔÅÒÁ ÐÏÓÔÒÏÅÎÉÑ É ÏÔÄÅÌØÎÙÅ ÆÁÊÌÙ ÉÚ ËÏÌÌÅËÃÉÉ ÐÏÒÔÏ×. ÷ ÂÕÄÕÝÅÍ × ÜÔÏÔ ÓÐÉÓÏË ÂÕÄÅÔ ÄÏÂÁ×ÌÅÎÁ ÓÉÓÔÅÍÁ ÐÒÏ×ÅÒËÉ ÄÉÓÔÒÉÂÕÔÉ×ÎÙÈ ÆÁÊÌÏ× É ÄÒÕÇÉÅ ÒÅÓÕÒÓÙ. äÌÑ ÎÁÞÁÌÁ ×Ù ÍÏÖÅÔÅ ÐÒÏÓÍÏÔÒÅÔØ ×ÓÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÎÅËÏÔÏÒÏÍ ÐÏÒÔÅ ÐÒÉ ÐÏÍÏÝÉ ÓÒÅÄÓÔ×Á ïÂÚÏÒ ÏÔÄÅÌØÎÏÇÏ ÐÏÒÔÁ. îÁ ÍÏÍÅÎÔ ÎÁÐÉÓÁÎÉÑ ÜÔÏ ÅÄÉÎÓÔ×ÅÎÎÙÊ ÄÏÓÔÕÐÎÙÊ ÒÅÓÕÒÓ, ËÏÔÏÒÙÊ ÄÌÑ ÉÍÅÎÉ ÐÏÒÔÁ ÓÔÁ×ÉÔ × ÓÏÏÔ×ÅÔÓÔ×ÉÅ ÚÁÐÉÓÉ PR GNATS. (ïÔÐÒÁ×ÉÔÅÌÉ PR ÎÅ ×ÓÅÇÄÁ ÄÏÂÁ×ÌÑÀÔ × ÎÁÚ×ÁÎÉÅ ÉÍÑ ÐÏÒÔÁ, ÈÏÔÑ ÍÙ ÐÒÅÄÐÏÞÉÔÁÅÍ, ÞÔÏÂÙ ÏÎÉ ÜÔÏ ÄÅÌÁÌÉ.) ôÁËÉÍ ÏÂÒÁÚÏÍ, portsmon ÜÔÏ ÈÏÒÏÛÅÅ ÍÅÓÔÏ ÄÌÑ ÎÁÞÁÌÁ, ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ÎÁÊÔÉ ÐÒÉÓÌÁÎÎÙÅ PR É/ÉÌÉ ÏÛÉÂËÉ ÐÏÓÔÒÏÅÎÉÑ ÄÌÑ ÓÕÝÅÓÔ×ÕÀÝÅÇÏ ÐÏÒÔÁ; ÌÉÂÏ ÐÏÉÓËÁÔØ, ÂÙÌ ÌÉ ÕÖÅ ÐÒÉÓÌÁÎ ÎÏ×ÙÊ ÐÏÒÔ, ËÏÔÏÒÙÊ ×Ù ÐÏÄÕÍÙ×ÁÌÉ ÓÏÚÄÁÔØ ÓÁÍÉ.
diff --git a/zh_CN.GB2312/books/porters-handbook/book.xml b/zh_CN.GB2312/books/porters-handbook/book.xml index fc76127c3c..6a1f48ba5f 100644 --- a/zh_CN.GB2312/books/porters-handbook/book.xml +++ b/zh_CN.GB2312/books/porters-handbook/book.xml @@ -1,14298 +1,14298 @@ FreeBSD Porter ÊÖ²á The FreeBSD Documentation Project 2000 Äê 4 Ô 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 The FreeBSD Documentation Project &cnproj.freebsd.org; 2005 Äê 11 Ô 2005 2006 2007 2008 2009 2010 2011 &cnproj.freebsd.org; &trademarks; &legalnotice; $FreeBSD$ ½éÉÜ ¼¸ºõÿ¸öÈ˶¼ÊÇͨ¹ý FreeBSD Ports Collection ÔÚ FreeBSD ÉÏÃæ×°Ó¦ÓóÌÐò (¡°ports¡±)µÄ¡£ ¾ÍÏñFreeBSDµÄÆäËü²¿·ÖÒ»Ñù£¬ ËüÖ÷ÒªÀ´×ÔÓÚÖ¾Ô¸ÕßµÄŬÁ¦¡£ ËùÒÔÔÚÔĶÁÕâ·ÝÎĵµµÄʱºòÇëÎñ±Ø¼ÇסÕâЩ¡£ ÔÚ FreeBSD µÄÊÀ½çÀ ÈκÎÈ˶¼ÄÜÌá½»Ð嵀 port£¬ »òÖ¾Ô¸µØÎ¬»¤Ò»¸öÒÑÓÐµÄ port£¬ Èç¹ûÄǸö port ûÈËά»¤µÄ»° — ²»ÐèÒªÈκÎÌØÊâµÄȨÏÞÀ´×öÕâ¼þÊÂÇé¡£ ×ÔÐÐÖÆ×÷Рport ÄÇô£¬ ÄúÓÐÐËȤ´´½¨×Ô¼ºµÄ port »òÉý¼¶ÏÖÓÐµÄ port£¿ Ì«ºÃÁË¡£ ÏÂÃæµÄÄÚÈݽ«»áÌṩһЩ´´½¨FreeBSD portµÄÖ¸µ¼¡£ Èç¹ûÏëÉý¼¶Ò»¸öÏÖÓÐµÄ port£¬ ÄÇôÄúÓ¦¸ÃÔÚ¿´ÍêÕâЩÄÚÈݲ¢ÔĶÁ ¡£ ÒòΪÕâ·ÝÎĵµ²»ÊÇÊ®·ÖÏêϸ£¬ Äú»¹Ó¦¸ÃÔٲο¼Ò»Ï /usr/ports/Mk/bsd.port.mk£¬ ËùÓÐ port µÄ Makefile Îļþ¶¼»á°üº¬Ëü¡£ ¼´Ê¹²»ÊÇÿÌ춼ȥ°ÚŪ Makefile£¬ ÄúÒ²»á´ÓÄǸöÎļþÀïÃæ»ñµÃºÜ¶à֪ʶ£¬ ÀïÃæµÄ×¢Êͷdz£Ïêϸ¡£ »¹ÓÐÒª²¹³äһϣ¬Èç¹ûÄúÓÐÆäËüµÄÎÊÌ⣬ ¿ÉÒÔ¸ø&a.ports; Õâ¸ö mailing list ·¢ÐÅ¡£ ÔÚÕâ·ÝÎĵµÀïÌáµ½µÄ´ó²¿·ÖµÄ±äÁ¿ (VAR) ÊDz»ÄÜÐ޸ĵġ£ ´ó¶à (µ«²»ÊÇÈ«²¿) ¶¼ÔÚ /usr/ports/Mk/bsd.port.mk µÄ¿ªÊ¼²¿·Ö½øÐÐÁ˽éÉÜ£» ÆäËüһЩҲӦ¸Ã¿ÉÒÔÔÚÄÇÀïÕÒµ½¡£ ×¢ÒâÕâЩÎļþʹÓÃÁ˷DZê×¼µÄÖÆ±í·û£º Emacs ºÍ Vim Ó¦¸ÃÄÜÔÚ´ò¿ªÎļþµÄʱºò×Ô¶¯Ê¶±ðËü£¬ ¶ø &man.vi.1; ºÍ &man.ex.1; ÔòÐèÒªÔÚ´ò¿ªÎļþµÄʱºòͨ¹ý :set tabstop=4 À´ÐÞÕýĬÈϵÄÉèÖᣠÏëÁ·Á·ÊÖÂ𣿠Çë²ÎÔÄÎÒÃÇµÄ Ï£ÍûÒÆÖ²µÄÈí¼þÁбí À´¿´¿´ÄúÊÇ·ñÓÐÐËȤÍê³ÉÆäÖеÄÈÎÎñ¡£ ¼òµ¥µÄ port ÕâÒ»Õ½«½éÉÜÈçºÎ¿ìËÙ´´½¨Ò»¸öÈ«Ð嵀 port¡£ ºÜ¶àʱºò£¬ ÕâµãÄÚÈÝÊDz»¹»µÄ£¬ ÄúÐèÒªÔĶÁÕâ·ÝÎĵµÖиüÉîÈëµÄÄÚÈÝ¡£ Ê×ÏÈ£¬ ÐèҪȡµÃ°üº¬Ô´´úÂëµÄ tar°ü£¬ ²¢°ÑËü·Åµ½ DISTDIR±äÁ¿ËùÖ¸µÄµØ·½¡£ ĬÈϵÄÇé¿öÏ£¬ ÕâÓ¦¸ÃÊÇ /usr/ports/distfiles¡£ ÏÂÃæµÄÄÚÈݼٶ¨Äú²»ÐèÒªÐÞ¸ÄÈí¼þµÄÔ´´úÂë¾ÍÄÜÔÚ FreeBSD ÉϱàÒëͨ¹ý¡£ Èç¹ûÐèÒªÐ޸ĴúÂ룬 ¾ÍÐèÒª²Î¿¼ÏÂÒ»ÕµÄÄÚÈÝÁË¡£ ±àд <filename>Makefile</filename> ×î¼òµ¥µÄ Makefile Ó¦¸ÃÊÇÕâ¸öÑù×ӵģº # New ports collection makefile for: oneko # Date created: 5 December 1994 # Whom: asami # # $FreeBSD$ # PORTNAME= oneko PORTVERSION= 1.1b CATEGORIES= games MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ MAINTAINER= asami@FreeBSD.org COMMENT= A cat chasing a mouse all over the screen MAN1= oneko.1 MANCOMPRESSED= yes USE_IMAKE= yes .include <bsd.port.mk> ¿´¿´ÄúÊÇ·ñÄܹ»¿´¶®¡£ ²»±Øµ£ÐÄ $FreeBSD$ ÄÇÒ»ÐУ¬ µ±Õâ¸ö port ±»µ¼Èëµ½ ports Ê÷ÀïµÄʱºò£¬ CVS »á×Ô¶¯ÌîдËü¡£ Äú¿ÉÒÔÔÚ Ê¾·¶µÄ MakefileÄÇÕÂÕÒµ½¸ü¶àµÄϸ½Ú¡£ ´´½¨ÃèÊöÎļþ ÓÐ 2 ¸öÃèÊöÎļþ¶ÔÓÚÈκÎÒ»¸ö port À´ËµÊDZØÐëµÄ£¬ ²»ÂÛËüÊDz»ÊÇ´òËã³ÉΪ package¡£ ËüÃÇÊÇ pkg-descr ºÍ pkg-plist¡£ ÕâÁ½¸öÎļþʹÓà pkg- ǰ׺ÒÔÇø±ðÓÚÆäËüÎļþ¡£ <filename>pkg-descr</filename> (¹ØÓÚ port µÄÈß³¤ÃèÊöÎļþ) ÕâÊÇ port ÀïÒ»¸ö½Ï³¤µÄÃèÊöÎļþ¡£ ʹÓÃÒ»¶Î»ò¼¸¶ÎÎļþÎÄ×ÖÀ´¼òÃ÷µÄÃèÊöÕâ¸ö ports ÊÇÓÃÀ´×öʲôµÄ¡£ Õâ ²»ÊÇ ÊÖ²á»òÕß¶ÔÈçºÎ ÉîÈëʹÓÃ/±àÒëÕâ¸öportµÄ˵Ã÷£¡ ÒªÊÇÄú´Ó README »òÕßÁª»úÊÖ²áÀïÃæÖи´ÖÆÎÄ×ֵϰ£¬ ÇëÎñ±ØÐ¡ÐÄ£» ͨ³££¬ ËüÃDz»ÊǶÔÕâ¸ö port ¼òÃ÷¶óÒªµÄÃèÊö£¬ »òÕßÓÃÁËÄÑÒÔʹÓõĸñʽ (±ÈÈ磬 Áª»úÊÖ²áÀïÓÐÆÈʹÁ½¶Ë¶ÔÆëµÄ¿Õ¸ñ)¡£ Èç¹ûÒªÒÆÖ²µÄÈí¼þÓйٷ½µÄWWWÍøÒ³£¬ ÄúÓ¦¸ÃÔÚÕâÀïÁгöÀ´¡£ ʹÓà WWW: ×÷Ϊǰ׺À´±íʾ Ò»¸öÍøÕ¾£¬ ÕâÑùÆäËüµÄ×Ô¶¯¹¤¾ß¾ÍÄÜÕý³£¹¤×÷ÁË¡£ ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄ pkg-descr Àý×Ó£º This is a port of oneko, in which a cat chases a poor mouse all over the screen. : (etc.) WWW: http://www.oneko.org/ <filename>pkg-plist</filename> (port µÄ×°Ïäµ¥) Õâ·ÝÎļþÁгöÁË port ËùÒª°²×°µÄËùÓÐÎļþ¡£ ÓÉÓÚ package Ò²ÊǾݴ˽øÐдò°ü£¬ Òò´ËËüÒ²±»³Æ×÷ ×°Ïäµ¥(packing list). Õâ¸öÎļþÖУ¬ ·¾¶ÊÇÏà¶ÔÓÚ°²×°µÄ·¾¶µÄ (ͨ³£ÊÇ /usr/local »ò /usr/X11R6)¡£ Èç¹ûÄúʹÓà MANn ±äÁ¿µÄ»°£¬ Çë²»ÒªÔÚÕâÀïÁгöÈκÎÁª»úÊֲᡣ ¼ÙÈç port ÔÚ°²×°¹ý³ÌÖлᴴ½¨Ò»Ð©Ä¿Â¼£¬ ÇëÎñ±ØÔö¼Ó¶ÔÓ¦µÄ @dirrm ÐУ¬ ÒÔ±ãÔÚ package ±»Ð¶ÔØÊ±ÓèÒÔ×Ô¶¯É¾³ý¡£ ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó£º bin/oneko lib/X11/app-defaults/Oneko lib/X11/oneko/cat1.xpm lib/X11/oneko/cat2.xpm lib/X11/oneko/mouse.xpm @dirrm lib/X11/oneko ²Î¿¼ &man.pkg.create.1; µÄÁª»úÊÖ²áÒÔ»ñµÃ¸ü¶àÓйØ×°Ïäµ¥µÄϸ½Ú ½¨ÒéÄú½«Õâ¸öÎļþÀïµÄËùÓеÄÎļþÃû°´×ÖĸÅÅÐò¡£ ÕâÑù£¬ ÔÚÉý¼¶Õâ¸öportµÄʱºò¾ÍÄܹ»¸ü·½±ãµØºËʵËù×öµÄÐ޸ġ£ ÊÖ¹¤´´½¨ÕâÑùÒ»·ÝÁбí¿ÉÄÜÊÇÒ»¼þ·Ç³£¿ÝÔïµÄÊÂÇé¡£ Èç¹ûÄúµÄ port ÐèÒª°²×°´óÁ¿µÄÎļþ£¬ ×Ô¶¯´´½¨×°Ïäµ¥ »á°ïÄúʡϲ»ÉÙʱ¼ä¡£ Ö»ÓÐÒ»ÖÖÇé¿ö¿ÉÒÔ²»Óà pkg-plistÎļþ¡£ Èç¹ûÕâ¸ö port Ö»°²×°ºÜÉÙÁ¿µÄһЩÎļþ»òĿ¼µÄ»°£¬ ÕâЩÎļþºÍĿ¼¾Í¿ÉÒÔ·Ö±ðÁÐÔÚ Makefile µÄ PLIST_FILESºÍPLIST_DIRS ±äÁ¿Àï¡£ ¾Ù¸öÀý×ÓÀ´Ëµ£¬ ÎÒÃÇ¿ÉÒÔÔÚÉÏÃæÄǸö oneko port ÀïÃæ²»Óà pkg-plist£¬ ¶ø°ÑÏÂÃæµÄÕ⼸Ðмӵ½ Makefile ÀïÃæ£º PLIST_FILES= bin/oneko \ lib/X11/app-defaults/Oneko \ lib/X11/oneko/cat1.xpm \ lib/X11/oneko/cat2.xpm \ lib/X11/oneko/mouse.xpm PLIST_DIRS= lib/X11/oneko µ±È»£¬ Èç¹ûÒ»¸ö port ²»ÐèÒª¸øËü×Ô¼º´´½¨Ä¿Â¼µÄ»°£¬ ¾Í²»ÓÃÉèÖà PLIST_DIRS ±äÁ¿ÁË¡£ ²»¹ý£¬ Èç¹ûÓÃÕâÖÖ·½Ê½À´Áгö port Òª°²×°µÄÎļþºÍĿ¼µÄ»°£¬ Ò²¾ÍÎÞ·¨ÀûÓÃÔÚ &man.pkg.create.1; Àï½éÉܵÄÃüÁîÀ´ÖÆ×÷ package ÁË¡£ Òò´Ë£¬ ÕâÖÖ·½·¨Ö»ÊÊÓÃÓÚÄÇЩ¼òµ¥µÄ port£¬ ʹËüÃǸüΪ¼ò»¯¡£ ͬʱ£¬ ÕâÖÖ×ö·¨Ò²ÓÐÖúÓÚ¼õÉÙ ports collection ÖеÄÎļþÊýÁ¿¡£ ÔÚ²ÉÓà pkg-plist ֮ǰ£¬ Ç뿼ÂÇÒ»ÏÂʹÓÃÕâÖÖ·½·¨¡£ ÉÔºóÎÒÃǽ«¿´µ½ pkg-plist ÒÔ¼° PLIST_FILES ÈçºÎ´¦Àí ¸ü¸´ÔÓµÄÈÎÎñ¡£ ´´½¨Ð£ÑéºÍÎļþ Ö»Òª¼üÈë make makesum£¬ port ±ã»á×Ô¶¯´´½¨ distinfoÎļþ¡£ Èç¹ûÏÂÔØµÄÎļþµÄУÑéºÍ¾­³£±ä»¯£¬ ¶øÄúÓÖÄÜÈ·±£ËüÃǵÄÀ´Ô´¿É¿¿ (±ÈÈ磬 À´×ÔÓÚCDÖÆÔìÉÌ£¬ »òÿÌìÁª±àÉú³ÉµÄÎĵµÎļþ)£¬ ¾ÍÓ¦¸ÃÔÚ IGNOREFILES ÀïÃæ±êÃ÷ÕâЩÎļþ¡£ ÕâÑù£¬ ÔÙÔËÐÐ make makesum µÄʱºò±ã²»»á°ÑÕâЩ±ê¼Ç IGNORE µÄÎļþ¼ÆËãÔÚÄÚÁË¡£ ²âÊÔ port Ó¦µ±È·¶¨ÄúµÄ port ȷʵ×öÁËÄúÏ£ÍûËüÃÇ×öµÄÊÂÇ飬 °üÀ¨´ò°ü¡£ÏÂÃæÊÇÐèÒªÖØµã¼ì²éµÄÒ»Ð©ÖØÒªµÄ¹¤×÷¡£ pkg-plist ÖÐûÓаüÀ¨Èκβ»Ïë°²×°µÄÎļþ pkg-plist °üº¬ÁËËùÓÐÓ¦¸Ã°²×°µÄÎļþ ÄúµÄ port Äܹ»Ê¹Óà reinstall ¶à´Î°²×°¡£ ÄúµÄ port ÄÜÔÚÐ¶ÔØ (deinstall) ʱ£¬ ×Ô¶¯Íê³É ÇåÀí ÍÆ¼öµÄ²âÊÔ˳Ðò make install make package make deinstall pkg_add package-name make deinstall make reinstall make package È·ÐÅÔÚ package ºÍ deinstall ½×¶ÎûÓÐÈκξ¯¸æ¡£ µÚÈý²½ÒÔºó£¬ ¼ì²éÊÇ·ñËùÓÐн¨µÄĿ¼¶¼±»Õýȷɾ³ýÁË¡£ ÔÚµÚËIJ½ÒÔºó£¬ ÊÔ×ÅÔËÐÐÒ»ÏÂËù×°µÄÈí¼þ£¬ È·±£µ±ËüÒÔ package ·½Ê½°²×°µÄʱºòÒ²ÄÜÕý³£¹¤×÷¡£ ×Ô¶¯»¯ÕâЩ²½Öè×î¼òµ¥µÄ·½·¨ÊÇͨ¹ý ports tinderbox À´½øÐвâÊÔ¡£ Ëü¿ÉÒÔά»¤ jails ²¢ÔÚÆäÖÐÍê³ÉÈ«²¿²âÊÔ¹¤×÷£¬ ¶ø²»»áÆÆ»µÕýÔÚÔËÐеÄϵͳµÄ״̬¡£ Çë²Î¼û ports/ports-mgmt/tinderbox ÒÔÁ˽â¸ü¶àµÄÐÅÏ¢¡£ Óà <command>portlint</command> À´¼ì²é port ÇëʹÓà portlint ÃüÁîÀ´¼ì²éÄúµÄ port ÊÇ·ñ·ûºÏÎÒÃǵĹ淶¡£ ports-mgmt/portlint ³ÌÐòÊÇ ports Ì×¼þµÄÒ»²¿·Ö¡£ Õâ¸ö³ÌÐòµÄÖ÷Òª¹¦ÄÜÊǰïÖúÄú¼ì²é Makefile µÄÑùʽÊÇ·ñ·ûºÏ¹æ·¶£¬ ÒÔ¼° package µÄÃüÃûÊÇ·ñµÃÌå¡£ ÌύРport ÔÚÌύРport ֮ǰ£¬ Ó¦ÏÈÔĶÁ ¸Ã×öʲôºÍ²»¸Ã×öʲô Ò»½Ú¡£ ¼ÈÈ»ÒѾ­¶ÔËùÖÆ×÷µÄ port Ï൱ÂúÒâÁË£¬ Ê£ÏµĹ¤×÷£¬ ±ãÊǽ«Ëü·Å½ø &os; µÄÖ÷ ports Ê÷£¬ ÒÔ±ãÈøü¶àµÄÈË´ÓÖÐÊÜÒæ¡£ ÎÒÃDz¢²»ÐèÒªÄúµÄ work Ŀ¼ÒÔ¼° pkgname.tgz °ü£¬ Òò´ËÏÖÔÚ¿ÉÒÔɾ³ýËüÃÇÁË¡£ ¼Ù¶¨ÄúµÄ port µÄÃû×ÖÊÇ oneko£¬ ½ÓÏÂÀ´Òª×öµÄÊÇ cd µ½ oneko ËùÔÚµÄĿ¼£¬ È»ºóÊäÈëÃüÁ shar `find oneko` > oneko.shar ½«Õâ¸ö oneko.shar Îļþ×÷Ϊ¸½¼þ£¬ ʹÓà &man.send-pr.1; ³ÌÐòÌá½» (Çë²ÎÔÄ Bug Reports and General Commentary ÒÔÁË½â¹ØÓÚ &man.send-pr.1; µÄ½øÒ»²½ÏêÇé) ½«ÆäËͳö¡£ ÇëÎñ±Ø½«ÄúµÄ bug ±¨¸æ·ÖÀà (category) Ϊ ports ²¢°Ñ×Ó·ÖÀà (class) ÉèÖÃΪ change-request (²»Òª°Ñ±¨¸æ±í¼°Îª»úÃܵģ¬ ¼´ confidential£¡)¡£ ´ËÍ⣬ ÔÚ PR µÄÃèÊö (Description) Ò»À¸ÖеÄÄÚÈÝÓ¦¸ÃÊÇ port µÄ¼òÒª½éÉÜ (ÀýÈç COMMENT ÄÚÈݵļò»¯°æ±¾)£¬ ¶ø shar ÎļþÔòÓ¦ÌîÈëÐÞÕý (Fix) À¸ÖС£ ÔÚÎÊÌⱨ¸æÀïÃæÊ¹ÓÃÁËÒ»¶ÎºÃµÄÃèÊö£¬ ÄÜʹÎÒÃǵŤ×÷±äµÃ¸üÈÝÒס£ ϰ¹ßÉÏ£¬ ÎÒÃÇ»áʹÓÃÀàËÆ£º New port: <category>/<portname> <short description of the port> ÕâÑùµÄ±êÌâÀ´ËµÃ÷ÕâÊÇÐ嵀 port¡£ Èç¹ûÄúҲʹÓÃÕâÑùµÄϰ¹ß£¬ ÄÇôÎÒÃǽ«¸üÈÝÒ׸ü·½±ãµØÔĶÁÄúµÄ PR£¬ ´Ó¶ø¼Ó¿ì´¦ÀíËÙ¶È¡£ ÔÙ´ÎÉùÃ÷£¬ ²»Òª°üº¬Ô­Ê¼µÄdistfile£¬ workĿ¼£¬ »òÕßÄúÓà make package ÖÆ×÷µÄ°ü£» ´ËÍ⣬ ¶ÔÓÚÐ嵀 port ÇëÎñ±ØÊ¹Óà &man.shar.1; ¶ø²»ÊÇ &man.diff.1;¡£ ÔÚÄúÌá½»µÄÄúµÄ port ÒÔºóÇëÄÍÐĵȴý¡£ ÓÐʱÔÚÒ»¸ö port Õýʽ¼ÓÈë &os; ֮ǰÐèÒª»¨·ÑºÃ¼¸¸öÔ£¬ ¾¡¹ÜÒ²ÓпÉÄÜÊǼ¸Ìì¡£ Äú¿ÉÒԲ鿴 ÕýµÈ´ý±» commit µ½ &os; µÄ port PR¡£ Ò»µ©ÎÒÃÇ¿´¹ýÁËÄúµÄ±¨¸æ£¬ ÓбØÒªµÄ»°ÎÒÃÇ»áÁªÏµÄú£¬ ²¢°ÑËü·Åµ½ ports Ê÷Àï¡£ ÄúµÄÃû×ÖÒ²»á³öÏÖÔÚ Additional FreeBSD Contributors ºÍÆäËüµÄÎļþ¡£ ²»ÊǺܰôÂð!? :-) ¸´Ô Porting ºÃÁË£¬ Ò²Ðí¹¤×÷ûÄÇô¼òµ¥£¬ port ÐèÒª×öЩÐ޸IJÅÄܹ»ÔÚ FreeBSD ÉÏÅÜÆðÀ´¡£ ÔÚÕâÒ»ÕÂÀ ÎÒÃǽ«»áÒ»²½²½¾ÙÀýÀ´½éÉÜÓ¦¸ÃÈçºÎÐÞ¸ÄÀ´Ê¹ÄúµÄ port ÄÜÔÚ FreeBSD ÉÏÃæÔËÐС£ Õû¸öϵͳÊÇÈçºÎÔËתµÄ? Ê×ÏÈ£¬ ÕâһϵÁе͝×÷ÊÇÓÉÓû§ÔÚÄúµÄ port Ŀ¼ÀïÇÃÈë make ºó·¢ÉúµÄ¡£ ÄúÒ²Ðí»á·¢ÏÖÔÚÁíÍâµÄÒ»¸ö´°¿ÚÀïÔĶÁһϠbsd.port.mk ½«»áÓÐÖúÓÚÄúµÄÀí½â¡£ ÒªÊÇÄú²»ÊǷdz£Ã÷°× bsd.port.mk ÊÇ×öʲôµÄ»°£¬ Ò²²»ÓÃÌ«µ£ÐÄ£¬ ºÜ¶àÈ˶¼²»ÖªµÀµÄ... :-> fetch »áÊ×Ïȱ»Ö´ÐС£ fetch ½«¼ì²éÔÚ±¾µØµÄ DISTDIR Ŀ¼ÀïÊÇ·ñ´æÔÚ tar °ü¡£ Èç¹û fetch ûÓÐÕÒµ½¾Í»á²éÕÒ Makefile Öж¨ÒåµÄ MASTER_SITES URL£¬ »¹ÓÐÎÒÃǵÄÖ÷ FTP Õ¾µã £¬ ÔÚÄÇÀïÎÒÃDZ¸·ÝÁËËùÓб»ÈÏ¿ÉµÄ distfile¡£ ¼ÙÉèÄǸö MASTER_SITES Õ¾µãÊÇÖ±½ÓÁ¬ÔÚ Internet Éϵģ¬ ¾Í»áÊÔ×ÅÓà FETCH Ö¸¶¨µÄ³ÌÐòÈ¡»Ø distfile¡£ Èç¹û³É¹¦µÄ»°£¬ Îļþ»á±»±£´æÔÚDISTDIR ËùÖ¸¶¨µÄĿ¼ÒÔ±¸ÉÔºóʹÓᣠ½ÓÏÂÀ´»áÖ´ÐÐ extract¡£ Ëü»áÔÚ DISTDIR ÖÐѰÕÒÄúµÄ tar °ü (ͨ³£ÊÇÓà gzip ѹËõµÄ tar °ü)£¬È»ºó½âѹËõµ½ÓÉ WRKDIR ËùÖ¸¶¨µÄÁÙʱĿ¼Àï (ĬÈÏΪworkĿ¼)¡£ ÏÂÒ»²½ÊÇÖ´ÐÐ patch¡£ Ê×ÏÈÈκÎÔÚ PATCHFILES Öж¨ÒåµÄ²¹¶¡¶¼»á±»´òÉÏ¡£ È»ºó£¬ ÔÚÓÉ PATCHDIR Ö¸¶¨µÄĿ¼ (ĬÈÏΪ filesĿ¼) Öз¢ÏÖµÄpatch-*£¬ ËüÃǽ«»áÒÔÎļþÃûµÄ×Öĸ˳Ðò±»ÏȺó´òÉÏ¡£ configure»á±»Ö´ÐС£ ÕâÒ»²½Öè¿ÉÄÜ»áÓÐÒÔϼ¸ÖÖÇéÐΡ£ Èç¹û´æÔÚ scripts/configure£¬ ¾Í»áÖ´ÐÐËü Èç¹û¶¨ÒåÁË HAS_CONFIGURE »òÕß GNU_CONFIGURE£¬ ¾Í»áÖ´ÐÐ WRKSRC/configure¡£ Èç¹û¶¨ÒåÁËUSE_IMAGE£¬ ¾Í»áÖ´ÐÐ XMKMF (ĬÈÏΪ: xmkmf -a)¡£ build»á±»Ö´ÐС£ ÕâÒ»²½½«»á½øÈëportsµÄ¹¤×÷Ŀ¼ (WRKSRC) È»ºó½øÐбàÒë¡£Èç¹û¶¨ÒåÁËUSE_GMAKE£¬ ¾Í»áʹÓà GNU make£¬ ·´Ö®£¬ Ôò»áʹÓÃϵͳĬÈ쵀 make¡£ ÒÔÉ϶¼ÊÇϵͳĬÈϵIJ½Öè¡£ ÄúÒ²¿ÉÒÔ¶¨Òå pre-something »òÕß post-something£¬ »òÕß°ÑÒÔ´ËÃüÃûµÄ½Å±¾·Åµ½ scripts Ŀ¼£¬ ËüÃÇ»áÔÚĬÈϵ͝×÷֮ǰ»òÖ®ºó±»Ö´ÐС£ ¾Ù¸öÀý×Ó£¬ Èç¹ûÄúÔÚÄúµÄ Makefile ÀﶨÒåÁËpost-extract£¬ ²¢ÔÚ script Ŀ¼Àï·ÅÁËÒ»¸ö pre-build ½Å±¾£¬ ÄÇôÔÚ tar °ü½â¿ªÖ®ºó post-extract ½«±»µ÷Ó㬠pre-build ½Å±¾»áÔÚĬÈϵıàÒë֮ǰ±»Ö´ÐС£ ÎÒÃÇÍÆ¼öÄúÔÚ Makefile ¶¨ÒåËùÓе͝×÷£¬ Èç¹û²»ÊÇÊ®·Ö¸´Ôӵϰ£¬ ÕâÑù£¬ ±ðÈËÄܸüÈÝÒ×Ã÷°×ÄúµÄ port ÐèÒªÖ´ÐÐÄÄЩ·ÇĬÈϵ͝×÷¡£ ĬÈϵÄÐÐΪ¶¼ÊÇÓÉ bsd.port.mk ¶¨ÒåµÄ do-something À´±íʾµÄ¡£ ÀýÈ磬 port ÖÐÓÃÀ´½âѹËõµÄÃüÁîÊÇÓÉ do-extract À´¶¨ÒåµÄ¡£ Èç¹ûÄú¶ÔĬÈϵÄÉèÖò»ÂúÒ⣬ ¿ÉÒÔͨ¹ýÔÚ Makefile ÖØÐ¶¨Òå do-someting À´×öЩ¸Ä±ä¡£ Ö÷ ¶¯×÷ (ÀýÈç extract¡¢ configure£¬ µÈµÈ) ½ö½öÊÇÓÃÀ´È·¶¨ËùÓÐÏàÓ¦µÄ½×¶Î¶¼Íê³ÉÁË£¬ ÒÔ¼°µ÷ÓÃÕæÊµµÄ¶¯×÷»ò½Å±¾£¬ ËüÃDz»Ó¦±»Ð޸ġ£ Èç¹ûÄúÏëÒªÐ޸ĽâѹËõÕâ¸ö¶¯×÷£¬ ¿ÉÒÔÐÞ¸Ä do-extract£¬ µ«ÓÀÔ¶¶¼²»Òª¸Ä±ä extract µÄ²Ù×÷£¡ ÎÒÃÇÒѾ­½éÉÜÁËÔÚÓû§ÇÃÈë make Ö®ºó»á·¢ÉúÄÄЩÊÂÇéÁË¡£ ½ÓÏÂÀ´ÎÒÃǽ«½øÐнøÒ»²½µÄѧϰ£¬ À´¿´Ò»¿´ÈçºÎ´´½¨Ò»¸öÀíÏëµÄ port¡£ »ñȡԴ´úÂë »ñȡԴ´úÂëµÄ tar °ü (ͨ³£ÊÇ foo.tar.gz »òÕß foo.tar.Z) ²¢°ÑËüÃǷŽø DISTDIR¡£ ×îºÃʹÓà Ö÷Á÷ µÄ°æ±¾¡£ ÄúÐèÒªÉèÖñäÁ¿ MASTER_SITES À´Ö¸Ïòԭʼ tar °üµÄ»ñȡλÖᣠÄú¿ÉÒÔÔÚ bsd.sites.mk ÀïÕÒµ½Ò»Ð©ËٶȽϿìµÄÖ÷Á÷Õ¾µã¡£ ÇëʹÓÃÕâЩվµã — ºÍÏà¹ØµÄ¶¨Òå — Èç¹û¿ÉÄܵϰ£¬ Ó¦¾¡Á¿±ÜÃâÔÚͬһ¸öÔ´´úÂëÊ÷Àï³öÏÖ´óÁ¿Öظ´µÄÐÅÏ¢¡£ ÕâЩվµã»áËæ×Åʱ¼ä¶ø±ä»¯£¬ Èç¹ûÿ¸öÈ˶¼ËæÒâ¼ÓÈëµÄ»°»áʹά»¤±äµÃ·Ç³£À§ÄÑ¡£ Èç¹ûÄúÕÒ²»µ½Ò»¸öÓкܺÃÍøÂçÁ¬½ÓµÄ FTP/HTTP Õ¾µã£¬ »òÕßËüÃÇʹÓÃÁ˷DZê×¼µÄ¸ñʽ£¬ ÄúÒ²Ðí¾Í»áÏëÔÚÄú×Ô¼ºµÄ FTP »ò HTTP ·þÎñÆ÷ÉÏ·ÅÉÏÒ»·Ý¸±±¾¡£ Èç¹ûÄúÕÒ²»µ½¿É¿¿µÄµØ·½·ÅÖà distfiles£¬ ÎÒÃÇÒ²¿ÉÒÔÌṩ¸øÄúһЩ¿Õ¼äÀ´±£´æËü¡£ ÎÒÃÇ×Ô¼ºµÄ ftp.FreeBSD.org£» È»¶øÕâÖ»ÊÇÒ»¸öÕÛÖԵİ취¡£ distfile ±ØÐë·Å½øÄ³ÈËÔÚ freefall É쵀 ~/public_distfiles/ Ŀ¼ÖС£ ¿ÉÒÔÒªÇó°ïÖúÄú commit port µÄÈËÀ´·ÅÕâ¸ö distfile£¬ ¶øÕâ¸öÈËÒ²ÐèÒª°Ñ MASTER_SITES¡¢ MASTER_SITE_LOCAL ÒÔ¼° MASTER_SITE_SUBDIR µÄÉèÖ㬠¸ÄΪÔÚ freefall ÉϵÄÓû§Ãû¡£ Èç¹ûÄúµÄ port µÄ distfile Ò»Ö±Ôڱ仯£¬ ¶ø×÷Õ߾ܾø¸Ä±äÆä°æ±¾ºÅ£¬ Äú¿ÉÒÔ¿¼ÂÇ°Ñ distfiles ·ÅÔÚ×Ô¼ºµÄÖ÷Ò³£¬ ²¢ÔÚ MASTER_SITES Àï°ÑÔ­×÷ÕßµÄÁÐΪÊ×ѡλÖᣠÈç¹û¿ÉÄÜ£¬ ÊÔ×ÅÓë port µÄ×÷Õß¹µÍ¨Ò»ÏÂÈÃËû²»ÒªÕâô×ö£¬ Õ⽫ÓÐÖúÓÚ½¨Á¢¶ÔÔ´´úÂëµÄ¿ØÖÆ¡£ ÔÚÄúµÄÖ÷Ò³ÉÏ·ÅÖÃÄú×Ô¼ºµÄ distfile »á±ÜÃâÓû§µÃµ½ checksum mismatch µÄ´íÎó£¬ ¶øÇÒÄܼõÇáÎÒÃÇ FTP Õ¾µãά»¤ÈËÔ±µÄ¹¤×÷Á¿¡£ Èç¹ûÄúµÄportÖ»ÓÐÒ»¸öÖ÷Õ¾µãµÄ»°£¬ ÎÒÃǽ¨ÒéÄúÔÚ×Ô¼ºµÄÍøÕ¾ÉÏ×öÒ»·Ý±¸·Ý£¬ ²¢ËûÁÐΪ MASTER_SITESµÄµÚ2Ïî¡£ Èç¹ûÄúµÄ port ÐèÒªÀ´×ÔÍøÂçÉϵÄһЩ²¹¶¡£¬ Çë°ÑËüÃǷŵ½ DISTDIRÀï¡£ ²»Óõ£ÐÄËüÃǸúÔ´´úÂë²»ÊÇÀ´×Ôͬһվµã¡£ ÎÒÃÇÓа취´¦Àí (²ÎÔÄÏÂÃæµÄ ²¹¶¡Îļþ)¡£ ÐÞ¸Ä port ½â¿ª tar °ü£¬ ¶ÔÔ´´úÂë×ö³öºÏÀíµÄÐÞ¸ÄʹµÃÕâ¸ö port ÄÜÔÚ×îа汾µÄ &os; ÉÏÃæÔËÐС£ Ò»¶¨Òª ×Ðϸ¼Ç¼ ÄúËù×öµÄÿ´¦¸Ä¶¯£¬ °üÀ¨É¾³ý¡¢Ìí¼Ó¡¢Ð޸ĵÄÎļþµÈµÈ£¬ ÕâЩÐÞ¸ÄÒÔºó»áÔÚÄúµÄ port ÖÐÒԽű¾»ò²¹¶¡µÄ·½Ê½³öÏÖ£¬ ²¢ÇÒÄÜͨ¹ýÔËÐÐËüÃÇÀ´×Ô¶¯Íê³ÉÄú¶Ô port µÄ¸Ä¶¯ÒªÇó¡£ Èç¹ûÄúµÄ port ÒªÇóÓÃÓëÓû§½»»¥/ÅäÖÃÀ´Íê³É±àÒë»ò°²×°µÄ»°£¬ Äú¿ÉÒÔ¿´Ò»Ï Larry Wall µÄ¾­µäµÄ Configure ½Å±¾£¬ Êʵ±µØÄ£·Âһϡ£ Port collection µÄÄ¿µÄ£¬ ¾ÍÊÇʹÿ¸ö port Õ¼ÓÃ×îÉٵĿռ䣬 ²¢×öµ½Èí¼þµÄ ¼´²å¼´Óᣠ³ý·ÇÃ÷È·µØÉùÃ÷£¬ ·ñÔòÄúÌá½»¸ø &os; ports collection µÄ²¹¶¡£¬ ½Å±¾ºÍÆäËüµÄÎļþ¶¼½«ÒÔ±ê×¼µÄ BSD °æÈ¨·¢²¼¡£ ´ò²¹¶¡ ÔÚÄú×¼±¸ÖÆ×÷ port µÄ¹ý³ÌÖУ¬ Ôö¼Ó»òÐ޸ĵÄÎļþ£¬ ¶¼¿ÉÒÔͨ¹ý &man.diff.1; À´×ö³É²¹¶¡¡£ Ï£ÍûÓ¦Óõ½Ô´´úÂëÉϵÄÿ¸ö²¹¶¡£¬ ¶¼Ó¦±£´æÎªµ¥¶ÀµÄÎļþ£¬ ²¢ÃüÃûΪ patch-*£¬ ÆäÖÐ * ±íʾ½«ÒªÐ޸ĵÄÎļþµÄÍêÕû·¾¶Ãû£¬ ÀýÈç patch-Imakefile »ò patch-src-config.h¡£ ÕâЩÎļþ£¬ ¶¼Ó¦±£´æÔÚ PATCHDIR (ͨ³£ÊÇ files/)£¬ ÕâÀïµÄ²¹¶¡¶¼»á×Ô¶¯Ó¦Óõ½Ô´´úÂëÉÏ¡£ ËùÓеIJ¹¶¡±ØÐëÊÇÏà¶ÔÓÚ WRKSRC µÄ (Ò»°ã¶øÑÔ£¬ ÄúµÄ port »á½«Æä tarball ½âѹËõÔÚÄÇÀ ²¢Íê³ÉÓàÏµĹ¤×÷)¡£ ΪÁËÈÃÐÞÕýºÍÉý¼¶¸üÈÝÒ×£¬ ÄúÓ¦±ÜÃâʹÓöà¸ö patch È¥ÐÞ¸Äͬһ¸öÎļþ (ÀýÈ磬 patch-file ÒÔ¼° patch-file2 ¶¼ÐÞ¸Ä WRKSRC/foobar.c) ÕâÖÖÇé¿ö¡£ ÐèҪעÒâµÄÊÇ£¬ Èç¹ûÐ޸ĵÄÎļþµÄ·¾¶Öаüº¬Ï»®Ïß (_) ×Ö·û£¬ ÔòÔÚ²¹¶¡ÎļþÃûÖÐӦʹÓÃÁ½¸öÏ»®ÏßÀ´´úÌæ¡£ ÀýÈ磬 Èç¹ûÐèÒªÐÞ¸ÄÃûΪ src/freeglut_joystick.c µÄÎļþ£¬ ²¹¶¡ÎļþµÄÃû×ÖӦΪ patch-src-freeglut__joystick.c¡£ Ö»ÓÐ [-+._a-zA-Z0-9] ÕâЩ×Ö·û£¬ ¿ÉÒÔ³öÏÖÔÚ²¹¶¡µÄÎļþÃûÖУ¬ ÇëÎñ±Ø²»ÒªÊ¹ÓóýÕâЩ×Ö·ûÒÔÍâµÄÆäËü×Ö·û¡£ ²»Òª°ÑÄúµÄ²¹¶¡ÃüÃû³É patch-aa »ò patch-ab µÈÕâÑùµÄÃû×Ö£¬ ×îºÃÄÜÔÚ²¹¶¡ÃûÖÐÌᵽ·¾¶ºÍÎļþÃû¡£ ²»Òª°Ñ RCS ×Ö·û´®·Å½ø²¹¶¡¡£ ÎÒÃǰÑÎļþ·Å½ø ports Ê÷µÄʱºò£¬ CVS »áËð»µËüÃÇ£¬ µ±ÎÒÃÇÔÙ check out ³öÀ´µÄʱºò£¬ ËüÃǾͻáºÍÔ­À´µÄ²»Ò»Ñù£¬ ´Ó¶øµ¼Ö´ò²¹¶¡Ê§°Ü¡£ RCS ×Ö·û´® ÊÇÓÉÃÀÔª·ûºÅ ($) Î§ÈÆµÄ£¬ ͨ³£ÓÉ $Id »ò $RCS ¿ªÍ·¡£ ʹÓà &man.diff.1; µÄµÝ¹éÑ¡Ïî() ºÜºÃ£¬ µ«ÊÇÇë¼ì²éÒ»ÏÂ×îºóÊä³öµÄ patch£¬ È·±£Ã»ÓÐÈκεÄÀ¬»øÐÅÏ¢¡£ ÌØ±ðµØ£¬ ÓÐ 2 ÖÖÎļþ²»ÐèÒª diff£¬ ²¢ÇÒÓ¦¸Ãɾ³ý£º Ò»ÖÖÊÇ Makefile£¬ µ±ÄúµÄportʹÓÃÁËImake£¬ »òÕß GNU configure µÈµÈµÄ»°¡£ Èç¹ûÄú²»µÃ²»±à¼­configure.in ÒÔʹ autoconf È¥Éú³É configure£¬ ²»ÒªÊ¹Óà configure À´×ö diff (Õâ³£³£»áÓкü¸Ç§Ðг¤!)£» Ç붨Òå USE_AUTOTOOLS=autoconf:261 ²¢¶ÔÓ¦ configure.in À´ÖÆ×÷ diff¡£ ÁíÍ⣬ Äú»¹Ó¦¾¡Á¿¼õÉÙ²¹¶¡Öзǹ¦ÄÜÐԵĿոñ¼°¿Õ°×±ä¶¯¡£ ÔÚ¿ªÔ´ÊÀ½çÖУ¬ ×ñÑ­²»Í¬µÄ±àÂë¹æ·¶µÄÏîÄ¿¹²Ïí´óÁ¿´úÂëÊǺܳ£¼ûµÄÊÂÇé¡£ Èç¹ûÄú´Óij¸öÏîÄ¿ÖÐÌáȡһ²¿·Ö¹¦ÄÜÓÃÀ´ÐÞÕýÁíÒ»¸ö³ÌÐòÖеÄÎÊÌâʱ£¬ ÇëÎñ±ØÐ¡ÐÄ£º ²¹¶¡ÖкܿÉÄܵ½´¦¶¼ÊǷǹ¦ÄÜÐԵı䶯ÐС£ Õâ²»½ö»áµ¼Ö CVS ¿âµÄÅòÕÍ£¬ ¶øÇÒÒ²»áÈõ¼ÖÂÎÊÌâµÄ¹ÊÕϵ㣬 ÒÔ¼°Äúµ½µ×ÐÞ¸ÄÁËʲô±äµÃ²»ÉõÇåÎú¡£ ¼ÙÈçÐèҪɾ³ýÎļþ£¬ ÔòÓ¦ÔÚ post-extract target£¬ ¶ø²»ÊÇ×÷Ϊ²¹¶¡µÄÒ»²¿·ÖÀ´Íê³É¡£ ³ý´ËÖ®Í⣬ port µÄ Makefile »¹¿ÉÒÔͨ¹ý in-place ģʽµÄ &man.sed.1; À´Ö±½Ó½øÐмòµ¥µÄÌæ»»²Ù×÷¡£ Èç¹û²¹¶¡ÐèҪʹÓñäÁ¿Öµ£¬ Õâ¾Í·Ç³£ÓÐÓÃÁË¡£ ÀýÈ磺 post-patch: @${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|' ${WRKSRC}/configure ÍùÍùÔÚÒÆÖ²Ä³Ð©Èí¼þµÄʱºò»áÓöµ½ÕâÑùÒ»ÖÖÇé¿ö£¬ ÌØ±ðÊÇÕâ¸öÈí¼þÊÇÔÚ &windows; ÉÏ¿ª·¢µÄʱºò£¬ ´ó¶àÊýµÄÔ´´úÂë¶¼ÐèÒª½øÐÐCR/LFµÄת»»¡£ ÕâºÜ¿ÉÄÜ»á¸øÒÔºó´ò²¹¶¡´øÀ´ÎÊÌ⣬ »¹¿ÉÄÜ´¥·¢±àÒ뾯¸æ£¬ ²¢¸ø½Å±¾µÄÖ´ÐдøÀ´Âé·³ (/bin/sh^M not found)£¬ µÈµÈ¡£ ҪѸËÙ½«ËùÓÐÎļþÖÐµÄ CR/LF ¸ÄΪֻÓà LF£¬ ¿ÉÒÔÔÚ port µÄ Makefile ÖмÓÈë USE_DOS2UNIX=yes¡£ ³ý´ËÖ®Í⣬ »¹¿ÉÒÔÖ¸¶¨Ò»¸öÐèÒªÖ´ÐÐÕâÖÖת»»²Ù×÷µÄÎļþÁÐ±í£º USE_DOS2UNIX= util.c util.h Èç¹ûÏ£Íûת»»Ò»ÏµÁÐĿ¼ÖеÄÒ»×éÎļþ£¬ Ò²¿ÉÒÔʹÓà DOS2UNIX_REGEX¡£ ËüµÄ²ÎÊýÊÇÓë find ¼æÈݵÄÕýÔò±í´ïʽ¡£ ¹ØÓÚÕâÖÖ¸ñʽµÄ˵Ã÷£¬ Çë²ÎÔÄ &man.re.format.7;¡£ Õâ¸öÑ¡Ïî¶Ôת»»ËùÓÐÖ¸¶¨À©Õ¹ÃûµÄÎļþ£¬ ÀýÈçֻת»»Ô´´úÂëÎļþÕâÑùµÄÓ¦Ó÷dz£ÓÐÓ㺠USE_DOS2UNIX= yes DOS2UNIX_REGEX= .*\.(c|cpp|h) Èç¹ûÄúÏ£Íû»ùÓÚÏÖ´æµÄÎļþ´´½¨²¹¶¡£¬ ¿ÉÒÔ°ÑÎļþ¸´ÖÆÎª´ø .orig À©Õ¹ÃûµÄÃû×Ö£¬ È»ºóÐÞ¸ÄÔ­Îļþ¡£ È»ºóʹÓà makepatch Ä¿±ê¸ù¾ÝÐÞ¸ÄÔÚ port µÄ files Ŀ¼ÖÐÉú³É²¹¶¡Îļþ¡£ ÅäÖà °ÑÈκθ½¼ÓµÄÅäÖÃÃüÁî¼Ó½øÄúµÄ configure ½Å±¾²¢°ÑËü±£´æµ½ scripts ×ÓĿ¼¡£ ÈçÇ°ÃæÌáµ½µÄÄÇÑù£¬ ÄúÒ²ÄÜÔÚ Makefile ºÍ/»ò ʹÓà pre-configure »ò post-configure µÄ½Å±¾À´×öͬÑùµÄÊÂÇé¡£ ´¦ÀíÓû§ÊäÈë Èç¹ûÄúµÄ port ÒªÇóÓû§µÄÊäÈëÒÔ±ãÅäÖñàÒë¡¢ »ò°²×°ÅäÖùý³Ì£¬ ¾Í±ØÐëÔÚ Makefile ÀïÉèÖà IS_INTERACTIVE ±äÁ¿¡£ Èç¹ûÓû§ÉèÖÃÁË BATCH µÄ»°£¬ Õ⽫ÈÃÓû§ÄÜÌø¹ýÄúµÄ port À´Íê³É ͨÏü±àÒë (Èç¹ûÓû§ÉèÖÃÁË INTERACTIVEµÄ»°£¬ ÄÇô Ö»ÓÐ ÄÇЩҪÇ󻥶¯µÄ port ²Å»á±»±àÒë) Õ⽫¸øÄÇЩ²»Í£±àÒë ports µÄ»úÆ÷ʡϺܶàʱ¼ä¡£ ͨ³£ÎÒÃÇ»¹½¨Ò飬 Èç¹û¶ÔÓÚÄÇЩÎÊÌâÄÜÓкÏÀíµÄȱʡ´ð°¸µÄ»°£¬ Ó¦¼ì²éһϠPACKAGE_BUILDING ±äÁ¿£¬ ²¢¸ù¾ÝÆäÉèÖþö¶¨ÊÇ·ñÖ´Ðйرս»»¥½Å±¾¡£ Õ⽫ÔÊÐíÎÒÃÇΪ CDROM ºÍ FTP À´±àÒë package¡£ ÅäÖà Makefile ÅäÖà Makefile ÊÇÏ൱¼òµ¥µÄ£¬ ÎÒÃÇÔڴ˽¨ÒéÄúÔÚ¿ªÊ¼Ö®Ç°¿´Ò»ÏÂÏÖÓеÄÀý×Ó¡£ ÔÚÕâ·ÝÊÖ²áÀïÒ²ÓÐÒ»¸ö MakefileÀý×Ó£¬ ÕÕ×ÅÀïÃæ±äÁ¿µÄ˳ÐòÀ´Ð´ÄÜʹµÃÄúµÄ port ¸üÈÝÒ׵ر»ÆäËüÈË¿´¶®¡£ ÏÖÔÚ£¬ µ±Äú¿ªÊ¼±àдÄúеÄMakefile µÄʱºò£¬ ¿ÉÒÔÒÀ´Î˼¿¼Ò»ÏÂÒÔϵÄÎÊÌ⣺ ×÷Õß·¢²¼µÄ´úÂë ·ÅÔÚ DISTDIR ÖеÄÊDz»ÊDZê×¼µÄÓà gzip ѹËõµÄ tar °ü£¬ ÀýÈç foozolix-1.2.tar.gz£¿ Èç¹ûÊÇ£¬ ¿ÉÒÔÏÈÂÔ¹ýÕâÒ»½Ú¡£ Èç¹û²»ÊÇ£¬ ÄúÓ¦µ±¿´¿´ÊDz»ÊÇÒª¸²¸ÇÕâЩ±äÁ¿£º DISTVERSION¡¢ DISTNAME¡¢ EXTRACT_CMD¡¢ EXTRACT_BEFORE_ARGS¡¢ EXTRACT_AFTER_ARGS¡¢ EXTRACT_SUFX£¬ DISTFILES£¬È¡¾öÓÚÄú port µÄ distfile ¸ñʽÓжàô¹ÖÒì¡£ (×î³£¼ûµÄÒ»¸öÀý×Ó±ãÊÇ EXTRACT_SUFX=.tar.Z£¬ Ò»°ãÕâÊÇÒòΪ tar °üÊÇÓà compress ¶ø²»ÊÇ gzip ѹËõµÄʱºò¡£) ×îÔãµÄÇé¿öÊÇ£¬ ÄúÐèÒª×Ô¼º±àд do-extract À´¸²¸ÇĬÈϵ͍Ò壬 ¾¡¹ÜÕâ²»³£¼û£¬ µ«Èç¹ûÓöµ½ÁË£¬ »¹ÊÇÐèÒªÕâô×ö¡£ ÃüÃû Makefile µÄµÚÒ»²¿·Ö±ãÊÇ port µÄÃû×Ö¡¢ °æ±¾ºÅ£¬ ÒÔ¼°ËüËùÊôµÄ·ÖÀà¡£ <makevar>PORTNAME</makevar> ºÍ <makevar>PORTVERSION</makevar> ÄúÓ¦¸Ã°Ñ PORTNAME ÉèÖÃΪÄú port µÄÃû×Ö£¬ PORTVERSION ÔòÊÇ port µÄ°æ±¾ºÅ¡£ <makevar>PORTREVISION</makevar> ºÍ <makevar>PORTEPOCH</makevar> <makevar>PORTREVISION</makevar> (port µÄÐÞ¶©°æ±¾ºÅ) PORTEREVISION ±äÁ¿ÊÇÒ»¸öµ¥µ÷µÝÔöµÄÖµ£¬ Èç¹û²»Îª 0£¬ ¾Í»á±»¼Óµ½°üÃûµÄºóÃæ£¬ µ± PORTVERSION Ôö¼Ó µÄʱºòÓ¦±»Öà 0 (Ò²¾ÍÊǵ±¹Ù·½ÓÐа汾·¢²¼µÄʱºò)¡£ PORTREVISION »á±»×Ô¶¯»¯¹¤¾ß (±ÈÈç &man.pkg.version.1;) ÓÃÀ´¼ì²âÊÇ·ñ´æÔÚ¿ÉÓõÄа汾¡£ ÿµ± port ·¢Éú±ä»¯²¢¶ÔÉú³ÉµÄ package µÄÄÚÈÝ»ò½á¹¹ÓÐÏÔÖøÓ°Ïìʱ£¬ ¶¼Ó¦Ôö¼Ó PORTREVISION Öµ¡£ ÏÂÃæÊÇһЩӦµ±ÐÞ¸Ä PORTREVISION µÄÇé¿ö£º ÓÐеIJ¹¶¡ÓÃÀ´ÐÞÕý°²È«Â©¶´¡¢ ´íÎó£¬ »ò¸ø port Ìí¼ÓÁËÐµĹ¦ÄÜ¡£ ÐÞ¸ÄÁË Makefile Àï±àÒëʱ¿ªÆô»ò½ûÓõÄÑ¡Ïî¡£ ÐÞ¸ÄÁËÒª°²×°ÎļþµÄÁбí»ò°²×°Ê±µÄÐÐΪ (ÀýÈ磬 ÐÞ¸ÄÁËÒ»¸öÓÃÀ´¸ø package ³õʼ»¯Êý¾ÝµÄ½Å±¾£¬ Èç ssh host keys)¡£ Ò»¸öportÒÀÀµµÄ¹²Ïí¿â°æ±¾¸Ä±ä (ÔÚÕâÖÖÇé¿öÏ£¬ µ±°²×°ÁËа汾µÄ¹²Ïí¿â£¬ ºóÔÙÈ¥°²×°½ÏÔçµÄÈí¼þ¾Í»á³ö´í£¬ ÒòΪËüÃÇÒªÒÀÀµÀ쵀 libfoo.x ¶ø²»ÊÇlibfoo.(x+1))¡£ Ô­×÷ÕßÐÞ¸ÄÁË port distfile£¬ ²¢ÇÒ distfile µÄÐÂÀϰ汾֮¼äÓà diff -ru Ö»ÄÜ·¢ÏÖһЩϸ΢µÄ±ä»¯£¬ ÕâʱÎÒÃÇÖ»ÐèÒª¶Ô distinfo ×öÏàÓ¦µÄÐÞÕý£¬ ¶ø²»ÐèÒªÐÞ¸Ä PORTVERSION¡£ ²»ÐèÒªÐÞ¸Ä PORTREVISION µÄÀý×Ó£º port ½á¹¹·ç¸ñµÄ¸Ä±ä£¬ µ«¶ÔÓÚ´ò³ÉµÄ°üûÓй¦ÄܵÄÉϵı仯¡£ MASTER_SITES ·¢Éú±ä»¯£¬ »ò½øÐÐÁË¶Ô port ¹¦ÄܵÄÐ޸ģ¬ µ«²»ÖÂÓ°Ïì×îºó´ò³ÉµÄ°ü¡£ ¶Ô distfiles ÖîÈçÐÞÕýƴд´íÎóÖ®ÀàµÄ²¹¶¡£¬ ¶ÔÓû§¶øÑÔûÓÐÉý¼¶ÉϵÄÂé·³¡£ ¶ÔÒ»¸öÔ­±¾±àÒëʧ°ÜµÄ°üµÄÐ޸ģ¬ ʹÆä¿É±àÒ룬 ¶øÃ»ÓмÓÈëй¦ÄÜ¡£ ÒòΪ PORTREVISION ±íʾ°üµÄÄÚÈÝ·¢ÉúÁ˱仯£¬ Èç¹ûÏÈǰûÓпɱàÒëµÄ°ü£¬ Ò²¾Í²»ÐèÒªÐÞ¸Ä PORTREVISION À´±íʾ±ä»¯¡£ Ò»¸öÐ޸IJ¢Ìá½» port µÄÔ­ÔòÊÇ£º ʹµÃ±ðÈËÄÜ´ÓÖÐÊÜÒæ (¸Ä½ø¡¢ ÐÞ¸ÄÒÑÓдíÎó£¬ »òʹÐ嵀 package Äܹ»ÔËÐÐ)£¬ Äú»¹ÒªÈ¨ºâÒ»ÏÂÕâÊÇ·ñÓ¦ÈÃÄÇЩ¾­³£¸üРports Ê÷µÄÈËÉý¼¶£¬ Èç¹û»Ø´ðÊÇ ÊÇ µÄ»°£¬ PORTREVISION ¾ÍÓ¦¸ÃÐÞ¸ÄÁË¡£ <makevar>PORTEPOCH</makevar> (port µÄ¼ÓȨ°æ±¾ºÅ) ÓÐʱÈí¼þÉÌ»ò FreeBSD µÄ porter »áʹÓñȾɰæµÄ°æ±¾ºÅСµÄÊý×Ö×öΪа汾ºÅµÄÇé¿ö¡£ ¾ÙÀýÀ´Ëµ£¬ ´Ó foo-20000801 µ½ foo-1.0 (´ÓÐÎʽÉÏÀ´ËµÕâÊDz»¶ÔµÄ£¬ ÒòΪ 20000801 ÔÚÊýÖµÉϱÈ1´óºÜ¶à)¡£ ÔÚÕâÖÖÇé¿öÏ£¬ PORTEPOCH Ó¦µ±Ôö¼Ó¡£ Èç¹û PORTEPOCH ·Ç 0£¬ ¾ÍÓ¦µ±¼Óµ½°üÃû×ֵĺóÃæ¡£ PORTEPOCH ÓÀÔ¶²»Äܱ»¼õÉÙ»òÇåÁ㣬 ÒòΪÄÇÑù»áµ¼ÖÂÓëǰһʱÆÚµÄ package ±È½Ï°æ±¾Ê±²úÉú²»ÕýÈ·µÄ½á¹û¡£ (¾ÍÊÇ˵£¬ ÄǸö package ¾Í²»»á±»¼ì²âµ½ÒѾ­¹ýʱÁË¡£) еİ汾ºÅ (±ÈÈçÇ°ÃæÔÚÇ°ÃæÄǸöÀý×ÓÖÐµÄ 1.0,1) ÔÚÊýÖµÉϱÈǰһ¸ö°æ±¾ (20000801) С£¬ µ«¶àÊý×Ô¶¯»¯µÄ¹¤¾ß»áÈÏΪ ,1 ºó׺Òâζ×űÈǰһ¸ö°üµÄºó׺ ,0 ´ó¡£ ´íÎóµÄÈ¥³ý»òÖØÖà PORTEPOCH »áµ¼Öºܶ಻ÐÒ·¢Éú£» Èç¹ûÄú»¹²»Ã÷°×Ç°ÃæµÄÌÖÂÛ£¬ Çë¶àÔĶÁ¼¸´ÎÖ±ÖÁÃ÷°×Ϊֹ£¬ »òµ½ÓʼþÁбíÉÏÀ´ÌáÎÊ¡£ ´ó¶àÊý port ¶¼²»»áÓõ½ PORTEPOCH£¬ ²¢ÇÒÈç¹ûij¸öÈí¼þµÄÏÂÒ»¸ö°æ±¾¸Ä±äÁ˰汾ºÅ½á¹¹µÄ»°£¬ ÓÃÇÉÃîµÄ·½·¨À´É趨 PORTVERSION Ò²ÄܱÜÃâʹÓà PORTEPOCH¡£ È»¶ø£¬ FreeBSD porter Ò²ÐèҪעÒ⣬ µ±ÓÐа汾µÄÈí¼þ·¢²¼£¬ µ«²¢·ÇÕýʽ°æ±¾Ê± — ±ÈÈç snapshot °æ±¾£¬ Ô­×÷Õß¿ÉÄÜ»áʹÓõ±Ê±µÄÈÕÆÚÀ´ÃüÃû£¬ ÕâÔÚÐ嵀 ¹Ù·½ °æ±¾·¢²¼µÄʱºò£¬ ¾ÍºÜÈÝÒ×ÒýÆðÇ°ÃæÌáµ½µÄÎÊÌâ¡£ ¾Ù¸öÀý×Ó£¬ Èç¹û snapshot °æ±¾µÄ·¢²¼ÈÕÆÚÊÇ 20000917£¬ Õâ¸öÈí¼þµÄÉÏÒ»¸ö°æ±¾ÊÇ1.2£¬ ÄÇôÕâ¸ö°æ±¾µÄ PORTVERSIN Ó¦¸ÃÉèΪ 1.2.20000917 »òÀàËÆµÄÑù×Ó£¬ ¶ø²»ÊÇ20000917£¬ ÕâÑùÔÚ 1.3 ·¢²¼ÒÔºó£¬ Ð°汾¾Í¿ÉÒÔÔÚÊýÖµÉÏ´óÓھɵİ汾ÁË¡£ ¹ØÓÚ <makevar>PORTREVISION</makevar> ºÍ <makevar>PORTEPOCH</makevar> µÄÓÃÀý gtkmumble port£¬°æ±¾ºÅ 0.10£¬ ±»Ìá½»µ½ ports collection: PORTNAME= gtkmumble PORTVERSION= 0.10 PKGNAME ±ä³É gtkmumble-0.10¡£ È»ºóÓÐÈË·¢ÏÖÁËÒ»¸ö°²È«Â©¶´£¬ ÐèÒªÓÃÒ»¸öFreeBSDµÄ²¹¶¡¡£ PORTREVISION ¾ÍÒªÏàÓ¦µÄÔö¼Ó¡£ PORTNAME= gtkmumble PORTVERSION= 0.10 PORTREVISION= 1 PKGNAME±ä³ÉÁË gtkmumble-0.10_1 Èí¼þµÄ×÷Õß·¢²¼ÁËеİ汾£¬ °æ±¾Îª 0.2 (×÷Õß±¾À´µÄÒâ˼ÊÇ£¬ Óà 0.10 ±íʾ 0.1.0£¬¶ø²»ÊÇÖ¸ 0.9 Ö®ºóµÄÄǸö°æ±¾ - µ«ÊÇÏÖÔÚÌ«³ÙÁË)¡£ ÒòΪÏÖÔڵĴΰ汾ºÅ 2 ÔÚÊýÖµÉϱÈÉÏÒ»¸ö°æ±¾ 10 С£¬ PORTEPOCH ±ØÐëÔö¼Ó£¬ ÒÔʹÐ嵀 package ±»ÈÏΪÊÇ ¸üеġ£ ÓÉÓÚÄÇÊÇ×÷Õß·¢²¼µÄÒ»¸öа汾£¬ Òò´Ë PORTREVISION Ó¦±»ÖÃ0 (»òÕß´Ó Makefile ÀïÃæÉ¾³ýËü)¡£ PORTNAME= gtkmumble PORTVERSION= 0.2 PORTEPOCH= 1 PKGNAME ±ä³ÉÁË gtkmumble-0.2,1 ÏÂÒ»¸ö°æ±¾½«»áÊÇ 0.3¡£ ÓÉÓÚ PORTEPOCH ´Ó²»¼õÉÙ£¬ ÄÇô¾ÍÎÞÐë¸Ä¶¯£º PORTNAME= gtkmumble PORTVERSION= 0.3 PORTEPOCH= 1 PKGNAME ±ä³É gtkmumble-0.3,1 Èç¹ûÔÚÕâ´ÎÉý¼¶ÖÐ PORTEPOCH ±»ÖÃΪÁË0£¬ ÄÇôÔÚ×°ÁË gtkmumble-0.10_1 °üµÄ»úÆ÷ÉϾÍÎÞ·¨¼ì²âµ½ gtkmumble-0.3 °üµÄ¸üУ¬ ÒòΪ 3 ÔÚÊýÖµÉÏ±È 10 С¡£ ¼Çס£¬ ÕâÊÇ PORTEPOCH ×îÖØÒªµÄµØ·½¡£ <makevar>PKGNAMEPREFIX</makevar> ºÍ <makevar>PKGNAMESUFFIX</makevar> 2 ¸ö¿ÉÑ¡µÄ±äÁ¿£¬ PKGNAMEPREFIX ºÍ PKGNAMESUFFIX ¿ÉÒÔºÍ PORTNAME »¹ÓÐ PORTVERSION ÅäºÏʹÓ㬠ÐγÉÏñÕâÑùµÄ PKGNAME£º ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}¡£ ÇëÈ·¶¨·ûºÏÎÒÃÇµÄ °üÃüÃû¹æÔò¡£ µ±È»£¬ ²» ÔÊÐíÔÚ PORTVERSION ÖÐʹÓÃÁ¬×Ö·û (-)¡£ Èç¹û°üÃûÓÐ language- »ò -compiled.specifics ²¿·Ö (¼ûÏÂÎÄ)£¬ Çë·Ö±ðÓà PKGNAMEPREFIX ºÍ PKGNAMESUFFIX£¬ ²»ÒªÖ±½Ó¼Óµ½ PORTNAME ÖС£ <makevar>LATEST_LINK</makevar> LATEST_LINK ÔÚ±àÒë°üµÄ¹ý³ÌÖÐÓÃÓÚÈ·¶¨¿ÉÒÔΪ pkg_add -r ʹÓõÄËõ¶ÌµÄÃû×Ö¡£ ¾ÙÀýÀ´Ëµ£¬ ÔÚ°²×°×îа汾µÄ perl µÄʱºò£¬ Ö»ÐèÖ¸¶¨ pkg_add -r perl ¶øÎÞÐèÖªµÀ¾ßÌåµÄ°æ±¾ºÅ¡£ Õâ¸öÃû×ÖÓ¦¸ÃÊǶÀÒ»ÎÞ¶þµÄ£¬ ²¢ÇÒ¶ÔÓû§¶øÑÔÓ¦¸ÃÊÇÏÔ¶øÒ×¼ûµÄÃû×Ö¡£ ÓÐʱ£¬ ÔÚ ports Ì×¼þÖпÉÄÜ»á´æÔÚͬһ³ÌÐòµÄ¶à¸ö°æ±¾¡£ Ë÷ÒýºÍÔ¤±àÒë°üµÄÁª±àϵͳ¶¼ÐèÒªÄܹ»½«ËüÃÇÊÓΪ²»Í¬µÄÈí¼þ°ü£¬ ¾¡¹ÜÆä PORTNAME¡¢ PKGNAMEPREFIX£¬ ÉõÖÁ PKGNAMESUFFIX ¿ÉÄÜÊÇһģһÑùµÄ¡£ Óöµ½ÕâÖÖÇé¿öʱ£¬ ¾ÍÐèÒª½«³ýÁË Ö÷ port Ö®ÍâµÄÆäËû port ÖÐµÄ LATEST_LINK ±äÁ¿ÉèΪ²»Í¬µÄÖµ — Çë²Î¼û lang/gcc46 ºÍ lang/gcc port£¬ ÒÔ¼° www/apache* ϵÁУ¬ ÒÔÁ˽âËüµÄÓ÷¨¡£ Èç¹ûÉèÖÃÁË NO_LATEST_LINK£¬ Ôòϵͳ±ã²»»áÉú³É¶ÔÓ¦µÄÁ¬½Ó£¬ ¶ÔÓÚ·Ç Ö÷ port À´ËµÊÇÒ»¸ö¿ÉÐеÄÑ¡Ôñ¡£ ÐèҪעÒâµÄÊÇ£¬ ÈçºÎÈ·¶¨ Ö÷ °æ±¾ — ×îÁ÷ÐС¢ ÊÜÖ§³Ö×îºÃ£¬ ±ä¶¯×îÉÙ£¬ µÈµÈ — ÒѾ­³¬¹ýÁ˱¾ÊéÄܹ»¸ø³öµÄ½¨Ò鷶Χ£» ÕâÀïÖ»ÊÇÏòÄú½éÉÜÔÚÑ¡¶¨ÁËÒ»¸ö Ö÷ port Ö®ºóÈçºÎÖ¸¶¨ÆäËû port µÄ°æ±¾¡£ °üÃüÃû¹æÔò ÒÔÏÂÊÇÄúÔÚÃüÃûÄúµÄ°üʱӦµ±×ñÊØµÄ¹æÔò¡£ Õ⽫ʹµÃÎÒÃǷŰüµÄĿ¼¸üÀûÓÚä¯ÀÀ£¬ ÒòΪÎÒÃÇÒѾ­ÓÐÊýÒÔÍò¼ÆµÄ°üÁË£¬ Èç¹ûÓû§¾õµÃ²é¿´°üÃûºÜÀ§Äѵϰ£¬ ËûÃÇ»áºÜ¿ì×ß¿ªµÄ¡£ Ò»¸ö°üµÄÃû×ÖÓ¦¸Ã¿´ÆðÀ´ÏñÕâÑù£º language_region-name-compiled.specifics-version.numbers¡£ ÒªÏñÕâÑùÀ´¶¨Òå°üµÄÃû×Ö£º ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}¡£ È·±£ËùÓеıäÁ¿·ûºÏÉÏÃæµÄ¸ñʽ¡£ FreeBSD »á¾¡Á¦È¥Ö§³ÖÓû§µ±µØµÄÓïÑÔ¡£ Èç¹ûÕâ¸ö port ÊÇijÖÖÓïÑÔרÓõģ¬ ÄÇô language- ²¿·ÖÓ¦¸ÃÊÇ ÓÉ ISO-639 ¶¨ÒåµÄ×ÔÈ»ÓïÑ﵀ 2 ¸ö×ÖĸËõд¡£ ±ÈÈ磬 jaÊDZíʾÈÕ±¾£¬ ru ÊDZíʾ¶íÂÞ˹£¬ vi ±íʾԽÄÏ£¬ zh ±íʾÖйú£¬ ko ±íʾº«¹ú£¬ de ±íʾµÂ¹ú¡£ Èç¹ûÊÇÕë¶ÔijÖÖÓïÑÔµÄijһµØÇøµÄ»°£¬ ÔÙÒª¼ÓÉÏ2¸ö×ÖĸµÄ¹ú¼Ò´úÂë¡£ ÀýÈ磬 en_US ±íʾÃÀ¹úÓ¢Ó fr_CH ±íʾÈðÊ¿·¨Óï¡£ language- ²¿·ÖÓ¦¸ÃÔÚ PKGNAMEPREFIX ±äÁ¿ÀïÉèÖᣠname ²¿·ÖµÄÊ××ÖĸӦ¸Ã Сд¡£ (ÓàϵIJ¿·Ö¿ÉÒÔ°üº¬´óд×Öĸ£¬ ËùÒÔµ±Äú Ҫת»»Ò»¸ö°üº¬´óд×ÖĸÈí¼þµÄÃû×Öʱ£¬ ÄúÐèÒª ×Ô¼º×ö³öÅжϡ£) ¶ÔÓÚ Perl 5 Ä£¿éµÄÃüÃû£¬ Óиö´«Í³µÄ¹æÔòÊÇ£¬ ÔÚÇ°Ãæ ¼ÓÉÏ p5- ²¢°ÑÁ½¸öðºÅµÄ²¿·Ö¸ÄΪÁ¬×ֺţ¬ È磺 Data::Dumper Ä£¿é¶ÔÓ¦µÄÃû×Ö£¬ ¾ÍÓ¦¸ÃÊÇ p5-Data-Dumper¡£ È·ÈÏ port µÄÃû×ֺͰ汾֮¼äÓÐÇåÎúµÄ·Ö¸ô£¬ ²¢·ÅÈë PORTNAME ºÍ PORTVERSION ±äÁ¿¡£ ÔÚ PORTNAME Öаüº¬°æ±¾²¿·ÖµÄΨһÀíÓÉÊÇÉÏÓÎÈí¼þ°üÕæµÄ²ÉÓÃÕâÑùµÄÃüÃû·½Ê½£¬ ÀàËÆ textproc/libxml2 »ò japanese/kinput2-freewnn port ÕâÑù¡£ ·ñÔò£¬ ÔÚ PORTNAME ÖоͲ»Ó¦°üº¬Èκΰ汾ÐÅÏ¢¡£ Ðí¶à port ²ÉÓÃͬÑùµÄ PORTNAME Ãû×ÖÊǺÜÕý³£µÄ£¬ www/apache* port ±ãÊÇÈç´Ë£» ÔÚÕâÖÖÇé¿öÏ£¬ ²»Í¬µÄ°æ±¾ (ÒÔ¼°²»Í¬µÄË÷ÒýÏî) ÊÇÓÉ PKGNAMEPREFIX¡¢ PKGNAMESUFFIX£¬ ÒÔ¼° LATEST_LINK µÄÖµµÄ²»Í¬¶øÓÐËùÇø±ðµÄ¡£ Èç¹û port ¿ÉÒÔʹÓò»Í¬µÄ Ó²±àÂëĬÈÏÅäÖà ½øÐÐÁª±à (ͨ³£ÊÇһϵÁÐ port µÄÒ»²¿·ÖĿ¼Ãû)£¬ Ôò -compiled.specifics ²¿·Ö¾ÍÓ¦¸ÃÃ÷ʾ±àÒë½øÈ¥µÄĬÈÏÖµ (´Ë´¦Á¬×ÖºÅÊÇ¿ÉÑ¡µÄ)¡£ ͨ³£µÄÓÃÀý°üÀ¨Ö½ÐͺͲ»Í¬µÄ×ÖÌå³ß´ç¡£ -compiled.specifics ²¿·ÖÓ¦¸Ãͨ¹ý PKGNAMESUFFIX ±äÁ¿À´ÉèÖᣠ°æ±¾ºÅÓ¦¸Ã½ôËæÔÚÁ¬×ֺŠ(-) ºóÃæ²¢ÓÉÊý×ÖºÍ×Öĸ×é³É¡£ ÌØ±ðÖ¸³ö£¬ ÁíÍâµÄÁ¬×ÖºÅÊDz»ÔÊÐí³öÏÖÔÚ°æ±¾ºÅÀïµÄ¡£ ΨһÀýÍâµÄÊÇ×Ö·û´® pl (±íʾ patchlevel)£¬ Ö»ÄÜ ÓÃÔÚÈí¼þûÓÐÖ÷°æ±¾ºÅºÍ´Î°æ±¾ºÅµÄÇé¿öÏ¡£ Èç¹ûÈí¼þµÄ°æ±¾ºÅÀï³öÏÖÁËÏñ alpha£¬ beta£¬ rc£¬ pre£¬ È¡µÚÒ»¸ö×Öĸ°ÑËü·ÅÔÚСÊýµãµÄºóÃæ¡£ Èç¹ûÔÚ°æ±¾ºÅÀïÒ»Ö±³öÏÖÄÇЩÃû×Ö£¬ ÄÇôÔÚÊý×ÖºÍ×Öĸ֮¼ä²»Ó¦ÓжàÓàµÄСÊýµã¡£ Õâ¸ö·½·¨ÊÇΪÁ˸üÈÝÒ×µÃÆ¾°æ±¾ºÅÀ´ÅÅÐò port¡£ ÌØ±ð×¢ÒâµÄÊÇ£¬ È·±£°æ±¾ºÅÖ®¼äµÄÿ²¿·Ö¶¼ÓÉСÊýµãÀ´·Ö¸ô£¬ Èç¹ûÈÕÆÚÒ²Êǰ汾ºÅµÄÒ»²¿·Ö£¬ ¾ÍÓÃÕâÑùµÄ¸ñʽ£¬ 0.0.yyyy.mm.dd ÕâÑùµÄ¸ñʽ£¬ ¶ø·Ç dd.mm.yyyy ÉõÖÁ yy.mm.dd ÕâÖÖ²»ÊʺϱíʾǧÄêµÄ¸ñʽ¡£ ÔÚ°æ±¾ºÅÉÏʹÓà 0.0. ǰ׺ʮ·ÖÖØÒª£¬ ÒòΪµ±Èí¼þ·¢ÐÐÕýʽµÄ°æ±¾Ê±£¬ Æä°æ±¾ºÅÊý×ֺܿÉÄÜ»áСÓÚ±íʾÄê·ÝµÄ yyyy Êý×Ö¡£ ÕâÀïÊÇÒ»Ð©ÕæÊµµÄÀý×Ó£¬ ÎÒÃǽå´Ë˵Ã÷ÈçºÎ°ÑÈí¼þ×÷Õß¶ÔÈí¼þµÄÃüÃû£¬ ת»»ÎªÊʺÏÎÒÃǰüµÄÃüÃû·½Ê½£º ·¢ÐаæµÄÃû×Ö PKGNAMEPREFIX PORTNAME PKGNAMESUFFIX PORTVERSION ˵Ã÷ mule-2.2.2 (¿Õ) mule (¿Õ) 2.2.2 ûʲôÐèÒªÐÞ¸ÄµÄ EmiClock-1.0.2 (¿Õ) emiclock (¿Õ) 1.0.2 ³ÌÐòµÄÃû×Ö²»ÄÜʹÓôóд×Öĸ rdist-1.3alpha (¿Õ) rdist (¿Õ) 1.3.a Ïñ alpha ÕâÑùµÄ×Ö·û´®ÊDz»ÔÊÐí³öÏÖµÄ es-0.9-beta1 (¿Õ) es (¿Õ) 0.9.b1 Ïñ beta ÕâÑùµÄ×Ö·û´®ÊDz»ÔÊÐí³öÏÖµÄ mailman-2.0rc3 (¿Õ) mailman (¿Õ) 2.0.r3 Ïñ rc ÕâÑùµÄ×Ö·û´®ÊDz»ÔÊÐí³öÏÖµÄ v3.3beta021.src (¿Õ) tiff (¿Õ) 3.3 ÄǸöÊÇɶ¹í¶«Î÷£¿ tvtwm (¿Õ) tvtwm (¿Õ) pl11 ×ÜÐèÒªÓиö°æ±¾ºÅ°É piewm (¿Õ) piewm (¿Õ) 1.0 ×ÜÐèÒªÓиö°æ±¾ºÅ°É xvgr-2.10pl1 (¿Õ) xvgr (¿Õ) 2.10.1 pl Ö»ÔÊÐíÔÚûÓÐ Ö÷/´Î °æ±¾ºÅµÄÇé¿öϲÅÄܳöÏÖ gawk-2.15.6 ja- gawk (¿Õ) 2.15.6 ÈÕÎİæ psutils-1.13 (¿Õ) psutils -letter 1.13 Ö½ÕÅ´óСÒѾ­ÔÚ±àÒëµÄʱºò±»Ó²±àÂëµ½³ÌÐòÀïÁË pkfonts (¿Õ) pkfonts 300 1.0 300dpi ×ÖÌåµÄ°ü Èç¹ûÔÚԭʼµÄ´úÂëÀïûÓа汾ºÅ£¬ »òÕßÔ­×÷Õß²¢²»´òË㿪·¢ÁíÍâµÄ°æ±¾£¬ ¾ÍÓ¦°Ñ°æ±¾ºÅÉè³É 1.0 (¾ÍÏñÇ°Ãæ piewm µÄÀý×ÓÄÇÑù)¡£ ·ñÔò£¬ ÒªÇóԭʼµÄ×÷Õß¼ÓÉϰ汾ºÅ»òʹÓÃÈÕÆÚ (0.0.yyyy.mm.dd) À´×÷Ϊ°æ±¾ºÅ¡£ ·ÖÀà <makevar>CATEGORIES</makevar> (ËùÊô·ÖÀà) ÔÚ°üÖÆ×÷Íê³ÉÖ®ºó£¬ Ëü»á±»·ÅÔÚ /usr/ports/packages/All£¬ ²¢½¨Á¢Ò»ÏµÁÐÀ´×Ô /usr/ports/packages ÏÂ×ÓĿ¼µÄ·ûºÅÁ¬½Ó¡£ ÕâЩ×ÓĿ¼µÄÃû³ÆÊÇÓÉ CATEGORIES Ö¸¶¨µÄ¡£ Õ⽫·½±ãÓÚÄÇЩÓû§ÔÚ FTP Õ¾µã»ò CDROM µÄÒ»´ó¶Ñ°üÀïÃæÑ°ÕÒ×Ô¼ºÏëÒªµÄ°ü¡£ Çë²é¿´Ò»Ï ĿǰµÄ·ÖÀà±í£¬ ²¢ÕÒ³öÒ»¸öÊʺÏÄú port µÄ·ÖÀà¡£ ´ËÁбíÒ²»á¾ö¶¨ÄúµÄ port ÔÚ port Ŀ¼ÖеÄλÖᣠÈç¹ûÄúÔÚÕâÀïÉ趨ÁË 1 ¸öÒÔÉϵķÖÀ࣬ ÔòÈÏΪÄú port ÎļþÓ¦·Åµ½ÒÔµÚÒ»¸ö·ÖÀàÃüÃûµÄ×ÓĿ¼ÖС£ Çë²ÎÔÄ ºóÃæ ¹ØÓÚÈçºÎÑ¡ÔñÕýÈ··ÖÀàµÄ¸ü¶àÌÖÂÛ¡£ ĿǰµÄ·ÖÀà±í ÕâÊÇĿǰ port ÖеķÖÀà¡£ ÄÇЩÓÃÐǺŠ(*) ±ê¼ÇµÄÊÇ ÐéÄâ·ÖÀà — ËüÃÇÔÚportsÊ÷ÀïûÓÐÏàÓ¦µÄ×ÓĿ¼£¬ Òò¶øÖ»ÓÃÀ´×öΪ´ÎÒªµÄ·ÖÀ࣬ ÓÃÒÔ·½±ãËÑË÷¡£ ¶ÔÓÚ·ÇÐéÄâµÄ·ÖÀàÀ´Ëµ£¬ Äú»á¿´µ½ÔÚÏà¶ÔÓ¦×ÓĿ¼ÖÐµÄ Makefile ÀïÓÐдÔÚ COMMENT ÀïµÄµ¥ÐÐÃèÊö¡£ ·ÖÀà ÃèÊö ×¢ÒâÊÂÏî accessibility °ïÖú²ÐÕÏÈËÊ¿µÄ port¡£ afterstep* ¶ÔÓÚ AfterStep ´°¿Ú¹ÜÀíÆ÷µÄÖ§³Ö¡£ arabic °¢À­²®ÓïÑÔÖ§³Ö¡£ archivers ѹËõÓ뱸·Ý¹¤¾ß¡£ astro ÓйØÌìÎÄѧµÄ port¡£ audio ÉùÒôÖ§³Ö¡£ benchmarks ²âÆÀ³ÌÐò¡£ biology ÉúÎïѧÏà¹ØµÄÈí¼þ¡£ cad ¼ÆËã»ú¸¨ÖúÉè¼Æ¹¤¾ß¡£ chinese ÖÐÎÄÓïÑÔÖ§³Ö¡£ comms ͨѶÈí¼þ¡£ ´ó²¿·ÖÊÇÓÃÓÚ´®¿ÚͨѶµÄ¡£ converters ×Ö·û±àÂëת»»¡£ databases Êý¾Ý¿â¡£ deskutils ÔÚ·¢Ã÷¼ÆËã»úÒÔǰ¾ÍÒѾ­ÔÚ×ÀÃæÉÏʹÓõĶ«Î÷¡£ devel ³ÌÐò¿ª·¢¹¤¾ß¡£ ²»Òª°Ñ¿ª·¢¿â·ÅÔÚÕâÀï — ³ý·ÇÄúÔÙÒ²ÕÒ²»µ½¸üºÏÊʵķÖÀ࣬ ·ñÔò¾Í²»¸Ã·ÅÔÚÕâ¸ö·ÖÀàÀï¡£ dns DNS Ïà¹ØµÄÈí¼þ¡£ docs* ÓÐ¹Ø FreeBSD ÎĵµµÄ Meta-ports¡£ editors ͨÓñ༭Æ÷¡£ ÓÐÌØÊâÓÃ;µÄ±à¼­Æ÷Ó¦¸Ã±»ÖÃÓÚÏàÓ¦µÄ·ÖÀàÖÐ (±ÈÈ磬 Êýѧ-·½³Ìʽ ±à¼­Æ÷Ó¦¸Ã·ÅÔÚ math ·ÖÀàÀï¡£ elisp* Emacs-lispÏà¹ØµÄport¡£ emulators ÆäËü²Ù×÷ϵͳµÄÄ£ÄâÆ÷¡£ ÖÕ¶ËÄ£ÄâÆ÷ ²»Ó¦¸Ã ÊôÓÚÕâ¸ö·ÖÀà — »ùÓÚ X µÄÓ¦¸Ã·ÅÔÚ x11 ¶ø»ùÓÚÎı¾Ä£Ê½µÄÓ¦¸Ã·Åµ½ comms »ò misc ÖÐÈ¥£¬ È¡¾öÓÚ¾ßÌåµÄ¹¦ÄÜ¡£ finance »õ±Ò¡¢ ½ðÈÚÒÔ¼°Ïà¹ØµÄÓ¦ÓóÌÐò¡£ french ·¨ÓïÓïÑÔÖ§³Ö¡£ ftp FTP ¿Í»§¶ËºÍ·þÎñÆ÷¶ËµÄ³ÌÐò¡£ Èç¹ûÄúµÄ port ͬʱ֧³Ö FTP ºÍ HTTP µÄ»°£¬ °ÑËü·Å½ø ftp ²¢°Ñ www ×öΪµÚ¶þ·ÖÀà¡£ games ÓÎÏ·¡£ geography* ÓëµØÀíѧÓйصÄÈí¼þ¡£ german µÂÓïÓïÑÔÖ§³Ö¡£ gnome* ¹ØÓÚ GNOME ÏîÄ¿µÄÖ§³Ö¡£ gnustep* Óë GNUstep ×ÀÃæ»·¾³ÓйصÄÈí¼þ¡£ graphics ͼÐÎͼÏó³ÌÐò¡£ hamradio* ÒµÓàÎÞÏߵ簮ºÃÕßʹÓõÄÈí¼þ¡£ haskell* ÓÐ¹Ø Haskell ±à³ÌÓïÑÔµÄÈí¼þ¡£ hebrew Ï£²®À´ÓïÓïÑÔÖ§³Ö¡£ hungarian ÐÙÑÀÀûÓïÓïÑÔÖ§³Ö¡£ ipv6* IPv6 Ïà¹ØÈí¼þ¡£ irc IRC Ïà¹Ø³ÌÐò japanese ÈÕÓïÓïÑÔÖ§³Ö¡£ java Óë Java™ ±à³ÌÓïÑÔÓйصÄÈí¼þ¡£ java ·ÖÀà¶Ô port ¶øÑÔ²»Ó¦ÊÇÆäΨһµÄ·ÖÀà¡£ ³ýÁËÖ±½ÓÓë Java ÓïÑÔÏà¹ØµÄ port Ö®Í⣬ ¿ª·¢ÈËÔ±Ó¦¾¡Á¿±ÜÃâʹÓà java ×÷Ϊ port µÄÖ÷·ÖÀà¡£ kde* K ×ÀÃæ»·¾³ (KDE) Ïà¹ØµÄÈí¼þ¡£ kld* ¿É¼ÓÔØÄÚºËÄ£¿é¡£ korean º«ÓïÓïÑÔÖ§³Ö¡£ lang ±à³ÌÓïÑÔ¡£ linux* Linux Ïà¹ØµÄÓ¦ÓóÌÐò¡£ lisp* ºÍ Lisp ±à³ÌÓïÑÔÓйصÄÈí¼þ¡£ mail µç×ÓÓʼþÈí¼þ¡£ math ÊýÖµ¼ÆËãºÍÆäËüÊýѧÏà¹ØµÄÈí¼þ¡£ mbone* MBone Ó¦ÓóÌÐò¡£ misc ¸÷ʽ¸÷ÑùµÄʵÓóÌÐò¡£ ͨ³£²»ÊôÓÚÆäËüµÄÈκηÖÀ࣬ Èç¹û¿ÉÄܵϰ£¬ ¾¡Á¿ÎªÄúµÄ port Ñ¡Ôñ misc ÒÔÍâµÄ·ÖÀ࣬ ÒòΪÔÚÕâÀïµÄ port ±È½ÏÈÝÒ×±»È˺öÂÔ¡£ multimedia ¶àýÌåÈí¼þ¡£ net ¸÷ÖÖÍøÂçÏà¹ØµÄÈí¼þ¡£ net-im ¼´Ê±ÏûÏ¢Èí¼þ¡£ net-mgmt ÍøÂç¹ÜÀíÈí¼þ¡£ net-p2p ¶ÔµÈÍø (Peer to peer network) Ó¦ÓóÌÐò¡£ news USENETÐÂÎÅ×éÏà¹ØÈí¼þ¡£ palm Palm™ ϵÁÐÏà¹ØÈí¼þ¡£ parallel* ²¢ÐмÆËãÏà¹ØÈí¼þ¡£ pear* Pear PHP ¼Ü¹¹Ïà¹ØÈí¼þ¡£ perl5* Perl5 Ïà¹ØµÄÈí¼þ¡£ plan9* Plan9 Ïà¹Ø³ÌÐò¡£ polish ²¨À¼ÓïÓïÑÔÓïÑÔÖ§³Ö¡£ ports-mgmt ÓÃÓÚ¹ÜÀí¡¢ °²×°ºÍ¿ª·¢ FreeBSD ports ºÍÔ¤±àÒë°üµÄ port¡£ portuguese ÆÏÌÑÑÀÓïÓïÑÔÖ§³Ö¡£ print ´òÓ¡Ïà¹ØµÄÈí¼þ¡£ ×ÀÃæ³ö°æ¹¤¾ß (´òÓ¡Ô¤ÀÀ¹¤¾ßµÈµÈ) Ò²¿ÉÒÔ·ÅÔÚ´Ë·ÖÀàÀï¡£ python* Python ±à³ÌÓïÑÔÏà¹ØµÄÈí¼þ¡£ ruby* Ruby ±à³ÌÓïÑÔÏà¹ØµÄÈí¼þ¡£ rubygems* ÒÆÖ²°æ±¾µÄ RubyGems Èí¼þ°ü¡£ russian ¶íÓïÓïÑÔÖ§³Ö¡£ scheme* Óë Scheme ÓïÑÔÓÐ¹ØµÄ port¡£ science ¿ÆÑ§Ïà¹Øµ«²»ÊʺϷÅÔÚ astro¡¢ biology£¬ ÒÔ¼° math ·ÖÀàµÄ port¡£ security °²È«Ïà¹ØµÄʵÓóÌÐò¡£ shells ÃüÁîÐÐ shell¡£ spanish* Î÷°àÑÀÓïÖ§³Ö sysutils ϵͳÏà¹ØµÄʵÓóÌÐò¡£ tcl* ÒÀÀµÓÚ Tcl ÔËÐÐµÄ port¡£ textproc Îı¾´¦ÀíµÄʵÓóÌÐò¡£ Õâ¸ö·ÖÀಢ²»ÊʺÏÓÚÄÇЩӦ¸Ã·Åµ½ print µÄ×ÀÃæ³ö°æ¹¤¾ß¡£ tk* ÒÀÀµÓÚ Tk ÔËÐÐµÄ port¡£ ukrainian ÎÚ¿ËÀ¼ÓïÓïÑÔÖ§³Ö¡£ vietnamese Ô½ÄÏÓïÓïÑÔÖ§³Ö¡£ windowmaker* WindowMaker ´°¿Ú¹ÜÀíÆ÷µÄÏà¹ØÖ§³Ö¡£ www Word Wide WebµÄÏà¹ØÈí¼þ¡£ HTMLÓïÑÔÏà¹ØµÄÖ§³ÖÒ²¿ÉÒÔ·ÅÔÚÕâ¸ö·ÖÀàÀï¡£ x11 X Window SystemÒÔ¼°Ïà¹ØÈí¼þ¡£ Õâ¸ö·ÖÀàÊǸøÄÇЩֱ½ÓÖ§³ÖX Window System µÄÈí¼þµÄ¡£ ²»Òª°Ñ³£¹æµÄ X Ó¦ÓóÌÐòÒ²·Å½øÕâÀ ËüÃÇÖеĴó¶àÊý¶¼Ó¦±»¹éÀൽ x11-* (²Î¼ûÏÂÎÄ)¡£ Èç¹ûÄúµÄ port ÊÇ X Ó¦ÓóÌÐò£¬ Ó¦¶¨Òå USE_XLIB (ʹÓà USER_IMAKE Òþº¬°üÀ¨Ëü)£¬ È»ºó°ÑËü·Åµ½ºÏÊʵķÖÀàÀï¡£ x11-clocks X11 ϵÄʱÖÓ³ÌÐò¡£ x11-drivers X11 Çý¶¯³ÌÐò¡£ x11-fm X11 ϵÄÎļþ¹ÜÀíÆ÷¡£ x11-fonts X11 ϵÄ×ÖÌåÒÔ¼°Ïà¹Ø¹¤¾ß¡£ x11-servers X11 ·þÎñÆ÷¡£ x11-themes X11 Ö÷Ìâ¡£ x11-toolkits X11 ¹¤¾ß°ü¡£ x11-wm X11 ´°¿Ú¹ÜÀíÆ÷¡£ xfce* Óë Xfce ×ÀÃæ»·¾³ÓÐ¹ØµÄ port¡£ zope* Zope Ïà¹ØµÄÖ§³Ö¡£ Ñ¡ÔñÕýÈ·µÄ·ÖÀà ÓÉÓÚ²»ÉÙ·ÖÀàÊÇÖØ¸´µÄ£¬ Äúͨ³£ÔÚÓÃÄĸö·ÖÀà×÷ΪÄú port µÄÖ÷·ÖÀàÉÏ×ö³öÑ¡Ôñ¡£ ÏÂÃæÓм¸Ìõ¹æÔòÄܰïÄú½â¾öÕâ¸öÎÊÌâ¡£ ÕâÊÇÒ»¸ö´øÓÅÏȼ¶µÄ±í£¬ °´ÓÅÏȼ¶½µÐòÂÞÁУº µÚÒ»¸ö·ÖÀà±ØÐëÊǸöÎïÀíµÄ·ÖÀà (²ÎÔÄ Ç°Ãæ)¡£ Õâ¶ÔÓÚÖÆ×÷°üÊDZØÒªµÄ¡£ ÐéÄâ·ÖÀàºÍÎïÀí·ÖÀà¿ÉÄÜÔÚ°üÖÆ×÷Íê³Éºó»ìºÏÔÚÒ»Æð¡£ ¶ÔÓÚÌØ¶¨ÓïÑԵķÖÀàͨ³£·ÅÔÚµÚһλ¡£ ÀýÈ磬 Èç¹ûÄúµÄ port »á°²×°Ò»Ð© X11 µÄÈÕÎÄ×ÖÌ壬 ÄÇô CATEGORIESÄÇÐÐ ¾ÍÓ¦¸ÃÊÇ japanese x11-fonts¡£ ÓÐÌØ¶¨ÒâÒåµÄ·ÖÀàÓ¦µ±±»ÁÐÔÚÎÞÌØ¶¨ÒâÒåµÄÇ°Ãæ¡£ ÀýÈ磬 HTML ±à¼­Æ÷Ó¦¸ÃÊÇÕâÑùµÄ www editors£¬ ¶ø²»ÊÇÆäËüµÄʲô¡£ ͬÑùµØ£¬ Äú²»Ó¦¸ÃÁгö net£¬ Èç¹û port ÊôÓÚ irc¡¢ mail¡¢ news¡¢ security£¬ »òÊÇ www£¬ ÒòΪ net ¿ÉÒÔ±íʾËüÃǵij¬¼¯¡£ Ö»Óе±Ö÷ÒªµÄ·ÖÀàÊÇÒ»ÃÅ×ÔÈ»ÓïÑÔµÄʱºò£¬ x11 Äܱ»×öΪµÚ¶þ·ÖÀà¡£ ÐèÒªÌØ±ðÖ¸³öµÄÊÇ£¬ Äú²»Ó¦°Ñ X µÄÓ¦ÓóÌÐòÒ²¹éÀàΪ x11¡£ Emacs ģʽӦµ±ÓÚÏàÓ¦µÄÓ¦ÓóÌÐò·ÅÔÚͬһ¸ö·ÖÀàÀ ¶ø²»ÊÇ editors ·ÖÀà¡£ ¾ÙÀýÀ´Ëµ£¬ Ò»¸öÓÃÓڱ༭ijÖÖ±à³ÌÓïÑÔÔ´´úÂëµÄ Emacs ģʽӦ¸Ã±»¹éΪ lang Ò»Àà¡£ ÐèÒª°²×°¿É¼ÓÔØÄÚºËÄ£¿éµÄ port Ó¦ÔÚÆä CATEGORIES ÖйéÈëÐéÄâ·ÖÀà kld¡£ misc ·ÖÀàµÄ port ²»ÄÜÓÐÆäËü·ÇÐéÄâµÄ·ÖÀà¡£ Èç¹ûÄúÔÚÄúµÄ CATEGORIES ÀïÉèÁË misc ºÍÁíÍâµÄ·ÖÀ࣬ ÄÇÒâζ×Å¿ÉÒÔ°²È«µØÉ¾³ý misc ²¢°Ñ port ·Åµ½ÆäËüµÄ×ÓĿ¼ÖÐÁË£¡ Èç¹ûÄúµÄ port ȷʵ²»ÊôÓÚÏÖÓеķÖÀ࣬ ²Å°ÑËü·Åµ½ misc¡£ Èç¹ûÄú²»ÄÜÈ·¶¨Ê¹ÓÃÄĸö·ÖÀ࣬ ÇëÔÚÄúÌá½»µÄ &man.send-pr.1; Àï¼ÓÉÏÒ»ÐÐ×¢ÊÍ£¬ ÕâÑùÎÒÃǾÍÄÜÔÚµ¼Èë½ø port Ê÷֮ǰÌÖÂÛһϡ£ Èç¹ûÄúÊÇ committer£¬ ·¢Ò»·Ý±¸Íüµ½ &a.ports; ÏÈÌÖÂÛһϡ£ ºÜ¶àÇé¿öÊÇÐ嵀 port ±»¼Óµ½´íÎóµÄ·ÖÀàÀ È»ºóÓÖÁ¢¼´±»ÒÆ×ß¡£Õâ»áÔì³ÉÔ´´úÂë¿â²»±ØÒªºÍ²»Á¼µÄÅòÕÍ¡£ ÈçºÎÌáÒ齨Á¢ÐµķÖÀà ÓÉÓÚ Ports Collection ÔÚ³ÖÐøÔö³¤£¬ ÒѾ­ÒýÈëÁËÐí¶àеķÖÀà¡£ еķÖÀà¼È¿ÉÒÔÊÇ ÐéÄâµÄ ·ÖÀà — ÕâЩ·ÖÀàÔÚÕû¸ö ports Ŀ¼ÖÐûÓÐÊôÓÚ×Ô¼ºµÄ×ÓĿ¼ — »ò ÎïÀíµÄ ·ÖÀà — ËüÃÇÓÐ×Ô¼ºµÄ×ÓĿ¼¡£ ½ÓÏÂÀ´ÎÒÃǽ«ÌÖÂÛÓ뽨Á¢ÐµÄÎïÀí·ÖÀàÓйصÄÊÂÏ ÒÔ±ã°ïÖúÄúÀí½âÈçºÎÌáÒ齨Á¢ÐµķÖÀà¡£ ÎÒÃÇĿǰµÄ×ö·¨ÊDZÜÃ⽨Á¢ÐµÄÎïÀí·ÖÀ࣬ ³ý·ÇÓзdz£¶àµÄ port Ó¦±»¹éÈëÕâÒ»·ÖÀ࣬ »òÕß port ÊôÓÚÄ³Ò»ÌØ¶¨µÄСÍÅÌå (ÀýÈ磬 ÓëijÖÖÈËÀàÓïÑÔÏà¹Ø)£¬ »òÁ½Õß½ÔÊÇ¡£ ÕâÑù×öµÄÔ­ÒòÊÇÕâÀàÐ޸ĻáÈà committer ºÍÓû§¶¼²»µÃ²»½øÐÐ Ðí¶à¹¤×÷ À´ÔÚ Ports Collection ½øÐлò×·×ÙÐ޸ġ£ ´ËÍ⣬ ÌáÒéеķÖÀàͨ³£¶¼»áÒýÆðÕùÂÛ¡£ (¿ÉÄÜÕâÊÇÒòΪ¹ØÓÚij¸ö·ÖÀàÊÇ·ñ Ì«´ó һֱûÓзdz£Ò»ÖµÄÒâ¼ûµÄÔµ¹Ê£¬ ÁíÒ»·½Ã棬 ·ÖÀàÊÇ·ñÄܹ»Äܹ»ÓÐÖúÓÚä¯ÀÀ (ÒÔ¼°¶àÉÙ¸ö·ÖÀàÊǺÏÊʵÄ)£¬ µÈµÈ£¬ Ò²¶¼ÊÇÎÊÌâ¡£) ÏÂÃæÊǾßÌåµÄ²½Ö裺 ÔÚ &a.ports; ÌáÒéеķÖÀà¡£ ÄúÓ¦Ìṩ½¨Á¢Ð·ÖÀàµÄÏêϸÒÀ¾Ý£¬ °üÀ¨ÎªÊ²Ã´ÈÏΪÏÖÓеķÖÀ಻¹»£¬ ÒÔ¼°Ï£ÍûÒÆ¶¯Î»ÖõÄһϵÁÐ port µÄÃû×Ö¡£ (Èç¹ûÓÐÉÐÔÚ GNATS ¶øÎ´ commit µÄ port£¬ Ò²Ó¦Ò»Ò»Áгö¡£) Èç¹ûÄúÊÇÏà¹Ø port µÄ¼à»¤ÈË»òÌá½»Õߣ¬ ˵Ã÷ÕâÒ»Çé¿ö¿ÉÄÜÓÐÖúÓÚÄúµÄÌáÒéµÃµ½Í¨¹ý¡£ ²ÎÓëÌÖÂÛ¡£ Èç¹ûÓÐÈËÖ§³ÖÄúµÄ½¨Ò飬 Ó¦¼°Ê±Ìá½»Ò»¸ö PR£¬ ÆäÖаüÀ¨ÌáÒé PR µÄÀíÓÉ£¬ ÒÔ¼°ÐèÒªÒÆ¶¯µÄ port µÄÁÐ±í¡£ ÀíÏëÇé¿öÏ£¬ Õâ¸ö PR Ò²Ó¦°üº¬Õë¶ÔÏÂÁÐÎļþµÄ²¹¶¡£º ½øÐÐ repocopy Ö®ºó¶Ô Makefile ½øÐеÄÐÞ¸Ä Ð·ÖÀàµÄ Makefile ¾É·ÖÀàµÄ Makefile ÒÀÀµÓÚ¾É port µÄ port µÄ Makefile (´ËÍ⣬ ×÷ΪһÏî¼Ó·ÖÒòËØ£¬ Äú»¹¿ÉÒÔ°´ÕÕ Committer Ö¸ÄÏËù½éÉܵÄÁ÷³Ì£¬ ÌṩһЩÆäËüÐèÒªÐ޸ĵÄÎļþ¡£) ÓÉÓÚÕâÊÇÒ»ÏîÓ°Ïì ports »ù´¡ÉèÊ©µÄ±ä¶¯£¬ Ëü²»½öÉæ¼° repo-copy µÄʹÓ㬠¶øÇÒÒ²¿ÉÄÜ»áÓ°ÏìÁª±à¼¯ÈºµÄ»Ø¹é²âÊÔ²Ù×÷£¬ Òò´ËÕâÀà PR Ó¦·ÖÅɸø &a.portmgr;¡£ Èç¹ûÕâÒ» PR µÃµ½Åú×¼£¬ ij¸ö committer ½«°´ÕÕÔÚ Committer Ö¸ÄÏ ÖÐËù½éÉܵIJ½ÖèÀ´Íê³ÉÓàÏµĹ¤×÷¡£ ÌáÒéеÄÐéÄâ·ÖÀàºÍÉÏÊö¹ý³ÌÀàËÆ£¬ µ«»áÈÝÒ×Ðí¶à£¬ ÒòΪ²»ÐèҪʵ¼ÊµØÒƶ¯ÈκΠport¡£ ÕâÖÖÇé¿öÏ£¬ PR Ó¦¸½´øµÄ²¹¶¡£¬ ¾ÍÖ»ÐèÒªÐÞ¸ÄÓ°Ïìµ½µÄ port µÄ Makefile£¬ ÒÔ±ãÔÚÆäÖÐµÄ CATEGORIES ÖмÓÈëеķÖÀàÁË¡£ ÈçºÎÌáÒé¶Ô·ÖÀà½øÐÐÖØÐÂ×éÖ¯ ÓÐЩʱºò»áÓÐһЩÈËÌáÒéÖØÐ½«·ÖÀà×é֯Ϊ 2-²ã »òijÖÖ»ùÓڹؼü×ֵĽṹ¡£ ĿǰΪֹ£¬ »¹Ã»ÓнøÐÐÈκÎÏà¹ØµÄ¸Ä±ä£¬ ÒòΪ¾¡¹ÜÕâЩÐ޸ıȽÏÈÝÒ×Íê³É£¬ µ«ÐÞ¸ÄÕû¸ö Ports Collection ËùÐèÒª½øÐеŤ×÷£¬ ÖÁÉÙÒ²ÊÇÁîÈËÉúηµÄ¡£ ÔÚ·¢±íÄúµÄ¹Ûµã֮ǰ£¬ ÇëÔĶÁÔÚÓʼþÁÐ±í´æµµÖÐÀúÊ·ÉÏËù½øÐйýµÄÌáÒ飻 ´ËÍ⣬ ÄúÒ²»á±»ÒªÇóÌṩһ¸ö¿ÉÓõÄÔ­ÐΡ£ Ô´Âë°üÎļþ ÔÚ Makefile Öеĵڶþ²¿·ÖÊÇÃèÊöÓÃÓÚÁª±à port Ëù±ØÐèÏÂÔØµÄÎļþ£¬ ÒÔ¼°µ½Ê²Ã´µØ·½È¥ÏÂÔØËüÃÇ¡£ <makevar>DISTVERSION/DISTNAME</makevar> (Ô´Âë°ü°æ±¾ºÅ/Ãû³Æ) DISTNAME ÊÇ×÷Õ߳ƺôÄúËù port Èí¼þµÄÃû×Ö¡£ DISTNAME µÄĬÈÏÖµÊÇ ${PORTNAME}-${PORTVERSION}£¬ Òò´ËÖ»ÓÐÔÚÐèҪʱ²ÅÓ¦ÊÖ¹¤Ö¸¶¨¡£ DISTNAME Ö»ÔÚÁ½¸öµØ·½Óõ½¡£ µÚÒ»´¦ÊÇÔ´Âë°üÎļþÁбí (DISTFILES)£¬ ÆäĬÈÏÖµÊÇ ${DISTNAME}${EXTRACT_SUFX}¡£ µÚ¶þ´¦ÊÇÔ´Âë°üÓ¦±»Õ¹¿ªµ½µÄĿ¼Ãû£¬ ¼´ WRKSRC ËùÖ¸¶¨µÄĿ¼£¬ ÆäĬÈÏÖµÊÇ work/${DISTNAME}¡£ ijЩÈí¼þ×÷Õß·¢²¼Ô´Âë°üµÄʱºò²¢²»²ÉÈ¡ ${PORTNAME}-${PORTVERSION} ÕâÑùµÄģʽ£¬ Õâ¿ÉÒÔͨ¹ýÉèÖà DISTVERSION À´×Ô¶¯´¦Àí¡£ PORTVERSION ºÍ DISTNAME »á×Ô¶¯µØÕ¹¿ª£¬ µ±È»£¬ Ò²¿ÉÒԸĵôËü¡£ ÏÂ±í¸ø³öÁËһЩÀý×Ó£º DISTVERSION PORTVERSION 0.7.1d 0.7.1.d 10Alpha3 10.a3 3Beta7-pre2 3.b7.p2 8:f_17 8f.17 PKGNAMEPREFIX ºÍ PKGNAMESUFFIX ²¢²»Ó°Ïì DISTNAME¡£ ´ËÍ⻹ӦעÒâ WRKSRC µÈÓÚ work/${PORTNAME}-${PORTVERSION}£¬ ¶øÔ´´úÂëµÄѹËõ°üÔò¿ÉÄÜÊÇ ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX} ÒÔÍâµÄÆäËüÃû×Ö¡£ Ò»°ãÇé¿öÏÂÓ¦¸Ã±£³Ö DISTNAME ²»±ä — ¸üºÃµÄ·½·¨ÊǶ¨Òå DISTFILES ¶ø²»ÊÇͬʱÉèÖà DISTNAME ºÍ WRKSRC (¿ÉÄÜ»¹ÓÐ EXTRACT_SUFX)¡£ <makevar>MASTER_SITES</makevar> (Ö÷Á÷ÏÂÔØÕ¾µã) ¼Ç¼ FTP/HTTP-URL Ö¸Ïò MASTER_SITES ÖÐԭʼѹËõµµµÄĿ¼²¿·Ö¡£ ²»ÒªÍüÁ˽áβµÄбÏß (/)£¡ make ºê½«³¢ÊÔʹÓà FETCH À´×¥È¡ËùÖ¸¶¨µÄÔ´Âë°üÎļþ£¬ Èç¹ûÎÞ·¨ÔÚ±¾µØÏµÍ³ÖÐÕÒµ½ÕâЩÎļþµÄ»°¡£ ½¨ÒéÄúÖ¸¶¨¶à¸ö¾µÏñÕ¾µã£¬ ×îºÃÊÇÔÚ²»Í¬µÄ´óÖÞÉϵġ£ ÕâÑù½«ÓÐЧµØ·ÀÖ¹ÓÉÓÚ´ó·¶Î§ÍøÂçÎÊÌâËùµ¼ÖÂÎÞ·¨ÏÂÔØµÄÎÊÌâ¡£ ÎÒÃÇÉõÖÁ´òËãÔö¼Ó×Ô¶¯¼ì²â¾àÀë×î½üµÄÕ¾µã²¢´ÓÄÇÀïÏÂÔØµÄ¹¦ÄÜ£» ʹÓöà¸öÕ¾µãÊÇÕâÑù×öµÄÖØÒªÒ»²½¡£ Èç¹ûԭʼµÄÔ´Âë°ü¿ÉÒԴӱȽÏÁ÷ÐеÄÈí¼þÏÂÔØÕ¾µã£¬ ÀýÈç SourceForge¡¢ GNU »òÊÇ Perl CPAN µÈµÈÀ´»ñµÃ£¬ Äú¿ÉÄÜ»áÏ£ÍûʹÓÃÀàËÆ MASTER_SITE_* ÕâÑùµÄËõдÀ´±íʾËüÃÇ (ÀýÈç MASTER_SITE_SOURCEFORGE¡¢ MASTER_SITE_GNU ÒÔ¼° MASTER_SITE_PERL_CPAN)¡£ Ö»Ð轫 MASTER_SITES ÉèΪÕâЩ±äÁ¿£¬ ²¢Ê¹Óà MASTER_SITE_SUBDIR À´Ö¸¶¨Â·¾¶¾Í¿ÉÒÔÁË¡£ ÏÂÃæÊÇÒ»¸öÀý×Ó£º MASTER_SITES= ${MASTER_SITE_GNU} MASTER_SITE_SUBDIR= make ´ËÍ⣬ Äú»¹¿ÉÒÔÓøüΪ¼òÂԵĸñʽ£º MASTER_SITES= GNU/make ÕâЩ±äÁ¿ÊÇÔÚ /usr/ports/Mk/bsd.sites.mk Öж¨ÒåµÄ¡£ ÐÂÏîÄ¿»áËæÊ±Ôö¼Ó£¬ Òò´ËÔÚÄúÌá½» port ֮ǰ£¬ Ó¦ÏÈ¿´Ò»¿´Õâ¸öÎļþµÄ×îа汾¡£ Õë¶Ô³£ÓÃÈí¼þÏÂÔØÕ¾µÄÐí¶à °µºÚħ·¨ ºê£¬ »¹Äܹ»×Ô¶¯ÅжÏĿ¼µÄ½á¹¹¡£ ¶ÔÓÚÕâЩվµã£¬ ֻҪʹÓÃÓëÖ®¶ÔÓ¦µÄËõд£¬ ϵͳ±ã»á×Ô¶¯ÎªÄúÉú³ÉÏà¹ØµÄ×ÓĿ¼ÅäÖᣠMASTER_SITES= SF Èç¹ûϵͳ²Â²âµÄ·¾¶²»¶Ô£¬ Ôò¿ÉÒÔʹÓÃÏÂÃæÕâÑùµÄÅäÖÃÀ´Ìæ»»¡£ MASTER_SITES= SF/stardict/WyabdcRealPeopleTTS/${PORTVERSION} ³£ÓõÄħÊõ <makevar>MASTER_SITES</makevar> ºê ºê ×Ô¶¯²Â²âµÄ×ÓĿ¼ APACHE_JAKARTA /dist/jakarta/${PORTNAME:S,-,,/,}/source BERLIOS /${PORTNAME:L} CHEESESHOP /packages/source/source/${DISTNAME:C/(.).*/\1/}/${DISTNAME:C/(.*)-[0-9].*/\1/} DEBIAN /debian/pool/main/${PORTNAME:C/^((lib)?.).*$/\1/}/${PORTNAME} GCC /pub/gcc/releases/${DISTNAME} GNOME /pub/GNOME/sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/} GNU /gnu/${PORTNAME} MOZDEV /pub/mozdev/${PORTNAME:L} PERL_CPAN /pub/CPAN/modules/by-module/${PORTNAME:C/-.*//} PYTHON /ftp/python/${PYTHON_PORTVERSION:C/rc[0-9]//} RUBYFORGE /${PORTNAME:L} SAVANNAH /${PORTNAME:L} SF /project/${PORTNAME:L}/${PORTNAME:L}/${PORTVERSION}
<makevar>EXTRACT_SUFX</makevar> (ѹËõ°üËùÓõÄÀ©Õ¹Ãû) Èç¹ûÄúÓÐÒ»¸öÔ´Âë°üÎļþ£¬ ¶øËüʹÓÃÁËijÖÖ¹ÖÒìµÄÀ©Õ¹ÃûÀ´±í´ïѹËõ·½·¨£¬ Ó¦ÉèÖà EXTRACT_SUFX¡£ ÀýÈ磬 Èç¹ûÔ´Âë°üÎļþµÄÃû×ÖÊÇ foo.tgz ¶ø·Ç¸üΪһ°ãµÄ foo.tar.gz£¬ ÄúӦдÉÏ£º DISTNAME= foo EXTRACT_SUFX= .tgz USE_BZIP2 ºÍ USE_ZIP ±äÁ¿»á×Ô¶¯¸ù¾ÝÐèÒª½« EXTRACT_SUFX ÉèÖÃΪ .tar.bz2 »ò .zip¡£ Èç¹ûÕâÁ½¸ö¶¼Ã»ÉèÖ㬠Ôò EXTRACT_SUFX µÄ ĬÈÏÖµ½«ÊÇ .tar.gz¡£ ÈκÎʱºò¶¼²»ÐèҪͬʱÉèÖà EXTRACT_SUFX ºÍ DISTFILES. <makevar>DISTFILES</makevar> (È«²¿Ô´´úÂë°ü) ÓÐЩʱºòËùÏÂÔØµÄÎļþÃû×ÖºÍ port µÄÃû×ÖûÓÐÈκÎÁªÏµ¡£ ÀýÈ磬 ¿ÉÄÜÊÇ source.tar.gz£¬ »òÕßÓë´ËÀàËÆµÄÆäËüÃû×Ö¡£ Ò²ÓÐһЩÆäËüµÄÓ¦ÓÃÈí¼þ£¬ ËüÃǵÄÔ´´úÂë¿ÉÄܱ»´æ·Åµ½Á˲»Í¬µÄѹËõ°üÖУ¬ ¶øÇÒÈ«¶¼ÐèÒªÏÂÔØ¡£ Èç¹ûÓöµ½ÕâÖÖÇé¿ö£¬ ¿ÉÒÔ½« DISTFILES ÉèÖÃΪÒÔ¿Õ¸ñ·Ö¸ôµÄÒ»×éÐèÒªÏÂÔØµÄÎļþÁÐ±í¡£ DISTFILES= source1.tar.gz source2.tar.gz Èç¹ûûÓÐÓèÒÔÃ÷È·µÄÉèÖ㬠DISTFILES µÄĬÈÏÖµ½«ÊÇ ${DISTNAME}${EXTRACT_SUFX}¡£ <makevar>EXTRACT_ONLY</makevar> (Ö»½âѹËõ²¿·ÖÔ´Îļþ) Èç¹ûÖ»ÓÐÒ»²¿·Ö DISTFILES ÐèÒª½âѹËõ — ÀýÈ磬 ÆäÖеÄÒ»¸öÊÇÔ´´úÂ룬 ¶øÆäËüÔòÊÇδѹËõµÄÎĵµ — ´ËʱӦ°ÑÄÇЩÐèÒª½âѹËõµÄÎļþ¼Óµ½ EXTRACT_ONLY ÖС£ DISTFILES= source.tar.gz manual.html EXTRACT_ONLY= source.tar.gz Èç¹û DISTFILES ÖРûÓÐ ÐèÒª½âѹËõµÄÎļþ£¬ ÔòÓ¦½« EXTRACT_ONLY ÉèΪ¿Õ´®¡£ EXTRACT_ONLY= <makevar>PATCHFILES</makevar> (ͨ¹ýÏÂÔØµÃµ½µÄ²¹¶¡Îļþ) Èç¹ûÄúµÄ port ÐèÒªÀ´×Ô FTP »ò HTTP µÄһЩ¶îÍâµÄ²¹¶¡£¬ Ó¦½« PATCHFILES ÉèÖÃΪÕâЩÎļþµÄÃû×Ö£¬ ²¢½« PATCH_SITES Ö¸Ïò°üº¬ÕâЩÎļþµÄĿ¼µÄ URL (¸ñʽÓë MASTER_SITES Ïàͬ)¡£ Èç¹ûÕâЩ²¹¶¡£¬ ÓÉÓÚ°üº¬ÁËÆäËüµÄĿ¼Ãû£¬ ¶øµ¼ÖÂËüÃDz»ÊÇÏà¶ÔÓÚÔ´´úÂëĿ¼µÄ¶¥¼¶Ä¿Â¼ (Ò²¾ÍÊÇ WRKSRC) µÄ»°£¬ ¾ÍÐèÒªÏàÓ¦µØÉèÖà PATCH_DIST_STRIP ÁË¡£ ÀýÈ磬 Èç¹û²¹¶¡ÖÐËùÓеÄĿ¼ÃûÇ°Ãæ¶¼ÓÐÒ»¸ö¶àÓàµÄ foozolix-1.0/£¬ ¾ÍÓ¦ÉèÖà PATCH_DIST_STRIP=-p1¡£ ²»ÐèÒªµ£ÐIJ¹¶¡Îļþ±¾ÉíÊÇ·ñÊÇѹËõµÄ£» Èç¹ûÎļþÃûÒÔ .gz or .Z ½á⣬ ϵͳ»á×Ô¶¯½âѹËõ¡£ Èç¹û²¹¶¡ÊÇͬijЩÆäËüÎļþ£¬ ÀýÈçÎĵµ£¬ һͬÒÔ gzip ѹËõµÄ tar ¸ñʽ·¢²¼µÄ£¬ ¾Í²»Äܼòµ¥µØÊ¹Óà PATCHFILES ÁË¡£ ÕâÖÖÇé¿öÏ£¬ ÄúÓ¦½«ÕâЩ²¹¶¡°üµÄÎļþºÍλÖüÓÈëµ½ DISTFILES ºÍ MASTER_SITES ÖС£ È»ºó£¬ Óà EXTRA_PATCHES ±äÁ¿À´Ö¸³öÕâЩÎļþ£¬ ÕâÑù bsd.port.mk ¾Í»á×Ô¶¯µØÎªÄúÓ¦ÓÃÕâЩ²¹¶¡ÁË¡£ ÐèÒªÌØ±ð×¢ÒâµÄÊÇ£¬ ²»Òª ½«²¹¶¡Îļþ¸´ÖƵ½ PATCHDIR Ŀ¼ÖÐ — Õâ¸öĿ¼¿ÉÄÜÊDz»¿ÉдµÄ¡£ ѹËõ°ü»áÒÔͬԴ´úÂëÒ»ÑùµÄ·½Ê½½âѹËõ£¬ Òò´Ë²»ÐèÒª×ÔÐÐÍê³É½âѹËõ²Ù×÷£¬ ²¢¸´ÖƲ¹¶¡Îļþ¡£ Èç¹ûÄúÒ»¶¨ÒªÕâÑù×ö£¬ ¾ÍҪעÒ⣬ ²»ÒªÈýâѹËõ³öÀ´µÄÎļþ¸²¸ÇÏÈǰÒѾ­´æÔÚµÄÎļþ¡£ ´ËÍ⣬ Õâô×ö»¹ÐèÒªÊÖ¹¤Ôö¼ÓÃüÁ ÒÔ±ãÔÚ pre-clean target ÖÐɾ³ýÕâЩ¸´ÖƳöÀ´µÄÎļþ¡£ À´×Ô²»Í¬Õ¾µãµÄ¶à¸öÔ´´úÂë°ü»ò²¹¶¡Îļþ (<literal>MASTER_SITES:n</literal>) (ÕâÒ»½ÚÔÚijÖ̶ֳÈÉÏÓ¦±»ÊÓ×÷ ½ø½×»°Ì⣻ ¸Õ¿ªÊ¼ÔĶÁÕâ·ÝÎĵµµÄ¶ÁÕß¿ÉÄÜ»áÏ£ÍûÏÈÌø¹ýÕâÒ»²¿·Ö)¡£ ÕâÒ»½ÚÌṩÁ˱»³Æ×÷ MASTER_SITES:n ºÍ MASTER_SITES_NN µÄÏÂÔØ¿ØÖÆ»úÖÆ¡£ ÕâÀïÎÒÃǰÑËüÃdzÆÎª MASTER_SITES:n¡£ Ê×Ïȸø³öһЩ±³¾°¡£ OpenBSD ÔÚÆä DISTFILES ºÍ PATCHFILES ±äÁ¿ÖÐÌṩÁËÒ»¸öºÜ°ôµÄ¹¦ÄÜ£¬ ¼´£¬ ÔÊÐíÕâЩÎļþºÍ²¹¶¡ÓµÓÐ :n ºó׺£¬ ÆäÖÐ n ¿ÉÒÔʹÓà [0-9]£¬ À´±í´ï×é¡£ ÀýÈ磺 DISTFILES= alpha:0 beta:1 ÔÚ OpenBSD ÖУ¬ Ô´Âë°üÎļþ alpha Ó¦±»¹ØÁªµ½±äÁ¿ MASTER_SITES0 ¶ø²»Êǹ«¹²µÄ MASTER_SITES ±äÁ¿ÉÏ£» ¶ø beta ÔòÓ¦¹ØÁªµ½ MASTER_SITES1 ÉÏ¡£ ÕâÊÇÒ»¸öºÜÓÐÒâ˼µÄ¹¦ÄÜ£¬ Ëü¿ÉÒÔ±ÜÃâÎÞÐÝÖ¹µØËÑË÷ÕýÈ·µÄÏÂÔØÕ¾µãµÄ¹ý³Ì¡£ ÏëÏó DISTFILES ÖÐÖ¸¶¨ÁË 2 ¸öÎļþ£¬ ¶ø MASTER_SITES °üº¬ÁË 20 ¸öÕ¾µãµÄÇéÐΣ¬ ÕâÆäÖÐÐí¶àÕ¾µãÂýÈçÎÏÅ££¬ ¶ø beta ¿ÉÒÔÔÚ MASTER_SITES µÄËùÓÐÕ¾µãÕÒµ½£¬ ¶ø alpha Ö»ÄÜÔÚµÚ 20 ¸öÉÏÃæÕÒµ½¡£ Èç¹û¼à»¤ÈËÁ˽âÕâÒ»µã£¬ ÄÇô¼ì²éËùÓеÄÕ¾µãÎÞÒÉÊÇÔÚÀË·Ñʱ¼ä£¬ ²»ÊÇÂ𣿠ÕâÏÔÈ»²»ÊÇ¿ªÊ¼Ò»¸öÓä¿ìÖÜÄ©µÄºÃ°ì·¨£¡ ÏÖÔÚÄúÓÐÁËÒ»¸ö¸ÐÐÔµÄÈÏʶÁË£¬ ÏëÏóһϠDISTFILES ºÍ¸ü¶àµÄ MASTER_SITES¡£ ÏÔÈ»£¬ ÎÒÃÇµÄ distfiles µ÷²éÔ±ÏÈÉú »á¸ÐлÄú¼õÉÙËûÀË·ÑÔڵȴýÏÂÔØÉÏËùºÄ·ÑµÄʱ¼ä¡£ ÏÂÒ»½ÚÖУ¬ ½«°´ÕÕ FreeBSD ¶ÔÉÏÊöÏë·¨µÄʵÏÖÀ´¼ÓÒÔ²ûÊÍ¡£ ÎÒÃÇ¶Ô OpenBSD ËùÌá³öµÄ¸ÅÄî½øÐÐÁËһЩ¸Ä½ø¡£ ¼ò»¯ÐÅÏ¢ ÕâÒ»½Ú½«½éÉÜÈçºÎѸËٵضԴӲ»Í¬µÄÕ¾µãÒÔ¼°×ÓĿ¼ÏÂÔØ¶à¸öÔ´Âë°üºÍ²¹¶¡½øÐо«È·µÄ¿ØÖÆ¡£ ÕâÀ ÎÒÃǽ«ÃèÊö MASTER_SITES:n µÄÒ»ÖÖ¼ò»¯Ó÷¨¡£ ¶ÔÓÚ¶àÊýÇé¿ö¶øÑÔÕâÑù×öÊÇ×ã¹»µÄ¡£ È»¶ø£¬ Èç¹ûÄúÐèÒª¸ü¶àÐÅÏ¢£¬ »¹ÐèÒª²Î¿¼ÏÂÃæµÄ¼¸½Ú¡£ һЩӦÓóÌÐòÐèÒª´Ó¶à¸öÕ¾µãÏÂÔØ²»Í¬µÄÔ´Âë°ü¡£ ÀýÈ磬 Ghostscript °üÀ¨Á˳ÌÐòºËÐı¾Éí£¬ ÒÔ¼°´óÁ¿µÄÇý¶¯Îļþ£¬ ÒÔ¼°ÔòÈ¡¾öÓÚÓû§µÄ´òÓ¡»úÆ·ÅÆºÍÐͺŵÄÇý¶¯³ÌÐò¡£ ijЩÇý¶¯ÎļþÒѾ­Ëæ³ÌÐòºËÐĸ½´ø£¬ µ«Ò²ÓкܶàÐèÒª´ÓÆäËüÕ¾µãÏÂÔØ¡£ ΪÁËÊÊÓ¦ÕâÖÖÐèÒª£¬ ÿһ¸ö DISTFILES ÏîÓ¦¸úËæÒ»¸öðºÅ£¬ ÒÔ¼°Ò»¸ö ±êÇ©Ãû¡£ ÔÚ MASTER_SITES µÄÿ¸öÕ¾µãÒ²Ó¦¸úËæÃ°ºÅºÍ±êÇ©Ãû£¬ ÒÔ±ãÖ¸¶¨´ÓÄĸöÍøÕ¾ÏÂÔØÔ´Âë°üÎļþ¡£ ÀýÈ磬 ¿¼ÂÇÒ»¸ö½«Ô´´úÂë°ü·ÖΪÁ½²¿·Ö£¬ ¼´ source1.tar.gz ºÍ source2.tar.gz µÄÈí¼þ£¬ Ëü±ØÐë´ÓÁ½¸ö²»Í¬µÄÕ¾µãÏÂÔØ¡£ port µÄ Makefile Ó¦°üÀ¨ÀàËÆ µÄÅäÖᣠ¼ò»¯µÄ <literal>MASTER_SITES:n</literal> Ó÷¨£¬ ÿ¸öÎļþÀ´×ÔÒ»¸öÕ¾µã MASTER_SITES= ftp://ftp.example1.com/:source1 \ ftp://ftp.example2.com/:source2 DISTFILES= source1.tar.gz:source1 \ source2.tar.gz:source2 ¶à¸öÔ´Âë°ü¿ÉÒÔʹÓÃͬһ¸ö±êÇ©¡£ ¼ÌÐøÇ°ÃæµÄÀý×Ó£¬ ¼Ù¶¨Ôö¼ÓÁ˵ÚÈý¸öÔ´Âë°ü£¬ source3.tar.gz£¬ Ó¦´Ó ftp.example2.com ÏÂÔØ¡£ Makefile µÄÕⲿ·ÖӦд³É µÄÑù×Ó¡£ ¼ò»¯µÄ <literal>MASTER_SITES:n</literal> Ó÷¨£¬ ÆäÖÐͬһ¸öÕ¾µãÉÏÌṩÁ˲»Ö¹Ò»¸öÎļþ MASTER_SITES= ftp://ftp.example1.com/:source1 \ ftp://ftp.example2.com/:source2 DISTFILES= source1.tar.gz:source1 \ source2.tar.gz:source2 \ source3.tar.gz:source2 ÉîÈë½éÉÜ Ç°ÃæµÄÀý×ÓÎÞ·¨Âú×ãÄúµÄÐèÇó£¿ ÕâÒ»½Ú£¬ ÎÒÃǽ«Ïêϸ½éÉÜ MASTER_SITES:n µÄ¾«Ï¸¿ØÖÆÊÇÈçºÎ¹¤×÷µÄ£¬ ÒÔ¼°ÈçºÎÐÞ¸ÄÄúµÄ port À´Ê¹ÓÃËüÃÇ¡£ ÔªËØ¿ÉÒÔ°üº¬ :n ÕâÑùµÄºó׺£¬ ÆäÖÐ n ÊÇ [^:,]+£¬ ¸ÅÄîÉϼ´ n ¿ÉÒÔÈ¡ÈÎÒâÊý×Ö»ò×Öĸ£¬ µ«ÎÒÃÇĿǰ½«ÆäÏÞ¶¨Îª [a-zA-Z_][0-9a-zA-Z_]+¡£ ´ËÍ⣬ ×Ö·û´®Æ¥Åäʱ¶Ô´óСдÊÇÃô¸ÐµÄ£» »»ÑÔÖ®£¬ n Óë N ²»Í¬¡£ µ«ÊÇ£¬ ÓÉÓÚ±í´ïÌØÊâµÄÒâÒ壬 ÏÂÁе¥´Ê²»ÄÜÓÃÓÚºó׺£º default¡¢ all ºÍ ALL (ËüÃÇ»áÔÚ ÖнéÉܵIJ¿·ÖÓõ½)¡£ ´ËÍ⣬ DEFAULT ÊÇÒ»¸öÓÐÌØÊâÓÃ;µÄ´Ê (Çë²Î¼û )¡£ ºó׺Ϊ :n µÄÏîÄ¿ÊôÓÚ n ×飬 ¶ø :m ÊôÓÚ m ×飬 ÒÀ´ËÀàÍÆ¡£ ûÓкó׺µÄÔªËØÊÇÎÞ×éµÄ£¬ Ò²¾ÍÊÇËüÃǶ¼ÊôÓÚÄǸöÌØÊâµÄ DEFAULT ×é¡£ ¸øÔªËؼÓÈë DEFAULT ºó׺ͨ³£ÊǶàÓàµÄ£¬ ³ý·ÇÄúÓÐͬʱÊôÓÚ DEFAULT ºÍÆäËü×éµÄÔªËØ (²Î¼û )¡£ ÏÂÃæµÄÀý×ÓÊǵȼ۵ģ¬ µ«Í¨³£Ó¦ÊÊÓõÚÒ»¸ö£º MASTER_SITES= alpha MASTER_SITES= alpha:DEFAULT ×éÖ®¼ä²»ÊÇ»¥³âµÄ£¬ Í¬Ò»ÔªËØ¿ÉÒÔͬʱÁ¥ÊôÓÚ¶à¸ö×飬 ¶ø×éÔò¿ÉÒÔΪ¿Õ»òÕßÓÐÈÎÒâ¶à¸öÔªËØ¡£ ͬһ×éÖеÄÖØ¸´ÔªËØ£¬ ²¢²»»á±»×Ô¶¯ÏûÈ¥¡£ Èç¹ûÏ£ÍûÍ¬Ò»ÔªËØÍ¬Ê±ÊôÓÚ¶à¸ö×飬 ¿ÉÒÔÓöººÅ (,) ·Ö¿ª¡£ ÕâÖÖ°ì·¨¿ÉÒÔ±ÜÃâ½öΪָ¶¨²»Í¬µÄ×é¶ø¶à´ÎÖØ¸´Í¬Ò»ÔªËØ¡£ ÀýÈç :m,n,o ±íʾÕâ¸öÔªËØÍ¬Ê±ÊôÓÚ m¡¢ n ºÍ o ÕâÈý×é¡£ ÏÂÃæÕâЩд·¨¶¼Êǵȼ۵ģ¬ µ«Ö»ÍƼöʹÓÃ×îºóÒ»ÖÖ£º MASTER_SITES= alpha alpha:SOME_SITE MASTER_SITES= alpha:DEFAULT alpha:SOME_SITE MASTER_SITES= alpha:SOME_SITE,DEFAULT MASTER_SITES= alpha:DEFAULT,SOME_SITE ͬһ×éÖеÄËùÓÐÕ¾µã£¬ »á¸ù¾Ý MASTER_SORT_AWK ÅÅÐò¡£ ÔÚ MASTER_SITES ºÍ PATCH_SITES ÖеÄ×éÒ²»á½øÐÐÅÅÐò¡£ ÔÚ MASTER_SITES¡¢ PATCH_SITES¡¢ MASTER_SITE_SUBDIR¡¢ PATCH_SITE_SUBDIR¡¢ DISTFILES£¬ ÒÔ¼° PATCHFILES ÖУ¬ ¶¼¿ÉÒÔʹÓÃ×飬 ÆäÓ﷨Ϊ£º ËùÓÐ MASTER_SITES¡¢ PATCH_SITES¡¢ MASTER_SITE_SUBDIR ÒÔ¼° PATCH_SITE_SUBDIR µÄÔªËØ£¬ ¶¼±ØÐëÒÔ / ×Ö·û½áβ¡£ Èç¹ûÓÐÔªËØÊôÓÚijЩ×飬 Ôò×éºó׺ :n ±ØÐë³öÏÖÔÚÖÕ½á·û / Ö®ºó¡£ MASTER_SITES:n »úÖÆÒÀÀµÓÚ / µÄ´æÔÚ£¬ ÒÔ±ÜÃâÔÚ :n ÊÇÔªËØÒ»²¿·Ö£¬ ¶ø :n ͬʱÓÖ±íʾ×é n ʱ·¢Éú»ìÏý¡£ ΪÁ˼æÈÝÐԵĿ¼ÂÇ£¬ ÒòΪ֮ǰ / ÖÕ½á·ûÔÚ MASTER_SITE_SUBDIR ºÍ PATCH_SITE_SUBDIR ÔªËØÖж¼²»ÊDZØÐèµÄ£¬ Èç¹ûºó׺Ëù½ô¸úµÄ×Ö·û²»ÊÇ /£¬ Ôò :n ½«±»ÈÏΪÊÇÔªËØµÄÒ»²¿·Ö£¬ ¶ø²»±»µ±×÷×éºó׺£¬ ¼´Ê¹ÔªËØÓµÓÐ :n ºó׺¡£ Çë²Î¼û ºÍ ÒÔÁË½â½øÒ»²½µÄϸ½Ú¡£ ÔÚ <makevar>MASTER_SITE_SUBDIR</makevar> ÖÐ <literal>MASTER_SITES:n</literal> µÄÏêϸÓ÷¨ MASTER_SITE_SUBDIR= old:n new/:NEW ×é DEFAULT ÖеÄĿ¼ -> old:n ×é NEW ÖеÄĿ¼ -> new Óõ½¶ººÅ·Ö¸ô·û¡¢ ¶à¸öÎļþ£¬ ¶à¸öÕ¾µãºÍ ²»Í¬×ÓĿ¼µÄ <literal>MASTER_SITES:n</literal> ÏêϸÓ÷¨ MASTER_SITES= http://site1/%SUBDIR%/ http://site2/:DEFAULT \ http://site3/:group3 http://site4/:group4 \ http://site5/:group5 http://site6/:group6 \ http://site7/:DEFAULT,group6 \ http://site8/%SUBDIR%/:group6,group7 \ http://site9/:group8 DISTFILES= file1 file2:DEFAULT file3:group3 \ file4:group4,group5,group6 file5:grouping \ file6:group7 MASTER_SITE_SUBDIR= directory-trial:1 directory-n/:groupn \ directory-one/:group6,DEFAULT \ directory ǰÊöµÄÀý×ӵĽá¹ûÊÇÏÂÊöµÄ¶ÔÓÚÏÂÔØÐÐΪµÄ¾«Ï¸¿ØÖÆ¡£ Õ¾µãµÄÁÐ±í°´ÕÕʹÓõÄ˳Ðò¸ø³ö¡£ file1 ½«´Ó MASTER_SITE_OVERRIDE http://site1/directory-trial:1/ http://site1/directory-one/ http://site1/directory/ http://site2/ http://site7/ MASTER_SITE_BACKUP ÏÂÔØ¡£ file2 ½«ºÍ file1 ÒÔͬÑùµÄ·½Ê½ÏÂÔØ£¬ ÒòΪËüÃÇÊôÓÚͬһ×é MASTER_SITE_OVERRIDE http://site1/directory-trial:1/ http://site1/directory-one/ http://site1/directory/ http://site2/ http://site7/ MASTER_SITE_BACKUP file3 ½«´Ó MASTER_SITE_OVERRIDE http://site3/ MASTER_SITE_BACKUP ÏÂÔØ¡£ file4 ½«´Ó MASTER_SITE_OVERRIDE http://site4/ http://site5/ http://site6/ http://site7/ http://site8/directory-one/ MASTER_SITE_BACKUP ÏÂÔØ¡£ file5 ½«´Ó MASTER_SITE_OVERRIDE MASTER_SITE_BACKUP ÏÂÔØ¡£ file6 ½«´Ó MASTER_SITE_OVERRIDE http://site8/ MASTER_SITE_BACKUP ÏÂÔØ¡£ ÈçºÎ¶ÔÀ´×Ô bsd.sites.mk µÄÌØÊâ±äÁ¿£¬ ÀýÈç MASTER_SITE_SOURCEFORGE ½øÐзÖ×飿 ²Î¼û ¡£ <makevar>MASTER_SITE_SOURCEFORGE</makevar> ÖÐ <literal>MASTER_SITES:n</literal> µÄÏêϸÓ÷¨ MASTER_SITES= http://site1/ ${MASTER_SITE_SOURCEFORGE:S/$/:sourceforge,TEST/} DISTFILES= something.tar.gz:sourceforge something.tar.gz ½«´ÓËùÓÐ MASTER_SITE_SOURCEFORGE ÖеÄÕ¾µãÏÂÔØ¡£ ÈçºÎÓë PATCH* ±äÁ¿Á¬Óã¿ Ç°ÃæµÄÀý×Ó½éÉܵͼÊÇ MASTER* ±äÁ¿£¬ µ«¶ÔÓÚ PATCH* Ò²ÊÇÍêȫһÑùµÄ£¬ ËüÃÇÔÚ ÓÐËù½éÉÜ¡£ ¼ò»¯µÄ <makevar>PATCH_SITES</makevar> ÖÐµÄ <literal>MASTER_SITES:n</literal> Ó÷¨¡£ PATCH_SITES= http://site1/ http://site2/:test PATCHFILES= patch1:test »á¸Ä±ä ports µÄÄÄЩÐÐΪ£¿ ÄÄЩ²»»á£¿ ËùÓÐÆÕͨµÄ ports µÄÐÐΪ¶¼»á±£³Ö²»±ä¡£ MASTER_SITES:n ¹¦ÄܵĴúÂ룬 Ö»ÓÐÔÚÄ³Ð©ÔªËØ°üº¬ÁËǰÊö£¬ ÌØ±ðÊÇ ÖÐËùÌá¼°Óï·¨µÄ :n ºó׺ʱ£¬ ²Å»áÆôÓᣠ²»ÊÜÓ°ÏìµÄ port target£º checksum¡¢ makesum¡¢ patch¡¢ configure¡¢ build£¬ µÈµÈ¡£ ÏÔÈ»£¬ do-fetch¡¢ fetch-list¡¢ master-sites ºÍ patch-sites µÄÐÐΪ»á·¢Éú±ä»¯¡£ do-fetch£º »á°´ÕÕеġ¢ ´øÓÐ×éºó׺µÄ DISTFILES ºÍ PATCHFILES ÔÚ MASTER_SITES ºÍ PATCH_SITES ËùÆ¥ÅäµÄ×éÔªËØ£¬ ÒÔ¼° MASTER_SITE_SUBDIR ºÍ PATCH_SITE_SUBDIR À´½øÐС£ Çë²Î¼û ¡£ fetch-list£º ºÍ¾ÉʽµÄ fetch-list ÀàËÆ£¬ µ«ÒÔͬ do-fetch ÏàËÆµÄ·½Ê½´¦Àí×é¡£ master-sites ºÍ patch-sites£º (Óë¾É°æ±¾²»¼æÈÝ) ½ö·µ»Ø×é DEFAULT µÄÔªËØ£» ÊÂʵÉÏ£¬ ËüÃÇ»áÖ´ÐÐ master-sites-default ºÍ patch-sites-default ÕâÁ½¸ö target¡£ ¸ü½øÒ»²½£¬ ʹÓà master-sites-all »ò patch-sites-all ÕâÁ½¸ö target Ö®Ò»£¬ Òª±ÈÖ±½Ó¼ì²é MASTER_SITES »ò PATCH_SITES ¸üºÃ¡£ ´ËÍ⣬ δÀ´°æ±¾¿ÉÄܲ»ÔÙ±£Ö¤Ö±½Ó¼ì²éÄܹ»ÕýÈ·¹¤×÷¡£ Çë²Î¼û ÒÔÁË½â¹ØÓÚÕâЩРtarget µÄ¸ü¶à¼¼Êõϸ½Ú¡£ port ÖеÄРtarget һϵÁÐ master-sites-n ºÍ patch-sites-n target ¿ÉÒÔ·Ö±ðÓÃÀ´Áгö MASTER_SITES ºÍ PATCH_SITES ÖÐµÄ n ×éµÄÄÚÈÝ¡£ ÀýÈ磬 master-sites-DEFAULT ºÍ patch-sites-DEFAULT ¶¼»á·µ»Ø DEFAULT ×éµÄÄÚÈÝ£¬ ¶ø master-sites-test ºÍ patch-sites-test Ôò·µ»Ø test ×éµÄÄÚÈÝ£¬ µÈµÈ¡£ ÐÂÔöµÄ master-sites-all ºÍ patch-sites-all ÕâÁ½¸ö target£¬ »áÍê³ÉÏÈǰ master-sites ºÍ patch-sites Ëù×öµÄ¹¤×÷¡£ ËüÃǻ᷵»ØËùÓÐ×éµÄÔªËØ£¬ ¾ÍÏñÕâÐ©ÔªËØ¶¼ÊôÓÚͬһ×éÒ»Ñù£¬ ²¢ÇÒ»áÁгöÓë MASTER_SITE_BACKUP »ò MASTER_SITE_OVERRIDE ÖÐÔÚ DISTFILES »ò PATCHFILES ÖÐÖ¸¶¨µÄͬÑù¶à¸ö£» ·Ö±ð¶ÔÓÚ master-sites-all ºÍ patch-sites-all¡£ <makevar>DIST_SUBDIR</makevar> (¶ÀÁ¢µÄÔ´Âë°ü×ÓĿ¼) ±ÜÃâÈÃÄúµÄ port ʹ /usr/ports/distfiles ÏÝÈë»ìÂÒ¡£ Èç¹ûÄúµÄ port ÐèÒªÏÂÔØºÜ¶àÎļþ£¬ »òÕßÐèÒªÏÂÔØ¿ÉÄÜÓëÆäËü port µÄÔ´ÎļþÃû³åÍ»µÄÎļþ (ÀýÈ磬 Makefile)£¬ ÔòÓ¦½« DIST_SUBDIR ÉèÖÃΪ port µÄÃû×Ö (ͨ³£¿ÉÒÔÓà ${PORTNAME} »ò ${PKGNAMEPREFIX}${PORTNAME})¡£ Õ⽫°Ñ DISTDIR ´ÓĬÈ쵀 /usr/ports/distfiles ¸ÄΪ /usr/ports/distfiles/DIST_SUBDIR£¬ ²¢½«ÓëÄúµÄ port ÓйصÄÎļþ·Åµ½ÄǸöĿ¼ÖС£ ´ËÍ⣬ ËüÒ²»áÔÚ±¸·ÝÎļþÖ÷·þÎñÆ÷ ftp.FreeBSD.org ÉϲéÕÒͬһ×ÓĿ¼ÏµÄÎļþ (Ö±½ÓÔÚÄúµÄ Makefile ÖÐÉèÖà DISTDIR Ôò²»»áÓÐÕâÑùµÄЧ¹û£¬ Òò´ËÄúӦʹÓà DIST_SUBDIR¡£) ÕâÒ»ÉèÖò¢²»Ó°ÏìÄúÔÚ Makefile Öж¨ÒåµÄ MASTER_SITES¡£ <makevar>ALWAYS_KEEP_DISTFILES</makevar> (Ò»Ö±±£´æÔ´Âë°ü) Èç¹ûÄúµÄ port ²ÉÓõÄÊÇÔ¤±àÒëµÄ°ü£¬ µ«È´²ÉÓÃÁËijÖÖÒªÇóÔ´´úÂë±ØÐëÓëÔ¤±àÒë°æ±¾Ò»Í¬ÌṩµÄÊÚȨ£¬ ÀýÈç GPL£¬ ÔòӦʹÓà ALWAYS_KEEP_DISTFILES À´¸æËß &os; Áª±à¼¯Èº±£ÁôÒ»·ÝÔÚ DISTFILES ÖÐÎļþµÄ¸±±¾¡£ Ò»°ãÀ´ËµÕâЩ port µÄÓû§²¢²»ÐèÒªÕâЩÎļþ£¬ Òò´Ë£¬ Ö»ÔÚ¶¨ÒåÁË PACKAGE_BUILDING ·ûµÄʱºò£¬ ²Å½«Ô´´úÂë°üÎļþ¼ÓÈë DISTFILES ÊǸöºÃÖ÷Òâ¡£ ÈçºÎʹÓà <makevar>ALWAYS_KEEP_DISTFILES</makevar>¡£ .if defined(PACKAGE_BUILDING) DISTFILES+= foo.tar.gz ALWAYS_KEEP_DISTFILES= yes .endif µ±ÄúÔÚ DISTFILES ¼ÓÈëÆäËüÎļþʱ£¬ ÇëÎñ±ØÈ·±£ÕâЩÎļþÒ²³öÏÖÔÚÁË distinfo ÖС£ ´ËÍ⣬ ÕâЩ¶îÍâµÄÎļþͨ³£Ò²»áÕ¹¿ªµ½ WRKDIR ÖУ¬ ¶ÔÓÚijЩ ports£¬ Õâ¿ÉÄܵ¼ÖÂһЩ²»Ï£ÍûµÄ¸±×÷Ó㬠Òò¶øÐèÒª½øÐÐÌØ±ðµÄ´¦Àí¡£
<makevar>MAINTAINER</makevar> (¼à»¤ÈË) ÇëÔÚ´Ë´¦Ð´ÉÏÄúµÄµç×ÓÓʼþµØÖ·¡£ :-) ÐèҪעÒâÒ»µã£¬ MAINTAINER ±äÁ¿µÄÖµÖ»ÄÜÊÇÒ»¸ö²»°üÀ¨×¢ÊͲ¿·ÖµÄµç×ÓÓʼþµØÖ·£¬ Æä¸ñʽӦΪ user@hostname.domain¡£ Çë²»ÒªÔÚ´Ë´¦Ð´ÈκÎ˵Ã÷ÐÔµÄÎÄ×Ö£¬ ÀýÈçÄúµÄÕæÊµÐÕÃû — Õâ»á¸ø bsd.port.mk ´øÀ´Âé·³¡£ ¼à»¤ÈËÓÐÔðÈα£³Ö port ËæÊ±¸üУ¬ ²¢È·±£ÆäÄܹ»ÕýÈ·µØÔËÐС£ ÏêϸµÄ port ¼à»¤ÈËÖ°Ôð˵Ã÷£¬ Çë²Î¼û port ¼à»¤ÈËÃæÁÙµÄÌôÕ½ Ò»½Ú¡£ ¶ÔÓÚ port µÄÐ޸ģ¬ Ó¦±»·¢¸ø port µÄ¼à»¤È˽øÐи´Éó£¬ ÇÒÔÚ commit ֮ǰÐèÒª»ñµÃÆä¼à»¤È˵ÄͬÒâ¡£ ¼ÙÈçijһ port µÄ¼à»¤ÈËûÓÐÔÚÁ½ÖÜÖ®ÄÚ (²»°üÀ¨Ö÷ÒªµÄ¹«¹²¼ÙÈÕ) ÏìÓ¦À´×ÔÓû§µÄ¸üÐÂÇëÇó£¬ Ôò¿ÉÊÓΪ¼à»¤È˳¬Ê±£¬ ÔÚÕâÖÖÇé¿öÏ¿ÉÒÔÔÚûÓм໤ÈËÃ÷ȷͬÒâµÄÇéÐÎϽøÐиüС£ Èç¹û¼à»¤ÈËÔÚ¶à´ïÈý¸öÔµÄʱ¼äÄÚûÓнøÐÐÈκÎÏìÓ¦£¬ Ôò¿ÉÒÔÈÏΪ¸Ã¼à»¤È˲»´Ç¶ø±ð£¬ ÔÊÐí¶Ô³öÏÖ´ËÀàÎÊÌâµÄ port ½øÐм໤È˱ä¸ü¡£ ¾¡¹ÜÈç´Ë£¬ ¼à»¤ÈËΪ &a.portmgr; »òÕß &a.security-officer; µÄ port ²»ÊÜ´ËÏÞ¡£ ¶Ô¼à»¤ÈËΪÕâЩС×éµÄ port ½øÐÐδ¾­Ðí¿ÉµÄ commit ÊDz»ÔÊÐíµÄ¡£ ÎÒÃDZ£Áô¶Ô¼à»¤ÈËËùÌá½»ÐÞÕý°¸½øÐи͝µÄȨÁ¦£¬ ÒÔ±ãʹÆä¸ü·ûºÏÏÖÐÐµÄ Ports Collection ¹æ·¶£¬ ¶øÎÞÐèÌá½»²¹¶¡µÄÈËÃ÷È·Åú×¼¡£ ´ËÍ⣬ ´ó¹æÄ£µÄ»ù´¡ÐÔÐ޸ģ¬ Ò²¿ÉÄÜʹ port ÔÚûÓеõ½¼à»¤ÈËͬÒâµÄÇéÐÎϽøÐÐÐ޸ġ£ µ«ÕâÀàÐ޸ͼ²»Ó¦Ó°Ïì port ±¾ÉíµÄ¹¦ÄÜ¡£ &a.portmgr; ±£ÁôÒÔÈκÎÔ­ÒòÊջػòÈÆ¹ýÈκÎÈ˼໤ȨµÄȨÁ¦£¬ ¶ø &a.security-officer; Ôò±£ÁôÒÔ°²È«Ô­ÒòÊջػòÈÆ¹ý¼à»¤È¨µÄȨÁ¦¡£ <makevar>COMMENT</makevar> (Ò»¾ä»°ËµÃ÷) ÕâÒ»±äÁ¿ÓÃÓÚÖ¸¶¨ port µÄÒ»¾ä»°ËµÃ÷¡£ Çë Î𽫠package µÄÃû×Ö (»òÈí¼þµÄ°æ±¾) ·ÅÔÚ˵Ã÷ÖС£ Õâһ˵Ã÷µÄµÚÒ»¸ö×ÖĸӦ´óд£¬ ½áβ²»Óþäµã¡£ ÏÂÃæÊÇÒ»¸öÀý×Ó£º COMMENT= A cat chasing a mouse all over the screen Makefile ÖÐµÄ COMMENT ±äÁ¿Ó¦¸Ã½ô½Ó×Å MAINTAINER ±äÁ¿³öÏÖ¡£ ÇëÎñ±Ø½« COMMENT ÕâÐÐÏÞÖÆÔÚ²»³¬¹ý 70 ¸ö×Ö·ûÖ®ÄÚ£¬ ÒòΪÕâÐÐÄÚÈÝ»á³ÉΪ &man.pkg.info.1; ³ÊÏÖ¸øÓû§µÄ port µÄÒ»¾ä»°¼ò½é¡£ ÒÀÀµ¹ØÏµ Ðí¶à ports »áÒÀÀµÆäËü port¡£ ÕâÊǰüÀ¨ &os; ÔÚÄڵĶàÊý Àà-Unix ϵͳµÄºÜ·½±ãµÄ¹¦ÄÜ¡£ ÕâÏÄÜ£¬ ¿ÉÒÔ±ÜÃâÔÚÿ¸ö port »òÔ¤±àÒë°üÖж¼´øÉÏÖØ¸´µÄÒÀÀµµÄ´úÂ룬 ¶ø¿ÉÒÔÒÔÒÀÀµ¹ØÏµµÄ·½Ê½È¥¹²ÏíËüÃÇ¡£ ÓÐÆß¸ö±äÁ¿ÓÃÓÚ°ïÖúÄúÈ·±£ËùÐèµÄÎļþ¶¼´æÔÚÓÚÓû§µÄ»úÆ÷ÉÏ¡£ ´ËÍ⣬ Ò²ÌṩÁËÓÃÓÚÖ§³Ö³£¼ûÇéÐεÄÒÀÀµ¹ØÏµ±äÁ¿£¬ ÒÔ¼°¶ÔÒÀÀµ¹ØÏµÐÐΪµÄ¸ü¶à¿ØÖÆ¡£ <makevar>LIB_DEPENDS</makevar> (ÒÀÀµµÄº¯Êý¿â/¹²Ïí¿â) Õâ¸ö±äÁ¿ÓÃÓÚÖ¸¶¨ port ËùÒÀÀµµÄ¹²Ïí¿â¡£ ÆäÄÚÈÝÊÇÓÉһϵÁÐ lib:dir:target Ôª×é¹¹³ÉµÄ±í£¬ ÆäÖÐ lib Êǹ²Ïí¿âµÄÃû×Ö£¬ ¶ø dir ÔòÊÇÔÚÕÒ²»µ½Ê±Ó¦¸Ã´ÓÄÄÀïÁª±àºÍ°²×°£¬ ×îºó£¬ target ÓÃÓÚÖ¸¶¨ÔÚÄǸöĿ¼Öе÷ÓÃµÄ target¡£ ÀýÈ磬 LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg »á¼ì²âÖ÷°æ±¾ºÅΪ 9 µÄ jpeg ¹²Ïí¿â£¬ Èç¹ûËü²»´æÔÚ£¬ Ôò»á½øÈëµ½ÄúµÄ ports Ŀ¼ÖÐµÄ graphics/jpeg ×ÓĿ¼£¬ ²¢Áª±àºÍ°²×°Ëü¡£ Èç¹ûÄúÖ¸¶¨µÄ target ¾ÍÊÇ DEPENDS_TARGET (ĬÈÏÊÇ install)£¬ Ôò¿ÉÒÔÂÔÈ¥²»Ð´¡£ lib ²¿·ÖÊÇÒ»¸öÕýÔò±í´ïʽ£¬ ÓÃÓÚÔÚ ldconfig -r µÄÊä³öÖнøÐвéÕÒ¡£ ¿ÉÒÔʹÓÃÀàËÆ intl.[5-7] ºÍ intl ÕâÑùµÄÖµ¡£ ǰһÖÖģʽ£¬ ¼´ intl.[5-7]£¬ Äܹ»Æ¥Åä intl.5¡¢ intl.6 ºÍ intl.7 ÖеÄÈÎÒâÒ»¸ö¡£ µÚ¶þÖÖģʽ£¬ ¼´ intl Ôò¿ÉÒÔÆ¥ÅäÈÎÒâ°æ±¾µÄ intl ¿â¡£ ÒÀÀµ¹ØÏµ»á±»¼ì²âÁ½´Î£¬ Ò»´ÎÊÇÔÚ extract target ÖУ¬ ¶øÁíÒ»´ÎÔòÊÇÔÚ install target¡£ ÁíÍ⣬ ÒÀÀµ¹ØÏµµÄÃû×Ö»á·Åµ½ package ÖУ¬ ÒÔ±ãÈà &man.pkg.add.1; Äܹ»×Ô¶¯µØÔÚÓû§ÏµÍ³Éϰ²×°ËùÐèµÄδ°²×°µÄÆäËü package¡£ <makevar>RUN_DEPENDS</makevar> (ÒÀÀµµÄÔËÐл·¾³) Õâ¸ö±äÁ¿¿ÉÒÔÓÃÀ´Ö¸¶¨ port ÔÚÔËÐÐʱËùÐèÒªµÄ¿ÉÖ´ÐÐÎļþ£¬ ÒÔ¼°×ÊÔ´Îļþ¡£ ËüÊÇһϵÁÐ path:dir:target Ôª×éµÄÁÐ±í£¬ ÕâÀ path ʱËùÐèµÄ¿ÉÖ´ÐУ¬ »òÕß×ÊÔ´ÎļþµÄÃû×Ö£¬ dir ÊÇÔÚÎÞ·¨ÕÒµ½ÕâЩÎļþ»òĿ¼ʱ£¬ ȥʲôµØ·½Íê³ÉÁª±àºÍ°²×°ÒÔ±ã»ñµÃÕâЩÎļþ£» ¶ø target ÔòÓÃÀ´Ö¸¶¨ÔÚÕâ¸öĿ¼ÖÐËùµ÷ÓÃµÄ target µÄÃû×Ö¡£ ¼ÙÈç path ÒÔбÏß (/) ¿ªÊ¼£¬ Ôò»áµ±×÷ÆÕͨÎļþ£¬ ʹÓà test -e À´²âÊÔ£» ·´Ö®£¬ Ôòϵͳ»á¼Ù¶¨ÕâÊÇÒ»¸ö¿ÉÖ´ÐÐÎļþ£¬ ²¢ÇÒÓà which -s À´¼ì²â³ÌÐòÊÇ·ñ´æÔÚÓÚËÑË÷·¾¶ÖС£ ÀýÈ磬 RUN_DEPENDS= ${LOCALBASE}/etc/innd:${PORTSDIR}/news/inn \ xmlcatmgr:${PORTSDIR}/textproc/xmlcatmgr ½«¼ì²éÎļþ£¬ »òÕßĿ¼ /usr/local/etc/innd ÊÇ·ñ´æÔÚ£¬ Èç¹ûÕÒ²»µ½£¬ Ôò½«´Ó port Ŀ¼µÄ news/inn ×ÓĿ¼¼ÓÒÔ°²×°¡£ ϵͳҲ»á¼ì²éÊÇ·ñÄܹ»ÔÚËÑË÷·¾¶ÖÐÕÒµ½ÃûΪ xmlcatmgr µÄÎļþ£¬ Èç¹ûÕÒ²»µ½µÄ»°£¬ Ôò»á½øÈë ports Ŀ¼ÖÐµÄ textproc/xmlcatmgr ×ÓĿ¼£¬ ²¢½øÐÐÁª±àºÍ°²×°µÄ²Ù×÷¡£ ÕâÖÖÇé¿öÏ£¬ innd ʵ¼ÊÉÏÊÇÒ»¸ö¿ÉÖ´ÐÐÎļþ£» Èç¹û¿ÉÖ´ÐÐÎļþ²»»á³öÏÖÔÚËÑË÷·¾¶ÖУ¬ Äú¾ÍÐèÒªÖ¸¶¨ÍêÕû·¾¶ÁË¡£ ports Áª±à¼¯ÈºÉϹٷ½µÄËÑË÷ PATH ÊÇ /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin Õâ¸öÒÀÀµ¹ØÏµ»áÔÚ install target µÄ¹ý³ÌÖнøÐмì²é¡£ ´ËÍ⣬ ÒÀÀµ¹ØÏµµÄÃû×ֻᱻ·Åµ½ package ÖУ¬ ÒÔ±ã &man.pkg.add.1; Äܹ»ÔÚÓû§µÄϵͳÖÐÉÐδ°²×°Ïà¹ØÈí¼þʱ×Ô¶¯µØ°²×°ÄÇЩ package¡£ Èç¹ûÄúÏ£ÍûÖ¸¶¨Ò»¸öµÄ target ºÍĬÈ쵀 DEPENDS_TARGET Ïàͬ£¬ Ôò¿ÉÒÔÂÔÈ¥²»Ð´¡£ Ò»ÖֱȽϳ£¼ûµÄÇéÐÎÊÇ RUN_DEPENDS ºÍ BUILD_DEPENDS ÍêȫһÑù£¬ ÕâÖÖÇé¿öÔÚÒÆÖ²µÄÈí¼þÊDzÉÓýű¾ÓïÑÔÊéд£¬ »òÁª±à»·¾³ÓëÔËÐл·¾³ÐèÇóÏàͬʱÓÈÆäÆÕ±é¡£ ÕâÖÖÇé¿ö¿ÉÒÔÓÃÏÂÃæ¼òµ¥Ã÷Á˵ķ½Ê½Ö±½Ó½«ÆäÖÐÒ»¸ö±äÁ¿¸³Öµ¸øÁíÒ»¸ö±äÁ¿£º RUN_DEPENDS= ${BUILD_DEPENDS} ²»¹ý£¬ ÕâÖÖ¸³ÖµÓпÉÄÜ»áÁîÔËÐл·¾³±»Ä³Ð©Ã»ÓÐÔÚ port Ô­±¾µÄ BUILD_DEPENDS Ã÷È·¶¨ÒåµÄÒÀÀµ¹ØÏµÎÛȾ¡£ µ¼ÖÂÕâÖÖÇé¿öµÄÔ­ÒòÊÇ &man.make.1; ¼ÆËã±äÁ¿¸³ÖµÊ±Ä¬ÈϲÉÓõÄÊÇÑÓºó¼ÆËã (lazy evaluation)¡£ ÀýÈ磬 Èç¹ûÔÚ Makefile ÖÐʹÓÃÁË USE_* ±äÁ¿£¬ ÕâЩ±äÁ¿¾Í»áÓÉ ports/Mk/bsd.*.mk ´¦Àí£¬ ²¢ÌîдÓëÖ®¶ÔÓ¦µÄÁª±àÒÀÀµ¹ØÏµ¡£ ÀýÈ磬 USE_GMAKE=yes »á°Ñ devel/gmake ¼ÓÈëµ½ BUILD_DEPENDS¡£ Èç¹ûÏ£Íû±ÜÃâÕâЩ¸½¼ÓµÄÒÀÀµ¹ØÏµÎÛȾ RUN_DEPENDS£¬ ÔÚʹÓø³ÖµµÄʱºò¾ÍÐèҪСÐÄ¿¼ÂÇÕâÀàÀ©Õ¹µÄÇé¿ö£¬ ÀýÈ磬 ¿ÉÒÔÔÚ¸³ÖµÕ¹¿ªÖ®Ç°¸´ÖƱäÁ¿µÄÖµ£º RUN_DEPENDS:= ${BUILD_DEPENDS} <makevar>BUILD_DEPENDS</makevar> (ÒÀÀµµÄÁª±à»·¾³) ´Ë±äÁ¿ÓÃÓÚÖ¸¶¨ÓÃÀ´Áª±à port µÄ¿ÉÖ´ÐÐÎļþ»ò×ÊÔ´Îļþ¡£ Óë RUN_DEPENDS ÀàËÆ£¬ ËüÊÇÒ»¸ö path:dir:target Ôª×éµÄÁÐ±í¡£ ÀýÈ磬 BUILD_DEPENDS= unzip:${PORTSDIR}/archivers/unzip ½«¼ì²âÃûΪ unzip µÄ¿ÉÖ´ÐÐÎļþÊÇ·ñ´æÔÚ£¬ Èç¹û²»´æÔÚ£¬ Ôò»á½øÈëµ½ÄúµÄ ports Ŀ¼ÖÐµÄ archivers/unzip ²¢Íê³ÉÁª±àºÍ°²×°¹¤×÷¡£ ÕâÀïµÄ build ±íʾ´Ó½âѹËõµ½±àÒëµÄÈ«²¿¹ý³Ì¡£ ÒÀÀµ¹ØÏµÊÇÔÚ extract target µÄ¹ý³ÌÖмì²âµÄ¡£ ¼ÙÈçÄúÒªÖ¸¶¨µÄ target ºÍ DEPENDS_TARGET Ïàͬ£¬ Ôò¿ÉÒÔÂÔÈ¥²»Ð´¡£ <makevar>FETCH_DEPENDS</makevar> (ÒÀÀµµÄÏÂÔØ»·¾³) ÕâÒ»±äÁ¿ÓÃÓÚÖ¸¶¨ port ÔÚÏÂÔØÊ±ËùÐèµÄ¿ÉÖ´ÐÐÎļþ»ò×ÊÔ´Îļþ¡£ ºÍǰÁ½¸öÀàËÆ£¬ ËüÊÇÒ»×é path:dir:target Ôª×é¡£ ÀýÈ磬 FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 ½«¼ì²âÃûΪ ncftp2 µÄ¿ÉÖ´ÐÐÎļþÊÇ·ñ´æÔÚ£¬ Èç¹ûÕÒ²»µ½£¬ Ôò½«½øÈëµ½Äú ports Ŀ¼ÖÐµÄ net/ncftp2 ×ÓĿ¼²¢¼ÓÒÔÁª±àºÍ°²×°¡£ Õâ¸öÒÀÀµ¹ØÏµÊÇÔÚ fetch target ¹ý³ÌÖмì²éµÄ¡£ Èç¹ûÓë DEPENDS_TARGET Ïàͬ£¬ Ôò¿ÉÒÔÊ¡ÂÔ target ²¿·Ö¡£ <makevar>EXTRACT_DEPENDS</makevar> (ÒÀÀµµÄ½âѹËõ»·¾³) ´Ë±äÁ¿ÓÃÓÚÖ¸¶¨ port ÔÚ½âѹËõʱËùÐèµÄ¿ÉÖ´ÐÐÎļþ»òÆäËü×ÊÔ´Îļþ¡£ ºÍǰһ¸ö±äÁ¿ÀàËÆ£¬ ËüÊÇһϵÁÐ path:dir:target Ôª×éµÄÁÐ±í¡£ ÀýÈ磬 EXTRACT_DEPENDS= unzip:${PORTSDIR}/archivers/unzip ½«¼ì²éÃûΪ unzip µÄ¿ÉÖ´ÐÐÎļþÊÇ·ñ´æÔÚ£¬ Èç¹û²»´æÔÚ£¬ Ôò»á½øÈëµ½ÄúµÄ ports Ŀ¼ÖÐµÄ archivers/unzip ×ÓĿ¼£¬ ÓèÒÔÁª±àºÍ°²×°¡£ Õâ¸öÒÀÀµ¹ØÏµÊÇÔÚ extract target µÄ¹ý³ÌÖмì²éµÄ¡£ Èç¹ûÓë DEPENDS_TARGET Ïàͬ£¬ Ôò¿ÉÒÔÂÔÈ¥ target ²¿·Ö¡£ Ö»ÓÐÔÚÆäËü·½Ê½¶¼²»¿ÉÓà (ĬÈÏÊÇ gzip) ¶øÇÒÎÞ·¨Í¨¹ý Ëù½éÉÜµÄ USE_ZIP »ò USE_BZIP2 ¶¼²»ÄÜ´ïµ½ÐèҪʱ£¬ ²ÅӦʹÓÃÕâ¸ö±äÁ¿¡£ <makevar>PATCH_DEPENDS</makevar> (ÒÀÀµµÄ´ò²¹¶¡»·¾³) Õâ¸ö±äÁ¿ÓÃÓÚÖ¸¶¨ port ÔÚ½øÐÐ patch ²Ù×÷ʱËùÐèµÄ¿ÉÖ´ÐÐÎļþ»òÆäËü×ÊÔ´Îļþ¡£ ºÍǰһ¸ö±äÁ¿ÀàËÆ£¬ ËüÊÇÒ»×é path:dir:target Ôª×éµÄ±í¡£ ÀýÈ磬 PATCH_DEPENDS= ${NONEXISTENT}:${PORTSDIR}/java/jfc:extract ±íʾ½øÈëµ½ÄúµÄ ports Ŀ¼ÖÐµÄ java/jfc ×ÓĿ¼£¬ ²¢½«Æä½âѹËõ¡£ Õâ¸öÒÀÀµ¹ØÏµÊÇÔÚ patch target µÄ¹ý³ÌÖмì²éµÄ¡£ target ²¿·ÖÈç¹ûºÍ DEPENDS_TARGET Ïàͬ£¬ ¾Í¿ÉÂÔÈ¥²»Ð´¡£ <makevar>USE_<replaceable>*</replaceable></makevar> ÌṩÁËһϵÁбäÁ¿£¬ ÓÃÒÔ·â×°´óÁ¿ port ¶¼Óõ½µÄÒÀÀµ¹ØÏµ¡£ ËäȻʹÓÃÕâЩ±äÁ¿ÊÇ¿ÉÑ¡µÄ£¬ µ«ËüÃÇÄÜÏÔÖø¼õÉÙ port µÄ Makefile ¸´ÔÓÐÔ¡£ ÕâЩ±äÁ¿µÄ¹²Í¬ÌØÕ÷ÔÚÓÚ£¬ ËüÃǵÄÃû×Ö¶¼ÊÇ USE_* ÕâÑùµÄÐÎʽ¡£ ÕâЩ±äÁ¿µÄʹÓ㬠ӦÑϸñÏÞÖÆÓÚ port µÄ Makefile ÒÔ¼° ports/Mk/bsd.*.mk£¬ ¶ø¾ø²»Ó¦ÓÃÓÚ±í´ïÓû§Äܹ»ÉèÖõÄÑ¡Ïî — ÕâÖÖÇé¿öÏÂÓ¦²ÉÓà WITH_* ºÍ WITHOUT_* ÕâÑùµÄ±äÁ¿¡£ ÔÚ ÈκΠÇé¿öÏ£¬ ¶¼²»Ó¦ÔÚ /etc/make.conf ÖÐÅäÖÃÈκΠUSE_*¡£ ÀýÈ磬 ÉèÖà USE_GCC=3.4 ½«µ¼ÖÂÿ¸ö port ¶¼ÒÀÀµ gcc34£¬ ÉõÖÁ°üÀ¨ gcc34 ±¾Éí£¡ ³£ÓÃµÄ <makevar>USE_<replaceable>*</replaceable></makevar> ±äÁ¿ ±äÁ¿ º¬Òå USE_BZIP2 ´Ë port µÄÔ´Âë°üÊÇʹÓà bzip2 ѹËõµÄ¡£ USE_ZIP ´Ë port µÄÔ´Âë°üÊÇÓà zip ѹËõµÄ¡£ USE_BISON ´Ë port ÔÚÁª±àʱʹÓà bison¡£ USE_CDRTOOLS ´Ë port ÐèҪʹÓà cdrecord£¬ ¸ù¾ÝÓû§µÄϲºÃ£¬ ¿ÉÄÜÊÇ sysutils/cdrtools »ò sysutils/cdrtools-cjk¡£ USE_GCC ´Ë port ÐèҪʹÓÃÄ³Ò»ÌØ¶¨°æ±¾µÄ gcc ²ÅÄÜÍê³É±àÒë¡£ ¿ÉÒÔʹÓÃÀàËÆ 3.4 ÕâÑùµÄÖµÀ´¾«È·Ö¸¶¨°æ±¾¡£ Èç¹ûÏ£ÍûʹÓò»µÍÓÚijһ°æ±¾µÄ±àÒëÆ÷£¬ Ôò¿ÉÒÔÓà 3.4+ ÕâÑùµÄÐÎʽ¡£ Èç¹ûÓëËùÏ£ÍûµÄ°æ±¾ÎǺϣ¬ Ôò½«Ê¹Óûù±¾ÏµÍ³ÖÐËùÌṩµÄ gcc£¬ ·´Ö®£¬ ϵͳ»á´Ó ports Öа²×°ËùÏ£Íû°æ±¾µÄ gcc£¬ ²¢µ÷Õû CC ÒÔ¼° CXX ±äÁ¿µÄÉèÖá£
Óë gmake ºÍ configure ½Å±¾ÓйصıäÁ¿ÔÚ ÖнøÐÐÁ˽éÉÜ£¬ ¶ø autoconf¡¢ automake ÒÔ¼° libtool µÄ½éÉÜÔò¿ÉÒÔÔÚ ÕÒµ½¡£ ½éÉÜÁËÓë Perl ÓйصĵıäÁ¿¡£ ÖÐÁгöÁ˹ØÓÚ X11 µÄ±äÁ¿¡£ ¹ØÓÚ GNOME µÄ±äÁ¿ÔÚ £¬ ¶ø¹ØÓÚ KDE µÄÔòÔÚ ¡£ ½²ÊöÁËºÍ Java ÓйصıäÁ¿£¬ ¶ø Ôò°üº¬Á˹ØÓÚ Apache¡¢ PHP ÒÔ¼° PEAR µÄ½éÉÜÐÔÐÅÏ¢¡£ ¹ØÓÚ Python£¬ ÔÚ ½øÐÐÁËÌÖÂÛ£¬ ¶ø¹ØÓÚ Ruby µÄ½éÉÜ£¬ Ôò¿ÉÒÔÔÚ ÖÐÕÒµ½¡£ ÌṩÁËÓÃÓÚ SDL Ó¦ÓóÌÐòµÄ±äÁ¿½éÉÜ£¬ ×îºó£¬ °üº¬Á˹ØÓÚ Xfce µÄÐÅÏ¢¡£
ÔÚÒÀÀµ¹ØÏµÖÐÖ¸¶¨×îµÍ°æ±¾ ÔÚÒÀÀµÄ³¸öÆäËû port ʱ£¬ ¿ÉÒÔ²ÉÓÃÏÂÃæµÄ¾ä·¨£¬ ͨ¹ý³ý LIB_DEPENDS Ö®ÍâµÄ *_DEPENDS ±äÁ¿À´Ö¸¶¨×îµÍ°æ±¾£º p5-Spiffy>=0.26:${PORTSDIR}/devel/p5-Spiffy µÚÒ»¸ö×Ö¶ÎÖ¸Ã÷ÁËËùÒÀÀµ package µÄÃû×Ö£¬ ÓÃÒÔÓë package Êý¾Ý¿âÖеÄijÏîÆ¥Å䣬 È»ºóÊDZȽÏËã·û£¬ ÒÔ¼° package µÄ°æ±¾ºÅ¡£ Ç°ÃæµÄÀý×ÓÖУ¬ Èç¹ûϵͳÖа²×°ÁË p5-Spiffy-0.26 ÔòÈÏΪÂú×ãÁËÒÀÀµÌõ¼þ¡£ ¹ØÓÚÒÀÀµ¹ØÏµµÄ²¹³ä˵Ã÷ ÈçÇ°ÃæËùÌáµ½µÄÄÇÑù£¬ ÔÚÐèҪijһÒÀÀµµÄ port ʱ£¬ ½«µ÷Óà DEPENDS_TARGET ËùÖ¸¶¨µÄ target¡£ ÕâÒ»±äÁ¿µÄĬÈÏÖµÊÇ install¡£ Õâ²»ÊÇÒ»¸öÓû§±äÁ¿£¬ Ëü²»Ó¦ÔÚ port µÄ Makefile ÖÐÓèÒÔ¶¨Òå¡£ Èç¹ûÄúµÄ port ÐèҪʹÓÃÌØÊâµÄ target À´´¦ÀíÒÀÀµ¹ØÏµ£¬ ӦʹÓà *_DEPENDS µÄ :target ²¿·Ö£¬ ¶ø²»ÊÇÖØ¶¨Òå DEPENDS_TARGET À´Íê³É¡£ µ±ÄúÊäÈë make clean ʱ£¬ ÆäÒÀÀµµÄ port Ò²»á×Ô¶¯½øÐÐÇåÀí¡£ Èç¹ûÄú²»Ï£ÍûÈç´Ë£¬ Ó¦¶¨Òå»·¾³±äÁ¿ NOCLEANDEPENDS¡£ Èç¹û port ÒÀÀµÒ»Ð©ÖØÐÂÁª±àÐèÒª»¨·ÑºÜ³¤Ê±¼äµÄ port ʱ£¬ ÀýÈç KDE£¬ GNOME »ò Mozilla ʱ£¬ ÕâÒ»·½·¨»á·Ç³£ÓÐÓᣠҪÎÞÌõ¼þµØÒÀÀµÄ³¸ö port£¬ ¿ÉÒÔʹÓà ${NONEXISTENT} ×÷Ϊ BUILD_DEPENDS »ò RUN_DEPENDS µÄµÚÒ»²¿·Ö¡£ Ö»ÓÐÔÚÄúÐèҪʹÓÃÆäËü port ÌṩµÄÔ´´úÂëʱ²ÅÓ¦ÕâÑù×ö¡£ ͨ³£Ò²¿ÉÒÔͨ¹ýÕâÑùÖ¸¶¨À´Ëõ¶Ì±àÒëËùÐèµÄʱ¼ä¡£ ÀýÈç BUILD_DEPENDS= ${NONEXISTENT}:${PORTSDIR}/graphics/jpeg:extract ±íʾÒÀÀµ jpeg port ²¢½«Æä½âѹËõ¡£ Ñ­»·µÄÒÀÀµ¹ØÏµÊÇÖÂÃüµÄ ²»ÒªÔÚ ports tree ÖÐÒýÈëÈκÎÑ­»·ÒÀÀµ¹ØÏµ! ports Áª±à¼¼Êõ²»Äܹ»ÈÝÈÌÑ­»·ÒÀÀµ¹ØÏµ¡£ Èç¹ûÄúÒýÈëÁËÕâÑùµÄ¹ØÏµ£¬ ¾ÍÒ»¶¨»áÓÐÈ˰²×°µÄ FreeBSD »áÒò´Ë¶øË𻵣¬ ¶øÇÒÕâÖÖÏÖÏó»áÔ½À´Ô½¶à¡£ ÕâЩÇéÐκÜÄѼì²â£» Èç¹ûÓÐÒÉÂÇ£¬ ÔÚ½øÐÐÕâÑùµÄÐÞ¸Ä֮ǰ£¬ Îñ±ØÖ´ÐУº cd /usr/ports; make index¡£ Õâ¸ö¹ý³ÌÔھɵĻúÆ÷ÉÏ»áºÜÂý£¬ µ«Äܹ»ÈôóÁ¿µÄÓû§ — Ò²°üÀ¨Äú×Ô¼º — Õü¾ÈÓÚÓÉÕâÖÖÎÊÌâËùÔì³ÉµÄÀ§»óÖ®ÖС£
<makevar>MASTERDIR</makevar> (Ö÷ port ËùÔÚµÄĿ¼) Èç¹û port ÐèÒªÒÀijЩ±äÁ¿µÄÉèÖà (¾ÙÀýÀ´Ëµ£¬ ·Ö±æÂÊ»òÖ½ÐÍ) À´Áª±àÂÔÓв»Í¬µÄÔ¤±àÒë°ü£¬ Ôò¿ÉÒÔΪÿһ¸öÕâÑùµÄ°ü½¨Á¢²»Í¬µÄĿ¼£¬ ÕâÑù¿ÉÒÔÈÃÓû§¸üÈÝÒ׵ؿ´µ½ËûÃÇÏëÒª°²×°µÄ°æ±¾£¬ µ«ÓÖÄÜÔÚÕâЩ port Ö®¼ä¹²Óþ¡¿ÉÄܶàµÄÎļþ¡£ Ò»°ãÇé¿öÏ£¬ Èç¹ûÔËÓõõ±£¬ ³ýÖ÷Ŀ¼֮Íâ¶¼Ö»ÐèÒªºÜ¶ÌµÄ Makefile¡£ ÕâЩ Makefile ÖУ¬ ¿ÉÒÔÓà MASTERDIR À´Ö¸¶¨ÆäËüÎļþËùÔÚµÄĿ¼¡£ ÁíÍ⣬ »¹Ó¦Ê¹ÓÃÒ»¸ö±äÁ¿×÷Ϊ PKGNAMESUFFIX µÄÒ»²¿·Ö£¬ ÒÔ±ãΪ²»Í¬µÄ°ü¸ø³ö²»Í¬µÄÃüÃû¡£ ÓÃÀý×ÓÀ´²ûÊöÕâЩ»á¸üΪÃ÷Îú¡£ ÒÔÏÂÊÇ japanese/xdvi300/Makefile µÄ²¿·Ö´úÂ룺 PORTNAME= xdvi PORTVERSION= 17 PKGNAMEPREFIX= ja- PKGNAMESUFFIX= ${RESOLUTION} : # default RESOLUTION?= 300 .if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \ ${RESOLUTION} != 300 && ${RESOLUTION} != 400 @${ECHO_MSG} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\"" @${ECHO_MSG} "Possible values are: 118, 240, 300 (default) and 400." @${FALSE} .endif japanese/xdvi300 Ò²ÌṩÁËÈ«²¿³£¹æµÄ²¹¶¡£¬ ÒÔ¼°´ò°üÓõ½µÄÎļþµÈµÈÄÚÈÝ¡£ Èç¹ûÄúÔÚÄÇÀïÊäÈë make£¬ Ëü½«Ê¹ÓÃĬÈϵķֱæÂÊÖµ (300) ²¢Õý³£µØÁª±à port¡£ ¶ÔÓÚÆäËü·Ö±æÂʶøÑÔ£¬ ÒÔÏÂÊÇ ÍêÕûµÄ xdvi118/Makefile£º RESOLUTION= 118 MASTERDIR= ${.CURDIR}/../xdvi300 .include "${MASTERDIR}/Makefile" (xdvi240/Makefile ºÍ xdvi400/Makefile ÊÇÏàËÆµÄ)¡£ MASTERDIR ¶¨Òå»á¸æËß bsd.port.mk ³£¹æµÄĿ¼£¬ ÀýÈç FILESDIR ÒÔ¼° SCRIPTDIR Ó¦ÔÚ xdvi300 ÖвéÕÒ¡£ RESOLUTION=118 ÕâÐн«¸²¸ÇÔÚ xdvi300/Makefile ÖÐËù×÷µÄ RESOLUTION=300 ÉèÖ㬠´Ó¶ø port ½«ÒÔ·Ö±æÂÊΪ 118 µÄÉèÖÃÀ´Áª±à¡£ Áª»úÊÖ²á MAN[1-9LN] ÕâЩ±äÁ¿£¬ »á×Ô¶¯µØ½«Áª»úÊÖ²á¼Óµ½ pkg-plist (ÕâÒ²Òâζ×Å ²»ÄÜ ÔÚ pkg-plist ÖÐÁгöÁª»úÊÖ²á — ²Î¼û PLIST µÄÉú³É À´Á˽â¸ü¶àϸ½Ú)¡£ ´ËÍ⣬ ÕâÒ²»áÈð²×°½×¶Î×Ô¶¯µØ¸ù¾ÝÔÚ /etc/make.conf ÖÐËù×÷µÄ NO_MANCOMPRESS ÉèÖÃÀ´×Ô¶¯¶ÔÁª»úÊÖ²áÎļþÖ´ÐÐѹËõ»ò½âѹËõ²Ù×÷¡£ Èç¹û port ³¢ÊÔͨ¹ýʹÓ÷ûºÅÁ¬½Ó»òÓ²Á¬½Ó½«Áª»úÊֲᰲװΪ¶à¸öÃû×Ö£¬ ¾Í±ØÐëʹÓà MLINKS ±äÁ¿À´ÓèÒÔÃ÷ʾ¡£ ÓÉ port ´´½¨µÄÁ¬½Ó£¬ ½«ÓÉ bsd.port.mk ɾ³ýºÍÖØ½¨£¬ ÒÔÈ·ÈÏËüÃÇÖ¸ÏòÁËÕýÈ·µÄÎļþ¡£ ÈκÎÔÚ MLINKS ÖÐÁгöµÄÎļþ¶¼²»Ó¦ÔÚ pkg-plist ÖÐÔÙ³öÏÖ¡£ ÒªÖ¸¶¨ÊÇ·ñÔÚ°²×°Ê±¶ÔÁª»úÊÖ²á½øÐÐѹËõ£¬ ¿ÉÒÔʹÓà MANCOMPRESSED ±äÁ¿¡£ ÕâÒ»±äÁ¿¿ÉÒÔÈ¡ÈýÖÖÖµ£¬ yes¡¢ no ºÍ maybe Ö®Ò»¡£ yes ±íʾÁª»úÊÖ²áÒѾ­ÒÔѹËõµÄÐÎʽ°²×°£¬ no ±íʾ»¹Ã»ÓУ¬ ¶ø maybe Ôò±íʾËù°²×°µÄÈí¼þ»á×ðÖØ NO_MANCOMPRESS µÄÉèÖÃÖµ£¬ Òò´Ë bsd.port.mk ²»ÐèÒªÌØ±ð×öʲôÊÂÇé¡£ Èç¹ûÉèÖÃÁË USE_IMAKE ¶øÎ´¶¨Òå NO_INSTALL_MANPAGES£¬ MANCOMPRESSED »á×Ô¶¯ÉèΪ yes£¬ ·´Ö®ÔòÊÇ no¡£ ³ý·ÇĬÈÏÖµ²»ºÏÊÊ£¬ ·ñÔò¾Í²»ÐèÒªÔÚ port ÖÐÃ÷È·µØ¼ÓÒԸı䡣 Èç¹û port ½«Áª»úÊÖ²á·Åµ½ÁË PREFIX Ö®ÍâµÄÆäËüĿ¼£¬ ÔòӦʹÓà MANPREFIX À´¼ÓÒÔÉèÖᣠ´ËÍ⣬ Èç¹ûÖ»ÓÐijЩ²¿·ÖµÄÁª»úÊÖ²á»á°²×°µ½²»±ê×¼µÄλÖ㬠ÀýÈçijЩ perl Ä£¿éµÄ port£¬ »¹¿ÉÒÔʹÓà MANsectPREFIX (´Ë´¦ sect ÊÇ 1-9¡¢ L »ò N Ö®Ò») À´Ö¸¶¨¡£ Èç¹ûÄúµÄÁª»úÊÖ²áÐèҪװÈëרÓÃÓÚijһÓïÑÔרÓõÄ×ÓĿ¼£¬ ÐèÒª½« MANLANG ÉèΪÄÇÖÖÓïÑÔµÄÃû×Ö¡£ ´Ë±äÁ¿µÄĬÈÏÖµÊÇ "" (Ò²¾ÍÊÇÖ»ÓÐÓ¢Óï)¡£ ÏÂÃæÊÇÒ»¸ö×ۺϵÄÀý×Ó¡£ MAN1= foo.1 MAN3= bar.3 MAN4= baz.4 MLINKS= foo.1 alt-name.8 MANLANG= "" ja MAN3PREFIX= ${PREFIX}/share/foobar MANCOMPRESSED= yes Õâ±íʾ port »á°²×°Áù¸öÎļþ£» ${MANPREFIX}/man/man1/foo.1.gz ${MANPREFIX}/man/ja/man1/foo.1.gz ${PREFIX}/share/foobar/man/man3/bar.3.gz ${PREFIX}/share/foobar/man/ja/man3/bar.3.gz ${MANPREFIX}/man/man4/baz.4.gz ${MANPREFIX}/man/ja/man4/baz.4.gz ´ËÍ⣬ ${MANPREFIX}/man/man8/alt-name.8.gz ¿ÉÄÜ»áͨ¹ýÄúµÄ port °²×°£¬ Ò²¿ÉÄܲ»»á¡£ ÎÞÂÛÈçºÎ£¬ ¶¼»á´´½¨Ò»¸ö·ûºÅÁ¬½Ó£¬ °Ñ foo(1) ºÍ alt-name(8) Áª»úÊÖ²áÁ¬ÆðÀ´¡£ ¼ÙÈçÖ»Óв¿·ÖÁª»úÊÖ²áÊÇ·­Òë¹ýµÄ£¬ Ôò¿ÉÒÔʹÓÃһЩ¸ù¾Ý MANLANG ÄÚÈݶ¯Ì¬Éú³ÉµÄ±äÁ¿£º MANLANG= "" de ja MAN1= foo.1 MAN1_EN= bar.1 MAN3_DE= baz.3 ÕâÏ൱ÓÚÏÂÁÐÎļþ£º ${MANPREFIX}/man/man1/foo.1.gz ${MANPREFIX}/man/de/man1/foo.1.gz ${MANPREFIX}/man/ja/man1/foo.1.gz ${MANPREFIX}/man/man1/bar.1.gz ${MANPREFIX}/man/de/man3/baz.3.gz Info Îļþ Èç¹ûÈí¼þ°üÐèÒª°²×° GNU info Îļþ£¬ ÔòÐèÒªÔÚ INFO ±äÁ¿ÖÐÒ»Ò»Áгö (²»ÐèÒªÖ¸¶¨ .info ºó׺)¡£ ϵͳ¼Ù¶¨ÕâЩÎļþ¾ù»á°²×°µ½ PREFIX/INFO_PATH Ŀ¼ÖС£ Èç¹ûÈí¼þ°üÓÐÐèÒª£¬ Ò²¿ÉÒÔͨ¹ýÐÞ¸Ä INFO_PATH À´Ö¸¶¨²»Í¬µÄλÖᣠ²»¹ý£¬ ²¢²»ÍƼöÕâÑù×ö¡£ ËùÓÐÁгöµÄÏîÄ¿¾ùÊÇÏà¶ÔÓÚ PREFIX/INFO_PATH µÄÎļþ·¾¶¡£ ÀýÈ磬 lang/gcc34 ±íʾ½« info Îļþ°²×°µ½ PREFIX/INFO_PATH/gcc34£¬ Òò´Ë INFO Ӧд³ÉÀàËÆÕâÑù£º INFO= gcc34/cpp gcc34/cppinternals gcc34/g77 ... ÕâÑù°²×°/Ð¶ÔØ´úÂë¾Í»á×Ô¶¯µØÔÚ×¢²á°ü֮ǰ½«ËüÃǼÓÈëµ½ÁÙʱµÄ pkg-plist ÖÐÁË¡£ Makefile Ñ¡Ïî ijЩ´óÐÍÓ¦ÓóÌÐò¿ÉÒÔÔÚÁª±àʱʹÓÃһϵÁÐÅäÖÃÑ¡Ï ÓÃÒÔÔÚϵͳÖÐÒѾ­°²×°ÁËijЩ¿â»òÓ¦ÓóÌÐòʱÔö¼ÓһЩ¹¦ÄÜ¡£ ÀýÈ磬 Ñ¡ÔñijÖÖ×ÔÈ» (ÈËÀàµÄ) ÓïÑÔ£¬ GUI »òÃüÁîÐнçÃæ£¬ ÓÉÓÚ²¢²»ÊÇËùÓеÄÓû§¶¼Ï£ÍûʹÓÃÕâЩ¿â»òÕßÓ¦ÓóÌÐò£¬ port ϵͳÌṩÁËÒ»×é·½±ãµÄ»úÖÆ£¬ À´Èà port µÄ×÷Õß¿ØÖÆÁª±àʱµÄÅäÖᣠ֧³ÖÕâÐ©ÌØÐÔ¿ÉÒÔÈÃÓû§ÌåÑé¸üºÃ£¬ ²¢´ïµ½Ê°빦±¶µÄЧ¹û¡£ ¿ª¹Ø (Knobs) <makevar>WITH_<replaceable>*</replaceable></makevar> ºÍ <makevar>WITHOUT_<replaceable>*</replaceable></makevar> ÕâЩ±äÁ¿ÊÇΪϵͳ¹ÜÀíÔ±×¼±¸µÄ¡£ Ðí¶àÕâÑùµÄ±äÁ¿±»±ê×¼»¯²¢ÖÃÓÚ ports/KNOBS Îļþ¡£ ÔÚ´´½¨Ò»¸ö port µÄʱºò£¬²»ÒªÊ¹ÓÃij¸öÓ¦ÓóÌÐòרÓÐµÄ knob Ãû³Æ£¬±ÈÈç¶ÔÓÚ Avahi Õâ¸ö port£¬Ó¦¸ÃÓà WITHOUT_MDNS ¶ø²»ÊÇ WITHOUT_AVAHI_MDNS¡£ Äú²»Ó¦¼Ù¶¨Ã¿Ò»¸ö WITH_* ¶¼»áÓжÔÓ¦µÄ WITHOUT_* ±äÁ¿£¬ ·´Ö®ÒàÈ»¡£ Ò»°ã¶øÑÔ£¬ »áʹÓÃĬÈÏÖµ¡£ ³ý·ÇÁíÓÐ˵Ã÷£¬ ÕâЩ±äÁ¿¶¼ÊDzâÊÔÊÇ·ñ¶¨Ò壬 ¶ø²»ÊÇËüÃÇÉèÖÃÁË YES »ò NO¡£ ³£¼ûµÄ <makevar>WITH_<replaceable>*</replaceable></makevar> ºÍ <makevar>WITHOUT_<replaceable>*</replaceable></makevar> ±äÁ¿ ±äÁ¿ ÒâÒå WITHOUT_NLS ±íʾ²»ÐèÒª¹ú¼Ê»¯Ö§³Ö£¬ Õâ¿ÉÒÔ½ÚÊ¡±àÒëËùÏûºÄµÄʱ¼ä¡£ ĬÈÏÇé¿öÏ£¬ »áÆôÓùú¼Ê»¯Ö§³Ö¡£ WITH_OPENSSL_BASE ʹÓûù±¾ÏµÍ³ÖÐµÄ OpenSSL °æ±¾¡£ WITH_OPENSSL_PORT ´Ó security/openssl °²×° OpenSSL£¬¼´Ê¹»ù±¾ÏµÍ³Öеİ汾ÊÇ×îеġ£ WITHOUT_X11 Èç¹û port Äܹ»ÔÚÊÇ·ñ°üº¬ X Ö§³ÖµÄÇé¿öÏ·ֱðÁª±à£¬ ÔòÒ»°ãÇé¿öÓ¦¸ÃĬÈÏÒÔ°üº¬ X Ö§³ÖµÄÅäÖÃÀ´Áª±à¡£ Èç¹û¶¨ÒåÁËÕâÒ»±äÁ¿£¬ ÔòÓ¦Áª±à²»°üº¬ X Ö§³ÖµÄ°æ±¾¡£
¿ª¹Ø (knob) µÄÃüÃû ÎÒÃǽ¨Òé port µÄ¿ª·¢ÈËԱʹÓÃÏàËÆµÄ¿ª¹Ø£¬ ÒÔ±ã×îÖÕÓû§Ê¹Ó㬠²¢¼õÉÙ¿ª¹ØÃû³ÆµÄ×ÜÊý¡£ ×îΪ³£ÓõĿª¹ØÃû×Ö¿ÉÒÔÔÚ KNOBS ÎļþÖÐÕÒµ½¡£ ¿ª¹ØµÄÃû×ÖÓ¦·´Ó³Æä¹¦ÄÜ¡£ Èç¹û port µÄ PORTNAME °üÀ¨ lib- ǰ׺£¬ Ôò¿ª¹ØÃûÖÐӦɾȥ lib- ǰ׺¡£
<makevar>OPTIONS</makevar> (²Ëµ¥Ê½¿ÉÑ¡Ïî) ±³¾° OPTIONS ½«ÎªÕýÔÚ°²×° port µÄÓû§Ìṩһ¸ö°üº¬¿ÉÓÃÑ¡ÏîµÄ¶Ô»°¿ò£¬ ²¢½«Óû§µÄÑ¡Ôñ±£´æµ½ /var/db/ports/portname/options ÖС£ Ï´ÎÖØÐÂÁª±à port ʱ£¬ ÕâЩѡÏ±»ÔÙ´ÎʹÓᣠÕâÑùÒ»À´£¬ ¾Í²»ÐèÒªÀÍÉñÈ¥¼ÇÒäÄú֮ǰÁª±à port ʱµÄÄǼ¸Ê®¸ö WITH_* ºÍ WITHOUT_*Ñ¡ÏîÁË£¡ µ±Óû§ÔËÐÐ make config (»òÊ×´ÎÔËÐÐ make build) ʱ£¬ ¿ò¼Ü»áÊ×Ïȼì²é /var/db/ports/portname/options¡£ Èç¹ûÕâ¸öÎļþ²»´æÔÚ£¬ ÔòËü»áʹÓà OPTIONS µÄÖµÀ´Éú³ÉÒ»¸ö¿ÉÒÔÆôÓûò½ûÓø÷¸öÑ¡ÏîµÄ¶Ô»°¿ò¡£ Ëæºó£¬ Óû§µÄÑ¡Ôñ½«±£´æµ½ options ÎļþÖУ¬ ²¢±»ÓÃÓÚÁª±à port¡£ Èç¹ûа汾µÄ port ÐÂÔöÁË OPTIONS£¬ Ôòϵͳ»áÔٴθø³ö¶Ô»°¿ò£¬ ²¢¸ù¾ÝÏÈǰµÄ OPTIONS ÅäÖÃÔ¤ÉèÏÈǰ´æÔÚµÄÅäÖᣠʹÓà make showconfig ¿ÉÒԲ鿴±£´æµÄÅäÖᣠ´ËÍ⣬ make rmconfig ¿ÉÒÔɾ³ýÒѾ­±£´æµÄÅäÖᣠÓï·¨ OPTIONS ±äÁ¿µÄÓï·¨ÊÇ£º OPTIONS= OPTION "˵Ã÷ÐÔÎÄ×Ö" ĬÈÏÖµ ... ĬÈÏÖµ±ØÐëÊÇ ON ºÍ OFF Ö®Ò»¡£ ÕâÖÖÈýÔª×é¿ÉÒÔʹÓöà´Î¡£ ¶¨Òå OPTIONS ±äÁ¿µÄÖµ£¬ ±ØÐëÔÚÒýÈë bsd.port.options.mk ֮ǰ½øÐС£ ¶ø WITH_* ºÍ WITHOUT_* ±äÁ¿ÔòÖ»ÄÜÔÚÒýÈëÁË bsd.port.options.mk Ö®ºó²Å¿ÉÒÔ½øÐмì²â¡£ ʹÓà bsd.port.pre.mk Ò²¿ÉÒԴﵽͬÑùµÄÄ¿µÄ£¬ ÔÚϵͳ¿ªÊ¼Ìṩ bsd.port.options.mk ֮ǰµÄÐí¶à port ¶¼ÔÚʹÓÃÕâÖÖÓ÷¨¡£ ²»¹ý£¬ Çë×¢Òâ bsd.port.pre.mk »áÒªÇóijЩ±äÁ¿ÒѾ­½øÐйý¶¨Ò壬 Èç USE_* µÈ¡£ ¼òµ¥µÄ <makevar>OPTIONS</makevar> Ó÷¨ OPTIONS= FOO "ÆôÓà foo Ñ¡Ïî" On \ BAR "Ö§³Ö bar ¹¦ÄÜ" Off .include <bsd.port.options.mk> .if defined(WITHOUT_FOO) CONFIGURE_ARGS+= --without-foo .else CONFIGURE_ARGS+= --with-foo .endif .if defined(WITH_BAR) RUN_DEPENDS+= bar:${PORTSDIR}/bar/bar .endif .include <bsd.port.mk> Old style use of <makevar>OPTIONS</makevar> OPTIONS= FOO "Enable option foo" On .include <bsd.port.pre.mk> .if defined(WITHOUT_FOO) CONFIGURE_ARGS+= --without-foo .else CONFIGURE_ARGS+= --with-foo .endif .include <bsd.port.post.mk> ×Ô¶¯¼¤»îµÄÌØÐÔ ÔÚʹÓà GNU configure ½Å±¾Ê±£¬ Ò»¶¨ÒªÐ¡ÐÄÓÐÐ©ÌØÐÔ»áÓÉÆä×Ô¶¯¼ì²â¶ø¼¤»î¡£ ÄúӦͨ¹ýÃ÷È·µØÖ¸¶¨ÏàÓ¦µÄ --without-xxx »ò --disable-xxx ²ÎÊýµ½ CONFIGURE_ARGS À´½ûÓò»Ï£ÍûµÄÌØÐÔ¡£ ´¦ÀíÑ¡ÏîʱµÄ´íÎó×ö·¨ .if defined(WITH_FOO) LIB_DEPENDS+= foo.0:${PORTSDIR}/devel/foo CONFIGURE_ARGS+= --enable-foo .endif ÔÚÇ°ÃæµÄÀý×ÓÖУ¬ ¼ÙÉèϵͳÖÐÒѾ­°²×°ÁË libfoo ¿â¡£ Óû§¿ÉÄܲ¢²»Ï£ÍûÓ¦ÓóÌÐòʹÓà libfoo£¬ Òò´ËËûÔÚ make config ¶Ô»°¿òÖйصôÁËÕâ¸öÑ¡Ïî¡£ µ«ÊÇ£¬ Ó¦ÓóÌÐòµÄ configure ½Å±¾¼ì²âµ½ÁËϵͳÖдæÔÚÕâ¸ö¿â£¬ ²¢½«Æä¼ÓÈëµ½ÁË×îÖÕ¿ÉÖ´ÐÐÎļþÖ§³ÖµÄ¹¦ÄÜÖС£ ÏÖÔÚ£¬ Èç¹ûÓû§¾ö¶¨´ÓϵͳÖÐÐ¶ÔØ libfoo ʱ£¬ ports ϵͳ¾ÍÎÞ·¨±£»¤Õâ¸öÓ¦ÓóÌÐòÃâÔâÆÆ»µÁË (ÒòΪûÓмǼ libfoo µÄÒÀÀµ¹ØÏµ)¡£ ´¦ÀíÑ¡ÏîʱµÄÕýÈ·×ö·¨ .if defined(WITH_FOO) LIB_DEPENDS+= foo.0:${PORTSDIR}/devel/foo CONFIGURE_ARGS+= --enable-foo .else CONFIGURE_ARGS+= --disable-foo .endif ÔÚµÚ¶þ¸öÀý×ÓÖУ¬ libfoo ¿â±»Ã÷È·½ûÓᣠ¼´Ê¹ÏµÍ³ÖÐÒѾ­°²×°ÁËÕâ¸ö¿â£¬ configure ½Å±¾Ò²²»»áÆôÓÃÏàÓ¦µÄ¹¦ÄÜÁË¡£
Ö¸¶¨¹¤×÷ÁÙʱĿ¼ ÿ¸ö port ¶¼»á±»½âѹËõµ½Ò»¸ö¹¤×÷ÁÙʱĿ¼ÖУ¬ Õâ¸öĿ¼±ØÐëÊÇ¿ÉдµÄ¡£ ports ϵͳĬÈÏÇé¿öÏ»Ὣ DISTFILES ½âѹËõµ½Ò»¸ö½Ð×ö ${DISTNAME} µÄĿ¼ÖС£ »»ÑÔÖ®£¬ Èç¹ûÉèÁË£º PORTNAME= foo PORTVERSION= 1.0 Ôò port µÄÔ´Âë°üÎļþµÄ¶¥¼¶Ä¿Â¼½«ÊÇ foo-1.0¡£ Èç¹ûÕâ²»ÊÇËùÏ£ÍûµÄÇéÐΣ¬ Äú¿ÉÒÔÐÞ¸ÄһϵÁбäÁ¿µÄÉèÖᣠ<makevar>WRKSRC</makevar> (¿ªÊ¼Áª±à²Ù×÷µÄĿ¼Ãû) Õâ¸ö±äÁ¿¸ø³öÁËÔÚÓ¦ÓóÌÐòµÄÔ´´úÂë°ü½âѹËõÖ®ºóËùÉú³ÉµÄĿ¼µÄÃû×Ö¡£ Èç¹ûÎÒÃÇ֮ǰµÄÀý×Ó½âѹËõÉú³ÉÒ»¸ö½Ð×ö foo (¶ø²»ÊÇ foo-1.0) µÄĿ¼£¬ ÄúÓ¦£º WRKSRC= ${WRKDIR}/foo »òÕߣ¬ Ò²¿ÉÄÜÊÇ WRKSRC= ${WRKDIR}/${PORTNAME} <makevar>NO_WRKSUBDIR</makevar> (²»ÐèÒªÁÙʱµÄÁª±àĿ¼) Èç¹û port ÍêÈ«²»ÐèҪдÈ뵽ij¸ö×ÓĿ¼ÖУ¬ ÄúÓ¦ÉèÖà NO_WRKSUBDIR ÒÔÃ÷ʾÕâÒ»µã¡£ NO_WRKSUBDIR= yes ´¦Àí³åÍ» Õë¶Ô²»Í¬µÄ package »ò port Ö®¼äµÄ³åÍ»ÇéÐΣ¬ ϵͳÌṩÁ˲»Í¬µÄ±äÁ¿À´Ð­Öú¿ª·¢ÈËÔ±½øÐбí´ï£º CONFLICTS¡¢ CONFLICTS_INSTALL ºÍ CONFLICTS_BUILD¡£ ÕâЩÓÃÓÚÃèÊö³åÍ»µÄ±äÁ¿»á×Ô¶¯µØÉèÖà IGNORE£¬ ºóÕßµÄÍêÕû½éÉÜ£¬ ¿ÉÒÔÔÚ ÕÒµ½¡£ ÔÚɾȥÏ໥³åÍ»µÄ port ʱ£¬ ½¨Ò齫 CONFLICTS ±£Áô¼¸¸öÔ£¬ ÒÔ±ãÈÃÄÇЩ²»¾­³£¸üÐÂϵͳµÄÓû§Äܹ»¿´µ½¡£ <makevar>CONFLICTS_INSTALL</makevar> Èç¹ûÄúµÄÈí¼þ°ü²»ÄÜÓëijЩÈí¼þ°üͬʱ°²×° (ÀýÈçÓÉÓÚ°²×°Í¬ÑùµÄÎļþµ½ÏàͬµÄλÖᢠÔËÐÐʱ²»¼æÈݵȵÈ)£¬ ÔòÓ¦°ÑÆäËüÈí¼þ°üµÄÃû×ÖÁÐÔÚ CONFLICTS_INSTALL ±äÁ¿ÖС£ ´Ë´¦¿ÉÒÔʹÓà shell ͨÅä·û£¬ Èç * ºÍ ?¡£ ÁгöÆäËüÈí¼þ°üµÄÃû×ÖʱÐèÒª×ñÑ­ËüÃÇÔÚ /var/db/pkg ÖгöÏÖµÄÑù×Ó¡£ ÇëÈ·±£ CONFLICTS_INSTALL ²»»áÆ¥Åäµ½ÄúÕýÖÆ×÷µÄÕâ¸öÔ¤±àÒë°üµÄÃû×Ö£¬ ·ñÔò£¬ ʹÓà FORCE_PKG_REGISTER À´Ç¿Öư²×°¾ÍûÓа취½øÐÐÁË¡£ ¶ÔÓÚ CONFLICTS_INSTALL µÄ¼ì²éÊÇÔÚÁª±à¹ý³ÌÖ®ºó¡¢ °²×°¿ªÊ¼Ö®Ç°½øÐеġ£ <makevar>CONFLICTS_BUILD</makevar> Èç¹ûÄúµÄÈí¼þ°üÔÚϵͳÖдæÔÚijЩÆäËüÈí¼þ°üʱ²»ÄÜÍê³ÉÁª±à£¬ ÔòÓ¦°ÑÆäËüÈí¼þ°üµÄÃû×ÖÁÐÔÚ CONFLICTS_BUILD ±äÁ¿ÖС£ ´Ë´¦¿ÉÒÔʹÓà shell ͨÅä·û£¬ Èç * ºÍ ?¡£ ÁгöÆäËüÈí¼þ°üµÄÃû×ÖʱÐèÒª×ñÑ­ËüÃÇÔÚ /var/db/pkg ÖгöÏÖµÄÑù×Ó¡£ ¶ÔÓÚ CONFLICTS_BUILD µÄ¼ì²éÊÇÔÚÁª±à¹ý³Ì¿ªÊ¼Ö®Ç°½øÐеġ£ Áª±àʱµÄ³åÍ»²»»áÔÚ±àÒëºÃµÄ°üÖÐÓèÒԼǼ¡£ <makevar>CONFLICTS</makevar> Èç¹ûÄúµÄ port ÔÚijЩÆäËü port ÒѾ­´æÔÚµÄÇé¿öϼȲ»ÄÜÁª±à£¬ Ò²²»Äܰ²×°£¬ ÔòÓ¦°ÑÆäËüÈí¼þ°üµÄÃû×ÖÁÐÔÚ CONFLICTS ±äÁ¿ÖС£ ´Ë´¦¿ÉÒÔʹÓà shell ͨÅä·û£¬ Èç * ºÍ ?¡£ ÁгöÆäËüÈí¼þ°üµÄÃû×ÖʱÐèÒª×ñÑ­ËüÃÇÔÚ /var/db/pkg ÖгöÏÖµÄÑù×Ó¡£ ÇëÈ·±£ CONFLICTS ²»»áÆ¥Åäµ½ÄúÕýÖÆ×÷µÄÕâ¸öÔ¤±àÒë°üµÄÃû×Ö£¬ ·ñÔò£¬ ʹÓà FORCE_PKG_REGISTER À´Ç¿Öư²×°¾ÍûÓа취½øÐÐÁË¡£ ¶ÔÓÚ CONFLICTS µÄ¼ì²éÊÇÔÚÁª±à¹ý³ÌÖ®ºó¡¢ °²×°¿ªÊ¼Ö®Ç°½øÐеġ£ °²×°Îļþ INSTALL_* ºê Ò»¶¨ÒªÊ¹ÓÃÓÉ bsd.port.mk ÌṩµÄºê£¬ ÒÔÈ·±£ÔÚÄú×Ô¼ºµÄ *-install target ÖÐÄܹ»ÒÔÕýÈ·µÄÊôÖ÷ºÍȨÏÞģʽ°²×°Îļþ¡£ INSTALL_PROGRAM Êǰ²×°¿ÉÖ´Ðжþ½øÖÆÎļþµÄÃüÁî¡£ INSTALL_SCRIPT Êǰ²×°¿ÉÖ´Ðнű¾ÎļþµÄÃüÁî¡£ INSTALL_LIB Êǰ²×°¶¯Ì¬Á¬½Ó¿âµÄÃüÁî¡£ INSTALL_KLD ÊÇÓÃÓÚ°²×°¿É¼ÓÔØÊ½ÄÚºËÄ£¿éµÄÃüÁî¡£ ÔÚijЩƽ̨ÉÏ£¬ µ±¶ÔÄÚºËÄ£¿é½øÐÐ strip Ö®ºó»áµ¼ÖÂһЩÎÊÌ⣬ Òò´ËÄúӦʹÓÃÕâ¸öºê¶ø²»ÊÇ INSTALL_PROGRAM À´°²×°ÄÚºËÄ£¿é¡£ INSTALL_DATA Êǰ²×°¿É¹²ÏíÊý¾ÝµÄÃüÁî¡£ INSTALL_MAN Êǰ²×°Áª»úÊÖ²áºÍÆäËûÎĵµµÄÃüÁî (×¢ÒâËü²¢²»»áÖ´ÐÐѹËõ²Ù×÷)¡£ ÕâЩºêÕ¹¿ªºó»ù±¾É϶¼Êǰüº¬Êʵ±²ÎÊýµÄ install ÃüÁî¡£ ¶Ô¿ÉÖ´ÐÐÎļþºÍ¶¯Ì¬Á¬½Ó¿â×öÍÑÄ£ (strip) ²Ù×÷ ³ý·Ç²»µÃ²»½øÐУ¬ ·ñÔò²»ÒªÊÖ¹¤¶Ô¿ÉÖ´ÐÐÎļþ×÷ÍÑÄ£²Ù×÷¡£ ËùÓÐÎļþÔÚ°²×°Ê±¶¼Ó¦ÍÑÄ££¬ µ« INSTALL_PROGRAM ºê»áÔÚ°²×°µÄͬʱ¶ÔÆä½øÐÐÍÑÄ£ (²Î¼ûÏÂÒ»½ÚµÄÄÚÈÝ)¡£ INSTALL_LIB ºê Èç¹ûÄúÐèÒª¶ÔijһÎļþ½øÐÐÍÑÄ££¬ µ«²»Ï£ÍûʹÓà INSTALL_PROGRAM ¼° INSTALL_LIB ºê£¬ ÔòӦʹÓà ${STRIP_CMD} À´´¦Àí³ÌÐò¡£ Ò»°ã¶øÑÔÕâÓ¦¸ÃÔÚ post-install target ÖнøÐС£ ÀýÈ磺 post-install: ${STRIP_CMD} ${PREFIX}/bin/xdl ¿ÉÒÔʹÓà &man.file.1; ÃüÁîÀ´¼ì²éËù°²×°µÄ¿ÉÖ´ÐÐÎļþÊÇ·ñ½øÐйýÍÑÄ£¡£ Èç¹ûËüûÓиø³ö not stripped µÄÌáʾ£¬ Ôò±íʾÒѾ­×ö¹ýÍÑÄ£ÁË¡£ ÁíÍ⣬ &man.strip.1; ²»»á¶ÔÒѾ­ÍÑÄ£¹ýµÄÎļþÖØÐÂÍÑÄ££¬ Ëü»áÖ±½ÓÍ˳öµÄ¡£ °²×°Ò»¸öĿ¼ÏµÄÈ«²¿Îļþ ÓÐʱ£¬ »áÓÐÐèÒª°²×°´óÁ¿µÄÎļþ£¬ ²¢±£³ÖÆä²ã´Î½á¹¹£¬ ÀýÈ磬 ½«Õû¸öĿ¼½á¹¹´Ó WRKSRC ¸´ÖƵ½ PREFIX µÄÄ¿±êĿ¼¡£ Õë¶ÔÕâÖÖÇé¿ö£¬ ϵͳÌṩÁËÁ½¸öºê¡£ ʹÓÃÕâЩºê£¬ ¶ø²»ÊÇÖ±½ÓʹÓà cp µÄÓÅÊÆÊÇËüÃÇÄܹ»È·±£Ä¿±êÎļþµÄÊôÖ÷ºÍȨÏÞÕýÈ·¡£ µÚÒ»¸öºê£¬ COPYTREE_BIN ½«ËùÓа²×°µÄÎļþÊÓΪ¿ÉÖ´ÐÐÎļþ£¬ Òò¶øÊʺϰ²×°Îļþµ½ PREFIX/bin¡£ µÚ¶þ¸öºê£¬ COPYTREE_SHARE£¬ Ôò²»»áÉèÖÿÉÖ´ÐÐȨÏÞ£¬ Òò´ËÊʺÏÓÚ½«Îļþ°²×°µ½ PREFIX/share Ï¡£ post-install: ${MKDIR} ${EXAMPLESDIR} (cd ${WRKSRC}/examples/ && ${COPYTREE_SHARE} \* ${EXAMPLESDIR}) Õâ¸öÀý×Ó½«Ô­×÷ÕßÌṩµÄÕû¸ö examples Ŀ¼¸´ÖƵ½Äú port Ö¸¶¨µÄ°²×°Ê¾·¶ÎļþµÄλÖᣠpost-install: ${MKDIR} ${DATADIR}/summer (cd ${WRKSRC}/temperatures/ && ${COPYTREE_SHARE} "June July August" ${DATADIR}/summer/) Õâ¸öÀý×Ó½«°ÑÏļ¾µÄÈý¸öÔµÄÊý¾Ý£¬ ¸´ÖƵ½ DATADIR ÖÐµÄ summer ×ÓĿ¼¡£ ¾­ÓÉÉèÖà COPYTREE_* ºêµÄµÚÈý¸ö²ÎÊý£¬ Äú»¹¿ÉÒÔΪ find Ö¸¶¨¶îÍâµÄ²ÎÊý¡£ ÀýÈ磬 Èç¹ûÏ£Íû°²×°³ýÁË Makefile Ö®ÍâµÄÆäËûËùÓÐÎļþ£¬ ¿ÉÒÔʹÓÃÏÂÊöÃüÁî¡£ post-install: ${MKDIR} ${EXAMPLESDIR} (cd ${WRKSRC}/examples/ && \ ${COPYTREE_SHARE} \* ${EXAMPLESDIR} "! -name Makefile") ÐèҪעÒâµÄÊÇ£¬ ÕâЩºê²¢²»ÄÜ×Ô¶¯½«Ëù°²×°µÄÎļþ¼Óµ½ pkg-plist ÖУ¬ Äú»¹ÊÇÐèÒª×ÔÐÐÁгöËüÃÇ¡£ °²×°¸½¼ÓµÄÎĵµ Èç¹ûÄúµÄÈí¼þ°üº¬Á˱ê×¼µÄÁª»úÊÖ²áºÍ info ÊÖ²áÒÔÍâµÄÎĵµ£¬ ¶øÇÒÄúÈÏΪËüÃǶÔÓû§»áÓÐÓ㬠Çë°ÑÕâЩÎĵµ°²×°µ½ PREFIX/share/doc Ï¡£ ºÍÇ°ÃæÀàËÆ£¬ ÕâÒ²¿ÉÒÔÔÚ post-install target ÖÐÍê³É¡£ ΪÄúµÄ port ½¨Á¢Ò»¸öеÄĿ¼¡£ Õâ¸öĿ¼µÄÃû×ÖÓ¦¸Ã·´Ó³ËüÊÇÊôÓÚÄĸö port µÄ¡£ ͨ³£½¨ÒéʹÓà PORTNAME¡£ ²»¹ý£¬ Èç¹ûÄúÈÏΪ²»Í¬°æ±¾µÄ port ¿ÉÄÜ»áͬʱ°²×°£¬ Ò²¿ÉÒÔÓÃÍêÕûµÄ PKGNAME¡£ ÁíÍ⣬ Ó¦¸ÃÈÃÊÇ·ñ°²×°È¡¾öÓÚ±äÁ¿ NOPORTDOCS µÄÉèÖ㬠ÕâÑùÓû§¾ÍÄܹ»ÔÚ /etc/make.conf ÖнûÖ¹°²×°Ëü¡£ ÀýÈ磺 post-install: .if !defined(NOPORTDOCS) ${MKDIR} ${DOCSDIR} ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${DOCSDIR} .endif ÕâÀïÊÇһЩ±ãÓÚʹÓõıäÁ¿£¬ ÒÔ¼°ËüÃÇÔÚ Makefile ÖÐĬÈϵÄÕ¹¿ª·½Ê½£º DATADIR »áÕ¹¿ª³É PREFIX/share/PORTNAME¡£ DATADIR_REL »áÕ¹¿ª³É share/PORTNAME¡£ DOCSDIR »áÕ¹¿ª³É PREFIX/share/doc/PORTNAME¡£ DOCSDIR_REL »áÕ¹¿ª³É share/doc/PORTNAME¡£ EXAMPLESDIR »áÕ¹¿ª³É PREFIX/share/examples/PORTNAME¡£ EXAMPLESDIR_REL »áÕ¹¿ª³É share/examples/PORTNAME¡£ NOPORTDOCS Ö»¿ØÖƽ«Òª°²×°µ½ DOCSDIR µÄÄÇЩÎĵµ£¬ ¶ø²»Ó¦Ó°Ïì±ê×¼µÄÁª»úÊÖ²áÒÔ¼° info ÊÖ²áµÄ°²×°¡£ °²×°µ½ DATADIR ºÍ EXAMPLESDIR µÄÎļþÔòÏàÓ¦µØÊÜ NOPORTDATA ºÍ NOPORTEXAMPLES ¿ØÖÆ¡£ ÕâЩ±äÁ¿Ò²»á±»µ¼³öµ½ PLIST_SUB ÖС£ Ö»Òª¿ÉÄÜ£¬ ËüÃǵÄÖµ¾Í½«ÔÚÄÇÀïÒÔÏà¶ÔÓÚ PREFIX µÄ·¾¶ÐÎʽ³öÏÖ¡£ Ò²¾ÍÊÇ˵£¬ share/doc/PORTNAME ÔÚ×°Ïäµ¥ÖÐĬÈÏÇé¿öÏ»áÌæ»»µô %%DOCSDIR%%£¬ µÈµÈ¡£ (¸ü¶àµÄ pkg-plist ´ú»»¿ÉÒÔÔÚ ÕâÀï ÕÒµ½¡£) ËùÓзÇÎÞÌõ¼þ°²×°µÄÎĵµÎļþºÍĿ¼£¬ ¶¼Ó¦ÔÚ pkg-plist ³öÏÖ£¬ ²¢ÇÒʹÓà %%PORTDOCS%% ǰ׺£¬ ÀýÈ磺 %%PORTDOCS%%%%DOCSDIR%%/AUTHORS %%PORTDOCS%%%%DOCSDIR%%/CONTACT %%PORTDOCS%%@dirrm %%DOCSDIR%% Èç¹û²»Ï£ÍûÔÚ pkg-plist ÖÐÖð¸öÁоÙÎĵµÎļþ£¬ port Ò²¿ÉÒÔ½« PORTDOCS ÉèÖÃΪһ×éÎļþ¼°Æä shell glob ģʽ£¬ ͨ¹ýÕâÖÖ·½Ê½À´¼ÓÈëµ½×îÖÕµÄ×°Ïäµ¥ÖС£ ÕâЩÃû×ÖÓ¦ÊÇÏà¶ÔÓÚ DOCSDIR µÄ¡£ Òò´Ë£¬ ʹÓÃÁË PORTDOCS£¬ ²¢½«Îĵµ°²×°µ½·Ç±ê׼λÖÃµÄ port£¬ Ó¦ÏàÓ¦µØÉèÖà DOCSDIR¡£ Èç¹ûÓÐÔÚ PORTDOCS ÖÐÁгöĿ¼£¬ »òÕßÕâÒ»±äÁ¿ÖÐµÄ glob ģʽƥÅäµ½ÁËĿ¼£¬ ÔòÕû¸ö×ÓÊ÷ÖеÄÎļþºÍĿ¼£¬ ¶¼½«±»×¢²áµ½×îÖÕµÄ×°Ïäµ¥ÖС£ Èç¹û¶¨ÒåÁË NOPORTDOCS£¬ Ôò PORTDOCS Öж¨ÒåµÄÎļþºÍĿ¼½«²»±»°²×°»ò¼ÓÈë×°Ïäµ¥¡£ ÊÇ·ñ°²×°Îĵµµ½Ç°ÃæËù˵µÄ PORTDOCS ÈÔÈ¡¾öÓÚ port ±¾Éí¡£ ÏÂÃæÊÇÒ»¸öµäÐ͵ÄʹÓà PORTDOCS µÄÀý×Ó£º PORTDOCS= README.* ChangeLog docs/* Óë PORTDOCS ÀàËÆ£¬ ¶ÔÓ¦ÓÚ DATADIR ºÍ EXAMPLESDIR µÄ±äÁ¿·Ö±ðÊÇ PORTDATA ºÍ PORTEXAMPLES¡£ ÄúÒ²¿ÉÒÔʹÓà pkg-message Õâ¸öÎļþ£¬ À´ÔÚ°²×°Ê±ÏÔʾһЩÐÅÏ¢¡£ ²Î¼û ¹ØÓÚʹÓà pkg-message µÄÕâÒ»½Ú ÒÔÁË½â½øÒ»²½µÄÏêÇé¡£ ÐèҪ˵Ã÷µÄÊÇ£¬ ²¢²»ÐèÒª°Ñ pkg-message ¼Óµ½ pkg-plist ÖС£ ×ÓĿ¼ ¾¡¿ÉÄÜÈà port ½«Ëü´´½¨µÄÎļþ£¬ ·ÅÖõ½ PREFIX ÖÐÕýÈ·µÄλÖᣠһЩ port »á°Ñ¸÷ʽ¸÷ÑùµÄ¶«Î÷»ìÔÚÒ»Æð£¬ ²¢·Åµ½Ò»¸öͬÃûµÄĿ¼ÖУ¬ ÕâÊDz»¶ÔµÄ¡£ ÁíÍ⣬ Ðí¶à port »á°Ñ³ýÁË¿ÉÖ´ÐÐÎļþ¡¢ Í·ÎļþºÍÁª»úÊÖ²áÖ®ÍâµÄËùÓÐÎļþ£¬ È«¶¼Ò»¹ÉÄԵطŵ½ lib ÖУ¬ ÕâÔÚºÍ BSD ÅäºÏʹÓÃʱ»áÓÐÎÊÌâ¡£ ¶àÊýÎļþ£¬ Ó¦±»·Åµ½ÏÂÁÐλÖÃÖ®Ò»£º etc (°²×°/ÅäÖÃÎļþ)¡¢ libexec (ÓÉϵͳÄÚ²¿µ÷ÓõĿÉÖ´ÐÐÎļþ)¡¢ sbin (Ϊ³¬¼¶Óû§/¹ÜÀíÔ±ÌṩµÄ¿ÉÖ´ÐÐÎļþ)¡¢ info (ÓÃÓÚ info ä¯ÀÀÆ÷µÄÎĵµ) »ò share (ƽ̨ÎÞ¹ØµÄÆäËüÎļþ)¡£ Çë²Î¼û &man.hier.7; ÒÔÁË½â½øÒ»²½µÄÏêÇ飻 Õë¶Ô /usr µÄÄÇЩ¹æÔò£¬ ͬÑùÒ²ÊÊÓÃÓÚ /usr/local¡£ ÀýÍâÇé¿öÊÇÄÇЩÐèÒªºÍ USENET news ´ò½»µÀµÄ port£¬ ËüÃÇ¿ÉÒÔÑ¡Ôñ²ÉÓà PREFIX/news ×÷ΪÎļþµÄÄ¿µÄµØ¡£
ÌØÊâÇé¿ö ÓÐһЩÄúÔÚ´´½¨portʱµÄÌØÊâÇé¿ö£¬ÎÒÃÇÔÚÕâÀïÌáһϡ£ ¹²Ïí¿â Èç¹ûÄúµÄport°²×°ÁËÒ»¸ö»ò¶à¸ö¹²Ïí¿â,ÄÇôÇ붨ÒåÒ»¸ö USE_LDCONFIG make ±äÁ¿£¬ ÔÚpost-install±ê¼Ç°ÑËü×¢²á½ø¹²Ïí¿â »º³åʱ»áµ÷ÓÃbsd.port.mkÈ¥ÔËÐÐ ${LDCONFIG} -mÀ´Ö¸ÏòпâµÄ°²×°Ä¿Â¼¡£ (ͨ³£ÊÇ PREFIX/lib) ͬÑù£¬ÄúÒ²¿ÉÒÔÊʵ±µÄÔÚÄúµÄ pke-plistÎļþ Öж¨ÒåÒ»×é@exec /sbin/ldconfig -m ºÍ@unexec /sbin/ldconfig -R£¬ ÄÇôÓû§¿ÉÒÔÔÚ°²×°ºóÂíÉÏ ¾ÍÄÜʹÓ㬲¢ÇÒÔÚÐ¶ÔØÈí¼þ°üºóϵͳҲ²»»áÈÏΪÕâЩ¹²Ïí¿âÈÔÈ»´æÔÚ¡£ USE_LDCONFIG= yes Èç¹ûÄúÐèÒª°Ñ¹²Ïí¿â°²×°ÔÚȱʡµÄλÖÃÖ®Í⣬ ¿ÉÒÔͨ¹ý¶¨Òå make ±äÁ¿ USE_LDCONFIG À´¸Ä±äĬÈϵݲװ·¾¶£¬ Ëü°üº¬°²×°¹²Ïí¿âµÄĿ¼Áбí ÀýÈ磺 Èç¹ûÄúµÄ¹²Ïí¿â°²×°µ½ PREFIX/lib/foo ºÍ PREFIX/lib/bar directoriesĿ¼£¬Äú¿ÉÒÔÔÚÄúµÄ MakefileÖÐÕâÑùÉèÖÃ: USE_LDCONFIG= ${PREFIX}/lib/foo ${PREFIX}/lib/bar ÇëÎñ±Ø×Ðϸ¼ì²é£¬ ͨ³£ÕâÊÇÍêÈ«²»±ØÒªµÄ£¬ »òÕß¿ÉÒÔͨ¹ý -rpath »òÔÚÁ¬½ÓʱÉèÖà LD_RUN_PATH À´±ÜÃâ (²Î¼û lang/moscow_ml ¸ø³öµÄÀý×Ó)£¬ »òÕßÓÃÒ»¸ö shell ·â×°³ÌÐòÀ´ÔÚÖ´ÐпÉÖ´ÐÐÎļþ֮ǰÉèÖà LD_LIBRARY_PATH£¬ ÀàËÆ www/seamonkey ÄÇÑù¡£ µ±ÔÚ 64-λϵͳÉϰ²×° 32-λ µÄº¯Êý¿âʱ£¬ ÇëʹÓà USE_LDCONFIG32¡£ ¾¡Á¿½«¹²Ïí¿â°æ±¾ºÅ±£³ÖΪ libfoo.so.0 ÕâÑùµÄ¸ñʽ¡£ ÎÒÃǵÄÔËÐл·¾³Á¬½ÓÆ÷Ö»»á¼ì²éÖ÷ (µÚÒ»¸ö) °æ±¾Êý×Ö¡£ Èç¹ûÔÚ¸üРport ʱÉý¼¶ÁËÆä¿âµÄÖ÷°æ±¾ºÅ£¬ ÔòÆäËüËùÓÐÁ¬½ÓÁËÊÜÓ°ÏìµÄ¿âµÄ port µÄ PORTREVISION ¶¼Ó¦µÝÔö£¬ ÒÔÇ¿ÖÆËüÃDzÉÓÃа汾µÄ¿âÖØÐ±àÒë¡£ Ports µÄ·¢ÐÐÏÞÖÆ ÖÚ¶àЭÒ飬²¢ÇÒÆäÖеÄһЩÖÂÁ¦ÓÚ ÏÞÖÆÔõÑùµÄÓ¦ÓóÌÐòÄܱ»´ò°ü£¬ ÊÇ·ñÄÜÓÃÓÚÏúÊÛÓ®ÀûµÈµÈ¡£ ×öΪһÃûporterÄúÓÐÒåÎñÈ¥ÔĶÁÈí¼þµÄЭÒé ²¢ÇÒÈ·±£FreeBSD ÏîÄ¿²»±ØÎªÍ¨¹ýFTP/HTTP »òCD-ROMÖØÐ·¢²¼Ô´Âë»ò±àÒëµÄ¶þ½øÖƶø½âÊÍ Ê²Ã´¡£Èç¹ûÓÐÈκÎÒÉÎÊ£¬ ÇëÁªÏµ &a.ports;¡£ ´¦ÓÚÕâÖÖÇé¿ö£¬¾Í¿ÉÒÔÉèÖÃÒÔÏÂÃèÊö µÄ±äÁ¿¡£ <makevar>NO_PACKAGE</makevar> (½ûÖ¹±àÒë½á¹û´ò°ü) Õâ¸ö±äÁ¿±íʾÎÒÃÇ¿ÉÄܲ»ÄÜÉú³ÉÕâ¸öÓ¦Óà ³ÌÐòµÄ¶þ½øÖÆÎļþ¡£ÀýÈ磬ËûµÄЭÒé²»ÔÊÐí ¶þ½øÖÆÎļþµÄÔٴη¢ÐУ¬»òÕßËû¿ÉÄܽûÖ¹´Ó ²¹¶¡¹ýµÄÔ´´úÂë´ò°üµÄ·¢ÐС£ ²»¹ÜÔõôÑù£¬portµÄ DISTFILES ¿ÉÒÔ ËæÒâµÄ¾µÏñµ½FTP/HTTP¡£³ý·ÇNO_CDROM ±äÁ¿Ò²±»ÉèÖã¬Èí¼þ°üÒ²¿ÉÒÔ·¢ÐÐÔÚÒ»ÕÅCD-ROM £¨»òÀàËÆµÄý½éÉÏ£©¡£ NO_PACKAGEÒ²ÄÜÓÃÔÚµ±¶þ½øÖưü ²»ÊǷdz£ÓÐÓ㬲¢ÇÒÕâ¸öÓ¦ÓÃÈí¼þ¾­³£Òª ´ÓÔ´´úÂë±àÒë¡£ÀýÈ磺µ±Õâ¸öÓ¦ÓÃÈí¼þÔÚ ±àÒëµÄʱºòÒªÔÚÅäÖÃÐÅÏ¢ÖÐÖ¸¶¨Ìض¨µÄÓ²¼þ ´úÂëʱ£¬¿ÉÒÔÉèÖÃNO_PACKAGE¡£ NO_PACKAGEÓ¦¸ÃÉèÖóÉ×Ö·û´® À´ÃèÊöΪʲôÕâ¸öÈí¼þ ²»ÄÜ´ò°ü¡£ <makevar>NO_CDROM</makevar> (½ûÖ¹ÒÔ CDROM ·¢ÐÐÔ¤±àÒë°ü) Õâ¸ö±äÁ¿½ö½öÖ¸³öËäÈ»ÎÒÃÇÔÊÐí Éú³É¶þ½øÖưü£¬µ«Ò²ÐíÎÒÃǼȲ»ÄܰÑÕâ¸ö Èí¼þ°üÒ²²»ÄܰÑportµÄDISTFILES ·ÅÔÚ¹âÅÌ£¨»òÀàËÆµÄý½é£©ÉÏÏúÊÛ¡£µ«²»¹ÜÔõôÑù£¬ ¶þ½øÖưüºÍportµÄDISTFILES ¿ÉÒÔ´ÓFTP/HTTPÉÏ»ñµÃ¡£ Èç¹ûÕâ¸ö±äÁ¿ºÍ NO_PACKAGEÒ»Æð±»ÉèÖ㬠ÄÇôÕâ¸öportµÄDISTFIELS ½«Ö»ÄÜ´ÓFTP/HTTPÉÏ»ñµÃ¡£ NO_CDROM Ó¦¸Ã±»ÉèÖóÉÒ»¸ö×Ö·û´® À´ÃèÊöΪʲôÕâ¸öport²»ÄÜÖØÐ·¢²¼ÔÚCD-ROMÉÏ¡£ ÀýÈ磺Èç¹ûÕâ¸öportµÄЭÒé½ö½öÊÇÓÃÓÚ·ÇÉÌÒµ»î¶¯ ,ÄÇôÕâ¸ö±äÁ¿¾ÍÄÜÉèÖÃÁË¡£ <makevar>NOFETCHFILES</makevar> (²»×Ô¶¯×¥È¡Ö¸¶¨µÄÎļþ) ÔÚ NOFETCHFILES ±äÁ¿Öж¨ÒåµÄÎļþ£¬ ²»»á×Ô¶¯´Ó MASTER_SITES ץȡ¡£ Ò»ÖÖµäÐ͵ÄÓÃÀýÊÇ£¬ ʹÓÃÀ´×Ôij¸öÈí¼þ¹©Ó¦ÉÌÌṩµÄ CD-ROM ÉϵÄÎļþ¡£ ÓÃÓÚ¼ì²éÔÚ MASTER_SITES ÉÏÊÇ·ñ°üº¬ÁËËùÐèÎļþµÄ¹¤¾ß£¬ Ó¦ºöÂÔÕâЩÎļþ£¬ ¶ø²»ÊDZ¨¸æËüÃDz»´æÔÚ¡£ <makevar>RESTRICTED</makevar> (½ûÖ¹ÈκÎÐÎʽµÄÔÙ·Ö·¢) Èç¹ûÓ¦ÓóÌÐò¼È²»ÔÊÐí¾µÏñÆä DISTFILES£¬ Ò²²»ÔÊÐí·¢²¼ÆäÔ¤±àÒë°æ±¾µÄ°ü£¬ ÉèÖÃËü¾Í¿ÉÒÔÁË¡£ NO_CDROM »ò NO_PACKAGE ²»Ó¦Óë RESTRICTED ͬʱÉèÖ㬠ÒòΪËü°üº¬ÁËÕâЩÇéÐΡ£ RESTRICTED Ó¦ÉèÖÃΪһ¸ö˵Ã÷ port ΪºÎ²»ÄÜ·¢²¼µÄ´®¡£ µäÐÍÇé¿ö¿ÉÄÜÊÇÓÉÓÚ port °üº¬ÁËרÓеÄÈí¼þ£¬ Òò¶øÓû§ÐèÒª×ÔÐÐÏÂÔØ DISTFILES£¬ ¿ÉÄÜÊÇ×¢²á»òÕßͬÒâijһ EULA µÄÌõ¿î¡£ <makevar>RESTRICTED_FILES</makevar> (½ûֹijЩÎļþµÄÔÙ·Ö·¢) µ±ÉèÖÃÁË RESTRICTED »ò NO_CDROM ʱ£¬ Õâ¸ö±äÁ¿»áĬÈÏÉèÖÃΪ ${DISTFILES} ${PATCHFILES}£¬ ·ñÔòËü»áΪ¿Õ¡£ Èç¹ûÖ»ÓÐijЩԴÂë°üÎļþÊÇÊÜÏ޵ģ¬ Ôò¿ÉÒÔÓÃÕâ¸ö±äÁ¿À´Ö¸Ã÷ËüÃÇ¡£ ×¢Ò⣬ port committer Ó¦¸ÃÔÚ /usr/ports/LEGAL ÖÐΪÿһ¸öÔ´Âë°üÎļþ׫д¶ÔÓ¦µÄÏîÄ¿£¬ ²¢½éÉÜÕâЩÏÞÖÆµÄÔ­Òò¡£ Áª±à»úÖÆ Ports µÄ²¢ÐÐÁª±à &os; ports ¿ò¼ÜÖ§³ÖʹÓöà¸ö make ×Ó½ø³ÌÀ´½øÐв¢ÐбàÒ룬 ÔÚ SMP ÉÏÕâ¿ÉÒÔÈ«ÃæµØÀûÓÃϵͳµÄ CPU ¼ÆËãÄÜÁ¦£¬ Áî port µÄÁª±à¹ý³Ì¸ü¿ì¡¢ ¸üÓÐЧÂÊ¡£ ĿǰÕâÊÇͨ¹ýÏòÔ­×÷ÕߵĴúÂë´«µÝ &man.make.1; ²ÎÊý -jX À´ÊµÏֵġ£ Òź¶µÄÊÇ£¬ ²¢²»ÊÇËùÓÐµÄ port ¶¼Äܹ»ºÜºÃµØ´¦ÀíÕâ¸öÑ¡Ïî¡£ Òò´Ë£¬ ±ØÐëͨ¹ýÃ÷È·µØÔÚ Makefile ÖÐÖ¸¶¨ MAKE_JOBS_SAFE=yes À´ÆôÓÃÕâÒ»¹¦ÄÜ¡£ ´Ó port ¼à»¤È˵ĽǶȻ¹ÓÐÒ»¸ö¿ØÖƵķ½·¨ÊÇÉèÖà MAKE_JOBS_UNSAFE=yes ±äÁ¿¡£ Õâ¸ö±äÁ¿Ö÷ÒªÊÇÓÃÓÚÒÑÖª²»ÄÜÓë -jX ÅäºÏʹÓÃµÄ port£¬ ¼´Ê¹Óû§ÔÚ /etc/make.conf Öж¨ÒåÁË FORCE_MAKE_JOBS=yes ±äÁ¿£¬ ϵͳҲ²»»áʹÓò¢ÐбàÒë¡£ <command>make</command>¡¢ <command>gmake</command>£¬ ÒÔ¼° <command>imake</command> Èç¹û port Óõ½ÁË GNU make£¬ Ó¦ÉèÖà USE_GMAKE=yes¡£ Óë <application>gmake</application> ÓÐ¹ØµÄ port ±äÁ¿ ±äÁ¿ ÒâÒå USE_GMAKE ´Ë port ÐèҪʹÓà gmake À´Íê³ÉÁª±à¹ý³Ì¡£ GMAKE ²»ÔÚ PATH ÖÐʱ£¬ gmake µÄÍêÕû·¾¶¡£
¶ÔÓÚ X Ó¦ÓóÌÐòµÄ port£¬ Èç¹ûËüʹÓà imake ¸ù¾Ý Imakefile ÎļþÀ´Éú³É Makefile£¬ ÔòÓ¦ÉèÖà USE_IMAKE=yes¡£ Õâ»áʹÁª±à¹ý³ÌÖеÄÅäÖà (configure) ½×¶Î×Ô¶¯Ö´ÐÐ xmkmf -a¡£ Èç¹û ±êÖ¾»á¸øÄúµÄ port ´øÀ´Âé·³£¬ ÔòÐèÉèÖà XMKMF=xmkmf¡£ Èç¹û port Óõ½ÁË imake µ«²¢²»Ê¹Óà install.man target£¬ ÔòÓ¦ÉèÖà NO_INSTALL_MANPAGES=yes¡£ Èç¹û port Ô´ÎļþµÄ Makefile µÄÖ÷Áª±à target ÊÇ all ÒÔÍâµÄÃû×Ö£¬ Ó¦¶ÔÓ¦µØÉèÖà ALL_TARGET¡£ ¶ÔÓÚ install ¶øÑÔ£¬ ¶ÔÓ¦µÄ±äÁ¿ÊÇ INSTALL_TARGET¡£
<command>configure</command> ½Å±¾ ¼ÙÈç port ʹÓà configure ½Å±¾À´´Ó Makefile.in Éú³É Makefile Îļþ£¬ ÐèÒªÉèÖà GNU_CONFIGURE=yes¡£ Èç¹ûÏ£Íû´«¶îÍâµÄ²ÎÊý¸ø configure ½Å±¾ (ĬÈϲÎÊýΪ --prefix=${PREFIX} --infodir=${PREFIX}/${INFO_PATH} --mandir=${MANPREFIX}/man --build=${CONFIGURE_TARGET})£¬ Ӧͨ¹ý CONFIGURE_ARGS À´Ö¸¶¨ÕâЩ²ÎÊý¡£ ÀàËÆµØ£¬ ¿ÉÒÔͨ¹ý CONFIGURE_ENV ±äÁ¿À´´«µÝһЩ»·¾³±äÁ¿¡£ Èç¹ûÄúµÄÈí¼þ°üʹÓà GNU configure£¬ ¶øÉú³ÉµÄ¿ÉÖ´ÐÐÎļþÃüÃû·½Ê½ ¹ÖÒì Èç i386-portbld-freebsd4.7-Ó¦ÓóÌÐòÃû£¬ ÔòÐèÒª¸ü½øÒ»²½µØÍ¨¹ý¸Ä±ä CONFIGURE_TARGET ±äÁ¿À´°´ÕÕ½Ïа汾µÄ autoconf Éú³ÉµÄ½Å±¾ËùÏ£ÍûµÄ·½Ê½Ö¸¶¨ target¡£ Æä·½·¨ÊÇ£¬ ½ôËæ Makefile ÖÐ GNU_CONFIGURE=yes Ò»ÐÐÖ®ºó¼ÓÈ룺 CONFIGURE_TARGET=--build=${MACHINE_ARCH}-portbld-freebsd${OSREL} ÓÃÓÚÓõ½ÁË <command>configure</command> ½Å±¾µÄ port µÄ±äÁ¿ ±äÁ¿ ÒâÒå GNU_CONFIGURE ´Ë port ÐèÒªÓà configure ½Å±¾À´×¼±¸Áª±à¡£ HAS_CONFIGURE Óë GNU_CONFIGURE ÀàËÆ£¬ µ«Ä¬È쵀 configure target ²¢²»¼ÓÈë CONFIGURE_ARGS¡£ CONFIGURE_ARGS Ï£Íû´«¸ø configure ½Å±¾µÄ¶îÍâ²ÎÊý¡£ CONFIGURE_ENV Ï£ÍûÔÚÖ´ÐÐ configure ½Å±¾Ê±ÉèÖõĻ·¾³±äÁ¿¡£ CONFIGURE_TARGET Ìæ»»Ä¬È쵀 configure target¡£ ÆäĬÈÏÖµÊÇ ${MACHINE_ARCH}-portbld-freebsd${OSREL}¡£
ʹÓà <command>scons</command> Èç¹ûÄúµÄ port ʹÓà SCons£¬ ¾ÍÐèÒª¶¨Òå USE_SCONS=yes ÁË¡£ ʹÓà <command>scons</command> µÄ port »áÓõ½µÄ±äÁ¿ ±äÁ¿ º¬Òå SCONS_ARGS µ±Ç° port Ï£Íû´«¸ø SCons »·¾³µÄ²ÎÊý¡£ SCONS_BUILDENV Ï£ÍûÔÚϵͳ»·¾³ÖÐÉèÖõıäÁ¿¡£ SCONS_ENV Ï£ÍûÔÚ SCons »·¾³ÖÐÉèÖõıäÁ¿¡£ SCONS_TARGET ´«µÝ¸ø SCons µÄ×îºóÒ»¸ö²ÎÊý£¬ ÀàËÆÓÚ MAKE_TARGET¡£
Èç¹ûÏ£ÍûÈõÚÈý·½µÄ SConstruct ×ðÖØÍ¨¹ý SCONS_ENV (ÆäÖÐ×îÖØÒªµÄÊÇ CC/CXX/CFLAGS/CXXFLAGS ÅäÖÃ) ´«¸ø Scons µÄÅäÖ㬠ÔòÐèÒª¶Ô SConstruct ½øÐÐÐ޸ģ¬ ʹÁª±àµÄ Environment °´ÏÂÁз½Ê½½¨Á¢£º env = Environment(**ARGUMENTS) Æäºó£¬ ¿ÉÒÔͨ¹ý env.Append ºÍ env.Replace À´¶ÔËü½øÐÐÐ޸ġ£
ÀûÓà GNU autotools ÈëÃÅ ÖÚ¶à GNU autotools ÌṩÁËÒ»ÖÖÔÚ¶àÖØ²Ù×÷ϵͳºÍ»úÆ÷¼Ü¹¹Ö®ÉÏÁª±àÈí¼þµÄ³éÏó»úÖÆ¡£ ÔÚ Ports Collection ÖУ¬ port ¿ÉÒÔͨ¹ý¼òµ¥µÄ·½·¨À´Ê¹ÓÃÕâЩ¹¤¾ß£º USE_AUTOTOOLS= ¹¤¾ß:°æ±¾[:²Ù×÷] ... ׫д±¾Êéʱ£¬ ¹¤¾ß ¿ÉÒÔÉèÖÃΪ libtool¡¢ libltdl¡¢ autoconf¡¢ autoheader¡¢ automake »ò aclocal Ö®Ò»¡£ °æ±¾ ÓÃÀ´Ö¸¶¨Ï£ÍûʹÓõŤ¾ßµÄÌØ¶¨°æ±¾ (²Î¼û devel/{automake,autoconf,libtool}[0-9]+ ÒÔÁ˽âÓÐЧµÄ°æ±¾ºÅ)¡£ ²Ù×÷ ÊÇÒ»¸ö¿ÉÑ¡µÄÀ©Õ¹Ñ¡Ï ÓÃÓÚÐÞ¸ÄÈçºÎʹÓù¤¾ß¡£ ¿ÉÒÔͬʱָ¶¨¶à¸ö²»Í¬µÄ¹¤¾ß£¬ ¿ÉÒÔÔÚÒ»ÐÐÖÐÖ¸¶¨£¬ Ò²¿ÉÒÔÓà Makefile µÄ += ½á¹¹¡£ ×îºó£¬ ¿ÉÒÔʹÓÃÒ»¸öÌØÊâµÄÃûΪ autotools µÄ¹¤¾ß£¬ Ëü»á°²×°È«²¿¿ÉÓÃµÄ autotools °æ±¾£¬ ÒÔÊÊÓ¦¿çƽ̨¿ª·¢µÄÐèÒª¡£ Äú¿ÉÒÔͨ¹ý°²×° devel/autotools port À´´ïµ½ÕâһĿµÄ¡£ <command>libtool</command> ʹÓà GNU Áª±à¿ò¼ÜµÄ¹²Ïí¿âͨ³£»áʹÓà libtool À´µ÷Õû¹²Ïí¿âµÄ±àÒëºÍ°²×°£¬ ÒÔ±ãÓëËùÔËÐеIJÙ×÷ϵͳÏàÆ¥Åä¡£ ͨ³£µÄ×ö·¨ÊÇʹÓÃÓ¦ÓóÌÐòËù¸½´øµÄ libtool ¸±±¾¡£ Èç¹ûÐèҪʹÓÃÍⲿµÄ libtool£¬ Ôò¿ÉÒÔʹÓà Ports Ì×¼þÌṩµÄ°æ±¾£º USE_AUTOTOOLS= libtool:°æ±¾[:env] Èç¹û²»Ê¹ÓöîÍâµÄ²Ù×÷·û£¬ libtool:°æ±¾ ±íʾϣÍûÁª±à¿ò¼ÜʹÓà configure ½Å±¾À´¶ÔϵͳËù°²×°µÄ libtool ½øÐÐÐÞ²¹¡£ Õâ»á°µº¬µØ¶¨Òå GNU_CONFIGURE¡£ ¸ü½øÒ»²½£¬ Áª±à¿ò¼Ü»¹»áÉèÖÃһϵÁÐ make ºÍ shell ±äÁ¿ÓÃÓÚ port ºóÐøµÄ²Ù×÷¡£ Çë²Î¼û bsd.autotools.mk ÁË½â½øÒ»²½µÄÏêÇé¡£ Èç¹ûÖ¸¶¨ÁË :env ²Ù×÷·û£¬ Ôò±íʾֻÉèÖû·¾³£¬ ¶øÌø¹ýÆäËûµÄ²Ù×÷¡£ ×îºó£¬ LIBTOOLFLAGS ºÍ LIBTOOLFILES ¿ÉÒÔÓÃÀ´Ìæ»»×î³£Ð޸ĵIJÎÊý£¬ ÒÔ¼°½«±» libtool ÐÞ²¹µÄÎļþ¡£ ¶àÊý port ²»ÐèÒªÕâÑù×ö¡£ Çë²Î¼û bsd.autotools.mk ÒÔÁË½â½øÒ»²½µÄϸ½Ú¡£ <command>libltdl</command> һЩ ports »áʹÓà libltdl ¿â£¬ ºóÕßÊÇ libtool Èí¼þ°üµÄÒ»²¿·Ö¡£ ʹÓÃÕâ¸ö¿â²¢²»Òâζ×űØÐëʹÓà libtool ±¾Éí£¬ Òò´ËÌṩÁËÁíÒ»×é½á¹¹¡£ USE_AUTOTOOLS= libltdl:°æ±¾ Ŀǰ£¬ ÕâÒ»ÉèÖÃËù×öµÄÈ«²¿¹¤×÷Êǽ« LIB_DEPENDS ÉèÖÃΪÊʵ±µÄ libltdl port£¬ ²¢×÷ΪһÏî·½±ãµÄ¹¦ÄÜ£¬ ЭÖú¿ª·¢ÈËÔ±Ïû³ýÔÚ USE_AUTOTOOLS ¿ò¼ÜÒÔÍâµÄ£¬ ¶ÔÓÚ autotools port µÄÒÀÀµ¡£ Õâ¸ö¹¤¾ß²¢²»ÌṩÆäËüµÄ²Ù×÷·û¡£ <command>autoconf</command> ºÍ <command>autoheader</command> ijЩ port ²¢Ã»ÓÐÖ±½ÓÌṩ configure ½Å±¾£¬ µ«°üº¬ÁË×÷Ϊ autoconf Ä£°åµÄ configure.ac Îļþ¡£ ¿ÉÒÔÓÃÏÂÁÐÉèÖÃÀ´ÒªÇó autoconf ´´½¨ configure ½Å±¾£¬ ²¢Ê¹Óà autoheader À´Îª configure ½Å±¾´´½¨Ä£°åÍ·Îļþ¡£ USE_AUTOTOOLS= autoconf:°æ±¾[:env] ÒÔ¼° USE_AUTOTOOLS= autoheader:°æ±¾ ÉÏÊöÉèÖûᰵº¬Ê¹Óà autoconf:°æ±¾¡£ ¶ÔÓÚ libtool£¬ ÉèÖÃÓëÇ°ÃæÀàËÆ¡£ Èç¹ûÖ¸¶¨¿ÉÑ¡µÄ :env ²Ù×÷·û£¬ Ôò±íʾֻÉèÖÃÓÃÓÚºóÐø¹¤×÷µÄ»·¾³¡£ Èç¹û²»Ö¸¶¨£¬ Ôò»á¶Ô port ½øÐÐÏàÓ¦µÄÐÞ²¹ºÍÖØÐÂÅäÖᣠÆäËüµÄ¿ÉÑ¡±äÁ¿£¬ Èç AUTOCONF_ARGS ºÍ AUTOHEADER_ARGS ¿ÉÒÔͨ¹ý port µÄ Makefile À´ÏÔʽµØÖ¸¶¨Ìæ»»¡£ ÀàËÆ libtool£¬ ¶àÊý port ²¢²»ÐèÒªÕâÑù×ö¡£ <command>automake</command> ºÍ <command>aclocal</command> ijЩÈí¼þ°üÖ»ÌṩÁË Makefile.am Îļþ¡£ ÕâЩÎļþ±ØÐëÊ×ÏÈÓà automake ת»»Îª Makefile.in ²¢Ê¹Óà configure À´Éú³Éʵ¼ÊµÄ Makefile¡£ ÀàËÆµØ£¬ ż¶û»áÓÐһЩÈí¼þ°ü²»ÌṩÁª±àËùÐèµÄ aclocal.m4 Îļþ¡£ ÕâЩÎļþ¿ÉÒÔͨ¹ýʹÓà aclocal À´É¨Ãè configure.ac »ò configure.in ×Ô¶¯Éú³É¡£ aclocal Óë automake ÓÐºÍ autoheader Óë autoconf ÔÚÇ°ÃæÒ»½ÚÖÐËù½éÉܵÄÏàÀàËÆµÄ¹ØÏµ¡£ aclocal »á°µº¬Ê¹Óà automake£¬ Òò´Ë£º USE_AUTOTOOLS= automake:°æ±¾[:env] ºÍ USE_AUTOTOOLS= aclocal:°æ±¾ Ò²×Ô¶¯°µº¬Ê¹Óà automake:°æ±¾¡£ Óë libtool ÀàËÆ£¬ autoconf Èç¹ûʹÓÃÁË¿ÉÑ¡µÄ :env ²Ù×÷·û±íʾ½ö½öÉèÖÃÓÃÓÚºóÐøÊ¹ÓõĻ·¾³£¬ Èç¹û²»ÉèÖ㬠Ôò»á¶Ô port ½øÐÐÖØÐÂÅäÖᣠ¶ÔÓÚ autoconf ºÍ autoheader ¶øÑÔ£¬ automake ºÍ aclocal ÌṩÁ˶ÔÓ¦µÄ¿ÉÑ¡²ÎÊý±äÁ¿ AUTOMAKE_ARGS ºÍ ACLOCAL_ARGS£¬ Èç¹ûÐèÒªµÄ»°£¬ ¿ÉÒÔÔÚ port µÄ Makefile ÖÐÖ¸¶¨¡£ ʹÓà GNU <literal>gettext</literal> »ù±¾Ó÷¨ Èç¹ûÄúµÄ port ÐèҪʹÓà gettext£¬ Ö»Òª½« USE_GETTEXT ÉèÖÃΪ yes£¬ ÄúµÄ port ¾Í»áÔö¼Ó¶Ô devel/gettext µÄÒÀÀµ¡£ USE_GETTEXT Ò²¿ÉÒÔÖ¸¶¨ÎªËùÐèµÄ libintl ¿âµÄ°æ±¾£¬ ËüÊÇ gettext µÄ»ù±¾×é³É²¿·Ö£¬ ¾¡¹ÜÈç´Ë£¬ Ç¿ÁÒ½¨ÒéÄú²»Òª ʹÓÃÕâ¸ö¹¦ÄÜ£º ÄúµÄ port Ó¦ÄÜÓëĿǰ°æ±¾µÄ devel/gettext ÅäºÏ¹¤×÷¡£ ÔÚ port ÖÐÏ൱³£¼ûµÄÇé¿öÏ£¬ »áÐèҪͬʱʹÓà gettext ºÍ configure¡£ Ò»°ã¶øÑÔ£¬ GNU configure Äܹ»×Ô¶¯¶¨Î»µ½ gettext¡£ Èç¹ûËüûÓгɹ¦µØÍê³ÉÕâÏ×÷£¬ Ôò¿ÉÒÔͨ¹ýÀàËÆÏÂÃæÕâÑùµÄ CPPFLAGS ºÍ LDFLAGS ½« gettext µÄλÖøæËßËü£º USE_GETTEXT= yes CPPFLAGS+= -I${LOCALBASE}/include LDFLAGS+= -L${LOCALBASE}/lib GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" \ LDFLAGS="${LDFLAGS}" µ±È»£¬ ²»ÐèÒª´«²ÎÊý¸ø configure ʱ£¬ ´úÂë¿ÉÒÔ¸üΪ¼òÁ·£º USE_GETTEXT= yes GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ LDFLAGS="-L${LOCALBASE}/lib" ¿ÉÑ¡Ó÷¨ һЩÈí¼þ²úÆ·ÌṩÁ˽ûÓà NLS µÄÄÜÁ¦£¬ ÀýÈ磬 ÔÚ configure ʱ£¬ Ö¸¶¨ ²ÎÊý¡£ Èç¹ûÄú port µÄÈí¼þÖ§³ÖÕâÖÖÅäÖ㬠ÔòÓ¦¸ù¾Ý WITHOUT_NLS µÄÉèÖÃÀ´ÓÐÌõ¼þµØÊ¹Óà gettext¡£ ¶ÔÓڱȽϼòµ¥ºÍ²»Ì«¸´Ô port£¬ Äú¿ÉÒÔʹÓÃÏÂÁнṹ£º GNU_CONFIGURE= yes .if !defined(WITHOUT_NLS) USE_GETTEXT= yes PLIST_SUB+= NLS="" .else CONFIGURE_ARGS+= --disable-nls PLIST_SUB+= NLS="@comment " .endif ÄúÒª×öµÄÏÂÒ»¼þÊÂÊǺÏÀíµØ°²ÅÅ×°Ïäµ¥Îļþ£¬ ʹÆä¸ù¾ÝÓû§ÅäÖÃÀ´¾ö¶¨ÊÇ·ñ½«ÏûÏ¢±à¼ (message catalog) Îļþ·ÅÈë×îÖÕµÄ×°Ïäµ¥¡£ Ç°ÃæÒѾ­½éÉÜÁËÔÚ Makefile ÖÐËùÐèµÄд·¨£¬ ÕâÖÖ×ö·¨ÔÚ ¸ß¼¶ pkg-plist Ó÷¨ Õâ½ÚÖнøÐÐÁ˽éÉÜ¡£ ¼òµ¥µØËµ£¬ ÔÚ pkg-plist ÖгöÏÖµÄ %%NLS%% ¾ù»áÔÚ½ûÓà NLS ʱ×Ô¶¯Ì滻Ϊ @comment £¬ ·´Ö®ÔòÌæ»»Îª¿Õ´®¡£ ÕâÑù£¬ ÔÚ×îÖÕµÄ×°Ïäµ¥Öдø %%NLS%% µÄÐУ¬ ÔÚ NLS ¹Ø±ÕµÄÇé¿öϾͻá±äΪעÊÍ£¬ ·´Ö®£¬ ÕâЩǰ׺¾Í»á×Ô¶¯É¾µô¡£ ÏÖÔÚÐèÒª×öµÄÊÂÇé¾ÍÊÇ°Ñ %%NLS%% ²åµ½ pkg-plist ÖеÄÏûÏ¢±à¼ÎļþµÄÄÇЩÐпªÍ·£¬ ÀýÈ磺 %%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo %%NLS%%share/locale/no/LC_MESSAGES/foobar.mo ÔڱȽϸ´ÔÓµÄÇéÐÎÖУ¬ Äú¿ÉÄÜÐèҪʹÓøü¸ß¼¶µÄ¼¼Êõ£¬ ÀýÈç ¶¯Ì¬Éú³É×°Ïäµ¥ µÈ¡£ ´¦ÀíÏûÏ¢±à¼Ŀ¼ ÔÚ°²×°ÏûÏ¢±à¼Îļþʱ»¹ÓÐÒ»¸öÐèҪעÒâµÄµØ·½¡£ ÕâЩÎļþ»á·Åµ½ LOCALBASE/share/locale ÏÂÓëÓïÑÔ¶ÔÓ¦µÄĿ¼ÖУ¬ ÕâЩĿ¼һ°ãÄúµÄ port ²»ÐèÒª´´½¨ºÍɾ³ý¡£ ×î³£ÓõÄÓïÑÔµÄĿ¼ÒѾ­ÔÚ /etc/mtree/BSD.local.dist ÖÐÁгö£» Ò²¾ÍÊÇ˵£¬ ËüÃÇÊÇ»ù±¾ÏµÍ³µÄÒ»²¿·Ö¡£ ÆäËûһЩÓïÑÔµÄĿ¼£¬ ÔòÓÉ devel/gettext ¿ØÖÆ¡£ Äú×îºÃ²é¿´Ò»Ï pkg-plist£¬ ÒÔÈ·¶¨ÊÇ·ñÕýÔÚ°²×°Ä³ÖÖ²»³£ÓÃÓïÑÔµÄÎļþ¡£ ʹÓà <literal>perl</literal> Èç¹û MASTER_SITES ÉèΪ MASTER_SITE_PERL_CPAN£¬ ÔòÓ¦¾¡Á¿°Ñ MASTER_SITE_SUBDIR ÉèÖÃΪ¶¥¼¶Ä¿Â¼µÄÃû×Ö¡£ ÀýÈ磬 ¶Ô p5-Module-Name ¶øÑÔÍÆ¼öµÄÃû×ÖÊÇ Module¡£ Äú¿ÉÒÔÔÚ cpan.org ÕÒµ½¶¥¼¶Ä¿Â¼µÄÃû×Ö¡£ Õâ¿ÉÒÔÈ·±£ÔÚÄ£¿éµÄ×÷Õß·¢Éú±ä»¯Ê±£¬ ±£³Ö port ¼ÌÐø¿ÉÓᣠÒÔÉϹæÔòÓÐÒ»¸öÀýÍ⣬ ¼´¶ÔӦĿ¼²»´æÔÚ»òÔ´Âë°ü²»ÔÚÄǸöĿ¼ÖÐʱ£¬ ÔÊÐíʹÓÃ×÷ÕßµÄ id ×÷Ϊ MASTER_SITE_SUBDIR¡£ ËùÓÐÕâЩѡÏî¾ùͬʱ½ÓÊÜ YES ºÍ°æ±¾´®£¬ ÀàËÆ 5.8.0+ ÕâÑùµÄд·¨¡£ ʹÓà YES ±íʾ port Äܹ»ÅäºÏËùÓÐÊÜÖ§³ÖµÄ Perl °æ±¾À´Ê¹ÓᣠÈç¹û port Ö»ÄÜÅäºÏÌØ¶¨°æ±¾µÄ Perl À´Ê¹Ó㬠Ôò¿ÉÒÔÓð汾´®À´±íʾ£¬ ÀýÈç×îµÍ°æ±¾ (Èç 5.7.3+)¡¢ ×î¸ß°æ±¾ (Èç 5.8.0-) »òij¸ö¾ßÌåµÄ°æ±¾ (Èç 5.8.3)¡£ ÓÃÓÚÓõ½ <literal>perl</literal> µÄ port µÄ±äÁ¿ ±äÁ¿ ÒâÒå USE_PERL5 ±íʾ port ½« perl 5 ÓÃÓÚÁª±àºÍÔËÐС£ USE_PERL5_BUILD ±íʾ port ½« perl 5 ÓÃÓÚÁª±à¡£ USE_PERL5_RUN ±íʾ port ½« perl 5 ÓÃÓÚÔËÐС£ PERL perl 5 µÄÍêÕû·¾¶£¬ ¿ÉÄÜÊÇϵͳ×Ô´øµÄ£¬ »òÕß´Ó port °²×°£¬ µ«Ã»Óа汾ºÅ¡£ Èç¹ûÄúÐèÒªÔڽű¾ÖÐÌæ»» #! ÐУ¬ ÔòӦʹÓÃÕâ¸ö±äÁ¿¡£ PERL_CONFIGURE ²ÉÓà Perl µÄ MakeMaker ½øÐÐÅäÖᣠÕâÒ»±äÁ¿Òþº¬ÉèÖà USE_PERL5¡£ PERL_MODBUILD ʹÓà Module::Build ½øÐÐÅäÖᢠÁª±à²¢°²×°¡£ ÕâÒ»±äÁ¿Òþº¬ÉèÖà PERL_CONFIGURE¡£ Ö»¶Á±äÁ¿ ÒâÒå PERL_VERSION ϵͳÖа²×°µÄ perl µÄÍêÕû°æ±¾ (ÀýÈ磬 5.8.9)¡£ PERL_LEVEL ϵͳÖа²×°µÄ perl µÄ°æ±¾ÕûÊýÖµ£¬ ÆäÐÎʽΪ MNNNPP (ÀýÈ磬 500809)¡£ PERL_ARCH perl ±£´æÄ³Æ½Ì¨×¨ÓõĿâµÄλÖᣠĬÈÏֵΪ ${ARCH}-freebsd¡£ PERL_PORT ϵͳÖÐËù°²×°µÄ perl port µÄÃû×Ö (ÀýÈ磬 perl5)¡£ SITE_PERL Õ¾µãרÓÃµÄ perl package °²×°Â·¾¶¡£ ÆäÖµ»á×Ô¶¯¼ÓÈëµ½ PLIST_SUB ÖС£
Perl Ä£¿éͨ³£²¢Ã»Óйٷ½ÍøÕ¾£¬ ÕâЩ port Ó¦½« cpan.org ×÷ΪÆä pkg-descr WWW ÐеÄÄÚÈÝ¡£ ÍÆ¼öµÄ URL ¸ñʽΪ http://search.cpan.org/dist/Module-Name/ (±£Áô×îºóµÄбÏß)¡£
ʹÓà X11 X.Org ×é¼þ ÔÚ Ports Ì×¼þÖÐÌṩµÄ X11 ʵÏÖÊÇ X.Org¡£ Èç¹ûÄúµÄÓ¦ÓóÌÐòÓõ½ÁË X ×é¼þ£¬ ÔòÓ¦½« USE_XORG ÉèΪËùÐèÒªµÄÄÇЩ×é¼þ¡£ Ŀǰ¿ÉÓõÄ×é¼þ°üÀ¨£º bigreqsproto compositeproto damageproto dmx dmxproto evieproto fixesproto fontcacheproto fontenc fontsproto fontutil glproto ice inputproto kbproto libfs oldx printproto randrproto recordproto renderproto resourceproto scrnsaverproto sm trapproto videoproto x11 xau xaw xaw6 xaw7 xaw8 xbitmaps xcmiscproto xcomposite xcursor xdamage xdmcp xevie xext xextproto xf86bigfontproto xf86dgaproto xf86driproto xf86miscproto xf86rushproto xf86vidmodeproto xfixes xfont xfontcache xft xi xinerama xineramaproto xkbfile xkbui xmu xmuu xorg-server xp xpm xprintapputil xprintutil xpr oto xproxymngproto xrandr xrender xres xscrnsaver xt xtrans xtrap xtst xv xvmc xxf86dga xxf86misc xxf86vm. ×îеÄÁÐ±í£¬ ¿ÉÒÔÔÚ /usr/ports/Mk/bsd.xorg.mk ÖÐÕÒµ½¡£ The Mesa Project ÊÇÒ»¸öÖÂÁ¦ÓÚ×ÔÓÉµÄ OpenGL ʵÏֵļƻ®¡£ Äú¿ÉÒÔʹÓà USE_GL ±äÁ¿À´Èà port ÒÀÀµÆä²»Í¬µÄ×é¼þ¡£ ¿ÉÓõÄÑ¡Ïî°üÀ¨£º glut, glu, glw, glew, gl ºÍ linux¡£ ΪÁËʵÏÖÏòǰ¼æÈÝ£¬ µ±Ê¹Óà yes ʱϵͳ»á×Ô¶¯½«ÆäÓ³ÉäΪ glu¡£ ʹÓà USE_XORG µÄÀý×Ó USE_XORG= xrender xft xkbfile xt xaw USE_GL= glu Ðí¶à ports »á¶¨Òå USE_XLIB£¬ Õâ»áµ¼Ö port ÒÀÀµ 50 ¶à¸ö¶¯Ì¬Á¬½Ó¿â¡£ ÓÉÓÚËü³öÏÖÓÚ X.org Ä£¿é»¯Ö®Ç°£¬ Òò´ËÕâ¸ö±äÁ¿½öΪÏòǰ¼æÈݵÄÔ­ÒòÌṩ£¬ Ð嵀 port ²»Ó¦ÔÙʹÓÃËü¡£ Óõ½ X µÄ port ¿ÉÒÔʹÓõıäÁ¿ USE_XLIB ´Ë port Óõ½ÁË X ¿â¡£ Òѹýʱ - ÄúӦʹÓà USE_XORG ±äÁ¿ÁгöÓõ½µÄ X.Org ×é¼þ£¬ ¶ø²»ÊÇʹÓÃÕâ¸ö±äÁ¿¡£ USE_IMAKE ´Ë port Óõ½ÁË imake¡£ USE_X_PREFIX Òѹýʱ¡£ ĿǰÆä×÷ÓÃÓë USE_XLIB Ïàͬ£¬ ²¢¿ÉÒÔÖ±½ÓÓúóÕßÌæ»»¡£ XMKMF ÉèÖÃΪ xmkmf µÄÍêÕû·¾¶Ãû£¬ Èç¹ûËü²»ÔÚ PATH Öеϰ¡£ ĬÈÏÖµÊÇ xmkmf -a¡£
ÓÃÓÚ±íʾ¶Ô X11 ijЩ×é¼þµÄÒÀÀµ¹ØÏµµÄ±äÁ¿ X_IMAKE_PORT ÓÃÒÔÌṩ imake ÒÔ¼°Ðí¶àÆäËüÓÃÓÚÁª±à X11 µÄ¹¤¾ßµÄ port¡£ X_LIBRARIES_PORT ÓÃÒÔÌṩ X11 ¿âµÄ port¡£ X_CLIENTS_PORT ÓÃÒÔÌṩ X ¿Í»§µÄ port¡£ X_SERVER_PORT ÓÃÒÔÌṩ X ·þÎñµÄ port¡£ X_FONTSERVER_PORT ÓÃÒÔÌṩ×ÖÌå·þÎñµÄ port¡£ X_PRINTSERVER_PORT ÓÃÒÔÌṩ´òÓ¡·þÎñµÄ port¡£ X_VFBSERVER_PORT ÓÃÒÔÌṩÔÚÐéÄâÖ¡»º´æ·þÎñ(virtual framebuffer server) µÄ port¡£ X_NESTSERVER_PORT ÓÃÒÔÌṩǶÌ× X ·þÎñµÄ port¡£ X_FONTS_ENCODINGS_PORT ÓÃÒÔΪ×ÖÌåÌṩ±àÂëµÄ port¡£ X_FONTS_MISC_PORT ÓÃÒÔÌṩ¶àÖÖλͼ×ÖÌåµÄ port¡£ X_FONTS_100DPI_PORT ÓÃÒÔÌṩ 100dpi λͼ×ÖÌåµÄ port¡£ X_FONTS_75DPI_PORT ÓÃÒÔÌṩ 75dpi λͼ×ÖÌåµÄ port¡£ X_FONTS_CYRILLIC_PORT ÓÃÒÔÌṩÎ÷Àï¶ûλͼ×ÖÌåµÄ port¡£ X_FONTS_TTF_PORT ÓÃÒÔÌṩ &truetype; ×ÖÌåµÄ port¡£ X_FONTS_TYPE1_PORT ÓÃÒÔÌṩ Type1 ×ÖÌåµÄ port¡£ X_MANUALS_PORT ÓÃÒÔÌá¹©ÃæÏò¿ª·¢ÈËÔ±µÄÁª»úÊÖ²áµÄ port¡£
ÔÚ±äÁ¿ÖÐʹÓÃÓë X11 ÓйصıäÁ¿ # ʹÓÃijЩ X11 ¿â²¢ÒÀÀµ×ÖÌå·þÎñºÍÎ÷Àï¶û×ÖÌå¡£ RUN_DEPENDS= ${LOCALBASE}/bin/xfs:${X_FONTSERVER_PORT} \ ${LOCALASE}/lib/X11/fonts/cyrillic/crox1c.pcf.gz:${X_FONTS_CYRILLIC_PORT} USE_XORG= x11 xpm
ÐèҪʹÓà Motif µÄ port Èç¹ûÄúµÄ port ÐèÒª Motif ¿â£¬ ÔòÓ¦ÔÚ Makefile Öж¨Òå USE_MOTIF¡£ ĬÈ쵀 Motif ʵÏÖÊÇ x11-toolkits/open-motif¡£ Óû§¿ÉÒÔͨ¹ýÉèÖà WANT_LESSTIF ±äÁ¿À´Ñ¡Ôñ x11-toolkits/lesstif ´úÌæËü¡£ bsd.port.mk »á½« MOTIFLIB ±äÁ¿ÉèÖÃΪµ½ºÏÊ浀 Motif ¿âµÄÒýÓᣠÇëʹÓò¹¶¡½«Äú port ÖÐ Makefile »ò Imakefile Ìáµ½ Motif ¿âµÄµØ·½¸ÄΪ ${MOTIFLIB}¡£ ÓÐÁ½ÖֱȽϳ£¼ûµÄÇé¿ö£º Èç¹û port Öн« Motif ÔÚÆä Makefile »ò Imakefile ±í´ïΪ -lXm£¬ Ôò¼òµ¥µØ½«ÆäÌæ»»Îª ${MOTIFLIB}¡£ Èç¹û port ÔÚÆä Imakefile ÖÐʹÓà XmClientLibs£¬ Ôò½«Æä¸ÄΪ ${MOTIFLIB} ${XTOOLLIB} ${XLIB}. ×¢Òâ MOTIFLIB (ͨ³£) »áÕ¹¿ªÎª -L/usr/X11R6/lib -lXm »ò /usr/X11R6/lib/libXm.a£¬ ËùÒÔ²»ÐèÒªÔÚÆäǰ¼ÓÈë -L »ò -l¡£ X11 ×ÖÌå Èç¹û port ½«Îª X Window ϵͳ°²×°×ÖÌ壬 ½«ÕâЩ×ÖÌå·Åµ½ LOCALBASE/lib/X11/fonts/local¡£ ͨ¹ý Xvfb À´»ñµÃÐéÄâµÄ <envar>DISPLAY</envar> ijЩӦÓóÌÐò±ØÐëÔÚÓпÉÓÃµÄ X11 ÏÔʾµÄʱºò²ÅÄܳɹ¦±àÒë¡£ µ±±àÒëµÄ»úÆ÷ûÓпØÖÆÌ¨Ê±£¬ Õâ»á´øÀ´ÎÊÌâ¡£ ΪÁ˽â¾öÕâ¸öÎÊÌ⣬ Èç¹û¶¨ÒåÁËÊʵ±µÄ±äÁ¿£¬ Áª±à»ù´¡ÉèÊ©»áÆô¶¯²ÉÓÃÐéÄâÖ¡»º´æµÄ X server¡£ ´Ëʱ£¬ ±àÒë¹ý³ÌÖн«»á´«³ö¿ÉÓÃµÄ DISPLAY¡£ USE_DISPLAY= yes ×ÀÃæÏî ͨ¹ýÀûÓà DESKTOP_ENTRIES ±äÁ¿£¬ ¿ÉÒÔºÜÈÝÒ×µØÔÚÄúµÄ port Öд´½¨×ÀÃæÏî (Freedesktop ±ê×¼)¡£ ÕâЩÏî»áÔÚÀàËÆ GNOME »ò KDE ÕâÑùµÄ·ûºÏÕâÒ»±ê×¼µÄ×ÀÃæ»·¾³ÖÐÏÔʾÔÚÓ¦ÓóÌÐò²Ëµ¥ÖС£ ÕâÑù×ö»á×Ô¶¯´´½¨¡¢ °²×° .desktop Îļþ£¬ ²¢½«Æä¼ÓÈë pkg-plist¡£ ÆäÓ﷨Ϊ£º DESKTOP_ENTRIES= "NAME" "COMMENT" "ICON" "COMMAND" "CATEGORY" StartupNotify Äú¿ÉÒÔÔÚ Freedesktop ÍøÕ¾ÉÏ ÕÒµ½¿ÉÓõķÖÀàÃû³Æ¡£ StartupNotify ±íʾӦÓóÌÐòÔÚÖ§³ÖÆô¶¯Í¨ÖªµÄ»·¾³ÖÐÇå³ý״̬ÐÅÏ¢¡£ Àý×Ó£º DESKTOP_ENTRIES= "ToME" "Roguelike game based on JRR Tolkien's work" \ "${DATADIR}/xtra/graf/tome-128.png" \ "tome -v -g" "Application;Game;RolePlaying;" \ false
ʹÓà GNOME FreeBSD/GNOME ÏîÄ¿×éʹÓÃÒ»×é×Ô¼ºµÄ±äÁ¿À´¶¨Òå port ËùʹÓÃµÄ GNOME ×é¼þ¡£ ÕâЩ±äÁ¿µÄÏêϸÁÐ±í ¿ÉÒÔÔÚ FreeBSD/GNOME ÏîÄ¿µÄÖ÷Ò³ÕÒµ½¡£ ʹÓà Qt ÔÚ port ÖÐʹÓà Qt ÓÃÓÚʹÓà Qt µÄ port µÄ±äÁ¿ USE_QT_VER ±íʾ port Óõ½ÁË Qt ¹¤¾ßÌ×¼þ¡£ ¿ÉÓõÄÖµ°üÀ¨ 3 ºÍ 4£» ÓÃÓÚÖ¸¶¨Ê¹ÓÃµÄ Qt µÄÖ÷°æ±¾¡£ ´ËÍ⣬ ϵͳ»á×Ô¶¯Îª configure ½Å±¾ºÍ make ÃüÁîÌṩ±ØÒªµÄ²ÎÊý¡£ QT_PREFIX Õâ¸ö±äÁ¿»á×Ô¶¯ÉèΪ Qt µÄ°²×°Â·¾¶ (Ö»¶Á±äÁ¿)¡£ MOC Õâ¸ö±äÁ¿»á×Ô¶¯ÉèΪ moc µÄ·¾¶ (Ö»¶Á±äÁ¿)¡£ ĬÈÏÖµÓë USE_QT_VER ±äÁ¿µÄÖµÓйء£ QTCPPFLAGS ͨ¹ý CONFIGURE_ENV ´«¸ø Qt ¹¤¾ßÌ×¼þµÄ±àÒë²ÎÊý¡£ ĬÈÏÅäÖÃÓë USE_QT_VER Óйء£ QTCFGLIBS ͨ¹ý CONFIGURE_ENV ´«¸ø Qt ¹¤¾ßÌ×¼þµÄÁ¬½Ó¿â¡£ ĬÈÏÅäÖÃÓë USE_QT_VER Óйء£ QTNONSTANDARD ½ûֹϵͳ×Ô¶¯ÐÞ¸Ä CONFIGURE_ENV¡¢ CONFIGURE_ARGS ºÍ MAKE_ENV¡£
ÆäËûÓÃÓÚʹÓà Qt 4.x µÄ±äÁ¿ QT_COMPONENTS ÓÃÓÚÖ¸¶¨ Qt4 ¹¤¾ßºÍº¯Êý¿âµÄÒÀÀµ¡£ ÏêÇé¼ûºó¡£ UIC Õâ¸ö±äÁ¿»á×Ô¶¯ÉèΪ uic µÄ·¾¶ (Ö»¶Á±äÁ¿)¡£ ĬÈÏÖµÓë USE_QT_VER Óйء£ QMAKE Õâ¸ö±äÁ¿»á×Ô¶¯ÉèΪ qmake µÄ·¾¶ (Ö»¶Á±äÁ¿)¡£ ÆäĬÈÏÖµÓë USE_QT_VER Óйء£ QMAKESPEC Õâ¸ö±äÁ¿»á×Ô¶¯ÉèΪ qmake ÅäÖÃÎļþµÄ·¾¶ (Ö»¶Á±äÁ¿)¡£ ÆäĬÈÏÖµÓë USE_QT_VER Óйء£
µ±ÉèÖÃÁË USE_QT_VER ʱ£¬ ϵͳ×Ô¶¯»á¸ø configure ½Å±¾´«Ò»ÏµÁÐÓÐÓõIJÎÊý£º CONFIGURE_ARGS+= --with-qt-includes=${QT_PREFIX}/include \ --with-qt-libraries=${QT_PREFIX}/lib \ --with-extra-libs=${LOCALBASE}/lib \ --with-extra-includes=${LOCALBASE}/include CONFIGURE_ENV+= MOC="${MOC}" CPPFLAGS="${CPPFLAGS} ${QTCPPFLAGS}" LIBS="${QTCFGLIBS}" \ QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}" Èç¹û½« USE_QT_VER ÉèΪ 4£¬ Ôò»¹»á½øÐÐÏÂÁÐÅäÖ㺠CONFIGURE_ENV+= UIC="${UIC}" QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}" MAKE_ENV+= QMAKESPEC="${QMAKESPEC}"
×é¼þµÄÑ¡Ôñ (½öÏÞ Qt 4.x) µ±°Ñ USE_QT_VER ÉèΪ 4 ʱ£¬ ¾Í¿ÉÒÔͨ¹ý QT_COMPONENTS ±äÁ¿À´Ö¸¶¨¶Ô Qt4 ¹¤¾ßºÍº¯Êý¿âµÄÒÀÀµÁË¡£ ͨ¹ýÔÚ×é¼þµÄÃû³ÆºóÃæÌí¼Ó _build »ò _run ÕâÑùµÄºó׺£¬ Ôò¿ÉÏàÓ¦µØ½«ÕâÒÀÀµ¹ØÏµÏÞÓÚÁª±à»òÔËÐÐʱ¿Ì¡£ ÔÚûÓÐÖ¸¶¨ºó׺ʱ£¬ ϵͳĬÈÏÔÚÁª±àºÍÔËÐÐʱ¿Ì¾ùÒÀÀµ¸Ã×é¼þ¡£ ͨ³£Çé¿öÏÂÔÚÖ¸Ã÷º¯Êý¿âÒ»ÀàµÄ×é¼þʱӦ²»Ê¹Óúó׺£¬ Áª±à¹¤¾ßÀà×é¼þӦʹÓà _build ºó׺£¬ ¶ø²å¼þÀà×é¼þ£¬ ÔòӦʹÓà _run ºó׺¡£ ϱíÖÐÁгöÁËһЩ×î³£ÓõÄ×é¼þ (È«²¿¿ÉÓõÄ×é¼þ£¬ ÔòÔÚ /usr/ports/Mk/bsd.qt.mk ÖÐµÄ _QT_COMPONENTS_ALL Áгö)£º ¿ÉÓÃµÄ Qt4 º¯Êý¿â×é¼þ Ãû×Ö ÃèÊö corelib ºËÐÄ¿â (ÔÚ port ֻʹÓà corelib ¶øÃ»ÓÐÓõ½ÆäËû¿âʱ¿ÉÒÔÊ¡ÂÔ) gui ͼÐÎÓû§½çÃæ¿â network ÍøÂ纯Êý¿â opengl OpenGL º¯Êý¿â qt3support Qt3 ¼æÈÝÖ§³Öº¯Êý¿â qtestlib µ¥Ôª²âÊÔº¯Êý¿â script ½Å±¾º¯Êý¿â sql SQL º¯Êý¿â xml XML º¯Êý¿â
Äú¿ÉÒÔͨ¹ýÔڳɹ¦±àÒëÖ®ºó£¬ ͨ¹ýÔÚÖ÷¿ÉÖ´ÐÐÎļþÉÏÔËÐÐ ldd À´È·¶¨ËùÐèµÄ¿â¡£ ¿ÉÓÃµÄ Qt4 ¹¤¾ß×é¼þ Ãû×Ö ÃèÊö moc Ôª¶ÔÏó±àÒëÆ÷ (¼¸ºõËùÓÐµÄ Qt Ó¦ÓóÌÐòÔÚÁª±à¹ý³ÌÖж¼ÐèÒªËü) qmake Makefile Éú³ÉÆ÷ / Áª±à¹¤¾ß rcc ×ÊÔ´±àÒëÆ÷ (Èç¹ûÓ¦ÓóÌÐòÖаüº¬ *.rc »ò *.qrc Îļþ£¬ ¾ÍÐèÒªËü) uic Óû§½çÃæ±àÒëÆ÷ (Èç¹ûÓ¦ÓóÌÐòÖаüº¬Ê¹Óà Qt Designer ´´½¨µÄ *.ui Îļþʱ¾ÍÐèÒªËü - Ò»°ã˵À´ Qt Ó¦ÓóÌÐò¶¼»áʹÓà GUI µÄ)
¿ÉÓÃµÄ Qt4 ²å¼þ×é¼þ Ãû×Ö ÃèÊö iconengines SVG ͼ±êÒýÇæ²å¼þ (Èç¹ûÓ¦ÓóÌÐòʹÓà SVG ͼ±ê) imageformats ÓÃÓÚ GIF¡¢ JPEG¡¢ MNG ºÍ SVG µÄ imageformat ²å¼þ (Èç¹ûÓ¦ÓóÌÐòʹÓÃͼƬÎļþ)
Ñ¡Ôñ Qt4 ×é¼þ ÔÚÕâ¸öÀý×ÓÖУ¬ ÎÒÃǽ«ÒªÒÆÖ²µÄÓ¦ÓóÌÐòÓõ½ÁË Qt4 ͼÐÎÓû§½çÃæº¯Êý¿â¡¢ Qt4 ºËÐÄ (core) º¯Êý¿â¡¢ ËùÓÐ Qt4 ´úÂëÉú³É¹¤¾ßÒÔ¼° Qt4 µÄ Makefile Éú³ÉÆ÷¡£ ÓÉÓÚ gui º¯Êý¿â»á×Ô¶¯¸½´ø¶ÔºËÐĺ¯Êý¿âµÄÒÀÀµ£¬ Òò´Ë²¢²»ÐèÒªÃ÷È·Ö¸³öÐèÒª corelib µÄÒÀÀµ¹ØÏµ¡£ Qt4 ´úÂëÉú³É¹¤¾ß moc¡¢ uic ºÍ rcc ÒÔ¼° Makefile Éú³ÉÆ÷ qmake Ö»ÔÚÁª±à¹ý³ÌÖвŻáÓõ½£¬ Òò´Ë¿ÉÒÔÖ¸¶¨ _build ºó׺£º USE_QT_VER= 4 QT_COMPONENTS= gui moc_build qmake_build rcc_build uic_build
ÆäËû¿¼ÂÇ Èç¹ûÓ¦ÓóÌÐòûÓÐÌṩ configure Îļþ£¬ ¶øÊǸøÁËÒ»¸ö .pro Îļþ£¬ ÔòÓ¦ÕâÑù£º HAS_CONFIGURE= yes do-configure: @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \ ${QMAKE} -unix PREFIX=${PREFIX} texmaker.pro Çë×¢Ò⣬ ÕâÓëϵͳÌṩµÄ BUILD.sh ÖÐµÄ qmake ÀàËÆ¡£ ´«µÝ CONFIGURE_ENV Äܹ»È·±£ qmake ¿ÉÒÔ¿´µ½ QMAKESPEC ±äÁ¿£¬ ·ñÔòËü¿ÉÄÜÎÞ·¨Õý³£¹¤×÷¡£ qmake »áÉú³É±ê×¼µÄ Makefile£¬ Òò´ËÎÞÐè×ÔÐбàд build target¡£ Qt Ó¦ÓóÌÐòͨ³£»á±àдΪÄܹ»¿çƽ̨ʹÓ㬠ͨ³£ X11/Unix ²¢²»ÊÇ¿ª·¢ËüµÄƽ̨£¬ ÓÐʱÕâ»áµ¼ÖÂһЩ±ß±ß½Ç½ÇµÄÎÊÌ⣬ ÀýÈ磺 ȱÉÙ±ØÒªµÄ includepaths¡£ Ðí¶àÓ¦ÓóÌÐò»áʹÓÃÍÐÅÌͼ±êÖ§³Ö£¬ µ«ºöÂÔÁËÕâЩͷ»ò¿âÎļþÐèÒªÔÚ X11 Ŀ¼ÖвéÕÒ¡£ Äú¿ÉÒÔͨ¹ýÃüÁîÐиæËß qmake ½«ÕâЩͷÎļþºÍº¯Êý¿â¼ÓÈëµ½ËÑË÷·¾¶ÖУ¬ ÀýÈ磺 ${QMAKE} -unix PREFIX=${PREFIX} INCLUDEPATH+=${LOCALBASE}/include \ LIBS+=-L${LOCALBASE}/lib sillyapp.pro ÓÐÎÊÌâµÄ°²×°Â·¾¶¡£ ÓÐʱ£¬ ÀàËÆÍ¼±ê»ò .desktop ÎļþÕâÑùµÄһЩÊý¾Ý£¬ ĬÈÏÇé¿öÏÂûÓа²×°µ½ XDG-¼æÈݵijÌÐò»áɨÃèµÄ·¾¶ÖС£ editors/texmaker ¾ÍÊÇÒ»¸öÕâÑùµÄÀý×Ó - Çë²Î¿¼Õâ¸ö port µÄ files Ŀ¼ÖÐµÄ patch-texmaker.pro£¬ ÒÔÁ˽âÈçºÎÔÚ Qmake ¹¤³ÌÎļþÖÐÐÞÕýÕâ¸öÎÊÌâ¡£
ʹÓà KDE ±äÁ¿¶¨Òå (Ö»ÓÃÓÚ KDE 3.x) ÓÃÓÚʹÓà KDE 3.x µÄ port µÄ±äÁ¿ USE_KDELIBS_VER ±íʾ port Óõ½ÁË KDE ¿â¡£ Õâ¸ö±äÁ¿¿ÉÒÔÖ¸¶¨Ï£ÍûʹÓÃµÄ KDE Ö÷°æ±¾ºÅ£¬ Èç¹ûÉèÖÃÁËÕâ¸ö±äÁ¿£¬ ÔòϵͳҲ»á½« USE_QT_VER ÉèΪÊʵ±µÄ°æ±¾¡£ ¸Ã±äÁ¿Ä¿Ç°Î¨Ò»ÓÐЧµÄÖµÊÇ 3¡£ USE_KDEBASE_VER ±íʾ port Óõ½ÁË KDE µÄ»ù±¾ÏµÍ³¡£ Õâ¸ö±äÁ¿¿ÉÒÔÖ¸¶¨Ï£ÍûʹÓÃµÄ KDE Ö÷°æ±¾ºÅ£¬ Èç¹ûÉèÖÃÁËÕâ¸ö±äÁ¿£¬ ÔòϵͳҲ»á½« USE_QT_VER ÉèΪÊʵ±µÄ°æ±¾¡£ ¸Ã±äÁ¿Ä¿Ç°Î¨Ò»ÓÐЧµÄÖµÊÇ 3¡£
ÓÃÓÚ KDE 4 µÄ±äÁ¿¶¨Òå Èç¹ûÄúµÄÓ¦ÓóÌÐòÐèҪʹÓà KDE 4.x£¬ ÔòÓ¦½« USE_KDE4 ÉèΪËùÐè×é¼þµÄÁÐ±í¡£ ÏÂÃæÁгöһЩ×î³£Óõ½µÄ×é¼þ (×îеÄ×é¼þÁбíλÓÚ /usr/ports/Mk/bsd.kde4.mk ÖÐµÄ _USE_KDE4_ALL)£º ¿ÉÓÃµÄ KDE4 ×é¼þ Ãû³Æ ˵Ã÷ akonadi ¸öÈËÐÅÏ¢¹ÜÀí (PIM)´æ´¢·þÎñ automoc4 Áî port ʹÓà automoc4 Áª±à¹¤¾ß¼¯ kdebase »ù±¾µÄ KDE Ó¦ÓóÌÐò (Konqueror¡¢ Dolphin¡¢ Konsole) kdeexp ÊÔÑéÐ﵀ KDE ¿â (°üº¬ÉÐδÍêȫȷ¶¨²»±äµÄ API) kdehier ³£ÓÃµÄ KDE Ŀ¼²ã´Î½á¹¹ kdelibs »ù±¾ KDE ¿â kdeprefix Èç¹ûÉèÖÃÁËÕâ¸öÑ¡Ï Ôò port ½«°²×°µ½ ${KDE4_PREFIX} ¶ø²»ÊÇ ${LOCALBASE} pimlibs PIM º¯Êý¿â workspace ÓÃÓÚ×é³É×ÀÃæµÄÓ¦ÓóÌÐòºÍº¯Êý¿â (Plasma¡¢ KWin)
KDE 4.x port »á°²×°µ½ ${KDE4_PREFIX}£¬ ĿǰÊÇ /usr/local/kde4£¬ ÒÔ±ÜÃâÓë KDE 3.x ports ³åÍ»¡£ ÕâÊÇͨ¹ýÖ¸¶¨ kdeprefix ×é¼þÀ´ÊµÏֵģ¬ Ëü±íÊ¾Ìæ»»Ä¬È쵀 PREFIX¡£ ²»¹ý£¬ port ÈÔ»á×ñѭͨ¹ý MAKEFLAGS »·¾³±äÁ¿ÉèÖÃµÄ PREFIX ÒÔ¼°ÆäËü make ²ÎÊý¡£ KDE 4.x ports ÓпÉÄÜºÍ KDE 3.x ports ³åÍ»£¬ Òò´ËÈç¹ûÆôÓÃÁË kdeprefix ×é¼þ£¬ ËüÃǻᰲװµ½ ${KDE4_PREFIX}¡£ Ŀǰ KDE4_PREFIX µÄĬÈÏÖµÊÇ /usr/local/kde4¡£ Ò²¿ÉÒÔ½« KDE 4.x ports °²×°µ½×Ô¶¨ÒåµÄ PREFIX¡£ µ± PREFIX ÊÇͨ¹ý MAKEFLAGS »·¾³±äÁ¿£¬ »òÖ±½ÓÔÚ make ÃüÁîÐÐÖ¸¶¨Ê±£¬ Ëü»áÌæ»» kdeprefix ÌṩµÄÅäÖᣠ<makevar>USE_KDE4</makevar> ʾÀý ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄ KDE 4 port¡£ USE_CMAKE Ö¸¶¨ port ʹÓà CMake — Ðí¶à KDE 4 ÏîÄ¿ËùʹÓõÄÅäÖù¤¾ß¡£ USE_KDE4 ÔòÒýÈë KDE º¯Êý¿â£¬ ²¢Áî port ÔÚÁª±à½×¶ÎʹÓà automoc4¡£ ÐèÒªµÄ KDE ×é¼þ£¬ ÒÔ¼°ÆäËûÒÀÀµµÄ×é¼þ¿ÉÒÔ´Ó configure µÄÈÕÖ¾ÖлñÖª¡£ USE_KDE4 ²¢²»»á×Ô¶¯ÉèÖà USE_QT_VER¡£ Èç¹û port ÐèҪʹÓÃijЩ Qt4 ×é¼þ£¬ ÔòÐèÒªÉèÖà USE_QT_VER ²¢Ö¸¶¨ËùÐèÒªµÄ×é¼þ¡£ USE_CMAKE= yes USE_KDE4= automoc4 kdelibs kdeprefix USE_QT_VER= 4 QT_COMPONENTS= qmake_build moc_build rcc_build uic_build
ʹÓà Java ±äÁ¿¶¨Òå Èç¹ûÄúµÄ port ÐèÒª Java™ ¿ª·¢°ü (JDK™) À´Íê³ÉÁª±à¡¢ Ö§³ÖÔËÐУ¬ ÉõÖÁÍê³É½â¿ªÔ´´úÂë°üÕâÑùµÄ¹¤×÷£¬ ¾ÍÓ¦¸Ã¶¨Òå USE_JAVA¡£ ÔÚ Ports Collection ÖÐÓÐÐí¶à²»Í¬µÄ JDK£¬ ËüÃǵİ汾¸÷²»Ïàͬ£¬ »òÊÇÀ´×Ô²»Í¬µÄ¹©Ó¦ÉÌ¡£ Èç¹ûÄúµÄ port ±ØÐëʹÓÃÆäÖеÄij¸öÌØ¶¨µÄ°æ±¾£¬ Ò²¿ÉÒÔÓèÒÔ¶¨Òå¡£ ×îеÄÎȶ¨°æ±¾ÊÇ java/jdk16¡£ Óõ½ Java µÄ port ¿ÉÒÔʹÓõıäÁ¿ ±äÁ¿ ÒâÒå USE_JAVA Ö»Óж¨ÒåËü²ÅÄÜʹÆäËü±äÁ¿ÉúЧ¡£ JAVA_VERSION Óÿոñ·Ö¿ªµÄÊÊºÏ port ʹÓÃµÄ Java °æ±¾¡£ ¿ÉÑ¡µÄ "+" ¿ÉÒÔÓÃÓÚÖ¸¶¨Ä³¸ö·¶Î§µÄ°æ±¾ (¿ÉÒÔÓ㺠1.5[+] 1.6[+] 1.7[+] )¡£ JAVA_OS Óÿոñ·Ö¿ªµÄÊÊÓ¦ port µÄ JDK port ²Ù×÷ϵͳÀàÐÍ (¿ÉÒÔÓ㺠native linux)¡£ JAVA_VENDOR Óÿոñ·Ö¿ªµÄÊÊÓ¦ port µÄ JDK port ¹©Ó¦ÉÌ (¿ÉÒÔÓ㺠freebsd bsdjava sun openjdk)¡£ JAVA_BUILD ÉèÖÃÕâ¸ö±äÁ¿±íʾËùÑ¡µÄ JDK port Ó¦±»ÁÐÈë port µÄÁª±àÒÀÀµ¹ØÏµ¡£ JAVA_RUN ÉèÖÃÕâ¸ö±äÁ¿±íʾËùÑ¡µÄ JDK port Ó¦±»ÁÐÈë port µÄÔËÐл·¾³ÒÀÀµ¹ØÏµ¡£ JAVA_EXTRACT ÉèÖÃÕâ¸ö±äÁ¿±íʾËùÑ¡µÄ JDK port Ó¦±»ÁÐÈë port µÄ½âѹËõÖ§³ÖÒÀÀµ¹ØÏµ¡£
ÏÂÃæÊÇÔÚÉèÖÃÁË USE_JAVA Ö®ºó£¬ port Äܹ»´ÓϵͳÖлñµÃµÄÅäÖ㺠ÏòʹÓÃÁË Java µÄ port ÌṩµÄ±äÁ¿ ±äÁ¿ Öµ JAVA_PORT JDK port µÄÃû×Ö (ÀýÈç 'java/diablo-jdk16')¡£ JAVA_PORT_VERSION JDK port µÄÍêÕû°æ±¾ (ÀýÈç '1.6.0')¡£ Èç¹ûÄúÖ»ÐèÒª°æ±¾ºÅµÄǰÁ½Î»£¬ Ôò¿ÉÓà ${JAVA_PORT_VERSION:C/^([0-9])\.([0-9])(.*)$/\1.\2/}¡£ JAVA_PORT_OS ËùÓà JDK port µÄ²Ù×÷ϵͳ (ÀýÈç 'native')¡£ JAVA_PORT_VENDOR ËùÓà JDK port µÄ¹©Ó¦ÉÌ (ÀýÈç 'freebsd')¡£ JAVA_PORT_OS_DESCRIPTION ËùÓà JDK port ²Ù×÷ϵͳµÄÃèÊö (ÀýÈç 'Native')¡£ JAVA_PORT_VENDOR_DESCRIPTION ËùÓà JDK port ¹©Ó¦É̵ÄÃèÊö (ÀýÈç 'FreeBSD Foundation')¡£ JAVA_HOME JDK µÄ°²×°Ä¿Â¼ (ÀýÈç '/usr/local/diablo-jdk1.6.0')¡£ JAVAC ËùÓà Java ±àÒëÆ÷µÄÍêÕû·¾¶ (ÀýÈç '/usr/local/diablo-jdk1.6.0/bin/javac')¡£ JAR ËùÓà jar ¹¤¾ßµÄÍêÕû·¾¶ (ÀýÈç '/usr/local/diablo-jdk1.6.0/bin/jar' »ò '/usr/local/bin/fastjar')¡£ APPLETVIEWER ËùÓà appletviewer ¹¤¾ßµÄÍêÕû·¾¶ (ÀýÈç '/usr/local/diablo-jdk1.6.0/bin/appletviewer')¡£ JAVA ËùÓà java Ö´ÐÐÎļþµÄÍêÕû·¾¶¡£ ÄúӦʹÓÃËüÀ´Ö´ÐÐ Java ³ÌÐò (ÀýÈç '/usr/local/diablo-jdk1.6.0/bin/java')¡£ JAVADOC ËùÓà javadoc ¹¤¾ßµÄÍêÕû·¾¶¡£ JAVAH ËùÓà javah ³ÌÐòµÄÍêÕû·¾¶¡£ JAVAP ËùÓà javap ³ÌÐòµÄÍêÕû·¾¶¡£ JAVA_KEYTOOL ËùÓà keytool ¹¤¾ßµÄÍêÕû·¾¶¡£ JAVA_N2A ËùÓà native2ascii ¹¤¾ßµÄÍêÕû·¾¶¡£ JAVA_POLICYTOOL ËùÓà policytool ³ÌÐòµÄÍêÕû·¾¶¡£ JAVA_SERIALVER ËùÓà serialver ³ÌÐòµÄÍêÕû·¾¶¡£ RMIC ËùÓà RMI ×®/¼Ü Éú³ÉÆ÷£¬ rmic µÄÍêÕû·¾¶¡£ RMIREGISTRY ËùÓà RMI ×¢²á±í³ÌÐò£¬ rmiregistry µÄÍêÕû·¾¶¡£ RMID ËùÓà RMI ·þÎñ³ÌÐò rmid µÄÍêÕû·¾¶¡£ JAVA_CLASSES ËùÓà JDK ÀàÎļþĿ¼µÄÍêÕû·¾¶¡£ ${JAVA_HOME}/jre/lib/rt.jar¡£
Äú¿ÉÒÔʹÓà java-debug make target ÒÔ»ñÈ¡ÓÃÓÚµ÷ÊÔ port µÄÐÅÏ¢¡£ ´ó¶àÊýǰÊö±äÁ¿µÄÖµ½Ô»áÓèÒÔ³ÊÏÖ¡£ ´ËÍ⣬ »¹»á¶¨ÒåÏÂÊö³£Á¿£¬ ÒÔÈ·±£ËùÓÐµÄ Java port ¾ùÒÔÒ»ÖÂÖ®·½Ê½°²×°£º ΪʹÓà Java µÄ port ¶¨ÒåµÄ³£Á¿ ³£Á¿ Öµ JAVASHAREDIR ËùÓÐ Java Ïà¹Ø×ÊÁϵݲװ¸ùĿ¼¡£ ĬÈÏÖµ£º ${PREFIX}/share/java. JAVAJARDIR ÓÃÒÔ°²×° JAR ÎļþµÄĿ¼¡£ ĬÈÏÖµ£º ${JAVASHAREDIR}/classes¡£ JAVALIBDIR ÆäËü port °²×°µÄ JAR ÎļþËùÔÚµÄĿ¼¡£ ĬÈÏÖµ£º ${LOCALBASE}/share/java/classes¡£
Ïà¹ØµÄÏîÒ²»á¶¨ÒåÔÚ PLIST_SUB (ÔÚ ÖнøÐнéÉÜ) ºÍ SUB_LIST ÖС£
²ÉÓà Ant ½øÐÐÁª±à Èç¹û port ²ÉÓà Apache Ant ½øÐÐÁª±à£¬ ÔòÐèÒª¶¨Òå USE_ANT¡£ ÈçÊÇ£¬ Ôò Ant ½«×÷Ϊ ×Ó-make ÃüÁîÀ´Ê¹ÓᣠÈç¹û port 䶨Òå do-build target£¬ Ôò½«Ä¬ÈÏÒÀ MAKE_ENV¡¢ MAKE_ARGS ºÍ ALL_TARGET¡£ µÄÉèÖÃÖ´ÐÐ Ant¡£ ÕâÀàËÆÓÚ ÖнéÉܵĹØÓÚ USE_GMAKE µÄ»úÖÆ¡£ ×î¼Ñʵ¼ù Èç¹ûÄúÕýÒÆÖ²Ä³¸ö Java ¿â£¬ ÄúµÄ port Ó¦°Ñ JAR Îļþ°²×°µ½ ${JAVAJARDIR}£¬ ¶øÆäËüÎļþÔòÓ¦·ÅÔÚ ${JAVASHAREDIR}/${PORTNAME} Ï (³ýÁËÎĵµ£¬ ²Î¼ûÏÂÎÄ)¡£ Òª¼õÉÙ´ò°üÎļþµÄ³ß´ç£¬ Äú¿ÉÒÔÖ±½ÓÔÚ Makefile ÖÐÒýÓÃÕâЩ JAR Îļþ£¬ ¾ßÌå×ö·¨ÊÇʹÓÃÏÂÃæµÄÓï¾ä (´Ë´¦µÄ myport.jar ÊÇ×÷Ϊ port Ò»²¿·Ö°²×°µÄ JAR ÎļþµÄÃû×Ö)£º PLIST_FILES+= %%JAVAJARDIR%%/myport.jar ÒÆÖ² Java Ó¦ÓóÌÐòʱ£¬ port ͨ³£»áÏ£Íû½«ËùÓÐÎļþ°²×°µ½Í¬Ò»Ä¿Â¼ (°üÀ¨ÆäÒÀÀµµÄ JAR)¡£ ÕâʱǿÁÒ½¨ÒéʹÓà ${JAVASHAREDIR}/${PORTNAME}¡£ ÒÆÖ²Èí¼þµÄ¿ª·¢ÈËÔ±£¬ ¿ÉÒÔ×ÔÐоö¶¨ÊÇ·ñ½«ËùÒÀÀµµÄÆäËü JAR °²×°µ½´ËĿ¼£¬ »òÖ±½ÓʹÓÃÒѾ­×°ºÃµÄÄÇЩ (À´×Ô ${JAVAJARDIR})¡£ ÎÞÂÛÄúÕýÖÆ×÷ÄÄÒ»ÀàµÄ port (¿â»òÕßÓ¦ÓóÌÐò)£¬ ¸½¼ÓµÄÎĵµ¶¼Ó¦°²×°µ½ºÍÆäËü port ͬÑùµÄλÖᣠÒѾ­ÖªµÀ£¬ JavaDoc »á¸ù¾Ý JDK °æ±¾µÄ²»Í¬¶ø²úÉú²»Í¬µÄÎļþ¡£ ¶ÔÓÚÄÇЩ²»´òËãÇ¿ÖÆÊ¹ÓÃÄ³Ò»ÌØ¶¨°æ±¾ JDK µÄ port ¶øÑÔ£¬ ÕâÎÞÒÉÌá¸ßÁËÖÆ×÷×°Ïäµ¥ (pkg-plist) µÄÄѶȡ£ ÕâÊÇΪʲôǿÁÒ½¨ÒéʹÓà PORTDOCS ºêµÄÔ­Òò¡£ ¸ü½øÒ»²½£¬ ¼´Ê¹ÄúÄܹ»Ô¤²â javadoc ½«ÒªÉú³ÉµÄÎļþ£¬ ËùÐèµÄ pkg-plist µÄ³ß´ç£¬ Ò²ÊǹĴµÊ¹Óà PORTDOCS µÄÒ»´óÀíÓÉ¡£ DATADIR µÄĬÈÏÖµÊÇ ${PREFIX}/share/${PORTNAME}¡£ ¶Ô Java port ¶øÑÔ½« DATADIR ¸ÄΪ ${JAVASHAREDIR}/${PORTNAME} ÊÇÒ»¸öºÃÖ÷Òâ¡£ µ±È»£¬ DATADIR »á×Ô¶¯¼Óµ½ PLIST_SUB ÖÐ (ÔÚ ÓÐËù½éÉÜ) Òò´ËÄú¿ÉÒÔÔÚ pkg-plist ÖÐÖ±½ÓʹÓà %%DATADIR%%¡£ ׫д±¾ÎÄʱ£¬ ¶ÔÊÇÓ¦¸Ã´ÓÔ´´úÂëÁª±à£¬ »¹ÊÇÖ±½Ó°²×°Ô¤±àÒëµÄ Java ports °²×°°ü²¢Ã»ÓÐÃ÷È·µÄ¹æ¶¨¡£ ¾¡¹ÜÈç´Ë£¬ &os; Java Project µÄ¿ª·¢ÈËÔ±ÈÔ¹ÄÀøÒÆÖ²Èí¼þµÄ¿ª·¢ÕßÔÚ²»Âé·³µÄÇé¿öϾ¡¿ÉÄÜ´ÓÔ´´úÂëÍê³ÉÁª±à¡£ ±¾½ÚÖÐËù½éÉܵÄÈ«²¿ÌØÐÔ£¬ ¾ùÊÇÔÚ bsd.java.mk ÖÐʵÏֵġ£ Èç¹ûÄú¸Ð¾õ×Ô¼ºµÄ port ÐèÒª¸üΪ¸´Ô Java Ö§³Ö£¬ ÇëÊ×ÏȲÎÔÄ bsd.java.mk CVS ÈÕÖ¾£¬ ÒòΪͨ³£×«ÎĽéÉÜ×îÐÂÌØÐÔÐèҪһЩʱ¼ä¡£ ´ËÍ⣬ Èç¹ûÄúÈÏΪËùȱÉÙµÄÖ§³Ö¶ÔÐí¶àÆäËü Java port ÒàÊôÓÐÒæ£¬ ÇëÔÚ &a.java; ¶ÔÆä½øÐÐÌÖÂÛ¡£ ÔÚ PR ÖÐµÄ java Àà±ð£¬ Ö÷ÒªÊÇÓÃÓÚ &os; Java project ÒÆÖ² JDK ±¾ÉíÖ®ÓᣠÒò¶ø£¬ Ìá½»ÄúµÄ Java port ʱ£¬ Ó¦¹éÈë ports Àà±ð£¬ ³ý·ÇÄúÕý³¢ÊÔ½â¾öµÄÎÊÌâÊÇ JDK ʵÏÖ±¾Éí»ò bsd.java.mk µÄ¡£ ÀàËÆµØ£¬ ÄúÓ¦²Î¿¼ ÖÐËùÏêÊöµÄ¹ØÓÚ CATEGORIES ÔÚ Java port ÖеÄʹÓùæÔò¡£
Web Ó¦Ó㬠Apache ºÍ PHP Apache Óõ½ Apache µÄ port ¿ÉÒÔʹÓõıäÁ¿ USE_APACHE ´Ë port ÐèÒª Apache¡£ ¿ÉÓõÄÖµ£º yes (ÈÎÒâ¿ÉÓð汾)¡¢ 1.3¡¢ 2.0¡¢ 2.2¡¢ 2.0+¡¢ µÈµÈ¡£ ĬÈÏÒÀÀµµÄ°æ±¾ÊÇ 1.3¡£ WITH_APACHE2 ´Ë port ÐèÒª Apache 2.0¡£ Èç¹ûûÓÐÕâ¸ö±äÁ¿£¬ Ôò port ½«ÒÀÀµ Apache 1.3¡£ ÕâÒ»±äÁ¿Ä¿Ç°ÒѾ­¹ýʱ£¬ Òò¶ø²»Ó¦¼ÌÐøÊ¹ÓᣠAPXS µ½ apxs ¿ÉÖ´ÐÐÎļþµÄÍêÕû·¾¶¡£ Äú¿ÉÒÔÔÚ port ÖÐÌæ´ú¸ÃÖµ¡£ HTTPD µ½ httpd ¿ÉÖ´ÐÐÎļþµÄÍêÕû·¾¶¡£ Äú¿ÉÒÔÔÚ port ÖÐÌæ´ú¸ÃÖµ¡£ APACHE_VERSION ĿǰϵͳÖа²×°µÄ Apache °æ±¾ (Ö»¶Á±äÁ¿)¡£ ÕâÒ»±äÁ¿Ö»ÓÐÔÚÒýÓÃÁË bsd.port.pre.mk Ö®ºó²ÅÄÜʹÓ㬠Æä¿ÉÄܵÄֵΪ£º 13¡¢ 20¡¢ 22¡£ APACHEMODDIR Apache Ä£¿éËùÔÚµÄÎļþ¼Ð¡£ ÔÚ pkg-plist ÖУ¬ ÕâÒ»±äÁ¿»á×Ô¶¯Õ¹¿ª¡£ APACHEINCLUDEDIR Apache Í·ÎļþËùÔÚµÄÎļþ¼Ð¡£ ÔÚ pkg-plist ÖУ¬ ÕâÒ»±äÁ¿»á×Ô¶¯Õ¹¿ª¡£ APACHEETCDIR Apache ÅäÖÃÎļþËùÔÚµÄÎļþ¼Ð¡£ ÔÚ pkg-plist ÖУ¬ ÕâÒ»±äÁ¿»á×Ô¶¯Õ¹¿ª¡£
ÔÚÒÆÖ² Apache Ä£¿éʱ±È½ÏÓÐÓõıäÁ¿ MODULENAME Ä£¿éµÄÃû³Æ¡£ ĬÈÏֵΪ PORTNAME¡£ ÀýÈ磺 mod_hello SHORTMODNAME Ä£¿éµÄ¼òÂÔÃû×Ö¡£ ĬÈÏÇé¿öÏ»á×Ô¶¯¸ù¾Ý MODULENAME ¼ÆË㣬 µ«ÄúÒ²¿ÉÒÔ×ÔÐÐÉèÖÃÖµÀ´Ìæ´úËü¡£ ÀýÈ磺 hello AP_FAST_BUILD ʹÓà apxs À´±àÒëºÍ°²×°Ä£¿é¡£ AP_GENPLIST ͬʱ×Ô¶¯´´½¨ pkg-plist¡£ AP_INC ÔÚ±àÒë¹ý³ÌÖУ¬ ½«Ö¸¶¨µÄĿ¼¼ÓÈëµ½ËÑË÷Í·ÎļþµÄĿ¼ÖС£ AP_LIB ÔÚ±àÒë¹ý³ÌÖУ¬ ½«Ö¸¶¨µÄĿ¼¼ÓÈëµ½ËÑË÷º¯Êý¿âµÄĿ¼ÖС£ AP_EXTRAS ´«µÝ¸ø apxs µÄ¶îÍâ²ÎÊý¡£
Web Ó¦Óà Web Ó¦ÓóÌÐòÓ¦°²×°µ½ PREFIX/www/Ó¦ÓóÌÐòµÄÃû×Ö¡£ Ϊ·½±ãÆð¼û£¬ Õâ¸ö·¾¶ÔÚ Makefile ºÍ pkg-plist ¾ùÒÔ WWWDIR ±äÁ¿µÄÐÎʽÌṩ¡£ ÔÚ Makefile ÖпÉÒÔʹÓà WWWDIR_REL À´±íʾ°üº¬ÁË PREFIX µÄ¸Ã±äÁ¿Öµ¡£ web ·þÎñÆ÷½ø³ÌËùÓõÄÓû§ºÍÓû§×飬 ·Ö±ðÒÔ WWWOWN ºÍ WWWGRP ±äÁ¿µÄÐÎʽÌṩ£¬ Èç¹ûÄúÐèÒªÐÞ¸ÄijЩÎļþµÄÊôÖ÷µÄ»°¡£ ÕâÁ½¸ö±äÁ¿µÄĬÈÏÖµ¾ùΪ www¡£ Èç¹ûÄúµÄ port Ï£ÍûʹÓÃÆäËûÖµ£¬ ÇëʹÓà WWWOWN?= myuser ÕâÖÖд·¨£¬ ÒÔ±ãÈÃÓû§Äܹ»¸üÈÝÒ×µØÐÞ¸ÄËü¡£ ³ý·ÇÄúµÄ port ±ØÐèʹÓà Apache£¬ ·ñÔò²»Òª½«ÆäдÈëÒÀÀµ¹ØÏµ¡£ Çë×ðÖØÔËÐÐÄúµÄÓ¦ÓóÌÐòµÄÓû§Ñ¡Ôñ Apache ÒÔÍâµÄÆäËû web ·þÎñÆ÷µÄÐèÇó¡£ PHP Óõ½ PHP µÄ port ÖпÉÒÔʹÓõıäÁ¿ USE_PHP ´Ë port ÐèÒª PHP¡£ ȡֵΪ yes ½«°Ñ PHP ¼ÓÈëÒÀÀµ¹ØÏµ¡£ ´ËÍ⣬ »¹¿ÉÒÔÔÚ´ËÖ¸¶¨½«ËùÐèÒªµÄ PHP À©Õ¹Ä£¿é¡£ ÀýÈ磺 pcre xml gettext DEFAULT_PHP_VER Ñ¡ÔñÔÚûÓа²×° PHP ʱ×Ô¶¯°²×°µÄ PHP Ö÷°æ±¾¡£ ĬÈÏÊÇ 4¡£ ¿ÉÑ¡ 4¡¢ 5 Ö®Ò»¡£ IGNORE_WITH_PHP ´Ë port ÎÞ·¨Óë¸ø¶¨°æ±¾µÄ PHP һͬ¹¤×÷¡£ ¿ÉѡֵΪ 4¡¢ 5 Ö®Ò»¡£ USE_PHPIZE ´Ë port ½«×÷Ϊ PHP À©Õ¹Ä£¿é½øÐÐÁª±à¡£ USE_PHPEXT ´Ë port ½«×÷Ϊ PHP À©Õ¹£¬ ÇÒÐèÒª×÷ΪÀ©Õ¹Ä£¿é×¢²á¡£ USE_PHP_BUILD Áª±àÒÀÀµÓÚ PHP¡£ WANT_PHP_CLI Ï£ÍûʹÓà CLI (ÃüÁîÐÐ) °æ±¾µÄ PHP¡£ WANT_PHP_CGI Ï£ÍûʹÓà CGI °æ±¾µÄ PHP¡£ WANT_PHP_MOD Ï£ÍûʹÓà Apache Ä£¿é°æ±¾µÄ PHP¡£ WANT_PHP_SCR Ï£ÍûʹÓà CLI »ò CGI °æ±¾µÄ PHP¡£ WANT_PHP_WEB Ï£ÍûʹÓà Apache Ä£¿é»ò CGI °æ±¾µÄ PHP¡£
PEAR Ä£¿é ÒÆÖ² PEAR Ä£¿éµÄ¹ý³Ì·Ç³£¼òµ¥¡£ ʹÓà FILES¡¢ TESTS¡¢ DATA¡¢ SQLS¡¢ SCRIPTFILES¡¢ DOCS ÒÔ¼° EXAMPLES ÕâЩ±äÁ¿À´Ö¸Ã÷ÄúÏ£Íû°²×°µÄÎļþ¡£ ËùÓÐÕâÀïÁгöµÄÎļþ¶¼»á×Ô¶¯°²×°µ½ºÏÊʵÄλÖ㬠²¢¼ÓÈë pkg-plist¡£ ÔÚ Makefile ÎļþµÄ×îºóÒ»ÐÐÒýÈë ${PORTSDIR}/devel/pear/bsd.pear.mk¡£ ÓÃÓÚ PEAR ÀàµÄ Makefile Àý×Ó PORTNAME= Date PORTVERSION= 1.4.3 CATEGORIES= devel www pear MAINTAINER= example@domain.com COMMENT= PEAR Date and Time Zone Classes BUILD_DEPENDS= ${PEARDIR}/PEAR.php:${PORTSDIR}/devel/pear-PEAR RUN_DEPENDS= ${BUILD_DEPENDS} FILES= Date.php Date/Calc.php Date/Human.php Date/Span.php \ Date/TimeZone.php TESTS= test_calc.php test_date_methods_span.php testunit.php \ testunit_date.php testunit_date_span.php wknotest.txt \ bug674.php bug727_1.php bug727_2.php bug727_3.php \ bug727_4.php bug967.php weeksinmonth_4_monday.txt \ weeksinmonth_4_sunday.txt weeksinmonth_rdm_monday.txt \ weeksinmonth_rdm_sunday.txt DOCS= TODO _DOCSDIR= . .include <bsd.port.pre.mk> .include "${PORTSDIR}/devel/pear/bsd.pear.mk" .include <bsd.port.post.mk>
ʹÓà Python Ports Ì×¼þÖ§³Öͬʱ²¢Ðа²×°¶à¸ö²»Í¬µÄ Python °æ±¾¡£ Ports Ӧȷ±£Äܹ»¸ù¾ÝÓû§ÅäÖÃµÄ PYTHON_VERSION ±äÁ¿Ê¹ÓÃÕýÈ·µÄ python ½âÊÍÆ÷¡£ Ò»°ã˵À´£¬ ÕâÊÇͨ¹ý½«½Å±¾ÖÐµÄ python ·¾¶ÃûÌæ»»Îª PYTHON_CMD ±äÁ¿µÄÖµÀ´ÊµÏֵġ£ ÔÚ PYTHON_SITELIBDIR ϰ²×°ÎļþµÄ ports Ó¦ÔÚ°üÃûÉÏʹÓà pyXY- ǰ׺£¬ ÒÔ±ãÃ÷ʾËüÃǽ«»áÅäºÏÄĸö Python °æ±¾Ê¹ÓᣠPKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} ¶ÔÓõ½ Python µÄ port ×îÓÐÓõÄһЩ±äÁ¿ USE_PYTHON ´Ë port ÐèÒª Python¡£ ¿ÉÒÔÓà 2.3+ ÕâÑùµÄÐÎʽÀ´Ö¸¶¨ËùÏ£ÍûµÄ°æ±¾¡£ ³ý´ËÖ®Í⣬ Ò²¿ÉÒÔÓúáÏßÀ´·Ö¸ôÁ½¸ö°æ±¾ºÅ£¬ ÒÔ±íʾij¸ö·¶Î§µÄ°æ±¾£¬ ÀýÈ磺 2.1-2.3 USE_PYDISTUTILS ʹÓà Python distutils À´Íê³ÉÅäÖᢠ±àÒëºÍ°²×°¡£ ¶Ô°üº¬ setup.py µÄ port ¶øÑÔÕâÊDZØÐèµÄ¡£ Ëü»á×Ô¶¯¸²¸ÇĬÈ쵀 do-build ÒÔ¼° do-install ÕâÁ½¸ö target¡£ Èç䶨Òå GNU_CONFIGURE£¬ Ëü»¹»á¸Ä±ä do-configure¡£ PYTHON_PKGNAMEPREFIX ×÷Ϊ PKGNAMEPREFIX À´Çø·Ö²»Í¬ Python °æ±¾µÄ package¡£ ÀýÈ磺 py24- PYTHON_SITELIBDIR ȫվ package ËùÔÚµÄĿ¼£¬ Ëü°üÀ¨ÁË Python µÄ°²×°Ä¿Â¼ (ͨ³£ÊÇ LOCALBASE)¡£ ÔÚ°²×° Python Ä£¿éʱ£¬ PYTHON_SITELIBDIR ±äÁ¿»á·Ç³£ÓÐÓᣠPYTHONPREFIX_SITELIBDIR È¥µôÁË PREFIX ²¿·ÖµÄ PYTHON_SITELIBDIR¡£ Ó¦¾¡¿ÉÄÜÔÚ pkg-plist ÖÐʹÓà %%PYTHON_SITELIBDIR%%¡£ %%PYTHON_SITELIBDIR%% µÄĬÈÏÖµÊÇ lib/python%%PYTHON_VERSION%%/site-packages PYTHON_CMD Python ½âÊÍÆ÷µÄÃüÁîÐУ¬ °üÀ¨°æ±¾ºÅ¡£ PYNUMERIC ½«ÊýÖµ´¦ÀíÀ©Õ¹Ä£¿é¼ÓÈëÒÀÀµ¹ØÏµ¡£ PYNUMPY ¶ÔÐÂÔöµÄÊýÖµ¼ÆËãÀ©Õ¹, numpyµÄÒÀÀµ¡£ (PYNUMERIC ĿǰÒѱ»×÷ÕßÌÔÌ­)¡£ PYXML ½« XML À©Õ¹Ä£¿é¼ÓÈëÒÀÀµ¹ØÏµ¡£ (¶ÔÓÚ Python 2.0 ºÍ¸ü¸ß°æ±¾²»ÔÙÐèÒª£¬ ÒòΪËüÒѾ­³ÉΪÁ˱ê×¼×é¼þ)¡£ USE_TWISTED ½« twistedCore ¼ÓÈëÒÀÀµ¹ØÏµ¡£ Ò²¿ÉÒÔÓÃÕâ¸ö±äÁ¿Ö¸¶¨ËùÐèµÄ×é¼þ£¬ ÀýÈ磺 web lore pair flow USE_ZOPE ¼ÓÈë¶Ô Zope£¬ Ò»ÖÖ web Ó¦ÓÃÆ½Ì¨µÄÒÀÀµ¡£ Õâ»á°Ñ Python ÒÀÀµ¸ÄΪ Python 2.3¡£ ´ËÍâ ZOPEBASEDIR Ò²»á×Ô¶¯ÉèΪ Zope °²×°Ä¿Â¼µÄλÖá£
ÍêÕûµÄ¿ÉÓñäÁ¿ÁÐ±í£¬ ¿ÉÒÔÔÚ /usr/ports/Mk/bsd.python.mk ÖÐÕÒµ½¡£
ʹÓà <application>Tcl/Tk</application> Ports Ì×¼þÖ§³Öͬʱ°²×°¶à¸ö Tcl/Tk °æ±¾¡£ Ports Ó¦ÖÁÉÙÖ§³ÖĬÈ쵀 Tcl/Tk °æ±¾£¬ ÒÔ¼°Í¨¹ý USE_TCL ºÍ USE_TK ±äÁ¿Ö¸¶¨µÄ¸ü¸ß°æ±¾¡£ Ï£ÍûʹÓÃµÄ tcl °æ±¾£¬ Ôò¿ÉÒÔͨ¹ý WITH_TCL_VER ±äÁ¿À´Ê¹ÓᣠÓõ½ <application>Tcl/Tk</application> µÄ port ¿ÉÒÔʹÓõıäÁ¿ USE_TCL ±íʾ port ÒÀÀµÓÚ Tcl º¯Êý¿â (²»ÊÇ shell)¡£ ¿ÉÒÔÖ¸¶¨ÐèÒªµÄ×îµÍ°æ±¾£¬ ÀýÈç 84+¡£ ²»Ö§³ÖµÄ°æ±¾£¬ ¿ÉÒÔÔÚ INVALID_TCL_VER ±äÁ¿ÖÐÖð¸öÖ¸¶¨¡£ USE_TCL_BUILD ±íʾ port ÔÚÁª±à¹ý³ÌÖÐÐèҪʹÓà Tcl¡£ USE_TCL_WRAPPER ÐèҪʹÓà Tcl shell ¶ø²»ÐèÒªÌØ¶¨°æ±¾µÄ tclsh µÄ port ¿ÉÒÔʹÓÃÕâ¸öбäÁ¿¡£ ϵͳÖлᰲװ tclsh wrapper£¬ Óû§Ôò¿ÉÒÔÖ¸¶¨ËùÏ£ÍûµÄ tcl shell¡£ WITH_TCL_VER ÓÉÓû§¶¨ÒåµÄ¡¢ Ï£ÍûʹÓÃµÄ Tcl °æ±¾¡£ UNIQUENAME_WITH_TCL_VER ºÍ WITH_TCL_VER ÀàËÆ£¬ µ«ÊÇÕë¶Ô port Ö¸¶¨µÄ¡£ USE_TCL_THREADS ÐèÒª°üº¬Ïß³ÌÖ§³ÖµÄ Tcl/Tk¡£ USE_TK ±íʾ port ÒÀÀµÓÚ Tk ¿â (²»ÊÇ wish shell)¡£ Ëüͬʱ»áÒþº¬½« USE_TCL ÉèÖÃΪÏàͬµÄÖµ¡£ ¸ü¶àµÄÃèÊö£¬ Çë²Î¿¼ USE_TCL ±äÁ¿¡£ USE_TK_BUILD Óë USE_TCL_BUILD ±äÁ¿±í´ïÀàËÆµÄº¬Òå¡£ USE_TK_WRAPPER Óë USE_TCL_WRAPPER ±äÁ¿±í´ïÀàËÆµÄº¬Òå¡£ WITH_TK_VER ±í´ïÓë WITH_TCL_VER ±äÁ¿ÀàËÆµÄº¬Ò壬 Ëüͬʱ»áÒþº¬½« WITH_TCL_VER ÉèÖÃΪÏàͬµÄÖµ¡£
¿ÉÓõıäÁ¿µÄÍêÕûÁÐ±í£¬ ¿ÉÒÔÔÚ /usr/ports/Mk/bsd.tcl.mk ÖÐÕÒµ½¡£
ʹÓà Emacs ±¾½ÚÉÐÓдý׫д¡£ ʹÓà Ruby ʹÓà Ruby µÄ port ¿ÉÒÔʹÓõıäÁ¿ ±äÁ¿ ˵Ã÷ USE_RUBY ´Ë port ÐèÒª Ruby¡£ USE_RUBY_EXTCONF ´Ë port ʹÓà extconf.rb À´Íê³ÉÅäÖᣠUSE_RUBY_SETUP ´Ë port ʹÓà setup.rb À´Íê³ÉÅäÖᣠRUBY_SETUP ½«´Ë±äÁ¿ÃûÉèÖÃΪËùÓÃµÄ setup.rb µÄÎļþÃû¡£ ͨ³£»áÊÇ install.rb¡£
ϱíչʾÁË ports ϵͳÌṩ¸ø port ×÷ÕßµÄһЩ±äÁ¿¡£ ÄúӦʹÓÃÕâЩ±äÁ¿£¬ ÒÔ±ã°ÑÎļþ×°µ½ºÏÊʵÄλÖᣠÇ뾡¿ÉÄÜ¶àµØÔÚ pkg-plist ÖÐʹÓÃËüÃÇ¡£ ÕâЩ±äÁ¿²»Ó¦ÔÚ port ÖÐÖØÐ¶¨Òå¡£ ʹÓà Ruby µÄ port ÖеÄһЩ¿ÉÓõÄÖ»¶Á±äÁ¿ ±äÁ¿ ˵Ã÷ ʾ·¶Öµ RUBY_PKGNAMEPREFIX ×÷Ϊ PKGNAMEPREFIX ÒÔÇø·ÖÓÃÓÚ²»Í¬ Ruby °æ±¾µÄ package¡£ ruby18- RUBY_VERSION x.y.z ÐÎʽµÄÍêÕû ruby °æ±¾¡£ 1.8.2 RUBY_SITELIBDIR ƽ̨Î޹ؿâµÄ°²×°Â·¾¶¡£ /usr/local/lib/ruby/site_ruby/1.8 RUBY_SITEARCHLIBDIR ƽ̨Ïà¹ØµÄ¿âµÄ°²×°Â·¾¶¡£ /usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd6 RUBY_MODDOCDIR Ä£¿éÎĵµµÄ°²×°Â·¾¶¡£ /usr/local/share/doc/ruby18/patsy RUBY_MODEXAMPLESDIR Ä£¿éÓÃÀýµÄ°²×°Â·¾¶¡£ /usr/local/share/examples/ruby18/patsy
¿ÉÓñäÁ¿µÄÍêÕûÁÐ±í£¬ ¿ÉÒÔÔÚ /usr/ports/Mk/bsd.ruby.mk ÖÐÕÒµ½¡£
ʹÓà SDL ±äÁ¿ USE_SDL ¿ÉÒÔÓÃÓÚ×Ô¶¯ÅäÖà port µÄÒÀÀµ¹ØÏµ£¬ ÒÔÊÊӦʹÓÃÀàËÆ devel/sdl12 ºÍ x11-toolkits/sdl_gui ÕâЩÒÀÀµ SDL µÄ¿âµÄÇéÐΡ£ ĿǰϵͳÄܹ»Ê¶±ðÏÂÁÐ SDL ¿â£º sdl: devel/sdl12 gfx: graphics/sdl_gfx gui: x11-toolkits/sdl_gui image: graphics/sdl_image ldbad: devel/sdl_ldbad mixer: audio/sdl_mixer mm: devel/sdlmm net: net/sdl_net sound: audio/sdl_sound ttf: graphics/sdl_ttf Òò´Ë£¬ Èç¹û port ÐèÒªÒÀÀµ net/sdl_net ºÍ audio/sdl_mixer£¬ Ôò¶ÔÓ¦µÄд·¨½«ÊÇ£º USE_SDL= net mixer ͬʱ£¬ net/sdl_net ºÍ audio/sdl_mixer ËùÒÀÀµµÄ devel/sdl12 Ò²»á±»×Ô¶¯µØ¼ÓÈë¡£ ¼ÓÈëÄúʹÓà USE_SDL£¬ Ëü½«×Ô¶¯µØ£º ½«¶ÔÓÚ sdl12-config µÄÒÀÀµ¹ØÏµ¼ÓÈëµ½ BUILD_DEPENDS ½«±äÁ¿ SDL_CONFIG ¼ÓÈëµ½ CONFIGURE_ENV ½«¶ÔËùÑ¡µÄ¿âµÄÒÀÀµ£¬ ¼ÓÈëµ½ LIB_DEPENDS Òª¼ì²éij¸öÌØ¶¨µÄ SDL ¿âÊÇ·ñ¿ÉÓ㬠¿ÉÒÔͨ¹ý WANT_SDL ±äÁ¿À´´ïµ½Ä¿µÄ£º WANT_SDL=yes .include <bsd.port.pre.mk> .if ${HAVE_SDL:Mmixer}!="" USE_SDL+= mixer .endif .include <bsd.port.post.mk> ʹÓà <application>wxWidgets</application> ÕâÒ»½Ú½éÉÜÁËÔÚ ports tree ÖÐµÄ wxWidgets ¿âµÄÏÖ×´£¬ ÒÔ¼°ËüÓë ports ϵͳµÄ¼¯³É¡£ ½éÉÜ Ðí¶à²»Í¬°æ±¾µÄ wxWidgets ¿âÖ®¼äÊÇ´æÔÚÏ໥³åÍ»µÄ (ËüÃǻᰲװͬÃûµÄÎļþ) ÔÚ ports ϵͳÖУ¬ ÕâÒ»ÎÊÌâÊÇͨ¹ý½«²»Í¬µÄ°æ±¾ÒÔ°üº¬°æ±¾ºÅºó׺µÄÃû×Ö°²×°À´½â¾öµÄ¡£ ÕâÑù×öµÄÒ»¸ö×îÃ÷ÏÔµÄȱµãÊÇ£¬ Ó¦ÓóÌÐò±ØÐë½øÐÐÐ޸ģ¬ ²ÅÄÜÕÒµ½ËùÏ£ÍûµÄ°æ±¾¡£ ÐÒÔ˵ÄÊÇ£¬ ¶àÊýÓ¦ÓóÌÐò»áµ÷Óà wx-config ½Å±¾À´È·¶¨ÐèÒªµÄ±àÒëÆ÷ºÍÁ¬½ÓÆ÷Ñ¡Ïî¡£ Õâ¸ö½Å±¾»áËæ¿ÉÓõİ汾²»Í¬¶øÓв»Í¬µÄÃû×Ö¡£ Ö÷ÒªµÄÓ¦ÓóÌÐò¶¼»á×ðÖØ»·¾³±äÁ¿µÄÅäÖ㬠»òÌṩһ¸ö configure ²ÎÊý£¬ ÓÃÒÔÖ¸¶¨µ÷ÓÃÄĸö wx-config¡£ Èç¹û²»ÊÇÕâÑùµÄ»°£¬ ¾ÍÐèÒª¶ÔÓ¦ÓóÌÐò´ò²¹¶¡ÁË¡£ °æ±¾µÄÑ¡Ôñ ΪÁËÈÃÄúµÄ port ʹÓÃÖ¸¶¨°æ±¾µÄ wxWidgets£¬ ¿ÉÒÔ¶¨ÒåÁ½¸ö±äÁ¿ (Èç¹ûÖ»¶¨ÒåÁËÒ»¸ö£¬ ÔòÁíÒ»¸ö»áȡĬÈÏÖµ)£º ÓÃÓÚÑ¡Ôñ <application>wxWidgets</application> °æ±¾µÄ±äÁ¿ ±äÁ¿ ˵Ã÷ ĬÈÏÖµ USE_WX ÁгöÕâ¸ö port ÄÜʹÓõİ汾 È«²¿°æ±¾ USE_WX_NOT ÁгöÕâ¸ö port ²»ÄÜʹÓõİ汾 ÎÞ
ÏÂÃæÊÇ¿ÉÓÃµÄ wxWidgets °æ±¾£¬ ÒÔ¼°¶ÔÓ¦µÄ ports£º ¿ÉÓÃµÄ <application>wxWidgets</application> versions °æ±¾ Port 2.4 x11-toolkits/wxgtk24 2.6 x11-toolkits/wxgtk26 2.8 x11-toolkits/wxgtk28
´Ó 2.5 °æ¿ªÊ¼£¬ Ò²ÌṩÁ˶ÔÓ¦µÄ Unicode °æ±¾£¬ ÕâÖÖ°æ±¾¿ÉÒÔͨ¹ý slave port °²×°£¬ ÓëÆÕͨ°æ±¾Ïà±È£¬ Ëü»á¶àÒ»¸ö -unicode ºó׺£¬ ²»¹ýÕâ¿ÉÒÔͨ¹ýʹÓñäÁ¿À´´¦Àí (Çë²Î¼û )¡£ ÔÚ ÖеıäÁ¿£¬ ¿ÉÒÔÉèΪÏÂÁÐÖµ»òÓɿոñ·Ö¸ôµÄ×éºÏ£º <application>wxWidgets</application> °æ±¾ ˵Ã÷ Àý×Ó µ¥¸ö°æ±¾ 2.4 ij°æ±¾ÒÔÉϰ汾 2.4+ ij°æ±¾ÒÔϰ汾 2.6- ij¶Î°æ±¾ (°æ±¾ºÅ½ÏСµÄ±ØÐëÔÚǰ) 2.4-2.6
³ý´ËÖ®Í⣬ »¹ÓÐһЩÓÃÒÔ´Ó¿ÉÓõı¾ÄDZ¾ÖÐÑ¡ÔñËùÏ£ÍûµÄ°æ±¾µÄ±äÁ¿¡£ ÕâÖÖ±äÁ¿Ò²¿ÉÒÔÉèΪһ×é°æ±¾£¬ ¶ø¿¿Ç°µÄ°æ±¾µÄÓÅÏȼ¶¸ü¸ß¡£ ÓÃÓÚÑ¡ÔñÏ£ÍûµÄ°æ±¾µÄ <application>wxWidgets</application> versions ±äÁ¿Ãû ÓÃÓÚ WANT_WX_VER port WITH_WX_VER Óû§
Ñ¡Ôñ×é¼þ Ò²ÓÐһЩÆäËûÓ¦Ó㬠¾¡¹ÜËüÃDZ¾Éí²¢²»ÊÇ wxWidgets ¿â£¬ µ«È´ÓëÖ®Ïà¹Ø¡£ ÕâЩӦÓóÌÐò¿ÉÒÔÔÚ WX_COMPS ±äÁ¿ÖÐʹÓ㬠ÒÔÏÂÊÇ¿ÉÓõÄ×é¼þ£º ¿ÉÓÃµÄ <application>wxWidgets</application> ×é¼þ Ãû³Æ ˵Ã÷ °æ±¾ÏÞÖÆ wx Ö÷¿â ÎÞ contrib µÚÈý·½¿â ÎÞ python wxPython (Python °ó¶¨) 2.4-2.6 mozilla wxMozilla 2.4 svg wxSVG 2.6
Äú¿ÉÒÔΪÿ¸öÒÀÀµµÄ×é¼þ£¬ ͨ¹ýðºÅ·Ö¸ôµÄºó׺ָ¶¨ÆäÀàÐÍ¡£ Èç¹ûûÓÐÖ¸¶¨£¬ Ôò»áʹÓÃĬÈϵÄÒÀÀµÀàÐÍ (²Î¼û )¡£ ÏÂÃæÊÇ¿ÉÓõÄÀàÐÍ£º ¿ÉÓÃµÄ <application>wxWidgets</application> ÒÀÀµÀàÐÍ Ãû³Æ ˵Ã÷ build Áª±àʱÐèÒª¸Ã×é¼þ£¬ Ï൱ÓÚ BUILD_DEPENDS run ÔËÐÐʱÐèÒª¸Ã×é¼þ£¬ Ï൱ÓÚ RUN_DEPENDS lib Áª±àºÍÔËÐÐʱ¾ùÐèÒª¸Ã×é¼þ£¬ Ï൱ÓÚ LIB_DEPENDS
×é¼þµÄĬÈÏÒÀÀµ¹ØÏµÀàÐÍ£¬ ÈçϱíËùʾ£º ĬÈ쵀 <application>wxWidgets</application> ÒÀÀµ¹ØÏµÀàÐÍ ×é¼þ ÒÀÀµ¹ØÏµÀàÐÍ wx lib contrib lib python run mozilla lib svg lib
Ñ¡Ôñ <application>wxWidgets</application> ×é¼þ ÏÂÃæµÄƬ¶ÎչʾÁËʹÓà wxWidgets °æ±¾ 2.4 ¼°µÚÈý·½¿âµÄ·½·¨¡£ USE_WX= 2.4 WX_COMPS= wx contrib
Unicode wxWidgets ¿â´ÓÆä 2.5 °æ¿ªÊ¼Ö§³Ö Unicode ÁË¡£ ÔÚ ports ϵͳÖУ¬ ÕâÁ½ÖÖ°æ±¾¾ùÓÐÌṩ£¬ ²¢¿ÉÒÔͨ¹ýÏÂÁбäÁ¿À´Ñ¡Ôñ£º ÓÃÒÔÔÚ Unicode °æ±¾µÄ <application>wxWidgets</application> µÄ±äÁ¿ ±äÁ¿ ˵Ã÷ ×÷Óà WX_UNICODE ¸Ã port Ö»ÄÜ ÅäºÏ Unicode °æ±¾Ê¹Óà port WANT_UNICODE port Äܹ»ÓëÁ½ÖÖ°æ±¾ÅäºÏʹÓ㬠µ«Ï£ÍûʹÓà Unicode °æ±¾ port WITH_UNICODE Áî port ʹÓà Unicode °æ±¾ Óû§ WITHOUT_UNICODE Áî port ʹÓÃÆÕͨ°æ±¾£¬ Èç¹ûÖ§³ÖµÄ»° (¼´Î´¶¨Òå WX_UNICODE) Óû§
Èç¹û port ͬʱ֧³Ö Unicode ºÍÆÕͨ°æ±¾£¬ Ç벻ҪʹÓà WX_UNICODE¡£ Èç¹ûÏ£ÍûĬÈÏÆôÓà Unicode£¬ Ó¦¶¨Òå WANT_UNICODE¡£
¼ì²âÒѰ²×°µÄ°æ±¾ Òª¼ì²âϵͳÖа²×°µÄ°æ±¾£¬ ¾ÍÐèÒª¶¨Òå WANT_WX¡£ Èç¹ûûÓн«ÆäÉèÖÃÎªÌØ¶¨µÄ°æ±¾£¬ Ôò×é¼þ½«°üº¬°æ±¾ºó׺¡£ HAVE_WX ±äÁ¿ÔÚ¼ì²âÍê³Éºó»á×Ô¶¯ÌîÈëÄÚÈÝ¡£ ¼ì²âÒѰ²×°µÄ <application>wxWidgets</application> °æ±¾ºÍ×é¼þ ÏÂÃæµÄƬ¶Î¿ÉÒÔÔÚ°²×° wxWidgets µÄϵͳÖÐÁî port ʹÓÃËü£¬ ·´Ö®Ôò×÷ΪһÏîÑ¡ÏîÌṩ¡£ WANT_WX= yes .include <bsd.port.pre.mk> .if defined(WITH_WX) || ${HAVE_WX:Mwx-2.4} != "" USE_WX= 2.4 CONFIGURE_ARGS+=--enable-wx .endif ÏÂÃæµÄƬ¶ÎÔÚϵͳÖÐÓа²×°¹ýʱÆôÓà wxPython Ö§³Ö£¬ »òÔÚûÓа²×°Ê±×÷ΪѡÏîÌṩ£» ¶Ô wxWidgets Ò²ÊÇÈç´Ë°ìÀí£¬ °æ±¾½ÔΪ 2.6¡£ USE_WX= 2.6 WX_COMPS= wx WANT_WX= 2.6 .include <bsd.port.pre.mk> .if defined(WITH_WXPYTHON) || ${HAVE_WX:Mpython} != "" WX_COMPS+= python CONFIGURE_ARGS+=--enable-wxpython .endif ¶¨ÒåµÄ±äÁ¿ ÒÔÏÂÊÇһЩ¿ÉÒÔÔÚ port ÖÐʹÓõıäÁ¿ (Õâ֮ǰÐèÒª¶¨Òå ÖеÄÖÁÉÙÒ»¸ö±äÁ¿)¡£ ΪʹÓà <application>wxWidgets</application> µÄ port ¶¨ÒåµÄ±äÁ¿ ±äÁ¿Ãû ˵Ã÷ WX_CONFIG µ½ wxWidgets wx-config ½Å±¾µÄ·¾¶ (Ãû×Ö»áËæ°æ±¾²»Í¬¶ø²»Í¬) WXRC_CMD µ½ wxWidgets wxrc ³ÌÐòµÄ·¾¶ (Ãû×Ö»áËæ°æ±¾²»Í¬¶ø²»Í¬) WX_VERSION ½«ÒªÓõ½µÄ wxWidgets °æ±¾ (ÀýÈ磬 2.6) WX_UNICODE Èç¹ûûÓж¨Ò壬 ¶ø½«»áʹÓà Unicode ʱ£¬ ϵͳ½«×Ô¶¯¶¨Òå´Ë±äÁ¿¡£
ÔÚ <filename>bsd.port.pre.mk</filename> ÖнøÐд¦Àí Èç¹ûÄúÐèÒªÔÚÒýÓÃÁË bsd.port.pre.mk Ö®ºóÁ¢¼´¶ÔһЩ±äÁ¿½øÐд¦Àí£¬ ÔòÐèÒª¶¨Òå WX_PREMK¡£ Èç¹û¶¨ÒåÁË WX_PREMK£¬ ÔòÔÚ´Ë Ö®ºó ¶¨ÒåµÄÒÀÀµ¹ØÏµ¡¢ ×é¼þºÍ±äÁ¿½«²»»áÉúЧ£¬ ÄúÔÚÒýÓà bsd.port.pre.mk ֮ǰµÄ wxWidgets port ±äÁ¿½«Ö±½ÓÆð×÷ÓᣠÔÚÃüÁîÖÐʹÓà <application>wxWidgets</application> ±äÁ¿ ÏÂÃæµÄƬ¶ÎÒÔÖ´ÐÐ wx-config ½Å±¾À´µÃµ½ÍêÕûµÄ°æ±¾ºÅ£¬ ½«Æä¸³Öµµ½±äÁ¿ÖУ¬ ²¢´«µÝ¸øÒ»¸ö³ÌÐò¾ÙÀý˵Ã÷ÁË WX_PREMK µÄÓ÷¨¡£ USE_WX= 2.4 WX_PREMK= yes .include <bsd.port.pre.mk> .if exists(${WX_CONFIG}) VER_STR!= ${WX_CONFIG} --release PLIST_SUB+= VERSION="${VER_STR}" .endif ÔÚ target ÖÐµÄ wxWidgets ±äÁ¿¿ÉÒÔÖ±½ÓʹÓ㬠¶øÎÞÐè WX_PREMK µÄ²ÎÓë¡£ ¶îÍâµÄ <command>configure</command> ²ÎÊý ijЩ GNU configure ½Å±¾ÔÚÖ»ÉèÖÃÁË WX_CONFIG »·¾³±äÁ¿Ê±£¬ ÎÞ·¨×Ô¶¯ÕÒµ½ wxWidgets£¬ ¶øÐèҪʹÓöîÍâµÄ²ÎÊýÀ´¼ÓÒÔÖ¸¶¨¡£ Äú¿ÉÒÔʹÓà WX_CONF_ARGS ±äÁ¿À´¸ø³öÕâЩ²ÎÊý¡£ ¿ÉÓÃÓÚ <makevar>WX_CONF_ARGS</makevar> µÄÖµ ¿ÉÓÃÖµ ½á¹û absolute --with-wx-config=${WX_CONFIG} relative --with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T}
ʹÓà <application>Lua</application> ÕâÒ»½ÚÃèÊöÁËÔÚ ports ϵͳÖÐµÄ Lua ¿âµÄÏÖ×´£¬ ÒÔ¼°ËüÓë ports ϵͳµÄ¼¯³É¡£ ½éÉÜ Ðí¶à²»Í¬°æ±¾µÄ Lua ¿âºÍÏà¹ØµÄ½âÊÍÆ÷Ö®¼äÊÇÏ໥³åÍ»µÄ (ËüÃǻᰲװͬÃûµÄÎļþ)¡£ ÔÚ ports ϵͳÖУ¬ ÕâÒ»ÎÊÌâÊÇͨ¹ý½«²»Í¬°æ±¾µÄÎļþÒÔ²»Í¬µÄ°æ±¾ºÅ×÷Ϊºó׺Ãû½â¾öµÄ¡£ ÕâÑù×ö×î´óµÄÒ»¸öÎÊÌâÊÇ£¬ ÿ¸ö³ÌÐò¶¼ÐèÒª½øÐÐÐ޸IJÅÄÜÕÒµ½ËüËùÐèÒªµÄ°æ±¾¡£ ²»¹ý£¬ ͨ¹ý½«Êʵ±µÄ²ÎÊý´«¸ø±àÒëÆ÷ºÍÁ¬½ÓÆ÷ºÜÈÝÒ×½â¾öÕâ¸öÎÊÌâ¡£ Ñ¡Ôñ°æ±¾ ÒªÈÃÄúµÄ port ʹÓÃÖ¸¶¨°æ±¾µÄ Lua£¬ ¿ÉÒÔ¶¨ÒåÁ½¸ö±äÁ¿µÄÖµ (Èç¹ûÖ»¶¨ÒåÁËÆäÖеÄÒ»¸ö£¬ ÔòÁíÒ»¸ö»áʹÓÃĬÈÏÖµ)£º ÓÃÓÚÑ¡Ôñ <application>Lua</application> °æ±¾µÄ±äÁ¿ ±äÁ¿ ˵Ã÷ ĬÈÏÖµ USE_LUA port Äܹ»Ê¹ÓÃµÄ Lua °æ±¾Áбí È«²¿¿ÉÓð汾 USE_LUA_NOT Óë port ²»¼æÈݵİ汾Áбí ÎÞ
ÏÂÃæÊÇĿǰ ports ϵͳÌṩµÄ¿ÉÓà Lua °æ±¾ºÍ¶ÔÓ¦µÄĿ¼£º ¿ÉÓÃµÄ <application>Lua</application> °æ±¾ °æ±¾ Port 4.0 lang/lua4 5.0 lang/lua50 5.1 lang/lua
ÔÚ ÖеıäÁ¿£¬ ¿ÉÒÔÉèÖÃΪÏÂÃæµÄ°æ±¾Ö®Ò»£¬ »òÓÿոñ·Ö¸ôµÄÈô¸É°æ±¾£º Ö¸¶¨ <application>Lua</application> °æ±¾ ˵Ã÷ Àý×Ó Ò»¸ö°æ±¾ 4.0 ij¸ö°æ±¾»ò¸ü¸ß°æ±¾ 5.0+ ²»¸ßÓÚij¸ö°æ±¾ 5.0- °æ±¾·¶Î§ (µÍ°æ±¾±ØÐëÔÚǰ) 5.0-5.1
³ý´ËÖ®Í⣬ Ò²ÓÐһЩÓÃÀ´´Ó¿ÉÓð汾ÖÐÑ¡ÔñÍÆ¼ö°æ±¾µÄÆäËü±äÁ¿¡£ ÕâЩ±äÁ¿Ò²¿ÉÒÔÉèÖÃΪһ×é°æ±¾£¬ ¶øÇ°ÃæµÄ°æ±¾ÓÅÏȼ¶½Ï¸ß¡£ ÓÃÓÚÑ¡ÔñÍÆ¼ö <application>Lua</application> °æ±¾µÄ±äÁ¿ ±äÁ¿Ãû ÓÃÓÚ WANT_LUA_VER port WITH_LUA_VER Óû§
Ñ¡Ôñ <application>Lua</application> °æ±¾ ÏÂÃæÊÇÒ»¸öÓõ½ Lua °æ±¾ 5.0 »ò 5.1£¬ ²¢Ä¬ÈÏʹÓà 5.0 µÄ port µÄƬ¶Î¡£ Õâ¸öĬÈÏÖµ¿ÉÒÔͨ¹ý WITH_LUA_VER À´ÁíÍâÖ¸¶¨¡£ USE_LUA= 5.0-5.1 WANT_LUA_VER= 5.0
×é¼þµÄÑ¡Ôñ Ò²ÓÐһЩÆäËüµÄÓ¦Ó㬠¾¡¹Ü±¾Éí²¢²»ÊÇ Lua ¿â£¬ µ«È´ÓëËüÃÇÏà¹Ø¡£ ÕâЩӦÓÿÉÒÔͨ¹ý LUA_COMPS ±äÁ¿À´Ö¸¶¨¡£ ¿ÉÓõÄ×é¼þÈçÏ£º ¿ÉÓÃµÄ <application>Lua</application> ×é¼þ Ãû×Ö ËµÃ÷ °æ±¾ÏÞÖÆ lua Ö÷¿â ÎÞ tolua ÓÃÓÚ·ÃÎÊ C/C++ ´úÂëµÄ¿â 4.0-5.0 ruby Ruby °ó¶¨ 4.0-5.0
»¹ÓÐһЩÆäËüµÄ×é¼þ£¬ µ«ÕâЩ×é¼þÊÇÓɽâÊÍÆ÷£¬ ¶ø²»ÊÇÓÉÓ¦ÓóÌÐòʹÓÃµÄ (Ò²¾ÍÊDz»±»ÆäËüÄ£¿éʹÓÃ)¡£ ÿ¸ö×é¼þµÄÒÀÀµ¹ØÏµÀàÐÍ¿ÉÒÔͨ¹ýÊÖ¹¤Ìí¼Ó·Ö¸ô·ûΪðºÅµÄºó׺À´Ö¸¶¨¡£ Èç¹û²»Ö¸¶¨£¬ Ôò»á²ÉÓÃĬÈÏÀàÐÍ (Çë²Î¼û )¡£ ÒÔÏÂÊÇ¿ÉÓõÄÒÀÀµ¹ØÏµÀàÐÍ£º ¿ÉÓÃµÄ <application>Lua</application> ÒÀÀµ¹ØÏµÀàÐÍ Ãû×Ö ËµÃ÷ build Õâ¸ö×é¼þÊÇÁª±à¹ý³ÌËù±ØÐèµÄ£¬ Ï൱ÓÚ BUILD_DEPENDS run ÔÚÔËÐÐʱÐèÒªÕâ¸ö×é¼þ£¬ Ï൱ÓÚ RUN_DEPENDS lib Õâ¸ö×é¼þÔÚÁª±àºÍÔËÐÐʱ¶¼ÐèÒª£¬ Ï൱ÓÚ LIB_DEPENDS
×é¼þµÄĬÈÏÒÀÀµ¹ØÏµÀàÐÍÈçÏ£º ĬÈ쵀 <application>Lua</application> ÒÀÀµ¹ØÏµÀàÐÍ ×é¼þ ÒÀÀµ¹ØÏµÀàÐÍ lua ¶ÔÓÚ 4.0-5.0 ÊÇ lib (¶¯Ì¬Á¬½Ó) ¶ø¶ÔÓÚ 5.1 ÔòÊÇ build (¾²Ì¬Á¬½Ó) tolua build (¾²Ì¬Á¬½Ó) ruby lib (¶¯Ì¬Á¬½Ó)
Ñ¡Ôñ <application>Lua</application> ×é¼þ ÏÂÃæÊÇÒ»¸öʹÓÃÁË Lua °æ±¾ 4.0 ¼°Æä Ruby °ó¶¨µÄ port Ƭ¶Î¡£ USE_LUA= 4.0 LUA_COMPS= lua ruby
¼ì²âϵͳÖÐÒѰ²×°µÄ°æ±¾ Òª¼ì²âϵͳÖÐÒѰ²×°µÄ°æ±¾£¬ Äú±ØÐ붨Òå WANT_LUA¡£ Èç¹ûûÓн«ÆäÉ趨Ϊ¾ßÌåµÄ°æ±¾£¬ Ôò×é¼þ»á°üº¬°æ±¾ºó׺¡£ ÔÚ¼ì²âÖ®ºó£¬ HAVE_LUA ±äÁ¿½«ÉèΪ¼ì²âµ½µÄ°æ±¾¡£ ¼ì²âÒѰ²×°µÄ <application>Lua</application> °æ±¾ºÍ×é¼þ ÏÂÃæÊÇÒ»¸öÈç¹ûϵͳÖÐÓа²×° Lua »òÑ¡ÔñÁËÑ¡ÏîʱʹÓÃËüµÄ port Ƭ¶Î¡£ WANT_LUA= yes .include <bsd.port.pre.mk> .if defined(WITH_LUA5) || ${HAVE_LUA:Mlua-5.[01]} != "" USE_LUA= 5.0-5.1 CONFIGURE_ARGS+=--enable-lua5 .endif ÏÂÃæµÄÕâ¶Î port ÔÚϵͳÖÐÒѾ­Óа²×°£¬ »òÓû§Ñ¡ÔñÁË tolua ºÍ Lua Ö§³Öʱ¼ÓÒÔ°²×°£¬ °æ±¾¾ùÑ¡Ôñ 4.0¡£ USE_LUA= 4.0 LUA_COMPS= lua WANT_LUA= 4.0 .include <bsd.port.pre.mk> .if defined(WITH_TOLUA) || ${HAVE_LUA:Mtolua} != "" LUA_COMPS+= tolua CONFIGURE_ARGS+=--enable-tolua .endif ¶¨ÒåµÄ±äÁ¿ ÔÚ port ÖпÉÒÔʹÓÃÏÂÁбäÁ¿ (ÔÚ¶¨ÒåÁË ÖÐÖÁÉÙÒ»¸ö±äÁ¿Ö®ºó)¡£ ΪÓõ½ <application>Lua</application> µÄ port ¶¨ÒåµÄ±äÁ¿ ±äÁ¿Ãû ˵Ã÷ LUA_VER ½«ÒªÊ¹ÓÃµÄ Lua °æ±¾¡£ (ÀýÈ磬 5.1) LUA_VER_SH Lua ¶¯Ì¬Á¬½Ó¿âµÄÖ÷°æ±¾ (ÀýÈ磬 1) LUA_VER_STR ²»´øµãµÄ Lua °æ±¾ (ÀýÈ磬 51) LUA_PREFIX °²×° Lua (¼°Æä×é¼þ) ʹÓõĺó׺ LUA_SUBDIR ÔÚ ${PREFIX}/bin¡¢ ${PREFIX}/share ºÍ ${PREFIX}/lib ÖÐÓÃÓÚ°²×° Lua µÄ×ÓĿ¼ LUA_INCDIR ÓÃÒÔ°²×° Lua ºÍ tolua Í·ÎļþµÄĿ¼ LUA_LIBDIR ÓÃÒÔ°²×° Lua ºÍ tolua ¿âÎļþµÄĿ¼ LUA_MODLIBDIR ÓÃÒÔ°²×° Lua Ä£¿é¶¯Ì¬Á¬½Ó¿â (.so) µÄĿ¼ LUA_MODSHAREDIR ÓÃÒÔ°²×° Lua Ä£¿é (.lua) µÄĿ¼ LUA_PKGNAMEPREFIX Lua Ä£¿é°üµÄºó׺Ãû LUA_CMD µ½ Lua ½âÊÍÆ÷µÄ·¾¶ LUAC_CMD µ½ Lua ±àÒëÆ÷µÄ·¾¶ TOLUA_CMD µ½ tolua ³ÌÐòµÄ·¾¶
¸æËß port µ½Ê²Ã´µØ·½È¥ÕÒ <application>Lua</application> ÏÂÃæµÄ port Ƭ¶ÎչʾÁËÈçºÎ¸æËßʹÓÃµÄ configure ½Å±¾È¥Ê²Ã´µØ·½²éÕÒ Lua µÄÍ·ÎļþºÍ¿âÎļþ¡£ USE_LUA= 4.0 GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="-I${LUA_INCDIR}" LDFLAGS="-L${LUA_LIBDIR}"
ÔÚ <filename>bsd.port.pre.mk</filename> ʱ½øÐд¦Àí Èç¹ûÄúÐèÒªÔÚʹÓÃÒýÓà bsd.port.pre.mk Ö®ºó¾ÍµÃµ½±äÁ¿£¬ ÒԱ㽫ÆäÓÃÓÚÖ´ÐÐһЩÃüÁ ÐèÒª¶¨Òå LUA_PREMK¡£ Èç¹ûÄú¶¨ÒåÁË LUA_PREMK£¬ ÔòÔÚÄúÒýÓà bsd.port.pre.mk Ö®ºó£¬ ¼´Ê¹ÐÞ¸ÄÁË Lua port ±äÁ¿£¬ °æ±¾ºÍÒÀÀµ¹ØÏµÒ²¶¼²»»áËæÖ®·¢Éú±ä»¯ÁË¡£ ÔÚÃüÁîÖÐʹÓà <application>Lua</application> ±äÁ¿ ÏÂÃæµÄƬ¶ÎչʾÁËÈçºÎÀûÓà LUA_PREMK£¬ ²¢ÔËÐÐ Lua ½âÊÍÆ÷µÃµ½ÍêÕûµÄ°æ±¾´®£¬ ½«Æä¸³Öµ¸øÒ»¸ö±äÁ¿£¬ ²¢´«µÝ¸ø³ÌÐò¡£ USE_LUA= 5.0 LUA_PREMK= yes .include <bsd.port.pre.mk> .if exists(${LUA_CMD}) VER_STR!= ${LUA_CMD} -v CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" .endif ÔÚ target ÖÐµÄ Lua ±äÁ¿¿ÉÒÔÔÚÃüÁîÖа²È«µÄʹÓ㬠¶øÎÞÐèʹÓà LUA_PREMK¡£
ʹÓà Xfce USE_XFCE ±äÁ¿¿ÉÒÔÓÃÀ´×Ô¶¯ÅäÖÃʹÓûùÓÚ Xfce ¿â»òÓ¦ÓóÌÐò£¬ Èç x11-toolkits/libxfce4gui ºÍ x11-wm/xfce4-panel µÄ port µÄÒÀÀµ¹ØÏµ¡£ Ŀǰ£¬ ϵͳÄܹ»Ê¶±ðÏÂÁÐ Xfce ¿âºÍÓ¦ÓóÌÐò£º libexo£ºx11/libexo libgui£ºx11-toolkits/libxfce4gui libutil£ºx11/libxfce4util libmcs£ºx11/libxfce4mcs mcsmanager£ºsysutils/xfce4-mcs-manager panel£ºx11-wm/xfce4-panel thunar£ºx11-fm/thunar wm£ºx11-wm/xfce4-wm xfdev£ºdev/xfce4-dev-tools ³ý´ËÖ®Í⣬ »¹Äܹ»Ê¹ÓÃÏÂÁвÎÊý£º configenv£º Èç¹ûÄúµÄ port ÐèҪʹÓÃÌØÊâµÄ CONFIGURE_ENV À´²éÕÒËùÐèµÄ¿â¡£ -I${LOCALBASE}/include -L${LOCALBASE}/lib »á¼Óµ½ CONFIGURE_ENV µÄ CPPFLAGS¡£ Òò´Ë£¬ Èç¹û port Óе½ sysutils/xfce4-mcs-manager µÄÒÀÀµ¹ØÏµ£¬ ²¢ÐèÒªÔÚ configure µÄ»·¾³ÖÐÖ¸¶¨ÌØÊâµÄ¶ö CPPFLAGS£¬ ÔòËùÓõÄÓ﷨Ϊ£º USE_XFCE= mcsmanager configenv ʹÓà Mozilla Óõ½ Mozilla µÄ port ʹÓõıäÁ¿ USE_GECKO port Ö§³ÖµÄ Gecko ºó¶Ë¡£ ¿Éѡֵ£º libxul (libxul.so)¡¢ seamonkey (libgtkembedmoz.so£¬ ¹ýʱ£¬ Рport Ó¦±ÜÃâʹÓÃ)¡£ USE_FIREFOX port ÐèҪʹÓà Firefox ×÷ΪÔËÐл·¾³ÒÀÀµ¡£ ¿Éѡֵ£º yes (ʹÓÃĬÈϰ汾)¡¢ 40¡¢ 36¡¢ 35¡£ ĬÈϵÄÒÀÀµ²ÉÓõÄÊǰ汾 40¡£ USE_FIREFOX_BUILD port ÐèҪʹÓà Firefox ×÷ΪÁª±à»·¾³ÒÀÀµ¡£ ¿Éѡֵ£º ²Î¼û USE_FIREFOX¡£ Õâ¸ö±äÁ¿»á×Ô¶¯ÉèÖà USE_FIREFOX ʹÓÃÏàͬµÄÖµ¡£ USE_SEAMONKEY port ÐèҪʹÓà SeaMonkey ×÷ΪÔËÐл·¾³ÒÀÀµ¡£ ¿Éѡֵ£º yes (ʹÓÃĬÈϰ汾)¡¢ 20¡¢ 11 (¹ýʱ£¬ Рport Ó¦±ÜÃâʹÓÃ)¡£ ĬÈϵÄÒÀÀµ²ÉÓõÄÊǰ汾 20¡£ USE_SEAMONKEY_BUILD port ÐèҪʹÓà SeaMonkey ×÷ΪÁª±à»·¾³ÒÀÀµ¡£ ¿Éѡֵ£º ²Î¼û USE_SEAMONKEY¡£ Õâ¸ö±äÁ¿»á×Ô¶¯ÉèÖà USE_SEAMONKEY ʹÓÃÏàͬµÄÖµ¡£ USE_THUNDERBIRD port ÐèҪʹÓà Thunderbird ×÷ΪÔËÐл·¾³ÒÀÀµ¡£ ¿Éѡֵ£º yes (ʹÓÃĬÈϰ汾)¡¢ 31¡¢ 30 (¹ýʱ£¬ Рport Ó¦±ÜÃâʹÓÃ)¡£ ĬÈϵÄÒÀÀµ²ÉÓõÄÊǰ汾 31¡£ USE_THUNDERBIRD_BUILD port ÐèҪʹÓà Thunderbird ×÷ΪÁª±à»·¾³ÒÀÀµ¡£ ¿Éѡֵ£º ²Î¼û USE_THUNDERBIRD¡£ Õâ¸ö±äÁ¿»á×Ô¶¯ÉèÖà USE_THUNDERBIRD ʹÓÃÏàͬµÄÖµ¡£
¿ÉÓñäÁ¿µÄÍêÕûÁÐ±í£¬ Çë²ÎÔÄ /usr/ports/Mk/bsd.gecko.mk¡£
ʹÓÃÊý¾Ý¿â ports ÖÐÓйØÊý¾Ý¿âµÄ±äÁ¿ Variable Means USE_BDB Èç¹ûÕâ¸ö±äÁ¿Îª yes£¬ Ôò°Ñ databases/db41 ÁÐΪÒÀÀµ¹ØÏµ¡£ Õâ¸ö±äÁ¿»¹¿ÉÒÔ±»ÉèÖóɵÄÖµÓУº 40£¬41£¬ 42¡¢ 43¡¢ 44¡¢ 46¡¢ 47¡¢ 48 »ò 51¡£ Äú¿ÉÒÔÉùÃ÷¿É½ÓÊÜÖµµÄ·¶Î§£¬ USE_BDB=42+ ½«Ñ°ÕÒÒѰ²×°µÄ×î¸ß°æ±¾£¬ Èç¹ûûÓÐÕÒµ½ÔòÍ˻ص½ 42¡£ USE_MYSQL Èç¹ûÕâ¸ö±äÁ¿Îª yes£¬ Ôò°Ñ databases/mysql55-server ÁÐΪÒÀÀµ¹ØÏµ¡£»¹ÓÐÒ»¸öÏà¹ØµÄ±äÁ¿£¬WANT_MYSQL_VER, ¿ÉÒÔÉèÖõÄÖµÓÐ 323£¬40£¬41£¬50£¬51£¬ 52£¬ 55 »òÕß 60¡£ USE_PGSQL Èç¹ûÉèÖÃ³É yes£¬Ôò°Ñ databases/postgresql82 ÁÐΪÒÀÀµ¹ØÏµ¡£»¹ÓÐÒ»¸öÏà¹ØµÄ±äÁ¿£¬WANT_PGSQL_VER£¬ ¿ÉÒÔÉèÖõÄÖµÓÐ 73£¬74£¬80£¬81£¬82£¬ 83 »ò 90¡£
¸ü¶àÏêÇéÇë²ÎÔÄ bsd.database.mk¡£
Æô¶¯ºÍÍ£Ö¹·þÎñ (rc ½Å±¾) rc.d ½Å±¾ÔÚϵͳÆô¶¯Ê±ÓÃÓÚÆô¶¯·þÎñ£¬ ²¢Îª¹ÜÀíÔ±Ìṩֹͣ¡¢ Æô¶¯ºÍÖØÐÂÆô¶¯Ä³¸ö·þÎñµÄ±ê×¼·½·¨¡£ Ports °²×°µÄ½Å±¾»á¼¯³Éµ½ÏµÍ³µÄ rc.d ¿ò¼ÜÖС£ ¹ØÓÚÈçºÎʹÓÃËüµÄ˵Ã÷£¬ ¿ÉÒÔÔÚ Ê¹ÓÃÊÖ²áµÄ rc.d ÕÂ½Ú ÕÒµ½¡£ ¹ØÓÚ¿ÉÓÃÃüÁîµÄÏêϸ½âÊÍ£¬ Ôò¿ÉÒÔÔÚ &man.rc.8; ºÍ &man.rc.subr.8; ÕÒµ½¡£ ×îºó£¬ Äú¿ÉÒÔ²ÎÔÄ ÕâÆªÎÄÕ Á˽â׫д rc.d ½Å±¾µÄ×î¼Ñʵ¼ù¡£ ¿ÉÒÔ°²×°Ò»»ò¶à¸ö rc.d ½Å±¾£º USE_RC_SUBR= doormand ÕâЩ½Å±¾±ØÐë·Åµ½ files Ŀ¼£¬ ²¢¸½¼Ó .in¡£ Õâ¸öÎļþÖпÉÒÔʹÓñê×¼µÄ SUB_LIST Ìæ»»Õ¹¿ª¡£ ³ý´ËÖ®Í⣬ ÎÒÃÇ»¹Ç¿ÁÒÍÆ¼öʹÓà %%PREFIX%% ºÍ %%LOCALBASE%% Ìæ»»Õ¹¿ª¡£ ¹ØÓÚ SUB_LIST µÄ½éÉÜ¿ÉÒÔÔÚ ±¾ÊéµÄÏà¹ØÕÂ½Ú ÕÒµ½¡£ ÔÚ &os; 6.1-RELEASE ֮ǰ£¬ Óë &man.rcorder.8; µÄ¼¯³ÉÊÇͨ¹ý USE_RCORDER ¶ø²»ÊÇ USE_RC_SUBR À´Íê³ÉµÄ¡£ ²»¹ý£¬ ³ý·Ç port ÐèÒªÌṩ°²×°½ø»ù±¾ÏµÍ³ÕâÑùµÄÑ¡Ï »òÕß·þÎñÐèÒªÔÚ rc.d ½Å±¾ FILESYSTEMS ֮ǰÔËÐÐÕâÀàÌØÊâÇé¿ö£¬ Ò»°ãÀ´ËµÊDz»ÐèҪʹÓÃÕâ¸ö¹¦Äܵġ£ ´Ó &os; 6.1-RELEASE ¿ªÊ¼£¬ ±¾µØ°²×°µÄ rc.d ½Å±¾ (°üÀ¨ÓÉ port °²×°µÄ½Å±¾) »áÄÉÈë»ù±¾ÏµÍ³µÄ &man.rcorder.8;¡£ ÒÔÏÂÊÇÒ»¸ö¼òµ¥µÄ rc.d ½Å±¾£º #!/bin/sh # $FreeBSD$ # # PROVIDE: doormand # REQUIRE: LOGIN # KEYWORD: shutdown # # ÔÚ /etc/rc.conf.local »ò /etc/rc.conf ÖÐÔö¼ÓÏÂÊöÉèÖÿÉÒÔÆôÓÃÕâÒ»·þÎñ£º # # doormand_enable (bool): ĬÈÏÉèΪ NO¡£ # ÉèΪ YES ¿ÉÒÔÆôÓà doormand¡£ # doormand_config (path): ĬÈÏÉèΪ %%PREFIX%%/etc/doormand/doormand.cf¡£ # . /etc/rc.subr name="doormand" rcvar=${name}_enable command=%%PREFIX%%/sbin/${name} pidfile=/var/run/${name}.pid load_rc_config $name : ${doormand_enable="NO"} : ${doormand_config="%%PREFIX%%/etc/doormand/doormand.cf"} command_args="-p $pidfile -f $doormand_config" run_rc_command "$1" ³ý·ÇÓкÜÕ¾µÃס½ÅµÄÀíÓÉÌáǰÆô¶¯·þÎñ£¬ËùÓÐµÄ ports ½Å±¾Ó¦Ê¹Óà REQUIRE: LOGIN¡£ Èç¹û·þÎñÐèÒªÒÔÌØ¶¨Óû§ (³ý root Ö®Íâ) Éí·ÝÆô¶¯£¬ Ôò±ØÐëÕâÑù×ö¡£ ÔÚÇ°ÃæµÄÀý×ÓÖУ¬ ÎÒÃÇ»¹Ê¹ÓÃÁË KEYWORD: shutdown ÒÔ±ãÈà mythical port ÔÚϵͳͣ»úµÄ¹ý³ÌÖÐÒÔÕý³£µÄ·½Ê½ÖÕÖ¹£¬ ÒòΪËüÐèÒªÔÚϵͳÒýµ¼¹ý³ÌÖÐÆô¶¯·þÎñ¡£ Èç¹û½Å±¾Ã»ÓÐÆô¶¯ÈκηþÎñ£¬ Ôò²¢²»ÐèÒªÕâÑù×ö¡£ ÕâÀ ¶Ô±äÁ¿µÄĬÈϸ³Öµ·½·¨Ó¦²ÉÓà "="£¬ ¶ø·Ç ":=" ÕâÑùµÄÐÎʽ¡£ ÕâÊÇÒòΪ£¬ ǰһÖÖ¸³Öµ·½·¨Ö»ÓÐÔÚ±äÁ¿Î´±»ÉèÖÃʱ²ÅÉèÖÃĬÈÏÖµ£¬ ¶øºóÒ»ÖÖ·½·¨Ôò»áÔÚ±äÁ¿Ã»ÓÐÉèÖ㬠»òÕß ÆäֵΪ¿Õʱ¶¼ÉèÖÃĬÈÏÖµ¡£ Óû§·Ç³£¿ÉÄÜÔÚÆä rc.conf.local ÖÐʹÓÃÀàËÆ doormand_flags="" ÕâÑùµÄÉèÖ㬠¶ø²ÉÓà ":=" À´½øÐи³Öµ£¬ Ôò»áÔÚ²»¾­Òâ¼ä¸²¸ÇÓû§ËùÏ£ÍûµÄÉèÖᣠÐÂÔöµÄ½Å±¾¾ù²»Ó¦Ê¹Óà .sh ºó׺¡£ δÀ´£¬ ÈÔÈ»°üº¬ÕâÒ»ºó׺µÄ½Å±¾½«±»ÅúÁ¿¸ÄÃû¡£ Ð¶ÔØÊ±Í£Ö¹·þÎñ ¿ÉÒÔÔÚÐ¶ÔØµÄ¹ý³ÌÖÐ×Ô¶¯µØÍ£Ö¹·þÎñ¡£ ÎÒÃǽ¨ÒéÖ»ÓÐÔÚ¾ø¶Ô±ØÒª£¬ ÀýÈç±ØÐëÔÚɾ³ýÎļþ֮ǰֹͣ·þÎñÕâÀàµÄÇé¿öϲÅʹÓÃÕâÒ»¹¦ÄÜ¡£ ͨ³£À´Ëµ£¬ ¾ö¶¨ÊÇ·ñÔÚÐ¶ÔØÊ±Í£Ö¹·þÎñÊÇϵͳ¹ÜÀíÔ±ÐèÒª¿¼ÂǵÄÊÂÇé¡£ ÁíÍâҪעÒ⣬ Õâ¸ö¹¦ÄÜÒ²»áÓ°ÏìÉý¼¶¹ý³Ì¡£ ÐèҪʱ¿ÉÒÔÔÚ pkg-plist ÖмÓÈ룺 @stopdaemon doormand ÕâÀïµÄ²ÎÊý±ØÐëÓë USE_RC_SUBR ±äÁ¿µÄÄÚÈÝÆ¥Åä¡£ Ìí¼ÓÓû§ºÍÓû§×é һЩ port ÐèÒªÔÚ°²×°µÄϵͳÖд´½¨Ìض¨µÄÓû§»òÓû§×é¡£ Èç¹ûÓÐÕâÖÖÇé¿ö£¬ Çë´Ó 50 µ½ 999 Ö®¼äÑ¡ÔñÒ»¸öÉÐδʹÓÃµÄ UID£¬ ²¢ÔÚ ports/UIDs (Õë¶ÔÓû§) »ò ports/GIDs (Õë¶Ô×é) ÖÐÓèÒԼǼ¡£ ÇëÎñ±ØÈ·±£ÄúûÓÐʹÓÃϵͳÖÐÒѾ­ÔÚÆäËû ports ÖÐʹÓÃµÄ UID¡£ Èç¹ûÄúµÄ port ÐèÒª´´½¨ÐÂÓû§»òÓû§×飬 ÇëÔÚÌá½»²¹¶¡µÄʱºòÒ»²¢Ìá½»ÕâÁ½¸öÎļþµÄ²¹¶¡¡£ ½ÓÏÂÀ´£¬ ¿ÉÒÔÔÚÄúµÄ Makefile ÖÐʹÓà USERS ºÍ GROUPS ÕâÁ½¸ö±äÁ¿£¬ ϵͳ»áÔÚ°²×°Ê±×Ô¶¯´´½¨Óû§»ò×é¡£ USERS= pulse GROUPS= pulse pulse-access pulse-rt ÏÖÓеı£Áô UID ºÍ GID ÁÐ±í£¬ ¿ÉÒÔÔÚ ports/UIDs ºÍ ports/GIDs ÕÒµ½¡£ ÒÀÀµÄÚºËÔ´´úÂëµÄ Ports ijЩ ports (ÀýÈç¿É¼ÓÔØÊ½ÄÚºËÄ£¿é) ÐèÒªÄں˵ÄÔ´Îļþ²ÅÄܱàÒë¡£ ÏÂÃæÊǼì²âÓû§ÊÇ·ñ°²×°ÁËÔ´´úÂëµÄÀý×Ó£º .if !exists(${SRC_BASE}/sys/Makefile) IGNORE= requires kernel sources to be installed .endif
¸ß¼¶ <filename>pkg-plist</filename> Ó÷¨ ¸ù¾Ý make ±äÁ¿¶Ô <filename>pkg-plist</filename> ½øÐÐÐÞ¸Ä Ä³Ð© port£¬ ÌØ±ðÊÇ p5- port£¬ »áÐèÒª¸ù¾ÝÅäÖÃÑ¡Ïî (»ò¶ÔÓÚ p5- port ¶øÑÔ£¬ perl µÄ°æ±¾) À´ÐÞ¸ÄËüÃÇµÄ pkg-plist¡£ Ϊ¼ò»¯ÕâÒ»¹¤×÷£¬ ÔÚ pkg-plist ÖÐµÄ %%OSREL%%¡¢ %%PERL_VER%%£¬ ÒÔ¼° %%PERL_VERSION%% ½«×Ô¶¯½øÐÐÏàÓ¦µÄÌæ»»¡£ ÆäÖУ¬ %%OSREL%% µÄÖµÊDzÙ×÷ϵͳÒÔÊýÖµ±íʾµÄ°æ±¾ (ÀýÈç 4.9)¡£ %%PERL_VERSION%% ºÍ %%PERL_VER%% ÊÇ perl µÄÍêÕû°æ±¾ºÅ (ÀýÈç 5.8.9)¡£Ðí¶àÆäËüÓë port ÎĵµÎļþÓÐ¹ØµÄ %%±äÁ¿%% ÔÚ ÏàÓ¦ÕÂ½Ú ÖнøÐÐÁ˽éÉÜ¡£ Èç¹ûÄú»¹ÐèÒª½øÐÐÆäËüµÄÌæ»»£¬ ¿ÉÒÔͨ¹ý½« PLIST_SUB ±äÁ¿ÉèÖÃΪһ×é ±äÁ¿=Öµ ¶ÔÀ´ÊµÏÖ¡£ ÆäÖУ¬ %%VAR%% ±íʾÔÚ pkg-plist Öн«±» Öµ Ìæ»»µÄÄÇЩÎÄ×Ö¡£ ¾ÙÀýÀ´Ëµ£¬ Èç¹û port ÐèÒª°ÑºÜ¶àÎļþ·Åµ½ºÍ°æ±¾ÓйصÄĿ¼ÖУ¬ ¿ÉÒÔÔÚ Makefile Öа´ÕÕÀàËÆÏÂÃæµÄÀý×Ó£º OCTAVE_VERSION= 2.0.13 PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION} ²¢ÔÚ pkg-plist Öн«¾ßÌåµÄ°æ±¾Ì滻Ϊ %%OCTAVE_VERSION%%¡£ ÕâÑù£¬ ÔÚÉý¼¶ port ʱ£¬ ¾Í²»ÐèÒªÔÙµ½ pkg-plist ÖÐÐÞ¸ÄÄǼ¸Ê® (»òÕߣ¬ ÓÐʱÉõÖÁÊÇÉϰÙ) ÐеÄÄÚÈÝÁË¡£ Èç¹ûÄúµÄ port ÐèÒª¸ù¾ÝÒ»¶¨µÄÅäÖÃÀ´ÓÐÌõ¼þµØ°²×°Ò»Ð©Îļþ£¬ ͨ³£µÄ×ö·¨ÊÇÔÚ pkg-plist ÖÐÁгöÕâЩÎļþʱ£¬ ÔÚ¶ÔÓ¦ÐеĿªÍ·¼ÓÉÏ %%TAG%%£¬ ²¢½« TAG дµ½ Makefile ÖÐµÄ PLIST_SUB ±äÁ¿ÖУ¬ ¸ù¾ÝÐèÒªÌæ»»µô£¬ »òÌæ»»Îª @comment£¬ ºóÕß±íʾÈôò°ü¹¤¾ßºöÂÔÕâÐУº .if defined(WITH_X11) PLIST_SUB+= X11="" .else PLIST_SUB+= X11="@comment " .endif ÓëÖ®¶ÔÓ¦£¬ ÔÚ pkg-plist ÖУº %%X11%%bin/foo-gui ÕâÒ»Ìæ»»¹ý³Ì (ÒÔ¼°¼ÓÈë Áª»úÊÖ²á µÄ¹ý³Ì)£¬ »áÔÚ pre-install ºÍ do-install Á½¸ö target Ö®¼ä£¬ ͨ¹ý¶ÁÈ¡ PLIST ²¢Ð´Èë TMPPLIST (ĬÈÏÇé¿öÏ£¬ ÊÇ£º WRKDIR/.PLIST.mktmp) À´Íê³É¡£ Òò´Ë£¬ Èç¹ûÄúµÄ port ¶¯Ì¬Éú³É PLIST£¬ ¾ÍÐèÒªÔÚ pre-install ֮ǰÍê³É¡£ ÁíÍ⣬ Èç¹ûÄúµÄ port ÐèÒª±à¼­ËùÉú³ÉµÄÎļþ£¬ ÔòÐèÒªÔÚ post-install ÖвÙ×÷ÃûΪ TMPPLIST µÄÄǸöÎļþ¡£ ÁíÒ»ÖÖ¿ÉÐеÄÐÞ¸Ä×°Ïäµ¥µÄ·½·¨£¬ ÔòÊǸù¾Ý PLIST_FILES ºÍ PLIST_DIRS ÕâÁ½¸ö±äÁ¿µÄÉèÖÃÀ´½øÐС£ ËüÃǵÄÖµ»á×÷ΪĿ¼ÃûÁ¬Í¬ PLIST µÄÄÚÈÝÒ»ÆðдÈë TMPPLIST¡£ ÔÚ PLIST_FILES ºÍ PLIST_DIRS ÖÐÁгöµÄÃû×Ö£¬ »á¾­ÀúÇ°ÃæËù½éÉÜµÄ %%±äÁ¿%% Ìæ»»¹ý³Ì¡£ ³ý´ËÖ®Í⣬ ÔÚ PLIST_FILES ÖÐÁгöµÄÎļþ£¬ »á²»¼ÓÈκÎÐ޸ĵڳöÏÖÔÚ×îÖÕµÄ×°Ïäµ¥ÖУ¬ ¶ø @dirrm ½«×÷Ϊǰ׺¼Óµ½ PLIST_DIRS ËùÁеÄÃû×Ö֮ǰ¡£ ΪÁ˴ﵽĿµÄ£¬ PLIST_FILES ºÍ PLIST_DIRS ±ØÐëÔÚд TMPPLIST ֮ǰ£¬ Ò²¾ÍÊÇÔÚ pre-install »ò¸üÔçµÄ½×¶Î½øÐÐÉèÖᣠ¿ÕĿ¼ ÇåÀí¿ÕĿ¼ Ò»¶¨ÒªÈà port ÔÚÐ¶ÔØÊ±½øÐÐÇåÀí¿ÕĿ¼¡£ ͨ³££¬ ¿ÉÒÔͨ¹ýΪËùÓÐÓÉ port ´´½¨µÄĿ¼Ôö¼Ó¶ÔÓ¦µÄ @dirrm ÐÐÀ´ÊµÏÖ¡£ ÔÚɾ³ý¸¸Ä¿Â¼Ö®Ç°£¬ ÐèÒªÊ×ÏÈɾ³ýËüµÄ×ÓĿ¼¡£ : lib/X11/oneko/pixmaps/cat.xpm lib/X11/oneko/sounds/cat.au : @dirrm lib/X11/oneko/pixmaps @dirrm lib/X11/oneko/sounds @dirrm lib/X11/oneko È»¶ø£¬ ÓÐʱ @dirrm »áÓÉÓÚÆäËü port ʹÓÃÁËͬһ¸öĿ¼¶ø·¢Éú´íÎó¡£ ÀûÓà @dirrmtry ¿ÉÒÔֻɾ³ýÄÇЩ¿ÕĿ¼£¬ ¶ø±ÜÃâ¸ø³ö¾¯¸æ¡£ @dirrmtry share/doc/gimp °´ÕÕÉÏÃæµÄд·¨£¬ ½«²»»áÏÔʾÈκδíÎóÐÅÏ¢£¬ ¶øÇÒ£¬¼´Ê¹ÔÚ ${PREFIX}/share/doc/gimp ÓÉÓÚÆäËü port ÔÚÆäÖа²×°ÁËһЩ±ðµÄÎļþµÄʱºò£¬ Ò²²»»áµ¼Ö &man.pkg.delete.1; Òì³£Í˳ö¡£ ÈçºÎ½¨Á¢¿ÕĿ¼ ÔÚ port °²×°¹ý³ÌÖд´½¨µÄ¿ÕĿ¼ÐèÒªÌØ±ðÁôÒâ¡£ °²×° package ʱ²¢²»»á×Ô¶¯´´½¨ÕâЩĿ¼£¬ ÕâÊÇÒòΪ package Ö»±£´æÎļþ¡£ Ҫȷ±£°²×° package ʱ»á×Ô¶¯´´½¨ÕâЩ¿ÕĿ¼£¬ ÐèÒªÔÚ pkg-plist ÖмÓÈëÓë @dirrm ¶ÔÓ¦µÄÐУº @exec mkdir -p %D/share/foo/templates ÅäÖÃÎļþ Èç¹û port ÐèÒª°ÑһЩÎļþ·Åµ½ PREFIX/etc£¬ ²»Òª ¼òµ¥µØ°²×°ËüÃÇ£¬ ²¢½«ÆäÁÐÈë pkg-plist£¬ ÒòΪÕâÑù»áµ¼Ö &man.pkg.delete.1; ɾ³ýÓû§¾«Ðı༭µÄÎļþ£¬ ¶øÐ°²×°Ê±ÔòÓÖ»á°ÑÕâЩÎļþ¸²¸Ç¡£ Òò´Ë£¬ ÄúÓ¦°ÑÅäÖÃÎļþµÄÀý×Ó°´ÆäËüµÄºó׺À´°²×° (ÀýÈç filename.sample ¾ÍÊÇÒ»¸ö²»´íµÄÑ¡Ôñ) ²¢ÏÔʾһÌõ ÏûÏ¢ ¸æËßÓû§ÈçºÎ¸´ÖƲ¢±à¼­Õâ¸öÅäÖÃÎļþ£¬ ÒÔ±ãÈÃÈí¼þÄܹ»ÕýÈ·¹¤×÷¡£ Òò´Ë£¬ Ó¦°´ÆäËüµÄºó׺À´°²×°ÅäÖÃÎļþµÄÀý×Ó (filename.sample ¾ÍÊÇÒ»¸ö²»´íµÄÑ¡Ôñ)¡£ Èç¹ûʵ¼ÊµÄÅäÖÃÎļþ²»´æÔÚ£¬ Ôò½«Æä¸´ÖÆÎªÊµ¼ÊÎļþµÄÃû×Ö¡£ Ð¶ÔØÊ±£¬ Èç¹û·¢ÏÖÓû§Ã»ÓÐÐÞ¸ÄÅäÖÃÎļþ£¬ Ôò½«Æäɾ³ý¡£ ÄúÐèÒªÔÚ port µÄ Makefile£¬ ÒÔ¼° pkg-plist (¶ÔÓÚ´Ó package °²×°µÄÇéÐÎ) ½øÐд¦Àí¡£ ʾÀýµÄ Makefile ²¿·Ö£º post-install: @if [ ! -f ${PREFIX}/etc/orbit.conf ]; then \ ${CP} -p ${PREFIX}/etc/orbit.conf.sample ${PREFIX}/etc/orbit.conf ; \ fi ʾÀýµÄ pkg-plist ²¿·Ö£º @unexec if cmp -s %D/etc/orbit.conf.sample %D/etc/orbit.conf; then rm -f %D/etc/orbit.conf; fi etc/orbit.conf.sample @exec if [ ! -f %D/etc/orbit.conf ] ; then cp -p %D/%F %B/orbit.conf; fi ÁíÍ⣬ »¹Ó¦ÏÔʾһÌõ ÏûÏ¢ Ö¸³öÓû§Ó¦Ôںδ¦¸´ÖƲ¢±à¼­Õâ¸öÎļþ£¬ ÒÔ±ãÈÃÈí¼þÄÜ¿ªÊ¼Õý³£¹¤×÷¡£ ¶¯Ì¬×°Ïäµ¥Ó뾲̬װÏäµ¥µÄ¶Ô±È ¾²Ì¬×°Ïäµ¥ ÊÇÖ¸ÔÚ Ports Collection ÖÐÒÔ pkg-plist Îļþ (¿ÉÄܰüº¬±äÁ¿Ìæ»»)£¬ »òÒÔ PLIST_FILES ºÍ PLIST_DIRS µÄÐÎʽǶÈëµ½ Makefile ³öÏÖµÄ×°Ïäµ¥¡£ ¼´Ê¹ËüÊÇÓɹ¤¾ß»ò Makefile ÖеÄij¸ö target ÔÚ¾­ÓÉ committer ¼ÓÈëµ½ Ports Collection ֮ǰ ×Ô¶¯Éú³ÉµÄÒ²ÊÇÈç´Ë£¬ ÒòΪ¿ÉÒÔÔÚ²»ÏÂÔØ»ò±àÒëÔ´´úÂë°üµÄǰÌáÏÂ¶ÔÆä½øÐмìÊÓ¡£ ¶¯Ì¬×°Ïäµ¥ ÊÇÖ¸ÔÚ port ±àÒë²¢°²×°Ê±Éú³ÉµÄ×°Ïäµ¥¡£ ÔÚÏÂÔØ²¢±àÒëÄúËùÒÆÖ²µÄÓ¦ÓóÌÐòµÄÔ´´úÂë֮ǰ£¬ »òÔÚÖ´ÐÐÁË make clean Ö®ºó£¬ ¾ÍÎÞ·¨²é¿´ÆäÄÚÈÝÁË¡£ ¾¡¹ÜʹÓö¯Ì¬×°Ïäµ¥²¢²»±»½ûÖ¹£¬ µ«¼à»¤ÈËÓ¦¾¡¿ÉÄÜʹÓþ²Ì¬×°Ïäµ¥£¬ ÒòΪËüÄܹ»ÈÃÓû§Ê¹Óà &man.grep.1;À´·¢ÏÖËùÐèµÄ ports£¬ ÀýÈ磬 ËüÊÇ·ñ»á°²×°Ä³¸öÌØ¶¨Îļþ¡£ ¶¯Ì¬ÁбíÖ÷ÒªÓ¦ÓÃÓÚ¸´Ôӵģ¬ Æä×°Ïäµ¥ËæËùÑ¡¹¦ÄܻᷢÉú¾Þ±ä (Òò¶øÊ¹µÃά»¤¾²Ì¬×°Ïäµ¥²»ÔÙ¿ÉÐÐ)£¬ »òÄÇÐ©Ëæ°æ±¾¶ø¸Ä±ä×°Ïäµ¥ÄÚÈÝµÄ port (ÀýÈ磬 ʹÓà Javadoc À´Éú³ÉÎĵµµÄÄÇЩ ports)¡£ ÎÒÃǹÄÀøÄÇЩѡÔñʹÓö¯Ì¬×°Ïäµ¥µÄ¼à»¤ÈËÌṩһ¸öÄܹ»Éú³É pkg-plist µÄ target£¬ ÒÔ±ãÓÚÓû§¼ìÊÓÆäÄÚÈÝ¡£ ×°Ïäµ¥ (package list) µÄ×Ô¶¯»¯ÖÆ×÷ Ê×ÏÈ£¬ ÇëÈ·ÈÏÒѾ­»ù±¾ÉÏÍê³ÉÁË port µÄ¹¤×÷£¬ ½öȱ pkg-plist¡£ ½ÓÏÂÀ´£¬ ½¨Á¢Ò»¸öÓÃÓÚ°²×°ÄúµÄ port µÄÁÙʱĿ¼£¬ ²¢ÔÚÆäÖа²×°ËüËùÒÀÀµµÄËùÓÐÆäËûÈí¼þ°ü£º &prompt.root; mkdir /var/tmp/`make -V PORTNAME` &prompt.root; mtree -U -f `make -V MTREE_FILE` -d -e -p /var/tmp/`make -V PORTNAME` &prompt.root; make depends PREFIX=/var/tmp/`make -V PORTNAME` ½«Ä¿Â¼½á¹¹±£´æµ½Ò»ÐÂÎļþÖС£ &prompt.root; (cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort > OLD-DIRS ½¨Á¢Ò»¿Õ°× pkg-plist Îļþ£º &prompt.root; :>pkg-plist Èç¹ûÄúµÄ port ×ñÑ­ PREFIX (Ó¦¸ÃÈç´Ë) Ôò½ÓÏÂÀ´Ó¦°²×°¸Ã port ²¢´´½¨×°Ïäµ¥¡£ &prompt.root; make install PREFIX=/var/tmp/`make -V PORTNAME` &prompt.root; (cd /var/tmp/`make -V PORTNAME` && find -d * \! -type d) | sort > pkg-plist ´ËÍ⻹Ӧ°Ñн¨Á¢µÄĿ¼¼ÓÈë×°Ïäµ¥¡£ &prompt.root; (cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort | comm -13 OLD-DIRS - | sort -r | sed -e 's#^#@dirrm #' >> pkg-plist ×îºóÐèÒªÊÖ¹¤ÕûÀí packing list£» ÕâÒ»¹ý³Ì²»ÊÇ ÍêÈ« ×Ô¶¯µÄ¡£ Áª»úÊÖ²áÓ¦ÁÐÈë port µÄ Makefile ÖÐµÄ MANn£¬ ¶ø²»ÊÇ×°Ïäµ¥¡£ Óû§ÅäÖÃÎļþÓ¦±»É¾³ý£¬ »òÒÔ filename.sample ÕâÑùµÄÃû×ÖÀ´°²×°¡£ info/dir Îļþ£¬ Ò²²»Ó¦ÁÐÈ룬 ͬʱӦ°´ÕÕ info Îļþ µÄ˵Ã÷À´Ôö¼ÓһЩ install-info ÐС£ ËùÓÐÓÉ port °²×°µÄ¿â£¬ Ó¦°´ÕÕ ¶¯Ì¬Á¬½Ó¿â С½ÚÖнéÉܵķ½·¨´¦Àí¡£ ÁíÍ⣬ Ò²¿ÉÒÔʹÓà /usr/ports/Tools/scripts/ ÖÐµÄ plist ½Å±¾À´×Ô¶¯´´½¨ package list¡£ plist ½Å±¾ÊÇÒ»¸ö Ruby ½Å±¾£¬ ËüÄܹ»½«Ç°Ãæ½éÉܵÄÊÖ¹¤²Ù×÷×Ô¶¯»¯¡£ ¿ªÊ¼µÄ²½ÖèºÍÉÏÃæµÄǰÈýÐÐÒ»Ñù£¬ Ò²¾ÍÊÇ mkdir£¬ mtree ²¢ make depends¡£ È»ºóÁª±àºÍ°²×° port£º &prompt.root; make install PREFIX=/var/tmp/`make -V PORTNAME` È»ºóÈà plist Éú³É pkg-plist Îļþ£º &prompt.root; /usr/ports/Tools/scripts/plist -Md -m `make -V MTREE_FILE` /var/tmp/`make -V PORTNAME` > pkg-plist ÓëÇ°ÃæÀàËÆ£¬ Èç´ËÉú³ÉµÄ×°Ïäµ¥Ò²ÐèÒªÊÖ¹¤½øÐÐһЩÇåÀí¹¤×÷¡£ ÁíÒ»¸ö¿ÉÒÔÓÃÀ´´´½¨×î³õµÄ pkg-plist µÄ¹¤¾ßÊÇ ports-mgmt/genplist¡£ ºÍÆäËû×Ô¶¯»¯¹¤¾ßÀàËÆ£¬ ÄúÓ¦¶ÔËüÉú³ÉµÄ pkg-plist Ó¦ÊÖ¹¤¼ì²é²¢¸ù¾ÝÐèÒª½øÐÐÐ޸ġ£ <filename>pkg-<replaceable>*</replaceable></filename> Îļþ Ç°ÃæÓÐһЩûÓÐÌá¼°µÄ¹ØÓÚ pkg-* ÎļþµÄ¼¼ÇÉ£¬ ËüÃÇ¿ÉÒÔ·½±ãµØÍê³ÉÐí¶àÈÎÎñ¡£ <filename>pkg-message</filename> (°²×°Ô¤±àÒë°üʱÏÔʾµÄÏûÏ¢Îļþ) Èç¹ûÄúÐèÒªÔÚ°²×°Ê±ÏÔʾһÌõÏûÏ¢¸øÓû§£¬ ¿ÉÒÔ°ÑÕâÏûÏ¢·ÅÔÚ pkg-message ÖС£ ÕâÒ»ÌØÐÔͨ³£¿ÉÒÔÓÃÓÚÔÚ &man.pkg.add.1; Ö®ºóÏÔʾһЩ¸½¼ÓµÄ°²×°²½Ö裬 »òÏÔʾ¹ØÓÚÊÚȨµÄÐÅÏ¢¡£ µ±ÐèÒªÏÔʾһЩ±àÒ뿪¹Ø»ò¾¯¸æÊ±£¬ ÇëʹÓà ECHO_MSG¡£ pkg-message ÎļþÖ»ÊÇΪÏÔʾ°²×°ºóµÄÖ´ÐвÙ×÷Ö¸µ¼Ê¹Óõġ£ ÀàËÆµØ£¬ »¹ÐèÒªÁôÒâ ECHO_MSG ºÍ ECHO_CMD Ö®¼äµÄÇø±ð¡£ ǰһ¸öÊÇÔÚÆÁÄ»ÉÏÏÔʾÏûÏ¢ÐÔµÄÎÄ×Ö£¬ ¶øºóÒ»¸öÔòÓÃÓÚÔÚÖ´ÐÐÃüÁîʱʹÓùܵÀ¡£ ÏÂÃæÊÇÓõ½ÁËÕâÁ½¸öºêµÄÀý×Ó shells/bash2/Makefile£º update-etc-shells: @${ECHO_MSG} "updating /etc/shells" @${CP} /etc/shells /etc/shells.bak @( ${GREP} -v ${PREFIX}/bin/bash /etc/shells.bak; \ ${ECHO_CMD} ${PREFIX}/bin/bash) >/etc/shells @${RM} /etc/shells.bak pkg-message Îļþ£¬ ²¢²»ÐèÒªÃ÷È·µØ¼Óµ½ pkg-plist ÖС£ ´ËÍ⣬ ÔÚÓû§Ê¹Óà port ¶ø²»ÊÇ package À´°²×°Èí¼þʱ£¬ Ëü²¢²»»á±»ÏÔʾ³öÀ´¡£ Òò´ËÈç¹ûÐèÒªµÄ»°£¬ ÄúÓ¦¸ÃÔÚ post-install target ÖÐÖ¸¶¨ÏÔʾËü¡£ <filename>pkg-install</filename> (°²×°Ô¤±àÒë°üʱִÐеĽű¾Îļþ) Èç¹ûÄúµÄ port ÐèÒªÔÚÔ¤±àÒëµÄ°²×°°üͨ¹ý &man.pkg.add.1; °²×°Ê±Ö´ÐÐһЩÃüÁ ÔòӦͨ¹ý pkg-install ½Å±¾À´Íê³É¡£ Õâ¸ö½Å±¾»á×Ô¶¯µØ¼ÓÈë package£¬ ²¢±» &man.pkg.add.1; Ö´ÐÐÁ½´Î£º µÚÒ»´ÎÊÇ ${SH} pkg-install ${PKGNAME} PRE-INSTALL ¶øµÚ¶þ´ÎÊÇ ${SH} pkg-install ${PKGNAME} POST-INSTALL¡£ $2 ¿É±»ÓÃÀ´¼ì²â½Å±¾ÔËÐеÄģʽ¡£ »·¾³±äÁ¿ PKG_PREFIX ½«ÉèÖÃΪ package µÄ°²×°Ä¿Â¼¡£ Çë²Î¼û &man.pkg.add.1; ÒÔÁ˽â¸ü½øÒ»²½µÄϸ½Ú¡£ ÔÚʹÓà make install ʱÕâ¸ö½Å±¾²»»á±»×Ô¶¯ÔËÐС£ Èç¹ûÐèÒªÔËÐÐËü£¬ Ôò±ØÐëÔÚÄúµÄ port ÖÐµÄ Makefile ÀïÃ÷È·µØÓèÒÔµ÷Ó㬠Æä·½·¨ÊǼÓÈëÀàËÆ PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL ÕâÑùµÄÃüÁî¡£ <filename>pkg-deinstall</filename> (Ð¶ÔØÊ±Ö´ÐеĽű¾Îļþ) ÕâÒ»½Å±¾½«ÔÚ package ±»Ð¶ÔØÊ±Ö´ÐС£ ´Ë½Å±¾»á±» &man.pkg.delete.1; Ö´ÐÐÁ½´Î¡£ µÚÒ»´ÎÊÇ ${SH} pkg-deinstall ${PKGNAME} DEINSTALL ¶øµÚ¶þ´ÎÔòÊÇ ${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL¡£ <filename>pkg-req</filename> (°²×°Ô¤±àÒë°üʱ¼ì²âÊÇ·ñÓ¦Ö´ÐвÙ×÷µÄ½Å±¾Îļþ) Èç¹ûÄúµÄ port ÐèҪȷ¶¨ËüÊÇ·ñÓ¦±»°²×°£¬ ¿ÉÒÔ´´½¨ pkg-req requirements ½Å±¾¡£ Ëü»áÔÚ°²×°/Ð¶ÔØÊ±×Ô¶¯ÔËÐУ¬ ÒÔ¾ö¶¨²Ù×÷ÊÇ·ñÓ¦±»ÊµÊ©¡£ Õâ¸ö½Å±¾»áÔÚʹÓà &man.pkg.add.1; °²×°Ê±ÒÔ pkg-req ${PKGNAME} INSTALL µÄÃüÁîÐÐÖ´ÐС£ Ð¶ÔØÊ±£¬ Ëü½«ÓÉ &man.pkg.delete.1; ÒÔ pkg-req ${PKGNAME} DEINSTALL µÄÃüÁîÐÐÖ´ÐС£ ¸Ä±ä <filename>pkg-<replaceable>*</replaceable></filename> ÎļþµÄÃû×Ö ËùÓÐ pkg-* ÎļþµÄÃû×Ö£¬ ½Ôϵ²ÉÓñäÁ¿ÓèÒÔ¶¨Ò壬 Òò´ËÔÚÐèҪʱ¿ÉÒÔÔÚÄúµÄ Makefile ÖмÓÒԸı䡣 µ±ÄúÐèÒªÔÚ¶à¸ö port Ö®¼ä¹²ÏíijЩ pkg-* Îļþ£¬ »òÐèҪдÈëijЩÎļþʱ¾Í·Ç³£ÓÐÓÃÁË¡£ (²Î¼û ÔÚ WRKDIR ÒÔÍâµÄµØ·½Ð´Îļþ£¬ ÒÔÁ˽âΪʲôֱ½Ó½«±ä¸üдÈë pkg-* ×ÓĿ¼ÊǸöÔã¸âµÄÖ÷Òâ) ÏÂÃæÊÇÒ»×é±äÁ¿ÒÔ¼°ËüÃǵÄĬÈÏÖµ (PKGDIR ĬÈÏÇé¿öÏÂÊÇ ${MASTERDIR}¡£) ±äÁ¿ ĬÈÏÖµ DESCR ${PKGDIR}/pkg-descr PLIST ${PKGDIR}/pkg-plist PKGINSTALL ${PKGDIR}/pkg-install PKGDEINSTALL ${PKGDIR}/pkg-deinstall PKGREQ ${PKGDIR}/pkg-req PKGMESSAGE ${PKGDIR}/pkg-message ÇëÐÞ¸ÄÕâЩ±äÁ¿£¬ ¶ø²»ÊÇÖ±½Ó¸²¸Ç PKG_ARGS µÄÖµ¡£ Èç¹ûÄú¸Ä±äÁË PKG_ARGS£¬ ÕâЩÎļþ½«ÎÞ·¨ÔÚ°²×° port ʱÕýÈ·µØ¸´ÖƵ½ /var/db/pkg Ŀ¼¡£ ʹÓà <makevar>SUB_FILES</makevar> ºÍ <makevar>SUB_LIST</makevar> SUB_FILES ºÍ SUB_LIST ÕâÁ½¸ö±äÁ¿¿ÉÒÔÓÃÀ´ÔÚ port ÎļþÖÐʹÓÃijЩ¶¯Ì¬µÄÖµ£¬ ÀýÈç pkg-message ÖÐµÄ installation PREFIX¡£ Óà SUB_FILES ±äÁ¿£¬ ¿ÉÒÔÖ¸¶¨ÐèÒª×Ô¶¯½øÐÐÐ޸ĵÄÎļþÁÐ±í¡£ ÔÚ SUB_FILES ÖеÄÿһ¸ö Îļþ£¬ ÔÚ FILESDIR Ŀ¼Öж¼±ØÐëÓÐÒ»¸ö¶ÔÓ¦µÄ Îļþ.in¡£ Ð޸ĺóµÄ°æ±¾½«±£´æÔÚ WRKDIR¡£ ÔÚ USE_RC_SUBR (»òÒѾ­¹ýʱµÄ USE_RCORDER) Öж¨ÒåµÄÎļþ»á×Ô¶¯¼ÓÈëµ½ SUB_FILES ÖС£ ¶ÔÓÚ pkg-message¡¢ pkg-install¡¢ pkg-deinstall and pkg-req£¬ ¶ÔÓ¦µÄ Makefile ±äÁ¿»á±»×Ô¶¯ÉèÖ㬠ÒÔÖ¸Ïò´¦Àí¹ýµÄ°æ±¾¡£ SUB_LIST Õâ¸ö±äÁ¿µÄÄÚÈÝÊÇһϵÁÐ VAR=VALUE ¶Ô¡£ SUB_FILES ËùÁгöµÄÎļþÖÐËùÓÐµÄ %%VAR%% ¶¼½«±»Ì滻Ϊ VALUE¡£ ϵͳ×Ô¶¯¶¨ÒåÁËһЩ³£ÓõÄÌæ»»¶Ô£¬ °üÀ¨£º PREFIX¡¢ LOCALBASE¡¢ DATADIR¡¢ DOCSDIR£¬ ÒÔ¼° EXAMPLESDIR¡£ Ìæ»»½á¹ûÖÐËùÓÐÒÔ @comment ¿ªÍ·µÄÐУ¬ ¶¼½«ÔÚ±äÁ¿Ìæ»»Ö®ºó±»É¾È¥¡£ ÏÂÃæµÄÀý×ÓÖУ¬ ½«°Ñ pkg-message ÖÐµÄ %%ARCH%% Ìæ»»ÎªÏµÍ³ËùÔËÐеļܹ¹Ãû³Æ£º SUB_FILES= pkg-message SUB_LIST= ARCH=${ARCH} ×¢Ò⣬ ÔÚÉÏÊöÀý×ÓÖУ¬ FILESDIR Àï±ØÐëÓÐ pkg-message.in Õâ¸öÎļþ¡£ ÏÂÃæÊÇÒ»¸öÕýÈ·µÄ pkg-message.in Àý×Ó£º Now it is time to configure this package. Copy %%PREFIX%%/share/examples/putsy/%%ARCH%%.conf into your home directory as .putsy.conf and edit it. ²âÊÔÄúµÄ port ÔËÐÐ <command>make describe</command> Ðí¶à &os; port ά»¤¹¤¾ß£¬ ÀýÈç &man.portupgrade.1;£¬ »áÒÀÀµÓÚÒ»¸öÃûΪ /usr/ports/INDEX µÄÊý¾Ý¿âµÄÕýÈ·ÐÔ£¬ ËüÌṩÁ˹ØÓÚ port µÄÏà¹ØÐÅÏ¢£¬ ÀýÈçÒÀÀµ¹ØÏµµÈµÈ¡£ INDEX ÊÇÓɶ¥¼¶µÄ ports/Makefile ͨ¹ý make index À´½¨Á¢µÄ£¬ Õâ¸öÃüÁî»á½øÈëÿһ¸ö port µÄ×ÓĿ¼£¬ ²¢ÔÚÄÇÀïÖ´ÐÐ make describe¡£ Òò´Ë£¬ Èç¹ûij¸ö port µÄ make describe ʧ°Ü£¬ ¾ÍûÓÐÈËÄÜÉú³É INDEX£¬ ÈËÃǺܿì»á±äµÃ²»¸ßÐË¡£ ÎÞÂÛÔÚ make.conf ÖÐÉèÖÃÁËʲôѡÏ Õâ¸öÎļþ¶¼Ó¦Äܹ»ÕýÈ·µØÉú³É¡£ Òò´Ë£¬ Ó¦±ÜÃâÔÚ (ÀýÈç) ij¸öÒÀÀµ¹ØÏµÎÞ·¨Âú×ãʱʹÓà .error¡£ (²Î¼û ¡£) Èç¹û make describe Ö»ÊDzúÉúÒ»¸ö×Ö·û´®£¬ ¶ø²»ÊÇ´íÎóÐÅÏ¢£¬ ¿ÉÄܾÍûʲôÎÊÌâ¡£ Çë²Î¼û bsd.port.mk ÒÔÁ˽âËùÉú³ÉµÄ´®µÄÒâÒå¡£ ×îºóҪ˵Ã÷µÄÊÇ£¬ а汾µÄ portlint (ÔÚÏÂÒ»½ÚÖн«½øÐнéÉÜ) ½«»á×Ô¶¯µØÔËÐÐ make describe¡£ Portlint ÔÚÌá½»»ò commit ֮ǰ£¬ ӦʹÓà portlint À´½øÐмì²é¡£ portlint »á¶Ô³£¼ûµÄ¡¢ °üÀ¨¹¦ÄÜÉϵĺ͸ñʽÉϵĴíÎó¸ø³ö¾¯¸æ¡£ ¶ÔÓÚÐ嵀 (»òÔÚ repocopy ´úÂë¿âÖи´ÖƵÄ) port£¬ portlint -A ¿ÉÒÔÍê³ÉÈ«Ãæ¼ì²é£» ¶ÔÓÚôß´æµÄ port£¬ portlint -C Ò»°ã¾Í×ã¹»ÁË¡£ ÓÉÓÚ portlint ²ÉÓÃÆô·¢Ê½·½·¨À´¼ì²é´íÎó£¬ ÓÐʱËü»á²úÉúÎ󾯡£ ÁíÍ⣬ ÓÐʱÓÉÓÚ port ¿ò¼ÜµÄÏÞÖÆ¿ÉÄÜûÓа취ÐÞÕýËüÖ¸³öµÄÎÊÌâ¡£ Èç¹ûÄúÓÐÒÉÂÇ£¬ ÇëдÐÅѯÎÊ &a.ports;¡£ ʹÓà Port Tools À´Íê³É²âÊÔ ÔÚ Ports Ì×¼þÖУ¬ ÌṩÁËÒ»¸ö ports-mgmt/porttools ³ÌÐò¡£ port ÊÇÒ»¸öÄܹ»°ïÖúÄú¼ò»¯²âÊÔ¹¤¾ßµÄǰ¶Ë½Å±¾¡£ Èç¹ûÏ£Íû¶ÔÐÂÔöµÄ port »ò¸üРport ʱ½øÐвâÊÔ£¬ ¿ÉÒÔÓà port test À´Íê³ÉÕâЩ²âÊÔ¹¤×÷£¬ ÕâÒ²°üº¬ÁË portlint ¼ì²é¡£ Õâ¸öÃüÁî»á¼ì²â²¢ÁгöûÓÐÔÚ pkg-plist ÖÐÁгöµÄÎļþ¡£ ¾ßÌåÓ÷¨Çë²Î¼ûÏÂÃæµÄÀý×Ó£º &prompt.root; port test /usr/ports/net/csup <makevar>PREFIX</makevar> (°²×°Ê±µÄ¶¥¼¶Ä¿Â¼Ãû) ºÍ <makevar>DESTDIR</makevar> PREFIX Äܹ»¾ö¶¨ port °²×°Ê±µÄÄ¿µÄλÖᣠһ°ãÇé¿öÏÂÕâ¸öλÖÃÊÇ /usr/local »ò /opt£¬ µ«Ò²¿ÉÒÔÉèΪÆäËüµÄÈÎÒâÖµ¡£ ÄúµÄ port Ôò±ØÐë×ñÑ­Õâ¸ö±äÁ¿¡£ ³ý´ËÖ®Í⣬ Èç¹ûÓû§ÅäÖÃÁË DESTDIR£¬ Ôò±íʾϣÍû½« port °²×°µ½ÁíÒ»¸ö»·¾³£¬ ͨ³£ÊÇ jail »òÔÚ / ÒÔÍâµÄÆäËûλÖùҽӵÄϵͳÖС£ ʵ¼ÊÉÏ£¬ port »á°²×°µ½ DESTDIR/PREFIX£¬ ²¢×¢²áµ½Î»ÓÚ DESTDIR/var/db/pkg µÄÔ¤±àÒë°üÊý¾Ý¿âÖС£ ÓÉÓÚ DESTDIR ÊÇÓÉ ports ¿ò¼Ü½åÓÉ &man.chroot.8; À´ÊµÏֵģ¬ ÄúÔÚ׫д·ûºÏ DESTDIR ¹æ·¶µÄ ports ʱ²¢²»ÐèҪʲô¶îÍâµÄ¹¤×÷¡£ Ò»°ã¶øÑÔ PREFIX »áÉèΪ LOCALBASE_REL (ĬÈÏÊÇ /usr/local)¡£ Èç¹ûÉèÖÃÁË USE_LINUX_PREFIX£¬ Ôò PREFIX »áÉèΪ LINUXBASE_REL (ĬÈÏÊÇ /compat/linux)¡£ ±ÜÃ⽫ /usr/local »ò /usr/X11R6 Ó²±àÂëµ½Ô´´úÂëÖУ¬ Äܹ»´ó´óÌá¸ß port µÄÁé»îÐÔ£¬ ²¢ÊÊÓ¦²»Í¬»·¾³µÄÐèÒª¡£ ¶ÔÓÚʹÓà imake µÄ X port£¬ ÕâÒ»¹¤×÷ÊÇ×Ô¶¯Íê³ÉµÄ£» ÆäËûÇé¿öÏ£¬ ͨ³£¿ÉÒÔ¼òµ¥µØ½« port ËùÓõ½µÄ Makefile ½Å±¾ÖгöÏÖµÄ /usr/local (»ò¶ÔÓÚûÓÐʹÓà imake µÄ X port ¶øÑÔ£¬ /usr/X11R6) Ìæ»»Îª¶ÁÈ¡ ${PREFIX} ±äÁ¿¾ÍÄܴﵽĿµÄÁË£¬ ÒòΪÕâ¸ö±äÁ¿ÔÚÁª±àºÍ°²×°µÄ¹ý³ÌÖУ¬ »á×Ô¶¯ÏòÏ´«µÝ¡£ Ò»¶¨Òª±ÜÃâÈÃÄúµÄ port ÔÚ /usr/local ¶ø²»ÊÇÕýÈ·µÄ PREFIX Öа²×°Îļþ¡£ ¼òµ¥µÄ²âÊÔ·½·¨ÊÇ£º &prompt.root; make clean; make package PREFIX=/var/tmp/`make -V PORTNAME` Èç¹ûÓÐÎļþ°²×°µ½ÁË PREFIX ÒÔÍâµÄµØ·½£¬ ´ò°ü¹ý³Ì½«±§Ô¹ÕÒ²»µ½ÕâЩÎļþ¡£ ÕâÒ»²½Öè²¢²»ÄܰïÖú·¢ÏÖÄÚ²¿ÒýÓ㬠»ò¾ÀÕýÔÚÒýÓÃÆäËü port ÖеÄÎļþʱʹÓÃµÄ LOCALBASE¡£ ÄúÐèÒªÔÚ /var/tmp/`make -V PORTNAME` ÖвâÊÔ°²×°ºÃµÄÈí¼þ£¬ ²ÅÄܹ»´ïµ½ÕâÑùµÄÄ¿µÄ¡£ Äú¿ÉÒÔÔÚ×Ô¼ºµÄ Makefile Öиıä PREFIX ±äÁ¿µÄÖµ£¬ Ò²¿ÉÒÔͨ¹ýÓû§»·¾³±äÁ¿À´Ó°ÏìËü¡£ È»¶ø£¬ Ò»°ãÇé¿öϾö²»Ó¦¸ÃÔÚ Makefile ÖÐÃ÷È·ÉèÖÃËüµÄÖµ¡£ ´ËÍ⣬ ÒýÓÃÆäËü port ÖеÄÎļþʱ£¬ ӦʹÓÃÇ°Ãæ½éÉܵıäÁ¿£¬ ¶ø²»ÒªÖ±½ÓÖ¸¶¨ËüÃǵÄ·¾¶Ãû¡£ ÀýÈ磬 Èç¹ûÄúµÄ port ÐèҪʹÓà PAGER Õâ¸öºêÀ´Ö¸Ã÷ less µÄÍêÕû·¾¶£¬ ӦʹÓÃÏÂÃæµÄ±àÒëÑ¡Ï -DPAGER=\"${LOCALBASE}/bin/less\" ¶ø·Ç -DPAGER=\"/usr/local/bin/less\"¡£ ÕâÖÖ·½·¨Äܹ»Ôö¼ÓÔÚϵͳ¹ÜÀíÔ±°ÑÕû¸ö /usr/local Ŀ¼Ųµ½ÆäËüλÖÃʱ°²×°³É¹¦µÄ»ú»á¡£ Tinderbox Èç¹ûÄúÊǷdz£ÈÈÐÄµÄ ports ²ÎÓëÕߣ¬ Ôò¿ÉÒÔ¿´¿´ Tinderbox¡£ ÕâÊÇÒ»¸öÇ¿´óµÄÓÃÓÚÁª±àºÍ²âÊÔ ports µÄϵͳ£¬ Ëü»ùÓÚ Pointyhat µÄ½Å±¾¡£ Äú¿ÉÒÔʹÓà ports-mgmt/tinderbox port À´°²×° Tinderbox¡£ ÇëÒ»¶¨×ÐϸÔĶÁËæËü°²×°µÄÎĵµ£¬ ÒòΪÅäÖò¢²»¼òµ¥¡£ Çë·ÃÎÊ Tinderbox ÍøÕ¾ ÒÔÁË½â½øÒ»²½µÄϸ½Ú¡£ Éý¼¶Ò»¸ö port Èç¹ûÄú·¢ÏÖij¸ö port Ïà¶ÔÔ­×÷ÕßËù·¢²¼µÄ°æ±¾ÒѾ­¹ýʱ£¬ ÔòÊ×ÏÈÐèҪȷÈϵÄÊÇÄúµÄ port ÊÇ×îеġ£ Äú¿ÉÒÔÔÚ &os; FTP ¾µÏñµÄ ports/ports-current Ŀ¼ÖÐÕÒµ½ËüÃÇ¡£ µ«ÊÇ£¬ Èç¹ûÄúÕýÔÚʹÓý϶àµÄ port£¬ Ôò¿ÉÄÜʹÓà CVSup À´±£³Ö Ports Collection ×îиüΪ¼òµ¥£¬ ÕâÔÚ Ê¹ÓÃÊÖ²á ÖнøÐÐÁ˽éÉÜ¡£ ´ËÍ⣬ ÕâÑù×öÒ²ÓÐÖúÓÚ±£³Ö port ÒÀÀµ¹ØÏµµÄÕýÈ·ÐÔ¡£ ÏÂÒ»²½ÊǼì²éÊÇ·ñÒѾ­ÓÐÔڵȴýµÄ¸üС£ ÒªÍê³ÉÕâÏ×÷£¬ ¿ÉÒÔ²ÉÓÃÏÂÁÐÁ½ÖÖ·½·¨Ö®Ò»¡£ ÓÐÒ»¸öÓÃÓÚËÑË÷ FreeBSD ÎÊÌⱨ¸æ (PR) Êý¾Ý¿â (Ò²±»³Æ×÷ GNATS)¡£ ÔÚÏÂÀ­¿òÖÐÑ¡Ôñ ports£¬ È»ºóÊäÈë port µÄÃû×Ö¡£ µ«ÊÇ£¬ ÓÐЩʱºòÈËÃÇ»áÍü¼Ç½«±ÜÃâ»ìÏýµÄ port µÄÃû×ַŵ½ Synopsis ×Ö¶ÎÖС£ ÕâÖÖʱºò£¬ Äú¿ÉÒÔÊÔÊÔ¿´ FreeBSD Ports ¼àÊÓϵͳ (Ò²±»½Ð×ö portsmon)¡£ Õâ¸öϵͳ»á³¢ÊÔ°´ÕÕ port µÄÃû×ÖÀ´½øÐзÖÀà¡£ ÒªËÑË÷ºÍij¸öÌØ¶¨ port ÓÐ¹ØµÄ PR£¬ ¿ÉÒÔʹÓà port¸ÅÀÀ¡£ Èç¹ûûÓкòÉóµÄ PR£¬ ÏÂÒ»²½ÊǸø port µÄά»¤ÕßдÐÅ£¬ Õâ¿ÉÒÔͨ¹ýÖ´ÐÐ make maintainer ¿´µ½¡£ Õâ¸öÈË¿ÉÄÜÕýÔÚ½øÐÐÉý¼¶¹¤×÷£¬ »òÕßÓÉÓÚijÖÖÀíÓÉÔÝʱûÓÐÉý¼¶ (ÀýÈ磬 а汾ÓÐÎȶ¨ÐÔÎÊÌâ)£» Ò»°ãÄú²»Ï£ÍûÖØ¸´ËûÃǵŤ×÷¡£ ×¢ÒâûÓÐά»¤ÕßµÄ port µÄά»¤Õß»áÏÔʾΪ ports@FreeBSD.org£¬ ÕâÊÇÒ»°ãÐÔ port ÎÊÌâµÄÓʼþÁÐ±í£¬ Òò´Ë·¢Óʼþ¸øËüÒ»°ãûʲôÒâÒå¡£ Èç¹ûά»¤ÕßÒªÇóÄúÈ¥Íê³ÉÉý¼¶£¬ »òÕßûÓÐά»¤Õߣ¬ Äú¾ÍÓлú»áͨ¹ý×ÔÐÐÍê³ÉÉý¼¶À´°ïÖú &os; ÁË£¡ ÇëʹÓûù±¾ÏµÍ³ÌṩµÄ &man.diff.1; ÃüÁîÀ´Íê³ÉÏà¹ØµÄ¹¤×÷¡£ Èç¹ûÖ»ÐÞ¸ÄÒ»¸öÎļþ£¬ ¿ÉÒÔÖ±½ÓʹÓà diff À´Éú³É²¹¶¡£¬ ½«ÐèÒªÐ޸ĵÄÎļþ¸´ÖÆ³É something.orig£¬ ²¢½«¸Ä¶¯·Å½ø something£¬ ½Ó×ÅÉú³É²¹¶¡£º &prompt.user; /usr/bin/diff something.orig something > something.diff Èç¹û²»ÊÇÕâÑùµÄ»°£¬ ÔòÄúӦʹÓà cvs diff µÄ·½·¨ ()£¬ »ò½«Ä¿Â¼Õû¸ö¸´ÖƵ½ÁíÒ»¸öĿ¼£¬ ²¢Ê¹Óà &man.diff.1; ±È½ÏÁ½¸öĿ¼ʱÔÚĿ¼Öеݹé²úÉúµÄÊä³ö½á¹û (ÀýÈ磬 Èç¹ûÄúÐ޸ĺóµÄ port Ŀ¼µÄÃû×ÖÊÇ superedit ¶øÔ­Ê¼ÎļþµÄĿ¼ÊÇ superedit.bak£¬ ÔòÓ¦±£´æ diff -ruN superedit.bak superedit µÄ½á¹û)¡£ Ò»ÖÂʽ (unified) »ò ÉÏÏÂÎÄʽ (context) diff ¶¼ÊÇ¿ÉÒԵģ¬ µ«Ò»°ãÀ´Ëµ port committer »á¸üϲ»¶Ò»ÖÂʽ diff¡£ Çë×¢ÒâÕâÀïʹÓõÄÑ¡Ïî -N£¬ ËüµÄÄ¿µÄÊÇÇ¿ÖÆ diff ÕýÈ·µØ´¦Àí³öÏÖÐÂÎļþ£¬ »òÀÏÎļþ±»É¾³ýµÄÇéÐΡ£ ÔÚ°Ñ diff ·¢¸øÎÒÃÇ֮ǰ£¬ ÇëÔٴμì²éÊä³ö£¬ ÒÔ±ãÈ·ÈÏÿһ¸öÐ޸ͼÊÇÓÐÒâÒåµÄ¡£ (ÌØ±ð×¢Ò⣬ ÔÚ¶Ô±ÈĿ¼֮ǰҪÓà make clean ÇåÀíÒ»ÏÂ)¡£ ΪÁ˼ò»¯³£ÓõIJ¹¶¡Îļþ²Ù×÷£¬ Äú¿ÉÒÔʹÓà /usr/ports/Tools/scripts/patchtool.py¡£ ʹÓÃ֮ǰ£¬ ÇëÊ×ÏÈÔĶÁ /usr/ports/Tools/scripts/README.patchtool¡£ Èç¹û port Ŀǰ»¹ÎÞÈËά»¤£¬ ¶øÇÒÄú×Ô¼º¾­³£Ê¹ÓÃËü£¬ Ç뿼ÂÇ×Ô¼öΪËüµÄά»¤Õß¡£ &os; Óг¬¹ý 4000 ¸öûÓÐά»¤ÕßµÄ port£¬ ¶øÕâÕýÊÇ×îÐèÒªÖ¾Ô¸ÈËÔ±µÄÁìÓò¡£ (ÒªÁË½â¹ØÓÚά»¤ÕßµÄÈÎÎñÃèÊö£¬ Çë²Î¼û ¿ª·¢ÊÖ²áÖеÄÏà¹Ø²¿·Ö¡£) ½« diff ·¢Ë͸øÎÒÃǵÄ×î¼Ñ·½Ê½ÊÇͨ¹ý &man.send-pr.1; (category Ò»À¸Ð´ ports)¡£ Èç¹ûÄúÕýά»¤ÄǸö port£¬ ÇëÎñ±ØÔÚ synopsis µÄ¿ªÍ·Ð´ÉÏ [maintainer update]£¬ ²¢½«ÄúµÄ PR µÄ Class ÉèÖÃΪ maintainer-update¡£ ·´Ö®£¬ ÄúµÄ PR µÄ Class ¾ÍÓ¦¸ÃÊÇ change-request¡£ ÇëÔÚÐÅÖÐÖð¸öÌἰÿһ¸öɾ³ý»òÔö¼ÓµÄÎļþ£¬ ÒòΪÕâЩ¶¼±ØÐëÃ÷È·µØÔÚʹÓà &man.cvs.1; ½øÐÐ commit ʱÃ÷È·µØÖ¸¶¨¡£ Èç¹û diff ³¬¹ýÁË 20K£¬ Ç뿼ÂÇѹËõ²¢¶ÔÆä½øÐÐ uuencode£» ·ñÔò£¬ ¼òµ¥µØ½«ÆäÔ­Ñù¼ÓÈë PR ¼´¿É¡£ ÔÚÄú &man.send-pr.1; ֮ǰ£¬ ÇëÔÙ´ÎÔĶÁ Problem Reports Ò»ÎÄÖÐµÄ ÈçºÎ׫дÎÊÌⱨ¸æ С½Ú£» Ëü¸ø³öÁ˷ḻµÄ¹ØÓÚÈçºÎ׫д¸üºÃµÄÎÊÌⱨ¸æµÄ½éÉÜ¡£ Èç¹ûÄúµÄ¸üÐÂÊÇÓÉÓÚ°²È«¿¼ÂÇ£¬ »òÐÞ¸´ÒѾ­ commit µÄ port ÖеÄÑÏÖØÎÊÌ⣬ Çë֪ͨ &a.portmgr; À´ÉêÇëÁ¢¼´Öؽ¨ºÍ·Ö·¢ÄúµÄ port µÄ package¡£ ·ñÔò£¬ ²»Ô¸»³ÒɵÄʹÓà &man.pkg.add.1; µÄÓû§£¬ ¿ÉÄÜ»áÔÚδÀ´ÊýÖÜÖ®ÄÚ¼ÌÐøÍ¨¹ýʹÓà pkg_add -r °²×°¾É°æ±¾¡£ ÔÙ´ÎÇ¿µ÷£¬ ÇëʹÓà &man.diff.1; ¶ø·Ç &man.shar.1; À´·¢ËÍÏÖÓÐ port µÄ¸üУ¡ Õâ¿ÉÒÔ°ïÖú ports committer Àí½âÐèÒªÐ޸ĵÄÄÚÈÝ¡£ ÏÖÔÚÄúÒѾ­Á˽âÁËËùÐèµÄËùÓвÙ×÷£¬ Äú¿ÉÄÜ»áÏñÒªÔĶÁÔÚ ÖйØÓÚÈçºÎ±£³Ö×îеÄÃèÊö¡£ ʹÓà CVS ÖÆ×÷²¹¶¡ Èç¹û¿ÉÄܵϰ£¬ ÇëÌá½»&man.cvs.1; diff£» ÕâÖÖÇéÐÎÒª±ÈÖ±½Ó±È½Ï С¢¾É Ŀ¼ҪÈÝÒ×´¦Àí¡£ ´ËÍ⣬ ÕâÖÖ·½·¨Ò²ÈÃÄú¸üÈÝÒ׿´³öµ½µ×¸ÄÁËʲô£¬ ²¢ÔÚÆäËûÈ˸üÐÂÁË Ports Collection ʱÈÝÒ׺ϲ¢ÕâЩ¸Ä¶¯£¬ ÔÚÌύ֮ǰ£¬ Õâ¿ÉÒÔ¼õÉÙά»¤²¹¶¡ËùÐèµÄ¹¤×÷¡£ &prompt.user; cd ~/my_wrkdir &prompt.user; cvs -d R_CVSROOT co pdnsd &prompt.user; cd ~/my_wrkdir/pdnsd µ±È»£¬ Õâ¿ÉÒÔÊÇÄúÖ¸¶¨µÄÈÎÒâĿ¼£» Áª±à port ²¢²»¾ÖÏÞÓÚ /usr/ports/ µÄ×ÓĿ¼¡£ R_CVSROOT ÊÇÈκÎÒ»¸ö¹«¹²µÄ cvs ¾µÏñ·þÎñÆ÷£¬ Äú¿ÉÒÔÔÚ &os; ʹÓÃÊÖ²á ÖÐÌôѡһ¸ö¡£ pdnsd ÊÇ port µÄÄ£¿éÃû×Ö£» ͨ³£ËµÀ´ËüºÍ port µÄÃû×ÖÒ»Ñù£¬ ²»¹ýÒ²ÓÐЩÀýÍ⣬ ÌØ±ðÊÇÄÇЩ±¾µØ»¯Àà±ð (german/selfhtml ¶ÔÓ¦µÄÄ£¿éÃû×ÖÊÇ de-selfhtml)£» Äú¿ÉÒÔͨ¹ý cvsweb ½çÃæ ²éѯ£¬ »òÕßÒ²¿ÉÒÔÖ¸¶¨ÍêÕû·¾¶£¬ ÀýÈçÔÚÎÒÃÇÕâ¸öÀý×ÓÖÐÊÇ ports/dns/pdnsd¡£ ÔÚ¹¤×÷Ŀ¼ÖУ¬ Äú¿ÉÒÔÏñÍù³£Ò»Ñù½øÐÐÈκθü¸Ä¡£ Èç¹ûÄúÌí¼Ó»òɾ³ýÁËÎļþ£¬ ÔòÐèÒª¸æËß cvs À´×·×ÙÕâЩ¸Ä¶¯£º &prompt.user; cvs add new_file &prompt.user; cvs remove deleted_file Çë·´¸´¼ì²é ÁгöµÄÊÂÏʹÓà ½øÐмì²é¡£ &prompt.user; cvs status &prompt.user; cvs update Õâ»áºÏ²¢ CVS ÖÐÆäËûÈË×öµÄ¸Ä¶¯ºÍÄúµÄ²¹¶¡£» ÔÚÕâ¸ö¹ý³ÌÖУ¬ ÄúÐèÒª×Ðϸ¹Û²ìÊä³ö¡£ ÎļþÃûÇ°ÃæµÄÄǸö×Öĸ»áÏÔʾ×öÁËʲô£¬ Çë²ÎÔÄ Öиø³öµÄ˵Ã÷¡£ cvs update ÎļþÃûǰ×Öĸǰ׺µÄº¬Òå U Îļþ¸üÐÂÎÞÎó¡£ P Îļþ¸üÐÂÎÞÎó (ͨ³£Ö»ÓÐÔÚʹÓÃÔ¶³Ì´úÂë¿âʱ²Å»á¿´µ½)¡£ M ÎļþÓб¾µØÐ޸ģ¬ ²¢ºÏ²¢³É¹¦¶øÎ´²úÉúÈκγåÍ»¡£ C ÎļþÓб¾µØÐ޸ģ¬ ½øÐÐÁ˺ϲ¢²¢²úÉúÁ˳åÍ»¡£
Èç¹ûÄúÔÚÖ´ÐÐ cvs update ʱijЩÎļþ³öÏÖÁË C£¬ Ôò˵Ã÷ÓÐÆäËûÈËÔÚ CVS ÖÐ×öÁËÐ޸ģ¬ ¶ø &man.cvs.1; ÎÞ·¨½«ÕâЩ¸Ä¶¯ÓëÄú±¾µØµÄ¸Ä¶¯½øÐкϲ¢¡£ ²»¹ý£¬ ÎÞÂÛÈçºÎ£¬ ×îºÃ¶¼¼ì²éһϺϲ¢µÄ½á¹û£¬ ÒòΪ cvs ²¢²»ÖªµÀ port Ó¦¸ÃÊÇʲôÑù×Ó£¬ Òò´ËËüËù×öµÄºÏ²¢ÎÞÂÛÊÇ·ñ²úÉúÁ˳åÍ»£¬ ¶¼ÓпÉÄÜ (²¢ÇÒ²¢²»º±¼û) ²úÉúûÓÐÒâÒåµÄ½á¹û¡£ ×îºóÒ»²½ÊÇÒÔ CVS ÖеÄÎļþΪ»ù´¡Éú³É unified &man.diff.1;£º &prompt.user; cvs diff -uN > ../`basename ${PWD}`.diff Ö¸¶¨ Ê®·ÖÖØÒª£¬ ÒòΪËüÈ·±£ÁËÌí¼Ó»òɾ³ýµÄÎļþÒ²³öÏÖÔÚ²¹¶¡ÖС£ ²¹¶¡½«°üº¬É¾³ýµÄÎļþ£¬ ÔÚ´òÉϲ¹¶¡Ê±£¬ ÕâЩÎļþ»á±»Çå¿Õ£¬ ËùÒÔ×îºÃÔÚ PR ÖÐÌáÐÑ committer ɾ³ýËüÃÇ¡£ ¸ù¾Ý µÄÖ¸µ¼Ìá½»ÄúµÄ²¹¶¡¡£
UPDATING ºÍ MOVED Îļþ Èç¹ûÔÚÉý¼¶ port ʱÐèÒªÀàËÆÐÞ¸ÄÅäÖÃÎļþ»òÔËÐÐÌØ¶¨µÄ³ÌÐòÕâÑùµÄÌØ±ð²½Ö裬 ÔòÓ¦ÔÚ /usr/ports/UPDATING ÎļþÖÐÓèÒÔ˵Ã÷¡£ Õâ¸öÎļþÖеÄÏîÄ¿¸ñʽÈçÏ£º YYYYMMDD: AFFECTS: users of portÀà±ð/portÃû×Ö AUTHOR: ÄúµÄÃû×Ö <ÄúµÄµç×ÓÓʼþµØÖ·> ËùÐèÖ´ÐеÄÌØ±ð²½Öè Èç¹ûÄúÐèÒªÔÚÄÚÎÄÖмÓÈë¾ßÌåµÄ portmaster »ò portupgrade µÄ˵Ã÷£¬ ÇëÈ·±£ËùÓÃµÄ shell ÃüÁîʹÓÃÁËÕýÈ·µÄתÒå×Ö·û¡£ Èç¹û port ±»É¾³ý»ò¸ÄÃû£¬ÔòÓ¦ÔÚ /usr/ports/MOVED ÖÐÌí¼ÓÏàÓ¦µÄ˵Ã÷ÏîÄ¿¡£ Õâ¸öÎļþÖеÄÏîÄ¿¸ñʽÈçÏ£º Ô­À´µÄÃû×Ö|ÐÂÃû×Ö (Èç¹ûɾ³ýÔòÓ¦Áô¿Õ)|ɾ³ý»ò¸ÄÃûµÄÈÕÆÚ|Ô­Òò
Ports µÄ°²È« °²È«ÎªºÎÈç´ËÖØÒª Èí¼þÖÐż¶û»áÒýÈë bug¡£ ÎãÓ¹ÖÃÒÉ£¬ °²È«Â©¶´ÊÇ×îΪΣÏյġ£ ´Ó¼¼Êõ½Ç¶È¿´£¬ ÕâЩ©¶´¿ÉÒÔͨ¹ýÏû³ýµ¼ÖÂËüÃÇµÄ bug À´ÐÞ¸´¡£ È»¶ø£¬ ´¦ÀíÒ»°ãµÄ bug ºÍ°²È«Â©¶´µÄ²ßÂÔÊǽØÈ»²»Í¬µÄ¡£ µäÐ͵ÄС bug ͨ³£Ö»Ó°ÏìÄÇЩÆôÓÃÁËijЩÄܹ»´¥·¢ËüµÄÑ¡Ïî×éºÏµÄÓû§¡£ ¿ª·¢ÈËÔ±×îÖÕ»áÔÚ·¢²¼Ã»ÓÐÄǸöÎÊÌâµÄаæÖ®ºó¸ø³öÒ»¸ö²¹¶¡À´ÐÞÕýËü£¬ ¶øÓû§ÖеÄÖ÷Ìå²¢²»»áÁ¢¼´Éý¼¶£¬ ÒòΪËûÃDz¢Ã»ÓÐÒò´æÔÚÎÊÌâ¶ø¸Ðµ½¿àÄÕ¡£ ÑÏÖØµÄ bug ¿ÉÄܻᵼÖÂÊý¾Ý¶ªÊ§ºÍÆäËüÎÊÌ⣬ ÎÞÂÛÈçºÎ£¬ ½÷É÷µÄÓû§ÖªµÀ£¬ ³ýÁËÈí¼þ bug Ö®Í⻹ÓкܶàÆäËüʹʿÉÄܻᵼÖÂÊý¾Ý¶ªÊ§£¬ Òò´ËËûÃǻᱸ·ÝÖØÒªÊý¾Ý£» ´ËÍ⣬ ÑÏÖØµÄ bug ͨ³£»á±»ºÜ¿ì·¢ÏÖ¡£ °²È«Â©¶´ÔòÍêÈ«²»Í¬¡£ µÚÒ»£¬ ËüÃÇ¿ÉÄÜ´æÔÚÊýÄê¶ø²»±»·¢ÏÖ£¬ ÒòΪËüÃÇ¿ÉÄܲ¢²»µ¼ÖÂÈí¼þÎÞ·¨Õý³£¹¤×÷¡£ µÚ¶þ£¬ ͨ¹ýÀûÓé¶´£¬ ¶ñÒâµÄÒ»·½¿ÉÄÜ»áµÃµ½Î´»ñÊÚȨµÄ·ÃÎÊȨÏÞ£¬ ²¢ÀûÓÃÕâЩȨÏÞ»Ùµô»òÐÞ¸ÄÃô¸ÐÊý¾Ý£» ¶ø¸üÔã¸âµÄÇé¿öÔòÊÇÓû§¿ÉÄܸù±¾×¢Òâ²»µ½Ëðº¦ÒѾ­·¢Éú¡£ µÚÈý£¬ ±©Â¶³ö°²È«Â©¶´µÄϵͳ£¬ ÍùÍùÄܹ»°ïÖú¹¥»÷Õß´³ÈëÆäËü֮ǰ²»¿ÉÄܽøÈëµÄϵͳ¡£ Òò´Ë£¬ Ö»ÊÇÐÞÕý°²È«Â©¶´ÊDz»¹»µÄ£º ±ØÐëÒÔÇåÎúºÍÈ«ÃæµÄ·½Ê½Í¨Öª¹«ÖÚ£¬ ÕâÑùËûÃǾÍÄܹ»ÆÀ¹À·çÏÕ£¬ ²¢²ÉÈ¡Êʵ±µÄ´ëÊ©¡£ ÐÞ¸´°²È«Â©¶´ µ±ËµÆð port »ò package ʱ£¬ °²È«Â©¶´ÍùÍùÊdzöÏÖÔÚÔ­×÷Õߵķ¢Ðаü£¬ »òÒÆÖ²¹ý³ÌÖмÓÈëµÄÎļþÀï¡£ ¶ÔÓÚǰһÖÖÇé¿ö£¬ Èí¼þµÄÔ­×÷Õßͨ³£»áÁ¢¿Ì·¢²¼Ò»¸ö²¹¶¡ÉõÖÁа棬 ÄúÖ»ÐèÒª°´ÕÕÔ­×÷ÕßµÄÐÞÕýÈ¥¸üРport ¾Í¿ÉÒÔÁË¡£ Èç¹ûÓÉÓÚijÖÖÔ­ÒòÐÞÕý±»ÑÓÎó£¬ ÔòҪô ½« port ±ê¼ÇΪ FORBIDDEN£¬ ҪôÔÚ port ÖмÓÈëÒ»¸ö×Ô¼ºµÄ²¹¶¡¡£ Èç¹ûÓдæÔÚ©¶´µÄ port£¬ ¾¡¿ÉÄܾ¡¿ìÐÞ¸´Æä©¶´¾ÍÊÇ¡£ ÎÞÂÛÊÇÄÄÖÖÇé¿ö£¬ Äú»¹ÊÇÐèÒª°´ÕÕ ±ê×¼µÄÌá½»Á÷³Ì Ìá½»£¬ ³ý·ÇÄúÓÐÖ±½ÓÔÚ ports tree ÉÏ commit µÄȨÏÞ¡£ ×÷Ϊ ports committer ²¢²»Äܹ»Ëæ±ã commit ËùÓÐ port¡£ Çë×¢Òâͨ³£ port ¶¼ÓÐά»¤Õߣ¬ ¶øËûÃÇÓ¦µÃµ½ÄúµÄ×ðÖØ¡£ ÔÚ©¶´±»ÐÞÕýÖ®ºó£¬ Ò»¶¨ÒªÍ¬Ê±Ôö¼Ó port µÄÐÞ¶©°æ±¾ºÅ¡£ ÕâÑù£¬ ¹æÂÉÐÔµØÉý¼¶°²×°µÄ package µÄÓû§¾ÍÄܹ»¿´µ½ËûÃÇÐèÒª½øÐÐÉý¼¶¡£ ÁíÍ⣬ »¹Ó¦Áª±àÔ¤±àÒëµÄ°²×°°ü£¬ ²¢Í¨¹ý FTP ºÍ WWW ¾µÏñ·¢²¼£¬ ÒÔÈ¡´úÓЩ¶´µÄ°æ±¾¡£ ×¢ÒâÒªÔö¼Ó PORTREVISION Êý×Ö£¬ ³ý·ÇÔÚÐÞÕýÎÊÌâʱ PORTVERSION ·¢ÉúÁ˱仯¡£ Ò»°ãÀ´Ëµ£¬ Èç¹ûÔÚ port ÖÐÔö¼ÓÁ˲¹¶¡Îļþ£¬ ¾ÍÓ¦¸ÃÔö¼Ó PORTREVISION£¬ µ«ÀýÍâµÄÀý×ÓÊÇÄúÒѾ­½«Èí¼þÉý¼¶µ½ÁË×îа棬 ÒòΪÕâʱÒѾ­¸Äµô PORTVERSION ÁË¡£ Çë²Î¼û Ïà¹ØÐ¡½Ú ÒÔÁË½â½øÒ»²½µÄÐÅÏ¢¡£ ֪ͨÕû¸öÓû§ÈºÌå VuXML Êý¾Ý¿â µ±·¢ÏÖÁ˰²È«Â©¶´Ê±µÄÒ»ÏîÖØÒª¶ø½ôÆÈµÄ²½Ö裬 ¾ÍÊÇÈÃʹÓà port µÄÓû§ÈºÁ˽âÆäΣÏÕ¡£ ÕâÀà֪ͨÓÐÁ½ÖØÄ¿µÄ¡£ Ê×ÏÈ£¬ Èç¹ûΣº¦ÕæµÄºÜÑÏÖØ£¬ ¿ÉÄÜÀíÐԵİ취¾ÍÊÇÁ¢¼´Ó¦ÓÃÒ»Ï½â´ëÊ©£¬ ÀýÈ磬 Í£Ö¹Êܵ½Ó°ÏìµÄ·þÎñ£¬ ÉõÖÁÍêȫɾ³ý port£¬ Ö±µ½ÎÊÌâ±»ÐÞÕýΪֹ¡£ Æä´Î£¬ Ðí¶àÓû§Ö»ÊÇż¶ûÉý¼¶Ëù°²×°µÄÈí¼þ°ü£¬ ͨ¹ý֪ͨ£¬ ËûÃÇÄܹ»ÖªµÀÒѾ­µ½ÁË ±ØÐë ¸üÐÂÈí¼þµÄʱºò£¬ ÒòΪÒѾ­ÓÐÁËÐÞÕýÕâЩÎÊÌâµÄ°æ±¾ÁË¡£ ÓÉÓÚÏÖÓÐµÄ port ÊýÁ¿¼«ÆäÅÓ´ó£¬ ÎªÃ¿Ò»¸öÎÊÌâ¶¼·¢²¼°²È«¹«¸æ£¬ ºÁÎÞÒÉÎʵػᷢ±íºÍÀÇÀ´ÁËÒ»Ñù¶àµÄ°²È«¹«¸æ£¬ ²¢Ôö´óÊÜÖÚÔÚÕæµÄ·¢ÉúÑÏÖØµÄÎÊÌâʱºöÂÔÎÊÌâµÄ¿ÉÄÜ¡£ Òò´Ë£¬ ÔÚ port Öз¢Ïֵݲȫ©¶´£¬ »áÔÚ FreeBSD VuXML Êý¾Ý¿â ÖмǼ¡£ °²È«¹ÙÍŶӳÉÔ±»á³ÖÐøµØ×·×ÙÕâ¸öÊý¾Ý¿âµÄÐ޸ģ¬ ÒÔÁ˽âÐèÒªËûÃÇ×¢ÒâµÄÄÚÈÝ¡£ Èç¹ûÄúÊÇ committer£¬ Ôò¿ÉÒÔ×ÔÐиüРVuXML Êý¾Ý¿â¡£ ÕâÑù£¬ Äú¾ÍÄܹ»Í¬Ê±°ïÖú°²È«¹ÙÍŶӣ¬ ²¢¾¡Ô罫ÖÁ¹ØÖØÒªµÄÐÅÏ¢´«´ï¸øÓû§ÈºÌå¡£ È»¶ø£¬ Èç¹ûÄú²»ÊÇ committer£¬ »òÕßÄúÏàÐÅ×Ô¼º·¢ÏÖÁËÒ»¸öÒì³£ÑÏÖØµÄ©¶´£¬ Çë²»ÒªÓÌÔ¥£¬ °´ÕÕ FreeBSD °²È«ÐÅÏ¢ Ò³ÃæÉϵķ½·¨ÁªÏµ°²È«¹ÙÍŶӡ£ ÕýÈçÆäÃû³ÆËù°µÊ¾µÄÄÇÑù£¬ VuXML Êý¾Ý¿âÊÇÒ»¸ö XML Îĵµ¡£ ÆäÔ´Îļþ vuln.xml ±»±£´æÔÚ security/vuxml port µÄĿ¼ÖС£ ËùÒÔ£¬ ËüµÄÈ«ÃûÊÇ PORTSDIR/security/vuxml/vuln.xml¡£ ÿµ±Äú·¢ÏÖ port Öеݲȫ©¶´Ê±£¬ Çë°Ñеļͼ¼ÓÈëµ½ÄǸöÎļþÖС£ ÔÚÊìϤ VuXML ֮ǰ£¬ Äú×îºÃÏÈ¿´¿´ÊÇ·ñÓÐÀàËÆµÄÄú·¢ÏÖµÄÎÊÌâµÄÆäËü¼Ç¼£¬ ²¢¸´ÖÆËü×÷Ϊģ°å¡£ VuXML ¼ò½é XML ÊÇÒ»¸ö¸´ÔÓµÄÓïÑÔ£¬ ËüÔ¶Ô¶³¬Ô½ÁËÕâ±¾ÊéµÄ·¶Î§¡£ ²»¹ý£¬ Ö»ÐèÁ˽â±ê¼ÇµÄÃüÃû¹æÔò£¬ ¾ÍÄÜ VuXML ¼Ç¼µÄ½á¹¹ÓÐÒ»¸ö´óÌåµÄÁ˽âÁË¡£ XML ±ê¼ÇµÄÃû×ÖÓ¦³öÏÖÔÚÒ»¶Ô¼âÀ¨ºÅÖ®¼ä¡£ ÿһ¸ö <tag> ±ØÐëÓÐÒ»¸ö¶ÔÓ¦µÄ </tag>¡£ ±ê¼Ç¿ÉÒÔǶÌ×£¬ Èç¹ûǶÌ׵ϰ£¬ ÄÚ²ãµÄ±ê¼Ç±ØÐëÔÚÍâ²ã±ê¼Ç֮ǰ½áÊø¡£ Õâ¾ÍÐγÉÁËÒ»¸ö±ê¼ÇµÄ²ã´Î½á¹¹£¬ Ò²¾ÍÊǹØÓÚËüÃÇÖ®¼äÈçºÎǶÌ׵ĹæÔò¡£ ÌýÆðÀ´ºÜÏñ HTML£¬ ÊDz»ÊÇ£¿ ×îÖ÷ÒªµÄÇø±ðÔÚÓÚ£¬ XML ÊÇ¿ÉÀ©Õ¹µÄ (eXtensible)£¬ ÀýÈçͨ¹ý¶¨Òåеıê¼ÇµÈµÈ¡£ ÓÉÓÚÆä½á¹¹µÄÄÚÔÚÐÔÖÊ£¬ XML Äܹ»¸³ÓèÎÞ×éÖ¯µÄÊý¾ÝеÄÐÎ̬¡£ VuXML ÊÇרÃÅΪÃèÊö°²È«Â©¶´Éè¼ÆµÄÓïÑÔ¡£ ÏÖÔÚÈÃÎÒÃÇÀ´¹Û²ìÒ»¸öʵ¼ÊµÄ VuXML ¼Ç¼£º <vuln vid="f4bc80f4-da62-11d8-90ea-0004ac98a7b9"> <topic>Several vulnerabilities found in Foo</topic> <affects> <package> <name>foo</name> <name>foo-devel</name> <name>ja-foo</name> <range><ge>1.6</ge><lt>1.9</lt></range> <range><ge>2.*</ge><lt>2.4_1</lt></range> <range><eq>3.0b1</eq></range> </package> <package> <name>openfoo</name> <range><lt>1.10_7</lt></range> <range><ge>1.2,1</ge><lt>1.3_1,1</lt></range> </package> </affects> <description> <body xmlns="http://www.w3.org/1999/xhtml"> <p>J. Random Hacker reports:</p> <blockquote cite="http://j.r.hacker.com/advisories/1"> <p>Several issues in the Foo software may be exploited via carefully crafted QUUX requests. These requests will permit the injection of Bar code, mumble theft, and the readability of the Foo administrator account.</p> </blockquote> </body> </description> <references> <freebsdsa>SA-10:75.foo</freebsdsa> <freebsdpr>ports/987654</freebsdpr> <cvename>CAN-2010-0201</cvename> <cvename>CAN-2010-0466</cvename> <bid>96298</bid> <certsa>CA-2010-99</certsa> <certvu>740169</certvu> <uscertsa>SA10-99A</uscertsa> <uscertta>SA10-99A</uscertta> <mlist msgid="201075606@hacker.com">http://marc.theaimsgroup.com/?l=bugtraq&amp;m=203886607825605</mlist> <url>http://j.r.hacker.com/advisories/1</url> </references> <dates> <discovery>2010-05-25</discovery> <entry>2010-07-13</entry> <modified>2010-09-17</modified> </dates> </vuln> ±ê¼ÇµÄÃû×Ö¶¼ÊǼòµ¥Ã÷Á˵ģ¬ ÏÂÃæÎÒÃÇÀ´½éÉÜÒ»ÏÂÐèÒªÓÉÄúÌîдµÄ×ֶΣº ÕâÊÇ VuXML ¼Ç¼µÄ¶¥¼¶ tag¡£ ËüÓÐÒ»¸öÇ¿ÖÆÐÔµÄ×ֶΣ¬ vid£¬ ÓÃÓÚΪ´Ë¼Ç¼ (Ëü°üº¬µÄ²¿·Ö) Ö¸¶¨Ò»¸öÈ«¾ÖΨһ±êʶ·û (UUID)¡£ ÄúӦΪÿһ¸öÐ嵀 vuXML Éú³ÉÐ嵀 UUID (¶øÇÒ±ðÍüÁËÒª°ÑÄ£°åÖÐµÄ UUID »»³ÉÐµģ¬ Èç¹ûÄú²»ÊÇ´ÓÍ·¿ªÊ¼µÄ»°)¡£ Äú¿ÉÒÔʹÓà &man.uuidgen.1; À´Éú³É VuXML UUID¡£ ¹ØÓÚÎÊÌâµÄÒ»¾ä»°ÃèÊö¡£ ´Ë´¦¸ø³öÊܵ½Ó°ÏìµÄ package µÄÃû×Ö¡£ ¿ÉÒÔ¸ø³ö¶à¸öÃû×Ö£¬ ÒòΪ¿ÉÄÜÓжà¸öÈí¼þ°ü»ùÓÚͬһ¸ö master port »òÈí¼þ²úÆ·¡£ Õâ¿ÉÄܰüÀ¨Îȶ¨ºÍ¿ª·¢·ÖÖ§¡¢ ±¾µØ»¯°æ±¾£¬ ÒÔ¼°ÌṩÁ˲»Í¬µÄ±àÒëʱѡÏîµÄ slave port¡£ ׫д VuXML ¼Ç¼ʱ£¬ ÄúÓÐÔðÈÎÕÒµ½ËùÓÐÏà¹ØµÄ°ü¡£ ºÜ¶àʱºò make search name=foo ÊÇÄúµÄÅóÓÑ¡£ ÐèÒªÁôÒâµÄͨ³£°üÀ¨£º foo port µÄ foo-devel ±äÌ壻 °üº¬²»Í¬ºó׺µÄÆäËü±äÌ壬 ÀýÈç -a4 (¶ÔÓںʹòÓ¡ÓйصÄÈí¼þ°ü)£¬ -without-gui (Ìṩµ«½ûÓÃÁË X Ö§³ÖµÄÈí¼þ°ü)£¬ ÒÔ¼°ÀàËÆµÄÆäËüÇé¿ö£» jp-£¬ ru-¡¢ zh-£¬ ÒÔ¼°ÆäËü¿ÉÄܵı¾µØ»¯±äÌ壬 ËüÃÇͨ³£¿ÉÒÔÔÚ Ports Collection ÖÐÏàÓ¦µÄ¹ú¼Ò·ÖÀàÖÐÕÒµ½¡£ ÊÜÓ°ÏìµÄ package °æ±¾£¬ ¿ÉÒÔʹÓà <lt>, <le>, <eq>, <ge>, ºÍ <gt> ±í´ï³ÉÒ»¸ö»ò¶à¸ö°æ±¾¼°Æä·¶Î§¡£ ×¢Òâ¸ø³öµÄ°æ±¾·¶Î§²»Ó¦´æÔÚÖØµþ¡£ ÔÚÃèÊö·¶Î§µÄʱºò£¬ * (ÐǺÅ) ±í´ï×îСµÄ°æ±¾¡£ ¸ü¾ßÌåµØËµ£¬ 2.* СÓÚ 2.a¡£ Òò´Ë£¬ ÐǺſÉÒÔÓÃÀ´Æ¥ÅäËùÓпÉÄÜµÄ alpha¡¢ beta£¬ ÒÔ¼° RC °æ±¾¡£ ÀýÈ磬 <ge>2.*</ge><lt>3.*</lt> ¿ÉÒÔÑ¡ÔñÐÔµØÆ¥Åäÿһ¸ö 2.x µÄ°æ±¾£¬ ¶ø <ge>2.0</ge><lt>3.0</lt> ÏÔÈ»²»ÄÜ£¬ ÒòΪËü»á©µô 2.r3 ¶øÆ¥Åä 3.b¡£ ÉÏÃæµÄÀý×ÓÖ¸¶¨ÁËÊÜÓ°ÏìµÄ°æ±¾£¬ ÊǰüÀ¨ 1.6 µ½ 1.9 ÉÏϽçµÄËùÓа汾£¬ ÒÔ¼° 2.x ÔÚ 2.4_1 ֮ǰµÄ°æ±¾£¬ ºÍ 3.0b1 °æ¡£ Êܵ½Ó°ÏìµÄÒ»×é package (±¾ÖÊÉÏÊÇ ports) ¿ÉÒÔÁÐÔÚ <affected> С½ÚÖС£ Èç¹û¶à¸öÈí¼þ²úÆ·¶¼²ÉÓÃÁËͬÑùµÄ»ù´¡´úÂ룬 (±ÈÈç˵ FooBar¡¢ FreeBar ºÍ OpenBar) ¶øÇÒ°üº¬Í¬ÑùµÄ bug »ò©¶´¡£ Çë×¢ÒâÁгö¶à¸öÃû×Öʱ£¬ Ó¦¸ÃÔÚÒ»¸ö <package> С½ÚÖÐÍê³É¡£ Èç¹û¿ÉÄÜ£¬ °æ±¾µÄ·¶Î§Ó¦°üÀ¨ PORTEPOCH ºÍ PORTREVISION¡£ Îñ±Ø×¢Ò⣬ ¸ù¾Ý¼ÓȨ¹æÔò£¬ ´øÓзÇÁã PORTEPOCH µÄ°æ±¾£¬ ϵͳ»áÈÏΪ±ÈûÓÐ PORTEPOCH µÄ°æ±¾¸ß£¬ ÀýÈç 3.0,1 ¸ßÓÚ 3.1 ÉõÖÁ 8.9¡£ ¹ØÓÚÎÊÌâµÄÕªÒªÐÔÐÅÏ¢¡£ ´Ë´¦Ê¹Óà XHTML¡£ Îñ±ØÒª³É¶ÔʹÓà <p> ºÍ </p>¡£ ¿ÉÒÔʹÓýÏΪ¸´Ôӵıê¼Ç£¬ µ«½öÏÞÓÚÓÐÖúÓÚÈÃÐÅÏ¢¸ü׼ȷºÍÃ÷Á˵ÄÐÞÊΣº Çë²»Òª¹ý·ÖµØÃÀ»¯¡£ Õⲿ·Ö°üº¬ÁËÏà¹ØµÄ¿É¹©²Î¿¼µÄÎĵµ¡£ Ç뾡¿ÉÄܶàÌṩ²Î¿¼ÎÄÏס£ Ö¸¶¨ FreeBSD °²È«¹«¸æ¡£ Ö¸¶¨ FreeBSD ÎÊÌⱨ¸æ¡£ Ö¸¶¨ Mitre CVE ID¡£ Ö¸¶¨ SecurityFocus Bug ID¡£ Ö¸¶¨ US-CERT °²È«¹«¸æ¡£ Ö¸¶¨ US-CERT ©¶´ËµÃ÷¡£ Ö¸¶¨ US-CERT ¼ÆËã»ú°²È«¾¯±¨¡£ Ö¸¶¨ US-CERT ¼¼ÊõÐÔ¼ÆËã»ú°²È«¾¯±¨¡£ Ö¸ÏòÓʼþÁÐ±í´æµµµÄ URL¡£ ÊôÐÔ msgid ÊÇ¿ÉÑ¡Ï ÓÃÒÔÖ¸¶¨Ä³Ò»·âÐÅµÄ message ID¡£ Ò»°ãµÄ URL¡£ Ö»ÓÐÔÚûÓÐÆäËü¸üÊʺϵIJο¼ÎÄÏ×ʱ£¬ ²ÅӦʹÓÃËü¡£ ÎÊÌâ±»È«ÃæÅû¶µÄÈÕÆÚ (YYYY-MM-DD)¡£ ¼Ç¼¼ÓÈëµ½Êý¾Ý¿âÖеÄÈÕÆÚ (YYYY-MM-DD)¡£ ¼Ç¼×îºóÒ»´Î±»Ð޸ĵÄÈÕÆÚ (YYYY-MM-DD)¡£ мǼ²»Ó¦°üÀ¨Õâ¸ö×ֶΡ£ Ö»ÓÐÔÚÐ޸ļǼʱ²ÅÓ¦¼ÓÈëËü¡£ ²âÊÔÄú¶Ô VuXML Êý¾Ý¿âËù×÷µÄÐÞ¸Ä ¼Ù¶¨Äú´òËã׫д£¬ »òÒѾ­Ð´ºÃÁËÒ»¸ö¹ØÓÚ package clamav µÄÎÊÌâÃèÊö£¬ ²¢ÇÒ£¬ ÒѾ­ÖªµÀ 0.65_7 °æ±¾ÐÞÕýÁËÕâ¸öÎÊÌâ¡£ ÄúÐèÒª×öµÄ×¼±¸¹¤×÷£¬ ÊÇ °²×° Ò»¸öа汾µÄ ports ports-mgmt/portaudit ³ÌÐò¡¢ ports-mgmt/portaudit-db£¬ ÒÔ¼° security/vuxml¡£ ÒªÔËÐÐ packaudit£¬ Äú±ØÐëÓµÓÐÆä DATABASEDIR£¬ ͨ³£ÊÇ /var/db/portaudit µÄдÈëȨÏÞ¡£ Äú¿ÉÒÔͨ¹ý DATABASEDIR »·¾³±äÁ¿À´Ö¸¶¨Ò»¸ö²»Í¬µÄλÖᣠÈç¹ûÄúµÄ¹¤×÷Ŀ¼ÊÇ ${PORTSDIR}/security/vuxml ÒÔÍâµÄÆäËüµØ·½£¬ ÔòӦʹÓû·¾³±äÁ¿ VUXMLDIR À´Ö¸Ã÷ vuln.xml µÄλÖᣠÊ×ÏÈ£¬ ¼ì²éÒ»ÏÂÊÇ·ñÒѾ­ÓÐÁ˹ØÓÚÕâ¸ö©¶´µÄÃèÊö¡£ Èç¹ûÒѾ­ÓйýÕâÑùµÄ¼Ç¼£¬ ÄÇôËü½«Æ¥Åä½ÏÔç°æ±¾µÄ package£¬ 0.65_6£º &prompt.user; packaudit &prompt.user; portaudit clamav-0.65_6 Èç¹ûʲô¶¼Ã»Óз¢ÏÖ£¬ Äú¾Í¿ÉÒÔ¿¼ÂÇдһ¸öеļǼÀ´ÃèÊöÕâ¸ö©¶´ÁË¡£ ÏÖÔÚ¿ÉÒÔÉú³ÉÒ»¸öÐ嵀 UUID (¼ÙÉèËüÊÇ 74a9541d-5d6c-11d8-80e3-0020ed76ef5a)£¬ È»ºó½«ÄúµÄмǼ¼ÓÈëµ½ VuXML Êý¾Ý¿âÖС£ ½ÓÏÂÀ´£¬ ÓÃÏÂÃæµÄÃüÁîÀ´¼ì²éËüÊÇ·ñ·ûºÏÓï·¨£º &prompt.user; cd ${PORTSDIR}/security/vuxml && make validate ÄúÐèÒª°²×°ÏÂÁÐ package ÖеÄÖÁÉÙÒ»¸ö£º textproc/libxml2¡¢ textproc/jade¡£ ½ÓÏÂÀ´´Ó VuXML ÎļþÖØ¹¹ portaudit Êý¾Ý¿â£º &prompt.user; packaudit ÒªÑéÖ¤ÄúмÓÈëµÄÏîµÄ <affected> С½ÚÄܹ»ÕýÈ·µØÆ¥ÅäÏ£ÍûµÄ package£¬ ¿ÉÒÔʹÓÃÏÂÃæµÄÃüÁ &prompt.user; portaudit -f /usr/ports/INDEX -r 74a9541d-5d6c-11d8-80e3-0020ed76ef5a Çë²Î¼û &man.portaudit.1; ÒÔÁË½â¹ØÓÚÕâ¸öÃüÁîÓï·¨µÄ¸ü¶àϸ½Ú¡£ ÇëÈ·ÐÅÐÂÌí¼ÓµÄ¼Ç¼²»»áÔÚÊä³öÖÐÆ¥Å䲻ӦƥÅäµÄÏî¡£ ÏÖÔÚ¼ì²éÄúÌí¼ÓµÄ¼Ç¼ËùÆ¥ÅäµÄ°æ±¾ÊÇ·ñÕýÈ·£º &prompt.user; portaudit clamav-0.65_6 clamav-0.65_7 Affected package: clamav-0.65_6 (matched by clamav<0.65_7) Type of problem: clamav remote denial-of-service. Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-0020ed76ef5a.html> 1 problem(s) found. ÏÔÈ»£¬ ǰһ¸ö°æ±¾»áÆ¥Å䣬 ¶øºóÒ»¸ö²»»á¡£ ×îºó£¬ ÑéÖ¤Äú´Ó VuXML Êý¾Ý¿âÖÐÄܹ»ÕýÈ·µØµÃµ½Ô¤ÆÚµÄÍøÒ³Ð§¹û£º &prompt.user; mkdir -p ~/public_html/portaudit &prompt.user; packaudit &prompt.user; lynx ~/public_html/portaudit/74a9541d-5d6c-11d8-80e3-0020ed76ef5a.html ¸Ã×öʲôºÍ²»¸Ã×öʲô ½éÉÜ ÕâÀïÊÇһЩÔÚÒÆÖ²Èí¼þʱ¿ÉÄÜ»áÓöµ½µÄ³£¼ûÎÊÌâ¡£ ÄúÓ¦°´ÕÕÕâ¸öÁбí¼ì²é×Ô¼ºµÄ port£¬ ͬÑùµØ£¬ ÄúÒ²¿ÉÒÔ°ïÖú¼ì²é PR Êý¾Ý¿â ÖÐÓÉÆäËüÈËÌá½»µÄ port¡£ Çë°´ÕÕÔÚ ÎÊÌⱨ¸æºÍÒ»°ãÐÔ×¢ÊÍ ÖнéÉܵķ½·¨Ìá½»ÄúµÄ¿´·¨¡£ °ïÖú¼ì²é PR Êý¾Ý¿âÖÐµÄ ports ¼´Äܹ»°ïÖúÎÒÃǸü¿ìµØ commit ËüÃÇ£¬ Ò²ÄÜÖ¤Ã÷ÄúÇå³þµØÁ˽âÈçºÎÍê³ÉÕâЩ¹¤×÷¡£ <makevar>WRKDIR</makevar> (Áª±àʱʹÓõÄÁÙʱĿ¼) ÈκÎʱºò¶¼²»ÒªÔÚ WRKDIR ÒÔÍâµÄλÖÃдÎļþ¡£ WRKDIR ÊÇÔÚ port Áª±à¹ý³ÌÖÐΨһµÄÒ»´¦Ò»¶¨¿ÉдµÄµØ·½ (²Î¼û ÈçºÎ´Ó CDROM °²×° port ÒÔÁ˽â´ÓÖ»¶ÁµÄĿ¼ÖÐÁª±àºÍ°²×° port µÄÀý×Ó)¡£ Èç¹ûÄúÐèÒª¸Ä±ä pkg-* Îļþ£¬ Çë°´ÕÕ ÖØÐ¶¨Òåij¸ö±äÁ¿ ½éÉܵķ½·¨£¬ ¶ø²»ÊǸ²¸ÇËüÃÇÀ´ÊµÏÖ¡£ <makevar>WRKDIRPREFIX</makevar> (ÓÃÓÚÁª±àµÄÁÙʱĿ¼µÄ¸¸Ä¿Â¼Ãû) Ò»¶¨ÒªÈ·±£ÄúµÄ port ×ðÖØ WRKDIRPREFIX µÄÉèÖᣠ¾ø´ó¶àÊý port ²¢²»ÐèÒªµ£ÐÄÕâ¸ö¡£ ¾ßÌå˵À´£¬ µ±ÒýÓÃÆäËü port µÄ WRKDIR ʱ£¬ ÐèҪעÒâÕýÈ·µÄλÖÃÓ¦¸ÃÊÇ WRKDIRPREFIXPORTSDIR/subdir/name/work ¶ø²»ÊÇ PORTSDIR/subdir/name/work »ò .CURDIR/../../subdir/name/work£¬ »ò±ðµÄʲô¡£ ÁíÍ⣬ Èç¹ûÄú×ÔÐж¨ÒåÁË WRKDIR£¬ Ò²Òª°Ñ ${WRKDIRPREFIX}${.CURDIR} ·Åµ½Ç°Ãæ¡£ Çø·Ö²»Í¬µÄ²Ù×÷ϵͳ£¬ ÒÔ¼° OS µÄ°æ±¾ ÔÚ²»Í¬°æ±¾µÄ Unix Ï¿ÉÄÜÐèÒª¶Ô´úÂë½øÐÐһЩÐ޸ĻòÔö¼ÓÉÙÐí±àÒëÑ¡Ï ²ÅÄܹ»ÕýÈ·µØ±àÒëºÍÔËÐС£ Èç¹ûÄúÐèÒª¸ù¾ÝһЩÌõ¼þÀ´¶Ô´úÂë½øÐÐÐ޸ģ¬ Ç뾡¿ÉÄÜÈÃÕâЩÐÞ¸ÄͨÓ㬠ÕâÑù£¬ ÎÒÃǾÍÄܹ»½«ÕâЩ´úÂëÒÆÖ²»Ø¸üÔçµÄ FreeBSD ϵͳ£¬ ²¢½»²æÒÆÖ²µ½ÆäËü BSD ϵͳ£¬ ÀýÈçÀ´×Ô CSRG µÄ 4.4BSD£¬ BSD/386£¬ 386BSD£¬ NetBSD ºÍ OpenBSD¡£ ÍÆ¼öµÄ»ñµÃ 4.3BSD/Reno (1990) ÒÔ¼°¸üа汾 BSD ´úÂë°æ±¾ºÅµÄ·½Ê½£¬ ÊÇʹÓà sys/param.h ÖÐËù¶¨ÒåµÄ BSD ºêµÄÖµ¡£ Ò»°ãÀ´ËµÕâ¸öÎļþÒѾ­±»ÒýÓÃÁË£» Èç¹ûûÓеϰ£¬ Ôö¼ÓÏÂÊö´úÂ룺 #if (defined(__unix__) || defined(unix)) && !defined(USG) #include <sys/param.h> #endif µ½ .c ÎļþÖкÏÊʵĵط½¡£ ÎÒÃÇÏàÐÅËùÓж¨ÒåÁËÕâÁ½¸ö·ûºÅµÄϵͳÖУ¬ ¶¼ÌṩÁË sys/param.h¡£ Èç¹ûÄú·¢ÏÖÓв»ÕâÑù×öµÄϵͳ£¬ Çëͨ¹ýÖÂÐÅ &a.ports; ÈÃÎÒÃÇÁ˽âÕâÒ»Çé¿ö¡£ ÁíÒ»ÖÖ·½·¨ÊÇʹÓà GNU Autoconf ·ç¸ñµÄ·½Ê½£º #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> #endif ²ÉÓÃÕâÖÖ·½·¨Ê±£¬ ²»ÒªÍüÁ衄 -DHAVE_SYS_PARAM_H ¼Óµ½ Makefile ÖÐµÄ CFLAGS Àï¡£ Ò»µ©ÒýÓÃÁË sys/param.h£¬ Äú¾Í¿ÉÒÔʹÓ㺠#if (defined(BSD) && (BSD >= 199103)) À´¼ì²â´úÂëÊÇ·ñÕýÔÚ 4.3 Net2 ´úÂë»ù´¡£¬ »ò¸üеÄϵͳÉϱàÒë (ÀýÈç FreeBSD 1.x£¬ 4.3/Reno£¬ NetBSD 0.9£¬ 386BSD£¬ BSD/386 1.1 ÒÔ¼°¸ü¸ß°æ±¾)¡£ ʹÓ㺠#if (defined(BSD) && (BSD >= 199306)) À´¼ì²â´úÂëÊÇ·ñÕýÔÚ 4.4 »ò¸üеÄϵͳ (ÀýÈç FreeBSD 2.x£¬ 4.4£¬ NetBSD 1.0¡¢ BSD/386 2.0 »ò¸ü¸ß°æ±¾)¡£ ¶ÔÓÚ 4.4BSD-Lite2 ´úÂëϵÀ´Ëµ£¬ BSD ºêµÄÖµÓ¦¸ÃÊÇ 199506¡£ ÕâÀïÖ»ÊÇ×÷ΪÐÅÏ¢Ìṩ£¬ Äú²»Ó¦Ê¹ÓÃËüÀ´Çø·Ö»ùÓÚ 4.4-Lite µÄ FreeBSD ºÍ»ùÓÚ 4.4-Lite2 µÄ°æ±¾¡£ ÕâЩÇé¿öÏ£¬ ÄúӦʹÓà __FreeBSD__ ºê¡£ ±£ÊصØÊ¹Ó㺠__FreeBSD__ ÔÚËùÓа汾µÄ FreeBSD ÖнÔÓж¨Òå¡£ Èç¹ûÄúÕý½øÐеÄÐÞ¸Ä Ö» Ó°Ïì FreeBSD£¬ ÔòӦʹÓÃÕâ¸öºê¡£ ÀàËÆ sys_errlist[] Ö®ÓÚ strerror() ÕâÑùµÄÒÆÖ²ÎÊÌâÊDz®¿ËÀû´úÂëϵ¹«Óõģ¬ ¶ø²¢·Ç FreeBSD ËùרÓС£ ÔÚ FreeBSD 2.x ÖУ¬ __FreeBSD__ ¶¨ÒåΪ 2¡£ ¸üÔç°æ±¾ÖУ¬ ËüÔø¾­ÊÇ 1¡£ еİ汾¶¼»áÔÚÖ÷ÒªµÄ°æ±¾ºÅ±ä»¯Ê±±ä¸üËü¡£ Èç¹ûÄúÐè񻂿·Ö FreeBSD 1.x ϵͳºÍ FreeBSD 2.x ¼°¸ü¸ß°æ±¾µÄÇø±ð£¬ ͨ³£Ó¦Ê¹ÓÃǰÊöµÄ BSD ºêÀ´½øÐС£ Èç¹ûÊÂʵÉÏÐèÒªÒ»¸ö FreeBSD רÓеÄÐÞ¸Ä (ÀýÈ磬 ÔÚʹÓà ld ʱÐèÒªÌØÊâµÄ¹²Ïí¿âÑ¡Ïî)£¬ Ôò¿ÉÒÔÓà __FreeBSD__ ºÍ #if __FreeBSD__ > 1 À´¼ì²â FreeBSD 2.x ºÍÐÂϵͳÉϵı仯¡£ Èç¹ûÐèÒª¸üϸÁ£¶ÈµØ¼ì²â FreeBSD 2.0-RELEASE Ö®ºó°æ±¾µÄ±ä»¯£¬ Ôò¿ÉÒÔʹÓ㺠#if __FreeBSD__ >= 2 #include <osreldate.h> # if __FreeBSD_version >= 199504 /* ÊÊÓÃÓÚ 2.0.5+ °æ±¾µÄ´úÂë */ # endif #endif ÔÚÒÑÓеÄÊý°Ù¸ö port ÖУ¬ Ö»ÓÐÒ»Á½¸öÓ¦¸ÃʹÓà __FreeBSD__¡£ ÔçÆÚµÄ port ÔÚ²»Êʵ±µÄµØ·½Ê¹ÓÃÁËËü²¢Òý·¢ÎÊÌ⣬ ²¢²»Òâζ×ÅÄúÒ²±Ø¶¨Èç´Ë¡£ __FreeBSD_version Öµ ÏÂÃæÊÇÔÚ sys/param.h __FreeBSD_version Öж¨ÒåµÄÖµ¼°ÆäÒâÒåµÄÁÐ±í£¬ ÕâÀï¸ø³öÒÔ·½±ãÄú²éÔÄ£º __FreeBSD_version Öµ Öµ ÈÕÆÚ °æ±¾ 119411 2.0-RELEASE 199501, 199503 March 19, 1995 2.1-CURRENT 199504 April 9, 1995 2.0.5-RELEASE 199508 August 26, 1995 2.1 ֮ǰµÄ 2.2-CURRENT 199511 November 10, 1995 2.1.0-RELEASE 199512 November 10, 1995 2.1.5 ֮ǰµÄ 2.2-CURRENT 199607 July 10, 1996 2.1.5-RELEASE 199608 July 12, 1996 2.1.6 ֮ǰµÄ 2.2-CURRENT 199612 November 15, 1996 2.1.6-RELEASE 199612 2.1.7-RELEASE 220000 February 19, 1997 2.2-RELEASE (not changed) 2.2.1-RELEASE (Îޱ仯) ÔÚ 2.2.1-RELEASE Ö®ºóµÄ 2.2-STABLE 221001 April 15, 1997 texinfo-3.9 Ö®ºóµÄ 2.2-STABLE 221002 April 30, 1997 top Ö®ºóµÄ 2.2-STABLE 222000 May 16, 1997 2.2.2-RELEASE 222001 May 19, 1997 2.2.2-RELEASE Ö®ºóµÄ 2.2-STABLE 225000 October 2, 1997 2.2.5-RELEASE 225001 November 20, 1997 2.2.5-RELEASE Ö®ºóµÄ 2.2-STABLE 225002 December 27, 1997 ºÏ²¢ ldconfig -R Ö®ºóµÄ 2.2-STABLE 226000 March 24, 1998 2.2.6-RELEASE 227000 July 21, 1998 2.2.7-RELEASE 227001 July 21, 1998 2.2.7-RELEASE Ö®ºóµÄ 2.2-STABLE 227002 September 19, 1998 &man.semctl.2; ÐÞ¸ÄÖ®ºóµÄ 2.2-STABLE 228000 November 29, 1998 2.2.8-RELEASE 228001 November 29, 1998 2.2.8-RELEASE Ö®ºóµÄ 2.2-STABLE 300000 February 19, 1996 &man.mount.2; ÐÞ¸Ä֮ǰµÄ 3.0-CURRENT 300001 September 24, 1997 &man.mount.2; ÐÞ¸ÄÖ®ºóµÄ 3.0-CURRENT 300002 June 2, 1998 &man.semctl.2; ÐÞ¸ÄÖ®ºóµÄ 3.0-CURRENT 300003 June 7, 1998 ioctl ²ÎÊý±ä»¯Ö®ºóµÄ 3.0-CURRENT 300004 September 3, 1998 ELF ±ä»»Ö®ºóµÄ 3.0-CURRENT 300005 October 16, 1998 3.0-RELEASE 300006 October 16, 1998 3.0-RELEASE Ö®ºóµÄ 3.0-CURRENT 300007 January 22, 1999 3/4ÇзÖÖ®ºóµÄ 3.0-STABLE 310000 February 9, 1999 3.1-RELEASE 310001 March 27, 1999 3.1-RELEASE Ö®ºóµÄ 3.1-STABLE 310002 April 14, 1999 C++ ¹¹½¨/Îö¹¹º¯Êý˳Ðò±ä»¯Ö®ºóµÄ 3.1-STABLE 320000 3.2-RELEASE 320001 May 8, 1999 3.2-STABLE 320002 August 29, 1999 ¶þ½øÖƲ»¼æÈÝµÄ IPFW ºÍ socket ±ä»¯Ö®ºóµÄ 3.2-STABLE 330000 September 2, 1999 3.3-RELEASE 330001 September 16, 1999 3.3-STABLE 330002 November 24, 1999 libc ÖмÓÈë &man.mkstemp.3; Ö®ºóµÄ 3.3-STABLE 340000 December 5, 1999 3.4-RELEASE 340001 December 17, 1999 3.4-STABLE 350000 June 20, 2000 3.5-RELEASE 350001 July 12, 2000 3.5-STABLE 400000 January 22, 1999 3/4ÇзÖÖ®ºóµÄ 4.0-CURRENT 400001 February 20, 1999 Ð޸Ķ¯Ì¬Á¬½ÓÆ÷´¦Àí·½Ê½Ö®ºóµÄ 4.0-CURRENT 400002 March 13, 1999 C++ ¹¹½¨/Îö¹¹º¯Êý˳Ðò±ä»¯Ö®ºóµÄ 400003 March 27, 1999 Ìṩ &man.dladdr.3; Ö®ºóµÄ 4.0-CURRENT 400004 April 5, 1999 ÐÞÕýÁË __deregister_frame_info µÄ 4.0-CURRENT (Ò²±íʾÔÚ EGCS 1.1.2 ¼¯³ÉÖ®ºóµÄ 4.0-CURRENT) 400005 April 27, 1999 &man.suser.9; API ±ä»¯Ö®ºóµÄ 4.0-CURRENT (Ò²±íʾ newbus Ö®ºóµÄ 4.0-CURRENT) 400006 May 31, 1999 cdevsw ×¢²á»úÖÆ¸Ä±äÖ®ºóµÄ 4.0-CURRENT 400007 June 17, 1999 ¼ÓÈëÁË socket ¼¶Æ¾¾ÝµÄ so_cred Ö®ºóµÄ 4.0-CURRENT 400008 June 20, 1999 ÔÚ libc_r ÖмÓÈë poll ϵͳµ÷ÓýӿÚÖ®ºóµÄ 4.0-CURRENT 400009 July 20, 1999 ½«ÄÚºËÖÐ dev_t ÀàÐ͸ÄΪ struct specinfo Ö¸ÕëÖ®ºóµÄ 4.0-CURRENT 400010 September 25, 1999 ÐÞÕýÁËÒ»´¦ &man.jail.2; ©¶´Ö®ºóµÄ 4.0-CURRENT 400011 September 29, 1999 sigset_t Êý¾ÝÀàÐ͸ıäÖ®ºóµÄ 4.0-CURRENT 400012 November 15, 1999 Çл»µ½ GCC 2.95.2 ±àÒëÆ÷Ö®ºóµÄ 4.0-CURRENT 400013 December 4, 1999 ¼ÓÈëÁ˿ɲåµÄ linuxģʽ ioctl ´¦Àí³ÌÐòºóµÄ 4.0-CURRENT 400014 January 18, 2000 ÒýÈë OpenSSL Ö®ºóµÄ 4.0-CURRENT 400015 January 27, 2000 GCC 2.95.2 ÖÐ ABI ĬÈÏÖµ´Ó -fvtable-thunks ¸ÄΪ -fno-vtable-thunks Ö®ºóµÄ 4.0-CURRENT 400016 February 27, 2000 ÒýÈë OpenSSH Ö®ºóµÄ 4.0-CURRENT 400017 March 13, 2000 4.0-RELEASE 400018 March 17, 2000 4.0-RELEASE Ö®ºóµÄ 4.0-STABLE 400019 May 5, 2000 ÒýÈëÑÓ³ÙУÑéºÍÖ®ºóµÄ 4.0-STABLE 400020 June 4, 2000 ½« libxpg4 µÄ´úÂë²¢Èë libc Ö®ºóµÄ 4.0-STABLE 400021 July 8, 2000 Binutils Éý¼¶µ½ 2.10.0 Ö®ºóµÄ 4.0-STABLE£¬ ELF ±êÖ¾±ä»¯£¬ ÒÔ¼°½« tcsh ÒýÈë»ù±¾ÏµÍ³ 410000 July 14, 2000 4.1-RELEASE 410001 July 29, 2000 4.1-RELEASE Ö®ºóµÄ 4.1-STABLE 410002 September 16, 2000 &man.setproctitle.3; ´Ó libutil ÒÆÈë libc Ö®ºóµÄ 4.1-STABLE 411000 September 25, 2000 4.1.1-RELEASE 411001 4.1.1-RELEASE Ö®ºóµÄ 4.1.1-STABLE 420000 October 31, 2000 4.2-RELEASE 420001 January 10, 2001 ºÏ²¢ libgcc.a ºÍ libgcc_r.a£¬ ²¢ÐÞ¸ÄÁËÏà¹ØµÄ GCC Á¬½Ó·½Ê½Ö®ºóµÄ 4.2-STABLE 430000 March 6, 2001 4.3-RELEASE 430001 May 18, 2001 ÒýÈë wint_t Ö®ºóµÄ 4.3-STABLE 430002 July 22, 2001 PCI µçԴ״̬ API ºÏ²¢Ö®ºóµÄ 4.3-STABLE 440000 August 1, 2001 4.4-RELEASE 440001 October 23, 2001 ÒýÈë d_thread_t Ö®ºóµÄ 4.4-STABLE 440002 November 4, 2001 mount ½á¹¹¸Ä±äÖ®ºóµÄ 4.4-STABLE (Ó°ÏìÎļþϵͳ kld) 440003 December 18, 2001 Óû§Ì¬²¿·ÖµÄ smbfs ±»ÒýÈëÖ®ºóµÄ 4.4-STABLE 450000 December 20, 2001 4.5-RELEASE 450001 February 24, 2002 usb ½á¹¹ÔªËظÄÃûÖ®ºóµÄ 4.5-STABLE 450004 April 16, 2002 ÔÚ &man.rc.conf.5; ±äÁ¿ sendmail_enable ĬÈÏÖµ¸ÄΪ NONE Ö®ºóµÄ 4.5-STABLE 450005 April 27, 2002 ĬÈϽ« XFree86 4 ÓÃÓÚÔ¤±àÒë°üÁª±àÖ®ºóµÄ 4.5-STABLE 450006 May 1, 2002 accept ¹ýÂËÆ÷ÐÞÕýÁ˰²È«ÎÊÌâ²¢ÇÒ²»ÔÙ»áÇáÒ×±» DoS Ö®ºóµÄ 4.5-STABLE 460000 June 21, 2002 4.6-RELEASE 460001 June 21, 2002 ÐÞÕýÁË &man.sendfile.2; ÒÔÎǺÏÎĵµ£¬ ¶ø²»ÔÙ¸ù¾Ý·¢³öµÄÍ·¼ÆËã·¢³öÊý¾ÝÁ¿Ö®ºóµÄ 4.6-STABLE 460002 July 19, 2002 4.6.2-RELEASE 460100 June 26, 2002 4.6-STABLE 460101 June 26, 2002 MFC `sed -i' Ö®ºóµÄ 4.6-STABLE 460102 September 1, 2002 MFC Ðí¶à pkg_install ÐÂÌØÐÔÖ®ºóµÄ 4.6-STABLE 470000 October 8, 2002 4.7-RELEASE 470100 October 9, 2002 4.7-STABLE 470101 November 10, 2002 ¿ªÊ¼Éú³É __std{in,out,err}p ÒýÓ㬠¶ø²»ÊÇ __sF¡£ Õ⽫ std{in,out,err} ´Ó±àÒëʱ±í´ïʽ±ä³ÉÁËÔËÐÐʱֵ¡£ 470102 January 23, 2003 MFC mbuf Ïà¹ØµÄ½« m_aux mbuf ¸ÄΪ m_tag µÄÐÞ¸ÄÖ®ºóµÄ 4.7-STABLE 470103 February 14, 2003 OpenSSL Éý¼¶µ½ 0.9.7 Ö®ºóµÄ 4.7-STABLE 480000 March 30, 2003 4.8-RELEASE 480100 April 5, 2003 4.8-STABLE 480101 May 22, 2003 &man.realpath.3; ±äΪḬ̈߳²È«µÄÖ®ºóµÄ 4.8-STABLE 480102 August 10, 2003 ¶Ô twe µÄ 3ware API ÐÞ¸ÄÖ®ºóµÄ 4.8-STABLE 490000 October 27, 2003 4.9-RELEASE 490100 October 27, 2003 4.9-STABLE 490101 January 8, 2004 kinfo_eproc ÖмÓÈë e_sid Ö®ºóµÄ 4.9-STABLE 490102 February 4, 2004 MFC rtld µÄ libmap ¹¦ÄÜÖ®ºóµÄ 4.9-STABLE 491000 May 25, 2004 4.10-RELEASE 491100 June 1, 2004 4.10-STABLE 491101 August 11, 2004 MFC 20040629 °æ±¾µÄ°üά»¤¹¤¾ßÖ®ºóµÄ 4.10-STABLE 491102 November 16, 2004 ÐÞÕýÁË VM µ±½â³ý wire ²»´æÔÚÒ³ÃæÊ±µÄÎÊÌâÖ®ºóµÄ 4.10-STABLE 492000 December 17, 2004 4.11-RELEASE 492100 December 17, 2004 4.11-STABLE 492101 April 18, 2006 ½« libdata/ldconfig Ŀ¼¼ÓÈë mtree ÎļþÖ®ºóµÄ 4.11-STABLE¡£ 500000 March 13, 2000 5.0-CURRENT 500001 April 18, 2000 ¼ÓÈë ELF Í·×ֶΣ¬ ²¢¸Ä±äÎÒÃÇµÄ ELF Ö´ÐÐÎļþ±ê¼Ç·½Ê½Ö®ºóµÄ 5.0-CURRENT 500002 May 2, 2000 kld ÔªÊý¾ÝÐÞ¸ÄÖ®ºóµÄ 5.0-CURRENT 500003 May 18, 2000 buf/bio ÐÞ¸ÄÖ®ºóµÄ 5.0-CURRENT 500004 May 26, 2000 binutils Éý¼¶ºóµÄ 5.0-CURRENT 500005 June 3, 2000 ½« libxpg4 ²¢Èë libc£¬ ÒÔ¼°ÒýÈë TASKQ Ö®ºóµÄ 5.0-CURRENT 500006 June 10, 2000 ¼ÓÈë AGP ½Ó¿ÚÖ®ºóµÄ 5.0-CURRENT 500007 June 29, 2000 Perl Éý¼¶µ½ 5.6.0 Ö®ºóµÄ 5.0-CURRENT 500008 July 7, 2000 KAME ´úÂëÉý¼¶µ½ 2000/07 Ö®ºóµÄ 5.0-CURRENT 500009 July 14, 2000 ether_ifattach() ºÍ ether_detach() ÐÞ¸ÄÖ®ºóµÄ 5.0-CURRENT 500010 July 16, 2000 ½« mtree ¸ÄΪԭÏȵÄĬÈÏÖµ£¬ ²¢Ê¹Óà -L À´¸úËæ·ûºÅÁ¬½ÓÖ®ºóµÄ 5.0-CURRENT 500011 July 18, 2000 kqueue API ÐÞ¸ÄÖ®ºóµÄ 5.0-CURRENT 500012 September 2, 2000 &man.setproctitle.3; ´Ó libutil Ųµ½ libc Ö®ºóµÄ 5.0-CURRENT 500013 September 10, 2000 Ê׸ö SMPng commit Ö®ºóµÄ 5.0-CURRENT 500014 January 4, 2001 <sys/select.h> ¸ÄΪ <sys/selinfo.h> Ö®ºóµÄ 5.0-CURRENT 500015 January 10, 2001 libgcc.a ºÍ libgcc_r.a ÒÔ¼° GCC Á¬½Ó·½Ê½±ä¶¯Ö®ºóµÄ 5.0-CURRENT 500016 January 24, 2001 ÐÞ¸ÄÒÔÔÊÐí libc ºÍ libc_r Á¬½Óµ½Ò»Æð£¬ ²»ÔÙ¹ÄÀøÊ¹Óà -pthread Ö®ºóµÄ 5.0-CURRENT 500017 February 18, 2001 ´Ó struct ucred Çл»µ½ struct xucred ÒÔ±ãʹÄÚºËΪ mountd µÈ³ÌÐòµ¼³öµÄ API Îȶ¨ÏÂÀ´Ö®ºóµÄ 5.0-CURRENT 500018 February 24, 2001 ¼ÓÈë CPUTYPE ÓÃÓÚ CPU רÓõÄÓÅ»¯µÄ make ±äÁ¿Ö®ºóµÄ 5.0-CURRENT 500019 June 9, 2001 machine/ioctl_fd.h ¸ÄΪ sys/fdcio.h Ö®ºóµÄ 5.0-CURRENT 500020 June 15, 2001 locale Ãû³Æ¸Ä±äÖ®ºóµÄ 5.0-CURRENT 500021 June 22, 2001 ÒýÈë bzip2 Ö®ºóµÄ 5.0-CURRENT£¬ ͬʱҲ´ú±íɾȥÁË S/Key 500022 July 12, 2001 ¼ÓÈë SSE Ö§³ÖÖ®ºóµÄ 5.0-CURRENT 500023 September 14, 2001 KSE µÚ2¸öÀï³Ì±®Ö®ºóµÄ 5.0-CURRENT 500024 October 1, 2001 d_thread_t Ö®ºóµÄ 5.0-CURRENT£¬ ͬʱ UUCP ±»ÒÆÈë ports 500025 October 4, 2001 64-λƽ̨ÉϵÄÃèÊö·ûºÍ creds API ±ä»¯Ö®ºóµÄ 5.0-CURRENT 500026 October 9, 2001 ²ÉÓà XFree86 4 ×÷ΪĬÈϵÄÔ¤±àÒë°ü£¬ ÒÔ¼°¼ÓÈë strnstr() libc º¯ÊýÖ®ºóµÄ 5.0-CURRENT 500027 October 10, 2001 ¼ÓÈë strcasestr() libc º¯ÊýÖ®ºóµÄ 5.0-CURRENT 500028 December 14, 2001 ÒýÈëÁËÓû§Ì¬µÄ smbfs ×é¼þÖ®ºóµÄ 5.0-CURRENT (δÓèÔö¼Ó) ¼ÓÈëÁËÐ嵀 C99 Ö¸¶¨Î»¿íÕûÐαäÁ¿Ö®ºóµÄ 5.0-CURRENT 500029 January 29, 2002 ÐÞ¸ÄÁË &man.sendfile.2; µÄ·µ»ØÖµÖ®ºóµÄ 5.0-CURRENT 500030 February 15, 2002 ÒýÈëÊʺϱí´ïÎļþ±êÖ¾µÄ fflags_t ÀàÐÍÖ®ºóµÄ 5.0- 500031 February 24, 2002 usb ½á¹¹ÔªËظÄÃûÖ®ºóµÄ 5.0-CURRENT 500032 March 16, 2002 ÒýÈë Perl 5.6.1 Ö®ºóµÄ 5.0-CURRENT 500033 April 3, 2002 &man.rc.conf.5; ±äÁ¿ sendmail_enable ĬÈÏÖµ¸ÄΪ NONE Ö®ºóµÄ 5.0-CURRENT 500034 April 30, 2002 mtx_init() Ôö¼ÓÁ˵ÚÈý¸ö²ÎÊýÖ®ºóµÄ 5.0-CURRENT 500035 May 13, 2002 °üº¬ Gcc 3.1 µÄ 5.0-CURRENT 500036 May 17, 2002 ÔÚ /usr/src ÖÐɾȥÁË Perl µÄ 5.0-CURRENT 500037 May 29, 2002 ¼ÓÈë &man.dlfunc.3; Ö®ºóµÄ 5.0-CURRENT 500038 July 24, 2002 һЩ struct sockbuf µÄ³ÉÔ±±äΪ½á¹¹£¬ ²¢ÖØÐÂÅÅÁÐ˳ÐòÖ®ºóµÄ 5.0-CURRENT 500039 September 1, 2002 ÒýÈë GCC 3.2.1 Ö®ºóµÄ 5.0-CURRENT¡£ Í·ÎļþÒ²²»ÔÙʹÓà _BSD_FOO_T_ ¶ø¿ªÊ¼Ê¹Óà _FOO_T_DECLARED¡£ Õâ¸öÖµ»¹¿ÉÒÔÓÃÓÚ×÷Ϊһ¸ö°üº¬Ê¹Óà &man.bzip2.1; µÄÔ¤±àÒë°üÖ§³ÖµÄÔ¤ÆÚµã¡£ 500040 September 20, 2002 ÒÔÈ¥µô¶Ô disklabel ½á¹¹ÄÚÈݵÄÒÀÀµµÄÃûÒ壬 ¶Ô´ÅÅÌÏà¹ØµÄº¯Êý½øÐÐÁËÐí¶àÐÞ¸ÄÖ®ºóµÄ 5.0-CURRENT 500041 October 1, 2002 libc ÖмÓÈë &man.getopt.long.3; Ö®ºóµÄ 5.0-CURRENT 500042 October 15, 2002 Binutils 2.13 Éý¼¶£¬ °üº¬ÁËÐ嵀 FreeBSD Ä£Ä⣬ vec ÒÔ¼°Êä³ö¸ñʽ֮ºóµÄ 5.0-CURRENT 500043 November 1, 2002 libc ÖмÓÈëÁËÈõ pthread_XXX ·ûºÅÖ®ºóµÄ 5.0-CURRENT£¬ ´Ó¶øÌÔÌ­ÁË libXThrStub.so¡£ 5.0-RELEASE¡£ 500100 January 17, 2003 ´´½¨ RELENG_5_0 ·ÖÖ§Ö®ºóµÄ 5.0-CURRENT 500101 February 19, 2003 <sys/dkstat.h> ±ä³ÉÁËÒ»¸ö¿ÕÎļþ£¬ ²»Ó¦ÔÙ±»ÒýÓà 500102 February 25, 2003 ÐÞ¸Ä d_mmap_t ½Ó¿ÚÖ®ºóµÄ 5.0-CURRENT 500103 February 26, 2003 taskqueue_swi ÒÔÎÞÈ«¾ÖËøµÄ·½Ê½ÔËÐÐÖ®ºóµÄ 5.0-CURRENT£¬ ͬʱ»¹¼ÓÈëÁËʹÓÃÈ«¾ÖËøµÄ taskqueue_swi_giant 500104 February 27, 2003 È¥µôÁË cdevsw_add() ºÍ cdevsw_remove() ³öÏÖ MAJOR_AUTO ·ÖÅä»úÖÆ 500105 March 4, 2003 ²ÉÓÃÐ嵀 cdevsw ³õʼ»¯·½·¨Ö®ºóµÄ 5.0-CURRENT 500106 March 8, 2003 devstat_add_entry() ±» devstat_new_entry() È¡´ú 500107 March 15, 2003 ÐÞ¸Ä devstat ½Ó¿Ú£» Çë²Î¼û sys/sys/param.h 1.149 500108 March 15, 2003 ¸Ä±äÁË Token-Ring ½Ó¿Ú 500109 March 25, 2003 ¼ÓÈë vm_paddr_t 500110 March 28, 2003 ½« &man.realpath.3; ¸ÄΪḬ̈߳²È«Ö®ºóµÄ 5.0-CURRENT 500111 April 9, 2003 &man.usbhid.3; Óë NetBSD ͬ²½Ö®ºóµÄ 5.0-CURRENT 500112 April 17, 2003 ¼ÓÈëÐ嵀 NSS ʵÏÖ£¬ ÒÔ¼° POSIX.1 getpw*_r, getgr*_r º¯ÊýÖ®ºóµÄ 5.0-CURRENT 500113 May 2, 2003 ɾȥ¾Éʽ rc ϵͳ֮ºóµÄ 5.0-CURRENT 501000 June 4, 2003 5.1-RELEASE. 501100 June 2, 2003 ´´½¨ RELENG_5_1 ·ÖÖ§Ö®ºóµÄ 5.1-CURRENT 501101 June 29, 2003 ¸ÄÕý sigtimedwait(2) ºÍ sigwaitinfo(2) ÓïÒåÖ®ºóµÄ 5.1-CURRENT 501102 July 3, 2003 ÔÚ &man.bus.dma.tag.create.9; ÖмÓÈëÁË lockfunc ºÍ lockfuncarg ×Ö¶ÎÖ®ºóµÄ 5.1-CURRENT 501103 July 31, 2003 ¼¯³ÉÁË GCC 3.3.1-pre 20030711 Ö®ºóµÄ 5.1-CURRENT 501104 August 5, 2003 twe ÖÐ 3ware API ±ä»¯Ö®ºóµÄ 5.1-CURRENT 501105 August 17, 2003 ÔÊÐí¶¯Ì¬Á¬½Ó /bin ºÍ /sbin£¬ ÒÔ¼°½«Ä³Ð©¿âÒÆ¶¯µ½ /lib Ö®ºóµÄ 5.1-CURRENT 501106 September 8, 2003 Ôö¼ÓÄں˼¶ Coda 6.x Ö§³ÖÖ®ºóµÄ 5.1-CURRENT 501107 September 17, 2003 ½« 16550 UART ³£Á¿´Ó <dev/sio/sioreg.h> Ųµ½ <dev/ic/ns16550.h> Ö®ºóµÄ 5.1-CURRENT¡£ ´ËÍ⣬ rtld Ò²´Ó´ËÎÞÌõ¼þÖ§³Ö libmap ¹¦ÄÜ 501108 September 23, 2003 ¸üРPFIL_HOOKS API Ö®ºóµÄ 5.1-CURRENT 501109 September 27, 2003 Ôö¼Ó kiconv(3) Ö®ºóµÄ 5.1-CURRENT 501110 September 28, 2003 ĬÈ쵀 cdevsw open ºÍ close ²Ù×÷±ä»¯Ö®ºóµÄ 5.1-CURRENT 501111 October 16, 2003 cdevsw µÄ²¼¾Ö±ä»¯Ö®ºóµÄ 5.1-CURRENT 501112 October 16, 2003 Ôö¼Ó kobj ¶à¼Ì³ÐÖ®ºóµÄ 5.1-CURRENT 501113 October 31, 2003 ÐÞ¸Ä struct ifnet ÖÐµÄ if_xname Ö®ºóµÄ 5.1-CURRENT 501114 November 16, 2003 ½« /bin ºÍ /sbin ¸ÄΪ¶¯Ì¬Á¬½ÓÖ®ºóµÄ 5.1-CURRENT 502000 December 7, 2003 5.2-RELEASE 502010 February 23, 2004 5.2.1-RELEASE 502100 December 7, 2003 ´´½¨ RELENG_5_2 ·ÖÖ§Ö®ºóµÄ 5.2-CURRENT 502101 December 19, 2003 libc ÖмÓÈëÁË __cxa_atexit/__cxa_finalize Á½¸öº¯ÊýÖ®ºóµÄ 5.2-CURRENT 502102 January 30, 2004 ĬÈÏÏ߳̿â´Ó libc_r ¸ÄΪ libpthread Ö®ºóµÄ 5.2-CURRENT 502103 February 21, 2004 É豸Çý¶¯ API ´ó¹æÄ£·­ÐÞÖ®ºóµÄ 5.2-CURRENT 502104 February 25, 2004 Ôö¼Ó getopt_long_only() Ö®ºóµÄ 5.2-CURRENT 502105 March 5, 2004 C µÄ NULL ¶¨Òå¸ÄΪ ((void *)0) Ö®ºóµÄ 5.2-CURRENT£¬ Õâ»á²úÉú¸ü¶àµÄ±àÒ뾯¸æ 502106 March 8, 2004 pf Á¬ÈëÁª±àºÍ°²×°¹ý³ÌÖ®ºóµÄ 5.2-CURRENT 502107 March 10, 2004 ÔÚ sparc64 ÉϽ« time_t ¸ÄΪ 64-λ ÖµÖ®ºóµÄ 5.2-CURRENT 502108 March 12, 2004 ÔÚһЩͷÎļþÐÞ¸ÄÒÔÖ§³Ö Intel C/C++ ±àÒëÆ÷£¬ ÒÔ¼°Èà execve(2) ¸üÑϸñµØ·ûºÏ POSIX Ö®ºóµÄ 5.2-CURRENT 502109 March 22, 2004 ÒýÈë bus_alloc_resource_any API Ö®ºóµÄ 5.2-CURRENT 502110 March 27, 2004 ¼ÓÈë UTF-8 locale Ö®ºóµÄ 5.2-CURRENT 502111 April 11, 2004 ɾȥ getvfsent(3) API Ö®ºóµÄ 5.2-CURRENT 502112 April 13, 2004 Ϊ make(1) Ôö¼Ó .warning Óï¾äÖ®ºóµÄ 5.2-CURRENT 502113 June 4, 2004 ËùÓд®¿ÚÉ豸¶¼Ç¿ÖÆÊ¹Óà ttyioctl() Ö®ºóµÄ 5.2-CURRENT 502114 June 13, 2004 ÒýÈë ALTQ ¿ò¼ÜÖ®ºóµÄ 5.2-CURRENT 502115 June 14, 2004 ÐÞ¸Ä sema_timedwait(9) ʹÆä³É¹¦Ê±·µ»Ø 0£¬ ʧ°Üʱ·µ»Ø·Ç 0 µÄ´íÎó´úÂëÖ®ºóµÄ 5.2-CURRENT 502116 June 16, 2004 ½«ÄÚºË dev_t ¸ÄΪָÏò struct cdev * µÄÖ¸ÕëÖ®ºóµÄ 5.2-CURRENT 502117 June 17, 2004 ½«ÄÚºË udev_t ¸ÄΪ dev_t Ö®ºóµÄ 5.2-CURRENT 502118 June 17, 2004 Ϊ clock_gettime(2) ºÍ clock_getres(2) Ôö¼Ó CLOCK_VIRTUAL ºÍ CLOCK_PROF Ö§³ÖÖ®ºóµÄ 5.2-CURRENT 502119 June 22, 2004 ¶ÔÍøÂç½Ó¿Ú¸´ÖƽøÐÐÈ«ÃæÐÞ¸ÄÖ®ºóµÄ 5.2-CURRENT 502120 July 2, 2004 package ¹¤¾ßÉý¼¶Îª 20040629 Ö®ºóµÄ 5.2-CURRENT 502121 July 9, 2004 ²»ÔÙ½«À¶ÑÀ´úÂë±ê¼ÇΪ i386 רÓÃÖ®ºóµÄ 5.2-CURRENT 502122 July 11, 2004 ÒýÈë KDB µ÷ÊÔÆ÷¿ò¼ÜÖ®ºóµÄ 5.2-CURRENT¡£ ͬʱ»¹ÒýÈëÁË DDB ×÷Ϊºǫ́£¬ ÒÔ¼° GDB ºǫ́¡£ 502123 July 12, 2004 ÐÞ¸Ä VFS_ROOT ºÍ vflush ʹÆäʹÓÃÒ»¸ö struct thread ²ÎÊýÖ®ºóµÄ 5.2-CURRENT¡£ struct kinfo_proc Ôö¼ÓÁËÒ»¸öÓû§Êý¾ÝÖ¸Õë¡£ ͬʱ£¬ ĬÈ쵀 X ʵÏÖÇл»Îª xorg 502124 July 24, 2004 ½«Ê¹Óà rc.d ºÍ´«Í³½Å±¾µÄ port ·Ö±ðÆô¶¯Ö®ºóµÄ 5.2-CURRENT 502125 July 28, 2004 È¡ÏûǰһÐÞ¸ÄÖ®ºóµÄ 5.2-CURRENT 502126 July 31, 2004 ɾ³ý kmem_alloc_pageable() ²¢ÒýÈë gcc 3.4.2 µÄ 5.2-CURRENT 502127 August 2, 2004 ÐÞ¸Ä UMA ÄÚºË API ÔÊÐí¹¹½¨º¯ÊýºÍ³õʼ»¯Ê§°ÜÖ®ºóµÄ 5.2-CURRENT 502128 August 8, 2004 vfs_mount Ç©ÃûºÍÈ«¾ÖÌæ»» suser(9) API µÄ PRISON_ROOT Ϊ SUSER_ALLOWJAIL Ö®ºóµÄ 5.2-CURRENT 503000 August 23, 2004 pfil API ÐÞ¸Ä֮ǰµÄ 5.3-BETA/RC 503001 September 22, 2004 5.3-RELEASE 503100 October 16, 2004 ´´½¨ RELENG_5_3 ·ÖÖ§Ö®ºóµÄ 5.3-STABLE 503101 December 3, 2004 ¼ÓÈëÁË glibc ·ç¸ñµÄ &man.strftime.3; Ìî³äÑ¡ÏîµÄ 5.3-STABLE 503102 February 13, 2005 MFC OpenBSD µÄ nc(1) Ö®ºóµÄ 5.3-STABLE 503103 February 27, 2005 ÔÚ MFC ÁË <src/include/stdbool.h> ºÍ <src/sys/i386/include/_types.h> ÓÃÓÚ¼æÈÝ GCC ºÍ Intel C/C++ ±àÒëÆ÷µÄÐÞÕýÖ®ºóµÄ 5.4-PRERELEASE 503104 February 28, 2005 MFC Á˽« ifi_epoch ÓÉ wall ʱÖÓʱ¼ä¸ÄΪ uptime Ö®ºóµÄ 5.4-PRERELEASE 503105 March 2, 2005 MFC ÁË vswprintf(3) ÖÐµÄ EOVERFLOW ¼ì²éµÄ 5.4-PRERELEASE 504000 April 3, 2005 5.4-RELEASE. 504100 April 3, 2005 ´´½¨ RELENG_5_4 ·ÖÖ§Ö®ºóµÄ 5.4-STABLE 504101 May 11, 2005 ¼Ó´óĬÈÏÏ̶߳ÑÕ»³ß´çÖ®ºóµÄ 5.4-STABLE 504102 June 24, 2005 ¼ÓÈë sha256 Ö®ºóµÄ 5.4-STABLE 504103 October 3, 2005 MFC if_bridge Ö®ºóµÄ 5.4-STABLE 504104 November 13, 2005 bsdiff ºÍ portsnap MFC Ö®ºóµÄ 5.4-STABLE 504105 January 17, 2006 ÔÚ MFC ÁË ldconfig_local_dirs ÐÞ¸ÄÖ®ºóµÄ 5.4-STABLE¡£ 505000 May 12, 2006 5.5-RELEASE. 505100 May 12, 2006 ÔÚ´´½¨ RELENG_5_5 ·ÖÖ§Ö®ºóµÄ 5.5-STABLE 600000 August 18, 2004 6.0-CURRENT 600001 August 27, 2004 ÄÚºËÖÐÓÀ¾ÃÐÔÆôÓà PFIL_HOOKS Ö®ºóµÄ 6.0-CURRENT 600002 August 30, 2004 ×î³õ½« ifi_epoch ¼ÓÈë if_data ½á¹¹Ö®ºóµÄ 6.0-CURRENT¡£ ´Ëºó²»¾Ã¼´±»³·Ïú¡£ Ç벻ҪʹÓÃÕâ¸öÖµ¡£ 600003 September 8, 2004 if_data ÖÐÔٴμÓÈë ifi_epoch ³ÉÔ±Ö®ºóµÄ 6.0-CURRENT 600004 September 29, 2004 ½« struct inpcb ²ÎÊý¼ÓÈë pfil API Ö®ºóµÄ 6.0-CURRENT 600005 October 5, 2004 newsyslog ¼ÓÈëÁË "-d DESTDIR" ²ÎÊýÖ®ºóµÄ 6.0-CURRENT 600006 November 4, 2004 ¼ÓÈëÁË glibc ·ç¸ñµÄ &man.strftime.3; Ìî³äÑ¡ÏîÖ®ºóµÄ 6.0-CURRENT 600007 December 12, 2004 ¼ÓÈëÁË 802.11 ¿ò¼Ü¸üÐÂÖ®ºóµÄ 6.0-CURRENT 600008 January 25, 2005 ÐÞ¸Ä VOP_*VOBJECT() ²¢ÎªÎÞÈ«¾ÖËøµÄÎļþϵͳÒýÈë MNTK_MPSAFE ±êÖ¾Ö®ºóµÄ 6.0-CURRENT 600009 February 4, 2005 ¼ÓÈë cpufreq ¿ò¼ÜºÍÇý¶¯Ö®ºóµÄ 6.0-CURRENT 600010 February 6, 2005 ÒýÈë OpenBSD µÄ nc(1) Ö®ºóµÄ 6.0-CURRENT 600011 February 12, 2005 ɾȥ²¢²»´æÔÚµÄ SVID2 matherr() Ö§³ÖÖ®ºóµÄ 6.0-CURRENT 600012 February 15, 2005 Ôö´óĬÈÏÏ̶߳ÑÕ»³ß´çÖ®ºóµÄ 6.0-CURRENT 600013 February 19, 2005 Ôö¼ÓÁËÕë¶Ô <src/include/stdbool.h> ºÍ <src/sys/i386/include/_types.h> µÄÓÃÓÚ Intel C/C++ ±àÒëÆ÷µÄ GCC-¼æÈÝÐÔÐÞÕý¡£ 600014 February 21, 2005 ÐÞÕýÁË vswprintf(3) µÄ EOVERFLOW ¼ì²éÖ®ºóµÄ 6.0-CURRENT 600015 February 25, 2005 ½« struct if_data ³ÉÔ± ifi_epoch ´Ó wall ʱÖÓʱ¼ä¸ÄΪ uptime Ö®ºóµÄ 6.0-CURRENT 600016 February 26, 2005 ÐÞ¸Ä LC_CTYPE ´ÅÅ̸ñʽ֮ºóµÄ 6.0-CURRENT 600017 February 27, 2005 ÐÞ¸Ä NLS ±à¼´ÅÅ̸ñʽ֮ºóµÄ 6.0-CURRENT 600018 February 27, 2005 ÐÞ¸Ä LC_COLLATE ´ÅÅ̸ñʽ֮ºóµÄ 6.0-CURRENT 600019 February 28, 2005 ½« acpica Í·Îļþ°²×°µ½ /usr/include 600020 March 9, 2005 Ϊ send(2) API ¼ÓÈëÁË MSG_NOSIGNAL 600021 March 17, 2005 ÔÚ cdevsw ÉÏÔö¼ÓÁËһЩ×Ö¶Î 600022 March 21, 2005 »ù±¾ÏµÍ³ÖÐɾȥÁË gtar 600023 April 13, 2005 unix(4) ÖмÓÈëÁË LOCAL_CREDS, LOCAL_CONNWAIT Á½¸ö socket Ñ¡Ïî 600024 April 19, 2005 ¼ÓÈëÁË &man.hwpmc.4; ¼°ÆäÏà¹Ø¹¤¾ßÖ®ºóµÄ 6.0-CURRENT 600025 April 26, 2005 ¼ÓÈë struct icmphdr Ö®ºóµÄ 6.0-CURRENT 600026 May 3, 2005 pf ¸üе½ÁË 3.7 600027 May 6, 2005 ÒýÈëÁËÄÚºË libalias ºÍ ng_nat 600028 May 13, 2005 ½« ttyname_r(3) ½Ó¿Ú¸ÄΪ·ûºÏ POSIX ±ê×¼£¬ ²¢Í¨¹ý unistd.h ºÍ libc 600029 May 29, 2005 ½« libpcap Éý¼¶Îª v0.9.1 alpha 096 Ö®ºóµÄ 6.0-CURRENT 600030 June 5, 2005 ÒýÈë NetBSD µÄ if_bridge(4) Ö®ºóµÄ 6.0-CURRENT 600031 June 10, 2005 ½« struct ifnet ´ÓÇý¶¯µÄ softc Öвð³öÖ®ºóµÄ 6.0-CURRENT¡£ 600032 July 11, 2005 ÒýÈëÁË libpcap v0.9.1 Ö®ºóµÄ 6.0-CURRENT¡£ 600033 July 25, 2005 ËùÓÐ×Ô RELENG_5 ÒÔÀ´Ã»ÓÐÐ޸ĹýµÄ¹²Ïí¿âµÄ°æ±¾µÝÔöÖ®ºóµÄ 6.0-STABLE¡£ 600034 August 13, 2005 Ϊ dev_clone ʼþ´¦Àíº¯ÊýÔö¼ÓÉí·ÝÐÅÏ¢²ÎÊýÖ®ºóµÄ 6.0-STABLE¡£ 6.0-RELEASE¡£ 600100 November 1, 2005 6.0-RELEASE Ö®ºóµÄ 6.0-STABLE 600101 December 21, 2005 ½« local_startup Ŀ¼ÖеĽű¾¼¯³Éµ½»ù±¾ÏµÍ³µÄ &man.rcorder.8; Ö®ºóµÄ 6.0-STABLE¡£ 600102 December 30, 2005 ¸üРELF ÀàÐͺͳ£Á¿Ö®ºóµÄ 6.0-STABLE¡£ 600103 January 15, 2006 MFC ÁË pidfile(3) API Ö®ºóµÄ 6.0-STABLE¡£ 600104 January 17, 2006 ÔÚ MFC ÁË ldconfig_local_dirs ÐÞ¸ÄÖ®ºóµÄ 6.0-STABLE¡£ 600105 February 26, 2006 ÔÚ csh(1) ÖмÓÈëÁË NLS Ŀ¼֧³ÖÖ®ºóµÄ 6.0-STABLE¡£ 601000 May 6, 2006 6.1-RELEASE 601100 May 6, 2006 6.1-RELEASE Ö®ºóµÄ 6.1-STABLE¡£ 601101 June 22, 2006 ÒýÈë csup Ö®ºóµÄ 6.1-STABLE¡£ 601102 July 11, 2006 ¸üÐÂÁË iwi(4) Ö®ºóµÄ 6.1-STABLE¡£ 601103 July 17, 2006 ½«ÓòÃû½âÎöº¯Êý¸üÐÂÖÁ BIND9£¬ ²¢µ¼³öÁË¿ÉÖØÈë°æ±¾µÄ netdb º¯ÊýÖ®ºóµÄ 6.1-STABLE¡£ 601104 August 8, 2006 ÔÚ OpenSSL ÖÐÆôÓÃÁË DSO (¶¯Ì¬¹²Ïí¿â) Ö§³ÖÖ®ºóµÄ 6.1-STABLE¡£ 601105 September 2, 2006 ÓÉÓÚ 802.11 ÐÞÕý±ä¶¯ÁË IEEE80211_IOC_STA_INFO ioctl API Ö®ºóµÄ 6.1-STABLE¡£ 602000 November 15, 2006 6.2-RELEASE 602100 September 15, 2006 6.2-RELEASE Ö®ºóµÄ 6.2-STABLE¡£ 602101 December 12, 2006 ¼ÓÈë Wi-Spy quirk Ö®ºóµÄ 6.2-STABLE¡£ 602102 December 28, 2006 Ôö¼Ó pci_find_extcap() Ö®ºóµÄ 6.2-STABLE¡£ 602103 January 16, 2007 MFC ÁË¶Ô dlsym ½øÐÐÐ޸ģ¬ ʹÆäÔÚÖ¸¶¨ dso ¼°Æä°µÖ¸µÄÒÀÀµÖвéÕÒ·ûºÅÖ®ºóµÄ 6.2-STABLE¡£ 602104 January 28, 2007 MFC ÁË netgraph ½Úµã ng_deflate(4) ºÍ ng_pred1(4) ÒÔ¼°ÓÃÓÚ ng_ppp(4) ½ÚµãµÄÐÂѹËõ¼°¼ÓÃÜģʽ֮ºóµÄ 6.2-STABLE¡£ 602105 February 20, 2007 MFC ÁË´Ó NetBSD ÒÆÖ²µÄ BSD ÊÚȨµÄ &man.gzip.1; Ö®ºóµÄ 6.2-STABLE¡£ 602106 March 31, 2007 MFC ÁË PCI MSI ºÍ MSI-X Ö§³ÖÖ®ºóµÄ 6.2-STABLE¡£ 602107 April 6, 2007 MFC Á˰üº¬¿í×Ö·ûÖ§³ÖµÄ ncurses 5.6 Ö®ºóµÄ 6.2-STABLE¡£ 602108 April 11, 2007 MFC ÁËʵÏÖ Linux SCSI SG ֱͨÉ豸 API ×Ó¼¯µÄ CAM 'SG' É豸֮ºóµÄ 6.2-STABLE¡£ 602109 April 17, 2007 MFC ÁË readline 5.2 patchset 002 Ö®ºóµÄ 6.2-STABLE¡£ 602110 May 2, 2007 MFC ÁËÓÃÓÚ amd64 ºÍ i386 µÄ pmap_invalidate_cache()¡¢ pmap_change_attr()¡¢ pmap_mapbios()¡¢ pmap_mapdev_attr()¡¢ and pmap_unmapbios() Ö®ºóµÄ 6.2-STABLE¡£ 602111 June 11, 2007 ÓÉÓÚ MFC ÁË BOP_BDFLUSH µ¼ÖÂÎļþϵͳģ¿é KBI ±ä»¯Ö®ºóµÄ 6.2-STABLE¡£ 602112 September 21, 2007 һϵÁÐ libutil(3) MFC Ö®ºóµÄ 6.2-STABLE¡£ 602113 October 25, 2007 MFC ÁË¿í×Ö·ûºÍµ¥×Ö½Ú ctype º¯Êý·Ö²ðÖ®ºóµÄ 6.2-STABLE¡£ бàÒëµÄÒýÓÃÁË ctype.h µÄ¿ÉÖ´ÐÐÎļþ£¬ ¿ÉÄÜ»áÐèÒªÒ»¸öÔÚ¾ÉϵͳÉϲ»´æÔÚµÄÐÂÔö·ûºÅ __mb_sb_limit¡£ 602114 October 30, 2007 »Ö¸´ÁË ctype ABI Ïòǰ¼æÈÝÐÔÖ®ºóµÄ 6.2-STABLE¡£ 602115 November 21, 2007 »ØÍËÁË¿í×Ö·ûºÍµ¥×Ö½Ú ctype ·Ö²ðÖ®ºóµÄ 6.2-STABLE¡£ 603000 November 25, 2007 6.3-RELEASE 603100 November 25, 2007 ÔÚ 6.3-RELEASE Ö®ºóµÄ 6.3-STABLE¡£ 603101 December 7, 2007 ÐÞÕýÁË bit macro µÄ¶à×Ö½ÚÖ§³ÖÖ®ºóµÄ 6.3-STABLE¡£ 603102 April 24, 2008 Ϊ flock ½á¹¹¼ÓÈë l_sysid Ö®ºóµÄ 6.3-STABLE¡£ 603103 May 27, 2008 MFC ÁË memrchr º¯ÊýÖ®ºóµÄ 6.3-STABLE¡£ 603104 June 15, 2008 Ϊ make(1) MFC :u ±äÁ¿ÐÞÊηûÖ®ºóµÄ 6.3-STABLE¡£ 604000 October 4, 2008 6.4-RELEASE 604100 October 4, 2008 6.4-RELEASE Ö®ºóµÄ 6.4-STABLE¡£ 700000 July 11, 2005 7.0-CURRENT¡£ 700001 July 23, 2005 ËùÓÐ×Ô RELENG_5 ÒÔÀ´Ã»ÓÐÐ޸ĹýµÄ¹²Ïí¿âµÄ°æ±¾µÝÔöÖ®ºóµÄ 7.0-CURRENT¡£ 700002 August 13, 2005 Ϊ dev_clone ʼþ´¦Àíº¯ÊýÖÐÔö¼ÓÉí·ÝÐÅÏ¢²ÎÊýÖ®ºóµÄ 7.0-CURRENT¡£ 700003 August 25, 2005 ½« memmem(3) ¼ÓÈë libc Ö®ºóµÄ 7.0-CURRENT¡£ 700004 October 30, 2005 ½« solisten(9) ¸ÄΪ½ÓÊÜÒ» backlog ²ÎÊýÖ®ºóµÄ 7.0-CURRENT¡£ 700005 November 11, 2005 ½« IFP2ENADDR() ¸ÄΪ·µ»ØÒ» IF_LLADDR() Ö¸ÕëÖ®ºóµÄ 7.0-CURRENT¡£ 700006 November 11, 2005 ÔÚ struct ifnet ÖÐÔö¼Ó if_addr ³ÉÔ±£¬ ²¢É¾³ý IFP2ENADDR() Ö®ºóµÄ 7.0-CURRENT¡£ 700007 December 2, 2005 ½« local_startup Ŀ¼ÖеĽű¾¼¯³Éµ½»ù±¾ÏµÍ³µÄ &man.rcorder.8; Ö®ºóµÄ 7.0-CURRENT¡£ 700008 December 5, 2005 È¥µô MNT_NODEV ¹Ò½ÓÑ¡ÏîÖ®ºóµÄ 7.0-CURRENT¡£ 700009 December 19, 2005 ¶Ô ELF-64 ÀàÐͺͷûºÅ°æ±¾½øÐбä¸üÖ®ºóµÄ 7.0-CURRENT¡£ 700010 December 20, 2005 Ôö¼Ó hostb ºÍ vgapci Çý¶¯¡¢ pci_find_extcap()£¬ ²¢½« AGP Çý¶¯¸ÄΪ²»ÔÙÓ°Éä aperature Ö®ºóµÄ 7.0-CURRENT¡£ 700011 December 31, 2005 ³ý Alpha Ö®ÍâµÄËùÓÐÆ½Ì¨ÉÏ tv_sec ¸ÄΪ time_t Ö®ºóµÄ 7.0-CURRENT¡£ 700012 January 8, 2006 ÐÞ¸Ä ldconfig_local_dirs Ö®ºóµÄ 7.0-CURRENT¡£ 700013 January 12, 2006 ÔÚÐÞ¸ÄÁË /etc/rc.d/abi ÒÔÖ§³Ö /compat/linux/etc/ld.so.cache ÒÔijֻ¶ÁÎļþϵͳÉϵķûºÅÁ¬½ÓÐÎʽ´æÔÚÖ®ºóµÄ 7.0-CURRENT¡£ 700014 January 26, 2006 ÒýÈë pts Ö®ºóµÄ 7.0-CURRENT¡£ 700015 March 26, 2006 ÔÚÒýÈë &man.hwpmc.4; µÄµÚ 2 °æ ABI Ö®ºóµÄ 7.0-CURRENT¡£ 700016 April 22, 2006 ÔÚ libc ÖмÓÈëÁË &man.fcloseall.3; Ö®ºóµÄ 7.0-CURRENT¡£ 700017 May 13, 2006 ɾȥ ip6fw Ö®ºóµÄ 7.0-CURRENT¡£ 700018 July 15, 2006 ÒýÈëÁË snd_emu10kx Ö®ºóµÄ 7.0-CURRENT¡£ 700019 July 29, 2006 ÒýÈëÁË OpenSSL 0.9.8b Ö®ºóµÄ 7.0-CURRENT¡£ 700020 September 3, 2006 Ôö¼ÓÁË bus_dma_get_tag º¯ÊýÖ®ºóµÄ 7.0-CURRENT¡£ 700021 September 4, 2006 ÔÚÒýÈëÁË libpcap 0.9.4 ºÍ tcpdump 3.9.4 Ö®ºóµÄ 7.0-CURRENT¡£ 700022 September 9, 2006 ÔÚ¶Ô dlsym ½øÐÐÐ޸ģ¬ ʹÆäÔÚÖ¸¶¨ dso ¼°Æä°µÖ¸µÄÒÀÀµÖвéÕÒ·ûºÅÖ®ºóµÄ 7.0-CURRENT¡£ 700023 September 23, 2006 Ϊ OSSv4 »ìÒôÆ÷ API ¼ÓÈëеÄÉùÒô IOCTL Ö®ºóµÄ 7.0-CURRENT¡£ 700024 September 28, 2006 »ãÈë OpenSSL 0.9.8d Ö®ºóµÄ 7.0-CURRENT¡£ 700025 November 11, 2006 ¼ÓÈëÁË libelf Ö®ºóµÄ 7.0-CURRENT¡£ 700026 November 26, 2006 ¶ÔÒôЧÏà¹ØµÄ sysctl ½øÐдó·ùµ÷ÕûÖ®ºóµÄ 7.0-CURRENT¡£ 700027 November 30, 2006 ¼ÓÈë Wi-Spy quirk Ö®ºóµÄ 7.0-CURRENT¡£ 700028 December 15, 2006 ÔÚ libc ÖмÓÈë sctp µ÷ÓÃÖ®ºóµÄ 7.0-CURRENT¡£ 700029 January 26, 2007 ½« GNU &man.gzip.1; ʵÏÖÌæ»»Îª´Ó NetBSD ÒÆÖ²µÄ²ÉÓà BSD ÊÚȨ°æ±¾Ö®ºóµÄ 7.0-CURRENT¡£ 700030 February 7, 2007 ÔÚ IPv4 ¶à²¥×ª·¢´úÂëÖÐɾȥÁË IPIP ËíµÀ·â×° (VIFF_TUNNEL) Ö®ºóµÄ 7.0-CURRENT¡£ 700031 February 23, 2007 ÐÞ¸ÄÁË bus_setup_intr() (newbus) Ö®ºóµÄ 7.0-CURRENT¡£ 700032 March 2, 2007 ÒýÈëÁË ipw(4) ºÍ iwi(4) ¹Ì¼þÖ®ºóµÄ 7.0-CURRENT¡£ 700033 March 9, 2007 ÔÚ ncurses ÖÐÒýÈëÁË¿í×Ö·ûÖ§³ÖÖ®ºóµÄ 7.0-CURRENT¡£ 700034 March 19, 2007 ÐÞ¸ÄÁË insmntque()¡¢ getnewvnode() ÒÔ¼° vfs_hash_insert() ¹¤×÷·½Ê½Ö®ºóµÄ 7.0-CURRENT¡£ 700035 March 26, 2007 Ôö¼Ó CPU ƵÂʱ䶯֪ͨ»úÖÆÖ®ºóµÄ 7.0-CURRENT¡£ 700036 April 6, 2007 ÒýÈëÁË ZFS Îļþϵͳ֮ºóµÄ 7.0-CURRENT¡£ 700037 April 8, 2007 ÐÂÔöÁËʵÏÖ Linux SCSI SG ֱͨÉ豸 API ×Ó¼¯µÄ CAM 'SG' É豸֮ºóµÄ 7.0-CURRENT¡£ 700038 April 30, 2007 ½« &man.getenv.3;¡¢ &man.putenv.3;¡¢ &man.setenv.3; ºÍ &man.unsetenv.3; ¸ÄΪ·ûºÏ POSIX Ö®ºóµÄ 7.0-CURRENT¡£ 700039 May 1, 2007 »ØÍËÁË 700038 Öеı䶯֮ºóµÄ 7.0-CURRENT¡£ 700040 May 10, 2007 ÔÚ libutil ÖÐÔö¼ÓÁË &man.flopen.3; Ö®ºóµÄ 7.0-CURRENT¡£ 700041 May 13, 2007 ÆôÓÃÁË·ûºÅ°æ±¾£¬ ²¢½« libthr ¸ÄΪĬÈÏÏ߳̿âÖ®ºóµÄ 7.0-CURRENT¡£ 700042 May 19, 2007 ÒýÈëÁË gcc 4.2.0 Ö®ºóµÄ 7.0-CURRENT¡£ 700043 May 21, 2007 ½« RELENG_6 Ö®ºóδÐ޸Ĺý°æ±¾µÄ¹²Ïí¿â°æ±¾Ôö¼ÓÖ®ºóµÄ 7.0-CURRENT¡£ 700044 June 7, 2007 ½« vn_open()/VOP_OPEN() µÄ²ÎÊýÓÉÎļþÃèÊö·ûÊý×éϱê¸ÄΪ struct file * Ö®ºóµÄ 7.0-CURRENT¡£ 700045 June 10, 2007 ÐÞ¸Ä &man.pam.nologin.8; ʹÆäÏò PAM ¿ò¼ÜÌṩÕʺŹÜÀí¹¦Äܶø·ÇÉí·ÝÑéÖ¤¹¦ÄÜÖ®ºóµÄ 7.0-CURRENT¡£ 700046 June 11, 2007 ¸üР802.11 ÎÞÏßÖ§³ÖÖ®ºóµÄ 7.0-CURRENT¡£ 700047 June 11, 2007 Ôö¼Ó TCP LRO ÍøÂç½Ó¿ÚÄÜÁ¦Ö®ºóµÄ 7.0-CURRENT¡£ 700048 June 12, 2007 ÔÚ IPv4 ЭÒéÕ»ÖмÓÈëÁË RFC 3678 API Ö§³ÖÖ®ºóµÄ 7.0-CURRENT¡£ ÏÈǰ IP_MULTICAST_IF ioctl µÄ RFC 1724 ÐÐΪ±»É¾È¥£» 0.0.0.0/8 ²»ÔÙÄܹ»ÓÃÓÚÖ¸¶¨½Ó¿ÚË÷Òýϱ꣬ ¶øÓ¦Ê¹Óà struct ipmreqn ´úÌæ¡£ 700049 July 3, 2007 ÒýÈë OpenBSD 4.1 µÄ pf Ö®ºóµÄ 7.0-CURRENT¡£ (not changed) Ϊ FAST_IPSEC Ôö¼Ó IPv6 Ö§³Ö£¬ ɾȥ KAME IPSEC£¬ ²¢½« FAST_IPSEC ¸üÃûΪ IPSEC Ö®ºóµÄ 7.0-CURRENT¡£ - (δ±ä¶¯) + (δ±ä¶¯) 700050 July 4, 2007 ½« setenv/putenv/µÈµÈµ÷Ó㬠´Ó´«Í³ BSD ¸ÄΪ POSIX ±ê×¼Ö®ºóµÄ 7.0-CURRENT¡£ 700051 July 4, 2007 Ôö¼ÓÐ嵀 mmap/lseek/µÈµÈÕâЩϵͳµ÷ÓÃÖ®ºóµÄ 7.0-CURRENT¡£ 700052 July 6, 2007 ½« I4B Í·ÎļþÒÆ¶¯µ½ include/i4b Ö®ºóµÄ 7.0-CURRENT¡£ 700053 September 30, 2007 Ôö¼ÓÁË PCI domain Ö§³ÖÖ®ºóµÄ 7.0-CURRENT¡£ 700054 October 25, 2007 MFC ÁË¿í×Ö·ûºÍµ¥×Ö½Ú×Ö·û ctype ·Ö²ðÖ®ºóµÄ 7.0-CURRENT¡£ 700055 October 28, 2007 7.0-RELEASE£¬ ÒÔ¼° MFC Á˻ָ´¶Ô FreeBSD 4/5/6 °æ±¾µÄ PCIOCGETCONF¡¢ PCIOCREAD ºÍ PCIOCWRITE IOCTL ABI ÏòϼæÈÝÖ®ºóµÄ 7.0-CURRENT£¬ ÕâÒ»±ä¶¯µ¼Ö PCIOCGETCONF IOCTL µÄ ABI Ôٴη¢Éú±ä»¯¡£ 700100 December 22, 2007 7.0-RELEASE Ö®ºóµÄ 7.0-STABLE 700101 February 8, 2008 MFC m_collapse() Ö®ºóµÄ 7.0-STABLE¡£ 700102 March 30, 2008 MFC kdb_enter_why() Ö®ºóµÄ 7.0-STABLE¡£ 700103 April 10, 2008 Ϊ flock ½á¹¹¼ÓÈë l_sysid Ö®ºóµÄ 7.0-STABLE¡£ 700104 April 11, 2008 ÔÚ procstat(1) MFC Ö®ºóµÄ 7.0-STABLE¡£ 700105 April 11, 2008 ÔÚ MFC umtx ÌØÐÔÖ®ºóµÄ 7.0-STABLE¡£ 700106 April 15, 2008 Ϊ &man.psm.4; MFC &man.write.2; Ö§³ÖÖ®ºóµÄ 7.0-STABLE¡£ 700107 April 20, 2008 Ϊ &man.fcntl.2; MFC F_DUP2FD Ö®ºóµÄ 7.0-STABLE¡£ 700108 May 5, 2008 ¶Ô &man.lockmgr.9; ×öÁËһЩÐÞ¸ÄÖ®ºóµÄ 7.0-STABLE£¬ ÔÚʹÓà &man.lockmgr.9; ʱ±ØÐè°üº¬ sys/lock.h¡£ 700109 May 27, 2008 MFC ÁË memrchr º¯ÊýÖ®ºóµÄ 7.0-STABLE¡£ 700110 August 5, 2008 MFC ÁËÄÚºË NFS locked ¿Í»§¶ËÖ®ºóµÄ 7.0-STABLE¡£ 700111 August 20, 2008 ¼ÓÈëÁ˶ÔÎïÀíÁ¬Ðø¾ÞÖ¡Ö§³ÖÖ®ºóµÄ 7.0-STABLE¡£ 700112 August 27, 2008 ÔÚ MFC ÄÚºË DTrace Ö§³ÖÖ®ºóµÄ 7.0-STABLE¡£ 701000 November 25, 2008 7.1-RELEASE 701100 November 25, 2008 7.1-RELEASE Ö®ºóµÄ 7.1-STABLE¡£ 701101 January 10, 2009 ºÏ²¢ÁË strndup Ö®ºóµÄ 7.1-STABLE¡£ 701102 January 17, 2009 ¼ÓÈëÁË cpuctl(4) Ö§³ÖÖ®ºóµÄ 7.1-STABLE¡£ 701103 February 7, 2009 ºÏ²¢ÁË ¶à/ÎÞ-IPv4/v6 jail Ö®ºóµÄ 7.1-STABLE¡£ 701104 February 14, 2009 ÔÚ struct mount Öб£´æÁË¹ÒÆðÊôÖ÷£¬ ÒÔ¼°ÔÚ struct vfsops ÖÐÒýÈëÁË vfs_susp_clean ·½·¨Ö®ºóµÄ 7.1-STABLE¡£ 701105 March 12, 2009 ¶Ô kern.ipc.shmsegs sysctl ±äÁ¿²»¼æÈݵÄÐ޸ģ¬ ÒÔÔÊÐíÔÚ 64bit ¹¹¼ÜÉÏ·ÖÅä¸ü¶àµÄ SysV ¹²ÏíÄÚ´æ¶ÎÖ®ºóµÄ 7.1-STABLE¡£ 701106 March 14, 2009 ºÏ²¢ÁËÒ»¸ö¶Ô POSIX semaphore µÈ´ý²Ù×÷ÐÞÕýÖ®ºóµÄ 7.1-STABLE¡£ 702000 April 15, 2009 7.2-RELEASE 702100 April 15, 2009 7.2-RELEASE Ö®ºóµÄ 7.2-STABLE¡£ 702101 May 15, 2009 ichsmb(4) ¸ÄΪʹÓÃ×óÁÚ½Ó¸¨±àÖ·À´±£³ÖÓëÆäËü SMBus ¿ØÖÆÆ÷Çý¶¯Ò»ÖÂÐÔÖ®ºóµÄ 7.2-STABLE¡£ 702102 May 28, 2009 MFC ÁË fdopendir º¯ÊýÖ®ºóµÄ 7.2-STABLE¡£ 702103 June 06, 2009 MFC ÁË PmcTools Ö®ºóµÄ 7.2-STABLE¡£ 702104 July 14, 2009 MFC ÁË closefrom ϵͳµ÷ÓÃÖ®ºóµÄ 7.2-STABLE¡£ 702105 July 31, 2009 MFC ÁË SYSVIPC ABI ¸Ä¶¯Ö®ºóµÄ 7.2-STABLE¡£ 702106 September 14, 2009 MFC ÁË x86 PAT ÔöÇ¿£¬ ²¢ÐÂÔöÁË d_mmap_single() ÒÔ¼° scatter/gather ÐÍ VM ¶ÔÏóÀàÐÍÖ®ºóµÄ 7.2-STABLE¡£ 703000 February 9, 2010 7.3-RELEASE 703100 February 9, 2010 7.3-RELEASE Ö®ºóµÄ 7.3-STABLE¡£ 704000 December 22, 2010 7.4-RELEASE 704100 December 22, 2010 7.4-RELEASE Ö®ºóµÄ 7.4-STABLE¡£ 800000 October 11, 2007 8.0-CURRENT¡£ ·Ö²ðÁË¿í×Ö·ûºÍµ¥×Ö½Ú×Ö·û ctype¡£ 800001 October 16, 2007 ÒýÈëÁË libpcap 0.9.8 ºÍ tcpdump 3.9.8 Ö®ºóµÄ 8.0-CURRENT¡£ 800002 October 21, 2007 ½« kthread_create() ϵÁк¯Êý¸ÄÃûΪ kproc_create() Ö®ºóµÄ 8.0-CURRENT¡£ 800003 October 24, 2007 »Ö¸´ÁË¶Ô FreeBSD 4/5/6 °æ±¾µÄ PCIOCGETCONF¡¢ PCIOCREAD ºÍ PCIOCWRITE IOCTL ABI ÏòϼæÈÝÖ®ºóµÄ 8.0-CURRENT£¬ ÕâÒ»±ä¶¯µ¼Ö PCIOCGETCONF IOCTL µÄ ABI Ôٴη¢Éú±ä»¯¡£ 800004 November 12, 2007 ½« agp(4) Çý¶¯´Ó src/sys/pci Ųµ½ src/sys/dev/agp Ö®ºóµÄ 8.0-CURRENT¡£ 800005 December 4, 2007 ÐÞ¸ÄÁË jumbo frame ·ÖÅäÆ÷Ö®ºóµÄ 8.0-CURRENT¡£ 800006 December 7, 2007 ÔÚ¸ø &man.hwpmc.4; ¼ÓÈëÁË callgraph ²¶×½¹¦ÄܺóµÄ 8.0-CURRENT 800007 December 25, 2007 kdb_enter() Ôö¼Ó "why" ²ÎÊýÖ®ºóµÄ 8.0-CURRENT¡£ 800008 December 28, 2007 ÔÚÈ¥³ý LK_EXCLUPGRADE Ñ¡ÏîºóµÄ 8.0-CURRENT¡£ 800009 January 9, 2008 ÒýÈë &man.lockmgr.disown.9; Ö®ºóµÄ 8.0-CURRENT¡£ 800010 January 10, 2008 ÐÞ¸Ä &man.vn.lock.9; Ô­ÐÍÖ®ºóµÄ 8.0-CURRENT¡£ 800011 January 13, 2008 ÐÞ¸Ä &man.VOP.LOCK.9; ºÍ &man.VOP.UNLOCK.9; Ô­ÐÍÖ®ºóµÄ 8.0-CURRENT¡£ 800012 January 19, 2008 ÒýÈë &man.lockmgr.recursed.9;¡¢ &man.BUF.RECURSED.9; ºÍ &man.BUF.ISLOCKED.9; ²¢É¾³ýÁË BUF_REFCNT() Ö®ºóµÄ 8.0-CURRENT¡£ 800013 January 23, 2008 ÒýÈë ASCII ±àÂëÖ®ºóµÄ 8.0-CURRENT¡£ 800014 January 24, 2008 ÐÞ¸Ä &man.lockmgr.9; ²¢É¾³ýÁË lockcount() ºÍ LOCKMGR_ASSERT() Ö®ºóµÄ 8.0-CURRENT¡£ 800015 January 26, 2008 À©Õ¹ÁË &man.fts.3; Êý¾Ý½á¹¹Ö®ºóµÄ 8.0-CURRENT¡£ 800016 February 1, 2008 Ϊ MEXTADD(9) Ôö¼ÓÁËÒ»¸ö²ÎÊýÖ®ºóµÄ 8.0-CURRENT¡£ 800017 February 6, 2008 Ϊ &man.lockmgr.9; ÒýÈë LK_NODUP ºÍ LK_NOWITNESS Ñ¡ÏîºóµÄ 8.0-CURRENT¡£ 800018 February 8, 2008 ÒýÈë m_collapse Ö®ºóµÄ 8.0-CURRENT¡£ 800019 February 9, 2008 Ϊ sysctl ±äÁ¿ kern.proc.filedesc ¼ÓÈë µ±Ç°¹¤×÷Ŀ¼£¬root Ŀ¼ºÍ jail Ŀ¼֧³ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800020 February 13, 2008 ÒýÈë &man.lockmgr.assert.9; Ö®ºóµÄ 8.0-CURRENT¡£ 800021 February 15, 2008 ÒýÈë &man.lockmgr.args.9; ºÍÒÆ³ý LK_INTERNAL ±êÖ¾Ö®ºóµÄ 8.0-CURRENT¡£ 800022 (backed out) °Ñ BSD &man.ar.1; ×÷ΪϵͳĬÈ쵀 ar Ö®ºóµÄ 8.0-CURRENT¡£ 800023 February 25, 2008 ÐÞ¸ÄÁË &man.lockstatus.9; ºÍ &man.VOP.ISLOCKED.9; Ô­ÐÍ£¬Ìرðʱȥµô struct thread ²ÎÊýÖ®ºóµÄ 8.0-CURRENT¡£ 800024 March 1, 2008 ¿³µôÁË lockwaiters ºÍ BUF_LOCKWAITERS º¯Êý£¬ brelvp µÄ·µ»ØÖµ´Ó void ÐÞ¸Ä³É int£¬²¢ÒýÈë &man.lockinit.9; бêÖ¾Ö®ºóµÄ 8.0-CURRENT¡£ 800025 March 8, 2008 Ϊ &man.fcntl.2; ÒýÈë F_DUP2FD Ö®ºóµÄ 8.0-CURRENT¡£ 800026 March 12, 2008 ÐÞ¸ÄÁË cv_broadcastpri ÓÅÏÈȨ²ÎÊýÖ®ºóµÄ 8.0-CURRENT£¬±ÈÈç 0 ±íʾÎÞÓÅÏÈȨ¡£ 800027 March 24, 2008 ÐÞ¸ÄÁË bpf ¼à²â ABI, ¼ÓÈëÁË zerocopy bpf buffer Ö®ºóµÄ 8.0-CURRENT¡£ 800028 March 26, 2008 Ϊ flock ½á¹¹Ôö¼ÓÁË l_sysid Ö®ºóµÄ 8.0-CURRENT¡£ 800029 March 28, 2008 ÖØÐÂÕûºÏÁË BUF_LOCKWAITERS º¯Êý²¢¼ÓÈë &man.lockmgr.waiters.9; Ö®ºóµÄ 8.0-CURRENT¡£ 800030 April 1, 2008 ÒýÈë &man.rw.try.rlock.9; ºÍ &man.rw.try.wlock.9; Ö®ºóµÄ 8.0-CURRENT¡£ 800031 April 6, 2008 ÒýÈë lockmgr_rw ºÍ lockmgr_args_rw º¯ÊýÖ®ºóµÄ 8.0-CURRENT¡£ 800032 April 8, 2008 ʵÏÖÁË openat ºÍÏà¹ØµÄϵͳµ÷Óã¬Îª &man.open.2; ÒýÈëÁË O_EXEC ±êÖ¾£¬ºÍÌṩÁËÏàÓ¦µÄ linux ¼æÈݵÄϵͳµ÷ÓÃÖ®ºóµÄ 8.0-CURRENT¡£ 800033 April 8, 2008 Ϊ &man.psm.4; Ôö¼ÓÁËÔ­ÉúµÄ &man.write.2; Ö§³ÖÖ®ºóµÄ 8.0-CURRENT¡£ ÏÖÔÚÈÎÒâÃüÁî¿ÉдÈë /dev/psm%d ²¢¶Á³ö״̬¡£ 800034 April 10, 2008 ÒýÈë memrchr º¯ÊýÖ®ºóµÄ 8.0-CURRENT¡£ 800035 April 16, 2008 ÒýÈë fdopendir º¯ÊýÖ®ºóµÄ 8.0-CURRENT 800036 April 20, 2008 ÎÞÏß²¿·ÖתÏò multi-bss (Ò²½Ð×ö vaps) Ö§³ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800037 May 9, 2008 ¼ÓÈë¶à·ÓɱíÖ§³Ö (Ò²¾ÍÊÇ setfib(1)¡¢ stfib(2)£© ºóµÄ 8.0-CURRENT¡£ 800038 May 26, 2008 ɾȥÁË netatm ºÍ ISDN4BSD ºóµÄ 8.0-CURRENT¡£ Õâ¸ö°æ±¾Ò²±íʾÔö¼ÓÁË Compact C Type (CTF) ¹¤¾ß¡£ 800039 June 14, 2008 ÒÆ³ý sgtty Ö®ºóµÄ 8.0-CURRENT¡£ 800040 June 26, 2008 Ôö¼ÓÁËÄں˼¶ NFS lockd ¿Í»§¶ËµÄ 8.0-CURRENT¡£ 800041 July 22, 2008 Ôö¼ÓÁË arc4random_buf(3) ºÍ arc4random_uniform(3) Ö®ºóµÄ 8.0-CURRENT¡£ 800042 August 8, 2008 Ôö¼ÓÁË cpuctl(4) Ö®ºóµÄ 8.0-CURRENT¡£ 800043 August 13, 2008 ÐÞ¸Ä bpf(4) ʹÓõ¥Ò»µÄÉ豸½Úµã¶ø²»Êǿˡ֮ºóµÄ 8.0-CURRENT¡£ 800044 August 17, 2008 ÔÚÌá½»ÁË vimage ÏîÄ¿µÚÒ»²½Ö®ºóµÄ 8.0-CURRENT¡£°ÑÈ«¾Ö±äÁ¿ÖØÃüÃûΪÐéÄ⻯´ø V_ ǰ׺²¢ÓúêÓ³Éäµ½Ô­À´µÄÈ«¾ÖÃû³Æ¡£ 800045 August 20, 2008 ÒýÈë MPSAFE TTY ²ãÖ®ºóµÄ 8.0-CURRENT£¬ °üÀ¨¶ÔÏà¹ØÇý¶¯ºÍ¹¤¾ßµÄÐ޸ġ£ 800046 September 8, 2008 ½« amd64 ¼Ü¹¹ÉÏ GDT ²ð·Öµ½²»Í¬ CPU Ö®ºóµÄ 8.0-CURRENT¡£ 800047 September 10, 2008 ɾȥÁË VSVTX¡¢ VSGID ºÍ VSUID Ö®ºóµÄ 8.0-CURRENT¡£ 800048 September 16, 2008 ½«ÄÚºËÖÐ NFS ¹Ò½Ó²¿·ÖµÄ´úÂë¸ÄΪÄܹ»Í¨¹ý nmount() iovec£¬ ¶ø²»ÔÙÊÇ´óµÄ nfs_args ½á¹¹Ìå×÷Ϊ²ÎÊýÖ®ºóµÄ 8.0-CURRENT¡£ 800049 September 17, 2008 ɾȥÁË &man.suser.9; ºÍ &man.suser.cred.9; Ö®ºóµÄ 8.0-CURRENT¡£ 800050 October 20, 2008 ÐÞ¸ÄÁË»º³å´æ´¢Æ÷ API Ö®ºóµÄ 8.0-CURRENT¡£ 800051 October 23, 2008 ɾȥÁË &man.MALLOC.9; ºÍ &man.FREE.9; ºêÖ®ºóµÄ 8.0-CURRENT¡£ 800052 October 28, 2008 ÒýÈëÁË accmode_t ºÍÖØÐÂÃüÃû VOP_ACCES 'a_mode' Ϊ a_accmode Ö®ºóµÄ 8.0-CURRENT¡£ 800053 November 2, 2008 ÐÞ¸ÄÁË &man.vfs.busy.9; Ô­ÐͲ¢ÒýÈëÁË MBF_NOWAIT ºÍ MBF_MNTLSTLOCK ±êÖ¾Ö®ºóµÄ 8.0-CURRENT¡£ 800054 November 22, 2008 Ôö¼ÓÁË buf_ring¡¢ ÄÚ´æÕ¤ÒÔ¼° ifnet º¯Êý£¬ ÒÔ·½±ã׫д֧³Ö¶àÓ²¼þ´«Êä¶ÓÁеÄÇý¶¯£¬ ÒÔ¼°ÎÞËø»·Ðλº³åʵÏÖµÄÇý¶¯³ÌÐò£¬ ²¢¸ü¸ßЧµØ¹ÜÀí°ü¶ÓÁй¦ÄÜÖ®ºóµÄ 8.0-CURRENT¡£ 800055 November 27, 2008 ÒýÈëÁË &man.hwpmc.4; ¶ÔÓÚ Intel™ Core£¬Core2 ºÍ Atom µÄÖ§³ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800056 November 29, 2008 ÒýÈëÁË multi-/no-IPv4/v6 jail Ö®ºóµÄ 8.0-CURRENT¡£ 800057 December 1, 2008 ½« ath hal ¸ÄΪʹÓÃÔ´´úÂëÖ®ºóµÄ 8.0-CURRENT¡£ 800058 December 12, 2008 ÒýÈëÁË VOP_VPTOCNP ²Ù×÷Ö®ºóµÄ 8.0-CURRENT¡£ 800059 December 15, 2008 ÒýÈëÁËÐ嵀 arp-v2 ÖØÐ´Ö®ºóµÄ 8.0-CURRENT¡£ 800060 December 19, 2008 ÒýÈëÁË makefs Ö®ºóµÄ 8.0-CURRENT¡£ 800061 January 15, 2009 ÒýÈëÁË TCP Appropriate Byte Counting Ö®ºóµÄ 8.0-CURRENT¡£ 800062 January 28, 2009 ɾȥÁË minor()¡¢ minor2unit()¡¢ unit2minor() µÈÖ®ºóµÄ 8.0-CURRENT¡£ 800063 February 18, 2009 ÔÚ GENERIC ÅäÖÃÖиÄΪʹÓà USB2 Õ»Ö®ºóµÄ 8.0-CURRENT£» Õâ¸öÊýֵͬʱҲ±êÖ¾ÐÂÔöÁË fdevname(3)¡£ 800064 February 23, 2009 ½« USB2 Õ»ÒÆ¶¯²¢Ìæ»» dev/usb Ö®ºóµÄ 8.0-CURRENT¡£ 800065 February 26, 2009 ÔÚ¶Ô libmp(3) ÖÐËùÓк¯Êý¸üÃûÖ®ºóµÄ 8.0-CURRENT¡£ 800066 February 27, 2009 ¸ü¸ÄÁË USB devfs ¹ÜÀíºÍ²¼¾ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800067 February 28, 2009 ¼ÓÈëÁË getdelim()£¬ getline()£¬ stpncpy()£¬ strnlen()£¬ wcsnlen()£¬ wcscasecmp()£¬ ºÍ wcsncasecmp() Ö®ºóµÄ 8.0-CURRENT¡£ 800068 March 2, 2009 ÔÚ usbhub devclass ¸üÃûΪ uhub Ö®ºóµÄ 8.0-CURRENT¡£ 800069 March 9, 2009 ÖØÃüÃû libusb20.so.1 Ϊ libusb.so.1 Ö®ºóµÄ 8.0-CURRENT¡£ 800070 March 9, 2009 ºÏ²¢ IGMPv3 ºÍ Source-Specific Multicast (SSM) Èë IPv4 Õ»Ö®ºóµÄ 8.0-CURRENT¡£ 800071 March 14, 2009 Ϊ gcc ´òÉÏÁËÔÚ c99 ºÍ gnu99 ģʽÖÐʹÓà C99 inline ÓïÒå²¹¶¡Ö®ºóµÄ 8.0-CURRENT¡£ 800072 March 15, 2009 ÒÆ³ýÁË IFF_NEEDSGIANT ±êÖ¾; ²»ÔÙÖ§³Ö·ÇḬ̈߳²È«µÄÍøÂçÉ豸Çý¶¯Ö®ºóµÄ 8.0-CURRENT¡£ 800073 March 18, 2009 ʵÏÖÁË rpath ¶¯Ì¬×Ö·ûÌæ»»Ö®ºóµÄ 8.0-CURRENT. 800074 March 24, 2009 ÒýÈëÁË tcpdump 4.0.0 ºÍ libpcap 1.0.0 Ö®ºóµÄ 8.0-CURRENT¡£ 800075 April 6, 2009 ÐÞ¸ÄÁË structs vnet_net¡¢ vnet_inet ºÍ vnet_ipfw ½á¹¹²¼¾ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800076 April 9, 2009 Ϊ dummynet ÐÂÔöÁËÑÓ³ÙÆÀ¹À¹¤¾ßÖ®ºóµÄ 8.0-CURRENT¡£ 800077 April 14, 2009 ɾȥÁË VOP_LEASE() ºÍ vop_vector.vop_lease Ö®ºóµÄ 8.0-CURRENT 800078 April 15, 2009 ÔÚ struct rt_metrics ºÍ struct rt_metrics_lite ÖÐÌí¼ÓÁË rt_weight ×ֶΣ¬ µ¼ÖÂÆä½á¹¹·¢Éú±ä»¯Ö®ºóµÄ 8.0-CURRENT¡£ ´Ëºó RTM_VERSION Ôö¼Ó£¬ µ«ÓÖ»ØÍËÁË¡£ 800079 April 15, 2009 ÔÚ struct route ºÍ struct_in6 ÖÐÌí¼ÓÁË struct llentry Ö¸ÕëÖ®ºóµÄ 8.0-CURRENT¡£ 800080 April 15, 2009 ¸Ä±äÁË struct inpcb ²¼¾ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800081 April 19, 2009 ¸Ä±äÁË malloc_type ²¼¾ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800082 April 21, 2009 ¸Ä±äÁË struct ifnet ²¼¾Ö£¬ ²¢Ôö¼ÓÁË if_ref() ºÍ if_rele() ÒýÓüÆÊýά»¤¹¦ÄÜÖ®ºóµÄ 8.0-CURRENT¡£ 800083 April 22, 2009 ʵÏÖÁ˵ײãÀ¶ÑÀ HCI API Ö®ºóµÄ 8.0-CURRENT¡£ 800084 April 29, 2009 ÐÞ¸ÄÁË IPv6 SSM ºÍ MLDv2 Ö®ºóµÄ 8.0-CURRENT¡£ 800085 April 30, 2009 ÆôÓÃÁ˰üÀ¨Ò»¸ö»îÔ¾Ó³ÏñµÄ VIMAGE ÄÚºËÖ§³ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800086 May 8, 2009 Ϊ patch(1) Ôö¼ÓÈÎÒⳤÊäÈëÐÐÖ§³ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800087 May 11, 2009 ÐÞ¸ÄÁËһЩ VFS KPI Ö®ºóµÄ 8.0-CURRENT¡£ VFS µÄ FSD ²¿·ÖÖÐɾȥÁËÏ̲߳ÎÊý¡£ VFS_* º¯Êý²¢²»ÐèÒªÕâЩÉÏÏÂÎÄÐÅÏ¢£¬ ÒòΪËü×ÜÊÇÓë curthread Ïà¹Ø¡£ ÔÚÄ³Ð©ÌØÊâÇé¿öÖУ¬ Ôò±£ÁôÁËÔ­ÏȵÄÐÐΪ¡£ 800088 May 20, 2009 ¶Ô net80211 ¼àÊÓģʽ½øÐе÷ÕûÖ®ºóµÄ 8.0-CURRENT¡£ 800089 May 23, 2009 Ôö¼ÓÁË UDP ¿ØÖÆ¿éÖ§³ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800090 May 23, 2009 ½«ÍøÂç½Ó¿Ú¿Ë¡ÐéÄ⻯֮ºóµÄ 8.0-CURRENT¡£ 800091 May 27, 2009 Ôö¼ÓÁ˲ã´Îʽ jail ²¢È¡ÏûÈ«¾Ö securelevel Ö®ºóµÄ 8.0-CURRENT¡£ 800092 May 29, 2009 ÐÞ¸ÄÁË sx_init_flags() KPI Ö®ºóµÄ 8.0-CURRENT¡£ SX_ADAPTIVESPIN ÍËÒÛ£¬ ¶øÐÂÔöµÄ SX_NOADAPTIVE ±êÖ¾Ôò±í´ïÏà·´ÓïÒå¡£ 800093 May 29, 2009 Ϊ struct mount Ôö¼Ó mnt_xflag Ö®ºóµÄ 8.0-CURRENT¡£ 800094 May 30, 2009 ÐÂÔöÁË &man.VOP.ACCESSX.9; Ö®ºóµÄ 8.0-CURRENT¡£ 800095 May 30, 2009 µ÷ÕûÂÖѯ KPI (polling KPI) Ö®ºóµÄ 8.0-CURRENT¡£ ÂÖѯ´¦Àí³ÌÐò»á·µ»Ø´¦Àí¹ýµÄ°üµÄÊýÁ¿¡£ ÐÂÔöµÄ IFCAP_POLLING_NOCOUNT Ôò±íʾ·µ»ØÖµ²»ÖØÒª£¬ ²¢Ìø¹ý¼ÆÊý¡£ 800096 June 1, 2009 ¶ÔÐ嵀 netisr ½øÐÐÁ˸Ľø£¬ ²¢µ÷ÕûÁ˱£´æºÍ´æÈ¡ FIB ·½Ê½Ö®ºóµÄ 8.0-CURRENT¡£ 800097 June 8, 2009 ÒýÈëÁË vnet Îö¹¹¹Ò¹³ºÍÏà¹Ø»ù´¡Éèʩ֮ºóµÄ 8.0-CURRENT¡£ 800097 June 11, 2009 ÒýÈëÁË netgraph Êä³öµ½ÊäÈë·¾¶µ÷Óüì²âºÍÅŶӻúÖÆ£¬ ²¢µ÷ÕûÁË struct thread ²¼¾ÖÖ®ºóµÄ 8.0-CURRENT¡£ 800098 June 14, 2009 ÒýÈëÁË OpenSSL 0.9.8k Ö®ºóµÄ 8.0-CURRENT¡£ 800099 June 22, 2009 ¸üÐÂÁË NGROUPS ²¢½«Â·ÓÉÐéÄ⻯Ųµ½Ëü×Ô¼ºµÄ VImage Ä£¿éÖ®ºóµÄ 8.0-CURRENT¡£ 800100 June 24, 2009 ÐÞ¸ÄÁË SYSVIPC ABI Ö®ºóµÄ 8.0-CURRENT¡£ 800101 June 29, 2009 ɾȥÁËÓëÍøÂç½Ó¿ÚÒ»Ò»¶ÔÓ¦µÄ /dev/net/* ×Ö·ûÉ豸֮ºóµÄ 8.0-CURRENT¡£ 800102 July 12, 2009 ÔÚ struct sackhint¡¢ struct tcpcb ÒÔ¼° struct tcpstat ÉÏÔö¼ÓÕ¼Î»ÔªËØÖ®ºóµÄ 8.0-CURRENT¡£ 800103 July 13, 2009 ½« TOE Çý¶¯½Ó¿ÚÖÐµÄ struct tcpopt Ìæ»»Îª TCP syncache ÖÐµÄ struct toeopt Ö®ºóµÄ 8.0-CURRENT¡£ 800104 July 14, 2009 ÐÂÔöÁË»ùÓÚ linker-set µÄ per-vnet ·ÖÅäÆ÷Ö®ºóµÄ 8.0-CURRENT¡£ 800105 July 19, 2009 µÝÔöÁËËùÓÐδʹÓ÷ûºÅ°æ±¾µÄ¶¯Ì¬Á¬½Ó¿â°æ±¾Ö®ºóµÄ 8.0-CURRENT¡£ 800106 July 24, 2009 ÒýÈë VM ¶ÔÏóÀàÐÍ OBJT_SG Ö®ºóµÄ 8.0-CURRENT¡£ 800107 August 2, 2009 ͨ¹ý¼ÓÈë newbus sxlock ʹ newbus ×Óϵͳ²»ÔÙʹÓà Giant£¬ ÒÔ¼° 8.0-RELEASE¡£ 800108 November 21, 2009 ʵÏÖÁË EVFILT_USER kevent ¹ýÂËÆ÷Ö®ºóµÄ 8.0-STABLE¡£ 800500 January 7, 2010 Áî pkg_add -r ʹÓà packages-8-stable µÄ __FreeBSD_version °æ±¾±ä»¯µÄ 8.0-STABLE¡£ 800501 January 24, 2010 µ÷ÕûÁË scandir(3) ºÍ alphasort(3) º¯ÊýÔ­ÐÍ£¬ ʹÆä·ûºÏ SUSv4 Ö®ºóµÄ 8.0-STABLE¡£ 800502 January 31, 2010 ÐÂÔöÁË sigpause(3) Ö®ºóµÄ 8.0-STABLE¡£ 800503 February 25, 2010 ÐÂÔöÁËÓÃÓÚ¹ÜÀíÍøÂç½Ó¿Ú˵Ã÷µÄ SIOCGIFDESCR ºÍ SIOCSIFDESCR ioctl Ö®ºóµÄ 8.0-STABLE¡£ Õâ×é½Ó¿ÚÊܵ½ÁË OpenBSD µÄÆô·¢¡£ 800504 March 1, 2010 MFC ÁË x86emu£¬ À´×Ô OpenBSD µÄ x86 CPU ʵģʽģÄâÆ÷Ö®ºóµÄ 8.0-STABLE¡£ 800505 May 18, 2010 MFC ÁËÌí¼Ó liblzma, xz, xzdec ÒÔ¼° lzmainfo Ö®ºóµÄ 8.0-STABLE¡£ 801000 June 14, 2010 8.1-RELEASE 801500 June 14, 2010 8.1-RELEASE Ö®ºóµÄ 8.1-STABLE¡£ 801501 November 3, 2010 ÓÃÓÚ PL_FLAG_SCE/SCX/EXEC/SI µÄ struct sysentvec µÄ KBI ÒÔ¼° ÓÃÓÚ ptrace(PT_LWPINFO) µÄ pl_siginfo µÄ KBI ¸Ä±äÖ®ºóµÄ 8.1-STABLE¡£ 802000 December 22, 2010 8.2-RELEASE 802500 December 22, 2010 8.2-RELEASE Ö®ºóµÄ 8.2-STABLE¡£ 802501 February 28, 2011 ºÏ²¢ÁË DTrace ±ä¶¯£¬ °üº¬Óû§Ì¬¸ú×ÙÖ§³ÖÖ®ºóµÄ 8.2-STABLE¡£ 802502 March 6, 2011 ÔÚ libm Öкϲ¢ÁË log2 ºÍ log2f Ö®ºóµÄ 8.2-STABLE¡£ 802503 May 1, 2011 ½« gcc Éý¼¶ÖÁ FSF gcc-4_2-branch ×îºóÒ»¸ö GPLv2 °æ±¾Ö®ºóµÄ 8.2-STABLE¡£ 802504 May 28, 2011 ÒýÈëÄ£¿é»¯ÓµÈû¿ØÖÆÖ§³Ö»ù´¡ÉèÊ©ºÍ KPI Ö®ºóµÄ 8.2-STABLE¡£ 802505 May 28, 2011 ÒýÈëÁË Hhook ºÍ Khelp KPI Ö®ºóµÄ 8.2-STABLE¡£ 802506 May 28, 2011 ÔÚ tcpcb ½á¹¹ÖÐÔö¼Ó OSD Ö®ºóµÄ 8.2-STABLE¡£ 802507 June 6, 2011 ÒýÈë ZFS v28 Ö®ºóµÄ 8.2-STABLE¡£ 802508 June 8, 2011 ɾȥÁË sv_schedtail struct sysvec ·½·¨Ö®ºóµÄ 8.2-STABLE¡£ 802509 July 14, 2011 ÔÚ binutils Öкϲ¢ÁË SSE3 Ö§³ÖÖ®ºóµÄ 8.2-STABLE¡£ 802510 July 19, 2011 Ϊ rfork(2) Ìí¼ÓÁË RFTSIGZMB ±êÖ¾Ö®ºóµÄ 8.2-STABLE¡£ 900000 August 22, 2009 9.0-CURRENT¡£ 900001 September 8, 2009 ÒýÈëÁË x86emu£¬ À´×Ô OpenBSD µÄ x86 CPU ʵģʽģÄâÆ÷Ö®ºóµÄ 9.0-CURRENT¡£ 900002 September 23, 2009 ʵÏÖÁË EVFILT_USER kevent ¹ýÂËÆ÷Ö®ºóµÄ 9.0-CURRENT¡£ 900003 December 2, 2009 ÐÂÔöÁË sigpause(3) ÒÔ¼° csu µÄ PIE Ö§³ÖÖ®ºóµÄ 9.0-CURRENT¡£ 900004 December 6, 2009 ÐÂÔöÁË libulog ¼°Æä libutempter ¼æÈݽӿÚÖ®ºóµÄ 9.0-CURRENT¡£ 900005 December 12, 2009 ÐÂÔöÁËÓÃÓÚ²éѯָ¶¨ÐÝÃß¶ÓÁÐÉϵȴýÕßÊýÁ¿µÄ sleepq_sleepcnt() º¯ÊýÖ®ºóµÄ 9.0-CURRENT¡£ 900006 January 4, 2010 µ÷ÕûÁË scandir(3) ºÍ alphasort(3) º¯ÊýÔ­ÐÍ£¬ ʹÆä·ûºÏ SUSv4 Ö®ºóµÄ 9.0-CURRENT¡£ 900007 January 13, 2010 ɾȥÁË utmp(5) ²¢Ôö¼ÓÁË utmpx (²ÎÔÄ getutxent(3)) ÒÔ¸ÄÉÆÓû§µÇ¼ÈÕÖ¾ºÍϵͳʼþÖ§³ÖÖ®ºóµÄ 9.0-CURRENT¡£ 900008 January 20, 2010 9.0-CURRENT ÒýÈëÁË BSD ÊÚȨµÄ bc/dc ²¢½« GNU bc/dc ±êעΪ¹ýʱ֮ºóµÄ 9.0-CURRENT¡£ 900009 January 26, 2010 ÐÂÔöÁËÓÃÓÚ¹ÜÀíÍøÂç½Ó¿Ú˵Ã÷µÄ SIOCGIFDESCR ºÍ SIOCSIFDESCR ioctl Ö®ºóµÄ 9.0-CURRENT¡£ Õâ×é½Ó¿ÚÊܵ½ÁË OpenBSD µÄÆô·¢¡£ 900010 March 22, 2010 ÒýÈëÁË zlib 1.2.4 Ö®ºóµÄ 9.0-CURRENT¡£ 900011 April 24, 2010 Ìí¼ÓÁË soft-updates ÈÕÖ¾¹¦ÄÜÖ®ºóµÄ 9.0-CURRENT¡£ 900012 May 10, 2010 Ìí¼ÓÁË liblzma, xz, xzdec ÒÔ¼° lzmainfo Ö®ºóµÄ 9.0-CURRENT¡£ 900013 May 24, 2010 Ìí¼ÓÁËÕë¶Ô linux(4) µÄ USB ÐÞÕýÖ®ºóµÄ 9.0-CURRENT¡£ 900014 Jun 10, 2010 Ìí¼ÓÁË Clang Ö®ºóµÄ 9.0-CURRENT¡£ 900015 July 22, 2010 ÒýÈëÁË BSD grep Ö®ºóµÄ 9.0-CURRENT¡£ 900016 July 28, 2010 ÔÚ struct malloc_type_internal ÖмÓÈëÁË mti_zone Ö®ºóµÄ 9.0-CURRENT¡£ 900017 August 23, 2010 ĬÈÏ grep ¸Ä»ØÊ¹Óà GNU grep ²¢Ôö¼Ó WITH_BSD_GREP ¿ª¹ØÖ®ºóµÄ 9.0-CURRENT¡£ 900018 August 24, 2010 ½« pthread_kill(3) ²úÉúµÄÐźÅÔÚ si_code ÖиÄΪʹÓà SI_LWP ±ê¼ÇÖ®ºóµÄ 9.0-CURRENT¡£ ֮ǰ£¬ si_code ¶ÔÓ¦µÄ±ê־Ϊ SI_USER¡£ 900019 August 28, 2010 Ϊ mmap(2) ÐÂÔöÁË MAP_PREFAULT_READ ±êÖ¾Ö®ºóµÄ 9.0-CURRENT¡£ 900020 September 9, 2010 Ϊ sbuf Ôö¼ÓÁË drain ¹¦Äܲ¢¸Ä±äÁË struct sbuf ²¼¾ÖÖ®ºóµÄ 9.0-CURRENT¡£ 900021 September 13, 2010 DTrace Ôö¼ÓÓû§Ì¬¸ú×ÙÖ§³ÖÖ®ºóµÄ 9.0-CURRENT¡£ 900022 October 2, 2010 ÐÂÔöÁË BSDL man ¹¤¾ß£¬ ²¢ÌÔÌ­ GNU/GPL man ¹¤¾ßÖ®ºóµÄ 9.0-CURRENT¡£ 900023 October 11, 2010 ÒýÈë 20101010 git ¿ìÕÕ°æ±¾ xz Ö®ºóµÄ 9.0-CURRENT¡£ 900024 November 11, 2010 ½« libgcc.a Ìæ»»Îª libcompiler_rt.a Ö®ºóµÄ 9.0-CURRENT¡£ 900025 November 12, 2010 ÒýÈëÁËÄ£¿é»¯ÓµÈû¿ØÖÆÖ®ºóµÄ 9.0-CURRENT¡£ 900026 November 30, 2010 ÒýÈë´®ÐйÜÀíЭÒé (SMP) ֱͨ£¬ ÒÔ¼°ÓëÖ®¶ÔÓ¦µÄ CAM CCB XPT_SMP_IO ºÍ XPT_GDEV_ADVINFO Ö®ºóµÄ 9.0-CURRENT¡£ 900027 December 5, 2010 ÔÚ libm ÖÐÔö¼Ó log2 Ö®ºóµÄ 9.0-CURRENT¡£ 900028 December 21, 2010 Ìí¼ÓÁË Hhook (Helper Hook)¡¢ Khelp (Kernel Helpers) ºÍ Object Specific Data (OSD) KPI Ö®ºóµÄ 9.0-CURRENT¡£ 900029 December 28, 2010 ÐÞ¸Ä TCP ЭÒéջʹÆäÔÊÐí Khelp Ä£¿éͨ¹ý helper hook Ö¸Õ룬 Óë TCP ¿ØÖƿ齻»¥²¢±£´æÁ¬½ÓÊý¾ÝÖ®ºóµÄ 9.0-CURRENT¡£ 900030 January 12, 2011 ½« libdialog ¸üÐÂÖÁ°æ±¾ 20100428 Ö®ºóµÄ 9.0-CURRENT¡£ 900031 February 7, 2011 Ìí¼ÓÁË pthread_getthreadid_np(3) Ö®ºóµÄ 9.0-CURRENT¡£ 900032 February 8, 2011 ɾ³ýÁË uio_yield º¯ÊýÔ­ÐͺͷûºÅÖ®ºóµÄ 9.0-CURRENT¡£ 900033 February 18, 2011 ½« binutils ¸üÐÂÖÁ 2.17.50 Ö®ºóµÄ 9.0-CURRENT¡£ 900034 March 8, 2011 ÐÞ¸ÄÁË struct sysvec (sv_schedtail) Ö®ºóµÄ 9.0-CURRENT¡£ 900035 March 29, 2011 ½«»ù±¾ÏµÍ³ÖÐ gcc ºÍ libstdc++ Éý¼¶ÖÁ×îºóµÄ GPLv2 ÊÚȨ°æ±¾Ö®ºóµÄ 9.0-CURRENT¡£ 900036 April 18, 2011 ÔÚ»ù±¾ÏµÍ³ÖÐɾȥÁË libobjc ºÍ Objective-C Ö§³ÖÖ®ºóµÄ 9.0-CURRENT¡£ 900037 May 13, 2011 ÔÚ»ù±¾ÏµÍ³ÖÐÒýÈëÁË libprocstat(3) º¯Êý¿âÒÔ¼° fuser(1) ¹¤¾ßÖ®ºóµÄ 9.0-CURRENT¡£ 900038 May 22, 2011 Ϊ VFS_FHTOVP(9) Ìí¼ÓËø±êÖ¾²ÎÊýÖ®ºóµÄ 9.0-CURRENT¡£ 900039 June 28, 2011 ÒýÈëÁËÀ´×Ô OpenBSD 4.5 µÄ pf Ö®ºóµÄ 9.0-CURRENT¡£ 900040 July 19, 2011 ½« amd64 ºÍ ia64 ƽ̨É쵀 MAXCPU Ìá¸ßµ½ 64£¬ ²¢°Ñ XLP (mips) ÉϵÄÖµÌá¸ßµ½ 128 Ö®ºóµÄ 9.0-CURRENT¡£ 900041 August 13, 2011 ʵÏÖÁË Capsicum capabilities Ö®ºóµÄ 9.0-CURRENT¡£ fget(9) ÐÂÔöÁËȨÏÞ²ÎÊý¡£ 900042 August 28, 2011 Ìá¸ßÐ޸Ĺý ABI µÄ¶¯Ì¬Á¬½Ó¿â°æ±¾ºÅÖ®ºóµÄ 9.0-CURRENT¡£ 900043 September 2, 2011 Ôö¼ÓÁ˶Բ»Ö§³Ö SCSI ¿ìÈ¡»º´æÍ¬²½¹¦ÄÜµÄ USB ´óÈÝÁ¿´æ´¢É豸×Ô¶¯¼ì²â¹¦ÄÜÖ®ºóµÄ 9.0-CURRENT¡£ 900044 September 10, 2011 ÖØ¹¹ÁË auto-quirk Ö®ºóµÄ 9.0-CURRENT¡£ 900045 Oct 13, 2011 ½«·Ç¼æÈÝÐÔϵͳµ÷ÓÃÈë¿ÚµãÈ«²¿Ôö¼Ó sys_ ǰ׺֮ºóµÄ 9.0-CURRENT¡£
Çë×¢Ò⣬ 2.2.5-RELEASE Ö®ºóÓÐÒ»¶Îʱ¼äµÄ 2.2-STABLE »áÉù³Æ×Ô¼ºÊÇ 2.2.5-STABLE¡£ ÕâÖÖģʽµÄ°æ±¾ºÅ±íʾµÄÊÇÄêÔ¡£ µ«Ëæºó£¬ ÎÒÃǾö¶¨£¬ ´Ó 2.2 ¿ªÊ¼£¬ ½«Ëü¸ÄΪ¸üΪ¼ò½àµÄ Ö÷/´Î °æ±¾ºÅµÄÐÎʽÀ´ÃüÃû°æ±¾¡£ ÕâÊÇÒòΪ²¢ÐеØÔÚ¶à¸ö·ÖÖ§ÉϽøÐпª·¢£¬ ʹµÃͨ¹ýʵ¼ÊµÄ·¢²¼ÈÕÆÚÀ´Çø·Ö²»Í¬µÄ°æ±¾±äµÃ²»ÔÙÏÖʵ¡£ Èç¹ûÄúÕýÔÚ×öÐ嵀 port£¬ Ó¦¸Ã²»ÐèÒªµ£ÐĽÏÔçµÄ -CURRENT£» ÔÚ´ËÁгö½ö¹©²Î¿¼¡£
ÔÚ <filename>bsd.port.mk</filename> Ö®ºóдһЩÄÚÈÝ ²»ÒªÔÚ .include <bsd.port.mk> ÕâÐÐÖ®ºóÔö¼ÓÈκÎÄÚÈÝ¡£ Õâͨ³£¿ÉÒÔͨ¹ýÔÚÄúµÄ Makefile ÖмäµÄij´¦ÒýÓà bsd.port.pre.mk£¬ ²¢ÔÚ½áβµÄµØ·½ÒýÓà bsd.port.post.mk À´±ÜÃâ¡£ Ö»Äܹ»²ÉÓà bsd.port.pre.mk/bsd.port.post.mk »ò bsd.port.mk Á½ÖÖд·¨Ö®Ò»£» ÈκÎʱºò¶¼²»ÒªÍ¬Ê±Ê¹ÓÃÁ½ÖÖд·¨¡£ bsd.port.pre.mk Ö»¶¨ÒåÁ˺ÜÉٵıäÁ¿£¬ ËüÃÇ¿ÉÒÔÔÚ Makefile ÖÐÓÃÓÚ½øÐÐһЩ²âÊÔ£¬ ¶ø bsd.port.post.mk Ôò¶¨ÒåÁËËùÓÐÆäËüµÄ±äÁ¿¡£ ÏÂÃæÊÇһЩÓÉ bsd.port.pre.mk ¶¨ÒåµÄ±È½ÏÖØÒªµÄ±äÁ¿ (Õâ²¢²»ÊÇÒ»·ÝÍêÕûµÄÁÐ±í£¬ Äú¿ÉÒÔÔĶÁ bsd.port.mk ÒÔ»ñµÃÈ«²¿±äÁ¿µÄÃû×Ö)¡£ ±äÁ¿ ÃèÊö ARCH ÓÉ uname -m Êä³öµÃµ½µÄÓ²¼þ¼Ü¹¹µÄÃû×Ö (ÀýÈ磬 i386) OPSYS ÓÉ uname -s ·µ»ØµÄ²Ù×÷ϵͳÀàÐÍ (ÀýÈ磬 FreeBSD) OSREL ²Ù×÷ϵͳµÄ°æ±¾ºÅ (ÀýÈç 2.1.5 »ò 2.2.7) OSVERSION ²Ù×÷ϵͳµÄ°æ±¾ºÅµÄÊýÖµÐÎʽ£» ËüµÈÓÚ __FreeBSD_version¡£ PORTOBJFORMAT ϵͳĬÈϵÄÖ´ÐÐÎļþ¸ñʽ (elf »ò aout£» Çë×¢Ò⣬ ÏÖ´úµÄ FreeBSD °æ±¾ÖУ¬ aout ÒÑÔÚÌÔÌ­Ö®ÁС£) LOCALBASE local Ŀ¼µÄ¸ù (ÀýÈ磬 /usr/local/) PREFIX port Ó¦±»°²×°µ½ÄÄÀï (²Î¼û ¹ØÓÚ PREFIX µÄ¸ü¶à˵Ã÷)¡£ Èç¹ûÄúÐèÒª¶¨Òå USE_IMAKE£¬ USE_X_PREFIX£¬ »ò MASTERDIR ÕâЩ±äÁ¿£¬ ÔòÓ¦ÔÚÒýÓà bsd.port.pre.mk ֮ǰÍê³É¡£ ÏÂÃæÊÇһЩÔÚÒýÓà bsd.port.pre.mk Ö®ºó¿ÉÒÔ½øÐеÄÅжϣº # Èç¹û perl5 ÒѾ­ÔÚϵͳÖÐÌṩ£¬ Ôò²»±Ø±àÒë lang/perl5 .if ${OSVERSION} > 300003 BROKEN= perl is in system .endif # ELF ֻʹÓÃÒ»¸ö shlib °æ±¾ .if ${PORTOBJFORMAT} == "elf" TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR} .else TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR} .endif # Èí¼þ»á×Ô¶¯Îª ELF ´´½¨·ûºÅÁ´½Ó£¬ µ« a.out ÔòÐèÒªÁíÐд´½¨ post-install: .if ${PORTOBJFORMAT} == "aout" ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so .endif Äú»¹¼ÇµÃÓ¦¸ÃÔÚ BROKEN= ºÍ TCL_LIB_FILE= ºóÃæÊ¹ÓÃÖÆ±í·û£¬ ¶ø²»Êǿոñ£¬ ¶Ô°É£¿ :-) ÔÚ wrapper ½Å±¾ÖÐʹÓà <function>exec</function> Óï¾ä Èç¹û port °²×°ÁËÓÃÒÔÆô¶¯ÆäËû³ÌÐòµÄ½Å±¾£¬ ²¢ÇÒÔËÐÐÆäËû³ÌÐòÊÇÕâЩ½Å±¾µÄ×îºóÒ»Ïî²Ù×÷£¬ ÇëÎñ±ØÊ¹Óà exec Óï¾äÀ´ÔËÐÐÕâЩ³ÌÐò£¬ ÀýÈ磺 #!/bin/sh exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@" ʹÓà exec Óï¾ä±íʾִÐÐÖ¸¶¨µÄ³ÌÐòÀ´È¡´ú shell ½ø³Ì¡£ Èç¹ûÊ¡ÂÔÁË exec£¬ Ôò shell ½ø³Ì»áÒ»Ö±ÔÚÄÚ´æÖУ¬ ´Ó¶ø²»±ØÒªµØÏûºÄÁ˶îÍâµÄϵͳ×ÊÔ´¡£ ÀíÐÔÐÐÊ ÈκΠMakefile ¶¼Ó¦¸Ã¼òµ¥²¢ÀíÐÔµØÐÐÊ¡£ Èç¹ûÄúÄÜÈÃÆäÖеÄÌõÄ¿¸üΪ¼òµ¥ºÍÒ×¶Á£¬ Ò»¶¨ÒªÕâÑù×ö¡£ ÀýÈ磬 ʹÓà make ÌṩµÄ .if ½á¹¹£¬ ¶ø²»ÒªÊ¹Óà shell µÄ if£¬ Ö»ÒªÄÜÖØ¶¨Òå EXTRACT* ¾Í²»ÒªÖØÔØ do-extract£¬ ¾¡Á¿Ê¹Óà GNU_CONFIGURE ¶ø²»ÊÇ CONFIGURE_ARGS += --prefix=${PREFIX}¡£ Èç¹ûÄúÔÚ³¢ÊÔ×öʲôÊÂÇéµÄʱºò·¢ÏÖ²»µÃ²»Ð´´óÁ¿µÄ´úÂ룬 Çë»Ø¹ýÍ·À´¸´ÉóһϠbsd.port.mk£¬ ¿´¿´ÊÇ·ñÓÐÄúÕý´òËã×öµÄÊÂÇéµÄÏÖ³ÉʵÏÖ¡£ ¾¡¹Ü¶ÁÆðÀ´¿ÉÄܷܺѾ¢£¬ µ«ÓкܶàÃ²ËÆºÜÄѵÄÎÊÌ⣬ ÔÚ bsd.port.mk Öж¼¸ø³öÁËÊ®·Ö¼ò±ãµÄ½â¾ö·½°¸¡£ ×ñÑ­ <makevar>CC</makevar> ºÍ <makevar>CXX</makevar> ÉèÖà port Ó¦×ñÑ­ CC ºÍ CXX ±äÁ¿µÄÉèÖᣠÕâÒ²¾ÍÊÇ˵£¬ port ²»Ó¦Ê¹Óþø¶ÔµÄ·½Ê½À´ÉèÖÃÕâ¸ö±äÁ¿µÄÖµ£¬ ¶øØè¹ËÒѾ­´æÔÚµÄÉèÖã» Óë´ËÏà·´£¬ ËüÓ¦¸ÃÔÚÆäÖµºó¼ÓÈëÐèÒªµÄÆäËüÖµ¡£ ÕâÑù£¬ ¾Í¿ÉÒÔÉèÖÃÈ«¾ÖµÄÁª±àÑ¡Ï ÁîÆäÓ°ÏìËùÓÐµÄ port Áª±à¹ý³ÌÁË¡£ Èç¹ûʵÔÚÎÞ·¨ÕâÑù×ö£¬ ÇëÔÚ Makefile ÖмÓÈë NO_PACKAGE=ignores cflags¡£ ÏÂÃæµÄ Makefile ʵÀý¸ø³öÁËÈçºÎ×ñÑ­ CC ºÍ CXX ±äÁ¿µÄÉèÖᣠעÒâÕâÀïÓõ½µÄ ?=£º CC?= gcc CXX?= g++ ÏÂÃæÔòÊÇûÓÐ×ñÑ­ CC ºÍ CXX µÄÀý×Ó£º CC= gcc CXX= g++ ÔÚ FreeBSD ϵͳÖУ¬ CC ºÍ CXX ÕâÁ½¸ö±äÁ¿¶¼¿ÉÒÔÔÚ /etc/make.conf ÖÐ×ÔÐж¨Òå¡£ µÚÒ»¸öÀý×ÓÖ»ÓÐÔÚ /etc/make.conf ÖÐûÓж¨Òåʱ²Å¶ÔÕâÁ½¸ö±äÁ¿½øÐж¨Ò壬 ´Ó¶ø±£³ÖÁËϵͳ·¶Î§µÄÅäÖᣠ¶øµÚ¶þ¸öÀý×ÓÔò»á¸²¸ÇÈκÎÏÖÓеÄÅäÖᣠ×ñÑ­ <makevar>CFLAGS</makevar> ÄúµÄ port Ó¦×ñÑ­ CFLAGS ±äÁ¿µÄÉèÖᣠÕâÒ²¾ÍÊÇ˵£¬ port ²»Ó¦Ê¹Óþø¶ÔµÄ·½Ê½À´ÉèÖÃÕâ¸ö±äÁ¿µÄÖµ£¬ ¶øØè¹ËÒѾ­´æÔÚµÄÉèÖã» Óë´ËÏà·´£¬ ËüÓ¦¸ÃÔÚÆäÖµºó¼ÓÈëÐèÒªµÄÆäËüÖµ£¬ ÕâÑù£¬ ¾Í¿ÉÒÔÉèÖÃÈ«¾ÖµÄÁª±àÑ¡Ï ÁîÆäÓ°ÏìËùÓÐµÄ port Áª±à¹ý³ÌÁË¡£ Èç¹ûʵÔÚÎÞ·¨ÕâÑù×ö£¬ ÇëÔÚ Makefile ÖмÓÈë NO_PACKAGE=ignores cflags¡£ ÏÂÃæµÄ Makefile Àý×Ó£¬ ¿ÉÒÔ°ïÖúÎÒÃÇÀí½âÈçºÎ×ñÑ­ CFLAGS µÄÉèÖᣠעÒâËùÓÃµÄ +=£º CFLAGS+= -Wall -Werror ÏÂÃæÊÇÒ»¸öδÄÜ×ñÑ­ CFLAGS ÉèÖõÄÀý×Ó£º CFLAGS= -Wall -Werror Ò»°ãÀ´Ëµ£¬ CFLAGS ÔÚ FreeBSD ϵͳÖÐÊÇÔÚ /etc/make.conf ÀïÅäÖõġ£ µÚÒ»¸öÀý×ÓÔÚ CFLAGS ±äÁ¿ÖÐÔö¼ÓÁËһЩ²ÎÊý£¬ ²¢±£³ÖÁËËùÓÐϵͳԤ¶¨ÒåµÄ±êÖ¾¡£ ¶øµÚ¶þ¸öÀý×Ó£¬ Ôò»á¸²¸ÇµôÈκÎÏÈǰ¶¨ÒåµÄ²ÎÊý¡£ ÄúÓ¦´ÓµÚÈý·½Èí¼þµÄ Makefile ÖÐÈ¥µôÌØÊâµÄÓÅ»¯ÉèÖᣠϵͳµÄ CFLAGS ¸ø³öÁËȫϵͳ·¶Î§ÄÚµÄÓÅ»¯ÉèÖòÎÊý¡£ ÏÂÃæÊÇÒ»¸öδ¾­ÐÞ¸ÄµÄ Makefile ʵÀý£º CFLAGS= -O3 -funroll-loops -DHAVE_SOUND Èç¹ûʹÓÃϵͳµÄÓÅ»¯²ÎÊý£¬ Ôò Makefile ÖеÄÉèÖÃÓ¦¸ÃÀàËÆÏÂÃæÕâÑù£º CFLAGS+= -DHAVE_SOUND Ï߳̿â ÔÚ &os; ÉÏ£¬ Ïß³Ì¿â±ØÐëͨ¹ýÌØÊâµÄÁ¬½ÓÆ÷²ÎÊý -pthread Á¬½Óµ½¿ÉÖ´ÐÐÎļþ¡£ Èç¹û port Ò»¶¨ÒªÖ±½ÓÁ¬½Ó -lpthread »ò -lc_r£¬ ÔòÓ¦½«Æä¸ÄΪʹÓÃÓÉ ports ¿ò¼ÜÌṩµÄ PTHREAD_LIBS¡£ Õâ¸ö±äÁ¿µÄֵͨ³£ÊÇ -pthread£¬ µ«ÔÚÄ³Ð©ÌØ¶¨Æ½Ì¨É쵀 &os; °æ±¾ÖУ¬ Ëü¿ÉÄÜÊÇÆäËüÖµ£¬ Òò´Ë£¬ ²»Òª½« -pthread Ó²±àÂëµ½ÄúµÄ²¹¶¡ÖУ¬ ¶øÓ¦Ê¹Óà PTHREAD_LIBS ±äÁ¿¡£ Èç¹ûÉèÖÃÁË PTHREAD_LIBS£¬ ¶øÔÚÁª±àʱ³öÏÖ unrecognized option '-pthread' ÕâÑùµÄ´íÎó£¬ ¿ÉÄÜÐèҪͨ¹ý½« CONFIGURE_ENV ÉèΪ LD=${CC} À´Ê¹Óà gcc ×÷ΪÁ¬½ÓÆ÷¡£ -pthread ÕâһѡÏî²¢²»Îª ld ËùÖ±½ÓÖ§³Ö¡£ ·´À¡ Èç¹û½øÐÐÁËһЩºÜºÃµÄÐ޸ĺͲ¹¶¡£¬ Ò»¶¨Òª°ÑËüÃÇ·¢»Ø¸øÔ­×÷Õߣ¬ »òά»¤Õߣ¬ ÒÔ±ãÔÚÏÂÒ»°æ±¾µÄ´úÂëÖаüº¬ËüÃÇ¡£ Õâ»áÈÃÄúÔÚÈí¼þ·¢²¼Ð°汾µÄʱºò±äµÃÇáËÉһЩ¡£ <filename>README.html</filename> ²»Òª°üº¬ README.html Îļþ¡£ Õâ¸öÎļþ²¢·Ç CVS ´úÂë¿âÖеÄÒ»²¿·Ö£¬ ËüÊÇÓÉ make readme ÃüÁîÉú³ÉµÄ¡£ ʹÓà <makevar>BROKEN</makevar>¡¢ <makevar>FORBIDDEN</makevar> »ò <makevar>IGNORE</makevar> ×èÖ¹Óû§°²×° port ijЩʱºò»áÐèÒª×èÖ¹Óû§°²×°Ä³¸ö port¡£ ÏëÒª¸æËßÓû§Ä³¸ö port ²»Ó¦±»°²×°£¬ ÓÐÐí¶à¿ÉÒÔÔÚ port µÄ Makefile ÖÐʹÓÃµÄ make ±äÁ¿¡£ ÏÂÁÐ make µÄÖµ£¬ ½«ÊÇÔÚÓû§ÊÔͼ°²×°Ê±µÃµ½µÄÌáʾÐÅÏ¢¡£ ÎñÇëʹÓÃÕýÈ·µÄ make ±äÁ¿£¬ ÒòΪÿһ¸ö¶¼±í´ïÁ˽ØÈ»²»Í¬µÄÒâÒ壬 ¶øÇÒÐí¶à×Ô¶¯»¯ÏµÍ³£¬ ÀýÈç port Áª±à¼¯Èº¡¢ FreshPorts£¬ ÒÔ¼° portsmon£¬ ¶¼ÒÀÀµÓÚ Makefile µÄÕýÈ·ÐÔ¡£ ±äÁ¿ BROKEN רÃÅÓÃÓÚ±í´ïĿǰÎÞ·¨ÕýÈ·±àÒë¡¢ °²×°»òÐ¶ÔØÕâÀàÎÊÌâ¡£ Èç¹ûÊÇÁÙʱÐÔµÄÎÊÌ⣬ Ôò¿ÉÒÔʹÓÃËü¡£ Èç¹û½øÐÐÁËÏà¹ØµÄÅäÖ㬠ÔòÁª±à¼¯ÈºÈÔ½«³¢ÊÔÁª±àËü£¬ ÒÔÈ·Èϵ¼ÖÂÎÊÌâµÄÉî²ãÎÊÌâÊÇ·ñÒѱ»½â¾ö¡£ (²»¹ý£¬ Ò»°ãÇé¿öÏ£¬ Áª±à¼¯Èº²¢²»»áÕâÑù×ö¡£) ¾ÙÀýÀ´Ëµ£¬ µ± port ·¢ÉúÏÂÊöÇé¿öʱ£¬ ӦʹÓà BROKEN£º ÎÞ·¨±àÒë (does not compile) ÎÞ·¨ÕýÈ·½øÐÐÅäÖûò°²×°²Ù×÷ ÔÚ ${LOCALBASE} ÒÔÍâµÄµØ·½°²×°Îļþ Ð¶ÔØÊ±ÎÞ·¨É¾³ýËù°²×°µÄÈ«²¿Îļþ (²»¹ý£¬ ÁôÏÂÓû§¸Ä¹ýµÄÎļþ¿É½ÓÊܵģ¬ ÒòΪ¿ÉÄÜÏ£ÍûÕâÑù×÷) FORBIDDEN ÓÃÓÚ±íʾ ports Öаüº¬°²È«Â©¶´£¬ »òÕß¿ÉÄÜ»á¸ø°²×°ÁËÕâ¸ö port µÄ FreeBSD ϵͳ´øÀ´ÑÏÖØµÄ°²È«Òþ»¼ (ÀýÈ磺 Ò»¸öºÜ²»°²È«µÄ³ÌÐò£¬ »ò°üº¬ÁËÄܹ»±»ÇáÒ×¹¥ÏݵķþÎñµÄÈí¼þ)¡£ Èç¹û·¢ÏÖÁ˰²È«Â©¶´£¬ ¶øÆä×÷ÕßûÓз¢²¼Éý¼¶°æ±¾£¬ ÔòÓ¦Á¢¼´°ÑÄǸö port ±ê¼ÇΪ FORBIDDEN¡£ ÀíÏëÇé¿öÏ£¬ °üº¬°²È«Â©¶´µÄ port Ó¦±»¾¡¿ìÉý¼¶£¬ ÒÔ±ã¼õÉÙ°üº¬Â©¶´µÄ FreeBSD Ö÷»úµÄÊýÁ¿ (ÎÒÃÇÏ£Íû±£³ÖÁ¼ºÃµÄ°²È«¼Ç¼)£¬ È»¶ø£¬ ÓÐʱÔÚ°²È«Â©¶´µÄÅû¶ºÍÈí¼þ¸üÐÂÖ®¼ä¿ÉÄÜ»áÓÐÒ»¸ö¼ä¸ô£¬ ´ËʱӦÓèÒÔ˵Ã÷¡£ ³ýÁ˰²È«Ö®Í⣬ Çë²»ÒªÒÔÈÎºÎÆäËüÀíÓɽ« port ±ê¼ÇΪ FORBIDDEN¡£ IGNORE ÓÃÀ´±íʾ port ÓÉÓÚijЩÆäËüÔ­Òò²»Ó¦ÓèÒÔÁª±à¡£ Èç¹ûÈÏΪ·¢ÉúÁ˽ṹÐÔµÄÎÊÌ⣬ ÔòӦʹÓÃËü¡£ ÈκÎÇé¿öÏ£¬ Áª±à¼¯Èº¶¼²»»áÁª±à±ê¼ÇΪ IGNORE µÄ port¡£ ÒÔÏÂÊÇʹÓà IGNORE µÄһЩÀý×Ó£º Äܹ»±àÒ뵫ÎÞ·¨Õý³£ÔËÐÐ ÎÞ·¨ÓëÔËÐÐµÄ &os; °æ±¾Ò»Í¬¹¤×÷ Áª±àʱÐèÒª &os; Äں˵ÄÔ´´úÂ룬 µ«Óû§Ã»Óа²×°ËüÃÇ ÓÉÓÚÊÚȨԭÒò£¬ ±ØÐëÊÖ¹¤ÏÂÔØ distfile ÎÞ·¨ÓëµÄij¸öÒѰ²×°µÄ port һͬ¹¤×÷ (ÀýÈ磬 port ÒÀÀµÓÚ www/apache21 ¶ø°²×°µÄÔòÊÇ www/apache13) Èç¹û port Óëij¸öÒѾ­°²×°µÄ port ³åÍ» (ÀýÈ磬 ËüÃÇÔÚͬһλÖð²×°Í¬Ãûµ«¹¦Äܲ»Í¬µÄÎļþ)£¬ ÔòÓ¦ ʹÓà CONFLICTS À´±ê¼ÇËü¡£ CONFLICTS ½«×Ô¶¯µØÉèÖà IGNORE¡£ Èç¹û port Ö»Ó¦ÔÚijЩƽ̨Éϱê¼ÇΪ IGNORE£¬ »¹ÓÐÁíÍâÁ½¸ö·½±ãʹÓÃµÄ IGNORE ±äÁ¿¿É¹©Ñ¡Ôñ£º ONLY_FOR_ARCHS ºÍ NOT_FOR_ARCHS¡£ ÀýÈ磺 ONLY_FOR_ARCHS= i386 amd64 NOT_FOR_ARCHS= alpha ia64 sparc64 ¿ÉÒÔʹÓà ONLY_FOR_ARCHS_REASON ºÍ NOT_FOR_ARCHS_REASON À´ÅäÖö¨ÖÆµÄ IGNORE ÏûÏ¢¡£ ´ËÍ⣬ »¹¿ÉÒÔʹÓà ONLY_FOR_ARCHS_REASON_ARCH ºÍ NOT_FOR_ARCHS_REASON_ARCH À´·Ö±ðÖ¸¶¨Óë¾ßÌåÆ½Ì¨ÓйصÄÐÅÏ¢¡£ Èç¹û port »áÏÂÔØ²¢°²×°ÓÃÓÚ i386 µÄÔ¤±àÒë¶þ½øÖÆÎļþ£¬ ÔòÓ¦ÉèÖà IA32_BINARY_PORT¡£ Èç¹ûÉèÖÃÁËÕâ¸ö±äÁ¿£¬ Ôòϵͳ»á¼ì²éÊÇ·ñÒѾ­ÔÚ /usr/lib32 Ŀ¼Öа²×°ÁË IA32 °æ±¾µÄº¯Êý¿â£¬ ÒÔ¼°ÄÚºËÊÇ·ñÌṩÁË IA32 ¼æÈÝÖ§³Ö¡£ Èç¹ûÕâЩÒÀÀµÌõ¼þ²»Âú×㣬 Ôò»á×Ô¶¯ÉèÖà IGNORE¡£ ʵÏÖ˵Ã÷ ÕâЩ×Ö´®²»Ó¦Ê¹ÓÃÒýºÅÀ¨ÆðÀ´¡£ ´ËÍ⣬ ÓÉÓÚÏÔʾ¸øÓû§µÄ·½Ê½²»Í¬£¬ ÕâЩ×Ö´®µÄ´ë´ÇÒ²Ó¦ÓÐËù²»Í¬¡£ ÀýÈ磺 BROKEN= this port is unsupported on FreeBSD 5.x IGNORE= is unsupported on FreeBSD 5.x ËüÃÇ·Ö±ð»áÔÚ make describe ʱ²úÉúÏÂÃæµÄÊä³ö£º ===> foobar-0.1 is marked as broken: this port is unsupported on FreeBSD 5.x. ===> foobar-0.1 is unsupported on FreeBSD 5.x. ʹÓà <makevar>DEPRECATED</makevar> »ò <makevar>EXPIRATION_DATE</makevar> ±íʾij¸ö port ½«±»É¾³ý Ò»¶¨Òª¼ÇµÃ BROKEN ºÍ FORBIDDEN Ö»Ó¦×÷Ϊµ±Ä³¸ö port ÎÞ·¨Õý³£¹¤×÷ʱµÄÁÙʱ½â¾ö·½°¸¡£ ÓÀ¾ÃÐԵػµµôÁ赀 port Ó¦±»´Ó ports tree ÖÐÍêȫɾ³ý¡£ ÐèҪʱ»¹¿ÉÒÔʹÓà DEPRECATED ºÍ EXPIRATION_DATE À´Í¨ÖªÓû§Ä³¸ö port ²»Ó¦±»Ê¹Ó㬠²¢¼´½«±»É¾³ý¡£ ǰһ¸ö±äÁ¿ÓÃÀ´±í´ïΪʲô¼Æ»®É¾³ý port£» ¶øºóÒ»¸öÊÇÔòÊÇÒ»¸ö ISO 8601 ¸ñʽµÄÈÕÆÚ (YYYY-MM-DD)¡£ Á½Õß¶¼»áÏòÓû§³ÊÏÖ¡£ Ò²¿ÉÒÔÉèÖà DEPRECATED ¶ø²»¸ø³ö EXPIRATION_DATE (ÀýÈ磬 ½¨ÒéʹÓÃij¸öа汾µÄ port)£¬ µ«·´Ö®ÔòûÓÐÒâÒå¡£ Ŀǰ»¹Ã»ÓÐÈ·ÇеĹØÓÚÐèÒª¸ø³ö¶àÉÙ֪ͨµÄÕþ²ß¡£ µ±Ç°µÄʵ¼ùÊÇ£¬ ¶ÔÓÚÓ밲ȫÓйصÄÎÊÌâΪһ¸öÔ£¬ ¶øÓëÁª±àÓйصÄÎÊÌâÔòΪÁ½¸öÔ¡£ ÕâÒ²ÈÃÓÐÐËȤµÄ committer Äܹ»ÓÐÒ»µãʱ¼äÀ´ÐÞÕýÎÊÌâ¡£ ±ÜÃâʹÓà <literal>.error</literal> ½á¹¹ ÔÚ Makefile Öиø³öÐźţ¬ ±íʾÓÉÓÚijÖÖÍâ½çÒòËØ (ÀýÈ磬 Óû§Ö¸¶¨ÁËÎÞЧµÄÁª±àÑ¡Ïî) ¶øÎÞ·¨°²×°µÄ·½·¨Êǽ«±äÁ¿ IGNORE ÉèΪһ·Ç¿ÕÖµ¡£ Õâ¸öÖµ½«±»¸ñʽ»¯£¬ ²¢ÔÚÓû§Ö´ÐÐ make install ÊǸø³öÌáʾ¡£ Óà .error ʵÏÖÕâһĿµÄÊÇÒ»ÖÖ³£¼ûµÄÎóÓᣠÕâÑù×öµÄÎÊÌâÊÇ£¬ Ðí¶àÔÚ ports Ê÷ÉÏÔËÐеÄ×Ô¶¯»¯¹¤¾ß»áÒò´Ë¶øÊ§°Ü¡£ ×î³£¼ûµÄÇé¿ö¼ûÓÚÁª±à /usr/ports/INDEX µÄ¹ý³Ì (²Î¼û )¡£ È»¶ø£¬ ¼´Ê¹Ê®·ÖÆÕͨµÄÃüÁ ÀýÈç make maintainer£¬ ÔÚÕâÖÖÇé¿öÏÂÒ²»áʧ°Ü¡£ ÕâÊDz»¿É½ÓÊܵġ£ ÔõÑù±ÜÃâʹÓà <literal>.error</literal> ¿¼ÂÇÓÐÈËÔÚ make.conf ÖÐÉèÖÃÁË USE_POINTYHAT=yes µÄÇéÐΡ£ ½ÓÏÂÀ´µÄÀý×ÓÖУ¬ µÚÒ»¸ö Makefile ÖеÄÎÊÌ⽫µ¼Ö make index ʧ°Ü£¬ ¶øµÚ¶þ¸öÔò²»»á£º .if USE_POINTYHAT .error "POINTYHAT is not supported" .endif .if USE_POINTYHAT IGNORE=POINTYHAT is not supported .endif ¶ÔÓÚ <filename>sysctl</filename> µÄʹÓà ³ýÁËÔÚ target ÖÐÖ®Í⣬ ÊDz»¹ÄÀøÊ¹Óà sysctl µÄ¡£ ÕâÊÇÒòΪ¼ÆËã makevar£¬ ÀýÈçÔÚ make index ÖÐËù½øÐеÄÄÇÖÖ£¬ ¶¼²»µÃ²»ÔËÐÐÒ»ÌõÃüÁ Õâ»áʹÕâÒ»²Ù×÷±äµÃ¸üÂý¡£ ÔÚʹÓà &man.sysctl.8; ʱ£¬ Îñ±ØÍ¨¹ý SYSCTL ±äÁ¿À´½øÐУ¬ ÒòΪ´Ë±äÁ¿½«Õ¹¿ª³ÉÃüÁîµÄÍêÕû·¾¶£¬ ²¢ÇÒÓû§¿ÉÒÔ¸ù¾ÝÐèÒªÁíÐÐÖ¸¶¨¡£ ÖØÐ·¢²¼µÄ distfiles ÓÐʱ£¬ һЩÈí¼þµÄ×÷Õß»áÐÞ¸ÄÒµÒÑ·¢²¼µÄ distfile µÄÄÚÈÝ£¬ ¶ø²¢²»ÐÞ¸ÄÎļþÃû¡£ ÕâÖÖÇé¿öÏ£¬ ÄúÐèÒªÑéÖ¤ÕâЩ±ä¶¯ÊÇÀ´×ÔÈí¼þ×÷ÕߵĹٷ½¸Ä¶¯¡£ ÔÚ¹ýÈ¥£¬ Ôø¾­·¢Éú¹ýÏÂÔØ·þÎñÆ÷É쵀 distfile ±»ÇÄÇÄ»»³É×¢Èë¹ý¶ñÒâ´úÂëµÄ°æ±¾£¬ ²¢¸øÓû§°²È«Ôì³ÉÍþв»òË𺦵ÄÊÂÇé¡£ ÄúÓ¦±£ÁôÒ»·Ý¾ÉµÄ distfile£¬ ²¢ÏÂÔØÒ»·ÝÐµģ¬ ·Ö±ðÕ¹¿ª£¬ Óà &man.diff.1; À´¶Ô±ÈÆäÄÚÈÝ¡£ Èç¹ûûÓз¢ÏÖ¿ÉÒɵı䶯£¬ ¾Í¿ÉÒÔ¸üРdistinfo ÁË¡£ ÇëÎñ±ØÔÚÄúµÄ PR »ò commit log ÖжÔÕâЩ²îÒì½øÐÐÃèÊö£¬ ÒÔ±ãÈñðÈËÁ˽âÄúÒѾ­×Ðϸ¶Ô±È¹ý²îÒ죬 ²¢È·ÈÏûÓÐÎÊÌâÁË¡£ ³ý´ËÖ®Í⣬ Ò²¿ÉÒÔÁªÏµÈí¼þµÄ×÷Õߣ¬ ÒÔÈ·ÈÏÕâЩÐÞ¸ÄÊÇ·ñÊÇËûÃÇ×öµÄ¡£ ÔÓ¼Ç ÐèÒª×ÐϸµØ·´¸´¼ì²é pkg-descr ºÍ pkg-plist ÕâÁ½¸öÎļþ¡£ Èç¹ûÄúÕýÔÚ¸´ÉóÒ»¸ö port£¬ ²¢ÈÏΪÕâÁ½¸öÎļþÓ¦¸Ã¸Ä½ø£¬ ÇëÒ»¶¨ÒªÕâÑù×ö¡£ Çë²»ÒªÔÚϵͳÖи´Öƶà·Ý GNU General Public License¡£ Ò»¶¨Òª·Ç³£Ð¡Ðĵش¦Àí·¨ÂÉÎÊÌ⣡ ²»ÒªÈÃÎÒÃÇ·¢²¼Ã»Óеõ½ºÏ·¨ÊÚȨµÄÈí¼þ£¡
ʾ·¶µÄ <filename>Makefile</filename> ÕâÀïÊÇÒ»¸öÄú¿ÉÒÔÔÚ½¨Á¢Ð port ʱ²Î¿¼µÄ Makefile¡£ ÇëÎñ±ØÉ¾³ý²»ÐèÒªµÄÄÇЩעÊÍ (·½À¨ºÅÖмäµÄÎÄ×Ö)£¡ ½¨ÒéÄú°´ÕÕÏÂÃæÕâÑùµÄ¸ñʽ (±äÁ¿Ë³Ðò£¬ С½ÚÖ®¼äµÄ¿ÕÐеÈ) À´±àд¡£ Õâ¸ö¸ñʽµÄ×÷ÓÃÊDZãÓÚ²éÕÒÖØÒªµÄÐÅÏ¢¡£ ÎÒÃǽ¨ÒéÄúʹÓà portlint À´¼ì²é Makefile¡£ [Í·²¿... Ö÷ÒªÊÇÈÃÎÒÃǸüÈÝÒ׵طֱ治ͬµÄ port¡£] # New ports collection makefile for: xdvi [°æ±¾ÕâÐУ¬ Ö»ÓÐÔÚ PORTVERSION ±äÁ¿²»×ãÒÔÃèÊö port ʱ²ÅÐèÒª] # Date created: 26 May 1995 [ÕâÊÇ×î³õ½«Èí¼þÒÆÖ²µ½ FreeBSD ÉϵÄÈÕÆÚ£¬ Ò»°ãÀ´ËµÊǽ¨Á¢Õâ·Ý Makefile µÄÈÕÆÚ¡£ Çë×¢Òâ²»ÒªÔÚÖ®ºóÔÙ´ÎÐÞ¸ÄÕâ¸öÈÕÆÚ¡£] # Whom: Satoshi Asami <asami@FreeBSD.org> # # $FreeBSD$ [ ^^^^^^^^^ ÕâÊÇ CVS ÔÚÎļþ commit µ½ÎÒÃǵĴúÂë¿âʱ£¬ ×Ô¶¯½øÐÐÌæ»»µÄ RCS ID¡£ Èç¹ûÄúÕýÔÚÉý¼¶ port£¬ ²»Òª°ÑËü¸Ä»Ø "$FreeBSD$"¡£ CVS »á×Ô¶¯½øÐд¦Àí¡£] # [Õâ¸öС½ÚÃèÊö port ±¾ÉíÒÔ¼°Ö÷ÒªÏÂÔØÕ¾µã - PORTNAME ºÍ PORTVERSION Ó¦·ÅÔÚ×îÇ°Ãæ£¬ ËæºóÊÇ CATEGORIES£¬ È»ºóÊÇ MASTER_SITES£¬ ½ÓÏÂÀ´ÊÇ MASTER_SITE_SUBDIR¡£ Èç¹ûÐèÒªµÄ»°£¬ ½ÓÏÂÀ´Ó¦Ö¸¶¨ PKGNAMEPREFIX ºÍ PKGNAMESUFFIX¡£ ËæºóÊÇ DISTNAME£¬ EXTRACT_SUFX£¬ ÒÔ¼° DISTFILES£¬ EXTRACT_ONLY£¬ Èç¹ûÐèÒªµÄ»°¡£] PORTNAME= xdvi PORTVERSION= 18.2 CATEGORIES= print [Èç¹û²»ÏëʹÓà MASTER_SITE_* ºê£¬ Ò»¶¨²»ÒªÍü¼Ç½áβµÄбÏß ("/")£¡] MASTER_SITES= ${MASTER_SITE_XCONTRIB} MASTER_SITE_SUBDIR= applications PKGNAMEPREFIX= ja- DISTNAME= xdvi-pl18 [Èç¹ûÔ´´úÂë°ü²»ÊDZê×¼µÄ ".tar.gz" ÐÎʽ£¬ ¾ÍÐèÒªÉèÖÃÕâ¸ö] EXTRACT_SUFX= .tar.Z [·ÖÉ¢µÄ²¹¶¡ -- ¿ÉÒÔΪ¿Õ] PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/ PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz [¼à»¤ÈË(maintainer); *±ØÐëÓÐ*! ÕâÊÇij¸ö×ÊÔ´´¦Àí port ¸üС¢ Áª±àʧ°Ü£¬ ÒÔ¼°»Ø´ðÓû§Ö±½ÓÌáÎÊ»ò»ã±¨ bug µÄÈË¡£ ΪÁ˱£Ö¤ Ports Collection Óо¡¿ÉÄ܏ߵį·ÖÊ£¬ ÎÒÃDz»ÔÙ½ÓÊÜÖ¸¶¨¸ø "ports@FreeBSD.org" µÄРport¡£] MAINTAINER= asami@FreeBSD.org COMMENT= A DVI Previewer for the X Window System [ÒÀÀµµÄÆäËüÈí¼þ°ü -- ¿ÉÒÔΪ¿Õ] RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript LIB_DEPENDS= Xpm.5:${PORTSDIR}/graphics/xpm [Õâ½ÚÊÇÆäËü²»ÊʺÏÉϼ¸½ÚµÄ±ê×¼ bsd.port.mk ±äÁ¿] [Èç¹ûÐèÒªÔÚ configure¡¢ build »ò install ¹ý³ÌÖÐÌáÎÊ...] IS_INTERACTIVE= yes [Èç¹û½âѹËõµ½ ${DISTNAME} ÒÔÍâµÄĿ¼...] WRKSRC= ${WRKDIR}/xdvi-new [Èç¹û×÷Õß·¢²¼µÄ²¹¶¡²»ÊÇÏà¶ÔÓÚ ${WRKSRC} µÄ£¬ ¿ÉÄÜÐèÒªµ÷ÕûÕâ¸ö] PATCH_DIST_STRIP= -p1 [Èç¹ûÐèÒªÔËÐÐÓÉ GNU autoconf Éú³ÉµÄ "configure" ½Å±¾] GNU_CONFIGURE= yes [Èç¹ûÐèҪʹÓà GNU make£¬ ¶ø²»ÊÇ /usr/bin/make À´Íê³ÉÁª±à...] USE_GMAKE= yes [Èç¹ûÊÇÒ»¸ö X Ó¦ÓóÌÐò£¬ ²¢Ê¹Óà "xmkmf -a" À´ÔËÐÐ...] USE_IMAKE= yes [et cetera.] [½«ÔÚ½ÓÏÂÀ´µÄ²¿·ÖʹÓõķDZê×¼µÄ±äÁ¿] MY_FAVORITE_RESPONSE= "yeah, right" [½ÓÏÂÀ´ÊÇÌØÊâ¹æÔò£¬ °´µ÷ÓÃ˳ÐòÅÅÁÐ] pre-fetch: i go fetch something, yeah post-patch: i need to do something after patch, great pre-install: and then some more stuff before installing, wow [½áÓï] .include <bsd.port.mk> ±£³Öͬ²½ &os; µÄ Ports Collection ÔÚ³ÖÐøµØ½øÐÐÐ޸ġ£ ÕâÀïÌṩÁËһЩ¹ØÓÚÈçºÎ±£³Öͬ²½µÄÐÅÏ¢¡£ FreshPorts ×î¼òµ¥µÄÁ˽âÒѾ­±» commit µ½ ports ÖеĸüÐµķ½·¨£¬ ÊǶ©ÔÄ FreshPorts¡£ Äú¿ÉÒÔÑ¡Ôñ¶à¸ö ports ²¢¶ÔÆä½øÐмàÊÓ¡£ Ç¿ÁÒ½¨Òéά»¤ÈËÔ±¶©ÔÄËü£¬ ÕâÑù¾Í²»½öÄܽÓÊÕµ½ËûÃÇ×Ô¼ºËù×öµÄÐ޸ģ¬ ¶øÇÒÄÜ¿´µ½ÆäËü &os; committer Ëù×öµÄ¸Ä¶¯¡£ (±£³ÖÓëËùÒÀÀµµÄ ports ¿ò¼Üͬ²½ÊDZØÒªµÄ—ËäȻһ°ãÀ´ËµÄú»áÔÚÕâÑùµÄ commit ֮ǰÊÕµ½Ò»¸öÀñòÐÔµÄ֪ͨ£¬ µ«ÓÐʱ¿ÉÄÜ»áÓÐÈËûÓÐ×¢Òâµ½ÐèÒªÕâÑù×ö£¬ »òÕßÕâÑù×öºÜÀ§ÄÑ¡£ ÁíÍ⣬ ÓÐЩʱºò֪ͨµÄÐÞ¸ÄÒ²¿ÉÄÜÊÇ΢²»×ãµÀµÄ¡£ ÎÒÃÇÏ£Íûÿһ¸öÈËÄܹ»ÕýÈ·µØ½øÐÐÅжϡ£) Èç¹ûÏëʹÓà FreshPorts£¬ Ö®ÐèÒª½¨Á¢Ò»¸öÕ˺š£ Èç¹ûÄú×¢²áµÄÓʼþµØÖ·ÊÇ @FreeBSD.org£¬ Äú»á¿´µ½ web Ò³ÃæÓÒ²àµÄ opt-in Á¬½Ó¡£ Èç¹ûÄúÒѾ­×¢²áÁË FreshPorts Õ˺ţ¬ µ«Ã»ÓÐʹÓà @FreeBSD.org ÓʼþµØÖ·£¬ ÔòÖ»Ðè°ÑÓʼþµØÖ·¸ÄΪ @FreeBSD.org£¬ ÖØÐ¶©ÔÄ£¬ ²¢½«Æä¸Ä»Ø¡£ FreshPorts Ò²»á¶Ôÿһ¸ö FreeBSD ports tree É쵀 commit ½øÐÐ×Ô¶¯µÄºÏ·¨ÐÔ¼ì²é¡£ Èç¹ûÄú¶©ÔÄÁËÕâÏî·þÎñ£¬ ÔòÈç¹û·¢ÏÖÁË´íÎó£¬ ¾Í»áÊÕµ½À´×Ô FreshPorts µÄ¼ì²â±¨¸æ¡£ ´úÂë¿âµÄ Web ·ÃÎʽçÃæ ¿ÉÒÔͨ¹ý web ½çÃæÀ´ä¯ÀÀÔ´´úÂë¿âÖеÄÎļþ¡£ Ó°ÏìÕû¸ö ports ϵͳµÄÐ޸ģ¬ ÏÖÔÚ¶¼»áÔÚ CHANGES ÎļþÖÐ˵Ã÷¡£ Ó°Ïìijһ¸ö port µÄ±ä¶¯£¬ ÔòÔÚ UPDATING ÎļþÖÐ˵Ã÷¡£ ¾¡¹ÜÈç´Ë£¬ ËùÓÐÎÊÌâ×îΪȨÍþµÄ´ð°¸£¬ ºÁÎÞÒÉÎÊÓ¦¸ÃÊÇ bsd.port.mk µÄÔ´´úÂ룬 ÒÔ¼°Ïà¹ØµÄÎļþ¡£ &os; Ports ÓʼþÁбí Èç¹ûÄúά»¤ÁËij¸ö»òijһЩ ports£¬ ÔòÓ¦¸Ã¿¼ÂǶ©ÔÄ &a.ports;¡£ ¶ÔÓÚ ports ¹¤×÷·½Ê½µÄÖØÒªÐ޸ͼ»áÔÚ´ËÐûʾ£¬ ²¢Ìá½»µ½ CHANGES¡£ λÓÚ <hostid role="hostname">pointyhat.FreeBSD.org</hostid> µÄ &os; Port Áª±à¼¯Èº &os; µÄÒ»¸ö×ΪÈËËùÖªµÄÇ¿ÏîÊÇ£¬ ËüÓµÓÐÒ»¸öרÓÃÓÚ³ÖÐøÁª±à Ports Collection µÄ¼¯Èº£¬ Õâ¸ö¼¯Èº»áÁª±àËùÓÐÖ÷ÒªµÄ OS °æ±¾ÔÚÿһ¸ö Tier-1 ¼Ü¹¹É쵀 package¡£ Äú¿ÉÒÔÔÚ package Áª±àºÍ´íÎóÈÕÖ¾ ÕÒµ½Æä½á¹û¡£ ÿһ¸ö port ¶¼»á±»Áª±à£¬ ³ý·Ç±ê¼ÇΪ IGNORE¡£ ±ê¼ÇÁË BROKEN µÄ port ÈÔÈ»»á±»¼ÌÐø³¢ÊÔ£¬ ÒÔÁ˽âÊÇ·ñijЩÒÀÀµ¹ØÏµµÄ±ä¶¯½â¾öÁËÆäÎÊÌâ (ÕâÊÇͨ¹ý¸ø port µÄ Makefile ´« TRYBROKEN ²ÎÊýÀ´Íê³ÉµÄ)¡£ &os; µÄ Ports Distfile ɨÃèÆ÷ Áª±à¼¯ÈºÊÇÒ»×éרÃÅÓÃÓÚÁª±àËùÓÐ port ×îа汾µÄ»úÆ÷£¬ ÆäÉÏÒѾ­ÏÂÔØÁËËùÓÐµÄ distfiles¡£ È»¶ø£¬ ÓÉÓÚ Internet ÔÚ³ÖÐøµØ·¢Éú±ä»¯£¬ distfile ¿ÉÄܺܿì¾ÍÏûʧÁË¡£ FreeBSD Ports distfile ɨÃèÆ÷ ÊÔͼ²éѯÿһ¸ö port µÄËùÓÐÏÂÔØÕ¾µã£¬ ÒÔÆÚÕÒ³öÕâЩÎļþÊÇ·ñÒÀÈ»´æÔÚ¡£ ά»¤ÕßÓ¦¹æÂÉÐԵؼì²éÕâЩ±¨¸æ£¬ Õâ²»½ö»áÌá¸ßÓû§Áª±àµÄËÙ¶È£¬ ͬʱҲ±ÜÃâÁËÀË·ÑÄÇЩ¾µÏñÁËÈ«²¿ distfile µÄÖ¾Ô¸ÕߵĴø¿í¡£ &os; µÄ Ports ×·×Ùϵͳ ÁíÒ»¸ö·Ç³£·½±ãµÄ×ÊÔ´£¬ ¾ÍÊÇ FreeBSD Ports ×·×Ùϵͳ (Ò²±»³Æ×÷ portsmon)¡£ Õâ¸öϵͳ°üº¬ÁËÒ»¸ö´¦ÀíÈô¸ÉÐÅÏ¢À´Ô´µÄÊý¾Ý¿â£¬ ²¢ÌṩÁËÒ»¸ö¿ÉÒÔͨ¹ý web ·½Ê½ä¯ÀÀµÄ½çÃæ¡£ Ŀǰ£¬ ËüÀûÓõ½ÁËºÍ ports ÓйصÄÎÊÌⱨ¸æ (PR)¡¢ À´×ÔÁª±à¼¯ÈºµÄ´íÎóÈÕÖ¾£¬ ÒÔ¼°À´×Ô Ports Collection µÄÎļþËùÌṩµÄÐÅÏ¢¡£ δÀ´£¬ »¹»á¶ÔËü½øÐнøÒ»²½µÄÀ©Õ¹£¬ ´Ó¶øÌṩ°üÀ¨ distfile ÆÕ²é£¬ ÒÔ¼°ÆäËüÀ´Ô´ÔÚÄڵĸü¶àÐÅÏ¢¡£ ҪʹÓÃÕâ¸ö¹¤¾ß£¬ ¿ÉÒԴӲ鿴¹ØÓÚijһ¸ö port µÄÈ«²¿×ÊÁ쵀 Port µÄ×ÝÀÀ ¿ªÊ¼¡£ ±¾ÎÄ׫дʱ, ÕâÊÇΨһһ¸öÄܹ»½« GNATS PR Ï ͬ¶ÔÓ¦µÄ port Ãû×ÖÓ³ÉäÆðÀ´µÄ×ÊÔ´¡£ (Ìá½» PR µÄÓû§£¬ ÓÐʱ²¢²»ÔÚ Synopsis (¸ÅÒª) ÖÐÖ¸Ã÷ port µÄÃû×Ö£¬ ¾¡¹ÜÎÒÃÇÏ£ÍûËûÃÇÕâÑù×ö)¡£ Òò´Ë£¬ portsmon ÔÚÄúÏëÒª²éÕÒÊÇ·ñÓÐÈËÌύij¸öÏÖ´æµÄ port µÄ PR£¬ ÒÔ¼°ËüµÄÁª±àÊÇ·ñ³öÏÖÁË´íÎó£» »òÔÚÄú´´½¨Ð嵀 port ֮ǰÏëÒª²éÕÒÒ»ÏÂÊÇ·ñÒѾ­ÓÐÈËÌá½»¹ýʱ£¬ ¾Í·Ç³£ÓÐÓÃÁË¡£