LinuxForum.Fans
Тема

RPM из CPIO архива

Автор: surgutor 33 сообщений 4023 просмотров
#335110
Vascom написал:
То есть ты хочешь просто файл архива в rpm поместить, не распаковывая этот cpio архив?
И спек у тебя совершенно неправильный. Секция %install должна быть не пустой, а такой как я писал, и секция %files тоже.

По идее да, rpm содержит cpio, а он уже конечные директории с файлами.
Идея такая, что при запуске виртуальной среды, происходит устанавливака этого rpm файл.
То есть по сути просто распаковывака его (cpio) и разбрасывание внутренностей по директориям /etc и /opt

Я не совсем понимаю, зачем install, если я по сути ничего с файлами не делаю, просто запихиваю их в cpio архив.

ВЕдб он распаковывает tar.gz как source файл, а потом должен распакованне файлы запихнуть в cpio, а его в rpm

#335188
surgutor написал:
Я не совсем понимаю, зачем install, если я по сути ничего с файлами не делаю, просто запихиваю их в cpio архив.

Секция %install нужна для правильного создания rpm-пакета. Нельзя просто указывать файлы откуда попало. Все файлы, помещаемые в rpm-пакет должны быть скопированы в этой секции в %{buildroot}, который будет являться корнем / для установки файлов из пакета.
То есть например, если тебе надо положить файл foo.conf в /etc, то ты должен сделать

text
mkdir %{buildroot}/etc
cp foo.conf %{buildroot}/etc/foo.conf

Это обязательное условие.
При этом файл foo.conf должен браться не откуда попало, а он командой %setup автоматически извлекается из архива, определённого в Source0.

surgutor написал:
ВЕдб он распаковывает tar.gz как source файл, а потом должен распакованне файлы запихнуть в cpio, а его в rpm

При создании rpm всё так и происходит.

Не изобретай велосипед, сделай всё по правилам.

#335220
text

Name: mms_relay_sdpcba_rpm
Version: 3.0.L19.R6D07.noarch.new
Release: 2
Summary: Relay RPM/SDP
Group: mio
License: Ericsson
Source: /usr/src/packages/SOURCES/mms_relay_sdpcba_rpm-3.0.L19.R6D07-1.noarch.new.tar.gz
BuildRoot: /

%description

%prep

%setup -c

%build

%install mkdir -p %{buildroot}/etc/start.d/ordered/ cp /usr/src/packages/BUILD/etc/start.d/ordered/S50mms_relay %{buildroot}/etc/start.d/ordered/S50mms_relay mkdir -p %{buildroot}/opt/tomcat/webapps_from_rpm/ cp /usr/src/packages/BUILD/opt/hello.txt /opt/hello.txt cp /usr/src/packages/BUILD/opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war %{buildroot}/opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war

%files /usr/src/packages/BUILD/etc/start.d/ordered/S50mms_relay /usr/src/packages/BUILD/opt/hello.txt /usr/src/packages/BUILD/opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war

%changelog * Tue Aug 27 2013 Bullshit Bullshitov - Initial build

Правильно ли я понимаю, что при такой конфигурации он распакует мои файлы в /etc и /opt ?
При условии что я BuildRoot указал как / ? Но в таком случае он мне говорит что / не может быть BuildRoot
error: BuildRoot can not be "/": /

и еще BuildRoot и %{buildroot} принимают одно и тоже значение, правильно?

#335222

Удали BuildRoot: / вообще. И тогда будет правильно.

#335229

Да, я удалил, он собирает пакет, но все равно стрктура получается
mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new-2.x86_64.rpm\mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new-2.x86_64.cpio\.\usr\src\packages\BUILD\*
а должно быть
mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new-2.x86_64.rpm\mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new-2.x86_64.cpio\.\*

#335230

Да, я удалил, он собирает пакет, но все равно стрктура получается
mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new-2.x86_64.rpm\mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new-2.x86_64.cpio\.\usr\src\packages\BUILD\*
а должно быть
mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new-2.x86_64.rpm\mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new-2.x86_64.cpio\.\*

spec такой

text

Name: mms_relay_sdpcba_rpm
Version: 3.0.L19.R6D07.noarch.new
Release: 2
Summary: Relay RPM/SDP
Group: mio
License: Ericsson
Source: /usr/src/packages/SOURCES/mms_relay_sdpcba_rpm-3.0.L19.R6D07-1.noarch.new.tar.gz

%description

%prep

%setup -c

%build

%install mkdir -p %{buildroot}/etc/start.d/ordered/ cp /usr/src/packages/BUILD/etc/start.d/ordered/S50mms_relay %{buildroot}/etc/start.d/ordered/S50mms_relay mkdir -p %{buildroot}/opt/tomcat/webapps_from_rpm/ cp /usr/src/packages/BUILD/opt/hello.txt /opt/hello.txt cp /usr/src/packages/BUILD/opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war %{buildroot}/opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war

%files /usr/src/packages/BUILD/etc/start.d/ordered/S50mms_relay /usr/src/packages/BUILD/opt/hello.txt /usr/src/packages/BUILD/opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war

%changelog * Tue Aug 27 2013 Bullshit Bullshitov - Initial build

#335231

Это потому, что ты неправильно в секции %files указываешь. Надо так:

text
%files
/etc/start.d/ordered/S50mms_relay
/opt/hello.txt
/opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war

Ну и строку

text
cp /usr/src/packages/BUILD/opt/hello.txt /opt/hello.txt

замени на

text
cp /usr/src/packages/BUILD/opt/hello.txt %{buildroot}/opt/hello.txt
#335234
Vascom написал:
Это потому, что ты неправильно в секции %files указываешь. Надо так:
text
%files
/etc/start.d/ordered/S50mms_relay
/opt/hello.txt
/opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war

Ну и строку

text
cp /usr/src/packages/BUILD/opt/hello.txt /opt/hello.txt

замени на

text
cp /usr/src/packages/BUILD/opt/hello.txt %{buildroot}/opt/hello.txt

Если в %file указывать без /usr/src/packages/BUILD, то он ругается на отсутствие файлов:

text

pkgdev@SC-2-1:~/rpmbuild> sudo rpmbuild -ba mms_relay_sdpcba_rpm-3.0.L19.R6D07-1.noarch.new.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.1262
+ umask 022
+ cd /usr/src/packages/BUILD
+ cd /usr/src/packages/BUILD
+ rm -rf mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new
+ /bin/mkdir -p mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new
+ cd mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new
+ /usr/bin/gzip -dc /usr/src/packages/SOURCES/mms_relay_sdpcba_rpm-3.0.L19.R6D07-1.noarch.new.tar.gz
+ tar -xvvf -
drwx------ root/root         0 2013-08-27 13:14 etc/
drwx------ root/root         0 2013-08-27 13:14 etc/start.d/
drwxr-xr-- root/root         0 2013-08-27 13:14 etc/start.d/ordered/
-rwxr-xr-- root/root      1683 2013-08-27 13:14 etc/start.d/ordered/S50mms_relay
drwx------ root/root         0 2013-08-27 13:14 opt/
drwx------ root/root         0 2013-08-27 13:14 opt/tomcat/
drwx------ root/root         0 2013-08-27 13:14 opt/tomcat/webapps_from_rpm/
-rwxr-xr-- root/root  30214657 2013-08-27 13:14 opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war
-rw-r--r-- root/root         6 2013-08-27 13:14 opt/hello.txt
+ STATUS=0
+ '[' 0 -ne 0 ']'
++ /usr/bin/id -u
+ '[' 0 = 0 ']'
+ /bin/chown -Rhf root .
++ /usr/bin/id -u
+ '[' 0 = 0 ']'
+ /bin/chgrp -Rhf root .
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.99799
+ umask 022
+ cd /usr/src/packages/BUILD
+ cd mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.99799
+ umask 022
+ cd /usr/src/packages/BUILD
+ cd mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new
+ mkdir -p '%{buildroot}/etc/start.d/ordered/'
+ cp /usr/src/packages/BUILD/etc/start.d/ordered/S50mms_relay '%{buildroot}/etc/start.d/ordered/S50mms_relay'
+ mkdir -p '%{buildroot}/opt/tomcat/webapps_from_rpm/'
+ cp /usr/src/packages/BUILD/opt/hello.txt '%{buildroot}/opt/hello.txt'
+ cp /usr/src/packages/BUILD/opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war '%{buildroot}/opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war'
+ /usr/lib/rpm/brp-lib64-linux
sf@suse.de: if you find problems with this script, drop me a note
+ test -x /usr/sbin/Check -a 0 = 0 -o -x /usr/sbin/Check -a '!' -z ''
+ echo 'I call /usr/sbin/Check...'
I call /usr/sbin/Check...
+ /usr/sbin/Check
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-symlink
Processing files: mms_relay_sdpcba_rpm-3.0.L19.R6D07.noarch.new-2
error: File not found: /etc/start.d/ordered/S50mms_relay
error: File not found: /opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war
Checking for unpackaged file(s): /usr/lib/rpm/check-files %{buildroot}
Checking for unpackaged file(s): /usr/lib/rpm/check-files %{buildroot}

RPM build errors: File not found: /etc/start.d/ordered/S50mms_relay File not found: /opt/tomcat/webapps_from_rpm/relay-war-3.0.L19.R6D07.war pkgdev@SC-2-1:~/rpmbuild>

#335238

Покажи вывод rpm --eval %{buildroot}
Ты не от пользователя собираешь?

Макрос %{buildroot} должен раскрываться в путь.

#335241
Vascom написал:
Покажи вывод rpm --eval %{buildroot}
Ты не от пользователя собираешь?

Макрос %{buildroot} должен раскрываться в путь.

pkgdev@SC-2-1:~> rpm --eval %{buildroot}
%{buildroot}


Я собираю от пользователя, дал ему sudo-шные права польностью

#335243

Ясно, значит это из-за неустановленных пакетов, о которых я говорил.
Тогда верни эту строку:

text
BuildRoot: %{_tmppath}/%{name}-root

Уж %{_tmppath} я надеюсь у тебя раскроется.

#335255
Vascom написал:
Ясно, значит это из-за неустановленных пакетов, о которых я говорил.
Тогда верни эту строку:
text
BuildRoot: %{_tmppath}/%{name}-root

Уж %{_tmppath} я надеюсь у тебя раскроется.

ААААА!!!!!
ОНО ЖИВОЕ!!!!! :)
Спасибо просто наиогромнейшее! НАИОГРОМНЕЙШЕЕ!!!
Если бы ты знал как ты мне помог и насколько твоя помощь важна в будущем! Точее для чего это все нужно!
С меня пиво:)

#335256

:)
Поздравляю с первенцем.

Войдите или зарегистрируйтесь, чтобы ответить.