от zlatozar(24-02-2006)

рейтинг (60)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

     За мен разликата в поддръжката на UNIX системите най-общо може да се сведе до инсталиране и правилен update. Разбира се има много други неща, но като за начало трябва да се научим да правим това. От там нататък свикваме с идеологията и научаваме "триковете". Дали ни харесва? Многознаяително се казва - въпрос на вкус. Когато започнах да се занимавам с FreeBSD нещата при update ми изглеждаха сложни. Те ще останат такива ако човек не прояви любопитство и желание за развитие. Научете какво е CVS, make, merge и разбира се езика С! Експериметирайте! Питайте! На мен ми трябваше доста време да разбера и да автоматизирам update-a. В тази статия ще се опитам да опиша нещата, макар и с правописни грешки. Искам ми се да бъда полезен и за това не се колебайте да ме питате и поправяте. Надявам се да учим заедно.

    Първата трудност идва с разделянето на твърдия диск(HDD). Доста по-различно под FreeBSD и затова реших да отделя специално място и да го разгледам подробно. За целта ще го сравня с DOS/Linux начина. За да ви е лесно трябва да запомнте:
"UNUX partition" е нещо различно от "DOS/LINUX partition" !

    Сега вече можем да започнем. Linux следва пътя оставен от MS-DOS, при разделянето на диска. Този път обаче е ограничен от PS BIOS . Ето какво имам впредвид. Всяко HDD може да има най-много 4(четири) Primary partitions . Ако искате да имате повече от 4 partitions трябва да използвате hack -a въведен в MS-DOS 3 (мисля, че първо там се появява първо). В какво се състои той? Hack -a позволява да се конвертира един от дяловете от Primary в т.н. Extended . Самият Extended от своя страна се разделя на Logical . BIOS -a "вижда" само четири дяла, но на практика можете да имате повече. Ухааа, сложно а? Ще се опитам да илюстрирам: Най-старата идея

   Primary 1
   Primary 2
   Primary 3
   Primary 4
 
Еволюцията на MS DOS идеята
   Primary 1
   Primary 2
   Primary 3
   Extended
     Logical 1
     Logical 2
     Logical 3
     etc...
 
С тази схема на разделяне може да слагате и напасвате различни операционни системи, но затова са нужни доста дялове, защото трябва да се придържаме към схемата. Един пример. Да предположим, че искаме да инсталираме Windows 98, Windows 2000 и Linux. Ето и резултата:
   Primary 1:  Linux /boot
   Primary 2:  Windows 98
   Primary 3:  Windows 2000
   Extended :
       Logical 1: Linux /
       Logical 2: Linux /home
       Logical 3: Linux /usr
       Logical 4: Linux swap
       Logical 5: Shared Data
 
 
Забелязвате ли прехвърлянето от Primary към Logical . Истината е някъде другаде? Unix системи, като *BSD и Solaris използват друга схема на разделяне, която е далеч по-гъвкава и ясна. В PC архитектурата BIOS -a все още разпознава само четири дяла(има и системи, в които този проблем не съществува). Хм, а как тогава ще се заобиколи проблема? Unix третира всеки Primary partition (Unix въвежда термина - slice ) като Extended partition ! Тези slice -ве се разделят допълнително за нужните ни дялове, за да разположим директориите. Обърнете внимание, че термина partition в UNIX има друг смисъл - той е дял от slice ! Така че, ако трябва да се върнем към горния пример (Windows 98, Windows 2000 и Unix) ще получим следната схема:
   Primary 1:  Unix slice
   Primary 2:  Windows 98
   Primary 3:  Windows 2000
   Extended :
       Logical 1: Shared Data
 
В самия UNIX slice се разполагаме удобно:
   Primary 1:  Unix slice
                 /boot
                 /
                 /home
                 /usr
                 /var
                 /tmp
                 swap
   Primary 2:  Windows 98
   Primary 3:  Windows 2000
   Extended :
       Logical 1: Shared Data
 
Ако използвате Linux модела, при пускане на DOS fdisk ще видите 3 Primary и 5 Logical в Extended дяла. Същото ще е и при пускане на Linux fdisk . Ако пък минете по пътя на UNIX и пуснете DOS fdisk ще видите 3 Primary и 1 Logical в Extended дяла. При пускане на UNIX fdisk виждате същото, но допълнително още се показват и UNIX partitions в UNIX slice -a. Не мога да кажа, коя идея е по-добра. Сравнявам двата метода, за да обясня по-добре идеята за UNIX slice . За мен лично при UNIX нещата стоят по-добре, една операционна система на едно място, а споделените неща на друго. При DOS/LINUX нещата се смесват, няма ясна граница и лесно може да се обърка човек. За пълнота ще кажа и няколко думи за именоването. Всеки partition в FreeBSD се идентифицира с букви от a до h . Всеки partition може да съдържа само една файлова система. Ето и таблица на имената на устройствата:
 ad                 ATAPI (IDE) disk 
 da                 SCSI direct access disk 
 acd                ATAPI (IDE) CDROM 
 cd                 SCSI CDROM 
 fd                 Floppy disk 
 
Схемата на съставяне на имената е следната:
   (име на устройство)(номер на slice)(partition)
 
Веднага давам пример:
 ad0s1a  The first partition (a) on the first slice (s1) on the first IDE disk (ad0). 
 da1s2e  The fifth partition (e) on the second slice (s2) on the second SCSI disk (da1). 
 
Сега запис от вида:
 Filesystem     Size    Used   Avail Capacity  Mounted on
 /dev/ad6s1a    496M     63M    394M    14%    /
 /dev/ad6s1e     17G     26K     16G     0%    /home
 /dev/ad6s1d     16G    2.0G     13G    13%    /usr
 /dev/ad6s1f    1.8G     27M    1.6G     2%    /var
 
ви говори много повече. Дано съм го обяснил добре, защото почвам с инсталацията и няма връщане назад.

   Водя се от принципа: "Ако се чупи нещо, то да е колкото се може по-рано". Така се предпазвам от безкрайно търсене в FreeBSD Google за решаването на някой проблем. Правя базовата система и не бързам с X - desktop . Стъпките, които ще предложа тук са съвсем начални, но те са достатъчни за лесна по-нататъчна надстройка и подръжка. Някои неща съм спестил, а в някои съм изложил в дълбочина. Инсталацията обаче може да поеме в толкова много посоки, че е невъзможно да се опише. Налага се да ми се доверите.

   Когато се появи менюто избирам Custom . От там разделям диска (40G):
 
 
 Filesystem     Size      Mounted on
 /dev/ad6s1a    512M        /
 /dev/ad6s1b      1G        swap
 /dev/ad6s1e     22G        /home
 /dev/ad6s1d     10G        /usr
 /dev/ad6s1f      2G        /var
 /dev/ad6s1g    838M        /tmp  (каквото е останало, но по-голямо от 512MB)
 
Отедлил съм 1G (2хRAM приблизително) за SWAP пo възможност в началото на диска. Ще имате и нуждата от linprocfs ще я разберете, когато започнете да инсталирате java виртуалната машина. Не го забравяйте! В един момен трабва да добавите в fstab:
linprocfs   /compat/linux/proc   linprocfs   rw   0  0

Като втора стъпка инсталирам съвсем малко неща, които ще ми са нужни за начало. От менюто избирам Distributions и селектирам: src (за да мога да компилирам ядрото), binaries (те са required ). Така, до тук добре вече имаме базовата система. Останаха някои дребни добавки - Root Password , Time Zone , Mouse enable , Network(enable interface) . Тук е и момента да се добави user . Когато се прави нов потребител, добре е да се знае, че само потребители от групата wheel могат да използват командата su . Преценете сами. Е, може да не вярвате, но имаме работеща базова FreeBSD система! Когато менютата са пред вас ще ви бъде по-лесно. Тук искам да направя едно голямо отклонение. Нещо като разяснявне на идеологията, малко история и леко намигване към Linux феновте. Ще се опитам и да ви въведа в FreeBSD терминологията.

Мнoго хора използват Linux (някоя от многото дистрибуции). Общо взето всички сме съгласни, че е добре да се използва тип Unix операционна система, но винаги сме на различно мнение за това коя от многото разновидности е "вярната". За да разберем как и защо една Unix система е по-добра от друга, трябва да навлезем дълбоко под повърхността. Нещо, което остава често незабелязано е начина на разработка, йерархията в екипите и начина на пускане на версия. Понякога се отчитат само полирания графичен интерфейс и начина на инсталация или на градски слухове от рода "един пич ми каза".
Често срещан цитат от BSD фолклора е:

"BSD е тогава, когато група Unix хакери се опитват да портнат Unix на PC и е Linux, когато група PC хакери опитват да напишат UNIX за PC"

И това е така. Историята на двете операционни системи го доказва. Докато BSD се систематизира и се проекира, Linux просто набъбва. Ще припомня, че BSD е пряк наследник на UNIX разработен от през 60-те години от Кен Томсон и Денис Ритчи. Докато Linux се започва от самото "нищо" от Линус като студент. И е важно да се отбележи, че това е само ядро на ОС. Linux e щастлива приказка. И така нека да започнем с нещата, за които си заслужава да обърнете по-специално отношение на BSD операционата система.

Първо: The Base System

Термина "базова система" обърква доста Linux потребителите, защото тази идея не съществува в техния свят. Linux винаги е бил конгломерат. ls, ps, tar и т.н са "допънителни екстри" взети от някъде. За да бъде компютъра използваем му трябва нещо повече от ядро. Linux няма ясна граница между "базова система" и "екстри". Как стоят нещата при BSD? BSD винаги е имал централизиран начин на разработка. "Базова система" се разработва като самостоятелен модул и в него има всичко, което прави компютъра работещ и е готов за допълнителна надстройка. Видахте колко бързо инсталирахме нещата. BSD няма GNU ls или GNU libc, BSD използва BSD ls и BSD libc. X-a не е част от "базовата система" той е допълнителен пакет, който може да се инсталира. Основната разлика е, къде се разработват. Дори и да се използва някои GNU пакет, той се "пипва", така че да може да "пасне" в BSD схемата. Примерно:

gcc e FreeBSD компилатор базиран на GNU gcc

Всичко се прави така, че системата да работи като цяло, а не на парче. В Linux, "Linux дистрибуорите" решават, кое ще бъде необходимия минимум. Дистрибуции като Debian и Gentoo се справят доста добре. И въпреки всичко Вие можете да подмените примерно libc с пакет взет от някой трети, докато това в FreeBSD не може да стане.

Второ: The Ports System

"Екстрите" са по желание на клиента. В BSD те се наричат "портове". Тъй като това са програми от "трети лица", са неоходими допълнителни усилия те да станат част от дистрибуцията, тоест на жаргон те трябва да бъдат "портнати". До сега има 13654 портнати приложения и те непрекъснато растат. Една от разликите е, че Linux потребителите инсталират binary пакети, докато FreeBSD потребителите компилират сорсове(могат и binary). При BSD е така заради инструмените, които се предоставят за update и install. Това ще го разгледаме по-късно. В Gentoo съществува подобна идея Portage системата.

Трето: Release Engineering

FreeBSD използва CVS, за да следи версиите на всеки файл. Какво е CVS, предполагам че знаете. Всички BSD-a дават начин да видите кода, да четете коментарите и да намирате разликата. Много страно е, че Linux не ползваше до скоро revision system. Сега както знаете Линус използва BitKeeper, която забележете е комерсиална. Използването на CVS-a е важно, защото нещата се развиват устойчиво и консистентно всяка една минута. Вие по всяко време можете да изтеглите сорсовете и да компилирате. Linux по-скоро се асемблира! Дава се определено ядро и всичко започва да се "захваща" за него. В FreeBSD има две основни направления след пускане на версията - "CURRENT" и "STABLE", която е и продукционната. Като правило, в "STABLE" се слагат security paches, а в "STABLE" освен това като допълнително могат да се слагат и нови неща. Debian имат почти същия план за работа - "stable", "unstable". Трябва да подчертая, че това са "branches" в CVS дървото, това не се release. За да поемем един от двата пътя използваме съотвтните CVS tags RELENG_X_Y и HEAD.

Четвърто: Upgrading

Тъй като FreeBSD се разработва като едно цяло, ние можем лесно да вземем цялата "base system" и всички сорсове на портнатите приложения. Забележете, че вземаме промените до последната секунда! После стартирате "buildworld", за да компилирате т.н. userland и после "buildkernel" и имате компилирана работеща операционна система. Пак пропускам подробностите, които ще разгледаме по-нататък.

Пето: Ports

Когато инсталирате допълнителните приложения вие можете да избирате, дали да инсталирате като "ports"(source) или като "packages" (precompiled binaries). И в двата случая всички "dependancy" ще бъдат решени. После ще ви предложа начин за подържане на системата ви up-to-date посредством CVSup. Ако знаете малко C и нещичко за Makefile ще ви бъде от полза. Всяко приложение се намира в определена директория.
Бих казал, че BSD е по-породиста и възпитавана в по-строги правила. Като цяло е тествана от няколко поколения програмисти Тя винаги работи и от там логото: "The Power to Serve". Дава избор HEAD, CURRENT и STABLE. Ako се появи проблем той се поправя много бързо и вие можете да ги вземете на минутата(CVS). Тъй като имате и сорсовете можете да фикснете проблема сами. FreeBSD e направена да работи като едно цяло. И не на последно място FreeBSD може да стартира Linux приложения.

Стига отклонения, влизаме в пътя.

   Може би е добре да разясня каква ми е идеята. Искам да направя компютър, който да го ползвам за workstation . Моето PC не е първа младост, така че се старя да оптимизирам максимално FreeBSD-то. Една от първите стъпки в тази посока е инсталацията на приложенията. Искам да инсталирам от сорсовете т.н. ports . Каква е подготовката? Инсталирам надлежно както следва:
 # pkg_add -r cvsup-without-gui
 # pkg_add -r fastest_cvsup
 # pkg_add -r portupgrade
 # pkg_add -r docproj-nojadetex
 
Приготвям нещата за използването на cvsup . Създавам /root/cvs-supfile със следното съдържание:
 *default host=cvsup.freebsd.org
 *default base=/var/db
 *default prefix=/usr
 *default tag=RELENG_6
 *default release=cvs delete use-rel-suffix compress
 src-all
 doc-all tag=.
 
Не се изкушавайте да вземате последното ядро дори и това да не е сървър(с опцията *default tag=. ). В HEAD-а на CVS попадат доста експериментални(някои неуспешни) неща има и много debug съобщения, затова като цяло системата ви ще работи по-бавно. Ако е продукционна системата, сложете *default tag=RELENG_6 (STABLE release) например. За да не тегля всичко мога да укажа кои документи НЕискам. За целта създавам директориите /var/db/sup и /var/db/sup/doc-all . В /var/db/sup/doc-all поставям файла refuse . Ето какво има в него:
 doc/bn_*
 doc/da_*
 doc/de_*
 doc/el_*
 doc/es_*
 doc/fr_*
 doc/it_*
 doc/ja_*
 doc/nl_*
 doc/no_*
 doc/pl_*
 doc/pt_*
 doc/ru_*
 doc/sr_*
 doc/tr_*
 doc/zh_*
 
Мммда готови сме за първия старт на cvsup .
# cvsup -L2 -h  cvsup.freebsd.org /root/cvs-supfile
Тя ще обнови всички сорсове в базовата система и документацията. Ще положим малко усилия и за портовте. Използва се portsnap .
 # portsnap fetch
 # portsnap extract
 
Първата команда прави download на "порт дървото", а втората го слага в /usr/ports . Управляващия файл e /etc/portsnap.conf . Приемете нещата там "по default" - махнете коментарите. Там може и да окажете НЕжеланите портове, за да спестите малко време.
 REFUSE arabic chinese french german hebrew hungarian japanese korean
 REFUSE polish portuguese russian ukrainian vietnamese
 REFUSE astro biology
 
Kроя планове и за автоматизация. Един скрипт, които да пускам, докато си пия сутришното кафе и той да ми подсказва какво трябва да update-на. Идеята си струва, ще знам дали съм up-to-date само с една команда. Преминавам към действие. За да имам документацията само на английски са нужни малко обходни стъпки. Променям една част от /usr/doc/Makefile файла:
 .if defined(DOC_LANG) && !empty(DOC_LANG)
 SUBDIR = ${DOC_LANG}
 .else
 SUBDIR = en_US.ISO8859-1
 .endif
 
За съжаление cvsup ще "забърше" моите промени, и затова правя хитринка:
 # cp /usr/doc/Makefile /usr/doc/Makefile.orig
 
Ето и моя работещ cvsupScript.sh :
 #!/bin/sh
 
 #Use fastest_cvsup to find fastest geographically
 #close mirror; I'll check Russion, Germany
 
    if SERVER=`fastest_cvsup -q -c ru,de`
      then
         echo "Running cvsup...(src, doc)"
         cvsup -g -L 2 -h $SERVER /root/cvs-supfile
      else
         echo "Oooops! There's a problem" 1>&2
         exit 1
 
    fi
 
 # Before this you have to run:
 # portsnap fetch && portsnap extract
    echo "Updating ports tree...(/usr/ports)"
    cd /usr/ports
    portsnap fetch
    portsnap update
    make fetchindex
    portsdb -u
 
 # Also see /var/db/refuse
    echo "Buiding docs..."
    cd /usr/doc
    cp Makefile.orig Makefile
    make install > /dev/null
 
 
    echo "The following ports need upgrading: "
    portversion -l "<"
 
 
 echo "DONE. Finished at `/bin/date`."
 echo "=========================================
 
 This script will NOT upgrade your ports!
    Manually run:
    (Do NOT forget to read /usr/ports/UPDATING before!)
 
         portupgrade -varR
 
    Only sources download:
 
         portupgrade -aFrR
 
 Tip: To delete unused downloaded sources run:
 
         portsclean -D
 
 ========================================="
 exit
 
Ура! Вече не е проблем да поддържаме системата up-to-date . След като се стартира скрипта, той подсказва по-нататък как да се процедира.

Забележка 1: Не случайно в края на скрипта отпечатвам съобщение да се прочете /usr/ports/UPDATING. Това често се забравя и се допускат нелепи грешки. Ето пример:
 ===>  kdelibs-3.5.0 conflicts with installed package(s):
       kdebase-3.4.3_1
 
       They install files into the same place.
       Please remove them first with pkg_delete(1).
 *** Error code 1
 
 Stop in /usr/ports/x11/kdelibs3.
 *** Error code 1
 
В новата версия на kdelibs има сменени пътища на някои библиотеки и portupgrade няма да се справи. Съобщението Please remove them first with pkg_delete(1) е вярно, но не и достатъчно. Целия алгоритъм в случая е описан в UPDATING файла. Намерете го:
  cat /usr/ports/UPDATING |grep -B 2 -e "AFFECTS\:.*kdebase.*" |less
 
Ориентирайте се по датата(най-близката) и научете C, помага при разгадаването на съобщенията за грешка.

Забележка 2: portupgrade -varR не винаги минава гладко! Понякога ни напомня, че трябва да се пусне pkgdb -F . Въпросите, които задава pkgdb -F са трудни и затова ще ги илюстрирам с пример:
 # pkgdb -F 
  --->  Checking the package registry database 
  Stale dependency: digikam-0.5.1 -> openldap-client-2.1.23 
  (net/openldap21-client): 
  open-motif-2.2.2_2 (score:23%) ? ([y]es/[n]o/[a]ll) [no] 
  New dependency? (? to help): 
  Skip this? ([y]es/[n]o/[a]ll) [yes] 
 
Какво значи това? Ами няма инсталиран openldap-client-2.1.23 ! Опитва се да намери "нещо подобно" с не много добър успех както се вижда - score: 23% . Ако обаче резултата е повече от 70% изберете yes ! Иначе лекарството е:
 # cd /usr/ports/net/openldap21-client
 # make install && make clean
 
 
Съвета ми е: не бързайте с отговорите! Правете провреки. Ето и друг пример:
 # pkgdb -F  
 --->  Checking the package registry database 
 Stale dependency: Mesa-3.4.2_2 -> fontconfig-2.2.0 (x11-fonts/fontconfig): 
 New dependency? (? to help): ? 
 [Enter] to skip, [Ctrl]+[D] to delete, [.][Enter] to abort, [Tab] to complete 
 
Хммм. Я бързо една справка:
 # pkg_info -I fontconfig\* 
 
Е? Какъв е резултата? Ако има инсталиран fontconfig , коя версия е? Ако сте доволен от отговорите на зададените въпроси посочете fontconfig-2.2.0 . Ако го няма - инсталирайте. Think!
До тук с "лошите" страни на portupgrade. Една нова възможност, която научих наскоро е да накарам portupgrade да използва pakages вместо ports при update. Така избягвам компилацията на големи пакети, примерно на OpenOffice, който е инсталиран като:
 pkg_add -r openoffice.org
 
(FreeBSD не се "бърка" при инсталирането и на packages, и на ports! )
Параметрите са следните:
 portupgrade -varRPP
 
Идва ред на оптимизацията на ядрото. Как се прави ново ядро? Ето подготовката:
 # cd /usr/src/sys/i386/conf
 # mkdir /root/kernels
 # cp GENERIC /root/kernels/NEX_KERNEL
 # ln -s /root/kernels/NEX_KERNEL
 
Преди да се захвана с ядрото оптимизирам малко компилатора. Добaвям типа на процесора( Duron 1.3G ) в /etc/make.conf
 CPUTYPE?=k7
 
и започвам с редакцията на параметрите на ядрото (моето съм го кръстил NEX_KERNEL). Аз лично махам всичко, което не ми е нужно на първо четене. После добавям параметрите за оптимизация, в случая:
 machine         i386
 cpu             I686_CPU
 ident           NEX_KERNEL
 makeoptions     COPTFLAGS="-O2 -pipe -funroll-loops -ffast-math"
 
 options         SCHED_ULE              # NEW scheduler instead of SCHED_4BSD
 
Най-накрая слагам допълнителните неща:
 # Better console
 options         VESA
 options         SC_PIXEL_MODE
 
 # Security: PF
 device          pf              #PF OpenBSD packet-filter firewall
 device          pflog           #logging support interface for PF
 device          pfsync          #synchronization interface for PF
 
 # Traffic bandwidth( to test it use pchar, iperf )
 options         ALTQ
 options         ALTQ_CBQ        # Class Bases Queueing
 options         ALTQ_RED        # Random Early Detection
 options         ALTQ_RIO        # RED In/Out
 options         ALTQ_HFSC       # Hierarchical Packet Scheduler
 options         ALTQ_CDNR       # Traffic conditioner
 options         ALTQ_PRIQ       # Priority Queueing
 
Хайде да направим новото ядро:
 cd /usr/src
 make buildkernel KERNCONF=NEX_KERNEL
 make installkernel KERNCONF=NEX_KERNEL
 
За да използвам pf добавям в /etc/rc.conf
 ## My firewall will needs this
 # То read logs use: tcpdump -n -e -ttt -r /var/log/pflog > /var/log/pflog.txt
 pf_enable="YES"                 # Enable PF (load module if required)
 pf_rules="/etc/pf.conf"         # rules definition file for pf
 pf_flags=""                     # additional flags for pfctl startup
 pflog_enable="YES"              # start pflogd(8)
 pflog_logfile="/var/log/pflog"  # where pflogd should store the logfile
 pflog_flags=""                  # additional flags for pflogd startup
 
 ## ...and to be a getaway
 gateway_enable="YES"            # Enable as LAN gateway
 
 ## Better console resolution
 allscreens_flags="-g 100x37 VESA_800x600"
 
и в /etc/pf.conf (Скоро ще публикувам и специална тема за PF и traffic bandwidth )
 ext_if="xl0"
 
 altq on $ext_if priq bandwidth 150Kb queue { q_pri, q_def }
   queue q_pri priority 7
   queue q_def priority 1 priq(default)
 
 pass out on $ext_if proto tcp from $ext_if to any flags S/SA keep state queue (q_def, q_pri)
 
 pass in  on $ext_if proto tcp from any to $ext_if flags S/SA keep state queue (q_def, q_pri)
 
Край! Готово! След reboot трябва да имаме перфектна FreeBSD основа. Надграждането на системата вече е в наши ръце. Ето как процедирам аз, когато добавям приложение. Преди всичко трябва да го намеря в CVS дървото.
 # cd /usr/ports
 # make search key= |less
 
или
 # make search name=
 
След като го намеря, инсталирам:
 # cd /
 # make install && make clean
 
И така, малко по малко изграждам моя workstation инсталираните приложения са достатъчно оптимизирани, a имам и начин за лесен update. Искам да кажа, почти лесен. Понякога някои приложения ги инсталираме с определени опции. Например Apache, да може да работи с subversion.
 cd /usr/ports/www/apache20
 make install WITH_BERKELEYDB=db42 && make clean
 
 cd /usr/ports/devel/subversion
 make install -DWITH_MOD_DAV_SVN && make clean
 
Ако машинално напишем (или се подведете от това, което съм писал по-горе хехехе):
 portupgrade -varR
 
Всички приложения ще се ъпграйднат с параметрите, които са по default. Помислено е за всичко.
 emacs /usr/local/etc/pkgtools.conf
 
Ориентирам се отново по коментарите и примерите. В случая:
 ## Apache, Subversion
   MAKE_ARGS = {
   'www/apache20' => 'WITH_BERKELEYDB=db42',
   'devel/subversion' => 'WITH_MOD_DAV_SVN=1' 
   }
 
Приложенията се изброяват със запетая, а параметрите им са разделени с интервал. Relax - FreeBSD работи вече за мен.

Забележка 3: За да компилирам цялата система използвам следната процедура:
 cd /usr/src
 make buildworld (ще трябва доста да изчакате!)
 make buildkernel KERNCONF=NEX_KERNEL
 make installkernel KERNCONF=NEX_KERNEL
 shutdown now
 -> ще направи системата в "single user mode". Още малко усилия: 
 # fsck -p
 # mount -u /
 # mount -a -t ufs
 # swapon -a
 
 -> Знаете какво е "merge" в CVS, нали? Ще ви трябва при следващата команда
 mergemaster -p
 make installworld
 mergemaster
 
 shutdown -r now
 

Сега като я препрочитам "материята е доста сложна". Надявам се поне малко да съм помогнал и да съм създал интерес. Трудно ми е да опростя нещата ще се иска допълнително четене, да знаете. За мен и FreeBSD може да намерите повече тук http://zlatozar.blogspot.com


<< Размисли по HFSC | Въведение в динамичната оптимизация >>