Repocop/RepairMiniHOWTO

Материал из ALT Linux Wiki

< Repocop(Различия между версиями)
Перейти к: навигация, поиск
(Запускаем repocop)
 
(84 промежуточные версии не показаны)
Строка 1: Строка 1:
[[Категория:Sisyphus]]
[[Категория:Sisyphus]]
[[Категория:Devel]]
[[Категория:Devel]]
 +
[[Категория:Repocop]]
 +
{{Category navigation|title=Repocop|category=Repocop}}
= Исправляем Репокопом пакеты за 5 минут. Краткое руководство. =
= Исправляем Репокопом пакеты за 5 минут. Краткое руководство. =
Строка 10: Строка 12:
* локальное зеркало со свежим сизифом (Пусть это <tt>/var/ftp/pub/Linux/ALT/Sisyphus</tt>).
* локальное зеркало со свежим сизифом (Пусть это <tt>/var/ftp/pub/Linux/ALT/Sisyphus</tt>).
-
Если в сизифе еще не появились repocop >= 0.07-alt19 и repocop-unittest >= 0.14,
+
Убедитесь, что в нем самые свежие версии ваших пакетов.
-
то их можно взять [http://repocop.altlinux.org/pub/repocop/rpms/ здесь] и подложить hasher'у.
+
-
 
+
* Свежая [http://repocop.altlinux.org/pub/repocop/data/repocop-data-current.tar.gz база repocop] <div style="display: inline; color: red;">(более 100 Mb)</div>.
* Свежая [http://repocop.altlinux.org/pub/repocop/data/repocop-data-current.tar.gz база repocop] <div style="display: inline; color: red;">(более 100 Mb)</div>.
-
* скрипт repocop-tools-ls-rpmbuild-bs-environment (есть в repocop >= 0.07-alt20 а также [http://repocop.altlinux.org/pub/repocop/scripts/repocop-tools-ls-rpmbuild-bs-environment здесь].
 
== Знакомимся с предлагаемыми патчами ==
== Знакомимся с предлагаемыми патчами ==
Строка 21: Строка 20:
[http://repocop.altlinux.org/pub/repocop/reports/diff/by-acl/ http://repocop.altlinux.org/pub/repocop/reports/diff/by-acl/]
[http://repocop.altlinux.org/pub/repocop/reports/diff/by-acl/ http://repocop.altlinux.org/pub/repocop/reports/diff/by-acl/]
и знакомимся с предложенными патчами.
и знакомимся с предложенными патчами.
 +
Если в патчах что-то не верно, сообщаем автору.
 +
Иначе продолжаем дальше.
-
== Создаем песочницу с repocop ==
+
== Готовим repocop ==
-
Скачиваем скрипт и базу repocop
+
 
-
cd ~
+
Скачиваем базу repocop
-
wget -с http://repocop.altlinux.org/pub/repocop/scripts/repocop-tools-ls-rpmbuild-bs-environment
+
-
chmod 755 ~/repocop-tools-ls-rpmbuild-bs-environment
+
  wget -c http://repocop.altlinux.org/pub/repocop/data/repocop-data-current.tar.gz
  wget -c http://repocop.altlinux.org/pub/repocop/data/repocop-data-current.tar.gz
 +
и разворачиваем ее в <code>~/.repocop</code>:
 +
cd ~
 +
tar xzf repocop-data-current.tar.gz
-
Создаем песочницу
+
Устанавливаем repocop
-
  hsh --initroot-only <опции hasher для вашего Сизифа>
+
  apt-get install repocop-tools repocop-unittest
-
копируем туда базу repocop
+
При желании можно установить пакеты, необходимые для нормального выполнения произвольного <code>rpmbuild -bs</code> :
-
  cp repocop-data-current.tar.gz </path/to/your/hasher>/chroot/tmp/
+
  apt-get install `/usr/bin/repocop-tools-ls-rpmbuild-bs-environment`
 +
Заметим, что в Сизифе иногда может быть сломана установка каких-то пакетов из списка, созданного командой
 +
/usr/bin/repocop-tools-ls-rpmbuild-bs-environment
 +
В таком случае, предварительно сохраните список в файл, отредактируйте его вручную и установите пакеты из отредактированного списка.
-
и разворачиваем ее внутри песочницы в <code>~/.repocop</code>:
+
Заметим, что пакеты с макросами устанавливать не обязательно. Если команда <code>rpmbuild -bs</code> завершилась неудачей,
-
hsh-run tar xzf /tmp/repocop-data-current.tar.gz
+
repocop создаст tar архив в формате hasher, который можно пересобрать в hasher и получить обычный src.rpm пакет.
-
Устанавливаем в песочницу repocop
+
== Запускаем repocop ==
-
hsh-install repocop-tools repocop-unittest
+
-
и все пакеты, необходимые для нормального выполнения произвольного <code>rpmbuild -bs</code> :
+
-
hsh-install `~/repocop-tools-ls-rpmbuild-bs-environment -c </path/to/your/hasher>/chroot/usr/src/.repocop`
+
-
Еще внутри песочницы нужно дать доступ к свежему Сизифу. Создаем точку монтирования
+
  repocop-fix-srpm --include-packager='viy,emacs,java' --packager='Igor Vlasenko <viy@altlinux.ru>' --outdir=./OUT /path/to/Sisyphus/files/SRPMS
-
hsh-run mkdir /usr/src/Sisyphus
+
-
и монтируем туда Сизиф:
+
-
sudo mount --bind /var/ftp/pub/Linux/ALT/Sisyphus </path/to/your/hasher>/chroot/usr/src/Sisyphus
+
-
песочница к запуску репокопа готова.
+
-
== Запускаем repocop ==
+
Если вы список пакетов формировали вручную, то фильтр <code>--include-packager</code> указывать не нужно.
 +
Иначе вместо viy,emacs,java укажите ваш ник и любимые группы, в которые вы входите.
 +
 
 +
После окончания работы генератора  исправленные src.rpm с увеличенным релизом будут лежать в папке <tt>./OUT</tt>.
 +
 
 +
Смотрим, пересобираем, тестируем, отправляем на сборку в Sisyphus.
-
repocop-fix-srpm --include-packager='viy,@emacs,@java' \
+
== Enjoy! ==
-
  --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
+
-
Заметим, что здесь нужно указывать <tt>/usr/src/Sisyphus/files/x86_64/RPMS</tt>, а не
+
== Примечания ==
-
<tt>/usr/src/Sisyphus/files/i586/RPMS</tt>, поскольку в загруженной с [repocop.altlinux.org] базе данных
+
Желательно сравнить число патчей и число сгенерированных пакетов, поскольку
-
есть только такие записи.
+
может случиться, что сгенерировано больше пакетов, чем есть патчей на
 +
http://repocop.altlinux.org/pub/repocop/reports/diff/by-acl/.
-
Вместо viy,@emacs,@java укажите ваш ник и любимые группы, в которые вы входите.
+
Особенность текущего генератора src.rpm в том, что он создает новый
 +
src.rpm в случае, когда для ошибки существует патч генератор.
 +
Однако иногда патч генератору не удается исправить пакет, и тогда полученный
 +
пакет по сути не будет содержать изменений. Хотя и вреда от него не должно быть.

Текущая версия на 17:37, 10 ноября 2011


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

Содержание


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

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

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

Убедитесь, что в нем самые свежие версии ваших пакетов.

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

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

Готовим repocop

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

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

и разворачиваем ее в ~/.repocop:

cd ~
tar xzf repocop-data-current.tar.gz

Устанавливаем repocop

apt-get install repocop-tools repocop-unittest

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

apt-get install `/usr/bin/repocop-tools-ls-rpmbuild-bs-environment`

Заметим, что в Сизифе иногда может быть сломана установка каких-то пакетов из списка, созданного командой

/usr/bin/repocop-tools-ls-rpmbuild-bs-environment

В таком случае, предварительно сохраните список в файл, отредактируйте его вручную и установите пакеты из отредактированного списка.

Заметим, что пакеты с макросами устанавливать не обязательно. Если команда rpmbuild -bs завершилась неудачей, repocop создаст tar архив в формате hasher, который можно пересобрать в hasher и получить обычный src.rpm пакет.

Запускаем repocop

repocop-fix-srpm --include-packager='viy,emacs,java' --packager='Igor Vlasenko <viy@altlinux.ru>' --outdir=./OUT /path/to/Sisyphus/files/SRPMS

Если вы список пакетов формировали вручную, то фильтр --include-packager указывать не нужно. Иначе вместо viy,emacs,java укажите ваш ник и любимые группы, в которые вы входите.

После окончания работы генератора исправленные src.rpm с увеличенным релизом будут лежать в папке ./OUT.

Смотрим, пересобираем, тестируем, отправляем на сборку в Sisyphus.

Enjoy!

Примечания

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

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

 
Личные инструменты