2015-04-17 6 views
3

Я изменяю пакет gnome-shell-3.8.xx.rpm. Я создал несколько патчей для rpm, и они работают нормально. Теперь я хочу добавить новый исходный файл в rpm, но я не могу найти, как это сделать?Добавить новый файл в существующем RPM

Для патчей я следовал ниже подхода:

  1. Скачать источник оборотов в минуту.
  2. установить rpm, который создает СТРОИТЕЛЬНЫЕ, СТРОИТЕЛЬНЫЕ, RPMS, ИСТОЧНИКИ СПЕЦИАЛЬНЫЕ каталоги SRPMS.
  3. копировать мои патчи в каталоге SOURCES.
  4. Изменить файл SPEC, чтобы включить мои исправления
  5. Создать новый пакет с помощью команды rpmbuild -bb SPEC/spec_file.
+0

Какие проблемы вы с точно? Патчи создают новый файл, и вы хотите, чтобы он включался в сгенерированный пакет? Вы применили свои исправления в файле spec, используя '% patch ##'? Чтобы упаковать файл, вам нужно скопировать его где-нибудь, подходящее во время '% install', и, возможно, добавить его в список файлов под'% files'. –

+0

Помимо патча, я хочу включить новый файл. Я сделал файл исправления для Makefile, но я не получаю, где я должен поместить свой новый файл и где находится список всех исходных файлов, присутствующих в иерархии каталогов rpmbuild? – user746184

+0

У вас есть новый файл в дополнение к новым патчам? Вы просто помещаете это в «ИСТОЧНИКИ» и добавляете его как строку «Source ##» так, как работают другие источники (и исправления с 'Patch ##'). Затем сделайте то, что я сказал выше. –

ответ

3

Оставьте ваш патч или любой другой файл, который вы хотите включить (RPM) поместить все их в каталог SOURCE

../SOURCES/package-1.0-my.patch 
../SOURCES/service.init 

Добавить в SPEC файл

Source1: service.init 
Patch0: package-1.0-my.patch 

Добавить в %pre разделе:

%prep 
%setup ... 
%patch0 -p1 
... 
... 
install -p -D -m 755 %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/service.init 

Построить число оборотов:

rpmbuild -ba ../SPEC/package.spec 

Примечания: Выше Source1 является пример, который вы можете использовать имя файла вместо service.init и изменить путь для установки конкретного местоположения

+0

Что представляет собой второй аргумент установки? "/etc/rc.d/init.d ...." - представляет – user746184

+0

Я хочу, чтобы мой файл назначения (hostname.js) был скопирован в /usr/share/gnome-shell/js/ui/hostname.js. Так должен ли я писать выше путь после $ RPM_BUILD_ROOT? Я попробовал, hostname.js добавлен в SRPM, но не RPM. @EtanReisner – user746184

+1

команда установки должна находиться в разделе% install. И файл (hostname.js) должен быть добавлен в раздел% файлов с разрешениями, такими как% файлов ... % defattr (644, root, root) /usr/share/gnome-shell/js/ui/hostname.js – user746184

Смежные вопросы