Estoy intentando crear un archivo RPM para la utilidad wget. Mis dos intentos (con sudo y sin sudo) de usar el comando rpmbuild no lograron crear un archivo .rpm.
Ejecuto un comando "sudo rpmbuild" para usar un archivo de especificaciones. Pero recibo estos errores:
error: Archivo no encontrado: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget error: Archivo no encontrado: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr /local/share/man/man1/wget.1
Si creo manualmente las rutas del directorio y copio los archivos manualmente, me encuentro con otros problemas en el futuro. Creo que algo anda mal si el comando rpmbuild espera que los archivos clave estén en las ubicaciones anteriores.
Leí que se recomendaba no usar sudo. Cuando no uso sudo, el comando rpmbuild ( rpmbuild -v -bb --clean SPECS/wget.spec
) muestra esto:
Ejecutando(%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: no se puede eliminar 'wget-1.19/po/[correo electrónico protegido]': Permiso denegado rm: no se puede eliminar 'wget-1.19/po/zh_CN.po': Permiso denegado rm: no se puede eliminar 'wget-1.19/po/id.gmo': Permiso denegado rm: no se puede eliminar 'wget-1.19/po /gl.gmo': Permiso denegado...
Veo otras líneas que dicen "rm no puede eliminar... Permiso denegado". Esperaba que el comando rpmbuild funcionara. Cambié los permisos de la carpeta wget-1.19 para que sean 777 (a través de sudo chmod) y el propietario y el grupo sean idénticos al usuario que ejecuta el comando rpmbuild. Todavía tenía el problema.
¿Qué puedo hacer para crear un paquete RPM de la utilidad 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
Lo anterior fue modificado pero basado en gran medida en el ejemplo del archivo de especificaciones aquí:https://www.ibm.com/developerworks/library/l-rpm1/index.html
Respuesta1
Este error:
error: Archivo no encontrado: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget
significa que usted especificó este archivo en la sección %files:
%files
/usr/local/bin/wget
entonces rpmbuild espera este archivo en la ruta $RPM_BUILD_ROOT/usr/local/bin/wget pero no está allí. Por eso este error. Viceversa para la página de manual.
Puede ejecutarlo rpmbuild -bi
, que se detendrá justo después de %install
la fase y puede verificar el contenido de /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/ donde make install
realmente colocaron los archivos.
IadivinarEso tampoco
%install
make install prefix=$RPM_BUILD_ROOT/usr/local
o
%files
%defattr(-,root,root)
/usr/bin/wget
%doc %attr(0444,root,root) /usr/share/man/man1/wget.1
solucionará su error. (¡solo uno de esos!)