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 | |