OpenMandriva: Mageia (Mageia 9) 20/Agosto/2023 - Anuncio, Descargas.
Blogdrake recomienda descargar las imágenes de instalación (iso) vía torrent para evitar corrupción de datos, aprovechar mejor su ancho de banda y mejorar la difusión de las distribuciones.
Creando mi primer paquete para Mandriva: buoh - 2ª Parte
En esta segunda parte contaré como construí el paquete y los errores que obtuve al verificarlo antes de darlo por válido.
1. CONSTRUYENDO EL PAQUETE
La primera versión del fichero buoh.spec que compile fue esta:
%define name buoh
%define version 0.8.2
%define release %mkrel 1
Name: %{name}
Summary: Online comics reader
Version: %{version}
Release: %{release}
Source0: http://buoh.steve-o.org/downloads/%{name}-%{version}.tar.bz2
Source1: %{name}-%{version}.tar.bz2
URL: http://buoh.steve-o.org/
Group: Graphics
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
License: GPL
BuildRequires: libgtk+2.0_0-devel,libsoup-2.2-devel,libgnomeui2-devel,libGConf2-devel
Requires: gtk+2.0 >= 2.6
Requires: libsoup >= 2.2
Requires: libgnomeui2 >= 2.6
Requires: GConf2 >= 2.2
%description
Buoh is a reader for online strips comics. It has a number of features,
including: Selecting your favorites comic through a list of more than 130
comics, easy & simple an eye-candy view of an online comic, browsing over
the comic strip archives.
%prep
%setup -q -a 1
%build
%configure
%make
%install
rm -rf $RPM_BUILD_ROOT
%makeinstall
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(0755,root,root)
%doc README NEWS COPYING AUTHORS TODO
%{_bindir}/buoh
%changelog
* Sat Sep 25 2010 desUBIKado <desubikado@gmail.com> 0.8.2-1bdk
- buoh for Mandriva
Como veis esta versión difiere bastante de la definitiva que vimos en la primera parte de esta narración. Faltan detallar secciones importantes como %files, pero me sirvió para lanzarme a intentar construir el paquete con ella. Así cuando desde el directorio SPECS ejecuté rpmbuild -ba buoh.spec obtuve los siguientes errores de construcción:
1.
buoh-window.c: In function 'buoh_window_cmd_comic_save_a_copy':buoh-window.c:586: error: format not a string literal and no format arguments
make[2]: *** [buoh-window.o] Error 1
make[2]: Leaving directory `/home/desubikado/rpm/BUILD/buoh-0.8.2/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/desubikado/rpm/BUILD/buoh-0.8.2'
make: *** [all] Error 2
error: Estado de salida erróneo de /home/desubikado/rpm/tmp/rpm-tmp.uGsdst (%build)
Errores de construcción RPM:
Estado de salida erróneo de /home/desubikado/rpm/tmp/rpm-tmp.uGsdst (%build)
El motivo de este error lo encontré descrito en este documento: Problemas de Empaquetado y elegí la solución más sencilla que fue añadir la siguiente línea al fichero spec:
%define Werror_cflags %nil
2.
../libtool: line 466: CDPATH: command not found
../libtool: line 1144: func_opt_split: command not found
libtool: Version mismatch error. This is libtool 2.2.6b, but the
libtool: definition of this LT_INIT comes from an older release.
libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6b
libtool: and run autoconf again.
make[2]: *** [buoh] Error 63
make[2]: Leaving directory `/home/desubikado/rpm/BUILD/buoh-0.8.2/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/desubikado/rpm/BUILD/buoh-0.8.2'
make: *** [all] Error 2
error: Estado de salida erróneo de /home/desubikado/rpm/tmp/rpm-tmp.Di8yGP (%build)
Errores de construcción RPM:
Estado de salida erróneo de /home/desubikado/rpm/tmp/rpm-tmp.Di8yGP (%build)
Con este error Gonzalo Igartua de la lista de empaquetadores me dio la solución que fue poner autoreconf entre %configure y %make.
3.
.....
.....
+ autoreconf
+ make
/bin/sh ./config.status --recheck
running CONFIG_SHELL=/bin/sh /bin/sh ./configure i586-mandriva-linux-gnu --program-prefix= --prefix=/usr
--exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share
--includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/lib --localstatedir=/var --sharedstatedir=/usr/com
--mandir=/usr/share/man --infodir=/usr/share/info --x-includes=/usr/include --x-libraries=/usr/lib build_alias=i586-mandriva-linux-gnu
host_alias=i586-mandriva-linux-gnu target_alias=i586-mandriva-linux-gnu CFLAGS=-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2
-fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables
LDFLAGS= -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1 -Wl,--build-id CXXFLAGS=-O2 -g -pipe -Wp,
-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fomit-frame-pointer -march=i586 -mtune=generic
-fasynchronous-unwind-tables FFLAGS=-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4
-fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables --no-create --no-recursion
configure: WARNING: you should use --build, --host, --target
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
./configure: line 2885: syntax error near unexpected token `0.35.0'
./configure: line 2885: `IT_PROG_INTLTOOL(0.35.0)'
make: *** [config.status] Error 2
error: Estado de salida erróneo de /home/desubikado/rpm/tmp/rpm-tmp.t9FuFk (%build)
Errores de construcción RPM:
Estado de salida erróneo de /home/desubikado/rpm/tmp/rpm-tmp.t9FuFk (%build)
De nuevo fue Gonzalo el que me indicó que me faltaba instalar el paquete intltool. La verdad es que esto me cogió un poco descolocado ya que para compilar el programa desde las fuentes no había hecho falta tenerlo instalado. Por ese motivo lo incluí como nueva dependencia para construir el paquete:
BuildRequires: intltool
Una vez instalado ya pude terminar la compilación del paquete y conseguí generar el rpm y el src.rpm.
Mas tarde terminaría de añadir una serie de declaraciones para las secciones %post y %postun tal y como se explican en el documento Como construir RPM's Mandriva en la sección Mas macros, la instrucción desktop-file-install tal y como había visto en el spec de Fedora y completé la sección %files.
2. VERIFICANDO EL PAQUETE
Ya tenía una primera versión del fichero spec que conseguía crear el paquete rpm sin errores.
%define name buoh%define version 0.8.2
%define release %mkrel 1
%define Werror_cflags %nil
Name: %{name}
Summary: Online comics readerVersion: %{version}
Release: %{release}Source: http://buoh.steve-o.org/downloads/%{name}-%{version}.tar.bz2
URL: http://buoh.steve-o.org/Group: Graphics
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildrootLicense: GPL
BuildRequires: intltoolBuildRequires: desktop-file-utils
BuildRequires: libgtk+2.0_0-devel >= 2.6BuildRequires: libGConf2-devel >= 2.2
BuildRequires: libgnomeui2-devel >= 2.6BuildRequires: libsoup-2.2-devel >= 2.2
Requires: gtk+2.0 >= 2.6Requires: libsoup >= 2.2
Requires: libgnomeui2 >= 2.6
Requires: GConf2 >= 2.2
%description
Buoh is a reader for online strips comics. It has a number of features,including: Selecting your favorites comic through a list of more than 130
comics, easy & simple an eye-candy view of an online comic, browsing overthe comic strip archives.
%prep
%setup -q
%build
%configureautoreconf
%make
%install
rm -rf %{buildroot}make DESTDIR="%{buildroot}" install
desktop-file-install \--delete-original \
--vendor="BDK-packagers" \--add-category="Graphics" \
--add-category="Viewer" \--dir %{buildroot}%{_datadir}/applications \
%{buildroot}%{_datadir}/applications/buoh.desktop
%cleanrm -rf %{buildroot}
%post
%update_menus
%update_icon_cache hicolor%post_install_gconf_schemas %{name}
%postun
%clean_menus
%update_icon_cache hicolor
%post_uninstall_gconf_schemas %{name}
%files
%defattr(0755,root,root)
%doc README NEWS COPYING AUTHORS TODO INSTALL%dir %{_datadir}/buoh
%dir %{_datadir}/buoh/comics%dir %{_datadir}/buoh/ui
%{_bindir}/buoh%{_sysconfdir}/gconf/schemas/buoh.schemas
%{_datadir}/applications/BDK-packagers-buoh.desktop%{_datadir}/buoh/comics/comics.xml
%{_datadir}/buoh/ui/buoh-ui.xml%{_datadir}/icons/hicolor/64x64/apps/buoh.png
%{_datadir}/icons/hicolor/16x16/apps/buoh.png
%changelog* Sat Sep 25 2010 desUBIKado <desubikado@gmail.com> 0.8.2-1bdk
- buoh for Mandriva
por lo que el siguiente paso fue verificar que estubiese bien construido, y para eso utilicé el comando rpmlint -i buoh-0.8.2-1bdk2010.1.i586.rpm.
Con los errores que me fue dando esta instrucción fui depurando el fichero buoh.spec. A continuación describo los principales avisos que obtuve:
1.
buoh.i586: W: spurious-executable-perm /usr/share/doc/buoh/README
buoh.i586: W: spurious-executable-perm /usr/share/doc/buoh/AUTHORS
buoh.i586: W: spurious-executable-perm /usr/share/doc/buoh/COPYING
buoh.i586: W: spurious-executable-perm /usr/share/doc/buoh/NEWSbuoh.i586: W: spurious-executable-perm /usr/share/doc/buoh/TODO
buoh.i586: W: spurious-executable-perm /usr/share/doc/buoh/INSTALLThe file is installed with executable permissions, but was identified as one
that probably should not be executable. Verify if the executable bits aredesired, and remove if not.
buoh.i586: W: script-without-shebang /usr/share/buoh/comics/comics.xml
buoh.i586: W: script-without-shebang /usr/share/applications/BDK-packagers-buoh.desktop
buoh.i586: W: script-without-shebang /etc/gconf/schemas/buoh.schemasbuoh.i586: W: script-without-shebang /usr/share/buoh/ui/buoh-ui.xml
This text file has executable bits set or is located in a path dedicated for
executables, but lacks a shebang and cannot thus be executed. If the file is
meant to be an executable script, add the shebang, otherwise remove theexecutable bits or move the file elsewhere.
Estos avisos se eliminaron sustituyendo
%defattr(0755,root,root)
por
%defattr(-,root,root)
ya que con la primera definición todos los ficheros cuando se instalasen tendrían permisos de ejecución y eso no era correcto.
2.
buoh.i586: W: non-standard-group Graphics
The value of the Group tag in the package is not valid. Valid groups are:"Amusements/Games", "Amusements/Graphics", "Applications/Archiving",
"Applications/Communications", "Applications/Databases","Applications/Editors", "Applications/Emulators", "Applications/Engineering",
"Applications/File", "Applications/Internet", "Applications/Multimedia","Applications/Productivity", "Applications/Publishing", "Applications/System",
"Applications/Text", "Development/Debug", "Development/Debuggers","Development/Languages", "Development/Libraries", "Development/System",
"Development/Tools", "Documentation", "System Environment/Base", "SystemEnvironment/Daemons", "System Environment/Kernel", "System
Environment/Libraries", "System Environment/Shells", "UserInterface/Desktops", "User Interface/X", "User Interface/X Hardware Support".
Se debía a la línea
Group: Graphics
y siendo Graphics un grupo válido, y viendo como un paquete oficial de Mandriva como gqview-2.1.5-9mdv2010.1.rpm lo usa, entendí que se trataba de un error de rpmlint (quizás no esté actualizado).
3.
buoh.i586: W: invalid-license GPL
Aquí tuve que sustituir
License: GPL
por la más concreta
License: GPLv2
que es la que aparecía en el fichero COPYING de las fuentes.
4.
buoh.i586: W: incoherent-version-in-changelog 0.8.2-1bdk 0.8.2-1bdk2010.1
Aquí fue sustituir
* Sat Sep 25 2010 desUBIKado <desubikado@gmail.com> 0.8.2-1bdk
por
* Sat Sep 25 2010 desUBIKado <desubikado@gmail.com> 0.8.2-1bdk2010.1
5.
buoh.i586: W: non-conffile-in-etc /etc/gconf/schemas/buoh.schemas
A non-executable file in your package is being installed in /etc, but is not a
configuration file. All non-executable files in /etc should be configurationfiles. Mark the file as %config in the spec file.
Aquí la solución fue sustituir
%{_sysconfdir}/gconf/schemas/buoh.schemas
por
%config %{_sysconfdir}/gconf/schemas/buoh.schemas
pero a continuación dio este otro aviso:
buoh.i586: W: conffile-without-noreplace-flag /etc/gconf/schemas/buoh.schemas
A configuration file is stored in your package without the noreplace flag. A
way to resolve this is to put the following in your SPEC file:
%config(noreplace) /etc/your_config_file_here
por lo que finalmente por lo sustituí por:
%config(noreplace) %{_sysconfdir}/gconf/schemas/buoh.schemas
Para ver como funciona esta macro se puede consultar este documento.
6.
buoh.i586: W: file-not-utf8 /usr/share/doc/buoh/NEWS
The character encoding of this file is not UTF-8. Consider converting it in
the specfile's %prep section for example using iconv(1).
Para solucionar este problema la solución fue anadir está línea al fichero buoh.spec en la seccción %prep
iconv -f iso8859-1 -t utf-8 NEWS > NEWS.conv && mv -f NEWS.conv NEWS
7.
buoh.i586: W: no-signature
You have to include your pgp or gpg signature in your package. For more
information on signatures, please refer to www.gnupg.org.
Este aviso no es importante, ya que los paquetes de BlogDrake no van firmados.
Una vez corregidos estos errores parecía que ya tenía el paquete bastante depurado, pero no era así. Gracias a una serie de consejos que recibí en la lista de correo de empaquetadores de BlogDrake terminé por fin de dar cera y abrillantar el fichero buoh.spec, pero eso lo dejo para la tercera y última parte de esta narración.
- Blog de desUBIKado
- Entra a tu cuenta o crea una para poder comentar.