Създаване и управление на локално apt-хранилище за начинаещи http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=devs&key=348385951 Цел на настоящата статия е да запознае напълно незапознатите или начинаещите потребители на Debian GNU/Linux с някои от възможностите за управление на софтуера, специфични за тази дистрибуция. Колкото и странно да звучи на някои, ако искате да имате винаги възможно най-актуалните версии на софтуера за Linux, най-лесният път към това е използването на Debian. Противно на общоприетото схващане, тази дистрибуция се снабдява най-пъргаво с всички нови програми и ви предоставя най-лесния начин за тяхното управление с помощта на серията инструменти, обединени под общото название apt. Добре е известно, че Debian се дели на три - да ги наречем условно - издания: stable, testing и unstable. В stable влиза проверен от времето (и хакерите) софтуер, на който можете да разчитате за сериозни задачи, изискващи максимална сигурност и стабилност. Логично е, софтуерът в stable да е по-старичък. Официалните ISO-имиджи със stable можете да изтеглите от интернет и с тяхна помощ да си направите една базова инсталация, която впоследствие да надградите и актуализирате до testing, където влизат по-нови неща, подлежащи на усилено тестване и кандидати за stable, или направо да преминете към unstable, където буквално има всичко, което е излязло на бял свят днес. Имате и друга възможност: част от пакетите да държите от stable (например, ядрото, базовата система), а друга част, която е по-клиентски ориентирана (като KDE 3.1, GNOME 2.2.), да вземете от unstable. Много хора се оплакват, че Debian stable е толкова стар, че дори се инсталира с ядро 2.2.x. Така е по подразбиране, но ако четат внимателно, ще видят, че инсталацията на Debian предлага широк набор от ядра, между които и 2.4.х. В този текст няма да се занимаваме с основните команди на програмата apt-get, с които би трябвало да е запознат всеки любител на тази дистрибуция, а ще обърнем внимание на един инструмент от тази серия - apt-build. С негова помощ можете напълно автоматизирано да си направите собствено apt-хранилище (local repository), смисълът от което е познат на всеки почитател на сорс-базираните дистрибуции. Ползата от подобно хранилище е огромна: избирате компилатор по собствено желание и оптимизарщи опции също по свой вкус, като така постигате максимална производителност за цялата система, управлявате хранилището със стотиците компилирани от вас пакети с apt-get подобно на всеки друг дебиански източник. Като собственик на преклонно стар компютър, аз не мога да си позволя лукса, предоставян например от Gentoo, да компилирам от изходен код цялата си дистрибуция. А и това не е необходимо. Оставяме настрана ядрото, за което има специален инструмент kernel-package. Съсредоточаваме се само върху най-често използваните потребителски приложения, за да не губим излишно време в безкрайни компилации, като съобразяваме нуждите си с възможностите на самия компютър. 1. Какво е необходимо? Първо трябва да се уверим, че във файла, в който се описват източниците на дебианския софтуер, сме въвели и пътя към сорсовете. Би трябвало в /etc/apt/sources.list да виждаме нещо такова: deb ftp://ftp.bg.debian.org/debian stable main contrib non-free deb ftp://ftp.bg.debian.org/debian unstable main contrib non-free deb http://security.debian.org/ stable/updates main deb http://security.debian.org/ testing/updates main deb-src http://security.debian.org/ stable/updates main deb-src http://security.debian.org/ testing/updates main deb-src ftp://ftp.bg.debian.org/debian stable main contrib non-free deb-src ftp://ftp.bg.debian.org/debian unstable main contrib non-free След това, трябва да инсталираме apt-build: apt-get install apt-build При самата инсталация ще бъдем попитани къде искаме да бъде създадена директорията, в която ще се съхраняват пакетите от нашето хранилище, кой компилатор предпочитаме (например, gcc 3.2), дали искаме да се прилагат някакви специални опции за оптимизация. По подразбиране директорията на нашето хранилище е /var/cache/apt-build/repository. Накрая ще бъдем попитни дали искаме въпросната директория да бъде описана във файла с дебиански източници, на което ние отговаряме утвърдително. 3. Създаване на собствени пакети с apt-build Можете да се изненадате колко е просто, но всъщност цялата процедура се свежда до една единствена команда. Пакетите със сорсове носят същото наименование като бинарните. Да речем, че искате да си инсталирате последната версия на Mozilla. apt-build install mozilla-browser Оттук нататък apt-build ще се погрижи да си изтегли и инсталира всички необходими за компилацията пакети, ще компилира Mozilla и ще копира новите бинарита в хранилището, откъдето ще ги инсталира и вие ще можете да ги управлявате вече по стандартния начин с apt-get. За повече информация, рабира се, имаме магическата команда man. 3. Създаване на .deb пакети и добавяне в хранилището Добре, няма нищо по-лесно от това да инсталирате от официалните източници на Debian пакети, като ги компилирате локално с apt-build. Но, да речем, че искаме да пипнем тук-там в сорса или да компилираме пакет, който не влиза никъде в Debian, след което ще го добавим в нашето хранилище. В първия случай можем да изтеглим само сорса с apt-get: apt-get source mozilla-browser Сорсът ще се изтегли и разархивира в текущата директория. Можем да направим каквото искаме по него и след това да го компилираме с dpkg-buildpackage. В резултат ще получим отново дебиански бинарита, които можем да копираме в нашето хранилище. След като ги копираме, трябва да кажем на apt-build да актулизира съдържанието на файловете Packages.gz и Sources.gz, от които чете пък apt-get, за да се ориентира къде какви пакети има. apt-build update-repository Вероятно се питате може ли да се процедира по същия начин и с други сорсове, които не влизат в дистрибуцията? Например, как любимият ни mplayer може да влезе в нашето хранилище? Много просто. Програмите, които са предвидени за компилиране с dpkg-buildpackage, имат в своя сорс директория, наречена debian. В нея са описани специални инструкции за създаването на дебиански пакети. Mplayer е пригоден за тези нужди. Можем да го компилираме с dpkg-buildpackage, при което отпадат всички процедури от рода на './configure ала-бала', 'make' и 'make install'. След като се компилира, получаваме дебиански пакет, копираме го в нашето хранилище, актуализираме го по горепосочения начин и можем да инсталираме нашия mplayer само с: apt-get install mplayer Приложение: Полезни процедури с apt-build 1. Изчистване на работната директория Когато apt-build комипилира пакети, сваля на харддиска много devel-библиотеки и сорсове. Бързо ще почувствате липсата на дисково пространство, ако не разчиствате редовно работното пространство на компилатора, което по подразбиране се намира в директорията /var/cache/apt-build/build: apt-build clean-build По същия начин можете да разчиствате и локалния кеш на apt-get: apt-get clean 2. Премахване на devel-библиотеките и разчистване на ненужния софтуер с debfoster Знаем, че за компилацията на софтуера apt-build инсталира допълнително много хедърни файлове и devel-библиотеки, които бързо запълват дисковото пространство, а в същото време нямаме нужда от тях, освен по време на самата компилация. За разрешаването на този проблем Debian предлага много удобен инструмент - debfoster. Достатъчно е само да го стартирате, за да разберете какво прави: пита ви за всеки пакет, който е възможно да бъде премахнат безболезнено, и грижливо "измита" отпадъците. Вероятно вече сте разбрали, че apt съдържа много повече от стандартни, макар и усъвършенствани, инструменти за управление на софтуера.