OSI
tagline: De openSUSE
Contenido |
OpenSUSE Installer (Concepto)
Este documento solo es conceptual, y no forma parte oficial del proyecto OpenSUSE, por lo que no debe de usarse o implementarse. Puede estar sujeto a cualquier cambio en cualquier momento.
Casos de uso
- Permite al usuario la instalación de paquetes de manera totalmente fuera de línea
- El usuario solo necesita descargarse un solo archivo
- Emula el concepto de instalación de los MSI de Microsoft Windows, con lo que el usuario no tiene que aprender un concepto nuevo de instalación. A los usuarios que vienen de la plataforma de Microsoft, les es costoso entender el concepto de Repositorio y paquetes rpm.
- Aprovecha las tecnologías ya existentes y actuales de openSUSE en gestión de paquetes, lo que le permite integrarse de manera trasparente al sistema normal de gestión de paquetes.
Ámbito
- El ámbito es la automatización la instalación de aplicaciones o grupo de aplicaciones utilizando el framework One Click Install mediante un repositorio temporal local con todos los paquetes y dependencias necesarias de manera trasparente al usuario.
- Fuera del ámbito queda cualquier gestión del tratamiento de paquetes y de repositorios de la distribución
Requisitos
- Las acciones tienen que ser realizadas con un solo click por parte del usuario
- Debe de estar compuesto por un solo archivo y que su ejecución sea independiente en lo máximo posible de lo que tenga instalado el usuario
- Debe de respetar la seguridad establecida en la instalación de paquetes por la distribución
- Debe de ser capaz de resolver los conflictos entre paquetes
Dependencias
- Requiere de la tecnología One Click Install
Propuesta del estandard
Los archivos de instalación con extensión OSI (.osi), serán archivos que estarán compuestos por dos partes:
- Shell Script. Una parte shell scritp encargada de desacoplar los archivos necesarios e invocar la instalación mediante One Click Install de openSUSE
- Paquete comprimido. Esta parte contendrá todos los archivos e información necesaria para que se pueda realizar la instalación mediante One Click Install.
Shell Script
#!/bin/bash
PATH=/usr/bin:/bin
umask 022
TARGET_NAME="OSI"`date +%H%M%s`
if [ "`uname -s`" = "Linux" ]; then
tail_args="-n"
fi
trap 'rm -rf /tmp/$TARGET_NAME; exit 1' HUP INT QUIT TERM
echo "Unpacking..."
mkdir -p "/tmp/$TARGET_NAME"
tail ${tail_args} +36 "$0" > "/tmp/$TARGET_NAME.tar.gz"
cd "/tmp/$TARGET_NAME"
tar xvfz "/tmp/$TARGET_NAME.tar.gz"
cd root
sed -i "s/\${REPO_URL}/file:\/\/\/tmp\/$TARGET_NAME\/root\/repo\//" installer.ymp
/bin/bash /sbin/yast2 OneClickInstallUI /tmp/$TARGET_NAME/root/installer.ymp
echo "Deleting temporary files..."
cd /
rm -rf "/tmp/$TARGET_NAME"*
exit 0
Este archivo de script será concatenado con el paquete comprimido descrito a continuación, con lo que quedará un único archivo resultante y que será ejecutable.
Paquete Comprimido
El paquete comprimido, en formato tar.gz, contendrá la siguiente estructura de directorios y archivos:
- root
- repo
- Archivos RPMs
- repodata (Carpeta de datos creada con createrepo)
- installer.ymp (Archivo One Click Install)
- repo
Carpeta root/repo
Esta carpeta tendrá todos los archivos RPMs necesarios para la posible instalación de la aplicación o grupo de aplicaciones que se desea instalar. Se ha de tener en cuenta que se parte de la base que el usuario o bien dispone de el DVD de instalación o de el repositorio standard de instalación de openSUSE, con lo que hay ciertos paquetes básicos que no será necesario incluir.
Esta carpeta, una vez contenga todos los archivos RPMs necesarios, se le creará la carpeta repodata utilizando la herramienta “createrepo” que posee openSUSE.
installer.ymp
Este archivo será un XML que contendrá la información necesaria descrita según el Standard One Click Install. La única diferencia, es que solo tendrá un único repositorio, cuya URI será un comodín:
El Shell Script de ejecución de OSI será el encargado de sustituir este comodín por la dirección final donde esté descomprimido el repositorio.
¡Atención! Queda pendiente la posibilidad de indicar mediante el .ymp que el repositorio es algo temporal y que no debe bajo ningún concepto ser agregado permanentemente.
Una vez el Shell Script llame a One Click Install, toda acción de funcionamiento queda relegada a la propia tecnología One Click Install.
Al finalizar la instalación mediante One Click Install, el repositorio temporal será eliminado de manera automática.
Según últimas noticias sobre la tecnología One Click Install, esta misma no solo será usada para la instalación, sino que si detecta que un paquete ya está instalado permitirá la desinstalación. Se espera aprovechar esta característica para OSI, permitiendo así ser a la tecnología aquí planteada un sistema sencillo para la instalación/desinstalación.
Ejemplo
Se puede descargar un OSI de ejemplo de la siguiente dirección:
http://dl.getdropbox.com/u/363315/MozillaFirefox.osi
TODO
- Que One Click Install permita indicar que el repositorio que se propone es temporal y no debe agregarse bajo ningún concepto de manera permanente.
- Crear un Shell Script que genere los paquetes OSI de manera automática
- Para el punto anterior, sería interesante que zypper posea una opción de “Bajar solo”(download-only) y que baje el RPM de la aplicación indicada y sus dependencias.

