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.
Tips para empaquetadores
Trabajo en progreso:
Encontrar equivalencias para las dependencias de construcción (BuildRequires) de otras distribuciones basadas en rpm:
- Intente primero con los tips de https://wiki.mageia.org/en/RPM_spec_lingo_across_distributions
- Intente utilizar urpmq --whatprovides foo
, urpmf foo
(de preferencia configure antes la descarga de metadatos a siempre en MCC -> Administración de software -> Configurar fuentes de medios para instalación y actualización, menú Opciones)
- Vea en https://pkgs.org/ la sección Provides de los paquetes devel/dependencias de construcción de la otra distribución, usualmente los que digan pkgconfig(foo), cmake(foo), python3dist(foo) son los candidatos ideales, también puede buscar por archivos específicos ejemplo exiv2Config.cmake
Ejemplos:
urpmf exiv2Config.cmake lib64exiv2-devel:/usr/lib64/cmake/exiv2/exiv2Config.cmake libexiv2-devel:/usr/lib/cmake/exiv2/exiv2Config.cmake
urpmq --whatprovides readline-devel lib64readline-devel
De los ejemplos anteriores notarán que para un sistema 64b con todos los repositorios configurados se presentan 2 alternativas, y se preguntarán como se maneja esta elección en los spec.
Método 1: macro %{_lib}
BuildRequires: %{_lib}exiv2-devel
Método 2: macro %mklibname
BuildRequires: %mklibname exiv2 -d
Método 3: Buscar entre los Provides de los paquetes
urpmq --provides lib64exiv2-devel cmake(exiv2)[== 0.27.6] devel(libexiv2(64bit)) exiv2-devel[== 0.27.6-2.mga9] lib64exiv2-devel[== 0.27.6-2.mga9] lib64exiv2-devel(x86-64)[== 0.27.6-2.mga9] libexiv-devel[== 0.27.6-2.mga9] libexiv2-devel[== 0.27.6-2.mga9] pkgconfig(exiv2)[== 0.27.6] urpmq --provides libexiv2-devel cmake(exiv2)[== 0.27.6] devel(libexiv2) exiv2-devel[== 0.27.6-2.mga9] libexiv-devel[== 0.27.6-2.mga9] libexiv2-devel[== 0.27.6-2.mga9] libexiv2-devel(x86-32)[== 0.27.6-2.mga9] pkgconfig(exiv2)[== 0.27.6]
Cualquiera de los que no dependan de la arquitectura nos servirá, cmake(exiv2) , exiv2-devel , libexiv2-devel , pkgconfig(exiv2)
Obtener las fuentes automáticamente
Queremos actualizar algún paquete, ya que hay nueva versión disponible, generalmente hacemos un paso adicional que es descargar manualmente las fuentes nuevas, podemos ahorrarnos ese paso agregando
--define '_disable_source_fetch 0'
A las opciones de rpmbuild o bm , esto generalmente solo se tiene que hacer una vez, al menos que durante el proceso de afinación del spec se agregue otra fuente remota
Arreglar problemas con la creación del paquete:
Compilación:
Hay que fijarse muy bien en la causa del fallo, a veces es por dependencias no satisfechas y hay que ver si existen en mageia (vea la sección Encontrar equivalencias), otras porque las versiones de mageia no son las que se necesitan, si es una librería que no sea muy usada (urpmq --whatrequires libreria|uniq
prácticamente solo debe devolver la aplicación) o que no exista en mageia podremos considerar empaquetarla siempre y cuando no entremos en el infierno de las dependencias (la librería requiere empaquetar otras cosas que requieren empaquetar otras cosas)
Otras ocasiones hay que añadir (o remover opciones de compilación o de enlace), en el caso de openvr el mensaje del fallo sugería compilar con la opción -fPIC, así que se necesita añadir lo siguiente al inicio del spec
%global optflags %{optflags} -fPIC
A veces el código de la aplicación no es compatible con las herramientas disponibles, hay que buscar parches en otras distribuciones o con el desarrollador.
Mensajes undefined reference to, este problema me lo encontré en devilutionx , finalmente encontré la solución en el wiki de mageia, añadir en el spec
%define _disable_ld_no_undefined 1
El caso de los spec fedora para paquetes basados en python o rust
Ambos casos veremos macros para obtener BuildRequires de forma "automatica" pero no siempre funciona en nuestro sistema o en el BS de mageia.
Para el caso de rust, fedora tiene un muy completo surtido de módulos rust empaquetados, nosotros no tenemos ese lujo, así que hay que hacer un paso extra para empaquetar como fuente adicional los módulos rust requeridos, vea el src.rpm de czkawka de mageia.
Para ambos casos hay que poner BuildRequires manualmente de algunos paquetes macros.
Para el caso de los paquetes python se puede afinar las BuildRequires poniendo atención a los mensajes de dependencias no encontradas que se producirán al intentar crear el paquete
Instalación:
Seguramente les ha pasado que por fin compila bien, pero la construcción del paquete falla en la fase final por diversos motivos, archivos no listados, alguna parte de la sección %install falla, etc, la mayoría de las veces podemos ahorrarnos algo de tiempo tras hacer la(s) correccion(es) agregando la opción --noprep
a rpmbuild o -o --noprep
a bm
Fallo por no poder crear los paquetes debug:
Esto se puede deber a varios motivos, no se usó el parámetro adecuado en la sección %build, o simplemente no se genera la información, dependiendo del caso hay que añadir el parámetro adecuado o añadir al spec
%define debug_package %{nil}
Missing build-id in , esto es una advertencia, algunos paquetes no generan build-id, generalmente el paquete se construye bien, de no ser así o si quiere quitar la advertencia, agregue al spec.
%define _build_id_links none
- Blog de katnatek
- Entra a tu cuenta o crea una para poder comentar.