Я хотел бы изменить пакет Fedora 15 ( gnome-shell-extensions-alternative-status-menu
). Это небольшая модификация (отмена этого коммита ). Используя yumdownloader
я могу скачать SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm
).
После этого, как мне распаковать его, а затем восстановить?
Ответы:
Что я делаю, как пользователь ROOT:
Установите SRPM, как и любой другой пакет (
rpm --install [source-rpm-filename]
)Изучите
/root/rpmbuild/SPECS
каталог и найдите файл specs, соответствующий вашему пакетуrpmbuild -bb /root/rpmbuild/SPECS/[found-filename]
Полученные двоичные пакеты затем помещаются в
/root/rpmbuild/RPMS/
каталог, который готов к установке с помощью стандартнойrpm --install
команды.ПРИМЕЧАНИЕ: это просто строит то, что находится в стандартном двоичном пакете. Я пишу это, отвечая на конкретный вопрос, а не о том, как делать изменения в источнике и создавать новые пакеты.
Чтобы внести изменения, вы можете либо предоставить патчи в качестве входных данных и изменить файл SPECS .... или вы можете заменить стандарт,
*.tar.bz2
расположенный в/root/rpmbuild/SOURCES
вашем, на изменение, а затем выполнить сборку, как описано выше.Остерегайтесь, возможно, вам придется изменить пакет SPECS, чтобы он работал (обычно путем извлечения исправлений и изменения некоторых имен файлов, которые запрограммированы файлом SPECS).
РЕДАКТИРОВАТЬ
Кажется, сборка rpms как root - плохая практика ( источник ). Он отлично работает как пользователь без полномочий root.
Пошаговая инструкция по добавлению патча ( отсюда ):
rpmbuild/SOURCES
.rpmbuild/SPECS/package.spec
и добавьтеPatch0: mypatch.patch
сразу послеSource0: ...
строки.%setup ...
строки добавьте%patch0 -p1
строкуТеперь он будет строить нормально, т.е. с:
rpmbuild -ba SPECS/package.spec
источник
sudo dnf install rpmdevtools
требуется для команды rpmbuild. И эта%patch0 -p1
строка должна быть опущена, если в спецификационном файле%autosetup
вместо%setup
одной используется строка (так как%autosetup
патч применяется автоматически).sudo rpm -ivh --force your.rpm
Пересборка пакета OpenSSL CentOS 6.4 является подробным примером перестройки пакета SRPM.
В приведенном выше примере используется Mock - Jedi Light Sabre сборщиков пакетов.
Макет был создан для надежного заполнения chroot, а затем перестроить пакет в этом chroot.
Для получения дополнительной информации см. Http://fedoraproject.org/wiki/Projects/Mock
В этом примере mock используется 3 раза - один раз, чтобы «распаковать» пакет, затем пересобрать .src.rpm и, наконец, создать .rpm.
источник