Subsections

Въведение

Debian е една от многото дистрибуции на софтуер, които използват ядрото Linux. Нейната пакетна система е призната за една от най-развитите. Разбирането на пакетната система е важно, защото чрез нея се осъществява цялото управление на софтуера.

Пакети и техните състояния

Пакетите имат различни състояния. В началото на всичко стои първоначалният сорс (upstream source). Това е сорсът на програмата, който не зависи не само от дистрибуцията, но и от операционната система. Задачата на дистрибуцията е да събере много такива първоначални сорсове в едно подредено цяло. За целта често се налагат леки промени в този първоначален сорс, които се наричат кръпки (patches, в .diff файлове). За да се образува пакет, освен кръпки е нужно и да се напишат правилата, по които да се образува дебиански пакет. И така, първоначалният сорс, кръпките и дебианските правила образуват дебиански сорс пакет, който се състои от следните файлове:

От един сорс пакет могат да се образуват един или повече пакета, готови за инсталиране (binary packages), които имат вида пакет_версия_архитектура.deb и затова се наричат също deb-файлове. Какво представлява формата на тези файлове ще намерите в deb(5) и на http://www.dpkg.org

След инсталирането си пакетът минава в ново състояние и става инсталиран пакет. От един файл-архив, какъвто е всъщност deb-файла, той се преобразува в множество файлове, записани на точно определени места във файловата система. Процесът на инсталиране не е само разархивиране на deb-файла. Той включва конфигуриране, както и интегриране в цялата система. Пример за интегриране е стартирането на сървъра apache веднага след инсталирането му. При премахване на пакет файловете му се изтриват, но без конфигурационните файлове, и пакетът се премахва като част от системата -- например apache се спира. Ако пакетът е само разархивиран, но не е конфигуриран или не е интегриран, той се нарича полуинсталиран пакет, отразявайки половинчатото му състояние. Счита се, че ако има полуинсталиран пакет в системата, то цялата пакетна система не е в нормално състояние и трябва да се поправи.

Точно тези процеси около инсталирането и премахването на пакети са част от всепризнатата гъвкавост и удобство на пакетната система на Debian. Това обаче съвсем не е всичко, защото apt добавя още удобства.

И така, пътят на пакетите протича така:

dpkg: A medium-level package manager

Пакетът в Debian, чрез който се управляват другите пакети, се нарича dpkg. С командата dpkg(8) могат да се инсталират конкретни deb-файлове, както и да се премахват инсталирани пакети. Конфигурирането и интегрирането също се включват в тези процеси. Освен тези процеси dpkg се грижи и за точното състояние на инсталираните и полуинсталираните пакети.

Обикновено няма да се налага да използвате dpkg(8), освен ако не поправяте състоянието на пакетната система или не сте изтеглили deb-файл от Интернет.

dselect: Debian package management frontend

dselect, е стандартния за Debian механизъм за управление и инсталация на пакети. Въпреки че частично функционалността му може да бъде постигната чрез apt или директно чрез dpkg, dselect разполага с някой функционалности, които не трябва да бъдат пропускани.

Основното, което прави dselect(8) уникален като механизъм за управление на пакетите в debian, е това, че той присъства стандартно във всяка инсталация, предлага текстово меню базиран интерфейс, и следи зависимостите между пакетите много по-дълбоко, отколкото го прави apt, и това му помага да решава проблеми, които apt не е способен за сега да реши.

Основи на dselect

dselect трябва да се стартира от командният ред в текстов режим, с права на root и без никакви параметри. Макар че е възможно да се стартира от името и на друг потребител, при типично стандартно инсталирана дистрибуция няма да може да се прави нищо съществено с него. dselect разполага с няколко командни параметъра, но те се използват много рядко и като цяло управляват debug, или цветови режим.

Менюто на dselect се състои от няколко основни части:

  1. [A]ccess
  2. [U]pdate
  3. [I]nstall
  4. [C]onfig
  5. [R]emove
  6. [Q]uit

Всяка буквичка от меню заградена в квадратни скоби [] може да бъде използвана за директен достъп чрез натискане на съответния клавиш от клавиатурата. Също така е възможно да се използва и съпоставеният номер пред името на реда, за директен достъп. В противен случай можете да използвате и да се позиционирате на съответното място чрез стрелките.

Въпреки че не е било винаги така, в съвременните Debian дистрибуции dselect(8) използва dpkg(8) и apt(8) като подсистеми за конкретно управление на пакетите, по макар и невидим за потребителите начин. Все пак е важно да се знае това, с цел в процеса на работата с дистрибуцията и управлението на пакети да се осъзнае нейната логика и свързаност между съставните и компоненти.

Когато управлявате инсталацията на пакети основните въпроси, на които трябва да си отговорите са:

  1. От къде се извличат пакетите, когато желаем да ги инсталираме? - С това се занимава конфигурацията в менюто [A]ccess
  2. Какви точно пакети има на мястото, от което ги взимаме преди да ги инсталираме и какви са техните изисквания и зависимости? - С това се занимава менюто [U]pdate
  3. Какво точно искаме да направим (да инсталираме, премахнем, преконфигурираме) и с кой пакет? - С това се занимава менюто [S]elect
  4. Да изпълним съответните действия зададени от [S]elect. - С това се занимават менюто [I]nstall, [C]onfig и [R]remove.

Следователно, за да направим инсталация на пакет през dselect(,) трябва последователно да преминем и конфигурираме всяко едно от менютата - [A]ccess, [U]pdate, [S]elect, [I]nstall. От друга страна, ако веднъж сме конфигурирали [A]ccess например, и не желаем да променяме конфигурацията, не е нужно да преминаваме от там. Същото се отнася като цяло и за другите менюта.

[A]ccess

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

В съвременния dselect(8) след избиране на [A]ccess следва да посочите метод на достъп до пакетите. Възможностите са много, поради факта, че методите са всъщност малки модули, които разширяват функционалността на dselect. Всеки, както и вие самият можете да си напишете такъв модул.

Типичните налични методи са:

  1. multi_cd
  2. multi_nfs
  3. mounted
  4. floppy
  5. apt

Метод за достъп apt

Това е метод за достъп, който е базиран на стандартната работа на командата apt(8). Целта е достъпът и управлението на пакетите да бъде унифициран, без значение дали се използва apt(8) или dselect(8). И понеже dselect(8) и apt(8) записват информацията за наличните пакети и техните зависимости в различни файлове, е силно препоръчително в dselect(8) да се използва метод за достъп apt(8), с цел информацията между двете да си съвпада (единствената съществена причина за това е да се улесни работата на администраторите и да не се извлича два пъти информация от оригиналния източник).

Когато изберете метод apt(8) ви се предлага един диалог, в който можете да промените конфигурацията на apt файла sources. Там можете да изберете мястото, където се намират пакетите и как да се достъпват според правилата на apt. Менюто е точен еквивалент на извикването на командата apt-setup(8). Конфигурацията на достъпа се намира във файла /etc/apt/sources.list ( sources.list(5)). Ако имате proxy то трябва да го зададете по правилата на apt (или lynx) чрез променлива:

     # export http_proxy=http://gateway:3128/
     # dselect

Метод за достъп multi_cd

Това е мощен но вече сравнително стар метод за достъп до пакетите на debian. Основната му цел е да позволи инсталация на дистрибуция от един или няколко CDROM-а като например Debian Binary CD.

Когато започнете да го използвате ще бъдете запитани за директорията, в която се монтира CDROM-а, мястото на Debian дистрибуцията и на пакетите в нея.

Метод за достъп multi_nfs, mounted

Това са методи, чиято цел е да се опише, че пакетите са достъпни през монтирана през NFS или по друг начин директория на диска.

Метод за достъп floppy

Това е непрепоръчителен метод за инсталация на дистрибуцията от floopy или ZIP диск.

[U]pdate

Целта на това меню е да стартира процес, който да извлече от мястото, където се намират пакетите списък с техните имена и зависимости. Какво точно прави зависи и е специфично за всеки различен избран метод за достъп. Ако е избран препоръчителният метод за достъп apt, се стартира процес, който е еквивалентен на изпълнението на командата apt-get update. След приключване на изпълнението на apt-get update, dselect(8) изчита обновеният списък с пакетите на apt, и изгражда собствената си база с данни. В базата на dselect(8) се следят много по-сложни зависимости.

В типичните ситуации е рядкост често да се променя методът за достъп (менюто [A]ccess). Но е силно препоръчително при всяко стартиране на dselect да се извика поне веднъж [U]pdate, за да бъде сигурно, че информацията за пакетите е актуална. Това не се прави автоматично с единствената идея, че администраторът на машината може да не я е свързал в интернет или да не е сложил cdrom-ът с пакетите.

[S]elect

Това е менюто, в което се върши реалната работа по управлението на пакетите. След като е направен [U]pdate, за да сме сигурни, че информацията в базата с пакетите е актуална трябва да влезем тук.

След избиране на [S]elect се вижда една страница с кратка помощ как точно ще изглежда списъкът с пакетите и как да различим кои са нови, кои са инсталирани, за кои има по-нови версии и в кои има някакъв проблем. Също така с помощта на клавиша интервал може да се разходите и да разгледате останалата част от помощната страница, както и клавишите за достъп до функциите, които се предлагат. С клавиша Enter се влиза директно в списъка с пакетите.

Това, което е важно да се запомни е, че винаги, когато натиснете клавиша ``?'' ще бъде показана кратка помощ за клавишите и как се използва менюто като цяло.

Ако терминалната емулация ви е конфигурирана както трябва, то трябва да виждате всички пакети, за които dselect(8) знае от къде да ги извлече или са инсталирани на системата. Менюто изглежда горе долу така:

Click to see a bigger image

Пакетите са разделени на секции (стари, графични, инсталирани, свободни, платени и т.н.). Пред всяко име на пакет има 4 знака, които за инсталираните пакети изглеждат най-често като "*". Тези три знака определят какво е състоянието на пакета спрямо системата. Това се нарича EIOM. Или по точно:

Под E стои знак, който определя дали е имало грешка при инсталирането или достъпването на пакета. Ако тук пише "R" значи е имало сериозен проблем.

Под I стои знак, който определя дали пакетът е инсталиран вече. Знаците значат както следва:

Под O стои знак, който определя каква е била предишната ни директива/команда към пакета (например да се инсталира).

Под M стои знак, който определя текущата директива (последното, което сме избрали и което ще бъде изпълнено при [I]nstall). Знаците значат както следва:

Възможно е да желаете да виждате информацията за пакетите в по-подробен вид. Това се превключва чрез клавиша "V" - Verbose.

Основните клавиши, които трябва да се знаят:

[I]nstall

Това е менюто, което изпълнява зададените в Select команди. Ако се използва метод APT, тук се и изтриват зададените за изтриване пакети.

[C]onfigure

Това е менюто, което се опитва да конфигурира всички неконфигурирани пакети, или пакети, на които не са сработили инсталационните скриптове, чрез повторното им изпълнение.

[R]emove

Това е менюто, което изтрива зададените в [S]elect за изтриване пакети.

apt: Advanced Package Tool

От чисто потребителска гледна точка dpkg не е много удобен за употреба. Причината за това е, че почти винаги желаният пакет зависи от присъствието (да бъдат инсталирани) на други пакети. От своя страна тези пакети могат да зависят от други пакети. Всичко това може да превърне едно просто инсталиране на пакет в дълга и досадна рутина. Но това не е всичко. Възможно е всички тези пакети да бъдат разхвърляни на различни компактдискове, Интернет сайтове или места в локалната мрежа.

Решението на този проблем е пакетът apt, който изцяло стъпва върху dpkg за основните задачи по инсталиране и премахване на deb-файлове. Самото apt се грижи по доставката на тези файлове.

Основният конфигурационен файл на apt е sources.list(5). Той съдържа списък на всички места, наричани източници, откъдето apt да взема пакети. Всеки източник съдържа списък на пакети, които могат да се вземат от него. Така на разположение на apt стои едно голямо множество от пакети, които могат да бъдат инсталирани. Както беше казано и по-горе, пакетите могат да зависят от други пакети. Например пакет с програма на Perl ще зависи от пакета perl. Взимайки впредвид тези отношения между пакети, можем да си представим това множество от пакети като мислена мрежа от пакети. Цялата функционалност на apt се върти около поддържането на тази мрежа от пакети, така че инсталирането на пакет да доведе до инсталирането и на всички останали нужни пакети.

Практическа употреба

Конфигуриране

Преди всяка употреба на apt трябва се зададат източниците на пакети в sources.list(5). Във втората фаза на инсталацията на Debian, след рестартирането, се задават въпроси в тази насока, които редактират файла /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-cdrom add

С това се добавя по един ред в /etc/apt/sources.list за всеки компант-диск.

Поддържане на мрежата от пакети

Мрежата от пакети не е статична и непроменяща се с времето. Списъкът от пакети на всеки от източниците може да се мени. Затова тези списъци, а съответно и мрежата от пакети, трябва да се обновяват. Това се осъществява с командата

# apt-get update

Дори да използвате компактдисковете на стабилната дистрибуция на Debian, вие най-вероятно ще включите като източник security.debian.org, както е показано по-горе. Това е източник с пакети, т.нар. security updates, които са подновени след издаването на стабилната дистрибуция, защото правят системата уязвима на атаки. Този източник съдържа същите пакети с (в повечето случаи) същите версии, но подновени така, че да не застрашават сигурността на системата. Затова присъствието на източника е много важно, ако сте свързан към Интернет или локална мрежа. От само себе си се разбира, че от време на време трябва да обновявате мрежата от пакети, за да можете да "`виждате"' тези коригирани пакети.

Повече подробности могат да се намерят в страницата в сайта на Debian относно сигурността. В случай на нов коригиран пакет е достатъчно да изпълните

# apt-get update
# apt-get upgrade

Инсталиране и премахване на пакет

След като източниците са конфигурирани и мрежата от пакети е обновена, инсталирането на пакети се заключава в изпълнението на командата

# apt-get install xpdf kernel-package

В случая тази команда инсталира пакетите xpdf и kernel-package, инсталирайки допълнително всички нужни пакети.

Премахването на пакет също е лесно:

# apt-get remove xpdf

За съжаление това няма премахне пакетите, които са били инсталирани само за да може xpdf да се инсталира.

Търсене на пакет

Пакети могат да се търсят лесно, ако се използват подбрани ключови думи, които да се търсят чрез apt-cache(8) в описанието на всички пакети. Пример за търсене е следната команда:

$ apt-cache search pdf viewer

Информация за пакет

Командата apt-cache(8) може да се използва и за тази цел:

$ apt-cache show xpdf

aptitude: Удобният начин

Освен конфигурирането почти всички действия на apt-get(8) могат да се извършат и с интерактивната програма aptitude. Употребата й е препоръчителна за новаци.

synaptic: Друг графичен начин

Освен конфигурирането почти всички действия на apt-get(8) могат да се извършат и с интерактивната програма synaptic. Употребата й е препоръчителна за новаци.


Nikola Antonov 2004-10-31