 |
от zlatozar(24-02-2006)
рейтинг (57)
[ добре ]
[ зле ]
Вариант за отпечатване
За мен разликата в поддръжката на 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 | Въведение в динамичната оптимизация >>
|
 |