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

Материал из ALT Linux Wiki
Нет описания правки
Строка 30: Строка 30:
  export hasher=</path/to/your/hasher>
  export hasher=</path/to/your/hasher>


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


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


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


Строка 87: Строка 89:
пакет по сути будет пустышкой (не будет содержать изменений).
пакет по сути будет пустышкой (не будет содержать изменений).
Но и вреда от него не должно быть.
Но и вреда от него не должно быть.
== Enjoy! ==

Версия от 19:49, 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.

Enjoy!

Примечания

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

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

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