* Imagenes de instalación de las versiones estables para Mageia y OpenMandriva.

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 reader

Version: %{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}-buildroot

License: GPL

BuildRequires: intltool

BuildRequires: desktop-file-utils

BuildRequires: libgtk+2.0_0-devel >= 2.6

BuildRequires: libGConf2-devel >= 2.2

BuildRequires: libgnomeui2-devel >= 2.6

BuildRequires: libsoup-2.2-devel >= 2.2

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

%build

%configure

autoreconf

%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


%clean

rm -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/NEWS

buoh.i586: W: spurious-executable-perm /usr/share/doc/buoh/TODO

buoh.i586: W: spurious-executable-perm /usr/share/doc/buoh/INSTALL

The file is installed with executable permissions, but was identified as one

that probably should not be executable. Verify if the executable bits are

desired, 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.schemas

buoh.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 the

executable 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", "System

Environment/Daemons", "System Environment/Kernel", "System

Environment/Libraries", "System Environment/Shells", "User

Interface/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 configuration

files. 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.