Я пытаюсь создать файл RPM для утилиты wget. Обе мои попытки (с sudo и без sudo) использовать команду rpmbuild не приводят к созданию файла .rpm.
Я запускаю команду "sudo rpmbuild", чтобы использовать файл спецификации. Но получаю следующие ошибки:
ошибка: Файл не найден: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget ошибка: Файл не найден: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/share/man/man1/wget.1
Если я вручную создаю пути к каталогам и вручную копирую файлы, то в дальнейшем у меня возникают другие проблемы. Я думаю, что что-то не так, если команда rpmbuild ожидает, что ключевые файлы будут в указанных выше местах.
Я читал, что рекомендуется не использовать sudo. Когда я не использую sudo, команда rpmbuild ( rpmbuild -v -bb --clean SPECS/wget.spec
) показывает это:
Выполнение(%prep): /bin/sh -e /var/tmp/rpm-tmp.NiuIFV + umask 022 + cd /home/ec2-user/mywget/BUILD + cd /home/ec2-user/mywget/BUILD + rm -rf wget-1.19 rm: невозможно удалить 'wget-1.19/po/[email protected]': Отказано в доступе rm: невозможно удалить 'wget-1.19/po/zh_CN.po': Отказано в доступе rm: невозможно удалить 'wget-1.19/po/id.gmo': Отказано в доступе rm: невозможно удалить 'wget-1.19/po/gl.gmo': Отказано в доступе ...
Я вижу другие строки "rm cannot remove ... Permission denied". Я ожидал, что команда rpmbuild сработает. Я изменил права доступа к папке wget-1.19 на 777 (через sudo chmod), при этом владелец и группа идентичны пользователю, запустившему команду rpmbuild. Проблема все еще осталась.
Что можно сделать, чтобы создать RPM-пакет утилиты wget?
# This is a sample spec file for wget
%define _topdir /home/ec2-user/mywget
%define name wget
%define release 1
%define version 1.19
%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
Вышеприведенный код был изменен, но в значительной степени основан на примере файла спецификации здесь:https://www.ibm.com/developerworks/library/l-rpm1/index.html
решение1
Эта ошибка:
ошибка: Файл не найден: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget
означает, что вы указали этот файл в разделе %files:
%files
/usr/local/bin/wget
так что rpmbuild ожидает этот файл в пути $RPM_BUILD_ROOT/usr/local/bin/wget, но его там нет. Отсюда и эта ошибка. Для страницы man все наоборот.
Вы можете запустить rpmbuild -bi
, который остановится сразу после %install
фазы, и проверить содержимое /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/, куда make install
на самом деле помещены файлы.
япредполагатьчто либо
%install
make install prefix=$RPM_BUILD_ROOT/usr/local
или
%files
%defattr(-,root,root)
/usr/bin/wget
%doc %attr(0444,root,root) /usr/share/man/man1/wget.1
исправлю вашу ошибку. (только одна из таких!)