Saltar a contenido

SDKMAN


The Software Development Kit Manager o SDKMAN es una herramienta para administrar versiones paralelas de múltiples kits de desarrollo de software en la mayoría de los sistemas basados en Unix. Proporciona una interfaz de línea de comandos (CLI) y API conveniente para instalar, cambiar, eliminar y enumerar candidatos. Anteriormente conocido como GVM, Groovy enVironment Manager, se inspiró en las útiles herramientas RVM y rbenv, que la comunidad de Ruby utiliza en general, es ligera y está escrita en BASH.

Referencias

Se recomienda leer los siguientes artículos:

Instalación

Se debe tener un proyecto de Maven previamente configurado y para integrar el Maven Wrapper con la ejecución del comando de mvn de la siguiente forma:

$ curl -s "https://get.sdkman.io" | bash

                                -+syyyyyyys:
                            `/yho:`       -yd.
                         `/yh/`             +m.
                       .oho.                 hy                          .`
                     .sh/`                   :N`                `-/o`  `+dyyo:.
                   .yh:`                     `M-          `-/osysoym  :hs` `-+sys:      hhyssssssssy+
                 .sh:`                       `N:          ms/-``  yy.yh-      -hy.    `.N-````````+N.
 ....
Looking for a previous installation of SDKMAN...
Looking for unzip...
Looking for zip...
Looking for curl...
Looking for sed...
Installing SDKMAN scripts...
Create distribution directories...
Getting available candidates...
Prime the config file...
Download script archive...
######################################################################## 100.0%
Extract script archive...
Install scripts...
Set version to 5.7.1+321 ...
Attempt update of interactive bash profile on regular UNIX...
Added sdkman init snippet to /home/user/.bashrc
Attempt update of zsh profile...
Updated existing /home/user/.zshrc
All done!
Please open a new terminal, or run the following in the existing one:
    source "/home/user/.sdkman/bin/sdkman-init.sh"
Then issue the following command:
    sdk help
Enjoy!!!

$ sh /home/user/.sdkman/bin/sdkman-init.sh

Una vez instalado solo tecleamos sdk version para validar su correcta instalación:

$ sdk version
SDKMAN 5.7.1+321

Actualización

Para actualizar el programa solo es necesario teclear sdk selfupdate

$ sdk selfupdate
Updating SDKMAN...
################################################## 100.0%
...

Successfully upgraded SDKMAN!

Open a new terminal to start using SDKMAN 5.7.2+323.

To join our BETA channel, simply follow the instructions on:

   http://sdkman.io/install.html

Enjoy!!!

Administración de Paquetes

Listado

Una vez instalado su uso es simple, solo necesitamos definir que SDK necesitamos instalar primero, para obtener una lista de los paquetes disponibles solo se teclea sdk list o sdk ls:

$ sdk ls
================================================================================
Available Candidates
================================================================================
q-quit                                  /-search down
j-down                                  ?-search up
k-up                                    h-help

-------------------------------------------------------------------------
Ant (1.10.1)                                             https://ant.apache.org/

Apache Ant is a Java library and command-line tool whose mission is to drive
processes described in build files as targets and extension points dependent
....

Una vez seleccionado el paquete y para saber que versiones disponibles hay, tecleamos sdk ls [paquete], ejemplo para saber que paquetes de Maven existen se teclea:

$ sdk ls maven
================================================================================
Available Maven Versions
================================================================================
     3.5.4
     3.5.3
     3.5.2
     3.5.0
     3.3.9

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

Instalación

Para instalar el paquete solo se teclea sdk install [paquete] (versión) o sdk i [paquete] (versión), en caso de no poner la versión se instala la última versión disponible:

$ sdk i maven

Downloading: maven 3.5.4

In progress...
...
######################################################### 100.0%

Installing: maven 3.5.4
Done installing!

Setting maven 3.5.4 as default.

Con esto tenemos lo requerido para empezar a usar Maven:

$ mvn -version
Apache Maven 3.5.4 (...; 2018-06-17T13:33:14-05:00)
Maven home: /home/user/.sdkman/candidates/maven/current
Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: .../jre
Default locale: es_MX, platform encoding: UTF-8
OS name: "linux", version: "4.12-default", arch: "amd64", family: "unix"

Actualización

Para actualizar un paquete sdk upgrade [paquete] o sdk ug [paquete]

$  sdk ug maven
Upgrade:
maven (3.5.3 < 3.5.4)
Upgrade candidate(s) and set latest version(s) as default? (Y/n): Y
...
Installing: maven 3.5.4
Done installing!
Setting maven 3.5.4 as default.

Dado que se instala la nueva versión, pero la anterior no es eliminada, se recomienda eliminar la versión anterior.

Existe también otro comando validar las versiones de los SDKs instalados y muestra si existe una versión superior sdk update

$ sdk update

Adding new candidates(s): cuba

Please open a new terminal now...

Desinstalación

El quitar un paquete es mu simple y solo se teclea sdk unistall [paquete] (version) o sdk rm [paquete] (version), para el caso del ejemplo con Maven se ejecuta los siguiente:

$ sdk rm maven 3.5.3
Unselecting maven 3.5.3...
Uninstalling maven 3.5.3...

Selección Default

Como se puede ver, de un mismo paquete pueden existir distintas versiones, por lo que si queremos trabajar con una en especifico se pueden seleccionar la versión deseada tecleando sdk default [paquete] (versión)

$ sdk default maven 3.5.4
Default maven version set to 3.5.4

Limpieza

Después de cierto tiempo de uso e instalación de paquetes, es necesario limpiar los archivos generados como los anuncios Broadcast, temporales u otros.

Broadcast

Para el borrado de los anuncios solo es necesario ejecutar el comando sdk flush broadcast

$ sdk flush broadcast
Broadcast has been flushed.

Temporales

El borrado de los temporales nos permite liberar algo de espacio, se debe teclear sdk flush temp

$ sdk flush temp
9 archive(s) flushed, freeing 60K       /home/user/.sdkman/tmp.

Archives

Los binarios de las instalaciones de los SDK o Archives son los que van a ocupar más espacio y siempre es recomendable ejecutar la limpieza periódicamente mediante el siguiente comando sdk flush archives.

$ sdk flush archives
5 archive(s) flushed, freeing 210M      /home/user/.sdkman/archives.

Configuración

Aunque la configuración es limitada, la lista de elementos configurables crecerá según sea necesario. La configuración se puede encontrar en el archivo ~/.sdkman/etc/config. Actualmente, lo siguiente es configurable:

# make sdkman non-interactive, preferred for CI environments
sdkman_auto_answer=true|false

# perform automatic selfupdates
sdkman_auto_selfupdate=true|false

# disables SSL certificate verification
# https://github.com/sdkman/sdkman-cli/issues/327
# HERE BE DRAGONS....
sdkman_insecure_ssl=true|false

# configure curl timeouts
sdkman_curl_connect_timeout=7
sdkman_curl_max_time=10

# subscribe to the beta channel
sdkman_beta_channel=true|false

# Debug mode
sdkman_debug_mode=true|false
# Print colors
sdkman_colour_enable=true|false