Repocop/RepairMiniHOWTO: различия между версиями

Материал из ALT Linux Wiki
Строка 76: Строка 76:
Смотрим, собираем, заливаем в incoming.
Смотрим, собираем, заливаем в incoming.


Примечание: особенность текущего генератора в том, что он создает новый
Примечание:  
src.rpm в случае, если ожидалось, что патч генератор исправит пакет.
Желательно сравнить число патчей и число сгенерированных пакетов.
Однако иногда патч генератору не удается исправить пакет, поэтому
 
может случиться такая ситуация, что сгенерировано пакетов больше, чем есть патчей на
может случиться такая ситуация, что сгенерировано пакетов больше, чем есть патчей на
[http://repocop.altlinux.org repocop.altlinux.org].
http://repocop.altlinux.org/pub/repocop/reports/diff/by-acl/.
 
Особенность текущего генератора src.rpm в том, что он создает новый
src.rpm в случае, когда для ошибки существует патч генератор.
Однако иногда патч генератору не удается исправить пакет, поэтому полученный
пакет по сути будет пустышкой (не будет содержать изменений).
Но и вреда от него не должно быть.


== Enjoy! ==
== Enjoy! ==

Версия от 19:06, 17 ноября 2008


Исправляем Репокопом пакеты за 5 минут. Краткое руководство.

Предисловие.

Для исправления пакетов вам понадобится

  • локальное зеркало со свежим сизифом (Пусть это /var/ftp/pub/Linux/ALT/Sisyphus).

Проверьте, что в сизифе должны быть repocop >= 0.07-alt21 и repocop-unittest >= 0.14.

Знакомимся с предлагаемыми патчами

Ищем свои папки на http://repocop.altlinux.org/pub/repocop/reports/diff/by-acl/ и знакомимся с предложенными патчами. Если в патчах что-то не верно, сообщаем автору. Иначе продолжаем дальше.

Создаем песочницу с repocop

Скачиваем базу repocop

cd ~
wget -c http://repocop.altlinux.org/pub/repocop/data/repocop-data-current.tar.gz

Создаем песочницу

hsh --initroot-only --packager='<ваш packager email>' <опции hasher для вашего Сизифа>
export hasher=</path/to/your/hasher>

Переменная $hasher нам будет в последующем нужна для того, чтобы приведенный ниже код был полностью рабочим и его можно было копировать в консоль и сразу запускать.

копируем туда базу repocop

cp repocop-data-current.tar.gz $hasher/chroot/tmp/

и разворачиваем ее внутри песочницы в ~/.repocop:

hsh-run tar xzf /tmp/repocop-data-current.tar.gz

Устанавливаем в песочницу repocop

hsh-install repocop-tools repocop-unittest

и все пакеты, необходимые для нормального выполнения произвольного rpmbuild -bs :

hsh-install `$hasher/chroot/usr/bin/repocop-tools-ls-rpmbuild-bs-environment -c $hasher/chroot/usr/src/.repocop`

Еще внутри песочницы нужно дать доступ к свежему Сизифу. Создаем точку монтирования

hsh-run mkdir /usr/src/Sisyphus

и монтируем туда Сизиф (если ядро поддерживает read-only bind, лучше монтировать с ro):

sudo mount --bind /var/ftp/pub/Linux/ALT/Sisyphus $hasher/chroot/usr/src/Sisyphus

Проверяем и при необходимости правим в песочнице /usr/src/.rpmmacros так, чтобы там был правильный %packager.

песочница к запуску репокопа готова.

Запускаем repocop

hsh-shell 
cd ~
repocop-fix-srpm --include-packager='viy,emacs,java' \
 --packager='Igor Vlasenko <viy@altlinux.ru>' \
 --outdir=OUT --acl-file /usr/src/Sisyphus/files/list/list.src.classic \
 /usr/src/Sisyphus/files/noarch/RPMS /usr/src/Sisyphus/files/x86_64/RPMS /usr/src/Sisyphus/files/SRPMS

Вместо viy,emacs,java укажите ваш ник и любимые группы, в которые вы входите.

Заметим, что здесь нужно указывать /usr/src/Sisyphus/files/x86_64/RPMS, а не /usr/src/Sisyphus/files/i586/RPMS, поскольку в загруженной с repocop.altlinux.org базе данных есть только такие записи.

После окончания работы генератора в папке OUT будут исправленные sкс.rpm.

Выходим, сразу отмонтируем Sisyphus, чтобы его не потерло при попытке следующей пересборки

sudo umount $hasher/chroot/usr/src/Sisyphus

и копируем полученные src.rpm из песочницы.

Смотрим, собираем, заливаем в incoming.

Примечание: Желательно сравнить число патчей и число сгенерированных пакетов.

может случиться такая ситуация, что сгенерировано пакетов больше, чем есть патчей на http://repocop.altlinux.org/pub/repocop/reports/diff/by-acl/.

Особенность текущего генератора src.rpm в том, что он создает новый src.rpm в случае, когда для ошибки существует патч генератор. Однако иногда патч генератору не удается исправить пакет, поэтому полученный пакет по сути будет пустышкой (не будет содержать изменений). Но и вреда от него не должно быть.

Enjoy!