Сборка проприетарного пакета с нуля: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 77: Строка 77:


Для удобства дальнейшей работы упаковываем этот каталог в tar-архив: {{cmd|tar -cvf starboard_usr.tar usr}}
Для удобства дальнейшей работы упаковываем этот каталог в tar-архив: {{cmd|tar -cvf starboard_usr.tar usr}}
=== Исследование лицензии ===
Также исследуем файлы на предмет наличия лицензии.
Находим {{path|./usr/local/StarBoardSoftware/Resources/documents/COPYING}}, который содержит GPLv2.
Также находим файл {{path|./usr/local/StarBoardSoftware/Resources/documents/license/ru/license.rtf}}, который содержит следующие строки:
Передавать Программное обеспечение и все права по данному Соглашению
третьей стороне вместе с копией данного Соглашения, если третья
сторона соглашается принять положения и условия данного Соглашения.
Если Вы передаете Программное обеспечение, Вы должны или одновременно
передать третьей стороне все копии в печатной или машиночитаемой
форме, включая все модификации и части Программного обеспечения,
содержащиеся в других программах или объединенные с ними, или
уничтожить все непереданные копии.
Значит, можно пакет пересобрать для Сизифа.


== Примечания ==
== Примечания ==
{{примечания}}
{{примечания}}

Версия от 15:30, 6 марта 2011

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Данное руководство покажет, как правильно собрать пакет RPM в Sisyphus с нуля в инфраструктуре Gear и git.alt, не имея исходного кода пакета, на примере пакета StarBoardSoftware.

Входные требования

Исследование пакета

Первым делом нужно исследовать пакет на его кривость.

Для начала смотрим список файлов, которые появляются после установки пакета: rpm -qlp StarBoardSoftware-9.2.i586.rpm | less.

И видим, что все файлы ставятся в каталог /usr/local/.

Попытка установить пакет

Пробуем поставить этот пакет в hasher, на голую систему:

  • hsh --initroot-only -v ~/hasher
  • hsh-install -v `pwd`/StarBoardSoftware-9.2.i586.rpm
Следующие пакеты имеют неудовлетворенные зависимости:
  StarBoardSoftware: Требует: perl(strict) но пакет не может быть установлен
E: Извините, `битые' пакеты

Удовлетворение зависимостей

Ладно, создаём фиктивный пакет со следующим спеком в ~/RPM/SPECS/:

Name: perl-strict
Version: 1.0
Release: alt1
Provides: perl(strict)
BuildArch: noarch
Summary: perl(strict)
Group: Test
License: test
%description
%files
%changelog

Выполняем rpmbuild -bb perl-strict.spec

Обрабатываются файлы: perl-strict-1.0-alt1
Provides: perl(strict)
Записан: /home/becase/RPM/RPMS/noarch/perl-strict-1.0-alt1.noarch.rpm

Ставим наш самособранный пакет в hasher: hsh-install -v `pwd`/perl-strict-1.0-alt1.noarch.rpm

Вторая попытка установки

Второй подход к установке: hsh-install -v `pwd`/StarBoardSoftware-9.2.i586.rpm

Получаем вывод:

>>> preinst start
PARAMETERS 1 
/root/tmp/rpm-tmp.92646: line 36: rmmod: command not found
<<< preinst end
error: unpacking of archive failed on file /: cpio: utime failed - Operation not permitted
hsh-install: Packages installation failed.

Из этого следует, что пакет перед установкой пытается выполнить какой-то скрипт preinst, далее нам не позволяют устанавливать корень системы.

Смотрим rpm -qlp StarBoardSoftware-9.2.i586.rpm | less head -n5

/
/usr
/usr/local
/usr/local/HitachiSolutions
/usr/local/HitachiSolutions/StarBoard

Да, действительно почему-то авторы исходного пакета решили упаковать корень.

Запускаем mc mc, смотрим содержимое пакета, входя в него, как в архив. В частности, нас интересуют действия, выполняемые в сценариях установки. Они находятся в INFO/SCRIPTS/ во внутренностях пакета. Смотрим скрипты, ужасаемся и решаем, что ни в коем случае не следует устанавливать этот пакет как есть.

Зато видим, что в пункте postinstall выполняется команда /usr/local/StarBoardSoftware/installation-scripts/install.sh binary uspace app. Здесь-то и находится вся логика установки!

Извлечение файлов из пакета

Достаём файлы из пакета без установки: rpm2cpio StarBoardSoftware-9.2.i586.rpm | cpio -i Как мы и ожидали, у нас появился каталог usr.

Для удобства дальнейшей работы упаковываем этот каталог в tar-архив: tar -cvf starboard_usr.tar usr

Исследование лицензии

Также исследуем файлы на предмет наличия лицензии. Находим ./usr/local/StarBoardSoftware/Resources/documents/COPYING, который содержит GPLv2. Также находим файл ./usr/local/StarBoardSoftware/Resources/documents/license/ru/license.rtf, который содержит следующие строки:

Передавать Программное обеспечение и все права по данному Соглашению
третьей стороне вместе с копией данного Соглашения, если третья
сторона соглашается принять положения и условия данного Соглашения.
Если Вы передаете Программное обеспечение, Вы должны или одновременно
передать третьей стороне все копии в печатной или машиночитаемой
форме, включая все модификации и части Программного обеспечения,
содержащиеся в других программах или объединенные с ними, или
уничтожить все непереданные копии. 

Значит, можно пакет пересобрать для Сизифа.

Примечания

  1. После установки hasher необходимо создать вспомогательных пользователей и перезайти в систему.