LINUX.ORG.RU

создание своего rpm-пакета

 


1

2

Здравствуйте. Пользуюсь CentOS и я новичок в этом деле. Есть задача по созданию своего rpm-пакета. Главная задача этого пакета раскидать файлы которые в него будут входить по нужным директориям. Делаю это через spec-файл (создал дерево из папок BUILD,BUILDROOT и т.д.). В директорию Source положил архив, в котором все эти файлы находятся и указал название этого архива в секции Source. В какую секцию и как мне написать команды копирования файлов в определенные директории. Просто когда я делаю rpmbuild моего spec-файла, то он разархивирует мой архив в папку build. Пишу так: %post cp -r %build/MonitoringRus-%{version}/create.sql /root

в install обычно. post - это секция которая запускается ПОСЛЕ установки файлов

Обычно так ( хотя там наверняка есть макросы )


%install
cp -r $RPM_SOURCE_DIR/test $RPM_BUILD_ROOT/usr/local/test


%files
%defattr(644, test, test, 755)
/usr/local/test

Jopich1 ()
Последнее исправление: Jopich1 (всего исправлений: 1)
Ответ на: комментарий от Jopich1

Круто, при создании пакета файлы кладутся куда надо, а вот при его установки - нет. Я думал что все будет работать одинаково. Подскажите, в какую секцию надо добавить команды копирования.

alex_alex ()

Расковыряй spec-файл от какого-нибудь готового пакета. Чтение мануала + анализ чужого пакета дают в среднем в 100500 раз больше знаний, чем просто чтение мануала.

anonymous ()
Ответ на: комментарий от vtVitus

не могу понять((( при сборке пакета происходит разархивирование из sources в build. Если ничего не писать в секции, идущие после build, то пакет соберется и будет как архив из sources. При установке этого пакета ничего не произойдет, так?

alex_alex ()
Ответ на: комментарий от Jopich1

допустим в секцию post добавляю команду копирования файла, так вот я должен указать просто название файла, который я хочу скопировать или его путь? если путь, то из какой директории? из %build или %buildroot?

alex_alex ()
Ответ на: комментарий от alex_alex

Блин, в общем нихрена не догоняю. Очень нужна ваша помощь!!! Есть просто один файл create.sql. Хочу создать rpm-пакет, который установке просто положит этот файл в определенное место в системе. Для этого заархивировал этот файл и положил в SOURCES. Дальше не знаю что делать, надо ли его копировать в bouldroot или нет?? Надо ли его указывать в секции files?? непонятно(((

alex_alex ()
Ответ на: комментарий от alex_alex
Summary: Outputs "hello world" on execution..
Name: hello_world
Version: 1.0.0.
Release: 1.
License: jopa

%description
hello world

%install
mkdir -p $RPM_BUILD_ROOT/opt/hello_world
cp $RPM_SOURCE_DIR/hello_world $RPM_BUILD_ROOT/opt/hello_world

%files
%defattr(700,root,root)
/opt/hello_world/hello_world
Jopich1 ()
Последнее исправление: Jopich1 (всего исправлений: 1)
Ответ на: комментарий от Jopich1

%install

mkdir -p $RPM_BUILD_ROOT/opt/hello cp -r $RPM_BUILD_DIR/MonitoringRus-1.0.0/create.sql $RPM_BUILD_ROOT/opt/hello

%files %defattr(700,root,root) /opt/hello/create.sql

вроде так же сделал. Итог: 1. при сборке пакета в buildroot теперь пусто (может быть так и надо, типа чистится) 2. при накатывании этого пакета в системе в /opt/hello файл create.sql не появляется

я опять где-то накосячил?

alex_alex ()
Ответ на: комментарий от alex_alex

и никаких ошибок при сборке/установке пакета ?

что показывает rpm -qlp на созданный rpm файл ?

P.S.: ты не перепутал rpm пакет с src rpm пакетом ?

собирать можно rpmbuild --ba

Jopich1 ()
Последнее исправление: Jopich1 (всего исправлений: 1)
Ответ на: комментарий от alex_alex

Там собираются 2 rpm файла: src.rpm и .rpm

src.rpm содержит исходники для построения rpm пакета и ставится обычно в /usr/src. Тебе нужен rpm пакет.

Jopich1 ()
Последнее исправление: Jopich1 (всего исправлений: 1)