Управление на пакетите под Linux – Част трета: Debian package management

Основи

Един Debian пакет съдържа изпълними файлове, библиотеки и документацията за съответното приложение. Обикновенно пакетите за този тип пакетен мениджър имат разширението “.deb“. Както и при RPM, пакетите за Debian могат да бъдат управлявани както и от пакетен мениджър от ниско ниво, така и от пакетни мениджъри от високо ниво. Мениджъра от ниско ниво се нарича dpkg. Някои от мениджърите от високо ниво са aptitude, apt, Synaptics, Adept, gdebi . Най-често използван е apt.

Приоритети на пакетите

Всеки пакет има зададен приоритет от екипа, поддържащ дадената дистрибуция. Приоритетите могат да бъдат:

  • Required – пакета е необходим за нормалното функциониране на системата. Такива пакети обикновенно са инструментите, които могат да бъдат използвани за възстановяване на системата или за отстраняване на дефекти. Пакети с подобен приоритет не трябва да бъдат премахвани от системата, понеже това може да доведе до нестабилност или дори до невъзможност за възстановяване на пакета с dpkg.
  • Important – пакети, които трябва да присъстват на всяка Unix-подобна система. Това са пакети, без които системата няма да работи нормално или да бъде стабилна. Тези пакети не включват големи приложения като X11. Тези пакети представляват само основната инфраструктура на системата.
  • Standard – основни потребителски инструменти. Тези пакети ще бъдат инсталирани по подразбиране, ако не е избрано нищо друго. В този приоритет не се поставят големи приложения, но се включва python интерпретатор и някои приложения като OpenSSH, Exim и RPC portmapper. В този приоритет също се включва и част от документацията на системата.
  • Optional – пакети, които може да бъдат инсталирани допълнително на системата. На пример X11 или потребителски приложения
  • Extra – пакети, които е възможно да бъдат в конфликт с други пакети с по-висок приоритет но е възможно да бъдат полезни или необходими ако потребителя знае какво представляват или има по-специални изисквания към системата.

Виртуални пакети

Виртуалните пакети представляват общо име за група пакети, които доставят близка по своята същност функционалност. Пример за такъв пакет е mail-transport-agent или build-essential пакета. Тъй като тези пакети предоставят повече от една програма за извършване на дадено действие, за да се определи коя точно програма ще се използва по подразбиране се задават т. нар. alternatives. Този механизъм ще бъде по-подробно разгледан в отделна статия.

Работа с dpkg

dpkg има много опции. Някои от тях са:

  • dpkg –help – показва списък с опциите и кратките им описания
  • dpkg –info <packet name>.deb – извежда контролната информация за даден файл
  • dpkg –install <packet name>.deb – инсталира deb пакет
  • dpkg –unpack <packet name>.deb – разархивира но не конфигурира пакета. Тази команда не винаги завършва с използваем пакет. Често се налага допълнително конфигуриране. Тази команда също така премахва всяка предварително инсталирана версия на пакета.
  • dpkg –configure <packet name> – конфигурира пакет, инсталиран чрез –unpack
  • dpkg –remove <packet name> – премахва инсталиран пакет, но не премахва конфигурационните файлове свързани с него
  • dpkg –purge <packet name> – премахва пакета и конфигурационните му файлове

Работа с apt

  • apt-get update – прочита базата данни на хранилищата за да определи кои пакети са налични, както и кои са техните версии.
  • apt-get install <packet name(s)> – инсталира един или повече пакети. За да инсталирате повече от един пакет трябва да изброите пакетите като списък от аргументи към командата. Имената на отделните пакети се отделят с интервал
  • аpt-get upgrade –  проверява за нови версии на пакетите и след това извършва системен ъпдейт
  • apt-get dist-upgrade – извършва ъпгрейд на дистрибуцията
  • apt-get remove <packet name> – премахва пакет, без конфигурационните му файлове
  • apt-get remove –purge <packet name> премахва пакета и конфигурационните му файлове
  • apt-get autoremove <packet name> – премахва пакета и неговите зависимости. Ако не се зададе пакет, ще се премахнат всички пакети, които не са зависимост за други пакети
  • apt-cache search <packet name> – търси пакет по зададен критерий
  • apt-cache show <packet name> – показва детайлна информация за даден пакет
  • apt-cache stats – показва информация аз пакетния кеш

В apt има easter egg. Ето как да го намерите:

root@workstation:/home/ivailo# apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||   
 *  /\---/\
    ~~   ~~   
...."Have you mooed today?"...

Работа с aptitude

aptitude е обвивка за apt, предназначена да работи в команден ред. Може да бъде изполдван директно като команда или да бъде стартиран самостоятелно. При самостоятелно изпълнение се стартира ncurses интерфейс с менюта и прозорци, за по-удобна работа. Ето и някои от комадните, които може да бъдат използвани с  aptitude:

  • aptitude install – инсталира пакет
  • aptitude remove – премахва пакет, без конфигурационните му фалйлове
  • aptitude purge – премахва пакет и конфигурационните му файлове
  • aptitude hold – заключва версията на пакета. Пакета няма да бъде променен при системен ъпгрейд
  • aptitude unhold – премахва заключването на версията на пакета
  • aptitude forbid-version – забранява ъпгрейд до определена версия на пакета
  • aptitude update – обновява пакетния кеш
  • aptitude search – търси пакет по зададен критерий
  • aptitude show – показва подробна информация за пакет

В aptitide също има скрит скрипт. Ето как да го намерите:

root@workstation:/home/ivailo# aptitude moo
There are no Easter Eggs in this program.
root@workstation:/home/ivailo# aptitude -v moo
There really are no Easter Eggs in this program.
root@workstation:/home/ivailo# aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
root@workstation:/home/ivailo# aptitude -vvv moo
Stop it!
root@workstation:/home/ivailo# aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
root@workstation:/home/ivailo# aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------

За да видите всички опции на пакетните мениджъри използвайте командата man <име на програмата> или ключа –help.

Някои по-особенни приложения

Как да забраним ъпгрейд на даден пакет:

1. dpkg

Направете експорт на списъка на пакетите:

dpkg --get-selections \* > selections.txt

Променете по подобен начин файла. От:

libc6                                           install

на

libc6                                           hold

Запазете промените със следната команда:

dpkg --set-selections < selections.txt

2. aptitude

aptitude hold <package name>
aptitude unhold <package name>

Как да инсталираме source пакет

Source пакетите не могат да бъдат реално инсталирани. Те само се разопаковат на системата, като по този начин се потготвят за компилиране. Обикновенно този тип пакети се помещават в същите хранилища, както и изпълнимите пакети. За да са достъпни този тип пакети е необходимо да се добави съответния “deb-src” ред в sources.list файла (този файл съдържа конфигурацията на хранилищата). За да инсталирате source пакет трябва да изпълните следната команда:

apt-get source <packet name>

За да инсталирате и всички библиотеки, които са необходими за компилирането на пакета е необходимо да изпълните:

apt-get build-dep <packet name>

Comments are closed.