#1191 closed enhancement (fixed)
A Graphical Interface for Managing Packages
Reported by: | Pedro Gea | Owned by: | Jorge |
---|---|---|---|
Priority: | highest | Milestone: | TOLBase Revitalization |
Component: | Interface | Version: | head |
Severity: | critical | Keywords: | |
Cc: |
Description
Se solicita una interfaz gráfica para la gestión de paquetes en TOL que permita:
- Gestionar los repositorios definidos: añadir un nuevo repositorio o quitarlo, comprobar la disponibilidad o acceso a los repositorios definidos.
- Explorar el árbol de paquetes disponibles para su instalación desde cada repositorio y facilitar la instalación de paquetes.
- Explorar el conjunto de paquetes instalados, comprobar los distintos estados de un paquete: actualizado, actualizable (upgrade o update) y actualizarlos.
- Instalación de un paquete desde un archivo ZIP.
- Otras tareas de mantenimiento
Attachments (2)
Change History (23)
comment:1 Changed 14 years ago by
Status: | new → accepted |
---|
comment:2 Changed 14 years ago by
comment:3 Changed 14 years ago by
Antes de nada hay que resaltar que al principio de la sesión y tras cada operación que pueda suponer cambios locales, hay que actualizar la información sobre el repositorio local mediante las sentencias
Real TolPackage::Client::RemoteUpdatePackSyncInfo(False); Real TolPackage::Client::RemoteUpdateVersSyncInfo(False);
Ahora mismo sería posible hacer todas las peticiones usando funciones y objetos del sistema tal y como se detalla a continuación:
- Obtener repositorios registrados:
Set TolConfigManager::Config::Upgrading::TolPackage::Repositories;
- Registrar un repositorio:
Real TolPackage::Client::AddRepository(Text url);
- Obtener lista de paquetes disponibles en un repositorio. Ejemplo:
Set Select(TolPackage::Client::_.packSyncInfo, Real(Set pkg) { pkg->te_url=="http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php" })
- Obtener versiones disponibles de un paquete (no hace falta especificar el repositorio porque sólo puede estar en uno). Ejemplo:
Set Select(TolPackage::Client::_.versSyncInfo, Real(Set pkg) { pkg->co_name=="NonLinGloOpt" })
- Obtener la lista de paquetes instalados.
Set TolPackage::Client::_.packInstalled;
- Conocer de un paquete instalado la fuente de instalación
Text (TolPackage::Client::_.packInstalled::NonLinGloOpt)->te_url;
- Borrar un paquete instalado (no se pueden borrar las dependencias porque puedes romper las de otros paquetes instalados que coincidan en alguna)
Real TolPackage::Client::LocalClean(package);
- Limpiar todos los paquetes instalados
Real TolPackage::Client::LocalClean.All("");
- Upgrade de un paquete
{ TolPackage::@PackageSynchro pkg = (TolPackage::Client::_.packSyncInfo)["NonLinGloOpt"]; Real TolPackage::Client::RemoteInstallPackage(pkg->te_url, pkg->co_last_version_remote, True) }
- Update de un paquete
{ TolPackage::@PackageSynchro pkg = (TolPackage::Client::_.packSyncInfo)["NonLinGloOpt"]; Real TolPackage::Client::RemoteInstallPackage(pkg->te_url, pkg->co_last_version_local, True) }
No tengo claro que haga falta crear funciones específicas para cada cosa que haga falta en el interfaz, que seguro que saldrán más y cada una con su API ad-hoc.
A no ser que realmente no haya una combinación de llamadas que sean capaces de dar el resultado requerido yo usaría las funcionalidades básicas que dan mayor potencia que una batería de funciones dedicadas, sobre todo teniendo en cuenta el lío de versiones de TOL que podemos montar.
comment:4 Changed 14 years ago by
Más variaciones de consultas sobre información de paquetes.
- Para obtener versiones instaladas de un paquete sólo hay que tener en cuenta
que si el campo @VersionSynchro->dh_release_date_local es TheBegin es que la
versión no está instalada. Ejemplo:
Set Select(TolPackage::Client::_.versSyncInfo, Real(Set pkg) { And(pkg->co_name=="MMS", pkg->dh_release_date_local>TheBegin) });
- Para obtener información detallada sobre un repositorio
Set TolPackage::Client::GetRepositoryInfo( "http://packages.tol-project.org/OfficialTolArchiveNetwork/repository.php?action=general_information"); //Returns a set like this [[ Text name = "OfficialTolArchiveNetwork"; Text type = "Public"; Text description = "Official TOL Archive Network contains public open source packages developed or aproved by TOL Developping Team at local repository"; Set contact = [["vdebuen@tol-project.org", "josp@tol-project.org", "pgea@bayesforecast.com"]] ]];
Changed 13 years ago by
Attachment: | Repos_GUI_r00.png added |
---|
Changed 13 years ago by
Attachment: | Pkgs_GUI_r00.png added |
---|
comment:5 Changed 13 years ago by
Lo siquiente se refiere a las fotos:
Gestión de repositorios:
- Siempre ha de existir al menos un repositorio para que las cosas anden, quizá OTAN podría considerarse de "sólo lectura".
- Sería interesante poder desplegar el árbol de paquetes y versiones disponible en cada repositorio, descripción, versiones, dependencias, etc.
- Debería poder pedir instalar con un clic un paquete (la versión que yo quiera) y pedir la instalación individual o la instalación encadenada de todas sus dependencias.
- Debería poder, al igual que pido la instalación individual o "encadenada", descargar (sin instalar) un zip individual o el zip de un conjunto de paquetes encadenados (zip-múltiple).
- Debería poder desactivarse el uso de los repositorios. Por ejemplo, en el caso de un ordenador off-line no aparecería ninguna información de paquetes no instalados y tampoco debería intentar encontrar esa información.
Gestión de paquetes instalados:
- Quitaría del listado los paquetes no instalados, o al menos por defecto no los mostraría.
- Permitiría instalar un paquete desde un zip o un conjunto de paqutes de un zip multiple.
- Distinguiría la desactualización por upgrade (naranja) y por update (rojo, ya que la actualización por update es crítica). Si dejara los no instalados los marcaría en gris.
- Mostraría en forma de árbol todas las versiones del paquete coloreando
del siguiente modo:
- Paquete (según la última versión existente) --- Paquete.2 (naranja: necesita update, por ejemplo existe Paquete.2.4) ----- Paquete.2.3 (¿naranja/rojo?) ----- Paquete.2.2 (naranja/rojo) ----- Paquete.2.1 (naranja/rojo) --- Paquete.1 (verde: 1.8 es la ultima versión) ----- Paquete.1.8 ----- Paquete.1.6 (rojo: necesita upgrade, existe otro 1.6 más actual) ----- Paquete.1.1
- Botón de "Crear informe de versiones" que crear una lista con todas las versiones de todo lo instalado (y ya de camino también de tolbase) para poder enviarla para depuración de errores. Especialmente útil para los ordenadores off-line.
comment:6 Changed 13 years ago by
Sería muy útil incorporar un mecanismo para visualizar todo el árbol de dependencias de un paquete para comprobar su estado de actualización e incluso actualizarlo.
comment:10 Changed 13 years ago by
comment:12 Changed 13 years ago by
comment:13 Changed 13 years ago by
comment:14 Changed 13 years ago by
comment:16 Changed 13 years ago by
comment:17 Changed 13 years ago by
comment:18 Changed 13 years ago by
comment:19 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Las mejoras y correcciones con este interfaz se tratarán en tickets separados.
Se requieren funcionalidades para: