|
|
|
РАЗРАБОТКИ
|
Крайна цел: FreeBSD
|
|
|
|
|
|
от 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 | Въведение в динамичната оптимизация >>
|
|
|
|
|
Най-после От: gogata На: 22-02-2006@23:46 GMT+2 Оценка: 1/НеутраленЕй доживяхме да видим читава статия FreeBSD. Писна ми от разни преводи. Поздравления! Скрипта си го "пипнал" много добре.
С пожелания за по-малко правописни грешки
Гогата
[Отговори на този коментар] Линукс разбира не само от ДОС дялове От: klapaucius На: 23-02-2006@8:29 GMT+2 Оценка: 1/НеутраленСамо искам да вметна, че линукс не е ограничен само до ДОС схемата за дялове.
[Отговори на този коментар] git От: mkd На: 23-02-2006@8:46 GMT+2 Оценка: 1/НеутраленСтатията 6 точки но linux ядрата не минаха ли на git?
[Отговори на този коментар] Добра статия за запознаване с FreeBSD От: ibb27 На: 23-02-2006@9:46 GMT+2 Оценка: 1/НеутраленБраво, много добра статия за хора, които
искат да се запознаят с тази Unix-like
ОС! Всичко е стегнато и добре обяснено. Бих
се радвал ако се продължи и се направи
серия от статии.
[Отговори на този коментар] UNIX От: Romeo Ninov <romeo< at >satline __точка__ net> На: 23-02-2006@14:31 GMT+2 Оценка: 1/НеутраленСамо не разбрах каква е връзката между FreeBSD и UNIX, защото последното е търговка марка, което *BSD не могат да ползват!
http://www.unix.org/trademark.html
[Отговори на този коментар]
Към: UNIX От: Bozhan Bozhkov <bozho __@__ issp__dot__bas__dot__bg> На: 26-02-2006@12:19 GMT+2 Оценка: 1/Неутрален"Само не разбрах каква е връзката между FreeBSD и UNIX, защото последното е търговка марка, което *BSD не могат да ползват!"
Това, че някой се е изхитрил да регистрира търговска марка UNIX си е само формална простотия и е сравнително от скоро. В по-стари книги за UNIX пише, че такова нещо кто търговска марка "UNIX" няма и си се разглеждат двата клона на UNIX - BSD и SYSTEM V съвсем равностойно.
То даже смешно звучи - марка "UNIX" ама кавода се прави - с достатъчно пари може да се купи всичко. Но UNIX е много повече от някакъв юридически документ.
[Отговори на този коментар]
Към: Към: UNIX От: Romeo Ninov <romeo (a) satline[ точка ]net> На: 27-02-2006@9:07 GMT+2 Оценка: 1/НеутраленНали става въпрос за факта че заради затвореност и защита на софтуер от закона сме фенове на отворените неща. И за това трябва да уважаваме закона, колкото и да не ни харесва! Dura lex, sed lex
[Отговори на този коментар]
Някои сериозни уточнения От: Stanislav Georgiev <s_georgiev__at__abv[ точка ]bg> На: 23-02-2006@14:53 GMT+2 Оценка: 2/Информиращ
Като системен администратор, използващ всекидневно OpenBSD (на 1-во място), FreeBSD, NetBSD и няколко Линукс дистрибуции искам да посоча някои интересни момента в тази статия, които биха заблудили хората, ако не са виждали никога *BSD.
Първо - терминът "Базова система" съществува не само в *BSD, а също и в Debian, Slackware и т.н. и т.н. Линукс дистрибуции. Даже в Debian се инсталира *само* базовата система и от там нататък се гради системата.
Второ - портовите системи на BSD дистрибуциите са и за изходен код и за бинарни пакети. В единия случай се взема и разархивира (или обновява) дървото ports и се използват поредици от типични команди за компилиране - make && make install, в другия се ползва pkg_add. Естествено преди това с cd се отива в нужната директория с метаданни. При Линукс дистрибуциите съвсем определено не се използват само бинарни пакети. Четейки статията, аз останах с впечатление, че Линукс потребителите ползват само готови пакети!
Е, обаче apt-get, rpm, emerge, yum и т.н. също могат да теглят source на пакетите. Да не говориме, че твърде много софтуер, все интересен не е добавен в пакети, или е много остарял там и се налага да се свали и компилира ръчно. Съвсем определено make && make install работи в Линукс!
Има и други малки неточности, например така и не става ясно предимството на Slice пред Extended партишъна - на практика от това обяснение аз разбирам, че имат равни възможности.
Добре е да се появяват повече неща за *BSD и да се обнародва сред българските компютърни потребители - наистина си струва. Но - малко по-точна и проверена информация, иначе рискуваме Линукс потребителите да ни се смеят. А и почти всички, особено системните администратори ползваме не само 1 дистрибуция и би трябвало да се знаят разликите и общите неща.
[Отговори на този коментар]
Към: Някои сериозни уточнения От: prilep <saiman123 (a) abv__dot__bg> На: 23-02-2006@15:16 GMT+2 Оценка: 1/Неутрален"Добре е да се появяват повече неща за *BSD и да се обнародва сред българските компютърни потребители - наистина си струва. Но - малко по-точна и проверена информация,"
Що невземеш да напишеш, нещо "по-точно" и "по-проверено" - ще се радвам да го прочета ...
[Отговори на този коментар] Към: Някои сериозни уточнения От: zlatozar <zlatozar __@__ hotbox[ точка ]ru> На: 23-02-2006@15:43 GMT+2 Оценка: 1/НеутраленНе ми беше никак лесно да избера какво да включа в статията и как да го обясня. Импровизирах. Просто: "сравнение" вид творчески похват :)). Не се опитвам да изтъкна предимствата на FreeBSD пред Linux. Навляза ли в подробности ще се изгуби нишката. Сигурен съм.
[Отговори на този коментар]
OpenBSD От: Deyan Ivanov <past_or (a) yahoo< dot >com> На: 23-02-2006@15:09 GMT+2 Оценка: 1/НеутраленМоже ли това да се използва и за OpenBSD?
Тепърва започвам с него и ми е много интересно
какво представлява port системата.
[Отговори на този коментар]
Към: OpenBSD От: Stanislav Georgiev <s_georgiev__at__abv__dot__bg> На: 23-02-2006@16:33 GMT+2 Оценка: 1/НеутраленПортовата система е подобна, не е същата, но разликите са малки, особено за крайния потребител.
Работи се както съм написал по-горе - сваля се ports.tar.gz и се разархивира в /usr. Може и другаде, но там е типичното му място. След това cd /usr/ports/net например, ако ни трябват мрежови приложения и ако намерим нужния ни порт - примерно ipfm - cd ipfm, make install (може да се изпусне първия make - ако го няма пакета, портовата система си го тегли, компилира и инсталира), после - make clean (ако искаме да изтриеме временните файлове при компилацията) и готово.
Другият начин - бинарните пакети - теглиме пакета, четеме го от директория на твърдия диск, или CD с пакети, или директно от ftp сайта - pkg_add *път/име на файл*
Портовата система на NetBSD е друга - pkgsrc, но се работи по абсолютно същия начин. На практика OpenBSD произлиза от NetBSD, така че е резонно да няма големи разлики, освен че е прието на портовете да се казва пакети. Даже pkgsrc може да се ползва с OpenBSD, FreeBSD, Slackware, Aix, Interix (Unix Services for Windows) и др.
Работата с портовете във FreeBSD е отново същата горе-долу, особено в крайния етап - компилирането или добавянето на бинарни пакети.
Между другото, Crux и някои други Линукс дистрибуции ползват много подобна портова система, произлизаща от BSD.
Много може да се говори и пише - все пак, да не откриваме топлата вода :)
Четете в Интернет, аз просто нямам толкова свободно време за да се изявявам като писател и не мисля, че тук ми е най-силната страна.
[Отговори на този коментар]
Към: Към: OpenBSD От: Деян Иванов <past_or__at__yahoo__dot__com> На: 27-02-2006@16:09 GMT+2 Оценка: 1/НеутраленБлагодаря за разясненията.
Мисля, че ще ми свършат работа.
[Отговори на този коментар]
да гледаме напред От: fenmen На: 23-02-2006@20:09 GMT+2 Оценка: 1/НеутраленСтатията освен че е добра, е и написана стилно. Хареса ми и макара да ползвам FreeBSD от доста години намерих полезни неща. Много си силен, човече!
Може ли да те помоля като пишеш за PF да разгледаш по-подробно HSFC.Давай все така авторски без преводи.Благодаря ти!
[Отговори на този коментар]
Към: да гледаме напред От: zlatozar <zlatozar< at >hotbox __точка__ ru> На: 24-02-2006@12:26 GMT+2 Оценка: 1/НеутраленБлагодаря ти!
Ще се опитам с HSFC-то. Там са доста оплетени нещата,а и липсва документация. Обещавам! За срокове не питай ;)
[Отговори на този коментар]
Много Добра Работа! От: ext3 <ext3__at__abv __точка__ bg> На: 24-02-2006@11:08 GMT+2 Оценка: 1/НеутраленКрайно време беше някой да напише нещо читаво!
[Отговори на този коментар] четох четох и ... От: bozhan На: 24-02-2006@16:28 GMT+2 Оценка: 1/Неутраленне ми се заяжда ама слезте малко на земята:)
всичко изброено тук като хубаво в бсд го има в дебиан. тва с портовете е толкова смешно когато си използвал дебиан:))) не знам що не спрете да го споменавате.
единственото в бсд което може би се заслужава хвалбите е pf. продължавайте да проектирате и систематизирате .... пък линукс ще си набъбва:)))
[Отговори на този коментар]
Към: четох четох и ... От: rusinante <n3wb13 (a) mail< dot >bg> На: 25-02-2006@3:04 GMT+2 Оценка: 1/НеутраленИ аз без да се заяждам ...
Ако обичаш да имаш пълен контрол над нещата с минимални усилия то ти си избрал грешната операционна система или си свикнал твърде много с нея и не желаеш да се огледаш наоколо. До преди 6-7 месеца и аз точно като теб си мислех че няма нищо по хубаво от my home sweet home Slackware и ... светлина запознах се с дявола ;) След 2-3 месечно лутане из Гуугъл скубане на коси и проклинане на всичко що де съдържа *БСД осъзнах че това е моят избор и както споменавам по-горе ПЪЛЕН КОНТРОЛ с минимални усилия. Ако още не си пробвал и имаш малко свободно време намери една стара щайга и експериментирай както казва автора :) След време и доста изчетена документация съм сигурен че ще я оцениш по достойнство. Всеки има право на личен избор все пак, но си струва поне да опиташ.
[Отговори на този коментар]
Поздравления \/ От: rusinante <n3wb13 __@__ mail< dot >bg> На: 25-02-2006@3:36 GMT+2 Оценка: 1/НеутраленОтлично злост :)
Статията си заслужава всяко написано и прочетено битче. Подходяща е както за начинаещи така и за напреднали потребители. Останах притно изненадан от разяснението около това толкова непонятно ми pkgdb. Благодарско също така за linprocfs и конзолното how-to-та.
[Отговори на този коментар]
Към: четох четох и ... От: SysAdmin На: 25-02-2006@22:51 GMT+2 Оценка: 1/НеутраленБожане, точно това съм писал по-горе, доста подробно.
Все пак в Дебиан го няма точно дървото с директориите на портовете. Apt-get тегли даже по-добре от pkg_add и се конфигурира много по-лесно.
Само да ти напомня, че има Crux, който е много по близо до *BSD и че pf, както и много други полезни благинки водят началото си от OpenBSD и успешно се портнаха в NetBSD, FreeBSD, но специално pf от 2-3 години се мъчат да го портнат в Линукс, без пълен успех засега.
[Отговори на този коментар]
малко идеи От: Деян Дянков <deyan __точка__ dyankov __@__ gmail __точка__ com> На: 24-02-2006@17:10 GMT+2 Оценка: 1/НеутраленЗдравей, Златозаре.
Статията наистина е много добра, поздравления.
Искам само да дам малко напътствия. Обърни внимание на правописа. На мен не ми пречи, но средностатистическият Lainux потребител е много разнежен и изобщо няма да отсее информацията, а само ще каже "тая статия sux".
(да - осъзнавам на кой сайт се намирам)
Още нещо .. говориш за "buildworld", а споменаваш /usr/src чак при компилирането на ядро. Ако не знаех що е "buildworld" щях да изпусна нишката.
Избирането на mirror е хубаво. Можеш да сопменеш, че вече си имаме и българско огледало - ftp://ftp.bg.freebsd.org/
Обръщай повече внимание на детайлите и отделяй по няколко реда за обяснение. Ти направо препускаш през материята :)
Хвърляй повече url-и. Обяснявайки създаването на конфигурационен файл за ново ядро можеш да вметнеш, че повече информация може да се намери на http://www.freebsd.org/doc/en_US.ISO885...
Спомени handbook-a, faq-a и т.н. FreeBSD има перфектна документация.
Това е в общи линии, надявам се и аз да съм бил поне малко полезен :)
[Отговори на този коментар]
Към: малко идеи От: taratan На: 27-02-2006@4:41 GMT+2 Оценка: 1/НеутраленКажете BG mirror за portsnap да го укажа в /etc/portsnap.conf че тези 39MB ги точа от половин час.
[Отговори на този коментар]
Към: Към: малко идеи От: знаещ На: 27-02-2006@9:30 GMT+2 Оценка: 1/НеутраленНЯМА BG mirror за portsnap!
[Отговори на този коментар]
Към: малко идеи От: zlatozar <zlatozar __@__ hotbox< dot >ru> На: 7-03-2006@15:46 GMT+2 Оценка: 1/НеутраленЗдрасти,
Благодаря ти за идеите.
fastest_cvsup -q -c bg
** No servers were found :(
ako си го пускал казва че няма намерени сървари. Малко по заобиколен път може да се ползва:
fastest_cvsup -q -rc bg,de
Добре е да има повече от една възможност.
Поздрави,
Златозар
[Отговори на този коментар]
Добре написано. От: Dimitar <startx< at >bgchat< dot >com> На: 25-02-2006@14:14 GMT+2 Оценка: 1/НеутраленДобра работа.
[Отговори на този коментар] относно cvsupScript.sh От: ttt На: 27-02-2006@6:23 GMT+2 Оценка: 1/НеутраленАко cvs-supfile се модифицира така: "*default host=cvsup.bg.freebsd.org" , във cvsupScript.sh се обезмисля първия if-блок от скрипта и може да бъде заменен само със един ред: "cvsup -g -L 2 /root/cvs-supfile". Няма нужда да търсим mirror по света като си имаме на родна земя.
Поздравления за добре написания материал, колкото до забележките- всеки може да си изсмучи такива от пръстите, но виждам че повечето е градивна критика ;). Zlatozare да не забравиш, обещал си статия за pf!
[Отговори на този коментар] awesome... От: amerikaneca На: 12-06-2006@10:40 GMT+2 Оценка: 1/Неутраленздравеите,
аз сам студент в Америка и от доста време се боря в lab-a с едно freebsd. много от нещата се опитвам да "сглобя" сам. статийка от тук, статийка от там - знаете как е. Е момчета с тази статия нещата ми "светнаха". сега си казвам "абе как не се сетих". update - знам как става, ако имам проблеми винаги мога да погледна тук. Златозар е готин и винаги отговаря на въпроси(това между нас да си остане)
Много чакам статията за PF... нещо се бави обаче
[Отговори на този коментар]
|
|
|
|
|
|
|
|