22 sept. 2011

Corrigiendo los reportes generados por lintian de un metapaquete

Este artículo explicará como corregir los mensajes generados por lintian, estos mensajes son debido a que el programa empaquetado o metapaquete no cumple con el policy de Debian y para subir dicho programa es necesario que esté sin errores ni warning.

El archivo que se va a verificar es el .dsc del metapaquete creado al empaquetar canaima-caribay-radio.

Al ejecutar lintian con el archivo dsc devuelve el siguiente mensaje:

lintian -i canaima-caribay-radio_1.0.dsc 



W: canaima-caribay-radio source: debhelper-but-no-misc-depends canaima-caribay-radio
N: 
N:    The source package uses debhelper, but it does not include
N:    ${misc:Depends} in the given binary package's debian/control entry. Any
N:    debhelper command may add dependencies to ${misc:Depends} that are
N:    required for the work that it does, so recommended best practice is to
N:    always add ${misc:Depends} to the dependencies of each binary package if
N:    debhelper is in use.
N:    
N:    Refer to the debhelper(7) manual page for details.
N:    
N:    Severity: normal, Certainty: possible
N: 
W: canaima-caribay-radio source: package-uses-deprecated-debhelper-compat-version 4
N: 
N:    The debhelper compatibility version used by this package is marked as
N:    deprecated by the debhelper developer. You should really consider using
N:    a newer compatibility version.
N:    
N:    The compatibility version can be set in (preferred) debian/compat or by
N:    setting and exporting DH_COMPAT in debian/rules. If it is not set in
N:    either place, debhelper defaults to the deprecated compatibility version
N:    1.
N:    
N:    Refer to the debhelper(7) manual page for details.
N:    
N:    Severity: normal, Certainty: certain
N: 
W: canaima-caribay-radio source: binary-arch-rules-but-pkg-is-arch-indep
N: 
N:    It looks like you try to run code in the binary-arch target of
N:    debian/rules, even though your package is architecture- independent.
N:    
N:    Severity: normal, Certainty: certain
N: 

El primer warning es que hace falta agregar ${misc:Depends] en las dependencias.  Adicionalmente se tiene que cambiar el parámetro Standards-Version a la versión 3.9.1.

Section: misc
Priority: optional
Homepage: http://canaima.softwarelibre.gob.ve
Standards-Version: 3.9.1

Package: canaima-caribay-radio
Version: 1.0
Maintainer: Ernesto Nadir Crespo Avila <ecrespo@cenditel.gob.ve>
Depends: ${misc:Depends},jackd2, libjack-jackd2-0, libjack-jackd2-dev, pulseaudio-module-jack, qjackctl, libjack-jackd2-0, libjack-jackd2-dev, vorbis-tools, libvorbis-dev, libogg-dev, libmad0-dev, libsamplerate0-dev, libflac-dev, libsndfile1-dev, libavcodec-dev, libavformat-dev, libspeex-dev, python-gtk2-dev, python-mutagen, libdbus-1-dev, ffmpeg, libshout3-dev, libtwolame-dev, twolame, idjc, audacity, audacity-data, audacity-dbg, icecast2, easytag
Architecture: all
Copyright: copyright
Changelog: changelog 
Description: Metapaquete para la instalacion de radio streaming
 Metapaquete para la instalacion de radio streaming con icecast2 e idjc.


El segundo warning menciona que el archivo debian/compat tiene dentro el número 4 y es necesario que se actualice a la versión de debhelper que se está usando para empaquetar, en este caso debe cambiar a 8. Esto se tiene que cambiar en la plantilla de equivs.

vim /usr/share/equivs/template/debian/compat 
Cambiar 4 por 8.

El siguiente warning menciona un problema en la definición de la arquitectura, que es necesario quitar binary-arch y nuestro paquete es independiente de la plataforma. Esto se resuelve modificando canaima-caribay-radio cambian el parámetro Architecture: all por any.

Luego de realizar esos cambios se vuelve a crear el metapaquete y  a ejecutar lintian:

 lintian -i canaima-caribay-radio_1.0.dsc 

W: canaima-caribay-radio source: dh-clean-k-is-deprecated
N: 
N:    This package calls dh_clean -k in its debian/rules file and declares a
N:    debhelper compatibility version of at least 7.
N:    
N:    debhelper 7 deprecated dh_clean -k in favour of dh_prep.
N:    
N:    Refer to the dh_clean(1) manual page for details.
N:    
N:    Severity: normal, Certainty: certain
N: 
W: canaima-caribay-radio source: package-lacks-versioned-build-depends-on-debhelper 8
N: 
N:    The package either doesn't declare a versioned build dependency on
N:    debhelper or does not declare a versioned build dependency on a new
N:    enough version of debhelper to satisfy the declared compatibility level.
N:    
N:    Recommended practice is to always declare an explicit versioned
N:    dependency on debhelper equal to or greater than the compatibility level
N:    used by the package, even if the versioned dependency isn't strictly
N:    necessary. Having a versioned dependency also helps with backports to
N:    older releases and correct builds on partially updated systems.
N:    
N:    Refer to the debhelper(7) manual page for details.
N:    
N:    Severity: minor, Certainty: certain
N: 


Luego de cambiar el archivo compat y la versión del standards-version aparece un warning sobre el comando dh_clean -k que se tiene que sustituir por dh_prep en el archivo debian/rules de la plantilla:

vim /usr/share/equivs/template/debian/rules

install: build
        dh_testdir
        dh_testroot
        dh_prep

El otro warning menciona que debhelper tiene un número de versión viejo. Para cambiarlo se busca el archivo control.in en las plantillas y se modifica la dep

vim /usr/share/equivs/template/debian/control.in

Se modifica la siguiente línea:

Build-Depends: debhelper (>= 8)

Se vuelve a empaquetar y a ejecutar lintian:
lintian -i canaima-caribay-radio_1.0.dsc

Listo, no más mensajes de error o warnings.




1 comentario:

muammar dijo...

Es importante comentar que cuando se hace un cambio de Standard-Versions hay que revisar upgrading-checklist.txt para ver qué modificaciones hay que hacer para cubrir el policy. No tiene sentido cambiar el stardard-versions sin hacer las modificaciones necesarias.

Con respecto al compat level, pues no veo por qué usar un nivel alto si no se van a utilizar los features. De todas maneras, como ya lo he dicho a algunas personas que he patrocinado, no es tan grave porque los compat levels se van volviendo obsoletos con el tiempo. Siempre es buena idea echar un vistazo en el manual de debhelper.