Сборка проприетарного пакета с нуля: различия между версиями
Becase (обсуждение | вклад) |
Becase (обсуждение | вклад) |
||
Строка 14: | Строка 14: | ||
Первым делом нужно исследовать пакет на его кривость. | Первым делом нужно исследовать пакет на его кривость. | ||
Для начала смотрим список файлов, которые появляются после установки пакета: {{cmd| rpm -qlp {{!!}} less}}. | Для начала смотрим список файлов, которые появляются после установки пакета: {{cmd| rpm -qlp StarBoardSoftware-9.2.i586.rpm {{!!}} less}}. | ||
И видим, что все файлы ставятся в каталог {{path|/usr/local/}}. | И видим, что все файлы ставятся в каталог {{path|/usr/local/}}. | ||
Строка 44: | Строка 44: | ||
Ставим наш самособранный пакет в hasher: {{cmd|hsh-install -v `pwd`/perl-strict-1.0-alt1.noarch.rpm}} | Ставим наш самособранный пакет в hasher: {{cmd|hsh-install -v `pwd`/perl-strict-1.0-alt1.noarch.rpm}} | ||
Второй подход к установке: {{cmd|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, далее нам не позволяют устанавливать корень системы. | |||
Смотрим {{cmd|rpm -qlp StarBoardSoftware-9.2.i586.rpm {{!!}} less head -n5}} | |||
/ | |||
/usr | |||
/usr/local | |||
/usr/local/HitachiSolutions | |||
/usr/local/HitachiSolutions/StarBoard | |||
Да, действительно почему-то авторы исходного пакета решили упаковать корень. | |||
== Примечания == | == Примечания == | ||
{{примечания}} | {{примечания}} |
Версия от 21:12, 5 марта 2011
Данное руководство покажет, как правильно собрать пакет RPM в Sisyphus с нуля в инфраструктуре Gear и git.alt, не имея исходного кода пакета, на примере пакета StarBoardSoftware.
Входные требования
- Желательно иметь локальное зеркало Сизифа.
- Установленный и немного настроенный hasher[1].
- Пакет, который необходимо пересобрать для Сизифа.
- Ну, и самое главное, желание этим заниматься.
Исследование пакета
Первым делом нужно исследовать пакет на его кривость.
Для начала смотрим список файлов, которые появляются после установки пакета: 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
Да, действительно почему-то авторы исходного пакета решили упаковать корень.
Примечания
- ↑ После установки hasher необходимо создать вспомогательных пользователей и перезайти в систему.