APT HOWTO Gustavo Noronha Silva kov@debian.org 1.7 - August 2001 Този документ има за цел да бъде в помощ на потребителя за разбирането механизма на работа на инструмента за управление на пакети APT, да улесни работата на новите потребители и да задълбочи познанията на напредналите Copyright © 2001 Gustavo Noronha Silva

Този документ е лицензиран под GNU FDL (Free Documentation License). Написан е с надеждата, че ще е полезен на потребителите, но не се осигурява никаква гаранция, използвайте го на собствен риск. Въведение

В началото имаше само .tar.gz. Потребителите трябваше да компилират всяка програма която искаха да ползват на своите GNU/Linux системи. Когато Дебиан беше създаван, се счете за необходимо, че трябва да има система за управление на пакетите. Беше наречена dpkg, и бе създадена малко преди Red Hat да решат да създадат своята `rpm' система.

Една дилема беше обхванала разработчиците на GNU/Linux. Те се нуждаеха от бърз, практичен и ефикасен начин за инсталиране на пакети, който ще управлява зависимостите автоматично и ще се грижи за конфигурационните файлове при надграждане. Отново Дебиан посочи пътя създавайки APT (Advanced Packaging Tool), който по-късно беше пренесен от Conectiva за използване с rpm и беше приспособен от някои други дистрибуции.

Този документ не адресира apt-rpm, познат като порта на APT от Conectiva, но допълнения с тази цел са добре дошли. Базова конфигурация Файлът /etc/apt/sources.list

Като част от своята работа, APT използва файл в който се съхраняват източниците от които ще бъдат придобити пакетите. Това е файла /etc/apt/sources.list .

Данните въвеждани в този файл обикновено са във формата: deb http://site.http.org/debian distribution section1 section2 section3 deb-src http://site.http.org/debian distribution section1 section2 section3

Използвани са просто фиктивни данни, които реално в този си вид не могат да бъдат ползвани, т.е. трябва да ги замените с истински. Първата дума на всеки ред (deb или deb-src) показва типа на архива: бинарен пакет (deb) - това е предварително компилиран пакет. Обикновенн се инсталират такива. сорс пакет (deb-src) - оригиналния сорс на програмата плюс Debian control file (.dsc) и diff.gz съдържащ необходимите промени за "дебианизирането" на програмата.

Обикновено ще намерите следното в sources.list (по подразбиране Дебиан идва с това съдържание): # See sources.list(5) for more information, especialy # Remember that you can only use http, ftp or file URIs # CDROMs are managed through the apt-cdrom tool. deb http://http.us.debian.org/debian stable main contrib non-free deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free deb http://security.debian.org stable/updates main contrib non-free # Uncomment if you want the apt-get source function to work #deb-src http://http.us.debian.org/debian stable main contrib non-free #deb-src http://non-us.debian.org/debian-non-US stable non-US

Това са данните необходими за базовата инсталация на Дебиан. Първият ред с deb "сочи" към официалния архив, вторият към non-US архива и третият към архива на Дебиан за обновления свързани със сигурността.

Последните два реа се коментирани (започващи с `#' в началото), и ще бъдат игнорирани от apt-get. Това са deb-src редовете, "сочещи" към архива със сорс пакети. Махнете `#' в началото не реда ако желаете да изтеглите програмните сорсове за тестиране и прекомпилиране.

Файлът /etc/apt/sources.list може да съдържа няколко типа редове. APT "знае" как да се оправя с архиви от следните типове: http , ftp, file (локални файлове, примерно директория съдържаща монтирана ISO9660 файлова система) и ssh. Как да използваме APT локално

Понякога имате доста .deb пакети, които бихте искали да инсталирате чрез APT така, че зависимостите да бъдат автоматично разрешени.

За целта създайте директория и сложете .deb пакетите които искате да индексирате. Например: mkdir /root/debs

В директория /root, създайте празен файл с някакво име. Този файл (познат като "override" файл ) трябва да съществува в хранилището с пакетите, дори и празен (т.е. не е задължително да попълвате стойности в него): touch file

Вътре в този файл може да се дефинират опции които ще се използват с предимство пред тези идващи с пакета. Формата е: package priority section

package - името на пакета priority - приоритет (със стойности low, medium или high) section - секцията на която принадлежи.

В /root директорията изпълнете: dpkg-scanpackages debs file | gzip > debs/Packages.gz където file е "override" файла, а командата ще генерира файла debs/Packages.gz който съдържа информация за пакетите, които ще бъдат инсталирани с АPT. За да използвате пакетите най-накрая добавете: deb file:/root debs/ След което можем да ползваме APT както обикновено. Също така може да се генерира сорс хранилище. Използва се същата процедура, но трябва да имате файловете .orig.tar.gz, .dsc и .diff.gz в директорията и трябва да използвате Sources.gz вместо Packages.gz. Използваната програмка също е различна, и тя е dpkg-scansources. Командата ще изглежда така: dpkg-scansources debs | gzip > debs/Sources.gz Забележка: dpkg-scansources не се нуждае от "override" файл. Редът в sources.list е: deb-src file:/root debs/ Как да изберем огледален сайт, който да включим в sources.list: netselect

Често срещан въпрос при новите потребители. Има няколко начина за решаването му. По-напредналите може би позват скрипт с който измерват ping-а измежду различните огледални сайтове. Но програмата netselect прави същото:

Инсталирайте си netselect: apt-get install netselect Изпълнявайки я без параметри, ще видим help-а й. Като параметри могат да й се подадат лист от хостове, разделени с интервал, които ще бъдат "оценени" с цел избиране на най-изгодния за вас. Класират се по ping time и брой hops необходим за достигане на хоста. Пример: bash$ netselect ftp.debian.org http.us.debian.org ftp.at.debian.org download.unesp.br ftp.debian.org.br 365 ftp.debian.org.br bash$ Което означава, че от изброените хостове, подадени като параметри на netselect, ftp.debian.org.br е най-изгодния, с резултат 365. Забележка: За всяка отделна машина ще се получат различни резултати, в зависимост от топографията на мрежата и как машината е присъединена към нея. Така, че всеки трябва да изпълни netselect от своята машина за да получи конкретните за себе си резултати.

Ако подадем -vv като параметър, netselect ще изведе лист на всички хостове които сме подали за класираме. Пример: bash$ netselect -vv ftp.debian.org http.us.debian.org ftp.at.debian.org download.unesp.br ftp.debian.org.br ftp.debian.org 499 ms 22 hops 77% ok ( 7/ 9) [ 2054] http.us.debian.org 366 ms 21 hops 100% ok (10/10) [ 1134] ftp.at.debian.org 396 ms 25 hops 90% ok ( 9/10) [ 1540] download.unesp.br 9999 ms 30 hops 0% ok ftp.debian.org.br 91 ms 11 hops 80% ok ( 8/10) [ 365] 365 ftp.debian.org.br bash$ Разултатът е същия както и по-горе, но се изписва и статитиката и за другите хостове. Втората колона е разчетното ping време (в ms), третата е броя hops между ващата машина и хоста, четвъратата е процента загубени пакети, и в последната е резултата (колкото по-малък, толкова по-добре) Забележка: списък на огледалните хостове може да намерите във файла README.mirrors.txt в директория debian/ на всеки огледален сайт (например ) Добавяне на CD-ROM в sources.list

Ако предпочитате да инсталирате или надграждате пакети от CD-ROM използвйки APT, тогава той трябва да се добави във файла sources.list . Използвайте програмата apt-cdrom за да го добавите: apt-cdrom add като трябва да имате Debian CD-ROM диска поставен в CD-ROM устройството. Програмата ще монтира CD-ROM-а, и ако е валиден Debian CD диск ще бъде потърсена информация за пакетите на него. Програмата има следните опции, които може да използвате при нетрадиционни конфигурации: -h - program help -d directory - CD-ROM mount point -r - Rename a recognized CD-ROM -m - No mounting -f - Fast mode, don't check package files -a - Thorough scan mode Пример: apt-cdrom -d /home/kov/mycdrom add Също така можете да разпознаете вашия CD-ROM, без да го добавяте в листинга: apt-cdrom ident Забележка: програмата ще работи само ако CD-ROM-а е конфигуриран в /etc/fstab. Управление на пакетите Осъвременяване на листинга с наличните пакети

Пакетната система използва база данни в която съхранява записи за това кои пакети са инсталирани и кои не. Програмата apt-get използва тази база данни за да "разбере" как да инсталира пакетите поискани от потребителя, и да определи кои допълнителни пакети трябва да се инсталират така, че избраният пакет да работи правилно.

За да осъвремените този листинг, изпълнете apt-get update . Тази команда ще използва листинга на пакетните архиви който е зададен в /etc/apt/sources.list; виж /etc/apt/sources.list file, Виж за повече информация.

Добра идея е да стартирате тази команда от време на време, за да добивате информация за евентуалните обновления на пакетите. Инсталиране на пакети

Вече идваме и до самото инсталиране на пакети. Необходимо е само да се посочи името на пакета. Например, може да изпълните: apt-get install xchat APT ще претърси своята база данни за последната версия на този пакет и ще я изтегли от съответния архив указан в sources.list. В случай, че този пакет зависи от друг -- както е в случая -- APT ще провери зависимостите и ще инсталира необходимите пакети. Пример: [root]@[/] # apt-get install nautilus Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 0 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 17.2MB will be used. Do you want to continue? [Y/n] Пакетът nautilus зависи от показаните споделени библиотеки, така че APT ще ги изтегли от архива. Ако сте указали иманата на пакетите съдържащи тези библиотеки в командния ред на apt-get , APT няма да ви попита дали искате да продължите с инсталацията, а ще сметне че искате да инсталирате всички тези пакети.

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

Следните опции на apt-get могат да ви бъдат полезни: -h This help text. -d Download only - do NOT install or unpack archives -f Attempt to continue if the integrity check fails -s No-act. Perform ordering simulation -y Assume Yes to all queries and do not prompt -u Show a list of upgraded packages as well Може да посочите множество пакети за инсталиране, като ги подадете един ред. Изтеглените пакети се съхраняват в директорията /var/cache/apt/archives за да бъдат инсталирани по-късно.

Можете да укажете на същия команден ред пакетите които искате да премахнете. Просто поставете '-' след името на пакета за който искате да направите това. Пример: [root]@[/] # apt-get install nautilus gnome-panel- Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 The following packages will be REMOVED: gnome-applets gnome-panel gnome-panel-data gnome-session The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 2594kB will be used. Do you want to continue? [Y/n] Виж за повече информация относно премахването.

Ако по някакъв начин повредите инсталиран пакет, или просто искате файловете от този пакет да бъдат преинсталирани със същата версия, тогава ползвайте опцията --reinstall . Пример: [root]@[/] # apt-get --reinstall install gdm Reading Package Lists... Done Building Dependency Tree... Done 0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1 not upgraded. Need to get 0B/182kB of archives. After unpacking 0B will be used. Do you want to continue? [Y/n] Версията на APT по време на създаването на този документ е 0.5.3, в текущата версия на Debian `unstable' (sid). Ако имате инсталирана тази версия тогава ще разполагате с допълнителна функционалност по отношение на това от коя дистрибуция да бъде инсталиран вашия пакет, формата е apt-get install package/distribution или apt-get install package=version. Например: apt-get install nautilus/unstable по този начин ще инсталирате nautilus от `unstable' дистрибуцията дори в момента да работите на `stable'. Стойностите за дистрибуцията са stable, testing, и unstable.

Важно забележка: `unstable' дистрибуцията на Дебиан съдържа последните "качени" пакети. В тази дистрибуция се правят голяма част от промените в проблемните пакети, касаещи няколко други пакета или системата като цяло. По тази причина, тази дистрибуция не би следвало да се ползва от начинаещи потребители, или такива които се нуждаят от доказаната стабилност на `stable' дистрибуцията, защото `unstable' е първия етап от разработката и проблеми най-вероятно ще има. Дистрибуцията `testing' е по-стабилно състояние от `unstable', т.е. повечето от пакети за вече преминали някакъв период на тестиране и тестовете продължават така, че когато наистина всичко е изчистено да преминат в `stable' дистрибуцията. Премахване на пакети

Ако не искате повече да ползвате някой пакет, можете да го премахнете от системата използвайки APT. Просто изпълнете: apt-get remove package . Например: [root]@[/] # apt-get remove gnome-panel Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: gnome-applets gnome-panel gnome-panel-data gnome-session 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded. Need to get 0B of archives. After unpacking 14.6MB will be freed. Do you want to continue? [Y/n] Както се вижда от примера, APT също се грижи за премахването на пакетите които зависят от пакета който искате да премахнете. Няма начин да премахнете пакет чрез APT без също така да премахнете и тези пакети които зависят от него.

Ползвайки apt-get както е посочено по-горе ще премахне пакетите, но техните конфигурационни файлове (ако има такива) ще останат в системата. За пълно премахване на пакета заедно с неговите конфигурационни файлове изпълнете: [root]@[/] # apt-get --purge remove gnome-panel Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded. Need to get 0B of archives. After unpacking 14.6MB will be freed. Do you want to continue? [Y/n] Забележка: Символът '*' пред имената на пакетите показва, че конфигурационните файлове на всеки от премахваните пакети също ще бъдат премахнати.

Точно както в случая с install , можете да укажете инвертиращо поведение за remove на даден пакет чрез символа '-' след името му, в този случай на премахване ако добавите '+' след името на даден пакет, то той ще бъде инсталиран вместо да бъде премахнат. [root]@[/] # apt-get --purge remove gnome-panel nautilus+ Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 nautilus The following packages will be REMOVED: gnome-applets* gnome-panel* gnome-panel-data* gnome-session* The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 2594kB will be used. Do you want to continue? [Y/n] Забележете, че apt-get показва списък на extra packages които ще бъдат инсталирани (това са пакетите които трябва да се инсталират за нормалното функциониране на желания за инсталиране от нас пакет), тази които ще бъдат премахнати, и тези които ще бъдат инсталирани (отново включвайки extra packages). Надграждане на пакети

Възможността за надграждането на пакетите е може би най-големия успех на системата APT. Това става просто с командата: apt-get upgrade . Може да използвате тази възможност за надграждане на пакетите в размките на същата дистрибуция, а така също и да надградите до нова дистрибуция, но за последното командата apt-get dist-upgrade е за предпочитане; виж . Също така е удобно тази команда да се използва с опцията -u. Това указва на APT да покаже пълен списък на пакетите които ще бъдат надградени. Без тази опция ще надграждате "на сляпо". APT ще изтегли последните версии на всеки пакет и ще ги инсталира в подходящия ред. Важно е винаги да изпълнявате apt-get update преди това. Виж . Пример: [root]@[/] # apt-get -u upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages have been kept back cpp gcc lilo The following packages will be upgraded adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded. Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used. Do you want to continue? [Y/n] Процесът е доста изчистен. Забележете, че в първите няколко реда, apt-get ни уведомява, че няколко пакета ще бъдат kept back. Това означава, че те са новите версии на тези пакети които няма да бъдат инсталирани по някаква причина. Възможни причини са broken dependencies (пакет(и) от който този пакет зависи но няма никаква налична версия за изтегляне) или new dependencies (пакетът ще зависи от по-нови пакети от последната версия).

Няма чисто решение в първия случай. За вторият случай, е достатъчно да изпълните apt-get install за въпросният пакет, като това ще изтегли неговите зависимости. Дори по-чистото решение е да ползвате dist-upgrade. Виж . Надграждане до по-нова версия

Тази възможност на APT ви позволява да надградите цялата Debian система наведнъж, от Internet или от ново CD (закупено или изтеглено като ISO image).

Също така се използва когато са направени промени във връзките между инсталираните пакети. Чрез apt-get upgrade, тези пакети ще останат недокоснати (kept back).

Например, да предположим, че използвате ревизия 0 на стабилната версия на Дебиан и имате CD с ревизия 3, тогава можете да използвате APT за да надградите вашата система от новото CD. За да направите това изпълнете apt-cdrom (виж ) за да добавите CD-то в /etc/apt/sources.list и после изпълнете apt-get dist-upgrade.

Важно е да знаете, че APT винаги търси най-новата версия на пакетите. За това ако в /etc/apt/sources.list има указан архив където има по-нова версия на пакета от тази на CD-то, тогава APT би изеглил пакета от там.

В примера ползван в , се вижда, че някои пакети са kept back. Ще разрешим този проблем сега чрез dist-upgrade: [root]@[/] # apt-get -u dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Done The following NEW packages will be installed: cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages have been kept back lilo The following packages will be upgraded adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded. Need to get 0B/7098kB of archives. After unpacking 3118kB will be used. Do you want to continue? [Y/n] Забележете, че сега пакетът ще бъде надграден, и новите пакети също ще бъдат инсталирани ( new dependencies на пакетите ). Също така забележете, че lilo е все още kept back. Вероятно има малко по-сериозен проблем от new dependency. Можем да разберем изпълнявайки: [root]@[/] # apt-get -u install lilo Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages will be REMOVED: debconf-tiny The following NEW packages will be installed: cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages will be upgraded lilo 1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded. Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used. Do you want to continue? [Y/n] Както се вижда, lilo има new conflict с пакета debconf-tiny , което означава, че не може да бъде инстаиран или надграден без премахването на debconf-tiny. Използване на APT с dselect

dselect е програма която помага на потребителите на Дебиан да селектират пакетите за инсталация. Изглежда някакси усложнен и досаден, но с практиката се свиква с неговия console-based ncurses интерфейс.

Една от възможностите на dselect е, че знае как да интерпретира това, че Дебиан пакетите са маркирани като "recommending" , "suggesting" и т.н. Изпълнете `dselect' като root. Изберете 'apt' като access метод. Това не е задължително, но ако не ползвате CD ROM и искате да изтеглите пакети от Internet, това е най-добрия начин ползвайки dselect.

За да придобиете по-добро разбиране за използването на dselect, прочетете документацията на dselect на страниците на Дебиан .

След като сте направили вашата селекция чрез dselect, изпълнете: apt-get -u dselect-upgrade и както в примера: [root]@[/] # apt-get -u dselect-upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: lbxproxy The following NEW packages will be installed: bonobo console-tools-libs cpp-3.0 enscript expat fingerd gcc-3.0 gcc-3.0-base icepref klogd libdigest-md5-perl libfnlib0 libft-perl libgc5-dev libgcc300 libhtml-clean-perl libltdl0-dev libsasl-modules libstdc++3.0 metamail nethack proftpd-doc psfontmgr python-newt talk tidy util-linux-locales vacation xbill xplanet-images The following packages will be upgraded debian-policy 1 packages upgraded, 30 newly installed, 1 to remove and 0 not upgraded. Need to get 7140kB of archives. After unpacking 16.3MB will be used. Do you want to continue? [Y/n] сравнете с това което видяхме когато изпълнихме apt-get dist-upgrade на същата система: [root]@[/] # apt-get -u dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Done The following packages will be upgraded debian-policy 1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 421kB of archives. After unpacking 25.6kB will be freed. Do you want to continue? [Y/n] Забележете, че многоот пакетите от горния пример се инсталират защото други пакети ги "препоръчват" ("suggested" or "recommended" them). Други ще бъдат инсталирани или премахнати (в случая lbxproxy, например) за селектирането (избора) който направихме чрез dselect. Dselect е много мощен инструмент ползван в комбинация с APT. Как да разбера как се казва пакета?

Има някои front-end програми за системата APT които улесняват добиването с листинг на пакетите които са в наличност за инсталация или са вече инсталирани, както и да в коя секция е пакета, какъв приоритет има, описание и т.н.

Но... нашата цел сега е да научим как да ползваме само APT. Така, че как може да се разбере името на пакета който искаме да инсталираме?

Имаме няколко възможности за решаването на тази задача. Ще започнем с apt-cache. Тази програма се използа от системата на APT за управление на базата си данни. Ще направим кратък преглед на някои от нейните практически приложения. Откриване името на пакета

Например, да предположим, че изкате да се върнете назад във времето в добрите стари дни на atari 2600. Бихте искали да използвате APT за да инсталирате atari емулатор, и след това да изтеглите някой игри. Тогава може да направите следното: [root]@[/] # apt-cache search atari atari-fdisk-cross - Partition editor for Atari (running on non-Atari) circuslinux - The clowns are trying to pop balloons to score points! madbomber - A Kaboom! clone tcs - Character set translator. atari800 - Atari emulator for svgalib/X/curses stella - Atari 2600 Emulator for X windows xmess-x - X binaries for Multi-Emulator Super System Намираме, че няколко пакета имат връзка с това което търсим, дори имат и кратко описание. За да се сдобием с повече информация за дадените пакети можем да изпълним: [root]@[/] # apt-cache show stella Package: stella Priority: extra Section: non-free/otherosfs Installed-Size: 830 Maintainer: Tom Lear <tom@trap.mtview.ca.us> Architecture: i386 Version: 1.1-2 Depends: libc6 (>= 2.1), libstdc++2.10, xlib6g (>= 3.3.5-1) Filename: dists/potato/non-free/binary-i386/otherosfs/stella_1.1-2.deb Size: 483430 MD5sum: 11b3e86a41a60fa1c4b334dd96c1d4b5 Description: Atari 2600 Emulator for X windows Stella is a portable emulator of the old Atari 2600 video-game console written in C++. You can play most Atari 2600 games with it. The latest news, code and binaries for Stella can be found at: http://www4.ncsu.edu/~bwmott/2600 Извеждат се някои детайли за пакета който искате (не искате) да инсталирате, заедно с пълното му описание. Ако пакета е вече инсталиран на вашата система и това е негова по-нова версия, вие ще видите информация за двете версии. Например: [root]@[/] # apt-cache show lilo Package: lilo Priority: important Section: base Installed-Size: 271 Maintainer: Russell Coker <russell@coker.com.au> Architecture: i386 Version: 1:21.7-3 Depends: libc6 (>= 2.2.1-2), debconf (>=0.2.26), logrotate Suggests: lilo-doc Conflicts: manpages (<<1.29-3) Filename: pool/main/l/lilo/lilo_21.7-3_i386.deb Size: 143052 MD5sum: 63fe29b5317fe34ed8ec3ae955f8270e Description: LInux LOader - The Classic OS loader can load Linux and others This Package contains lilo (the installer) and boot-record-images to install Linux, OS/2, DOS and generic Boot Sectors of other OSes. . You can use Lilo to manage your Master Boot Record (with a simple text screen) or call Lilo from other Boot-Loaders to jump-start the Linux kernel. Package: lilo Status: install ok installed Priority: important Section: base Installed-Size: 190 Maintainer: Vincent Renardias <vincent@debian.org> Version: 1:21.4.3-2 Depends: libc6 (>= 2.1.2) Recommends: mbr Suggests: lilo-doc Description: LInux LOader - The Classic OS loader can load Linux and others This Package contains lilo (the installer) and boot-record-images to install Linux, OS/2, DOS and generic Boot Sectors of other OSes. . You can use Lilo to manage your Master Boot Record (with a simple text screen) or call Lilo from other Boot-Loaders to jump-start the Linux kernel. Забележете, че първият в листа е в наличност (за инсталиране), а вторият е вече инсталиран. За по-обща информация относно даден пакет използвайте: [root]@[/] # apt-cache showpkg penguin-command Package: penguin-command Versions: 1.4.5-1(/var/lib/apt/lists/download.sourceforge.net_debian_dists_unstable_main_binary-i386_Packages)(/var/lib/dpkg/status) Reverse Depends: Dependencies: 1.4.5-1 - libc6 (2 2.2.1-2) libpng2 (0 (null)) libsdl-mixer1.1 (2 1.1.0) libsdl1.1 (0 (null)) zlib1g (2 1:1.1.3) Provides: 1.4.5-1 - Reverse Provides: И просто разберете от кои пакети зависи той: [root]@[/] # apt-cache depends penguin-command penguin-command Depends: libc6 Depends: libpng2 Depends: libsdl-mixer1.1 Depends: libsdl1.1 Depends: zlib1g Като заключение, разполагаме с няколко инструмента които можем да използваме за намирането на името на пакета. Ползване на dpkg за откриване името на пакета

Един от начините да разберем името на пакета е ако се знае името на някой файл съдържащ се в този пакет. Например, да намерим името на пакета който осигурява даден ".h" файл нужен ни за компилацията: [root]@[/] # dpkg -S stdio.h libc6-dev: /usr/include/stdio.h libc6-dev: /usr/include/bits/stdio.h perl: /usr/lib/perl/5.6.0/CORE/nostdio.h или: [root]@[/] # dpkg -S /usr/include/stdio.h libc6-dev: /usr/include/stdio.h За да разберем имената на някои пакети инсталирани на нашата система ( за да поразчистим например излишните ни от тях:): [root]@[/] # dpkg -l | grep mozilla ii mozilla-browse 0.8-0.1 Mozilla Web Browser Проблемът на тази команда е, че може да не изпише пълното име на пакета, или както е в горния пример пълното име на пакета е mozilla-browser. Тогава можем да ползваме описанието на пакета, или част от него, за да разберем пълното име. Пример: [root]@[/] # apt-cache search "Mozilla Web Browser" mozilla-browser - Mozilla Web Browser Как да инсталираме пакети "при поискване"

Предеставете си, че компилирате някакъв код и изведнъж : Бум! Излиза грешка защото се изисква да имате някой си .h файл , а вие го нямате. Програмата auto-apt би могла да ви спаси от такива ситуации. Тя ще попита за да инсталира пакет (пакети) ако от тях има нужда, спирайки сътветния процес и продължавайки след като необходимия пакет (пакети) е инсталиран.

Това което се прави е: auto-apt run command Където `command' е командата която трябва да бъде изпълнена и евентуално, ще поиска някой файл който го нямаме в системата. Например: auto-apt run ./configure

Ако е необходимо ще бъдете попитани за потвърждение на инсталирането на допълнителните пакети като apt-get ще бъде извикан автоматично. Ако ползвате X, тогава auto-apt ще стартира с графичен интерфейс, заменяйки текстовия си такъв, който е и по подразбиране. Auto-apt ползва база данни която трябва да е up-to-date (осъвременена) за да има ефективност. Това става с командите auto-apt update, auto-apt updatedb и auto-apt update-local. Работа със сорс пакети Изтегляне на сорс пакета

Нещо обичайно е в света на отворения софтуер да се изучава сорс кода и дори да се правят корекции. За да направите това ще трябва да изтеглите сорса на програмата. Системата APT осигурява лесен начин за получаването на сорса на програмите включени в дистрибуцията, включително и всички файлове необходими за се създаде .deb пакет на програмата.

Тази възможност също така може да се използва за да се адаптират най-новите версии на дадена програма от 'unstable' дистрибуцията, примерно за ползване със 'stable' . Компилирането на пакет за 'stable' ще генерира .debs със зависимости приспособени за съответстват на пакетите налични в тази дистрибуция.

За целта трябва да имаме, deb-src ред във файла /etc/apt/sources.list и той трябва да "сочи" към 'unstable'. Виж .

За да изтеглите сорс пакета изпълнете: apt-get source packagename Тази команда ще изтегли три файла: a .orig.tar.gz, .dsc и .diff.gz. В случай, че пакета е направен специялно за Дебиан, последния файл няма да бъде изтеглен, а първия обикновено няма да има "orig" в своето име.

Файлът .dsc се ползва от dpkg-source за разпакетирането на сорс пакета в директория packagename-version. За всеки изтеглен сорс пакет има директория debian/ която съдържа файловете необходими за създаването на .deb пакет (т.е. бинарен пакет).

Ако искате компилацията да започне автоматично когато пакета е изтеглен добавете -b в командния ред: apt-get -b source packagename Ако решите да не създавате .deb по време на изтеглянето, тогава може да го направите по-късно изпълнявайки: dpkg-buildpackage -rfakeroot -uc -b от директорията която е била създадена за пакета след изтеглянето му.

Има разлика между source метода на apt-get и другите му методи. Методът source може да се ползва от обикновените потребители, без да се нуждаят от root права. Файловете се изтеглят и съхраняват в директорията от която командата apt-get source package е била изпълнена. Пакети необходими за компилацията на сорс пакет

Обикновено, някой специфични заглавни файлове ( headers ) и споделени библиотеки (shared libraries) трябва да са в наличност за да се компилира дадения пакет. Всички .deb пакети имат поле в техните контрол файлове (control files) наречено 'Build-Depends:' което показва кои допълнителни пакети са необходими така, че пакета да може да бъде компилиран успешно от сорса.

APT разполага с начин за изтегляне на тези пакети. Просто изпълнете apt-get build-dep package, където `package' е името на пакета който ще компилирате. Например: [root]@[/] # apt-get build-dep gmc Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: comerr-dev e2fslibs-dev gdk-imlib-dev imlib-progs libgnome-dev libgnorba-dev libgpmg1-dev 0 packages upgraded, 7 newly installed, 0 to remove and 1 not upgraded. Need to get 1069kB of archives. After unpacking 3514kB will be used. Do you want to continue? [Y/n] Пакетите които ще бъдат инсталирани са пакетите необходими за успешната компилация на gmc. Важно е да се отбележи, че тази команда няма да "търси" сорс пакета на програмата за да бъде компилирана. Ще трябва след това да изпълните apt-get source. Кои дистрибуции поддържат APT?

Ето някои дистрибуции които ползват APT:

Debian GNU/Linux () - APT е бил разработен от проекта Дебиан за целите на тази дистрибуция

Conectiva () - Това е първата дистрибуция която е създала порт на APT за да се ползва и rpm

Mandrake ()

PLD ()

Vine () Как да се "разправим" с грешките Общи грешки

Много от грешките са причинени просто от невниманието на потребителите. Ето и списък на някои от най-често срещаните от тях.

Ако получите съобщение което изглежда така , при изпълнението на apt-get install package... Reading Package Lists... Done Building Dependency Tree... Done W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory) W: You may want to run apt-get update to correct these missing files E: Couldn't find package penguineyes забравили сте да изпълните apt-get update след като сте направили промени във файла /etc/apt/sources.list.

Ако грешката изглажда така: E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied) E: Unable to lock the administration directory (/var/lib/dpkg/), are you root? когато се опитвате някой метод на apt-get различен от source, тогава вие нямате root права, просто сте се логнали като обикновен потребител.

Има една грешка напомняща горната, която се получава когато изпълнявате едновременно две копия на apt-get, или дори когато се опитвате да изпълнявате apt-get докато има активен dpkg процес. Единствения метод който може да се ползва едновременно с другите е source. Ако процеса на инсталация прекъсне по време на своето изпълнение, и разберете, че вече не е възможно да инсталирате или премахвате пакети, опитайте с тези две команди: # apt-get -f install # dpkg --configure -a И след това опитайте отново с прекъсналата инсталация. Може да се наложи да изпълните няколко пъти втората от горните команди. Това е важно за тези които ползват `unstable'. Къде можем да намерим помощ?

Ако разберете че сте в ситуация в която не можете да разрешите, консултирайте се с обширната документация идваща с пакетната система на Дебиан. Маn страниците или --help опциите на командите могат да ви окажат необходимата помощ, така както и документация в директорията /usr/share/doc като например /usr/share/doc/apt.

Ако и това не помогне, опитайте да потърсите отговорите в архивите на пощенските списъци на Дебиан. Повече информация за тях можете да намерите на сайта на Debian: .

Имайте предвид, че тези ресурси за конкретно свързани с ползването на Дебиан; потребителите на други системи ще намерят по-добра поддръжка за своите системи в ресурсите предоставяни от тяхните дистрибуции. Благодарности

Едно голямо благодаря на моите приятели от проекта Debian-BR , и проекта Debian , които непрекъснато ми помагаха което ми даваше сили да продължа работа, както и помагайки ми за моята цел по спасяването на Света. :)

Съшо така искам да изкажа моите благодарности на CIPSGA за голямата помощ която оказаха на нашия проект и на всички отворени проекти които разпространяват велики идеи.

Специални благодарности на:

Pablo Lorenzzoni <spectra@debian.org> - за написването на секцията за netselect.

Steve Langasek <vorlon@netexpress.net> - за превода на английски.

Arnaldo Carvalho de Melo <acme@conectiva.com.br> - за допринасянето за списъка от други дистрибуции, включващи APT: Mandrake, PLD и Vine. Нови версии на този документ

Този документ беше създаден за проекта , с цел да се помощ в ежедневното ползване на Дебиан. Коментари могат да бъдат изпращани директно до мен: kov@debian.org.