Як розпакувати, змінити, відновити та встановити SRPM


9

Я хотів би змінити пакет Fedora 15 ( gnome-shell-extensions-alternative-status-menu). Це невелика модифікація (повернення цього зобов'язання ). Використовуючи, yumdownloaderя можу завантажити SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm).

Після цього, як я її розпакуйте і потім відновити?


Вам слід змінити нещодавнє редагування, щоб бути коментарі до відповіді @ mdpc або додати власну відповідь, виконавши кроки, які допомогли вам вирішити проблему. Дані відповідей не залишайте в питанні, будь-ласка.
Калеб

@Caleb Готово! (Ще 3…)
Vitor Py

Відповіді:


7

Що я роблю, як користувач ROOT:

  1. Встановіть SRPM так, як і будь-який інший пакет ( rpm --install [source-rpm-filename])

  2. Вивчіть /root/rpmbuild/SPECSкаталог і знайдіть файл специфікацій, який відповідає вашому пакету

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

Потім отримані бінарні пакети знаходяться в /root/rpmbuild/RPMS/каталозі, який готовий до встановлення за допомогою стандартної rpm --installкоманди.

ПРИМІТКА. Це просто створює те, що є у стандартному бінарному пакеті. Я публікую цю відповідь на конкретне запитання, а не про те, як вносити зміни до джерела та генерувати нові пакети.

Для внесення змін ви можете надати виправлення у вигляді введення та зміни файла SPECS .... або ви можете замінити стандарт, *.tar.bz2розташований у /root/rpmbuild/SOURCESсвоєму, на свій власний, а потім виконати збірку, як описано вище.

Будьте обережні, можливо, вам доведеться змінити пакет SPECS, щоб він працював (зазвичай, витягуючи виправлення та змінюючи деякі імена файлів, запрограмовані файлом SPECS).


EDIT

Здається, створення rpms як root є поганою практикою ( джерело ). Він прекрасно працює як некореневий користувач.

Покрокові інструкції для додавання патча ( звідси ):

  1. Скопіюйте свій патч в rpmbuild/SOURCES.
  2. Відредагуйте rpmbuild/SPECS/package.specта додайте Patch0: mypatch.patchправоруч після Source0: ...рядка.
  3. Після %setup ...рядка додайте %patch0 -p1рядок

Тепер він буде будуватися нормально, тобто. з:rpmbuild -ba SPECS/package.spec


2
Вам слід уточнити, що тільки встановлення виконується як root, а не rpmbuild. Створення rpm-файлів ніколи не слід виконувати як root.
Калеб

@Caleb я встановив пакунки, що не мають кореня. rpm ставить його в ~ / rpmbuild ієрархію. Також я зробив, як ви запропонували в цьому питанні, і поставив тут додаткові кроки.
Vitor Py

Всього пара зазначає: sudo dnf install rpmdevtoolsпотрібна для команди rpmbuild. І %patch0 -p1рядок слід опустити, якщо файл специфікації використовує %autosetupрядок замість %setupодиниці (як %autosetupавтоматично застосовується патч).
Нельсон

Крім того, щоб встановити новий об / хв над оригінальним (якщо оригінал вже встановлений у системі), зробітьsudo rpm -ivh --force your.rpm
Нельсон

4

OpenSSL Package Rebuild CentOS 6.4 - це докладний приклад відновлення пакету SRPM.

У наведеному вище прикладі використовується Mock - джедай світла шабля будівельників пакетів.

Макет був створений для надійного заповнення chroot, а потім відновлення пакета в цьому chroot.

Докладніше див. На веб-сторінці http://fedoraproject.org/wiki/Projects/Mock

У прикладі макет використовується 3 рази - один раз для "розпакування" пакета, потім для відновлення .src.rpm і нарешті для створення .rpm.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.