На настоящий момент korinf генерирует deb-пакеты без зависимостей. В задаче 3941 в alien добавлен параметр --depends, которым можно передать список зависимостей пакета. Предлагается сделать примерно следующее: 1. Добавить создание списка зависимостей для пакета (думаю, при сборке пакета в Сизиф), с сохранением в файл. 2. При сборке deb-пакета 2.1. Конвертировать зависимости для целевой системы (подобное уже реализовано в rpmbph) 2.2. Вызывать alien, указывая файл с зависимостями. Проверка результата: Установка wine-vanilla в минимальную свежеустановленную Ubuntu x86_64 должна давать работающий $ wine notepad
(В ответ на comment #0) > 1. Добавить создание списка зависимостей для пакета (думаю, при сборке пакета в > Сизиф), с сохранением в файл. > 2. При сборке deb-пакета > 2.1. Конвертировать зависимости для целевой системы (подобное уже реализовано в > rpmbph) Черновой вариант создания списка зависимостей и конвертора готов. Нужно обновить alien из Сизифа. Дайте права на builder/
По рекомендации TIME@ указал первоначальную оценку времени на решение задачи. Время весьма "с потолка". Текущее состояние задачи на уровне 40-45%.
Опять же, по рекомендации TIME@ указал "среднепотолочное" значение в поле "Осталось".
В git dkr черновые наброски кода для передачи списка зависимостей для alien. Код закомментирован пока, так как нуждается в ревизии состороны знающего korinf. В силу того, что в функцию run_alien вставлена проверка возможностей alien, без обновления alien до текущей версии работать не будет ! В Сизифе alien обновлен до нужного состояния. Прошу обновить версию на builder (builder64) или дать мне достаточно полномочий.
Доделал и проверил, дополнив тестом, функциональность по трансляции зависимостей при сборке.
Схема получилась следующая: 1. После сборки бинарных пакетов для ALTLinux/Sisyphus для каждого пакета с помощью функции trans_rpmdeps_to_pkgname (преобразующей rpm-зависимости вида libNAME.so.X в названия пакетов с помощью локального apt-get) создаём список зависимостей (в ALTLinux/Sisyphus/log/NAME.rpm.depends) 2. При сборке deb-пакета обращаемся за списком rpm.depends и с помощью convert_deplist создаём из него список зависимостей для конкретной платформы. 3. Передаём список зависимостей в alien, который создаёт непосредственно deb-пакет. Слабые места: 1. Использование apt-get 2. Зависимость от системы на сборочнице (нужно использовать всегда обновлённую до Сизифа).
Генерация зависимостей сделана, конвертация тоже, пакеты собираются, проверка добавлена, всё проверено, закрываю.
Ответ разработчика alien: The usual answer to this problem is that alien -s can be used to produce a directory tree that can be further modified as desired, and built with dpkg-buildpackage. Нужно выделить конвертацию deb отдельно, чтобы разрешить промежуточный каталог и задействовать dpkg-buildpackage.
Итак, нужно переделать ту часть, которая вызывает alien: 1. Усложнить код, вызывая alien -s, разворачивая во временном каталоге структуру пакета, далее вносим изменения в список зависимостей и заворачиваем пакет обратно с помощью dpkg-buildpackage. 2. Убрать проверку на необходимую функциональность alien (его версию). Подробности можно пытаться найти в нынешнем alien, в который мы добавили параметр для передачи зависимостей. Сейчас мы хотим от этого параметра отказаться.
Одновременно нужно перести конвертацию для dpkg в целевую систему, чтобы решить проблему с разными форматами сжатия.
(Ответ Vitaly Lipatov на комментарий9) > Итак, нужно переделать ту часть, которая вызывает alien: > 1. Усложнить код, вызывая alien -s, разворачивая во временном каталоге > структуру пакета, далее вносим изменения в список зависимостей и > заворачиваем пакет обратно с помощью dpkg-buildpackage. Сборка более успешно происходит с помощью fakeroot debian/rules binary При этом alien и сборку нужно вызывать в целевой системе с целью исключить расхождение версий.
(Ответ Vitaly Lipatov на комментарий10) > Одновременно нужно перести конвертацию для dpkg в целевую систему, чтобы > решить проблему с разными форматами сжатия. Конвертацию перенёс: commit ce380117a7348a17363fa06c4a6ee6753496386e Author: Vitaly Lipatov <lav@etersoft.ru> Date: Thu Nov 5 13:34:54 2015 +0300 switch to convert deb packages via target system alien (eterbug #8345)
Сделал добавление зависимостей: commit bcaf5b96e129b33cf82d40d82b3549afddf1ee35 Author: Vitaly Lipatov <lav@etersoft.ru> Date: Thu Nov 5 15:22:01 2015 +0300 convert/deb: run script per every package Нужно проверить: Проверка результата: Установка wine-vanilla в минимальную свежеустановленную Ubuntu x86_64 должна давать работающий $ wine notepad
Собрал. Но выяснил ужасную вещь - у нас нету образа Ubuntu 14.04 "Новая". Поскольку, подозреваю, что ставил их я - прошу меня извинить. Зато есть 15.04 - "новая"
(Ответ Konstantin Artyushkin на комментарий14) > Собрал. Но выяснил ужасную вещь - у нас нету образа Ubuntu 14.04 "Новая". > Поскольку, подозреваю, что ставил их я - прошу меня извинить. > > Зато есть 15.04 - "новая" Ну так всё равно на чём проверять.
(Ответ Vitaly Lipatov на комментарий15) > > Зато есть 15.04 - "новая" > Ну так всё равно на чём проверять. ждём решения https://bugs.etersoft.ru/show_bug.cgi?id=10896
Проверил все пакеты vanilla : $ cat /etc/*rele* DISTRIB_ID=Ubuntu DISTRIB_RELEASE=15.04 DISTRIB_CODENAME=vivid DISTRIB_DESCRIPTION="Ubuntu 15.04" $ uname -m x86_64 $epmqp wine libwine-vanilla-1.7.54-eter1ubuntu libwine-vanilla-gl-1.7.54-eter1ubuntu libwine-vanilla-twain-1.7.54-eter1ubuntu wine-gecko-2.40-eter1ubuntu wine-vanilla-1.7.54-eter1ubuntu Установились по стандартной схеме : dpkg - i * ; apt-get install -f ; dpkg -i * ============ wine notepad и winecfg запустились без проблем Закрываю