от Nick Angelow(10-09-2004)

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

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

КОНЦЕПЦИЯТА ЗА ОСНОВАТА НА LINUX

http://unix.ginras.ru/linux/base000.html

Алексей Федорчук



СЪДЪРЖАНИЕ

УВОД

Преди да започнем инсталацията, е необходимо да изясним от какво се състои Linux като операционна система. По този въпрос съществуват две крайни гледни точки. От една страна, Linux се разглежда като ядро на операционната система. И това е така, тъй като именно разработеното от него ядро, Линус Торвалдс, който притежава авторските права над него, нарича Linux.. Само че, няма ядро, колкото и съвършено да е, което само по себе си да е способно да реши даже и най-обикновената потребителска задача.

От друга страна, в статиите и книгите за Linux, в него често се включва всичко, което може да се намери на многодисковите дистрибуции, продавани под това име, включително и графичният потребителски интерфейс X-Window, интегрираните среди от типа на KDE и Gnome и техните приложения. Но сам по себе си, X-Window няма отношение не само към Linux, но даже и към Unix системите въобще (с изключение на това, че е способен да работи под управлението на всяка от тях). А интегрираните среди и мениджърите на прозорци са само допълнения (макар и необходими) към него. Що се отнася до включваните в дистрибуциите приложения – над 90% от тях са общо достояние на всички свободни операционни системи.

За да определим от какво се състои Linux, нека си зададем въпроса, какво му е нужно, за да може да функционира.

Първо, разбира се, това е ядрото. Второ – средствата за неговото зареждане, набори от скриптове за начално зареждане (стартови скриптове) и инструменти за поддръжка на файловата система, по-точно системи – в Linux се поддържат няколко файлови системи, които с пълно право могат да се считат за вродени.

След това идва ред на една обща за системата библиотека и поне една терминална библиотека. След това следват компилатора и средствата за неговата поддръжка (линкер, асемблер и т. н.) и продължаваме с потребителските системни програми за работа с файлове и текст. И накрая стигаме до командната обвивка, осигуряваща управлението на цялото това множество от програми, както и някакъв текстов редактор за конфигуриране на системата.

С ядрото на Linux всичко е ясно – именно него го създават Линус Торвалдс и сътрудниците му. Всички останали компоненти, макар и теоретично да могат са имат променлив състав, са отдавна определени от традицията – това са така наречените средства, разработени в рамките на проекта GNU [1] и подобните му, състоящи се от:

  • библиотеки – системната glibc и терминалната ncurses;

  • компилатора gcc и средствата за осигуряване на неговата работа (наречени binutils и bin98), а също така и допълнителни (но практически необходими)компоненти като make, automake и autoconfig;

  • различни помощни програми [2] с различно предназначение – fileutils, findutils, textutils, архиватори и компресори, програми от типа на grep, awk, sed и т. н. – всичко това се оказва обхванато от понятието класически Unix или GNU-програми (честно е да отбележим, че някой от тези програми нямат никакво отношение към проекта GNU).

  • командната обвивка bash [3], изпълняваща в Linux ролята на системна обвивка – освен всичко друго, именно тя е отговорна за интерпретацията на стартовите скриптове.

Ако разсъждаваме теоретично, реализацията на изброените компоненти може да бъде различна. Съществуваха (а е възможно и още да съществуват) дистрибуции на Linux, в които като основен компилатор се използваше не gcc, а egc или pgcc. Терминалната библиотека може да бъде, ако не сменена, то поне допълнена с някаква друга. Командният интерпретатор bash може да се смени с всеки shell съвместим (по-точно казано, с всеки способен да емулира митичният POSIX-shell). Но в качеството на каноничен минимален набор за Linux, може да се разглежда това, което Gerard Beekmans е включил в своята дистрибуция Linux from Scratch (LFS).

Трябва да отбележим, че всички компоненти от тази дистрибуция от една страна са толкова обвързани помежду си, че от нея практически не може да се премахне нищо. От друга страна, съдържащата ги система е способна не само да се зареди, но и да изпълнява потребителски задачи, някои от които не съвсем елементарни. Особено, ако се допълни с две-три приложни програми. Освен това, тази дистрибуция (с включването на средства за разработка) притежава потенциал за практическо неограничено увеличаване на функционалността. Поради тези причини, LFS (плюс няколко програми, които ще спомена след малко) може да се разглежда като основа на linux (base linux). Тя включва в себе си:

  • ядрото на системата;

  • средства за поддръжка – програми за начално зареждане и файлови системи;

  • средства за бойно осигуряване – програми от проекта GNU, както и някои други програми;

  • средства за тилово осигуряване – системните библиотеки;

  • абсолютно необходими приложения;

  • средства за локализация;

  • средства за компилиране на всичко изброено дотук (компилатори etc)

Изходният код на всичко това може да бъде намерен в почти всяка пълна дистрибуция на Linux. Но може и просто да изтеглите последните (или най-удачните) версии на избрани компоненти от оригиналните им сайтове.

ЯДРО

Разпространено е мнението, че ядрото на Linux е едно единствено. Това е така, но не съвсем. Действително, ядрото на Линус е канонично. Но освен него, съществуват още ядра на maintainers (най-известното от тях е ядрото на Алан Кокс) и ядра на различни дистрибутори. Разбира се, в основата на всички тях лежи каноничното ядро, но с различни кръпки, отговорни за реализацията на допълнителни функции.

Местоположението на каноничното ядро Linux, както може да се досетите, е не някъде другаде, а на www.kernel.org. В настоящият момент има смисъл да се разглежда ядро 2.4.19 или при наличие на склонност към експериментиране – разработвания клон 2.5.хх. Има смисъл да се запасите с няколко ядра и по метода на пробите и грешките да изберете най-подходящото. В частност, поддържането на файловата система XFS (а в раздела за файловите системи именно тя ще бъде препоръчана за употреба) се осигурява с изтегляне на кръпки от сайта на SGI. Макар, че в разработвания клон, поддръжката на XFS е включена като стандартната функция.

СРЕДСТВА ЗА ПОДДЪРЖАНЕ

Като такива ще разгледаме програмите за начално зареждане, средствата за поддържане и работа с файловите системи. От програмите за начално зареждане внимание заслужават два – класическият Lilo и GRUB. Първият, както става ясно от името му, е традиционният за Linux, добре справящ се не само с нея, но и с много други (в това число и с произволен Windows) операционни системи. Документиран е добре на много източници, както и се намира на много и различни сървъри, например тук. GRUB има всички шансове да се превърне в стандарт за свободните операционни системи. За разлика от повечето мултисистемни програми за начално зареждане, той не само предава управлението “по веригата” на съответният сектор за зареждане, но може да работи с немонтирани файлови системи (незаредени операционни системи), осигурявайки зареждането от тях на ядрото на съответната система. Между другото, при невъзможност да направи това, GRUB е способен и на зареждане “по верига”. Той може да бъде изтеглен от сайта на проекта.

Най-важните програми за поддържане на Linux са обединени в пакет, който се нарича по същия начин – util-linux. В него влизат множество команди (agetty, arch, blockdev, cal, cfdisk, chkdupexe, col, colcrt, colrm, column, ctrlaltdel, cytune, ddate, dmesg, elvtune, fdformat, fdisk, fsck.minix, getopt, hexdump, hwclock, ipcrm, ipcs, isosize kill, line, logger, look, losetup, mcookie, mkfs, mkfs.bfs, mkfs.minix, mkswap, more, mount, namei, pivot_root, ramsize, raw, rdev, readprofile, rename, renice, rev, rootflags, script, setfdprm, setsid, setterm, sfdisk, swapoff, swapon, tunelp, ul, umount, vidmode, whereis, write), предназначени за създаване на дялове на диска (fdisk, cfdisk), създаване (mkswap), активиране и деактивиране на swap-дяловe (swapon/swapoff), монтиране и демонтиране на файлови системи (mount/umount) и още много други. Силно препоръчително е, версията на util-linux да отговаря на версията на ядрото на системата. Това може да се следи на същия сайт – kernel.org.

Взаимодействието между модулите на ядрото се осигурява от пакета modutils, строго обвързан с версията на ядрото (за клон 2.4 на ядрото може да се вземе от тук). Този пакет включва команди (depmod, genksyms, insmod, insmod_ksymoops_clean, kallsyms, kernelversion, ksyms, lsmod, modinfo, modprobe and rmmod), предназначени за зареждане и премахване на модули, за определяне на техните зависимости и т. н.

Средствата за поддържане на файловата система (или системи) включват в себе си програми за тяхното създаване (казано с термините на DOS/Windows – за тяхното форматиране), за проверка на тяхната цялост, за фино настройване, резервно копиране и т. н. За класическата файлова система на Linux, ext2fs, този набор се казва ext2fsprogs и може да се намери на този адрес. В него влизат следните програми:

  • badblocks за намиране на повредени блокове върху дисковите устройства;

  • chattr за смяна на атрибутите на файла;

  • dumpe2fs за създаване на dump на диска;

  • ext2fs, mke2fs и mkfs.ext2 за създаване на дискови дялове на файловата система (т.е за форматиране на дяловете);

  • e2fsck, fsck и fsck.ext2, осъществяват проверка на цялостта на файловата система;

  • e2image за създаване на образ на файловата система във вид на файл;

  • e2label за създаване на етикети (таблици на разделяне) на диска;

  • tune2fs за настройване на бързодействието на файловата система.

както и още няколко програми (compile_et, debugfs, lsattr, mk_cmds, mklost+found, uuidgen). Редица програми от пакета поддържат също и журналния вариант на файловата система на Linux – ext3fs (mke2fs, fsck, ext3), а resize2fs поддържа и ReiserFS. Но по принцип, за нея, както и за другата журнална файлова система – XFS, са необходими собствени пакети.

В първия случай, това ще бъде reiserfsprogs, включващ:

  • mkreiserfs за създаване на файловата система ReiserFS;

  • reiserfsck за проверка на нейната цялостност;

  • resize_reiserfs за промяна на размера и демонтиране;

  • а също така unpack и debugreiserfs.

За поддържане на XFS е необходим цял комплекс от програми:

  • acl [4] за допълнителни средства за управление на достъпа до файловете;

  • attr за използване на разширените атрибути на файловете;

  • dmapi;

  • xfsdump за резервно копиране;

  • xfsprogs за създаване и управление на файловата система XFS.

Всички тези програми могат да бъдат намерени (в това число и като изходен код) в съответния раздел на сайта SGI.

Между другото, абсолютно необходима от този списък е само последната програма, xfsprogs, без останалите може да се справим.

Още един компонент от инструментите за поддръжка – това са средствата за стартиране и спиране на системата. Те са обединени в пакета sysvinit. Именно той осигурява инициализацията на процесите (init), осъществяване на нивото на изпълнение (runlevels), упълномощаването на потребителите, а също така и предаването на сигналите на изпълняваните процеси (в това число и тези, които водят към рестартиране или спиране). Освен това, за стартирането на пълнофункционална система се изискват и някои скриптове за инициализация, но те са толкова зависими от конкретната система, че ще се върнем към тази тема по-късно. Още повече, че те може да се напишат (или поне коригират) и ръчно – това са нормалните скриптове на обвивката.

Непосредствено отношение към стартирането на системата и упълномощаването има пакета shadow, предназначен за управление на потребителските пароли. За управление на системния журнал се използва пакета sysklogd, включващ в себе си klogd – системния демон за записване на съобщенията от ядрото, и syslogd.

Освен това, необходими са средствата за поддържане на виртуалната файлова система proc, осигуряваща изображението на процесите – procinfo, procps и средството за транслация devfsd на файловата система devfs, ако има желание да се използва такова.

Към същата група спада и пакета psmisc, предназначен за следене на процесите в системата. В него влизат командите:

  • fuser, извеждаща на екран идентификаторите на процесите;

  • killall, предназначена за изпращане на сигнали към тях;

  • pstree, показваща стартираните процеси във вид на дърво

Продължавайки напред, към средствата за поддръжка може да отнесем програмите за работа с конзолният драйвер на Linux. В момента се използват два – kbd и console-tools. Първата включва в себе си множество средства (chvt, deallocvt, dumpkeys, fgconsole, getkeycodes, getunimap, kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, openvt, psfaddtable, psfgettable, psfstriptable, psfxtable, resizecons, setfont, setkeycodes, setleds, setlogcons, setmetamode, setvesablank, showfont, showkey, unicode_start, unicode_stop), от които най-важни са:

  • loadkeys, предназначена за зареждане на клавиатурните подредби;

  • setfont за зареждане на екранните шрифтове;

  • mapscrn за задаване на съответствието между кодировките на клавиатурата и извежданото на екрана.

Пакетът програми console-tools има съответните средства – loadkeys и consolechars за управление на входа и изхода. Очевидно е, че пакетите kbd и console-tools не се изключват взаимно – просто наличието на единия прави излишно инсталирането на другия. Console-tools се счита за по-съвременен, но и текущите версии на kbd осигуряват, в частност работа с кодировката Unicode и други актуални средства., така че изборът между тях е въпрос на вкус. Още повече, че споменатият по-долу пакет console-tools-cyrillic успешно работи и с едната, и с другата програма.

Последното от средствата за поддръжка – за поддържане на конзолна мишка, се осигурява от програмата gpm. Тя се разглежда твърдо като опция, но според мен няма никакви основания да се отказваме от допълнителните удобства, осигурявани от нея.

СРЕДСТВА ЗА БОЙНО ОСИГУРЯВАНЕ

В това понятие включвам потребителските програми, голяма част от които са разработени в рамките на проекта GNU (и затова обикновено наричани GNU utilities). От една страна, те осигуряват минимална потребителска функционалност на системата, а от друга – имат служебна (и абсолютно незаменима) роля в процеса на нейното компилиране.

На първо място тук трябва да сложим командната обвивка – без нея са невъзможни никакви действия, освен това всяко инсталиране на системата се осъществява (пряко или посредствено) чрез нейните команди, като интерпретатора на командите е необходим и за изпълнението на стартовите скриптове при зареждането на системата.

Традиционно, като такава обща системна, командна обвивка в Linux се използва bash. Макар, че обикновено стартовите скриптове в явен вид се извикват от някаква обвивка /bin/sh, това не е нищо друго, освен препратка към bash, като при това, под bash се разбира някакъв виртуален POSIX-shell, който не съществува в природата. Всяка една POSIX-shell обвивка, стартирана по този начин, повече или по-малко го емулира.

Обвивката bash притежава много достойнства, но изобщо не е най-съвършената. Първото място (поне в семейството на shell-съвместимите интерпретатори) бих дал на обвивката Z-shell. Тя също може (и при това го прави много точно) да емулира POSIX-shell и затова е напълно подходяща за общосистемна обвивка. Но в началото почти неизбежно ще ни трябва и bash, така че е по-добре да се погрижим да получим и двете обвивки. Това може да направим съответно тук и тук.

Изходният код на всички програми, изброени дотук (както и на всички други, за някои от които ще говорим по-късно) са достъпни в мрежата в архивиран (и компресиран) вид, затова първото, което ще е необходимо за тяхното инсталиране – това са архиваторите и компресорите. Списъка на първите се ограничава с програмата tar, докато компресорите, които са ни необходими са не по-малко от два: gzip и bzip2, тъй като техните формати са несъвместими (понякога архиви от типа tar.Z могат да бъдат разопаковани от програмата gzip).

След това идва група пакети от програми за работа с файлове. Първият, от които така и се нарича – fileutils. В него влизат следните програми:

  • chgrp, chmod и chown за управление на атрибутите на файловете;

  • cp, dd и ln за просто копиране на файлове, за копиране с преобразуване и създаване на връзки, а също install за копиране с установяване на атрибути;

  • touch, mkdir, mkfifo и mknod – средства за създаване съответно на регулярни файлове, директории, специални файлове и файлове на устройства;

  • mv, rm, rmdir за преименуване/преместване на файлове, тяхното изтриване, за изтриване на директории;

  • ls, dir и vdir за преглед на списъците на файловете в директориите;

  • dircolors за установяване на цветовата схема;

  • df и du за извеждане на информация за дисковото пространство;

  • shred [5];

  • sync – за синхронизиране на файлови операции и състоянието на файловата система.

Основното предназначение на пакета sh-utils е навигация по файловите системи и получаване на обща информация за системата. В него влизат командите basename, chroot, date, dirname, echo, env, expr, factor, false, groups, hostid, hostname, id, logname, nice, nohup, pathchk, pinky, printenv, printf, pwd, seq, sleep, stty, su, tee, test, true, tty, uname, uptime, users, who, whoami и yes.

Към тях смислово се приближава и пакета за търсене на файлове – findutils. В неговия състав влизат:

  • find – практически универсално средство за търсене на файлове и изпълнение на разнообразни операции върху намерените файлове.;

  • xargs, използвана обикновено заедно с командата find, позволява да се приложат някои команди към списък от файлове;

  • locate – средство за сканиране на базата данни на файловата система с цел определяне местоположението на дадени файлове;

  • updatedb – средство за обновяване на базата данни на файловата система,използвана от командата locate.

Освен това, в пакета findutils влизат също командите bigram, code и frcode.

Към същата група програмни пакети може да отнесем и командата file. Тя позволява да детайлизираме типа на регулярния файл (изпълним, текстов и т. н.) по така наречената “магическа последователност” от байтове в неговото начало.

Следващият програмен пакет е предназначен за работа със съдържанието на файловете (имат се предвид текстови файлове). На първо място в този пакет трябва да поставим програмата less, която се явява средство за преглеждане на файлове по страници.

След това идва ред на пакета под многозначителното име textutils. В неговият състав влизат:

  • cat – многофункционална команда за създаване, преглед и обединяване на файлове;

  • cksum – средство за проверка на контролни суми;

  • comm – средство за по редово сравняване на два сортирани файла;

  • csplit – команда за разделяне на файловете на части, като в качеството на разделител се използва ред, зададен като шаблон;

  • cut - "извличане" от даден файл на части от редове;

  • expand – преобразуване на символа за табулация вътре в текстов файл в интервали;

  • fmt – нещо подобно на форматиране на параграфите на текстов файл;

  • fold – разбиване на файла на редове със зададена дължина;

  • head – извеждане на първите (по подразбиране – първите 10 реда) от файл;

  • join – сливане на редовете на два файла в общо поле;

  • md5sum – пресмятане на md5 контролна сума;

  • nl – номериране на редовете на даден файл;

  • od – преглеждане на файла в осмичен (по подразбиране) или някакъв друг код;

  • paste – по редово обединение на файлове;

  • pr – разбиване на файловете на страници и колони;

  • ptx – генериране на индекс на съдържанието на файла;

  • sort – сортиране по редове на съдържанието на файл;

  • split – разделяне на файла на части със зададен размер или количество редове;

  • sum – изчисляване на контролна сума и количеството блокове във файл;

  • tac – извеждане на съдържанието на файл отзад напред (обратно на cat);

  • tail – извеждане на няколко (по подразбиране десет) последни редове от файл (обратното на head);

  • uniq – отстраняване на повтарящите се редове в сортиран файл;

  • wc – пресмятане на броя редове, думи или символи във файл.

Два взаимно допълващи се пакета – diffutils и patch. Първият включва в себе си:

  • cmp и diff – програми за сравнение на два файла;

  • diff3 – същото, но за три файла;

  • sdiff - сравнение на два файла със запис на разликите в нов файл.

Командата patch има за цел внасяне на изменения, открити от командата diff, в изходния файл.

Съвършено незаменим е пакета grep. В неговия състав влизат програмите grep, fgrep и egrep, предназначени за търсене на зададен текстов фрагмент (шаблон) във файлове.

Пакетите ed, gawk и sed са предназначени за доста сложна обработка на текст, и представляват всъщност поточни (не интерактивни) текстови редактори. Теоретично, разполагайки с мощни интерактивни редактори (от типа на вече споменатите emacs или vim) може да минем и без тях, но те се използват толкова широко във всякакви инсталационни скриптове, че практически се оказват необходими.

Аналогично е положението с пакета groff, включващ множество средства за сложно неинтерактивно форматиране на текст (addftinfo, afmtodit, eqn, grn, grodvi, groff, grog, grolbp, grolj4, grops, grotty, hpftodit, indxbib, lkbib, lookbib, mmroff, neqn, nroff, pfbtops, pic, post-grohtml, pre-grohtml, refer, soelim, tbl, tfmtodit, troff). Надали има някой, освен тези, свикнали с тях още от ранна детска възраст, който да ги използва за практическа работа. Но те се оказват необходими за функционирането на системата за документация, която ще разгледаме малко по-надолу.

Мрежовите възможности на основната система се осигуряват от два програмни пакета – netkit-base и net-tools. В първият се намира демона inetd, отговарящ за работата с Internet въобще и командата ping, използвана за изпращане на пакети, определящи достъпа до отделни възли от мрежата. Командите от пакета net-tools (arp, dnsdomainname, domainname, hostname, ifconfig, nameif, netstat, nisdomainname, plipconfig, rarp, route, slattach, ypdomainname) определят конфигурацията на мрежата (ifconfig), имената на домейните, имената на хостовете и т. н.

Накрая, групата пакети от програми, последна по ред, но не и по важност, отговарящи за системата за документация. Като такива, в Linux се използват две – традиционните за Unix man-страници и разработената в рамките на проекта GNU система info. Те са взаимно допълващи се, макар и по съдържание съществено да се припокриват.

СРЕДСТВА ЗА ТИЛОВО ОСИГУРЯВАНЕ

В това понятие включвам системните споделени библиотеки. На потребителя рядко му се случва да има непосредствена работа с тях, но без тези библиотеки, функционирането на цялата система е практически невъзможно. Разбира се, много приложения могат да бъдат свързани (и наистина се свързват) с тези библиотеки статично. Само че компилирането на собствена система без тях е просто невъзможно.

Главната общосистемна библиотека в Linux e glibc. Освен нея, за компилирането (и работата) на повечето конзолни приложения се изисква терминалната библиотека ncurses. И накрая, необходим е също инструментариум за свързване на програмата с библиотечните функции – libtool.

Всичко изброено дотук е необходимият минимум, отделни приложения могат да изискват и други библиотеки, например s-lang. А за работа с графични приложения се изискват най-малко библиотеките за поддържане на различни графични формати (gif, png, jpeg, tiff и др.) и може би svgalib.

АБСОЛЮТНО НЕОБХОДИМИ ПРИЛОЖЕНИЯ

Потребителските програми GNU (такива като textutils, awk или sed) не само изпълняват функции по поддържането на системата, но и позволяват решаването на доста сложни потребителски задачи. Но те не са достатъчни за пълноценна работа и затова трябва да се допълнят с още няколко програми. Първата от тях е текстовият редактор – без него е трудно даже да редактираме конфигурационните файлове. При избора на такъв са възможни три подхода: минималистичен, максималистичен и междинен.

За осигуряване на минимални възможности за редактиране е подходящ всеки максимално прост редактор – ако не излизаме извън рамките на проекта GNU, за тази цел може да използваме редактора nano. Той е лесен за усвояване, не изисква запомняне на многочислени команди и притежава основен набор от функции за редактиране.

При максималистичният подход имаме избор между две чудовища от света на конзолните редактори – vim и emacs. На кой ще се спрем е въпрос на вкус, като воденето на свещена война vim vs emacs тук е неуместно.

Междинният подход е оправдан, ако се изискват достатъчно мощни средства за обработване на текст (не само изходен, колкото обикновен). В този случай е целесъобразно да използваме редактора joe, нуждата от който напълно се вписва в нашия основен списък за тилово осигуряване. Той може да бъде намерен на sourceforge или на който и да е от неговите огледални сайтове, например тук.

Трудно е да си представим текстов редактор без възможност за проверка на правописа, затова следващият кандидат за абсолютно необходимо допълнение е ispell.

Много от изброените тук програми се придружават от документация в html формат. За нейното четене е необходим някакъв браузър. Оптималният избор тук е links.

Освен браузър, необходими средства за работа с мрежа са програмата за свързване през телефон и ftp-клиент – без тях изтеглянето на необходимите програми от мрежата ще бъде невъзможно. За първата цел ненадмината остава wvdial, а като кандидат за втората ваканция може да разгледаме wget.

В основната система на Linux, за постигане на нирвана, е добре да включим и средства за преглеждане на графика, които не изискват X-Window. Като такива може да използваме конзолните програми fbi или zgv. Наистина, първата програма изисква поддържане в ядрото (или като модул) на графическа конзола (реализирана през frame buffer), а втората – библиотеката svgalib. И за всяка от тях са необходими библиотеките за поддържане на растерни графични формати (виж по-горе). Затова, графичните средства в основната система на Linux следва да се разглеждат като незадължителни.

И накрая, най-последното, което е необходимо за удобна работа – звуков съпровод под формата на програми за слушане на CD и гледане на mpeg-файлове. За постигане на първата цел успешно може да използваме (поне за начало) програмата cdplay, а за втората – mpg123, не изискващи никакви допълнителни мултимедийни библиотеки.

СРЕДСТВА ЗА ЛОКАЛИЗАЦИЯ

Тъй като света не се свършва с Америка и много хора говорят на различни езици от американския, в основата на Linux трябва да влизат и средства за интернационализация. Сама по себе си, международната поддръжка (така наречената NLS – National Language Support) се осигурява от системата gettext.

Нас, разбира се, най-вече ни интересува поддръжката не на някакъв друг език, а непосредствено на руския [6]. Руският локал (поне на ru_RU.KOI8-R) отдавна вече е неотменен компонент на системната библиотека. При нужда от локал 1251 – той може да се добави самостоятелно. За получаване на основен набор от кирилизирани екранни шрифтове, клавиатурни подредби и карти на съответствието между тях е необходим, и струва ни се достатъчен, пакета console-tools-cyrillic, в който има всичко необходимо (и някои неща от там са разкошни). Той е предназначен за работа с пакета за управление на конзолата console-tools, но прекрасно се вписва и в съвременните версии на kkb. За реализация на правописна проверка на руски език, като допълнение към оригиналния ispell се предлага известният речник на Лебедев – rus-ispell. Последните елементи на основната русификация са програмата за прекодиране rusconv и програмата mapchan – за работа с различни кодировки в конзола.

СРЕДСТВА ЗА КОМПИЛАЦИЯ

Най-накрая, последното (или строго погледнато първото), необходимо за това да съберем всичко изброено по-горе в едно цяло – това са средствата за компилация. На първо място това е компилатора на езика C, на който е написана голяма част от операционната система Linux и програмите за нея – gcc. Неговата текуща версия (3.2) се препоръчва за използване, тъй като тя е способна да оптимизира код, предназначен за работа не само под Pentium III и Athlon (с това може да похвали и клона на версията 2.9), но и под Pentium IV.

По-нататък следват средствата за осигуряване на компилацията (линкер, асемблер и т. н.), обединени в два пакета – bin86 и binutils.

След това следва програмата за управление на компилацията, make и тясно свързаните с нея програми autoconf за построяване на средства за автоматично конфигуриране при компилацията, и automake за автоматизация на процеса на създаване на make-файлове, описващи процеса на компилация. Освен тях, практически необходими се оказват лексикалният анализатор flex, синтактичният анализатор bison (използва се и неговият прототип yacc – за компилиране на някои програми е необходим именно той) и макропроцесорът m4. И накрая, в някои случаи за компилиране на програмата е необходим интерпретатор на езика perl.





Наборът от приложения, обединени от понятието “основа на Linux” (Base Linux), може да се стори на някой малко аскетичен, но той осигурява успешно именно базовата функционалност на системата. И примерно такъв набор от програми се предлага като базов (което означава, че го има непременно при инсталацията) във всяка дистрибуция на Linux, претендираща да е напълно функционална. Разбира се, наборите от пакети (и особено конкретни представители на отделните групи) се променят. Но може да бъдем сигурни, че 90% от всичко изброено, гарантирано ще се намери във всяка една произволна Linux-система.



Превод: Николай Ангелов





[1] От всички възможни преводи на този акроним, най-адекватен ми се струва този: "Гну - это вам не хрен собачий" (А.Ф.)

[2] aka utilities

[3] Освен bash, има възможност да се използват и други, различни обвивки

[4] ACL – Access Control List

[5] shred - използва се за сигурно изтриване на файл, без да остава възможност за неговото възстановяване с други средства

[6] А нас ни интересува как стоят нещата с поддържането на български език, което, за наша радост, е в подобно състояние на описаното по-горе. Повече информация може да се намери примерно на сайта на linux-bg.



<< Още един поглед върху концепцията за основата на Linux | Видове ядра - и къде се вписва Линукс? >>