2014-08-27 3 views
0

У меня есть подкаталог my_sw, который имеет образ того, что я хочу, чтобы установить:Как создать RPM из поддира?

my_sw/ 
    usr/ 
    bin/ 
     foo 
    man/ 
     man1/ 
     foo.1 

и так далее. Я предполагаю, что должен быть простой способ создать спецификационный файл и использовать rpmbuild для его упаковки в качестве RPM, чтобы другие пользователи могли его установить. Меня не волнует какой-либо из модных вещей, которые может сделать rpm, я просто хочу, чтобы он установил это дерево. (Я полагаю, что я неправильно использую rpm, но таким образом мои пользователи будут отслеживать мои файлы в своей базе данных rpm, что они хотели бы.)

Я пробовал разные вещи, но rpm хочет сделать способ больше, чем я хочу, и большинство проектов хотят, чтобы rpm делали еще много (предварительное построение, строительство, тестирование вещей, снятие и т. д.). Есть ли способ, показывающий, как просто собрать тривиальный об/мин, который просто устанавливается файлы?

Я делаю это на CentOS 5 или 6 (или аналогичном RedHat).

+0

Какую версию и версию на основе rpm вы используете? –

+0

извините, оставляем это вне. CentOS 5 и 6. – GaryO

ответ

3

Да, вы можете создавать RPM из образа файловой системы, который вы описываете. Это один из самых простых случаев для создания RPM, но вам все равно придется использовать инструменты.

Шаги примерно:

1) Создать среду RPM здания, если вы еще не сделали этого. В ее насущная, что бы дерева подкаталогов под вашей домашней директории, например, так:

rpm/ 
    BUILD/ 
    RPMS/ 
    x86_64/ (or whatever is the applicable arch) 
    SOURCES/ 
    SPECS/ 
    SRPMS/ 

2) Создание тарболл изображения, и поместите его в ИСТОЧНИКОВ/директории.

3) Создайте спецификационный файл в подкаталоге SPEC /. Есть инструменты, которые могут помочь вам создать скелет spec-файла. Например, если пакет «rpmdevtools» доступен для вас (что для CentOS 5 и 6), вы можете использовать «rpmdev-newspec». Вам нужно будет заполнить некоторые поля и предоставить некоторые (небольшие, в вашем случае) команды оболочки. Результатом может быть примерно следующее:

Name: my_sw 
Summary: Cool software 
Version: 1.0 
Release: 1 
Group: Applications 
License: <license> 
Source0: my_sw.tar.gz 

%description 
my_sw does awesome things that you'll really like. If you have any need for 
awesomeness, this is for you! 

%prep 
# different from the default: 
%setup -q -c -T 

%build 
# nothing to do 

%install 
# Start clean 
rm -rf %{buildroot} 
mkdir -p %{buildroot} 

# Put the files in the correct location relative to %{buildroot} 
ln -s %{buildroot} ./my_sw 
tar xzf %{S:0} 

%files 
%defattr(-,root,root,-) 
%{_bindir}/foo 
%{_mandir}/man1/foo.1 

%changelog 
* Wed Aug 27 2014 Gary O <[email protected]> 1.0-1 
- Initial spec 

Некоторые из них входят в конечную скорость; остальное сообщает rpmbuild о том, что ему нужно делать.

4) Построить его с rpmbuild:

rpmbuild -ba SPECS/my_sw.spec 

5) Бинарный RPM будет в RPMS /. RPM источника будет в SRPMS /.

Одна из лучших ссылок на RPM, которые я когда-либо находил, представляет собой руководство по RPM проекта Fedora: http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html. См. Особенно главу 9.

+0

Для CentOS 5 вам понадобится поле BuildRoot в спецификации. rpmdev-newspec создаст для вас подходящий вариант, если вы используете его для создания исходного скелета. –

+0

Для руководства по настройке 'BuildRoot' см.: Https://fedoraproject.org/wiki/PackagingDrafts/SecureBuildRoot –

+0

Я считаю, что для использования' vtopdir' потребуется макрокоманда rpm для установки дерева сборки rpm. Возможно, также для CentOS 6, но я не уверен. Я считаю, что это не обязательно для CentOS 7. –

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