| 58 | | == Creación y uso de paquetes == |
| | 75 | === Uso on-line de paquetes === |
| | 76 | |
| | 77 | La propia orden {{{#Require}}} se encargará de descargar e instalar los |
| | 78 | paquetes que no se encuentren disponibles localmente revisando la lista |
| | 79 | de directorios apuntada por |
| | 80 | {{{ |
| | 81 | #!cpp |
| | 82 | Set TolConfigManager::Config::Upgrading::TolPackage::Repositories |
| | 83 | }}} |
| | 84 | |
| | 85 | Por defecto, esta lista sólo contiene el [wiki:OfficialTolArchiveNetwork |
| | 86 | repositorio oficial de bayes] pero es posible añadir otros mediante |
| | 87 | {{{ |
| | 88 | Real TolPackage::Client::AddRepository(Text url) |
| | 89 | }}} |
| | 90 | |
| | 91 | === Uso off-line de paquetes === |
| | 92 | |
| | 93 | Para el uso off-line de los paquetes en una máquina sin acceso remoto es |
| | 94 | necesario instalar manualmente los paquetes. Para ello lo más sencillo es |
| | 95 | instalarlos en una máquina que sí tenga acceso y luego copiar el directorio |
| | 96 | {{{Text TolPackage::Client::_.localRoot}}} a la máquina aislada mediante |
| | 97 | algún tipo de disco o unidad flash. |
| | 98 | |
| | 99 | Para evitar que el sistema pierda tiempo intentando conectarse es |
| | 100 | recomendable cambiar la configuración local de TOL |
| | 101 | {{{ |
| | 102 | #!cpp |
| | 103 | Real TolConfigManager::Config::Upgrading::TolVersion::CheckAllowed:= False; |
| | 104 | Real TolConfigManager::Config::Upgrading::TolPackage::LocalOnly := False; |
| | 105 | Real TolConfigManager::SaveConfig(TolConfigManager::Config); |
| | 106 | }}} |
| | 107 | |
| | 108 | |
| | 109 | == Creación de paquetes == |
| 84 | | necesario añadir un nuevo miembro que será un conjunto de conjuntos de |
| 85 | | caminos a los directorios raíces de cada uno de los recursos. Los que sean |
| 86 | | independientes de la plataforma se pueden poner en un elemento |
| 87 | | {{{crossPlatform}}} y los que sí dependan en uno con el nombre de la |
| 88 | | plataforma. Los nombres de los recursos han de ser únicos dentro de cada |
| 89 | | plataforma específica y serán lógicamente los mismos en todas ellas, pues |
| 90 | | los recursos deberían estar disponibles en cualquiera de ellas, aunque podría |
| 91 | | haber excepciones si no se encuentra la forma de implementarlo en alguna. |
| 92 | | Los recursos multi-plataforma deben tener nombres únicos distintos de los de |
| 93 | | las específicas pues en el almacén de cliente convivirán con ellos en un |
| 94 | | mismo directorio. [[BR]] |
| | 136 | necesario añadir un nuevo miembro que será un conjunto de textos con los |
| | 137 | caminos, obligatoriamente relativos e internos al paquete, de los directorios |
| | 138 | raíces de cada uno de los recursos. Los que sean dependientes de la plataforma |
| | 139 | deben tener una entrada distinta para cada una de forma que luego sea posible |
| | 140 | cargar lo necesario. Todos los recursos así definidos pasarán a formar parte |
| | 141 | del directorio del paquete [[BR]] |
| | 152 | |
| | 153 | === Construcción del archivo comprimido === |
| | 154 | |
| | 155 | Si sólo se quiere construir el archivo .zip correspondiente a un paquete basta con llamar a |
| | 156 | {{{ |
| | 157 | #!cpp |
| | 158 | ////////////////////////////////////////////////////////////////////////////// |
| | 159 | Text TolPackage::Server::BuildPackage( |
| | 160 | Text name, //Nombre del paquete (sin versión) |
| | 161 | Text sourceRoot, //Directorio raíz del código fuente |
| | 162 | Text destination, //Directorio de destino del paquete |
| | 163 | Real removeDir) //Si es cierto se borra el directorio descomprimido |
| | 164 | "Construye el archivo comprimido correspondiente a un paquete TOL a partir " |
| | 165 | "del código situado en el directorio fuente:\n" |
| | 166 | " \"<sourceRoot>/<name>\"\n" |
| | 167 | "\n" |
| | 168 | "El resultado se almacena en el directorio de destino con el nombre de " |
| | 169 | "la versión específica que conste en el NameBlock del paquete:" |
| | 170 | "\n" |
| | 171 | " \"<destination>/<name>.<high>.<low>.zip\"\n" |
| | 172 | "\n"; |
| | 173 | ////////////////////////////////////////////////////////////////////////////// |
| | 174 | }}} |
| | 175 | |
| | 176 | Para hacer una instalación manual directa basta con pasarle |
| | 177 | {{{ |
| | 178 | #!cpp |
| | 179 | Text destination = TolPackage::Client::_.localRoot, |
| | 180 | Real removeDir = False |
| | 181 | }}} |
| | 182 | |
| | 183 | Si no se quiere interferir con la instalación local es mejor pasarle |
| | 184 | {{{ |
| | 185 | #!cpp |
| | 186 | Text destination = TolPackage::Server::_.localRoot, |
| | 187 | Real removeDir = True |
| | 188 | }}} |
| | 189 | |
| | 190 | === Publicación de paquetes === |
| | 191 | |
| | 192 | Para subir un paquete ya comprimido previamente con {{{TolPackage::Server::BuildPackage}}} se usará |
| | 193 | {{{ |
| | 194 | #!cpp |
| | 195 | ////////////////////////////////////////////////////////////////////////////// |
| | 196 | Real TolPackage::Server::UploadPackage(NameBlock dbConnect, Text pkg.path.zip) |
| | 197 | "Sube al repositorio remoto un paquete desde el archivo local comprimido " |
| | 198 | "creado con TolPackage::Server::BuildPackage y dado por el argumento:\n" |
| | 199 | " Text pkg.path.zip = \"<directory>/<name>.<high>.<low>.zip\"\n"; |
| | 200 | ////////////////////////////////////////////////////////////////////////////// |
| | 201 | }}} |
| | 202 | |
| | 203 | === Construcción y publicación de paquetes en un solo paso === |
| | 204 | La manera más sencilla de subir un paquete es mediante la función |
| | 205 | {{{ |
| | 206 | #!cpp |
| | 207 | ////////////////////////////////////////////////////////////////////////////// |
| | 208 | Real BuildAndUploadPackage( |
| | 209 | Text name, //Nombre del paquete (sin versión) |
| | 210 | Text sourceRoot, //Directorio raíz del código fuente |
| | 211 | Text repository.url, //URL del repositorio |
| | 212 | NameBlock repository.db, //Conexión a la base de datos |
| | 213 | Text checkInstallMode) //Modo de chequeo de la instalación |
| | 214 | "Construye el archivo comprimido correspondiente a un paquete TOL a partir " |
| | 215 | "del código situado en el directorio fuente:\n" |
| | 216 | " \"<sourceRoot>/<name>\"\n" |
| | 217 | "\n" |
| | 218 | "y luego lo sube al repositorio remoto.\n" |
| | 219 | "La copia temporal del archivo comprimido del paquete se queda en el " |
| | 220 | "directorio del servidor a efectos de depuración si surgen problemas " |
| | 221 | "pero se puede borrar si se desea.\n" |
| | 222 | "Por último se chequeará la instalación según lo indicado:" |
| | 223 | " Si checkInstallMode = \"local\" se usa la copia local comprimida.\n" |
| | 224 | " Si checkInstallMode = \"remote\" se instala desde el repositorio.\n" |
| | 225 | " En otro caso no se instala nada."; |
| | 226 | ////////////////////////////////////////////////////////////////////////////// |
| | 227 | }}} |
| | 228 | que internamente llama a {{{TolPackage::Server::BuildPackage}}} y |
| | 229 | {{{TolPackage::Server::UploadPackage}}} y luego chequea opcionalmente si |
| | 230 | funciona la instalación. |
| | 231 | |