Re: Editar arxius al postinst d'un paquet debian

2021-06-24 Conversa Alex Muntada
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 
  ⢿⡄⠘⠷⠚⠋   Debian Developer  log.alexm.org
  ⠈⠳⣄



signature.asc
Description: PGP signature


Re: Editar arxius al postinst d'un paquet debian

2021-06-22 Conversa Daniel

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 
   ⢿⡄⠘⠷⠚⠋   Debian Developer  log.alexm.org
   ⠈⠳⣄





Re: Editar arxius al postinst d'un paquet debian

2021-06-22 Conversa Ernest Adrogué
2021-06-21, 20:04 (+0200); Daniel escriu:
> 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)

No tinc gaire experiència en això, però jo crec que l'estratègia més
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 són els únics
específics per al teu paquet, la resta tenen un contingut genèric i pots
re-ciclar els d'altres paquets.

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

Salutacions.



Re: Editar arxius al postinst d'un paquet debian

2021-06-22 Conversa Alex Muntada
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 
  ⢿⡄⠘⠷⠚⠋   Debian Developer  log.alexm.org
  ⠈⠳⣄



signature.asc
Description: PGP signature


Re: Editar arxius al postinst d'un paquet debian

2021-06-21 Conversa Narcis Garcia
Aquí he trobat una pàgina sobre el tema:
https://wiki.debian.org/Packaging

També t'adjunto un paquet com l'havia fet jo per a un programet (xhash
en ShellScript), i el programet que feia servir per a descarregar del
repositori Git i empaquetar (git-to-deb).

Allò que contenia el repositori Git es pot reconstruir a partir del
contingut del paquet .deb i algun dels retocs que fa l'empaquetador.


Narcis Garcia

__
I'm using this dedicated address because personal addresses aren't
masked enough at this mail public archive. Public archive administrator
should fix this against automated addresses collectors.
El 21/6/21 a les 20:04, Daniel ha escrit:
> 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
> 
> 


xhash_1.2.2_all.deb
Description: application/vnd.debian.binary-package


git-to-deb.sh
Description: application/shellscript


Editar arxius al postinst d'un paquet debian

2021-06-21 Conversa Daniel

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