Лекция 8
Конфигуриране на системата. Конфигурационен файл /etc/fstab. Прикачване и разкачване на устройства и опции на командата mount. Пакетни системи. Видове пакетни системи – tgz, rpm, deb. Инсталиране на бинарни пакети. Пакетна система на Slackware Linux. Команди за инсталиране, премахване и обновяване на пакети. Програми на трети страни за инсталация и създаване на пакети. Обновяване на системата през Интернет.
Както бе споменато още в началото, всеки хард диск или дял от хард диск представляват файлове в директорията /dev. За да може да се използва хард диска е необходимо преди това той да се монтира или прикачи. Командите, които монтират или демонтират блоково устройство (а такива са всички хард дискове, CD-ROM и др.) са mount (за монтиране) и umount (за демонтиране). Mount и umount използват за своята работа два важни файла – fstab и mtab. Fstab служи за описание на файловите системи, които може да се монтират, а в mtab се описват монтираните в момента файлови системи. Това описание се извършва автоматично от mount и umount. mount има множество опции, по-важните от които са:
-a – монтира всички файлови системи описани във файла /etc/fstab
-n – монтира дадено устройство без да прави запис във файла /etc/mtab. Тази опция е полезна когато файла mtab се намира на файлова система, която е само за четене.
-r – монтира файловата система само за четене. Синоним на тази опция е -o ro
-w – монтира файловата система за четене и писане. Синоним на тази опция е -o rw
-t – тип на файловата система, която се монтира. По-важните от тях са ntfs, vfat, raiserfs, msdos, ext2, ext3 и iso9660. По принцип ядрото, в повечето случаи, само установява правилно типа на файловата система, но в понякога се налага нейното ръчно задаване. За да може да се монтира даден тип файлова система, трябва ядрото да е компилирано с поддръжка за нея.
-о – задава множество опции на командата mount. Тези опции са различни за разлините файлови системи. Освен това някои от тях имат смисъл само ако са описани във файла fstab.
defaults – задава опциите по подразбиране, а именно rw, suid, exec, auto, nouser и async
async – задава асинхронен режим на работа на файловата система.
auto – файловата система може да бъде монтирана чрез ключа -a.
exec – позволява изпълнението на файлове от тази файлова система.
ro – монтира файловата система само за четене.
rw – монтира файловата система за четене и писане.
suid – позволява флаговете SUID и GUID да имат ефект за дадената файлова система.
user – позволява на обикновения потребител да монтира файловата система. Името на потребителя монтирал файловата система се записва във файла mtab, така че той да може после да я демонтира.
users – позволява на всички потребители да монтират и демонтират дадената файлова система.
Повечето файлови системи имат собствени опции, които се различават както по описание, така и по значение. Това, както и техния брой (над 30) прави запомнянето на всяка опция трудна задача. Информация за отделните файлови системи и техните опции може да се намери на man страницата на командата mount.
Командата umount има значително по-малко опиции от mount. По-важните от тях са:
-n – демонтира файловата система без да пише във файла mtab.
-r – ако демонтирането пропадне, umount пробва да превключи файловата система в режим само за четене.
-a – демонтира всички файлови системи описани в mtab.
-f – принудително демонтиране на файловата система. Тази опция изисква ядро с версия 2.1.116 или по-висока.
-l - „мързеливо“ демонтиране. Отделя файловата система от йерархията веднага и изчиства всички връзки към нея, веднага щом тя се освободи. Опцията изисква ядро с версия 2.4.11 или по-късна.
Ето няколко примера за използването на двете команди:
#mount /dev/hdc1 /mnt/hd – монтира /dev/hdc1 в директорията /mnt/hd
#mount -t ntfs /dev/hda1 /mnt/hd – монтира /dev/hda1 в директорията /mnt/hd, като задава и типа на файловта система
#mount /dev/hda1 /mnt/hd -o ro – монтира файловата система в режим само за четене
# mount -r /dev/hda1 /mnt/hd – същото, но записано по друг начин
#umount /mnt/hd – демонтира файловата система прикачена към директорията /mnt/hd
Командата mount може да се използва и за монтиране на побитово копирани от дискета, CD-ROM или хард диск файлове. Пример за такива файлове са свалените от Интернет дистрибуции на Линукс с разширение iso. Ето как става това:
#mount /home/dino/knoppix-3.4.iso /mnt/tmp -o loop
След тази команда вие ще може да разгледате съдържанието на файла knoppix-3.4.iso преди да го запишете на CD-ROM.
Един от най-важните файлове в Линукс е файла fstab. Тук се описват файловите системи които трябва да се монтират при стартиране на операционната система и точките в които те се монтират. Освен това тук се задават и опции специфични за дадената файлова система. Един типичен fstab файл има следния вид:
/dev/hda6 swap swap defaults 0 0
/dev/hda7 / reiserfs defaults 1 1
/dev/hda8 /mnt/storage vfat uid=1000,users,iocharset=cp1251,codepage=866,exec,umask=000 0 0
/dev/hda1 /mnt/hd ntfs users,exec,uid=1000,iocharset=cp1251,ro 0 0
/dev/sr0 /mnt/cdrw iso9660 user,unhide,noauto,owner,users,iocharset=cp1251,exec 0 0
/dev/hdb /mnt/cdrom iso9660 user,unhide,noauto,owner,ro,users,iocharset=cp1251,exec 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
proc /proc proc defaults 0 0
fstab е разделен на 5 колони. Първата от тях указва за кое устройство става дума. Втората колона задава т.нар. точка на монтиране, третата – типа на файловата система. Четвъртата колона е за задаване на опции към файловата система. Последната колона се състои от две числа. Първото от тях оказва дали на файловата система е позволено да се прави dump, а второто указва дали файловата система да се проверява за грешки при стартиране на операционната система. То трябва да бъде 1 за root файловата система (там където е инсталиран Linux, като в случая това е /dev/hda7), 2 за останалите и 0 за тези, които не трябва да се проверяват. Всички файлови системи зададени във fstab ще се монтират автоматично при стартиране на операционната система. Освен това за описаните тук файлови системи може да се използва и съкратен запис на командата mount:
#mount /mnt/storage
вместо
#mount /dev/hda8 /mnt/storage
Файла mtab се попълва автоматично и неговия формат не е толкова важен, затова няма да бъде разгледан.
Всяка Линукс дистрибуция се разпространява с множество по-малки програми и приложения. Всички те са организирани в пакети. Пакета е набор от файлове, които са архивирани и имат определена структура на архива. Тази структура е различна за различните видове пакетни системи. Тя е най-проста в пакетите на Slackware и най-сложна за пакетите на Debian. По средата стои пакетната система на Red Hat. Видовете пакетни системи се разпознават по разширението на файла – tgz за Slackware, rpm за Red Hat, Fedora, Mandrake ,SUSE и deb за Debian, Knoppix. От тях единствено tgz не притежава проверка на зависимости и обновяване през Интернет. Тук ще наблегна на пакетната система на Slackware, но в края ще бъдат разгледани и пакетните системи rpm и deb.
Пакета на Slackware представлява архивен файл с разширение tgz. Освен файловете на програмата във файла се намира и една директория наречена install. Тук се може да има следните файлове:
doints.sh – това е шел скрипт, който се изпълнява веднага след копирането на файловете.
slack-desc – файл описващ предназначението на програмата. Това описание се показва по време на инсталирането на пакета.
slack-required – официално не се поддръжа от инсталатора на Slackware. Служи да окаже на някои външни програми какви програми и/или библиотеки са необходими за правилната работа на програмата.
Всеки пакет има следния вид на името:
coreutils-5.2.1-i486-1.tgz
Тук coreutils е името на пакета, а 5.2.1 е неговата версия. i486 е архитектурата за която е създаден пакета. В случая това пакета е създаден за Intel процесор (или съвместим) и ползва оптимизации залегнали в архитектурата на 486 поколението процесори. Това означава, че този пакет няма да работи на машини с процесори по-ниски от 486 (386 например). Много дистрибуции предлагат своите пакети в няколко варианта – например за 586,486 и 386. Използването на пакет компилиран за ниска версия на процесора води до намалено бързодействие, особено за натоварващи приложения като сървъри. Последната цифра е т.нар. build номер. Разширението показва, че става дума за пакет на Slackware.
Slackware притежава вградени приложения за инсталиране, премахване и обновяване на пакети. Това съответно са installpkg, removepkg и upgradepkg. Опциите на installpkg са:
-warn – показва кои директории и/или файлове ще бъдат премахнати или презаписани при инсталирането на дадения пакет. Инсталация на пакета не се извършва.
-root /root_dir – инсталира пакетите в различна от подразбиращата се директория (а тя е /).
-infobox – използва програмата dialog, за да показва съобщенията в текстов диалогов прозорец.
-menu – показва диалогов прозорец с избор дали потребителя желае да инсталира пакета или не.
-tagfile – указва различен от подразбиращия е се файл с приоритети.
Опциите на removepkg са:
-warn – генерира отчет кои директории и файлове ще бъдат премахнати, без да ги премахва в действителност.
-preserve – запазва цялостната структура на пакета при премахването му в /tmp/preserved_packages/packagename
-copy – копира структурата на пакета в /tmp/preserved_packages/packagename без да го премахва
-keep – запазва определена информация, създадена в процеса на премахване на пакета.
И тук може да премахнете пакет инсталиран в различна от / директория. Това става така:
#ROOT=/mnt removepkg package_name
Опциите на upgradepkg са:
-dry-run – показва отчет кои пакети ще инсталирани или обновени, без да ги обновява в действителност.
--install-new – по принцип upgradepkg обновява само съществуващи вече пакети, като пренебрегва тези които не са инсталирани. Тази опция модифицира поведението на upgradepkg и той започва да инсталира нови, неинсталирани пакети.
--reinstall – по принцип upgradepkg обновява пакети с по-нова версия или build номер. Тази опция модифицира това поведение, като кара upgradepkg да инсталира пакети със същия номер на версия.
Ето и няколко примера за работа с пакети:
#installpkg coreutils-5.2.1-i486-1.tgz
#installpkg -root /mnt k3b-0.11.9-i686-1.tgz
#upgradepkg coreutils-5.2.2-i486-1.tgz
#removepkg apache-1.3.29-i486-2.tgz
Освен тези програми за работа с пакети Slackware притежава и приложението наречено pkgtool. Това е приложение, което използва текстови диалогови кутии и менюта. Друга възможност за улеснено манипулиране с пакети е kpackage. Това е вградено в KDE приложение, което може да работи с пакетната система на Slackware.
Тъй като пакетната система на Slackware не разполага с обновяване през Интернет и проверка на зависимости в Мрежата се появиха приложения, които запълниха тази ниша. Някои от тях влязоха в EXTRA диска на Slackware, което означава, че са достатъчно сигурни за работа. Това са приложенията swaret и slapt-get. И двете притежават възможност за автоматично търсене и обновяване на пакети, както и поддръжка на проверка на зависимости. Разбира се, те са далеч от функционалността на приложения като apt-get на Debian, но все пак работата която вършат е много добра за техния размер. И двете приложения има зачатъци на графичен интерфейс, който прави работата с тях по-удобна.
Например обновяването на дистрибуцията със swaret става по следния елементарен начин:
#swaret --update
swaret 1.6.2-1
[ ftp://ftp.mirrors.unixsol.org/slackware/slackware-current/ ]
### Fetching CHECKSUMS List File... DONE!
FILELIST List File... DONE!
Packages Descriptions... DONE!
Extra Packages Descriptions... DONE!
ChangeLog... DONE!
#swaret –upgrade
След това програмата ще ви запита, кои от намерените нови пакети да инсталира като можете да избирате пакетите един по един или да кажете да се инсталират всички. Освен това преди да започенете обновяване е добре да добавите български огледала на версията current на Slackware. Това става като промените файла /etc/swaret.conf.
Ето и линкове на два огледални сайта на Slackware в България:
ftp://ftp.mirrors.unixsol.org/slackware/slackware-current/
ftp://mirrors.evrocom.net/slackware/slackware-current/
Чрез swaret може да инсталирате, обновявате и премахвате пакети точно както и с вградените инструменти, но в единен интерфейс. Не по-малко важен е и факта, че swaret притежва интерфейс на български.
Можете да намерите swaret на официалната му страница в Интернет:http://swaret.org/
Българския превод може да намерите на: http://swaret.org/i18n/swaret.lang.BULGARIAN
Една от най-широко разпространените пакетни системи е rpm (Red Hat Package Manager) на Red Hat. Тя се използва в множество популярни дистрибуции като Red Hat, Mandrake, SUSE, Fedora и др. rmp поддържа обновяване през Интернет и проверка на зависимости. Програмата чрез която се инсталират, премахват и обновяват пакети се нарича rpm. Ето примери за нейното използване:
#rpm -i foobar-1.0-1.i386.rpm – инсталиране на пакета foobar-1.0-1.i386.rpm
#rpm --force -i foobar-1.0-1.i386.rpm – принудително инсталиране на пакета. Използването на тази опция е опасно за дистрибуцията.
#rpm --nodeps -i foobar-1.0-1.i386.rpm – инсталиране на пакета без проверка на зависимости. Използването на тази опция също не се препоръчва.
#rpm -i ftp://ftp.redhat.com/pub/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm – инсталиране на пакета от Интернет.
#rpm -e foobar – премахване на пакета foobar
#rpm --nodeps -e foobar – премахване на пакета foobar без проверка на зависимост. След това е възможно програмите, нуждаещи се от този пакет да не работят коректно или въобще да не работят.
#rpm -U foobar-1.1-1.i386.rpm – обновяване на пакета.
Това са много малко от опциите на програмата rpm (за повече информация man rpm).
Другия широко разпространен пакетен формат е deb. Приложението за работа с deb пакети се нарича dpkg. Ето примери за неговото използване:
#dpkg -i xpdf_2.02pl1-1_all.deb – инсталира пакета xpdf_2.02pl1
# dpkg -r xpdf_2.02pl1-1_all – премахва пакета xpdf_2.02pl1
#dpkg -l – показва списък с инсталираните пакетите
Използването на dpkg е сложна и неприятна дейност, особено за пакети с много зависимости. Затова е по-добре да се използва инструмента apt. Той изцяло стъпва върху dpkg за основните дейности по премахването или инсталирането на пакетите, но тук самото apt се грижи да доставката на файловете необходими за инсталирането на пакета. Преди да се използва apt трябва да се конфигурира. Тази конфигурация включва задаване на източници на пакети във файла /etc/apt/sources.list. Той има следния вид:
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://mirrors.ludost.net/debian stable main contrib non-free
deb http://ftp.bg.debian.org/debian stable main contrib non-free
След това е необходимо само да се изпълнят командите:
#apt-get update
#apt-get upgrade
Инсталирането на пакети става по следния начин:
#apt-get install xpdf
Тази команда инсталира пакета xpdf и всички пакети необходими за неговата работа.
Чрез apt-get може и да се премахват пакети:
# apt-get remove xpdf
Това обаче не премахва пакетите инсталирани, за да се осигури нормална работа на пакета xpdf.
Информация за даден пакет може да се покаже с програмата apt-cache:
$ apt-cache show xpdf
Освен конфигурирането почти всички действия на apt-get могат да се извършат и с интерактивната програма aptitude. Употребата й е препоръчителна за не напреднали потребители.
Повече информация за пакетната система и програмите които работят с нея може да намерите на адрес http://debian-book.debian-nikola.homelinux.net/src/htmlsplit/node73.html като информацията е на български.