XBPS-static.md: correcciones de redacción

This commit is contained in:
Tuxliban Torvalds 2022-01-15 18:06:33 -06:00
parent ec590bb265
commit 8b4a2b2b8f
1 changed files with 11 additions and 6 deletions

View File

@ -11,18 +11,19 @@
## Introducción
A través del siguiente tutorial se mostrará cómo actualizar la versión de XBPS que está [incluída en Void](https://github.com/void-linux/xbps) (v. 0.59.1) a la [versión 21.1](https://gitlab.com/xtraeme/xbps) la cual es la más reciente publicada por Juan Romero Pardines.
A través del siguiente tutorial se mostrará cómo actualizar la versión de XBPS que está [incluída en Void Linux](https://github.com/void-linux/xbps) (v. 0.59.1) a la [versión 21.1](https://gitlab.com/xtraeme/xbps), distribuida y publicada recientemente por Juan Romero Pardines.
### Vinculación estática
### ¿Qué es la vinculación estática?
En cualquier programa existe un enlace entre una llamada al método y la definición del método, pudiéndose realizar de forma estática o dinámica. En el enlace estático, el enlace se resuelve en el momento de la compilación, mientras que el enlace dinámico se resuelve en el tiempo de ejecución, siendo relativamente más lento. Por lo tanto, el enlace estático se traduce en un programa más rápido en comparación con el enlace dinámico y, al mismo tiempo, al contener las librerías necesarias para su funcionamiento, los ejecutables vinculados estáticamente son portátiles y a prueba de fallos frente a los cambios de ABI; por lo que se tiene la certeza de que el ejecutable seguirá funcionando en la misma arquitectura incluso con el paso de los años. Por último, los ejecutables vinculados estáticamente consumen menos memoria porque su tamaño binario es más pequeño y solo mapean las funciones de las que dependen en la memoria, caso contrario con las bibliotecas dinámicas.
### Interfaz binaria de aplicaciones (ABI)
ABI define las estructuras y los métodos que usará una aplicación compilada para acceder a la/s biblioteca/s externa/s a un nivel inferior al de una API. Una API define el orden en que pasan los argumentos a una función y qué funciones son parte de su biblioteca. La ABI define la mecánica de cómo se pasan estos argumentos (registros, pila, etc.) y cómo se almacena el código dentro del archivo de la biblioteca, de modo que cualquier programa que use la biblioteca pueda localizar la función deseada y ejecutarla. Si todo el sistema se ajusta a la misma ABI, entonces cualquier programa puede trabajar con cualquier archivo de biblioteca, sin importar quién los creó. Cuando se produce un cambio de ABI, los programas que usan esa biblioteca no funcionarán a menos que se vuelvan a compilar para usar la nueva versión de la biblioteca.
ABI define las estructuras y los métodos que usará una aplicación compilada para acceder a la/s biblioteca/s externa/s a un nivel inferior al de una API. Una API define el orden en que pasan los argumentos a una función y qué funciones son parte de su biblioteca. La ABI define la mecánica de cómo se pasan estos argumentos (registros, pila, etc.) y cómo se almacena el código dentro del archivo de la biblioteca, de modo que cualquier programa que use la biblioteca pueda localizar la función deseada y ejecutarla. Si todo el sistema se ajusta a la misma ABI, entonces cualquier programa puede trabajar con cualquier archivo de biblioteca sin importar quién los creó. Cuando se produce un cambio de ABI, los programas que usan esa biblioteca no funcionarán a menos que se vuelvan a compilar para usar la nueva versión de la biblioteca.
### Musl libc
Antes de proceder con la construcción del paquete cabe hacer una aclaración que la vinculación estática se hará enfocada a la [libc Musl](https://www.musl-libc.org/faq.html) ya que esta libc evita con cuidado extraer grandes cantidades de código o datos que la aplicación no utilizará, por lo tanto, un código mínimo específico de la máquina significa menos posibilidades de rotura en arquitecturas minoritarias y un mayor éxito con el desarrollo en C "escribir una vez y ejecutarlo en todas partes".
Antes de proceder con la construcción del paquete, cabe hacer una aclaración que la vinculación estática se hará tomando como base a la [libc Musl](https://www.musl-libc.org/faq.html) ya que esta libc evita con cuidado extraer grandes cantidades de código o datos que la aplicación no utilizará, por lo tanto, un código mínimo específico de la máquina significa menos posibilidades de rotura en arquitecturas minoritarias y un mayor éxito con el desarrollo en C "escribir una vez y ejecutarlo en todas partes".
Musl es una biblioteca estándar de C destinada a sistemas operativos Linux, desarrollada por Rich Felker con el objetivo de escribir una implementación libc limpia, eficiente y conforme a los estándares ISO C y POSIX, además de extensiones comunes, permitiendo un enlazado estático de bibliotecas eficaz y robusto.
@ -42,7 +43,11 @@ Como se mencionó anteriormente, para actualizar la versión del gestor de paque
Una vez modificada la plantilla guardar cambios y proceder con la construcción del paquete usando *xbps-src*
# ./xbps-src pkg xbps-static
$ ./xbps-src pkg xbps-static
**Nota:** En caso de tener un sistema con la [libc Glibc](https://www.gnu.org/software/libc/), será necesario construir el paquete usando la compilación cruzada, para ello seguir con los siguiente pasos:
$ ./xbps-src -a x86_64 pkg xbps-static
Cuando el paquete termine de construirse proceder a instalarlo. Se recomienda ampliamente usar el método a través del comando *xi*
@ -60,7 +65,7 @@ Al introducir lo anterior deberá devolver lo siguiente:
XBPS: 21.1 API: 20211203 GIT: UNSET https://gitlab.com/xtraeme/xbps
Hasta este punto cabe aclarar que existe un pequeño problema al querer sincronizar los repositorios que consiste en que el sistema muestra un error con la verificación del certificado de seguridad y otro más que no detecta correctamante la arquitectura del sistema:
Hasta este punto, en arquitecturas **x86_64** XBPS ya es funcional, sin embargo, para la arquitectura de **x86_64-musl** existe un pequeño problema al querer sincronizar los repositorios que consiste en que el sistema muestra un error con la verificación del certificado de seguridad y otro más que no detecta correctamante la arquitectura del sistema:
1. Error de verificación de certificado de seguridad: