Утиліта alien конвертація пакетів в deb-формат - наш блогосайт linux і «лірика»

Поставивши собі за мету створити репозиторій Cintu для номінації її як повноцінного дистрибутива, я для початку вирішив зробити прототип оного. І, зрозуміло, помістити в нього пакети з числа тих, що ні окучени ні в офіційному репозиторії Ubuntu, ні в PPA.

Утиліта ця була написана в незапам'ятні часи і спеціально призначена для конвертації бінарних пакетів, зібраних для різних дистрибутивів, з одного формату в інший. Підтримувані формати - deb. rpm. tgz з Slackware (і абстрактний tar.gz - теж), slp з Stampede (був колись такий дистрибутив Linux'а, свого часу - самий фронтірний) і pkg з Solaris.

Утиліта alien входить в останню збірку Cintu - cintu-maxi-16041-7ts. У збірці cintu-midi-16041-3ts (як і у всіх інших Ubuntu'ідах) її легко встановити з офіційного репозиторію:

Цільовим форматом за умовчанням в alien виступає deb, інші задаються відповідними опціями, на яких я зупинятися не буду (зацікавленим пропоную звернутися до тітки Мане - man alien). Конвертація в deb-пакет з будь-якого іншого формату вимагає прав адміністратора (на причинах цього тут зупинятися не буду). Однак користуватися на предмет їх здобуття командою sudo тут не бажано (хоча і не забороняється): після цього сгенерённий файл * .deb буде належати root 'у, з усіма наслідками, що випливають з цього незручностями.

Утиліта fakeroot після запуску (до речі, що не потребує введення пароля) створює «псевдоадміністратівное оточення». Як і sudo. її можна використовувати двояко. По-перше, дати команду

після якої піде дві скарги на «несекьюрность» поточного каталогу (в обох випадках треба відповідати згодою, тобто y), після чого в запрошенні командного рядка замість користувача можна побачити «адміністратора». Тобто в Cintu за замовчуванням це буде виглядати так:

Однак реальним користувачем все одно залишається той, хто запустив fakeroot. в чому легко переконатися такою командою:

Тепер можна дати команду конвертації, наприклад, таку:

Яка завершиться повідомленням:

При необхідності команду можна повторити для наступного файлу, або задати відразу кілька аргументів. А після закінчення всієї процедури конвертації - повернутися в нормальну призначену для користувача середу командою exit. І переконатися, що власником конвертованого файлу буде не root. як у випадку застосування sudo. а користувач:

Якщо потрібно конвертувати одиничний пакет - можна зробити простіше:

З тим же самим результатом:

Уважний читач звернув увагу, що в списку підтримуваних утилітою alien форматів немає tar.xz (txz), а утиліта xz нині часто використовується для компресії тарбаллов. І дійсно, безпосередньо конвертувати файл з таким суфіксом не вдасться:

Однак тут допомагає нехитрий виверт - банальне перейменування tar.xz в tar.gz. оскільки alien сам безпосередньо розпакуванням і упаковкою архівів не займається.

І дійсно, якщо виконати таку операцію:

А вже потім дати команду конвертації, все пройде без сяких якіх:

Більш того, alien працює навіть з самозбірних тарбалламі. Наприклад, шрифту Monofur у вигляді пакета не знайти, напевно, ні в одному дистрибутиві. Він доступний у вигляді zip-архіву в одній з шрифтових колекцій. Його можна розпакувати, що входять файли розіпхати по потрібним підкаталогам (власне шрифти monof55.ttf і monof56.ttf - в usr / share / fonts / truetype. Текст ліцензії monof_tt.txt в usr / share / licenses), а з батьківського каталогу зробити архів monofur -otf_1-1_all.tar.gz і підсунути його як аргумент команди alien. З генерацією deb-пакету на виході. Так, це не естетично ідеологічно, зате «дешево, надійно і практично».

І на закінчення - дуже важливе зауваження: застосовувати утиліту alien доцільно тільки до простих пакетів, без численних залежностей і складних настановних сценаріїв - саме такими були всі розглянуті вище випадки. В іншому разі не гарантується не те що чудовий, але навіть просто прийнятний результат.