LINUX.ORG.RU
ФорумAdmin

Building RPM-package

 


0

1

Всем привет. Собираю RPM-пакет как здесь http://www.ibm.com/developerworks/library/l-rpm1/
Т.е. создал все директории, поместил архив с программой в верную папку.
Собирал wget уже более новой версии http://ftp.gnu.org/gnu/wget/wget-1.13.4.tar.gz чем описано в статье. Поправил немного SPEC-файл, он теперь выглядит так:

%define _topdir         /home/build/mywget
%define name                    wget
%define release         1
%define version         1.13.4
%define buildroot %{_topdir}/%{name}-%{version}-root

BuildRoot:              %{buildroot}
Summary:                GNU wget
License:                GPL
Name:                   %{name}
Version:                %{version}
Release:                %{release}
Source:                 %{name}-%{version}.tar.gz
Prefix:                 /usr
Group:                  Development/Tools

%description
The GNU wget program downloads files from the Internet using the command-line.

%prep
%setup -q

%build
./configure
make

%install
make install prefix=$RPM_BUILD_ROOT/usr

%files
%defattr(-,root,root)
/usr/local/bin/wget

%doc %attr(0444,root,root) /usr/local/share/man/man1/wget.1

После выполнения
rpmbuild -v -bb --clean SPECS/wget.spec

начинается компилирование и вываливается ошибка:

+ /usr/lib/rpm/brp-python-bytecompile
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: wget-1.13.4-1.i686
error: File not found: /home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/usr/local/bin/wget
error: File not found: /home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/usr/local/share/man/man1/wget.1


RPM build errors:
    File not found: /home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/usr/local/bin/wget
    File not found: /home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/usr/local/share/man/man1/wget.1

Я вот не могу понять откуда береться путь /home/build/rpmbuild/BUILDROOT/... Что я не так-то делаю?

Спасибо!

★★★★★

Вывод секции make install - в студию.

поместил архив с программой в верную папку.

папку

В мамку епт.

tailgunner ★★★★★ ()

у тебя
prefix=$RPM_BUILD_ROOT/usr
а ты пакуешь файлы которые должны быть в
prefix=$RPM_BUILD_ROOT/usr/local

либо меняй префикс, либо %files

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

сделай по нормальному
./configure --prefix=/usr/local

и просто
make install prefix=$RPM_BUILD_ROOT

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

Поменял

%define _topdir         /home/build/mywget
%define name                    wget
%define release         1
%define version         1.13.4
%define buildroot %{_topdir}/%{name}-%{version}-root

BuildRoot:              %{buildroot}
Summary:                GNU wget
License:                GPL
Name:                   %{name}
Version:                %{version}
Release:                %{release}
Source:                 %{name}-%{version}.tar.gz
Prefix:                 /usr
Group:                  Development/Tools

%description
The GNU wget program downloads files from the Internet using the command-line.

%prep
%setup -q

%build
./configure --prefix=/usr/local
make

%install
make install prefix=$RPM_BUILD_ROOT
%files
%defattr(-,root,root)
/usr/local/bin/wget

%doc %attr(0444,root,root) /usr/local/share/man/man1/wget.1

Но все равно

make[3]: Entering directory `/home/build/mywget/BUILD/wget-1.13.4'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/home/build/mywget/BUILD/wget-1.13.4'
make[2]: Leaving directory `/home/build/mywget/BUILD/wget-1.13.4'
make[1]: Leaving directory `/home/build/mywget/BUILD/wget-1.13.4'
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id /home/build/mywget/BUILD/wget-1.13.4
extracting debug info from /home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/bin/wget
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-python-bytecompile
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: wget-1.13.4-1.i686
error: File not found: /home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/usr/local/bin/wget
error: File not found: /home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/usr/local/share/man/man1/wget.1


RPM build errors:
    File not found: /home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/usr/local/bin/wget
    File not found: /home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/usr/local/share/man/man1/wget.1
[build@localhost mywget]$ 
ipeacocks ★★★★★ ()
Ответ на: комментарий от ipeacocks

вот же их лога
extracting debug info from /home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/bin/wget
у тебя wget в /bin/ походу а манов вообще может не небыть,
посмотри содержание папки
/home/build/rpmbuild/BUILDROOT/wget-1.13.4-1.i386/
и все что там запиши в
%files

Novell-ch ★★★★★ ()
Ответ на: комментарий от Novell-ch

Та у меня вообще нет папки BUILDROOT. Создавал только

[build@localhost mywget]$ ll
total 20
drwxrwxr-x. 3 build build 4096 May  1 14:03 BUILD
drwxrwxr-x. 2 build build 4096 May  1 01:19 RPMS
drwxrwxr-x. 2 build build 4096 May  1 01:52 SOURCES
drwxrwxr-x. 2 build build 4096 May  1 13:51 SPECS
drwxrwxr-x. 2 build build 4096 May  1 01:19 SRPMS
[build@localhost mywget]$ 

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

Лучше возмите готовый spec-файл, допустим от предыдущей версии wget. То есть взять src.rpm пакет и заменить в нём версию и исходники. Тогда и группа будет правильная и остальные опции.

В CentOS для сборки wget используется не "./configure", а макрос «%configere», содержащий --prefix=/usr и ещё кучу чего (см. вывод rpm --eval '%configure'). А инсталяция выполняется через:

make install DESTDIR=$RPM_BUILD_ROOT CFLAGS=«$RPM_OPT_FLAGS»

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

бросьте тогда у меня какой-то правильный спек файл, чтобы поправить. А так я вгет более старой версии и брал.

ipeacocks ★★★★★ ()
Ответ на: комментарий от mky

Все же вот попробовал и так

%define _topdir         /home/build/mywget
%define name                    wget
%define release         1
%define version         1.13.4
%define buildroot %{_topdir}/%{name}-%{version}-root

BuildRoot:              %{buildroot}
Summary:                GNU wget
License:                GPL
Name:                   %{name}
Version:                %{version}
Release:                %{release}
Source:                 %{name}-%{version}.tar.gz
Prefix:                 /usr
Group:                  Development/Tools

%description
The GNU wget program downloads files from the Internet using the command-line.

%prep
%setup -q

%build
#./configure --prefix=/usr/local
%configure --prefix=/usr
make

%install
make install DESTDIR=$RPM_BUILD_ROOT CFLAGS="$RPM_OPT_FLAGS"
%files
%defattr(-,root,root)
/usr/local/bin/wget

%doc %attr(0444,root,root) /usr/local/share/man/man1/wget

Но ошибка осталась такой же.

ipeacocks ★★★★★ ()

Всем спасибо, у меня все получилось!

ipeacocks ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.