PK µˆö¸o5 o5 OEBPS/about-project.xhtml
Cuando se comenzó a trabajar en el ${project}, ya existÃan varios sistemas en vivo disponibles basados en la distribución Debian y todos hacian un buen trabajo. Desde la perspectiva de Debian, la mayorÃa de estos sistemas tenÃan alguna de estas desventajas:
â— No eran proyectos de Debian y por lo tanto no contaban con soporte desde dentro de Debian.
â— Mezclaban paquetes de diferentes versiones, por ejemplo testing y unstable.
â— Solamente soportaban la arquitectura i386.
◠Modificaban el comportamiento y/o la apariencia de los paquetes, eliminando contenido para reducirlos de tamaño.
â— IncluÃan paquetes de fuera del archivo de Debian.
â— Utilizaban kernels personalizados con parches que no eran parte de Debian.
◠Eran demasiado lentos, debido a su gran tamaño, para ser utilizados como sistemas de rescate.
â— No disponÃan de diferentes medios de instalación, como CDs, DVDs, llaves USB o imágenes de arranque por red netboot.
Debian es el Sistema Operativo Universal: Debian tiene un sistema en vivo para mostrar y representar el auténtico y verdadero Debian con las siguientes ventajas fundamentales:
â— Es un subproyecto de Debian.
◠Refleja el estado (actual) de una versión Debian.
â— Se ejecuta en tantas arquitecturas como es posible.
â— Consiste solamente de paquetes Debian sin modificar.
◠No contiene ningún paquete que no forma parte del archivo de Debian.
â— Utiliza kernels que provienen de Debian inalterados sin parches adicionales.
Solamente se utilizarán paquetes del repositorio de Debian de la sección «main». La sección non-free no es parte de Debian y por lo tanto no puede ser utilizada de ninguna de las maneras para generar imágenes de sistema oficiales.
No se modificará ningún paquete. Siempre que se necesite modificar algo, se hará en coordinación con el correspondiente mantenedor del paquete en Debian.
Como excepción, los paquetes del proyecto como son live-boot, live-build o live-config, pueden ser utilizados temporalmente desde el repositorio del proyecto, por razones de desarrollo (por ejemplo para crear instantaneas de pruebas). Estos paquetes serán actualizados en Debian de manera regular.
En esta fase, no se creará o instalarán configuraciones alternativas o de ejemplo. Se utilizarán todos los paquetes con su configuración por defecto, tal y como quedan después de una instalación normal de Debian.
Siempre que se necesite una configuración diferente a la de por defecto, se hará en coodinación con el mantenedor del paquete Debian correspondiente.
Se puede emplear un sistema para configurar paquetes que utiliza debconf, permitiendo la personalización de la configuración de los paquetes que van a ser instalados en la imagen en vivo que se genere, pero las imágenes en vivo prefabricadas solamente utilizarán la configuración por defecto, a menos que sea absolutamente necesario hacer cambios para que funcionen en los sistemas en vivo. Siempre que sea posible, preferimos adaptar los paquetes en el archivo de Debian para que funcionen mejor en un sistema en vivo en lugar de realizar cambios en nuestra cadena de herramientas o en las configuraciones de las imágenes prefabricadas. Para más información, ver Descripción general de la personalización.
◠Lista de correo: El sistema de contacto principal del proyecto es la lista de correo en https://lists.debian.org/debian-live/. Se puede enviar un correo a la lista directamente dirigiéndolo a debian-live@lists.debian.org Los archivos históricos de la lista están disponibles en https://lists.debian.org/debian-live/.
◠IRC: Un número importante de usuarios y desarrolladores suele estar presente en el canal #debian-live de irc.debian.org (OFTC). Por favor, se debe ser paciente cuando se espera una respuesta en el IRC. Si la respuesta no llega, se puede enviar la pregunta a la lista de correos.
◠BTS: El sistema de gestión de errores de Debian (BTS) contiene detalles de problemas enviados por usuarios y desarrolladores. Los errores están numerados y se mantiene un registro hasta que son reparados. Si se desea más información ver Informes de errores.
License: Este programa es software libre: puede ser redistribuido y/o modificado bajo los términos de la GNU General Public License publicada por la Free Software Foundation, bien de la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÃA, incluso sin la garantÃa implÃcita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la GNU General Public License para más detalles.
DeberÃa haber recibido una copia de la General Public License GNU junto con este programa. Si no, vea http://www.gnu.org/licenses/.
El texto completo de la GNU Licencia Pública General se pueden encontrar en /usr/share/common-licenses/GPL-3
≅ SiSU Spine ᨠ(object numbering & object search)
(web 1993, object numbering 1997, object search 2002 ...) 2023
License: Este programa es software libre: puede ser redistribuido y/o modificado bajo los términos de la GNU General Public License publicada por la Free Software Foundation, bien de la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÃA, incluso sin la garantÃa implÃcita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la GNU General Public License para más detalles.
DeberÃa haber recibido una copia de la General Public License GNU junto con este programa. Si no, vea http://www.gnu.org/licenses/.
El texto completo de la GNU Licencia Pública General se pueden encontrar en /usr/share/common-licenses/GPL-3
≅ SiSU Spine ᨠ(object numbering & object search)
(web 1993, object numbering 1997, object search 2002 ...) 2023
License: Este programa es software libre: puede ser redistribuido y/o modificado bajo los términos de la GNU General Public License publicada por la Free Software Foundation, bien de la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÃA, incluso sin la garantÃa implÃcita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la GNU General Public License para más detalles.
DeberÃa haber recibido una copia de la General Public License GNU junto con este programa. Si no, vea http://www.gnu.org/licenses/.
El texto completo de la GNU Licencia Pública General se pueden encontrar en /usr/share/common-licenses/GPL-3
≅ SiSU Spine ᨠ(object numbering & object search)
(web 1993, object numbering 1997, object search 2002 ...) 2023
Este capÃtulo ofrece ejemplos de creación de imágenes de sistemas en vivo para casos de uso especÃficos. Si se es nuevo en la creación de una imagen en vivo propia, se recomienda leer primero los tres tutoriales en secuencia, ya que cada uno enseña nuevas técnicas que ayudan a utilizar y entender los ejemplos restantes.
Para poder seguir estos ejemplos es necesario un sistema donde crearlos que cumpla con los requisitos enumerados en Requisitos y tener live-build instalado tal y como se describe en Instalación de live-build.
Hay que tener en cuenta que, para abreviar, en estos ejemplos no se especifica una réplica local para la creación de la imagen. Es posible acelerar las descargas considerablemente si se utiliza una réplica local. Se puede especificar las opciones cuando se usa lb config, tal y como se describe en Réplicas de Distribution utilizadas durante la creación, o para más comodidad, establecer el valor por defecto para la creación del sistema en /etc/live/build.conf. Basta con crear este fichero y en el mismo, establecer las variables LB_MIRROR_* correspondientes a la réplica preferida. Todas las demás réplicas usadas en el proceso de creación usarán estos valores por defecto. Por ejemplo:
LB_MIRROR_BOOTSTRAP="http://mirror/debian/" LB_MIRROR_CHROOT_SECURITY="http://mirror/debian-security/" LB_MIRROR_CHROOT_BACKPORTS="http://mirror/debian-updates/"
Caso práctico: Crear una primera imagen sencilla, aprendiendo los fundamentos de live-build.
En este tutorial, vamos a construir una imagen ISO hÃbrida por defecto que contenga únicamente los paquetes base (sin Xorg) y algunos paquetes de soporte, como un primer ejercicio en el uso de live-build.
No puede ser más fácil que esto:
$ mkdir tutorial1 ; cd tutorial1 ; lb config
Si se examina el contenido del directorio config/ se verá almacenada allà una configuración en esqueleto preparada para ser personalizada o en este caso para ser usada inmediatamente para construir una imagen por defecto.
Ahora, como superusuario, crear la imagen, guardando un log con tee mientras se crea.
# lb build 2>&1 | tee build.log
Suponiendo que todo va bien, después de un rato, el directorio actual contendrá live-image-i386.hybrid.iso. Esta imagen ISO hÃbrida se puede arrancar directamente en una máquina virtual como se describe en Probar una imagen ISO con Qemu y en Probar una imagen ISO con VirtualBox o bien ser copiada a un medio óptico como un dispositivo USB tal y como se describe en Grabar una imagen ISO en un medio fÃsico y Copiar una imagen ISO hÃbrida en un dispositivo USB, respectivamente.
Caso práctico: Crear una utilidad de navegador web, aprendiendo a aplicar personalizaciones.
En este tutorial, se creará una imagen adecuada para su uso como utilidad de navegador web, esto sirve como introducción a la personalización de las imágenes de sistemas en vivo.
$ mkdir tutorial2 $ cd tutorial2 $ lb config $ echo "task-lxde-desktop iceweasel" >> config/package-lists/my.list.chroot
La elección de LXDE para este ejemplo refleja el deseo de ofrecer un entorno de escritorio mÃnimo, ya que el enfoque de la imagen es el uso individual que se tiene en mente, el navegador web. Se podrÃa ir aún más lejos y ofrecer una configuración por defecto para el navegador web en config/includes.chroot/etc/iceweasel/profile/, o paquetes adicionales de soporte para la visualización de diversos tipos de contenido web, pero se deja esto como un ejercicio para el lector.
Crear la imagen, de nuevo como superusuario, guardando un log como en el Tutorial 1:
# lb build 2>&1 | tee build.log
De nuevo, verificar que la imagen está bien y probarla igual que en el Tutorial 1.
Caso práctico: Crear un proyecto para conseguir una imagen personalizada, que contenga el software favorito para llevárselo en una memoria USB donde quiera que se vaya, y hacerlo evolucionar en revisiones sucesivas, tal y como vayan cambiando las necesidades y preferencias.
Como nuestra imagen personalizada irá cambiando durante un número de revisiones, si se quiere ir siguiendo esos cambios, probar nuevas cosas de forma experimental y posiblemente volver atrás si no salen bien, se guardará la configuración en el popular sistema de control de versiones git. También se utilizarán las mejores prácticas de configuración automática a través de scripts auto como se describe en Gestionar una configuración.
$ mkdir -p tutorial3/auto $ cp /usr/share/doc/live-build/examples/auto/* tutorial3/auto/ $ cd tutorial3
Editar auto/config del siguiente modo:
#!/bin/sh lb config noauto \ --architectures i386 \ --linux-flavours 686-pae \ "${@}"
Ejecutar lb config para generar el árbol de configuración, utilizando el script auto/config que justo se acaba de crear:
$ lb config
Completar la lista de paquetes local:
$ echo "task-lxde-desktop iceweasel xchat" >> config/package-lists/my.list.chroot
En primer lugar con --architectures i386 se asegura de que en un sistema de creación amd64 se crea una versión de 32-bits adecuada para ser usada en la mayorÃa de máquinas. En segundo lugar, se usa --linux-flavours 686-pae porque no se espera usar esta imagen en sistemas mucho más viejos. En tercer lugar se elige el metapaquete lxde para proporcionar un escritorio mÃnimo. Y, por último, se añaden dos paquetes iniciales favoritos: iceweasel y xchat.
Ahora, crear la imagen:
# lb build
Tener en cuenta que a diferencia de los dos primeros tutoriales, ya no se tiene que escribir 2>&1 | tee build.log ya que esto se incluye ahora en auto/build.
Una vez que se ha probado la imagen (como en el Tutorial 1) y se ha asegurado de que funciona, es el momento de iniciar el repositorio git, añadiendo sólo los scripts auto que se acaba de crear, y luego hacer el primer commit:
$ git init $ cp /usr/share/doc/live-build/examples/gitignore .gitignore $ git add . $ git commit -m "Initial import."
En esta revisión, vamos a limpiar desde la primera creación, agregar el paquete vlc a nuestra configuración, crear de nuevo, probar y enviar los cambios al git.
El comando lb clean limpiará todos los ficheros generados en las primeras creaciones a excepción del caché, lo cual ahorra tener que volver a descargar de nuevo los paquetes. Esto asegura que el siguiente lb build vuelva a ejecutar todas las fases para regenerar los ficheros de nuestra nueva configuración.
# lb clean
Añadir ahora el paquete vlc a nuestra lista de paquetes local en config/package-lists/my.list.chroot:
$ echo vlc >> config/package-lists/my.list.chroot
Crear de nuevo:
# lb build
Probar, y cuando se esté satisfecho, enviar la próxima revisión al git:
$ git commit -a -m "Adding vlc media player."
Por supuesto, es posible hacer cambios más complicados en la configuración, tal vez añadiendo ficheros en los subdirectorios de config/. Cuando se envian nuevas revisiones, hay que tener cuidado de no editar a mano o enviar los ficheros del nivel superior en config que contienen variables LB_* ya que estos son productos de creación también y son siempre limpiados por lb clean y recreados con lb config a través de sus respectivos scripts auto.
Hemos llegado al final de nuestra serie de tutoriales. Si bien son posibles muchos más tipos de personalización, aunque sólo sea con las pocas caracterÃsticas explicadas en estos sencillos ejemplos, se puede crear una variedad casi infinita de imágenes diferentes. Los ejemplos que quedan en esta sección abarcan varios casos de usos diferentes procedentes de las experiencias recogidas de los usuarios de sistemas en vivo.
Caso Práctico: Crear una imagen con live-build para que se conecte directamente a un servidor VNC al arrancar.
Crear un directorio de construcción y lanzar una configuración de esqueleto en su interior, desactivando «recommends» para conseguir un sistema mÃnimo. Y a continuación, crear dos listas iniciales de paquetes: La primera generada con un script proporcionado por live-build llamado Packages (ver Generar listas de paquetes), y la segunda lista una que incluya xorg, gdm3, metacity y xvnc4viewer.
$ mkdir vnc-kiosk-client $ cd vnc-kiosk-client $ lb config -a i386 -k 686-pae --apt-recommends false $ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot $ echo "xorg gdm3 metacity xvnc4viewer" > config/package-lists/my.list.chroot
Como se explica en Ajuste de APT para ahorrar espacio puede ser necesario volver a agregar algunos paquetes recomendados para que la imagen funcione correctamente.
Una manera fácil de conocer todos los «recommends» es utilizar apt-cache. Por ejemplo:
$ apt-cache depends live-config live-boot
En este ejemplo, descubrimos que tenÃamos que volver a incluir varios paquetes recomendados por live-config y live-boot: user-setup para hacer funcionar el inicio automático de sesión y sudo programa esencial para apagar el sistema. Además, podrÃa ser útil añadir live-tools para poder copiar la imagen en la memoria RAM y eject para finalmente poder expulsar el medio en vivo. Por eso:
$ echo "live-tools user-setup sudo eject" > config/package-lists/recommends.list.chroot
Después, crear el directorio /etc/skel en config/includes.chroot y poner dentro un fichero .xsession personalizado para el usuario que por defecto ejecutará metacity e iniciará el xvncviewer, conectándo al puerto 5901 de un servidor en 192.168.1.2:
$ mkdir -p config/includes.chroot/etc/skel $ cat > config/includes.chroot/etc/skel/.xsession << EOF #!/bin/sh /usr/bin/metacity & /usr/bin/xvncviewer 192.168.1.2:1 exit EOF
Crear la imagen:
# lb build
Disfrutarlo.
Caso Práctico: Crear una imagen quitando algunos componentes para que quepa en un pendrive USB de 128MB dejándo un poco de espacio libre para poder usarlo para lo que se quiera.
Al optimizar una imagen para adaptarla al tamaño de algunos medios de almacenamiento, es necesario comprender el equilibrio que se está haciendo entre tamaño y funcionalidad. En este ejemplo, se recorta tanto sólo para dar cabida a material adicional dentro de un tamaño de 128MB, pero sin hacer nada para destruir la integridad de los paquetes que contiene, tales como la depuración de las variantes locales a través del paquete localepurge u otro tipo de optimizaciones «intrusivas». Cabe destacar que se utiliza --debootstrap-options para crear un sistema mÃnimo desde el principio.
$ lb config --apt-indices false --apt-recommends false --debootstrap-options "--variant=minbase" --firmware-chroot false --memtest none
Para hacer que la imagen funcione correctamente, tenemos que volver a añadir, al menos, dos paquetes recomendados, que son excluidos por la opción --apt-recommends false. Ver Ajuste de APT para ahorrar espacio
$ echo "user-setup sudo" > config/package-lists/recommends.list.chroot
Ahora, crear la imagen de forma habitual:
# lb build 2>&1 | tee build.log
En el sistema del autor, en el momento de escribir esto, la configuración anterior produjo una imagen de 110MB. Esto se compara favorablemente en tamaño con la imagen de 192MB producida por la configuración por defecto en el Tutorial 1.
Dejar fuera los Ãndices de APT con --apt-indices false ahorra una cantidad importante de espacio, la desventaja es que será necesario hacer un apt-get update antes de usar apt en el sistema en vivo. Excluyendo los paquetes recomendados con --apt-recommends false se ahorra un poco de espacio adicional a costa de omitir algunos paquetes que de otro modo podrÃa esperarse que estuvieran alli. --debootstrap-options “--variant=minbase†preinstala un sistema mÃnimo desde el principio. El hecho de no incluir automáticamente paquetes de firmware con --firmware-chroot false también ahorra un poco de espacio. Y por último, --memtest none evita la instalación de un comprobador de memoria.
Nota: También se puede conseguir un sistema mÃnimo utilizando scripts gancho como por ejemplo el script stripped.hook.chroot que se encuentra en /usr/share/doc/live-build/examples/hooks, que puede reducir aún más el tamaño de la imagen hasta 91MB. Sin embargo, el script elimina documentación y otros ficheros de los paquetes instalados en el sistema. Esto viola la integridad de los paquetes y como se comenta en el encabezado del script, puede tener consecuencias imprevistas. Es por eso por lo que el uso de debootstrap es el método recomendado para conseguir este objetivo.
Caso práctico: Crear una imagen que contenga el escritorio gráfico GNOME, la variante local Suiza y un instalador.
Se desea crear una imagen iso-hybrid para la arquitectura i386 con un escritorio preferido, en este caso el GNOME, que contiene todos los mismos paquetes que serÃan instalados por el programa de instalación estándar de Debian para GNOME.
El primer problema es descubrir los nombres de las tareas adecuadas. En la actualidad, live-build no puede ayudar en esto. Aunque podrÃamos tener suerte y encontrarlos a base de pruebas, hay una herramienta, grep-dctrl, para extraerlos de las descripciones de tareas en tasksel-data, para proceder, asegurarse de tener ambas cosas:
# apt-get install dctrl-tools tasksel-data
Ahora podemos buscar las tareas apropiadas, primero con:
$ grep-dctrl -FTest-lang de /usr/share/tasksel/descs/debian-tasks.desc -sTask Task: german
Con este comando, se descubre que la tarea se llama, sencillamente, german. Ahora, para encontrar las tareas relacionas:
$ grep-dctrl -FEnhances german /usr/share/tasksel/descs/debian-tasks.desc -sTask Task: german-desktop Task: german-kde-desktop
En el momento del arranque se va a generar la variante local de_CH.UTF-8 y seleccionar la distribución del teclado ch. Ahora vamos a poner las piezas juntas. Recordando de Utilizar metapaquetes que los metapaquetes tienen el prefijo task-, especificamos estos parámetros del lenguaje en el arranque y a continuación añadimos los paquetes de prioridad estándar y los metapaquetes que hemos descubierto a la lista de paquetes de la siguiente manera:
$ mkdir live-gnome-ch $ cd live-gnome-ch $ lb config \ -a i386 \ --bootappend-live "boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch" \ --debian-installer live $ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot $ echo task-gnome-desktop task-german task-german-desktop >> config/package-lists/desktop.list.chroot $ echo debian-installer-launcher >> config/package-lists/installer.list.chroot
Tener en cuenta que se ha incluido el paquete debian-installer-launcher para lanzar el instalador desde el escritorio en vivo. El kernel 586, necesario para que el lanzador funcione correctamente, se incluye por defecto.
License: Este programa es software libre: puede ser redistribuido y/o modificado bajo los términos de la GNU General Public License publicada por la Free Software Foundation, bien de la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÃA, incluso sin la garantÃa implÃcita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la GNU General Public License para más detalles.
DeberÃa haber recibido una copia de la General Public License GNU junto con este programa. Si no, vea http://www.gnu.org/licenses/.
El texto completo de la GNU Licencia Pública General se pueden encontrar en /usr/share/common-licenses/GPL-3
≅ SiSU Spine ᨠ(object numbering & object search)
(web 1993, object numbering 1997, object search 2002 ...) 2023
License: Este programa es software libre: puede ser redistribuido y/o modificado bajo los términos de la GNU General Public License publicada por la Free Software Foundation, bien de la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÃA, incluso sin la garantÃa implÃcita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la GNU General Public License para más detalles.
DeberÃa haber recibido una copia de la General Public License GNU junto con este programa. Si no, vea http://www.gnu.org/licenses/.
El texto completo de la GNU Licencia Pública General se pueden encontrar en /usr/share/common-licenses/GPL-3
≅ SiSU Spine ᨠ(object numbering & object search)
(web 1993, object numbering 1997, object search 2002 ...) 2023
License: Este programa es software libre: puede ser redistribuido y/o modificado bajo los términos de la GNU General Public License publicada por la Free Software Foundation, bien de la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÃA, incluso sin la garantÃa implÃcita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la GNU General Public License para más detalles.
DeberÃa haber recibido una copia de la General Public License GNU junto con este programa. Si no, vea http://www.gnu.org/licenses/.
El texto completo de la GNU Licencia Pública General se pueden encontrar en /usr/share/common-licenses/GPL-3
≅ SiSU Spine ᨠ(object numbering & object search)
(web 1993, object numbering 1997, object search 2002 ...) 2023
License: Este programa es software libre: puede ser redistribuido y/o modificado bajo los términos de la GNU General Public License publicada por la Free Software Foundation, bien de la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÃA, incluso sin la garantÃa implÃcita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la GNU General Public License para más detalles.
DeberÃa haber recibido una copia de la General Public License GNU junto con este programa. Si no, vea http://www.gnu.org/licenses/.
El texto completo de la GNU Licencia Pública General se pueden encontrar en /usr/share/common-licenses/GPL-3
≅ SiSU Spine ᨠ(object numbering & object search)
(web 1993, object numbering 1997, object search 2002 ...) 2023
License: Este programa es software libre: puede ser redistribuido y/o modificado bajo los términos de la GNU General Public License publicada por la Free Software Foundation, bien de la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÃA, incluso sin la garantÃa implÃcita de COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la GNU General Public License para más detalles.
DeberÃa haber recibido una copia de la General Public License GNU junto con este programa. Si no, vea http://www.gnu.org/licenses/.
El texto completo de la GNU Licencia Pública General se pueden encontrar en /usr/share/common-licenses/GPL-3
≅ SiSU Spine ᨠ(object numbering & object search)
(web 1993, object numbering 1997, object search 2002 ...) 2023