How to build Wine від source в Debian GNU

source

ОМСЬКА ГРУПА КОРИСТУВАЧІВ LINUX

Складання unstable-версії Wine для stable-гілки Debian (TrueЪ Debian-way)

У статті описано спосіб отримання набору пакетів останньої версії Wine для stable-гілки Debian GNU/Linux. Як інструмент використовується утиліта dpkg-buildpackage. Також коротко описано варіант використання dh_make.

Перша думка, яка приходить у відповідь на питання, де взяти новий Wine, - подивитися власне на сайті WineHQ у розділі Wine downloads (http://www.winehq.org/download/). Однак, як можна виявити при детальному дослідженні посилань на цій сторінці, жодних бінарників там немає. Насправді все, що нам потрібно, зберігається на сайті стороннього розробника, який і публікує збірки для Debian sid/unstable, а також викладає вихідні коди з патчами. Тобто, якщо у вас стоїть sid (або підключені репозиторії від unstable і experimental для дозволу залежностей), ви можете взяти пакети прямо звідси: http://dev.carbon-project.org/debian/wine-unstable/. Якщо ж ви віддаєте перевагу стабільності, але при цьому хочете використовувати новітні розробки творців Wine, доведеться качати вихідники. Посилання на них розміщені на цій сторінці в розділі Source package. Фактично для збирання знадобляться два архіви:wine-unstable_1.5.5.orig.tar.bz2 (це власне дерево вихідних джерел) іwine-unstable_1.5.5-0.1.debian.tar.bz2 (Це параметри для системи збирання пакетів). А файлwine-unstable_1.5.5-0.1.dsc - це підписаний маінтейнер опис архівів з вихідними.

З чого почати?

  1. Розпакувати архівwine-unstable_1.5.5.orig.tar.bz2. Вийде каталог wine-1.5.5.
  2. Розпакувати архівwine-unstable_1.5.5-0.1.debian.tar.bz2всередину каталогу wine-1.5.5 . Таким чиномвсередині wine-1.5.5 має з'явитися каталог з іменем debian.
  3. Перевірити, чи є в системі пакетdpkg-dev (dpkg-buildpackage знаходиться саме в ньому): виконати dpkg -l dpkg-dev grep ii - якщо в результаті повернеться рядок з коротким описом пакета, отже він вже є, якщо нічого не буде, значить його нема. Якщо цей пакет не встановлений, це непорозуміння потрібно виправити, виконавши apt-get install dpkg-dev .
  4. Перейти до wine-1.5.5 і запустити dpkg-buildpackage -b -us -uc (значення ключів будуть описані в наступному розділі). Якщо після всіляких перевірок відразу ж почалася компіляція, то з якоїсь чарівної причини у вас уже були поставлені всі пакети, від яких залежить складання Wine. Якщо процес ще й завершився коректно з купою пакетів на виході, вас можна тільки привітати. Однак, з великим ступенем ймовірностіdpkg-buildpackage завершиться через пару секунд, виваливши приблизно таке повідомлення: …

  • Поставити всі пакети зі списку незадоволених залежностей, отриманих на попередньому кроці.Зверніть увагу на пари імен пакетів, розділених символом «» («конвеєр»). Це альтернативи, тобто одне ім'я відповідає реальному пакету, який знайдеться в репозиторії, а друге ім'я це або віртуальний пакет, або застаріла назва. І ставити потрібнореальний пакет. Так що, перш ніж копіювати купою відразу всі назви в командний рядок після apt-get install, з'ясуйте, які з назв, розділених «», реально присутні в репозиторії (наприклад, через apt-cache search або dpkg-l).
  • Як зібрати?

    Цілком тривіально: dpkg-buildpackage -b -us -uc

    Після хмари помилок першого запускуdpkg-buildpackage напевно запропонував вдруге запустити себе зключем-d. Цей ключ означає "не визначати залежності". Якщо ви впевнені, що нічого не пропустили, можна, звичайно, додати і його... Але ж заздалегідь ніколи не знаєш... Тому перезапускаємо як є, з тими ж трьома ключами:

    -b Ключ, який пропонує збирати тільки бінарні пакети, без упаковки вихідних.Без цього ключаdpkg-buildpackage спробує створити src-deb і шукатиме архів із вихідними джерелами (тобтоwine-unstable_1.5.5.orig.tar.bz2 ) поряд з каталогом збирання (тобто з wine-1.5.5). Якщо все буде на місці, отримаємо ще один пакет, який, втім, нікому особливо не потрібен. І щоб не множити сутності, ставимо цей ключ. -us Не намагайтеся підписати .dsc-файл. -uc Не намагайтеся підписати файл .changes.

    З моменту запуску процесу збирання до отримання набору пакетів може пройти (залежно від швидкості роботи комп'ютера) від 20 хвилин до півтори години. У цей час можна курити бамбук пити чай або каву, оскільки можливості будь-яким чином вплинути на процес до його закінчення вже не буде.

    Якщо все пройшло вдало, то в результаті ви отримаєте приблизно такий список пакетів:

    • libwine-alsa-unstable_1.5.5-0.1_i386.deb
    • libwine-bin-unstable_1.5.5-0.1_i386.deb
    • libwine-capi-unstable_1.5.5-0.1_i386.deb
    • libwine-cms-unstable_1.5.5-0.1_i386.deb
    • libwine-dbg-unstable_1.5.5-0.1_i386.deb
    • libwine-dev-unstable_1.5.5-0.1_i386.deb
    • libwine-gl-unstable_1.5.5-0.1_i386.deb
    • libwine-gphoto2-unstable_1.5.5-0.1_i386.deb
    • libwine-ldap-unstable_1.5.5-0.1_i386.deb
    • libwine-openal-unstable_1.5.5-0.1_i386.deb
    • libwine-oss-unstable_1.5.5-0.1_i386.deb
    • libwine-print-unstable_1.5.5-0.1_i386.deb
    • libwine-sane-unstable_1.5.5-0.1_i386.deb
    • libwine-unstable_1.5.5-0.1_i386.deb
    • wine-bin-unstable_1.5.5-0.1_i386.deb
    • wine-unstable_1.5.5-0.1_i386.deb

    Відразу зауважу, що деякі з пакетів можна не ставити:

    Якщо ж омріяних пакетів ви так і не виявили… Що ж, переходьте до читання наступного розділу.

    Що робити, якщо щось пішло не так?

    По-перше, ще раз перевірити залежність. Якщо якийсь пакет не ставиться, швидше за все, ви намагаєтеся поставити альтернативний варіант, який стоїть поряд з «». У цьому випадку потрібно ставити пакет, який записаний з іншого боку від значка конвеєра.

    По-друге, перевірити, чи не зламалася структура «дебіанізації» дерева вихідних джерел — вміст каталогу debian . Якщо є сумніви, його потрібно прибити та розпакувати заново зі скачаного архіву. У цьому випадку через відсутність деяких специфічних налаштувань у debian/rules після складання можуть запуститися тести, які на переважній більшості систем будуть давати збої (як заявляють самі розробники Wine'а в одному зі списків розсилки). А втратити ці налаштування можуть, якщо помилка каталог debian буде перезаписаний або видалений і створений заново за шаблоном за допомогою командиdh_make.

    По-третє, прочитати mandpkg-buildpackage і зрозуміти, які параметри реально потрібні в даній ситуації. Наприклад, якщо його запускати без ключа-b, додатково буде зібрано src-пакет. Вірніше, він буде зібраний, якщо поруч із каталогом wine-1.5.5 буде виявлено архівwine-unstable_1.5.5.orig.tar.bz2. В іншому випадку вам пред'являть наступне:

    І якщо після цього захотіти виправити ситуацію за допомогоюdh_make, як про це пишуть на деяких форумах, ми отримаємо скинуті налаштування правил збиранняпакетів та повернемося до пункту «по-друге».

    І останнє. Усі операції, крім установки пакетів, здійснюються з правами звичайного користувача. Якщо в процесі збирання від вас вимагали права адміністратора, швидше за все, у вас не встановлено пакетfakeroot (або подібний).

    Примітка: якщо ви відчуваєте розгубленість від великої кількості в тексті незрозумілих команд і стомлені описами речей, які здаються вам безглуздими, наполегливо рекомендую зробити паузу в читанні, відпочити іпрочитати документацію до всіх згаданих команд у форматі man або info.

    Що такеdh_make ?

    Як сказано у мануалі, це утиліта для підготовки оригінальних сирців до збирання з них дебіанівського пакету. Питання «навіщо це потрібно?» ми зараз розглядати не будемо, оскільки він є швидше філософським і цілком може стати приводом для нової війни. В цьому випадку нас більше цікавить, як це зробити.

    Отже, якщо у вас є просто голі вихідники чогось (злиті, наприклад, з якогось репозиторію на github або SourceForge), і вам конче потрібно зробити з них .deb-пакет, вам потрібно буде зробити кілька нехитрих дій.

    Найперше — звичайно ж, розпакувати архів із вихідними джерелами. Назва директорії після розпакування може бути, взагалі кажучи, будь-яким, але для використання зdh_make потрібно привести його до вигляду - , причому має містити лише малі літери латинського алфавіту, можливо, з цифрами і знаками «-» (звичайний мінус).

    Наступним кроком буде зайти в перейменовану директорію і запустити там dh_make . І тут, як завжди, починаються різні «але» та «якщо». Якщо не вказано ключ --native ,dh_make шукатиме поруч із каталогом вихідних архів виду - .orig.tar.gz (втім, вінможе бути не тільки .gz, але також і .bz2, і .lzma). Якщо такого файлу немає, але вказаний ключ -f , тоdh_make скопіює і використовує його як оригінальний архів. Якщо ж ключ -f не вказаний, але є ключ --createorig , тоdh_make створить архів із поточного дерева вихідних джерел. Архів, до речі, потрібен буде іншим утилітам для генерації відмінностей між оригінальними файлами та оновленими версіями (відповідно, для підготовки патчсету) та для побудови дебіанівської структури src-пакету.

    Після того, як розібралися з архівом, потрібно буде відповісти на додаткове запитання: що ми хочемо отримати в результаті єдиний пакет (single binary), архітектурно-незалежні файли (arch-independent), кілька пакетів (multiple binary), бібліотеку (library) , модуль ядра (kernel module) або патч для ядра (kernel patch). Від зробленого вибору залежатимуть параметри, якіdh_make запише до структури всередині каталогу debian .

    По суті це все. Після того, якdh_make відпрацював (будемо сподіватися, без помилок), можна переходити до процедури збирання пакета за допомогоюdpkg-buildpackage.

    Насправді ж, якщо ви не збираєтеся ставати маінтейнером, швидше за все, ця утиліта вам ніколи не знадобиться.

    Подяки

    Автор висловлює вдячність члену OmskLUG з ніком Lumpy за здійснення на практиці та тестування всього процесу, описаного в цьому посібнику.

    Дякую за увагу!

    Цю статтю можна завантажити у форматі PDF звідси абсолютно вільно.