-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
armar un paquete .deb de quartz. #110
Comments
Aqui estoy! que necesitas hacer? |
@Mr-Lettuce ahi puse un update pegale una mirada a ver si se entiende. |
Hola Edu! Si perfecto, voy a chusmear algunas cosillas que me dan dudas y lo armo, no se bien como aun xD pero lo hago. |
Investiga un poco y tira un plan aca y le hacemos review, asi lo vamos charlando, idealmente deberia ser algo entretenido y no un bodrio. |
Nono me parece genial! siempre tuve intriga de como funciona el makefile, no sabia que podia buildear un .deb, ya habia buscado quartz, dpk-deb y RIPE Atlas, pero bueno quiero ver si me sale bien y como hago para que al desinstalar no te lleve una dependencia que tal vez necesita otro programa en el sistema, aunque se supone que esta todo metido en el quartz, cuestion de probar y googlear un rato |
Hola chicos, espero que estén muy bien: En caso de la solución tenga que pasar por lo que dpkg y apt pueden hacer enumero
Estoy disponible en otros medios si les vengo bien, |
Hola Matias! espero te encuentres muy bien tu tambien. |
Buenas gente! vengo con unos problemillas que quisiera ver de resolver de la mejor manera: Por otro lado el paquete instala el quartz.py como un binario mas en /usr/bin, crea el cronjob, ejecuta un postinst que setea el path de java, instala dependencias de python con pip3 y edita el archivo de configuracion del "quartz" ingresando los valores directamente en la terminal cosa de no tener que ir a editarlo despues, y el postrm borra ese archivo/directorio de configuracion y chequea que haya volado el cronjob tambien porlas Cuando este todo impecable y funcionando lo implemento con github actions que ya lo estuve chusmeando |
no trae 3.7 no recuerdo como lo instale en mi raspi, pero tengo esto:
Tenes algo para probar? quizas es mas facil si podemos probar algo y ahi vemos. |
Buenas Edu! |
Lo quise probar pero me esta pidiendo java como requirement: pi@pi-72-df:~/tmp/disneyland/quartz $ sudo dpkg -i quartz_0.1_all.deb dpkg: error processing package quartz (--install): Tenes los building steps para empaquetar esto? tipo makefile o como lo hayas armado? |
lo otro que me olvide de decir es que sino existe icmplib le va a tirar ping normal asi que si es un bardo hacer la dependencia vayamos sin eso que va a andar igual. |
Buenas,
sobre OS en que estoy viendo esto:
sobre el hardware:
El resto no entiendo bien. Mañana releo si me hago el tiempo y aporto de poder hacerlo. |
claro pero como estas armando el .deb, esos comandos o secuencia de pasos son las que te consulto si podemos mirar. sin apuro. |
Ahhh pero que salaaamee, cuando me dijiste de armar un paquete de quartz pense que iba a ser el quartz scheduler y tenia java como requerimiento, de ahi quedo -_- eso va a volar |
Buenas! Cómo va? Avisá si te puedo dar una mano @Mr-Lettuce! :) |
Hola Emilio! Todo bien? |
Querés pegar info del error acá?? O también pushear el código con el que estás buildeando el deb también, así vemos cómo lo hace :) |
Ahi lo subi aca: Pero ya no me da el error, supongo que tendria algo mal codeado |
Buenas @Mr-Lettuce! Todo bien? Ahí pude probarlo en mi raspi, te cuento cómo me fue. No pude instalar el .deb, lo tuve que volver a compilar, pero sacando eso todo bien: pi@raspberrypi:~/HDD/disneyland/quartz $ sudo chmod 0555 quartz_0.2_all/DEBIAN/postinst
pi@raspberrypi:~/HDD/disneyland/quartz $ sudo chmod 0555 quartz_0.2_all/DEBIAN/postrm
pi@raspberrypi:~/HDD/disneyland/quartz $ dpkg-deb --build quartz_0.2_all
dpkg-deb: building package 'quartz' in 'quartz_0.2_all.deb'.
pi@raspberrypi:~/HDD/disneyland/quartz $ sudo dpkg -i quartz_0.2_all.deb
Selecting previously unselected package quartz.
(Reading database ... 55856 files and directories currently installed.)
Preparing to unpack quartz_0.2_all.deb ...
Unpacking quartz (0.1) ...
Setting up quartz (0.1) ...
Setting up quartz (0.1) ...
Configurar los parametros de Quartz?
y
escribe Si o No por favor
si
Configurando Ripe Atlas
Ingresar la URL: localhost
Ingresa el ISP: Telecentro
Ingresa la API KEY: nOlAtEnGo:c
Instalando dependencias de Python
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting logging42
Downloading https://www.piwheels.org/simple/logging42/logging42-0.0.7-py3-none-any.whl (5.4 kB)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (2.25.1)
Collecting configparser
Downloading https://www.piwheels.org/simple/configparser/configparser-5.2.0-py3-none-any.whl (19 kB)
Collecting argparse
Downloading https://www.piwheels.org/simple/argparse/argparse-1.4.0-py2.py3-none-any.whl (23 kB)
Collecting loguru
Downloading https://www.piwheels.org/simple/loguru/loguru-0.6.0-py3-none-any.whl (65 kB)
|████████████████████████████████| 65 kB 135 kB/s
Installing collected packages: loguru, logging42, configparser, argparse
Successfully installed argparse-1.4.0 configparser-5.2.0 logging42-0.0.7 loguru-0.6.0
Todo listo, ponele En mi caso tenía las dependencias instaladas así que no tuve errores, entiendo que si faltan, con dpkg saltan los dependency problems, pero nada que un Pude ver que se copiaron bien los archivos: pi@raspberrypi:~/HDD/disneyland/quartz $ ls -alh /etc/cron.d | grep quartz
-rw-r--r-- 1 root root 46 Feb 15 18:43 quartz
pi@raspberrypi:~/HDD/disneyland/quartz $ ls -alh /usr/bin | grep quartz
-rw-r--r-- 1 root root 6.1K Feb 15 18:43 quartz01.py Pero no se creó el quartz.conf: pi@raspberrypi:~/HDD/disneyland/quartz $ cat ~/.config/quartz.conf
cat: /home/pi/.config/quartz.conf: No such file or directory Mi sospecha es porque la función # [...]
mkdir ~/.config/ && cat << EOF > ~/.config/quartz.conf
[quartz]
api_key = $ripekey
url = $ripeurl
isp = $ripeisp
EOF
# [...] Y en mi caso el directorio pi@raspberrypi:~/HDD/disneyland/quartz $ sudo apt-get remove quartz
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
quartz
0 upgraded, 0 newly installed, 1 to remove and 34 not upgraded.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 55858 files and directories currently installed.)
Removing quartz (0.1) ...
dpkg: error processing package quartz (--remove):
installed quartz package post-removal script subprocess returned error exit status 1
dpkg: too many errors, stopping
Errors were encountered while processing:
quartz
Processing was halted because there were too many errors.
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1) Y este mismo error se ocurre aunque le mande con Espero que esta info te sirva cuando lo puedas retomar, si querés una mano para resolverlo avisame y te mando una PR a tu fork :) Saludos! OS: pi@raspberrypi:~/HDD/disneyland/quartz $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye |
Hola Emilio!! Con respecto al script que arma la conf lo arme asi porque cuando lo instalas lo corre como sudo, entonces el .conf esta en el home de root, y cuando corre el cronjob tambien lo corre como root, se puede cambiar igualmente si no es la idea, no le quise cambiar nada al script de python original la verdad |
Joya! Con eso solucionado entiendo que cumpliría con lo que se había planteado en el issue (sacando la instalación de dependencias) Dos comentarios nada más, en la instalación cuando le pedís input al usuario quizás quedaría más amigable agregarle algo como Si precisás que pruebe una próxima versión pingueame! Saludos |
Dale buenisimo! Sisi ese script lo voy a limpiar y ponerlo un poco mas serio, lo del control se me paso, gracias por el aviso jajaja Bueno genial, muchas gracias por la mano!! Saludos! |
Migre el codigo a un repo separado https://github.com/sysarmy/quartz/ y le prendi el build del container que lo buildea y lo mete en el registry de github @Nachichuri cuando tengas un rato mirate https://github.com/sysarmy/quartz/pkgs/container/quartz |
Para el paquete, estaba mirando esto https://github.com/marketplace/actions/build-linux-packages hay que laburarlo un poco mas para pushearlo al package manager de github pero quizas tiene sentido, asi queda automagico. |
Buenas gente! consulta, estoy intentando buildear el paquete con github actions, el del comentario de arriba justamente, me tira error de que no encuenta el archivo de las spec, y hata mire el repo del autor y no encuentro donde deberia ir el archivo, la consulta es: cuando un workflow de estos necesita usar archivos, deberia buscarlos en la raiz del repo? intente meterlo en una carpeta, en la raiz, en la propia carpeta de los workflow y nada, y tampoco encuentro nada util en google -_- |
Hola Mr-Lettuce! Ahí estuve mirando un poco el action en tu fork y veo que adentro tiene el contenido del package.yaml, pero entiendo el action tendría que tener lo que detalla en la parte de "usage" la documentación (no lo pude probar, pero sospecho que puede venir por ahí el error). Quizás tomando como template el uso de la documentación y apuntando al YAML que ya tenés creado en el repo puede andar. Si podés fijate si puede ser eso y cualquier cosa despues lo miramos n_n |
Hola Emilio! Claro claro, el tema es que la doc apunta a ese archivo, y ese archivo tiene la spec del paquete en si, y lo tengo hecho pero cuando corre me dice que no encuentra ese package.yaml justamente y no entiendo el porque. |
Hola Mr-Lettuce! Okey, otra cosa que se me ocurre es que pueda faltar el checkout del repo entonces el action no tiene nunca el archivo de package.yaml... Yo probaría agregando el action de checkout antes del step de build, algo así: [...]
steps:
- name: Checkout repository
uses: actions/checkout@v2
- uses: kentik/[email protected]
[...] Entiendo que también faltaría un step extra de publish del Cualquier cosa avisame y lo vemos |
Hola Nachichuri! Sabiaa que era una bol.... igual ahi creo que entendi mejor como es que funciona github actions al menos... Estuve buscando lo del publish pero no encuentro como hacerlo con un .deb, puede ser? veo que se puede hacer con npm, gem, mvn, gradle, .net y docker Igual voy a seguir buscando a ver como se puede lograr o de ultima ver que lo comitee directo al repo cada vez que buildee y listo (imagino que se puede hacer eso) Gracias por la mano! |
Tenemos este script en python https://github.com/sysarmy/disneyland/blob/master/quartz/quartz.py y lo que quisiera es tener un Makefile o similar que buildee un .deb que al instalarlo:
y que al desinstalar
Al ser python deberia poder correr en cualquier distro, sin embargo el target inicial es raspbian, o sea que cualquiera con una raspi tirada pueda bajar este paquete e instalarlo.
Nota: asi como esta ahora esto necesita unos parametros, api key, url, etc. eso lo voy a sacar en una proxima version para que sea instalar y que salga andando, pero mientras tanto podes usar este para armar le pipeline. Puntos extra si logras meterlo en github actions y que el paquete se suba al repo de github.
some links https://earthly.dev/blog/creating-and-hosting-your-own-deb-packages-and-apt-repo/
The text was updated successfully, but these errors were encountered: