|
1
|
+# Alpine y sistema de paquetamiento
|
|
2
|
+
|
|
3
|
+El procedimiento implica tener cuatro cosas en tu linux alpine, que
|
|
4
|
+son el navegador web, el programa git y las utilidades de compilacion.
|
|
5
|
+
|
|
6
|
+Este documento se divira en dos partes, la primera la informacion teorica,
|
|
7
|
+y la segunda la forma practica y configuraciones que debera realizar.
|
|
8
|
+
|
|
9
|
+Una version reducida y directa de este documento esta en la guia
|
|
10
|
+[../recetas/alpine-recetas-hacer-paquetes-alpine-localmente.md](../recetas/alpine-recetas-hacer-paquetes-alpine-localmente.md)
|
|
11
|
+
|
|
12
|
+- [1 - Teoria - Sistema de paqueteria alpine linux](#1---teoria---sistema-de-paqueteria-alpine-linux)
|
|
13
|
+ - [empaquetar](#empaquetar)
|
|
14
|
+ - [formato APK](#formato-apk)
|
|
15
|
+ - [compilacion](#compilacion)
|
|
16
|
+ - [repositorios](#repositorios)
|
|
17
|
+ - [manejador de paquetes](#manejador-de-paquetes)
|
|
18
|
+- [2 - Practica - Hacer paquetes y repositorios](#2---practica---hacer-paquetes-y-repositorios)
|
|
19
|
+ - [Instalacion de los programas necesarios](#instalacion-de-los-programas-necesarios)
|
|
20
|
+ - [Creacion del usuario y entorno abuild](#creacion-del-usuario-y-entorno-abuild)
|
|
21
|
+ - [Iniciando sesion y configurando el entorno](#iniciando-sesion-y-configurando-el-entorno)
|
|
22
|
+ - [Ejercicio 1 crear un paquete nuevo con internet](#ejercicio-1-crear-un-paquete-nuevo-con-internet)
|
|
23
|
+ - [Ejercicio 2 crear un paquete nuevo con las fuentes local](#ejercicio-2-crear-un-paquete-nuevo-con-las-fuentes-local)
|
|
24
|
+ - [Generacion automatica de mi repositorio](#generacion-automatica-de-mi-repositorio)
|
|
25
|
+- [Anexos ](#anexos-)
|
|
26
|
+ - [Como se creaban los APKBUILD](#como-se-creaban-los-apkbuild)
|
|
27
|
+ - [sobre abuild-keygen](#sobre-abuild-keygen)
|
|
28
|
+ - [Generacion manual de repositorio](#generacion-manual-de-repositorio)
|
|
29
|
+- [mas informacion](#mas-informacion)
|
|
30
|
+- [LICENSE](#license)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+## 1 - Teoria - Sistema de paqueteria alpine linux
|
|
34
|
+
|
|
35
|
+El **sistema de paqueteria** de alpine consta de dos lados, la **fabricacion**
|
|
36
|
+(empaquetar y compilar) y la **publicacion** (los repositorios). El sistema
|
|
37
|
+de paqueteria **en realidad es enteramente usando bash**.
|
|
38
|
+
|
|
39
|
+#### empaquetar
|
|
40
|
+
|
|
41
|
+Se compilan programas usando versiones especificas, estos se comprimen en
|
|
42
|
+archivos tar firmados digitalmente, se les agrega metadatos de informacion
|
|
43
|
+que conteine las dependencias y los archivos de configuracion. A este
|
|
44
|
+resultado se le denomina **formato de paquetes APK**.
|
|
45
|
+
|
|
46
|
+#### formato APK
|
|
47
|
+
|
|
48
|
+**APK** es el formato llamado "a-packs", su estructura consta de dos partes:
|
|
49
|
+
|
|
50
|
+* **.PKGINFO** el archivo que contiene la metadata de informacion (la cual no es
|
|
51
|
+mucha, por lo que es hackeable) por ejemplo el paquete "bash-4.0-r3" en la info
|
|
52
|
+solo estara la parte "4.0" y el "r3" esta en el normbre del archivo del paquete.
|
|
53
|
+Este archivo contiene tambien la arquitectura, el comit del repo alpine donde
|
|
54
|
+se realizo el paquete (lamentablemente enlazado a aports), asi como la licensia
|
|
55
|
+y la arquitectura de la compilacion de los archivos.
|
|
56
|
+* **TAR** el archivo que contiene el software compilado empaquetado, es un
|
|
57
|
+archivo tar pero cadicionalmente se comprime, la extension/tipo compresion no
|
|
58
|
+es especifica y puede variar, adentro esta la estructura exacta de donde estaria
|
|
59
|
+colocado cada uno de los archivos en el sistema operativo. Solo estaran incluidos
|
|
60
|
+los archivos relativos a la compilacion de lo que indica el archivo de informacion
|
|
61
|
+de metadata descrito anteriormente.
|
|
62
|
+
|
|
63
|
+#### compilacion
|
|
64
|
+
|
|
65
|
+**APKBUILDS** es el formato y archivo que define como se creara los paquetes,
|
|
66
|
+este **es simplemente un archivo bash que es usado en modo de inclusion**,
|
|
67
|
+este es el unico necesario y todo lo demas es referenciado (local o desde internet)
|
|
68
|
+desde direcciones en este. Este archivo es en realidad una secuencia de reglas,
|
|
69
|
+que se ejecutan solo si estan depsues de uan cabecera, esta informacion tampoco
|
|
70
|
+estan en la (ya muy porqueria) wiki oficial de alpine, sino que solo describen
|
|
71
|
+los elementos tecnicos que lo caracterizan.
|
|
72
|
+
|
|
73
|
+La **estructura** una **cabecera informativa** (la base para generar el `.PKGINFO`,
|
|
74
|
+son meras variables) y **algunas de funciones** (que se modifican segun el
|
|
75
|
+software que se va empaquetar) haciendo de **secuencia de reglas**.
|
|
76
|
+
|
|
77
|
+La **secuencia de reglas**: revision (`sanitycheck() -> clean()-> fetch() -> verify()`)
|
|
78
|
+depsues de corroborar se procede a desempaquetar y preparar la estructura del
|
|
79
|
+softwaare segun las reglas (`-> unpack() -> prepare() -> mkusers()`), para poder
|
|
80
|
+despues compenzar a compilar el programa (`-> build() -> check()`) si este compila
|
|
81
|
+entonces procede a crear el archivo APK segun las indicaciones del APKBUILD y
|
|
82
|
+si hay detalles extra (`-> package() -> subpackages() -> apk -> cleanup()`).
|
|
83
|
+
|
|
84
|
+La **aplicacion de empaquetado** se llama `abuild` y se encarga de ejecutar esta
|
|
85
|
+secuencia de reglas y sus funcionalidades..
|
|
86
|
+
|
|
87
|
+Estos paquetes APK generados despues se colocan en **repositorios de paquetes**.
|
|
88
|
+
|
|
89
|
+#### repositorios
|
|
90
|
+
|
|
91
|
+Los paquetes se **agregan en un unico directorio** (sin organizacion, todos
|
|
92
|
+directos en la raiz del directorio), y se aniade al mismo un **archivo indice**,
|
|
93
|
+por lo que **cualquier directorio con una coleccion de archivos APK y un indice
|
|
94
|
+es un repositorio alpine.**
|
|
95
|
+
|
|
96
|
+El **archivo indice** es llamado `APKINDEX` y contiene la misma informacion que
|
|
97
|
+la que esta en `.PKGINFO` pero de todos los paquetes juntos, separadas por una
|
|
98
|
+linea extra en blanco. Este archivo siempre esta comprimido generalmente tendra
|
|
99
|
+el nombre de `APKINDEX.tar.gz`
|
|
100
|
+
|
|
101
|
+Los directorios del repositorio indican una **rama de paquetes**, alpine desde
|
|
102
|
+la version 3 tiene dos ramas, la **main** y la **community**, los repositorios
|
|
103
|
+tiene estos dos directorios y cada uno tiene todos los paquetes sin ningun
|
|
104
|
+subdirectorio. En cada rama directorio esta un archivo indice `APKINDEX` compreso.
|
|
105
|
+
|
|
106
|
+En la actualidad cuando se construye localmente un paquete, un repositorio
|
|
107
|
+se genera y se crea su indice autoatico en su home. Remitase a la configuracion
|
|
108
|
+de `abuild` en la segunda seccion en la parte de construccion y repositorio
|
|
109
|
+de paquetes.
|
|
110
|
+
|
|
111
|
+#### manejador de paquetes
|
|
112
|
+
|
|
113
|
+Para poder emplear estos se utiliza la utilidad de manejo de paquetes **apk**
|
|
114
|
+el cual tiene el mismo nombre que el formato y que el tipo de paquetes.
|
|
115
|
+Para mayor informacion de como utilizarlo lea la pagina wiki [apk-tool.md](apk-tool.md)
|
|
116
|
+
|
|
117
|
+## 2 - Practica - Hacer paquetes y repositorios
|
|
118
|
+
|
|
119
|
+Aqui se aprendera crear y hacer un repositorio de `APKBUILD`s (recetas)
|
|
120
|
+para hacer paquetes para [Alpine linux](../README.md)
|
|
121
|
+tambien para configurar `abuild` para que puedas crear los paquetes
|
|
122
|
+a partir de los `APKBUILD`
|
|
123
|
+
|
|
124
|
+Una vez esto podras ejecutar estas recetas (los `APKBUILD`s) y entonces despues
|
|
125
|
+publicar (en los `repositorios`) lo producido (los paquetes `apk`s binarios).
|
|
126
|
+
|
|
127
|
+**ADVERTENCIA** los "alpinistas" son fanaticos de no colocar nada, lo siendo,
|
|
128
|
+aqui se va trabajar con las herramentas correctas, asi que instale lo que se
|
|
129
|
+indica aqui! Que le quede claro.
|
|
130
|
+
|
|
131
|
+- [Instalacion de los programas necesarios](#instalacion-de-los-programas-necesarios)
|
|
132
|
+- [Creacion del usuario y entorno abuild](#creacion-del-usuario-y-entorno-abuild)
|
|
133
|
+- [Iniciando sesion y configurando el entorno](#iniciando-sesion-y-configurando-el-entorno)
|
|
134
|
+- [Ejercicio 1 crear un paquete nuevo con internet](#ejercicio-1-crear-un-paquete-nuevo-con-internet)
|
|
135
|
+- [Ejercicio 2 crear un paquete nuevo con las fuentes local](#ejercicio-2-crear-un-paquete-nuevo-con-las-fuentes-local)
|
|
136
|
+- [Generacion automatica de mi repositorio](#generacion-automatica-de-mi-repositorio)
|
|
137
|
+
|
|
138
|
+Cada linea es un comando que puede ejecutarse, si hay varias lineas seguidas,
|
|
139
|
+se puede pegar todas estas lineas juntas en la consola y los comandos se ejecutaran
|
|
140
|
+pero, cada dos lineas en blanco significa que debe esperar a que termine el
|
|
141
|
+comando para ejecutar el siguente, por ende si hay dos lineas separadas por una
|
|
142
|
+linea en blanco o vacia, significa que debe pegar la primera y depsues la segunda
|
|
143
|
+solo si la primera ya se ejecuto.
|
|
144
|
+
|
|
145
|
+### Instalacion de los programas necesarios
|
|
146
|
+
|
|
147
|
+Primero necesitamos el entorno base de empaquetamiento o desarrollo, implica:
|
|
148
|
+
|
|
149
|
+* utilidades base del sistema, entre ellas bash aunque no lo use y archivadores
|
|
150
|
+* programas de trabajo, entre ellos abuild, git, y gnu/compilers.
|
|
151
|
+
|
|
152
|
+```bash
|
|
153
|
+apk add shadow shadow-doc shadow-uidmap bash bash-doc bash-dev \
|
|
154
|
+ doas doas-doc doas-sudo-shim coreutils coreutils-doc tree tree-doc \
|
|
155
|
+ man-db man-pages zlib zlib-doc wget wget-doc curl curl-doc aria2 aria2-doc \
|
|
156
|
+ sed sed-doc lsof lsof-doc less less-doc groff groff-doc gawk gawk-doc \
|
|
157
|
+ zip zip-doc p7zip p7zip-doc xz xz-doc tar tar-doc file file-doc
|
|
158
|
+
|
|
159
|
+apk add abuild abuild-rootbld abuild-doc build-base gcc-doc make-doc patch-doc \
|
|
160
|
+ arch-install-scripts arch-install-scripts-doc lzip-doc tar-doc zlib-doc \
|
|
161
|
+ apk-tools-doc alpine-sdk git git-doc
|
|
162
|
+```
|
|
163
|
+
|
|
164
|
+Tenga en claro, que entre los comandos, se agregan tambien los paquetes de
|
|
165
|
+las paginas de manual ( los `xxx-doc` y el `man-db` y `man-pages`), esto es
|
|
166
|
+imperativo porque lo va necesitar para corroborar las opciones de los programas
|
|
167
|
+asi como datos del mismo, por ejemplo inclusion de ejemplos de los mismos.
|
|
168
|
+
|
|
169
|
+Algunos paquetes se incluyen **para evitar fallas en el software empaquetar**,
|
|
170
|
+especialmente si ud no ha usado alpine antes o es la primera vez que empaquetara,
|
|
171
|
+ya que todo programa que empaquete no tendra jamas en cuenta a la distro alpine.
|
|
172
|
+
|
|
173
|
+### Creacion del usuario y entorno abuild
|
|
174
|
+
|
|
175
|
+El entorno de creacion necesita realizarse sea con un usuario dedicado o desde
|
|
176
|
+su usuario de uso normal, en VenenuX alpine no se permiten usuarios personalizados
|
|
177
|
+ya que la diversidad que caracteriza linux es la misma que causa sus problemas,
|
|
178
|
+usando el mismo usuario estandarizado todos nuestros scripts funcionaran.
|
|
179
|
+
|
|
180
|
+El entorno se realiza sin ser administrador (el usuario `root`) dado que si estos
|
|
181
|
+programas que empaqueta realizan una instruccion asumiendo la maquina actual,
|
|
182
|
+modificara su sistema con configuraciones no adecuadas o incluso las exportara
|
|
183
|
+a el paquete que creara y publicara.
|
|
184
|
+
|
|
185
|
+Todos los comandos estan dise;ados de forma que puede siempre ejecutarlos asi
|
|
186
|
+ya hayan realizado su funcion, no afectara volver ejecutarlos.
|
|
187
|
+
|
|
188
|
+* crear el usuario `general`, si ya esta creado este comando no afectara.
|
|
189
|
+* configurar el `doas` para que pueda ejecutar cualquier comando con su clave
|
|
190
|
+* agregar el usuario a los grupos para que funcione y permita manejar su entorno
|
|
191
|
+
|
|
192
|
+```bash
|
|
193
|
+useradd -m -U -c "" -G abuild,wheel,input,disk,floppy,cdrom,dialout,audio,video,lp,netdev,games,users,ping general
|
|
194
|
+
|
|
195
|
+cat > /etc/doas.d/general.conf << EOF
|
|
196
|
+permit keepenv :general
|
|
197
|
+EOF
|
|
198
|
+
|
|
199
|
+for u in $(ls /home); do for g in abuild disk lp floppy audio cdrom dialout video lp netdev games users ping; do addgroup $u $g; done;done
|
|
200
|
+```
|
|
201
|
+
|
|
202
|
+El usuario `general` esta incluidos en distintos grupos para poder acceder a
|
|
203
|
+discos, sonido, coneciones, video, jugar, y realizar operaciones de red. Note
|
|
204
|
+que **el primer grupo se llama `abuild`** que es creado por cualqueir paquete de
|
|
205
|
+alpine que implique trabajar con compilacion desde `abuild`. Si el usuario no
|
|
206
|
+esta agregado a dicho grupo no podra trabajar completamente creando paquetes.
|
|
207
|
+
|
|
208
|
+Ahora cierre la sesión de la cuenta de root, e inicie sesión como `general`.
|
|
209
|
+
|
|
210
|
+### Iniciando sesion y configurando el entorno
|
|
211
|
+
|
|
212
|
+A partir de aquí todo se debera hacer en una cuenta de usuario `general`, y las
|
|
213
|
+operaciones que requieren privilegios de superusuario se pueden hacer con el
|
|
214
|
+prefijo `doas` antes de cualqueir comando que desee que se ejecute. Ojo, solo
|
|
215
|
+ejecute y prefija con el `doas` cuando sea necesario.
|
|
216
|
+
|
|
217
|
+* crear el directorio de trabajo estandar y asignar los permisos adecuados
|
|
218
|
+* configurar el tipo de integracion de cambios de git
|
|
219
|
+* configurar la capacidad de datos que se suben con git
|
|
220
|
+* Crear el directorio donde el proceso de compilacion reusara los archivos descargados
|
|
221
|
+* configurar abuild para que compile maxima optimizado y use las rutas correctas
|
|
222
|
+* Asignar permisos para correcta ejecucion del entorno en las rutas correctas
|
|
223
|
+* configurar la indicacion del usuario empaquetador en el git y el abuild
|
|
224
|
+* generar la llave privada para firmar los paquetes con una firma digital publica
|
|
225
|
+
|
|
226
|
+```
|
|
227
|
+mkdir -m 775 -p /home/general/Devel
|
|
228
|
+chown general:abuild /home/general/Devel
|
|
229
|
+
|
|
230
|
+git config --global pull.rebase=true
|
|
231
|
+git config --global ssh.postBuffer 2000000000
|
|
232
|
+git config --global http.postBuffer 2000000000
|
|
233
|
+git config --global http.lowSpeedLimit 0
|
|
234
|
+git config --global http.lowSpeedTime 999999
|
|
235
|
+git config --global https.postBuffer 2000000000
|
|
236
|
+git config --global https.lowSpeedLimit 0
|
|
237
|
+git config --global https.lowSpeedTime 999999
|
|
238
|
+
|
|
239
|
+doas mkdir -m 775 -p /var/cache/distfiles
|
|
240
|
+doas chgrp abuild /var/cache/distfiles
|
|
241
|
+doas sed -i 's|export CFLAGS\s*=.*|export CFLAGS="-O2"|g' /etc/abuild.conf
|
|
242
|
+doas sed -i 's|.*USE_CCACHE\s*=.*|USE_CCACHE=1|g' /etc/abuild.conf
|
|
243
|
+doas sed -i 's|SRCDEST\s*=.*|SRCDEST=/var/cache/distfiles|g' /etc/abuild.conf
|
|
244
|
+doas mkdir -m 775 -p /home/general/Devel/packages
|
|
245
|
+doas chown general:abuild /home/general/Devel
|
|
246
|
+doas sed -i 's|REPODEST\s*=.*|REPODEST=\$HOME/Devel/packages/|g' /etc/abuild.conf
|
|
247
|
+
|
|
248
|
+git config --global user.email "gen...@venenux.xxx"
|
|
249
|
+git config --global user.name "generalvenenux"
|
|
250
|
+doas sed -i 's|.*PACKAGER\s*=.*|PACKAGER="generalvenenux <gen...@venenux.xxx>"|g' /etc/abuild.conf
|
|
251
|
+doas sed -i 's|.*MAINTAINER\s*=.*|MAINTAINER="\$PACKAGER"|g' /etc/abuild.conf
|
|
252
|
+
|
|
253
|
+abuild-keygen -a -i -n
|
|
254
|
+```
|
|
255
|
+
|
|
256
|
+Notese que cada apartado de la lista anterior tiene un grupo de comandos que
|
|
257
|
+estan separados por una linea vacia, significa que no solo explica cada grupo
|
|
258
|
+y que hace sino que tambien indica que debe esperar que este grupo de comandos
|
|
259
|
+se hayan ejecutado correctamente antes de "pegar" el siguente lote a ejecutar.
|
|
260
|
+
|
|
261
|
+### Ejercicio 1 crear un paquete nuevo con internet
|
|
262
|
+
|
|
263
|
+Esto es para cuando el programa no esta aun empaquetado en alpine, este no existe
|
|
264
|
+y lo piensa empaquetar dede internet para alpine. Ejecute los siguientes
|
|
265
|
+pasos descritos con sus comandos a continuacion:
|
|
266
|
+
|
|
267
|
+* Crear un directorio de trabajo y cambiarse a dicho directorio
|
|
268
|
+* Crear el archivo APKBUILD con la ayuda del sistema de desarrollo abuild
|
|
269
|
+ * El parametro `-f` asegura se creen archivos frescos para alpine empaquetar
|
|
270
|
+ * El parametro `-d` le asigna la descripcion `crea dialogos segun el entorno`
|
|
271
|
+ * El parametro `-n` le coloca el nombre del paquete a `easybashgui`
|
|
272
|
+ * El parametro `-l` la ha asignado la licencia `MIT` (para el APKBUILD solo)
|
|
273
|
+ * Se usa `-a` porque este programa emplea Makefile, asi generara las isntrucciones
|
|
274
|
+ * el ultimo parametro es la orden de descarga directa del programa empaquetar
|
|
275
|
+* Se creara el directorio con el nombre del paquete
|
|
276
|
+ * Internamente tendra el archivo `APKBUILD`
|
|
277
|
+ * Las fuentes del programa estaran descargadas en `/var/cache/distfiles`
|
|
278
|
+ * Despues edite el archivo `APKBUILD` segun las opciones, para que empaquete
|
|
279
|
+ * Se creara unos directorios, donde se realizara la compilacion
|
|
280
|
+ * El archivo `APKBUILD` no siempre detecta bien la url que se le paso de fuentes
|
|
281
|
+* Despues de ajustar se actualiza en checksum del `APKBUILD` para generarlo
|
|
282
|
+* Entonces ya se puede mandar a compilar y crear el paquete APK
|
|
283
|
+ * El resultado estara en el directorio `/home/general/Devel/packages/`
|
|
284
|
+
|
|
285
|
+```bash
|
|
286
|
+mkdir -p /home/general/Devel/alpine-apkbuilds/main
|
|
287
|
+
|
|
288
|
+cd /home/general/Devel/alpine-apkbuilds/main
|
|
289
|
+
|
|
290
|
+newapkbuild -f -d "crea dialogos segun el entorno" -n easybashgui -l MIT -a https://github.com/BashGui/easybashgui/archive/refs/tags/13.0.0.tar.gz
|
|
291
|
+
|
|
292
|
+cd /home/general/Devel/alpine-apkbuilds/main/easybashgui
|
|
293
|
+echo "aqui editar los archivos presentes y salvar"
|
|
294
|
+
|
|
295
|
+abuild checksum
|
|
296
|
+
|
|
297
|
+abuild -r
|
|
298
|
+```
|
|
299
|
+
|
|
300
|
+### Ejercicio 2 crear un paquete nuevo con las fuentes local
|
|
301
|
+
|
|
302
|
+Esto es para cuando el programa no esta aun empaquetado en alpine, este no existe
|
|
303
|
+y usted lo tiene local o quiere la fuentes localmente. Ejecute los siguientes
|
|
304
|
+pasos descritos con sus comandos a continuacion:
|
|
305
|
+
|
|
306
|
+* Crear un directorio de trabajo y cambiarse a dicho directorio
|
|
307
|
+* Crear el archivo APKBUILD con la ayuda del sistema de desarrollo abuild
|
|
308
|
+ * El parametro `-f` asegura se creen archivos frescos para alpine empaquetar
|
|
309
|
+ * El parametro `-d` le asigna la descripcion `crea dialogos segun el entorno`
|
|
310
|
+ * El parametro `-n` le coloca el nombre del paquete a `easybashgui`
|
|
311
|
+ * El parametro `-l` la ha asignado la licencia `MIT` (para el APKBUILD solo)
|
|
312
|
+ * Se usa `-a` porque este programa emplea Makefile, asi generara las isntrucciones
|
|
313
|
+ * el ultimo parametro es la orden de descarga directa del programa empaquetar
|
|
314
|
+* Se creara el directorio con el nombre del paquete
|
|
315
|
+ * Internamente tendra el archivo `APKBUILD`
|
|
316
|
+ * Descargar manualmente las fuentes en el directorio recien creado
|
|
317
|
+ * Despues edite el archivo `APKBUILD` segun las opciones, para que empaquete
|
|
318
|
+ * El archivo `APKBUILD` debe decirle que la fuente esta all mismo sin http
|
|
319
|
+* Despues de ajustar se actualiza en checksum del `APKBUILD` para generarlo
|
|
320
|
+* Entonces ya se puede mandar a compilar y crear el paquete APK
|
|
321
|
+ * El resultado estara en el directorio `/home/general/Devel/packages/`
|
|
322
|
+
|
|
323
|
+```bash
|
|
324
|
+mkdir -p /home/general/Devel/alpine-apkbuilds/main
|
|
325
|
+
|
|
326
|
+cd /home/general/Devel/alpine-apkbuilds/main
|
|
327
|
+
|
|
328
|
+newapkbuild -f -d "crea dialogos segun el entorno" -n easybashgui -l MIT -c easybashgui-13.0.0
|
|
329
|
+
|
|
330
|
+cd /home/general/Devel/alpine-apkbuilds/main/easybashgui
|
|
331
|
+aria2c -o easybashgui-13.0.0.tar.gz https://github.com/BashGui/easybashgui/archive/refs/tags/13.0.0.tar.gz
|
|
332
|
+echo "aqui editar los archivos presentes y salvar"
|
|
333
|
+
|
|
334
|
+abuild checksum
|
|
335
|
+
|
|
336
|
+abuild -r
|
|
337
|
+```
|
|
338
|
+
|
|
339
|
+### Generacion automatica de mi repositorio
|
|
340
|
+
|
|
341
|
+Despues de crear su paquete nuevo existosamente si se compilo, el nuevo binario
|
|
342
|
+estara en `/home/general/Devel/packages/main`, pero ojo se creara un directorio
|
|
343
|
+por cada arquitectura, siendo estos `x86`, `x86_64`, `armv7` etc
|
|
344
|
+
|
|
345
|
+El archivo indice `APKINDEX.tar.gz` es actualizado y firmado automatico,
|
|
346
|
+y este repositorio puede ser expuesto via web con apache o lighttp, pero
|
|
347
|
+no directamente el directorio, sino empleando aliasing:
|
|
348
|
+
|
|
349
|
+Caso apache2:
|
|
350
|
+
|
|
351
|
+```
|
|
352
|
+Alias /packages /home/general/Devel/packages/
|
|
353
|
+<Directory /home/general/Devel/packages/>
|
|
354
|
+ Require all granted
|
|
355
|
+</Directory>
|
|
356
|
+```
|
|
357
|
+
|
|
358
|
+Caso lighttpd
|
|
359
|
+
|
|
360
|
+```
|
|
361
|
+alias.url += (
|
|
362
|
+ "/packages/" => "/home/general/Devel/packages/"
|
|
363
|
+)
|
|
364
|
+$HTTP["url"] =~ "^/packages/" {
|
|
365
|
+ dir-listing.activate = "enable"
|
|
366
|
+}
|
|
367
|
+EOF
|
|
368
|
+```
|
|
369
|
+
|
|
370
|
+## Anexos
|
|
371
|
+
|
|
372
|
+### Como se creaban los APKBUILD
|
|
373
|
+
|
|
374
|
+En sistemas Alpine mas antiguos, `abuild -c -n easibashgui` era la forma de
|
|
375
|
+crear archivos `APKBUILD`. El `easybashgui` era un parámetro de la opción `-n`,
|
|
376
|
+por lo que el orden de `-c` y `-n` importaba.
|
|
377
|
+
|
|
378
|
+### sobre abuild-keygen
|
|
379
|
+
|
|
380
|
+Como anecdota, el comando `abuild-keygen` es una evolucion que en antiguas
|
|
381
|
+versiones habria que hacer a mano asi:
|
|
382
|
+
|
|
383
|
+```
|
|
384
|
+openssl genrsa -out /home/general/.abuild/gen...@venenux.xxx.key.rsa 2048
|
|
385
|
+openssl rsa -in /home/general/Devel/gen...@venenux.xxx.key.rsa -pubout -out /etc/apk/keys/gen...@venenux.xxx.key.pub
|
|
386
|
+cat > /etc/abuild.conf << EOF
|
|
387
|
+PACKAGER_PRIVKEY="/home/general/.abuild/gen...@venenux.xxx.key.rsa"
|
|
388
|
+EOF
|
|
389
|
+```
|
|
390
|
+
|
|
391
|
+### Generacion manual de repositorio
|
|
392
|
+
|
|
393
|
+Puede que el paquete ya existe solo en binario, habra que agregar a mano, por
|
|
394
|
+ende debe crear la rama y la arquitecturan dentro de el directorio de paquetes.
|
|
395
|
+
|
|
396
|
+Nuestro repositorio ha sido configurado en `/home/general/Devel/packages/main`,
|
|
397
|
+pero ojo se creara un directorio por cada arquitectura, siendo estos `x86`,
|
|
398
|
+`x86_64`, `armv7` etc, dentro de este.
|
|
399
|
+
|
|
400
|
+Despues colocar el paquete dentro del directorio de la arquitectura, si el
|
|
401
|
+paquete es un script o no depende de arquitectura, colocarlo en todos los
|
|
402
|
+directorios de arquitectura.
|
|
403
|
+
|
|
404
|
+Finalmente se crea el indice sin firma y despues se firma manualmente.
|
|
405
|
+
|
|
406
|
+* se crea un directorio de paquetes y dentro uno para cada arquitectura
|
|
407
|
+* se descarga un binario, aqui uno ficticio
|
|
408
|
+* se crea y agrega el mismo en el repositorio de paquetes en su arquitectura
|
|
409
|
+* se genera el indice de paquetes listando los APKs del directorio
|
|
410
|
+* se copia la llave sin firmar para que ofrezca los indices
|
|
411
|
+
|
|
412
|
+```
|
|
413
|
+mkdir -p /home/general/Devel/packages/main/x86
|
|
414
|
+
|
|
415
|
+cd /home/general/Devel/packages/main/x86
|
|
416
|
+
|
|
417
|
+wget https://www.google.com/alpinepackage-1-1.apk
|
|
418
|
+
|
|
419
|
+apk index -o /home/general/Devel/packages/main/x86/APKINDEX.unsigned.tar.gz /home/general/Devel/packages/main/x86/*.apk
|
|
420
|
+
|
|
421
|
+cp /home/general/Devel/packages/main/x86/APKINDEX.unsigned.tar.gz /home/general/Devel/packages/main/x86/APKINDEX.tar.gz
|
|
422
|
+```
|
|
423
|
+
|
|
424
|
+Estos paquetes deberan ser instalado o indicados usando `--allow-untrusted` en
|
|
425
|
+el comando `apk`, tanto para la accion `update` asi como para instalar.
|
|
426
|
+
|
|
427
|
+Para firma el repositorio debe haber ejecutado todos los pasos de la configuracion
|
|
428
|
+mencionados en la seccion 2 de este documento, y despues de tener las llaves
|
|
429
|
+tanto publica como la privada poder firmarlos asi:
|
|
430
|
+
|
|
431
|
+```
|
|
432
|
+abuild-sign -k /home/general/.abuild/gen...@venenux.xxx-5629d7e6.rsa /home/general/Devel/packages/main/x86/APKINDEX.tar.gz
|
|
433
|
+```
|
|
434
|
+
|
|
435
|
+# mas informacion
|
|
436
|
+
|
|
437
|
+- Author
|
|
438
|
+ - Sodomon as https://t.me/alpine_linux_espanol/26413
|
|
439
|
+- 🗯 IRC
|
|
440
|
+ - 💬 `##alpine_telegram_english` (roto)
|
|
441
|
+- 📱 Telegram https://t.me/alpine_linux
|
|
442
|
+ - 🇨🇴 https://t.me/alpine_linux_espanol
|
|
443
|
+ - 📡 https://t.me/latam_programadores
|
|
444
|
+- Matrix
|
|
445
|
+ - 👥 https://matrix.to/#/#alpine-linux-espanol:matrix.org
|
|
446
|
+
|
|
447
|
+# LICENSE
|
|
448
|
+
|
|
449
|
+**CC BY-NC-SA** Sodomon 2020 |