Debian е една от многото дистрибуции на софтуер, които използват ядрото Linux. Нейната пакетна система е призната за една от най-развитите. Разбирането на пакетната система е важно, защото чрез нея се осъществява цялото управление на софтуера.
Пакетите имат различни състояния. В началото на всичко стои първоначалният сорс (upstream source). Това е сорсът на програмата, който не зависи не само от дистрибуцията, но и от операционната система. Задачата на дистрибуцията е да събере много такива първоначални сорсове в едно подредено цяло. За целта често се налагат леки промени в този първоначален сорс, които се наричат кръпки (patches, в .diff файлове). За да се образува пакет, освен кръпки е нужно и да се напишат правилата, по които да се образува дебиански пакет. И така, първоначалният сорс, кръпките и дебианските правила образуват дебиански сорс пакет, който се състои от следните файлове:
От един сорс пакет могат да се образуват един или повече пакета, готови за инсталиране (binary packages), които имат вида пакет_версия_архитектура.deb и затова се наричат също deb-файлове. Какво представлява формата на тези файлове ще намерите в deb(5) и на http://www.dpkg.org
След инсталирането си пакетът минава в ново състояние и става инсталиран пакет. От един файл-архив, какъвто е всъщност deb-файла, той се преобразува в множество файлове, записани на точно определени места във файловата система. Процесът на инсталиране не е само разархивиране на deb-файла. Той включва конфигуриране, както и интегриране в цялата система. Пример за интегриране е стартирането на сървъра apache веднага след инсталирането му. При премахване на пакет файловете му се изтриват, но без конфигурационните файлове, и пакетът се премахва като част от системата -- например apache се спира. Ако пакетът е само разархивиран, но не е конфигуриран или не е интегриран, той се нарича полуинсталиран пакет, отразявайки половинчатото му състояние. Счита се, че ако има полуинсталиран пакет в системата, то цялата пакетна система не е в нормално състояние и трябва да се поправи.
Точно тези процеси около инсталирането и премахването на пакети са част от всепризнатата гъвкавост и удобство на пакетната система на Debian. Това обаче съвсем не е всичко, защото apt добавя още удобства.
И така, пътят на пакетите протича така:
Пакетът в Debian, чрез който се управляват другите пакети, се нарича dpkg. С командата dpkg(8) могат да се инсталират конкретни deb-файлове, както и да се премахват инсталирани пакети. Конфигурирането и интегрирането също се включват в тези процеси. Освен тези процеси dpkg се грижи и за точното състояние на инсталираните и полуинсталираните пакети.
Обикновено няма да се налага да използвате dpkg(8), освен ако не поправяте състоянието на пакетната система или не сте изтеглили deb-файл от Интернет.
dselect, е стандартния за Debian механизъм за управление и инсталация на пакети. Въпреки че частично функционалността му може да бъде постигната чрез apt или директно чрез dpkg, dselect разполага с някой функционалности, които не трябва да бъдат пропускани.
Основното, което прави dselect(8) уникален като механизъм за управление на пакетите в debian, е това, че той присъства стандартно във всяка инсталация, предлага текстово меню базиран интерфейс, и следи зависимостите между пакетите много по-дълбоко, отколкото го прави apt, и това му помага да решава проблеми, които apt не е способен за сега да реши.
dselect трябва да се стартира от командният ред в текстов режим, с права на root и без никакви параметри. Макар че е възможно да се стартира от името и на друг потребител, при типично стандартно инсталирана дистрибуция няма да може да се прави нищо съществено с него. dselect разполага с няколко командни параметъра, но те се използват много рядко и като цяло управляват debug, или цветови режим.
Менюто на dselect се състои от няколко основни части:
Всяка буквичка от меню заградена в квадратни скоби [] може да бъде използвана за директен достъп чрез натискане на съответния клавиш от клавиатурата. Също така е възможно да се използва и съпоставеният номер пред името на реда, за директен достъп. В противен случай можете да използвате и да се позиционирате на съответното място чрез стрелките.
Въпреки че не е било винаги така, в съвременните Debian дистрибуции dselect(8) използва dpkg(8) и apt(8) като подсистеми за конкретно управление на пакетите, по макар и невидим за потребителите начин. Все пак е важно да се знае това, с цел в процеса на работата с дистрибуцията и управлението на пакети да се осъзнае нейната логика и свързаност между съставните и компоненти.
Когато управлявате инсталацията на пакети основните въпроси, на които трябва да си отговорите са:
Следователно, за да направим инсталация на пакет през dselect(,) трябва последователно да преминем и конфигурираме всяко едно от менютата - [A]ccess, [U]pdate, [S]elect, [I]nstall. От друга страна, ако веднъж сме конфигурирали [A]ccess например, и не желаем да променяме конфигурацията, не е нужно да преминаваме от там. Същото се отнася като цяло и за другите менюта.
Целта на това меню е да бъде конфигуриран и избран методът на достъп до мястото, където се намират пакетите, които желаем евентуално да инсталираме на системата. Веднъж конфигурирано, не е необходимо това меню да бъде достъпвано повече (освен, ако не желаете да направите някаква промяна).
В съвременния dselect(8) след избиране на [A]ccess следва да посочите метод на достъп до пакетите. Възможностите са много, поради факта, че методите са всъщност малки модули, които разширяват функционалността на dselect. Всеки, както и вие самият можете да си напишете такъв модул.
Типичните налични методи са:
Метод за достъп 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 диск.
Целта на това меню е да стартира процес, който да извлече от мястото, където се намират пакетите списък с техните имена и зависимости. Какво точно прави зависи и е специфично за всеки различен избран метод за достъп. Ако е избран препоръчителният метод за достъп apt, се стартира процес, който е еквивалентен на изпълнението на командата apt-get update. След приключване на изпълнението на apt-get update, dselect(8) изчита обновеният списък с пакетите на apt, и изгражда собствената си база с данни. В базата на dselect(8) се следят много по-сложни зависимости.
В типичните ситуации е рядкост често да се променя методът за достъп (менюто [A]ccess). Но е силно препоръчително при всяко стартиране на dselect да се извика поне веднъж [U]pdate, за да бъде сигурно, че информацията за пакетите е актуална. Това не се прави автоматично с единствената идея, че администраторът на машината може да не я е свързал в интернет или да не е сложил cdrom-ът с пакетите.
Това е менюто, в което се върши реалната работа по управлението на пакетите. След като е направен [U]pdate, за да сме сигурни, че информацията в базата с пакетите е актуална трябва да влезем тук.
След избиране на [S]elect се вижда една страница с кратка помощ как точно ще изглежда списъкът с пакетите и как да различим кои са нови, кои са инсталирани, за кои има по-нови версии и в кои има някакъв проблем. Също така с помощта на клавиша интервал може да се разходите и да разгледате останалата част от помощната страница, както и клавишите за достъп до функциите, които се предлагат. С клавиша Enter се влиза директно в списъка с пакетите.
Това, което е важно да се запомни е, че винаги, когато натиснете клавиша ``?'' ще бъде показана кратка помощ за клавишите и как се използва менюто като цяло.
Ако терминалната емулация ви е конфигурирана както трябва, то трябва да виждате всички пакети, за които dselect(8) знае от къде да ги извлече или са инсталирани на системата. Менюто изглежда горе долу така:
Пакетите са разделени на секции (стари, графични, инсталирани, свободни, платени и т.н.). Пред всяко име на пакет има 4 знака, които за инсталираните пакети изглеждат най-често като "*". Тези три знака определят какво е състоянието на пакета спрямо системата. Това се нарича EIOM. Или по точно:
Под E стои знак, който определя дали е имало грешка при инсталирането или достъпването на пакета. Ако тук пише "R" значи е имало сериозен проблем.
Под I стои знак, който определя дали пакетът е инсталиран вече. Знаците значат както следва:
Под O стои знак, който определя каква е била предишната ни директива/команда към пакета (например да се инсталира).
Под M стои знак, който определя текущата директива (последното, което сме избрали и което ще бъде изпълнено при [I]nstall). Знаците значат както следва:
Възможно е да желаете да виждате информацията за пакетите в по-подробен вид. Това се превключва чрез клавиша "V" - Verbose.
Основните клавиши, които трябва да се знаят:
Това е менюто, което изпълнява зададените в Select команди. Ако се използва метод APT, тук се и изтриват зададените за изтриване пакети.
Това е менюто, което се опитва да конфигурира всички неконфигурирани пакети, или пакети, на които не са сработили инсталационните скриптове, чрез повторното им изпълнение.
Това е менюто, което изтрива зададените в [S]elect за изтриване пакети.
От чисто потребителска гледна точка 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
Освен конфигурирането почти всички действия на apt-get(8) могат да се извършат и с интерактивната програма aptitude. Употребата й е препоръчителна за новаци.
Освен конфигурирането почти всички действия на apt-get(8) могат
да се извършат и с интерактивната програма synaptic. Употребата
й е препоръчителна за новаци.