• Editar arxius al postinst d'un paquet debian

    From Daniel@21:1/5 to All on Mon Jun 21 20:20:02 2021
    Hola,

    Habitualment empaqueto els meus scripts  en .deb per ús intern. Son
    bastant xapucilles però fan la feina. Per configurar-ho anava a saco i
    al postinst feia, si calia, un vi del .conf. A part de saltar-me
    qualsevol protocol de debian, falla quan s'instal·la en mode no
    interactiu com per exemple amb ansible.

    Mirant-me una mica més la documentació he començat a fer servir debconf
    i els templates  per demanar els paràmetres, però no trobo cap manera
    fàcil quan tinc que modificar un arxiu sencer. Quina es la forma elegant
    de fer-ho? O alguna guia una mica avançada de crear paquets debs per
    scripts (només he trobat per crear paquets compilats, i les que estan orientades a fer-ho de manera manual son molt bàsiques)

    Gràcies per endavant,

    Daniel

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alex Muntada@21:1/5 to All on Tue Jun 22 14:20:01 2021
    Hola, Daniel

    Mirant-me una mica més la documentació he començat a fer servir
    debconf i els templates  per demanar els paràmetres, però no
    trobo cap manera fàcil quan tinc que modificar un arxiu sencer.

    Em sembla intuir que el que vols és parametritzar l'execució de
    l'script segons l'entorn en què es trobi, però em falta context.
    Podries explicar amb més detall el problema que vols resoldre?
    No acabo d'entendre per què el postinst hauria de modificar un
    fitxer sencer que ja vingui empaquetat.

    Amb un exemple senzill d'un dels scripts serà suficient.

    Quina es la forma elegant de fer-ho? O alguna guia una mica
    avançada de crear paquets debs per scripts (només he trobat per
    crear paquets compilats, i les que estan orientades a fer-ho de
    manera manual son molt bàsiques)

    Si el codi té un Makefile, en general és força senzill fer un
    paquet que l'utilitzi per instal·lar el resultat d'executar
    «make && make install».

    A la wiki https://wiki.debian.org/Packaging/Intro tens un exemple
    basat en codi compilat però fer-ho per un script seria encara més
    fàcil perquè la part del «make» segurament no haurà de fer res.

    Salut,
    Alex

    --
    ⢀⣴⠾⠻⢶⣦⠀
    ⣾⠁⢠⠒⠀⣿⡁ Alex Muntada <alexm@debian.org>
    ⢿⡄⠘⠷⠚⠋ Debian Developer 🍥 log.alexm.org
    ⠈⠳⣄⠀⠀⠀⠀


    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEaUBwKsbetWW2SKTt466XjoNOXn4FAmDR04MACgkQ466XjoNO Xn4orQ/+L0PmY++8tRD248Klfg1eHzJXd2qPmPHlfdkDHY+NL9KKpqLCBrO8G57t Z+947PjC3iuOs0rg3/vnsUH1pUz1LzCq3XoLvvTbMN5ORmZQI0lVJMqADFV7jlp9 fDyLXHg06/sDrGcKP9v5Lc9D65gEfP15lTBmW+B321kTePRVoWC2VMmMmfyV63Fx bQLvp1ePmVhySgyyt0TXgRhFrWrycSPEzXmcM+vxLkPD8ZSZEqVpsuyn1zu4v0c0 50qkMzJqzKYKfG0jBn1VgQotnahcmLRUQusjWioPIDXmRiWErD7Ph45eYMx80aEU cGzn996F4FWi0vCtvSGwyZ5vx8fT1j18HXRFqfc8hz+2xjv8FQdirwGstZyvv2/c HTUG9mrVT8o0QMRxJQz0uLZyzg+5wyFR4Z4pOP+YcqJIzy1BZxHmuc1aFmk84gFO KXaN3DKblADc6lYlXahkvfshOTEyQNTkIDsJN/t1Xwp9PAAVRBLVV1zzSw6vlZf3 zpUZZB1r7/E2F6sBXnjA8oObm9+LjYAITXMWjAyyIelywHinD0FydeMmimMqDGF6 L0rYwDlchdNkIDU4mgvOPz0y+MQ4l7zYC2/WNLOLnE0QA6s3egLgRE3xmGaHpkZX dPS9Roi/uHUkf5w9etxwjb7/WKmKSuNXoxpCrbBkPzJd97L7ngk=
    =wDQ2
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Daniel@21:1/5 to All on Tue Jun 22 19:50:02 2021
    Gràcies per les respostes, encara estic llegint els enllaços del Narcís,

    No recordo de on vaig agafar la recepte, però els paquets els faig
    directament amb fakeroot dpkg --build  CARPETA, on tinc ja creada la estructura del paquet, un directori DEBIAN, amb els conffiles, config,
    control i postinst..., i els etc i usr que corresponguin al paquet.
    Normalment es un script bash o un conjunt de script, que no em cal
    compilar ni fer res especial a banda de configurar usuari, paths.... Per
    això feia servir el script postinst.

    En temps d'instal·lació vull personalitzar les rutes. Si es una variable
    no n'hi ha problema. He trobat la solució amb debconf. El problema es,
    per exemple, editar la llista d'arxius a fer backup. Es una llista
    variable i amb debconf no he trobat la manera. Abans ho solucionava
    directament amb vi /etc/configuracio/llista.conf, però a part de ser una
    mica cafre, no es compatible amb ansible i es aquí on volia trobar la
    manera "elegant" de fer-ho.

    Trobo que fer-ho amb makefiles es complicar massa la cosa, però potser
    es la única manera.

    Salut i agraït per qualsevol idea,

    Daniel

    El 22/6/21 a les 14:11, Alex Muntada ha escrit:
    Hola, Daniel

    Mirant-me una mica més la documentació he començat a fer servir
    debconf i els templates  per demanar els paràmetres, però no
    trobo cap manera fàcil quan tinc que modificar un arxiu sencer.
    Em sembla intuir que el que vols és parametritzar l'execució de
    l'script segons l'entorn en què es trobi, però em falta context.
    Podries explicar amb més detall el problema que vols resoldre?
    No acabo d'entendre per què el postinst hauria de modificar un
    fitxer sencer que ja vingui empaquetat.

    Amb un exemple senzill d'un dels scripts serà suficient.

    Quina es la forma elegant de fer-ho? O alguna guia una mica
    avançada de crear paquets debs per scripts (només he trobat per
    crear paquets compilats, i les que estan orientades a fer-ho de
    manera manual son molt bàsiques)
    Si el codi té un Makefile, en general és força senzill fer un
    paquet que l'utilitzi per instal·lar el resultat d'executar
    «make && make install».

    A la wiki https://wiki.debian.org/Packaging/Intro tens un exemple
    basat en codi compilat però fer-ho per un script seria encara més
    fàcil perquè la part del «make» segurament no haurà de fer res.

    Salut,
    Alex

    --
    ⢀⣴⠾⠻⢶⣦⠀
    ⣾⠁⢠⠒⠀⣿⡁ Alex Muntada <alexm@debian.org>
    ⢿⡄⠘⠷⠚⠋ Debian Developer 🍥 log.alexm.org
    ⠈⠳⣄⠀⠀⠀⠀


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ernest =?iso-8859-1?Q?Adrogu=E9?=@21:1/5 to All on Tue Jun 22 19:20:02 2021
    2021-06-21, 20:04 (+0200); Daniel escriu:
    Quina es la forma elegant de fer-ho? O alguna guia una mica avanada
    de crear paquets debs per scripts (noms he trobat per crear paquets compilats, i les que estan orientades a fer-ho de manera manual son
    molt bsiques)

    No tinc gaire experincia en aix, per jo crec que l'estratgia ms
    habitual s utilitzar un makefile, tant si s un script com un programa compilat. Llavors els scripts que construeixen el paquet Debian
    simplement fan make & make install i empaqueten el resultat. L'nic que
    has de fer s crear el fitxer control i changelog, que sn els nics
    especfics per al teu paquet, la resta tenen un contingut genric i pots re-ciclar els d'altres paquets.

    Et poso un exemple d'un paquet que installa un script shell, tot i que
    no s et servir gaire perqu tamb compila i installa uns mduls, per
    si elimines el directori module/ i els fitxers guile.am,
    pre-inst-env.in, i edites el configure.ac per eliminar les referncies a
    GUILE i als fitxers que has eliminat, hauria de quedar un paquet amb un
    simple script: https://github.com/nfdisco/csv2sc

    Salutacions.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alex Muntada@21:1/5 to All on Thu Jun 24 12:20:01 2021
    Hola, Daniel

    No recordo de on vaig agafar la recepte, però els paquets els
    faig directament amb fakeroot dpkg --build  CARPETA, on tinc ja
    creada la estructura del paquet, un directori DEBIAN, amb els
    conffiles, config, control i postinst..., i els etc i usr que
    corresponguin al paquet.

    Fent-ho d'aquesta manera et perds una part important de les eines
    i utilitats que ajuden a fer i comprovar que els paquets estan
    ben fets. No és que estigui malament, és una drecera que té
    alguns avantatges i alguns inconvenients. L'inconvenient més
    destacable potser és el fet que no pots personalitzar els paquets
    com a tu t'agradaria i per això acabes fent-ho al postinst.

    Normalment es un script bash o un conjunt de script, que no em
    cal compilar ni fer res especial a banda de configurar usuari,
    paths.... Per això feia servir el script postinst.

    Configurar els usuaris és una tasca habitual al postinst però què
    configures dels paths? Ho pregunto per entendre millor el que
    necessites.

    En temps d'instal·lació vull personalitzar les rutes.

    Pots posar un exemple?

    El problema es, per exemple, editar la llista d'arxius a fer
    backup. Es una llista variable i amb debconf no he trobat la
    manera.

    No crec que debconf sigui l'eina adequada per això. La forma
    habitual seria que el paquet incorpori un exemple de configuració
    o una configuració mínima i després permetés personalitzar-la,
    però després d'haver acabat la instal·lació del paquet.

    Si la llista d'arxius és molt gran (de l'ordre de desenes o
    centenars de directoris), no seria gaire pràctic introduir-los
    o seleccionar-los via debconf. És més interessant poder generar
    aquesta configuració a posteriori (no em refereixo al postinst).

    Abans ho solucionava directament amb vi /etc/configuracio/
    llista.conf, però a part de ser una mica cafre, no es
    compatible amb ansible i es aquí on volia trobar la manera
    "elegant" de fer-ho.

    Jo faria un paquet amb una configuració mínima, comú a tots els
    servidors, i que l'ansible instal·li a posteriori la llista.conf
    on toca i amb el contingut personalitzat segons una plantilla,
    com fem aquí:

    https://gitlab.com/caliu-cat/masovers/ansible/-/blob/main/roles/base/tasks/main.yml

    Salut,
    Alex

    --
    ⢀⣴⠾⠻⢶⣦⠀
    ⣾⠁⢠⠒⠀⣿⡁ Alex Muntada <alexm@debian.org>
    ⢿⡄⠘⠷⠚⠋ Debian Developer 🍥 log.alexm.org
    ⠈⠳⣄⠀⠀⠀⠀


    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEEaUBwKsbetWW2SKTt466XjoNOXn4FAmDUWegACgkQ466XjoNO Xn7uVw//bcO3lI1bMUrt85vXmJIwHHa/frTl2DNYNr+TMoCYOumgUbqFBw55BMoA +8jgfyhO82xyBrY6xBRKBNuP/is/8KfxDc6UMW2quyxiIfnljopw8YW61Qsa0nML dqJaPs03VHTaPv1edM8Ye9fF8VdNNa+VdMYlIQKQDLWXMWzrErmaxw1tOjvuAOJW siqc8NHoSrrYdg1k4zVTujs1nB+BcypV/6A7ihlGESqoUZIPda/H5KiWIeOlOuIV KZmACm46yC95FjP+MK/YGaFIOIaTMWBVLKer2O+hfdsAu1U5YbA/tz9lz2ZPfG21 ESahc1j6zsz3mvBtrj/bGFZgkLieBdgQ5kBUNjsc62J+2Ywvi3oJSR1tGJ9NVTCb GsA4C+208dSsxRytdQPV2SzwZd08RpkOFMxY3DZipt7Cz17c4BBk7Bz9cZ2l7a8j Avh5wqEGMcw/fOq4+A2VPj2MM2ysTCk/Fgzq7NL7Te7uT5Tm/hw+6qkRM+RErV1N Mbof7Pqg6w1N98PngTxzwOhw7TyjyK3YXX9PvZHb9QE4CBnKutwkVNyFXw7vo6TB 7t1ChqOLc5b5PaISx+cnBhhyiHrlibxz0P5qoa+LtS8XgOByHQ9nI/PjQuzubTVb QqGCSS8OrcOT5Vsr9u6OTFxC50RnAQswB1rvP/YVFL9iYyc9U+k=
    =urMk
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)