В попередній статті ми зробили корисну справу і зібрали собі urxvt з підтримкою 256 кольорів. Тепер нарешті можна вмикати нормальну кольорову схему одного з найпотужніших редакторів — vim, а саме desert256. Однак розробники все ще сидять незадоволені і очікують, коли ми їм нарешті поставимо найсвіжіший Nginx зі скомпільованим стороннім модулем Nginx HTTP Push Module, або просто NHPM. Що ж, не будемо змушувати їх чекати ще.
Для початку йдемо і дивимося, наскільки стара версія в репозиторії, можливо вдастьтся якось умовити розробників на стабільну версію з репозиторію.
- Версія в репозиторії — 0.7.64
- Версія на офсайті — 0.8.31
Видно, домовитись не вийде. Що ж, доведеться збирати. Йдемо в нашу директорію для збирання і витягуємо сирці пакету nginx з його залежностями і радіємо існуванню утиліти apt, яка робить всю брудну роботу за тебе.
$ cd ~/debian && apt-get source nginx $ sudo apt-get build-dep nginx
Тепер качаємо останню свіжу версію з офсайту в звичну ~/debian, а заодно і так необхідний розробникам модуль:
$ wget http://sysoev.ru/nginx/nginx-0.8.31.tar.gz $ wget http://github.com/slact/nginx_http_push_module/tarball/v0.69
А тепер починається магія Debian — однією командою з джерельних кодів, не призначених для створення пакету, ми створюємо дерево, придатне для цього. Саме в цьому і сила даного дистрибутиву — він надає абсолютно всі необхідні інструменти для зручної підготовки програмних продуктів до впровадження їх в офіційний дистрибутив. Мало того, операційна система надає з добру сотню скриптів, які настільки спрощують роботу по створенню пакетів, що кожен в змозі ними користуватись! Отже, поїхали:
$ cd nginx-0.7.64 && uupdate ../nginx-0.8.31.tar.gz
Як бачимо, всі патчі розробників Debian наклались без жодної помилки, і в цьому заслуга саме розробника Nginx Ігоря Сисоєва — проект розвивається без надто різких змін, зберігаючи навіть сумісність патчів.
Якби нам необхідно було лиш оновити Nginx до найсвіжішої версії, нам би лишилося лиш перейти в нове дерево джерельних кодів і виконати dpkg-buildpackage, як і минулого разу, проте задача встановлення модуля ще не завершена, і тепер ми візьмемося за неї. Для початку слід вибрати, де саме в джерельних кодах розмістити сам модуль. Після нетривалого пошуку вирішено розмістити їх в директорії contrib.
$ cd ../nginx-0.8.31/contrib && tar zxvf ../../slact-nginx_http_push_module-f762a04.tar.gz $ mv slact-nginx_http_push_module-f76 http_push_module
Тепер необхідно, щоб цей модуль компілювався разом з Nginx. За весь процес конфігурування, компіляції, та ще купи речей відповідає один єдиний файл – debian/rules. Фактично це Makefile з правами запуску та багаться цілями (targets). Так, наприклад, для банального збирання пакету можна використати команду
$ fakeroot debian/rules binary-arch
Відкриваємо файл і до опцій конфігурування додаємо NHPM:
Нарешті, вказуємо наші зміни в debian/changelog за допомогою dch і збираємо такий бажаний пакет Nginx 0.8.3. Слід зауважити, що утиліта uupdate вже встигла змінити наступну версію пакета на 0.8.3, що заслуговує окремої подяки в бік розробників.
$ dch $ fakeroot dpkg-buildpackage -sa
Нарешті, пакет зібраний і готовий до встановлення на радість розробникам, а це значить, що наступного разу ми створимо власний репозиторій і відкриємо його всьому світові. Бажаючі встановити пакет зможуть з легкістю це зробити, додавши наш тестовий репозиторій в індекс apt, розташований за адресою http://itblog.org.ua/debian як описано у відповідній статті. Наостанок лиш хочу перелічити ті утиліти, які допомогли оновити, підлаштувати та, врешті, зібрати готові пакети для Nginx та rxvt-unicode:
- apt-get — отримання джерельних кодів, встановлення залежностей збирання.
- dpkg-buildpackage — збирання пакету з дерева джерельних кодів Debian.
- dch — внесення записів в журнал змін пакета, зміна версії, налаштування цифрового підпису пакету.
- uupdate — оновлення джерельних кодів програми з накладанням патчів Debian та частини дерева кодів для збирання пакету.
Ця стаття вкотре доводить, що не такий страшний чорт, як його малюють. До наступних зустрічей!