Anteriorment, en LliureX, Luis García creà un sistema derivat de germinate. Aquest sistema era una extensió de germinate, que s'havia de reprocessar abans. D'aquesta forma es tenien uns fitxers similars a les llavors de germinate, però amb la possibilitat de reprocessat degpp.
Tot aquest sistema s'anomenà Transgenic i el paquet, lliurex-cdd-toolbox. Àngel començà realitzant unes llavors que reutilitzaven les d'ubuntu i de les quals nosaltres estenguérem la funcionalitat. Amb aquesta finalitat va crear múltiples fitxers amb totes les catalogacions que es poguera requerir.
Ell , finalment, va utilitzar l'orde lliurex-meta-pkg update per a generar totes les llavors i tots els fitxers necessaris per al metapaquet i va acabar pujant el meta. En trusty, i possiblement en alguna versió anterior, es van construir les llavors totalment des de 0 (a excepció de lés bàsiques), de forma que nosaltres vam crear una versió totalment personalitzada.
Aquest fet , de vegades, va crear la confusió que a nosaltres ens faltaven paquets que sí que es trobaven a l'escriptori d'ubuntu i que semblava que funcionaven bé. Aquest és el mecanisme que funciona per a trusty i per a totes les versions anteriors.
Des de xenial s'optà per canviar al mecanisme oficial , a més de tornar a l'origen, és a dir, a basar-nos en les llavors dels sabors oficials.
Aquest nou mecanisme té el seus avantatges i els seus inconvenients, però es pot anar utilitzant tot allò que desenvolupa la comunitat Debian i la d'Ubuntu i intentar col·laborar amb ells. A continuació passaré a comentar tot allò relacionat amb el nou mecanisme. A la fi de l'entrada adjuntaré els documents que deixà Àngel per a tota la gestió de les llavors, ja que si s'haguera de modificar alguna cosa de trusty o anterior, o fins i tot si es valorara tornar a aquest mecanisme, es podria partir de tota aquesta documentació com a guia.
Per al funcionament dels metapaquets s'ha de tenir en compte els paquets:
Les llavors són bàsicament un fitxer en un format tipus wiki-media. Dins d'aquest fitxer s'indica tots aquells paquets que es vulga incloure en la distribució, ja siga alguna cosa que va instal· lada per defecte en algun sabor (desktop, client, etc.), com en el live o aquells que es vol que estiguen disponibles en el pool. Aquest és un exemple de llavor:
Task-Per-Derivative: 1 Task-Section: user Task-Description: Ubuntu MATE minimal installation Task-Extended-Description: This task provides minimal packages for Ubuntu MATE desktop environment. Task-Key: ubuntu-mate-core Task-Name: ubuntu-mate-core Task-Seeds: desktop-common * Feature: no-follow-recommends == Core == * accountsservice * acpid [!armhf !arm64 !powerpc !ppc64el] * colord * dconf-cli * dialog * gdisk * hwdata * libnotify-bin * ntp * pm-utils * policykit-desktop-privileges * rtkit * syslinux-utils [!armhf !arm64 !powerpc !ppc64el] * toshset [!armhf !arm64 !powerpc !ppc64el] * vbetool [!armhf !arm64 !powerpc !ppc64el] == X11 ==
Al format wiki els elements són com una llista i s'escriuen de la forma següent: un espai , un* i altre espai. Sols aquelles línies que estiguen escrites com a llistes seran interpretades per germinate com paquets que es desitgen incloure. A més, quan s'indiquen paquets , es poden especificar de la següent forma:
Aquells que no contenen res, són paquets que seran "Depends", els que van entre parèntesi seran "recomends" i aquells que porten una exclamació davant són paquets que es desitgen llevar de les possibles llistes que viguen heretades mitjançant algun Task-Seed o el fitxer STRUCTURE.
Hi ha també algunes línies especials que són aquelles que comencen per Task. Aquestes Task seran explicades ,és tard.
La resta de línies s'interpretaran com comentaris.
Normalment, tot un set de llavors s'agrupen dins d'una carpeta en la qual ha d'haver un altre fitxer anomenat STRUCTURE.
En la carpeta de llavors hi ha un fitxer especial anomenat STRUCTURE. Aquest fitxer és l'encarregat de definir la relació que tenen les llavors les unes amb les altres. En aquest fitxer s'ha d'indicar totes les llavors que hi ha a la carpeta ja que, d'altra forma, germinate no podrà trobar-les. Per exemple, l'structure de la capeta platforms.xenial és el següent:
feature follow-recommends feature no-follow-build-depends required: minimal: required boot: standard: minimal desktop-common: standard d-i-requirements: minimal installer: installer-gtk: installer build-essential: required language-packs: desktop-common live-common: standard supported-development-common: standard supported-development-desktop: standard supported-kernel-common: standard supported-kernel-desktop: standard supported-misc-servers: standard supported-hardware-common: standard supported-hardware-desktop: standard supported-installer-common: standard installer supported-installer-desktop: standard supported-network-common: standard supported-network-client: standard supported-sysadmin-common: standard supported-sysadmin-desktop: standard supported-server: supported-misc-servers supported-hardware-common supported-installer-common supported-network-common supported-sysadmin-common build-essential supported-development-common supported-kernel-common supported-desktop: supported-hardware-desktop supported-installer-desktop supported-sysadmin-desktop supported-hardware-common supported-installer-common supported-network-common supported-network-client supported-sysadmin-common build-essential supported-development-common supported-development-desktop supported-kernel-common supported-kernel-desktop supported-common: supported-server supported-desktop
Les llavors es defineixen de la següent forma:
NOMDELALLAVOR: LLAVOR QUE HERETA
El nom de la llavor i els dos punts són obligatoris, no és necessari, però, indicar llavors de les quals hereta. La resta de les línies són opcions per al germinate. Entre aquestes opcions , una de les importants és -+include+-, puix ajuda a incloure altres paquets de llavors.
Quan s'estan escrivint les llavors, es pot afegir certes paraules clau que estenen el funcionament. Aquestes comencen amb la paraula Task. Una de les extensions que nosaltres hem realitzat sobre germinate és la d'afegir una tasca anomenada Task-Recursive.
Una vegada llegida la informació anterior, es pot acabar d'encaixar totes les peces. Cada vegada que Ubuntu crea una nova versió (lucid, precise, trusty...) crea un llistat de llavors que seran bàsiques per a totes aquestes versions oficials. Açò es denomina platform. Aquesta platform inclou coses que són bàsiques per a un sistema , bàsiques per a un escriptori, bàsiques per a un arrancament, etc. A partir d'aquest punt, cadascun dels sabors oficials d'Ubuntu crea les seues llavors, inclosa la mateixa Ubuntu. Per exemple, si Ubuntu trau xenial, es crearà una carpeta anomenada platform.xenial que contindrà totes les llavors bàsiques de les quals es derivaran; aleshores kubuntu crearà una carpeta anomenada kubuntu.xenial on estaran totes les seues llavors, amb les quals es crearan les isos. Totes les llavors d'Ubuntu es troben en la següent url:
http://people.canonical.com/~ubuntu-archive/seeds/
Kubuntu utilitza el platform per a crear les seues llavors , motiu pel qual ha d'afegir en el fitxer SRTUCTURE "include platformxenial", d'aquesta forma , en crear la seua llavor, core pot incloure de forma ràpida en l'STRUCTURE que hereta de desktop-common i així sols s'ha de preocupar d'afegir les coses que ells consideren necessàries.
Seguint la metodologia que segueixen tots els sabors oficials d'Ubuntu, LliureX crea una carpeta anomenada lliurex en la qual es creen totes les llavors i en el fitxer STRUCTURE afig un inclou (include) del sabor que es desitja. Per exemple, si es vol fer una versió basada en Ubuntu-mate, es descarregaran les carpetes amb les llavors de paltform i les d'Ubuntu-mate; es crearà una carpeta anomenada lliurex; s'afegirà "include ubuntu-mate" en l'STRUCTURE de la carpeta lliurex; finalment es definiran al fitxer STRUCTURE tota la relació entre les llavors de lliurex i les d'ubuntu-mate.
Una vegada entés el funcionament de la definicióde les llavors, es procedeix a realitzar el paquet amb què es generaran els metapaquets de LliureX. Inicialment es crea una carpeta, per exemple 'seeds', on es guardaran totes les llavors (paltform, ubuntu-mate, lliurex). Al mateix nivell que aquesta carpeta es genera un fitxer anomenat update.cfg, que serà utilitzat per l'orde germinate-update-metapackage per generar els metapaquets. A més, s'ha de generar el directori Devian amb els seus corresponents fitxers i un fitxer 'metapackage-map'. A continuació s'explica el contingut de cadascún d'ells:
[DEFAULT] dist: xenial [xenial] seeds: meta-server meta-client meta-desktop meta-infantil meta-music meta-pime meta-live meta-supported architectures: i386 amd64 seed_base: seeds seed_dist: lliurex archive_base/default: http://archive.ubuntu.com/ubuntu http://ppa.launchpad.net/llxdev/xenial/ubuntu http://lliurex.net/xenial http://ppa.launchpad.net/llxdev/xenial-external-ppa/ubuntu http://ppa.launchpad.net/llxdev/recursos/ubuntu components: main restricted universe multiverse
El format d'aquest fitxer és similar a un fitxer ini (ini file). Les dues primeres línies marquen per defecte quina configuració ha d'utilitzar germinate-update-metapackage. A partir de xenial és on comença la configuració:
Aquest fitxer realitza una correlació dels noms de les llavors que es volen utilitzar com metapaquets, que estan en el directori seeds i el nom que tindrà a la fi, que es defineix en el fitxer control. Per exemple:
meta-desktop lliurex-meta-desktop meta-client lliurex-meta-client
Source: lliurex-meta Section: admin Priority: optional Maintainer: Lliurex Team <lliurex@gva.es> Build-Depends: debhelper (>= 8.0.0), germinate, lliurex-meta-tools Standards-Version: 3.9.4 Homepage: http://lliurex.net Package: lliurex-meta-server Architecture: any Lliurex-Flavours: server, edu Depends: ${shlibs:Depends}, ${misc:Depends}, ${germinate:Depends} Recommends: ${germinate:Recommends} Description: MetaPackage of Lliurex List of all packages for lliurex
Ací cal anar creant tantes entrades com llavors hem definit com metapaquets en el fitxer update.cfg i en el fixer metapackage-map. Cada entrada ha de tenir el camp Depends i Recommends, i cal afegir a cadascuna corresponentment ${germinate:Depends} i ${germinate:Recommends}, puix sense açò no es completaran automàticament els paquets definits en les llavors.
Hi ha un camp anomenat Lliurex-Flavours. Aquest camp és l'encarregat de definir què retornarà l'orde lliurex-version. Perquè funcione, s'ha d'afegir en el build-depends lliurex-meta-tools i en el rules el helper.
En aquest fitxer és important afegir els corresponents ajudants (helpers):
%: dh $@ --with germinate override_dh_install: dh_install dh_llxmeta
En la segona línia apareix que s'ha d'utilitzar el helper germinate perquè es generen tots els paquets amb els seus depends i els seus recomends.
En la segunda línea aparece que se tiene que utilizar el helper germinate para que se generen todos los paquetes con sus depends y sus recomends. El override que se añade es para asegurarse que se crearán los ficheros necesarios para que lliurex-version devuelva el contenido correspondiente.
Una vez se ha realizado todo lo anterior es importante ejecutar el comando germinate-update-metapackage. Para ello se define la diferencia entre germinate y germinate-update-metapackage. El comando germinate se encarga de recorrer todas las semillas y generar otros ficheros indicando todos los paquetes que entrarán y cuál será el paquete que entrará. Este comando genera una infinidad de ficheros, que realmente no son útiles para los metapaquetes, aunque sí que podrían llegar a ser útiles para el pool. Germinate-update-metapackage se encarga de realizar unos ficheros con los nombres de la semilla indicada con terminaciones de arquitectura y si son depends o recomends.
El helper de empaquetado indicado en el rules 'germinate' utilizará estos ficheros generados por germinate-update-metapackage para sustituir las variables indicadas en el fichero control (${germinate:Depends} y ${germinate:Recommends}) con su contenido.
Por lo tanto, cada vez que se realize cualquier cambio en alguna semilla y se quiera actualizar los metapaquetes hay que lanzar el comando germinate-update-metapackage
al nivel donde estáel fichero update.cfg.
Otro de los paquetes que se ha comentado anteriormente es lliurex-meta-maker. Este es una utilidad para crear el contenido de la carpeta llamada seeds. Si se ejecuta el comando lliurex-meta-maker se entrará en una consola interactiva desde la cual la función más importante es la de create. Si se escribe create y se presiona tab, aparecera un listado con todas las carpetas disponibles para bajar de semillas. Mediante esto se pueden crear carpetas seeds de cualquier sabor de ubuntu oficial disponible en la url http://people.canonical.com/~ubuntu-archive/seeds/, y a partir de esta crear todas las semillas de lliurex.
Por ejemplo si se quisiera sacar una version de Lliurex basada en zetsy zapus, solo habría que ejecutar la herramienta y ejecutar create xubuntu.zetsy, y esto generaría una carpeta llamada seeds, que contendrá platforms y xubuntu.zetsy.
También serviría para actualizar el contenido de la carpeta seeds de los metapaquetes ya creados, ya que descargaría las últimas semillas de dicho sabor.