¿Cómo instalar Swift en sistemas GNU / Linux?

En esta guía aprenderemos a instalar Swift en sistemas GNU / Linux. Un escenario en el cual es probable que nos vemos inmersos tarde o temprano, aquel donde Swift se hace cargo del backend de nuestra aplicación. Aprenderemos a instalar Swift específicamente en la distribución Ubuntu, una de las más populares y para la cual contamos con binarios ya pre-compilados que nos harán la vida más fácil y nos ayudará a tener nuestro ecosistema listo para comenzar a trabajar.

Usualmente cuando vamos a montar un backend propio (custom) para nuestra aplicación hacemos uso de servicios como Digital Ocean, Vultr, Docker… etc. Pero también es frecuente crear un escenario de prueba / desarrollo en nuestro ordenador mediante una máquina virtual y desde la cual, ya luego, podemos hacer deploy hacia el servidor donde se ejecutará nuestro backend ya en producción.

Consideraciones con Ubuntu

Trabajaremos con Ubuntu Server en modo texto y así simularemos de una manera más fiel las condiciones reales en las que trabajaremos en el mundo real, al mismo tiempo que nuestra máquina virtual no gastará tantos recursos de nuestro ordenador principal.

No vamos a cubrir el proceso de instalación de Ubuntu ya que evidentemente está más allá del objetivo de este tutorial. Solamente abordaremos aspectos básicos para asegurarnos que el proceso de instalación de Swift termine sin contratiempos.

La imagen .iso de Ubuntu Server la podemos encontrar en el sitio web oficial y más específicamente en la sección Server:

Cabezal del sitio web de Ubuntu

…luego de dar click en Download Ubuntu Server:

Cabezal de descarga de Ubuntu Server

…a la hora de elegir la versión personalmente recomiendo la última aunque no sea LTS. Mi consejo viene dado por mi experiencia con la versión LTS la cual me ha dado varios problemas con versiones de paquetes que no están disponibles en el repositorio de esta versión y que Swift o alguna de sus dependencias requieren. Aunque esto al final lo he podido resolver no creo que valga la pena pasar por todo esto (actualmente) cuando la versión más moderna de Ubuntu Server funciona sin problemas.

Posteriormente nos quedaría instalar el sistema, proceso durante el cual aconsejo marcar la opción de servidor SSH cuando lleguemos a ese punto (luego explico la razón). Al finalizar y ya dentro del sistema ejecutamos el comando:

Con esto lo que hacemos es actualizar la base de datos de paquetes (aplicaciones) y al mismo tiempo verificamos si hay algo que aplicar, en caso de que haya (muy probable) pues las aplicamos todas. Luego de esto reiniciamos el sistema ejecutando:

Optimizando la Máquina Virtual

Luego de la configuración inicial de la máquina virtual realmente no hay mucho que hacer más que instalar las herramientas o drivers de la misma. En mi caso estoy usando Parallels Desktop y este paso es más que recomendado, tanto para Windows como para Linux.

He incluido esta sección (claramente opcional) ya que estamos usando Ubuntu Server y para algunos que quizás no tengan mucha experiencia, el proceso de montar la torre de cdrom perteneciente a la máquina virtual, seguro no será un proceso del todo fluido, sobre todo cuando no contamos con un entorno gráfico.

Antes que nada tenemos que averiguar cual es el dispositivo asociado a la torre virtual de cdrom y para esto ejecutamos el siguiente comando:

Localizando el dispositivo asociado a la torre de cdrom

Puedes copiar el comando anterior aquí:

En la sexta línea de la salida en pantalla se hace referencia al cdrom y nos percatamos que el dispositivo que hace referencia al mismo es /dev/sr0, apretamos “q” para salir del modo less.

Luego montamos la torre de cdrom (referenciadada por el dispositivo del sistema /dev/sr0) en la carpeta /media/cdrom que viene creada por defecto para estas necesidades. Esto lo logramos escribiendo el próximo comando:

Montando la torre de cdrom

Puedes copiar el comando anterior aquí:

En la salida en pantalla nos muestra un Warning (Advertencia) donde nos informa que el dispositivo se ha montado en solo lectura y esto es correcto, es un cdrom y como buena emulación pues no se puede modificar su contenido. Al comando mount no es necesario especificarle el sistema de archivo ya que (en esta ocasión) lo detecta por defecto.

Ahora listamos el contenido de la carpeta para verificar que se ha montado de manera correcta y acto seguido ejecutamos el instalador:

Mostrando el contenido del cdrom

…luego de dar enter se abre el instalador de los drivers que luce así:

Instalador de Parallels Desktop Tools

Recuerden que esto es en mi caso que uso Parallels Desktop pero de manera similar ocurre en VMware y también en opciones gratuitas.

Servidor SSH

Una vez iniciado Ubuntu Server verificamos que el puerto asociado al demonio de SSH se encuentra abierto o lo que sería lo mismo: esperando peticiones:

Mostrando los puertos abiertos

…como se puede observar en la imagen el puerto 22 se encuentra en escucha de peticiones así que a partir de este punto podemos minimizar la máquina virtual y continuar desde la terminal de macOS. Pero antes necesitamos también conocer el IP asociado a nuestra instalación de Ubuntu Server, así que ejecutamos:

Mostrando la dirección IP

…obteniendo como resultado la dirección IP 192.168.100.3 asociada a la interfaz de red enp0s5. En este punto podemos continuar desde la maquina virtual o desde nuestra iTerm. Ya en esta última ejecutamos el siguiente comando:

Conectándonos a la Maquina Virtual

Puedes copiar el comando anterior aquí:

Instalando Swift en Ubuntu

Luego de todo lo que hemos hecho ya estamos listos para comenzar a entrar en materia.

Requisitos

En este punto solamente nos queda instalar las dependencias o requerimientos (entre ellas el compilador LLVM y otras librerías) para que Swift pueda funcionar correctamente. Esto lo logramos con el siguiente comando:

Instalando las dependencias de Swift

Puedes copiar el comando anterior aquí:

Descargar Swift

Acto seguido nos dirigimos a la página web del projecto Swift y específicamente a la sección de Download en la cual vamos a copiar el link de descarga asociado a la versión LTS más moderna de Ubuntu y también el fichero con la firma asociado a este.

Para lograr esto desde la terminal nos apoyamos en el comando wget el cual descargará los ficheros asociados al link de descarga que le pasemos como parámetro, tal y como podemos ver en la imagen:

Descargando la instalación de Swift

Junto a la descarga de Swift también tenemos que descargar la firma asociada, y esto lo hacemos de manera similar a la anterior:

Descargando la firma asociada al paquete de instalación de Swift

Los comandos asociados a estas imágenes no los comparto para copia ya que en la medida que sigan saliendo versiones estándar o LTS de Ubuntu Server así como también versiones más modernas de Swift, estos van a cambiar y sería contraproducente en el caso de que alguien no se percate de este punto. Por esto siempre es recomendable ir a la sección de descargas del sitio oficial de Swift y dar click derecho y copiar la dirección a la que referencia el enlace, acción que tenemos que ejecutar sobre la versión de LTS de Ubuntu más moderna así como a la firma asociada (Signature).

Importar llaves PGP

Este paso es opcional y está enfocado a los que estamos instalando Swift por primera vez. Vamos a importar las llaves PGP a nuestros sistema en pos de validar nuestra instalación de Swift. Comenzamos por ejecutar nuevamente el comando wget pero ahora con los parámetros:

Importando las llaves PGP

Puedes copiar el comando anterior aquí:

Verificar la firma PGP

Para evitar la contaminación de los archivos asociados a la instalación de Swift estos han sido firmados digitalmente con las llaves antes importadas. Cuando hacemos esto verificamos su autenticidad, nos aseguramos de que estos no han sido modificados por terceros, o lo que sería lo mismo: los archivos que hemos descargados son exactamente los mismos que el equipo de desarrollo de Swift ha preparado para su distribución.

Lo primero que hacemos es actualizar las llaves instaladas y con esto descargar también nuevos certificados de revocación en el caso de que haya alguno disponible:

Actualizando las llaves PGP del sistema

Puedes copiar el comando anterior aquí:

Ahora pasamos a la verificación como tal a través del siguiente comando:

Verificando la firma del paquete de instalación de Swift

Lo importante a verificar en la salida en pantalla es una línea similar a esta:

…en la cual se nos informa que la firma coincide, se han descargado correctamente y no han sido alterados por ninguna agente o evento externo. Con respecto a las líneas:

Esta advertencia es inofensiva siempre que hayamos seguido los pasos anteriores donde descargamos las llaves de una fuente confiable.

En caso de que la herramienta gpg no pueda verificar el archivo y nos informe “BAD signature“, en la web oficial de Swift nos aconsejan no usar el paquete descargado de su web. Nos piden en cambio que enviemos un correo electrónico a la dirección swift-infrastructure@swift.org con tantos detalles como sea posible para que ellos puedan investigar el problema.

Cuando nos piden detalles se refieren a la salida en pantalla y quizás algún otro dato que creamos necesario. Creo pertinente aclarar que si hemos ejecutados los pasos anteriores es muy poco probable que esto nos suceda.

No les pongo el comando anterior para copia por lo que ya he explicado, el nombre del fichero .sig (el acrónimo viene de Signature) va a cambiar con en el tiempo y mi intención es que este artículo sea siempre válido (Evergreen Content).

Si no sabes a lo que nos referimos cuando hablamos sobre llaves PGP y archivos firmados, te recomendamos aprender más al respecto dando click: aquí.

Desempaquetando la instalación

Luego de pasar por las respectivas verificaciones de seguridad el siguiente paso es desempaquetar el contenido del archivo con el siguiente comando:

Desempaquetando la instalación de Swift

Puedes copiar el comando anterior aquí:

En la anterior imagen pueden observar el comando en cuestión y acto seguido listamos la carpeta /home/josuevhn y vemos que el contenido ha sido desempaquetado en una carpeta con el mismo nombre y que en la imagen se muestra de color azul.

Añadir Swift al Path

Con la idea de poder ejecutar todas las herramientas asociadas a Swift incluido el propio REPL pues necesitamos modificar la variable $PATH asociada a nuestro usuario. En esta se encuentran descritas las carpetas en nuestro sistema donde se buscarán los ejecutables de todos aquellos paquetes que tengamos instalados. Como nuestra instalación ya viene lista para usar tenemos que añadir a la variable $PATH el camino exacto a los binarios, para esto haremos lo siguiente:

Primero renombraremos la carpeta y la pondremos oculta, esto es un paso opcional pero que me gusta hacer por comodidad:

Cambiando el nombre de la carpeta donde se encuentra la instalación de Swift

Puedes copiar el comando anterior aquí:

En la imagen hemos acometido varias acciones con fines didácticos, comenzamos listando el contenido del directorio, seguimos con el renombrado de la carpeta, especificando mediante el “.” inicial que esta estará oculta (para que no ocurran accidentes) y también especificamos un nombre más corto pero igual de informativo. Por último listamos nuevamente el directorio pero esta vez agregando la opción “a” la cual nos permite visualizar los archivos y carpetas ocultos.

El segundo paso sería abrir el archivo .profile (un archivo oculto) que se encuentra en nuestra carpeta home. Este archivo almacena algunas configuraciones de entorno asociadas con nuestro usuario y aquí especificaremos añadiremos el camino hacia los binarios de nuestra instalación de Swift. En este archivo podemos especificar variables propias, alias y muchas más modificaciones / optimizaciones, de hecho en Ubuntu ya vienen algunas por defecto, nosotros solamente nos enfocaremos en la variable PATH cuya modificación agregaremos al final de este fichero de texto, luciendo así:

Añadiendo Swift a la variable PATH del sistema

Puedes copiar la línea anterior aquí:

Tenemos que tener en cuenta que la variable PATH se interpreta de izquierda a derecha y de hecho por esto es que hemos establecido las configuraciones referentes a nuestro usuario primero: con esto evitamos que algunos de estos binarios entren en conflicto con algún comando de nombre similar.

En la línea que acabamos de agregar podemos observar que en el tercer segmento hacemos referencia a la carpeta bin dentro de nuestra instalación de Swift. La razón principal por la cual agregamos esta línea dentro de este fichero es con el objetivo de que siempre esté disponible luego de apagar o reiniciar el sistema. Salvamos los cambios y de vuelta en la terminal, ejecutamos:

Con esto forzamos la actualización de las variables de entorno y evitamos tener que cerrar la sesión o reiniciar el sistema. Ahora podemos escribir swift y acto seguido presionar doble tab y veremos como nos muestra todos los comandos que comienzan con la palabra swift y que claramente está asociado a nuestra instalación, como pueden ver en la imagen:

Comandos que comienzan con la palabra swift y que están asociados a nuestra instalación

Probando la instalación

Pasemos ahora a probar que nuestra instalación funciona correctamente y para esto lo primero que haremos es ejecutar el siguiente comando:

…en mi caso la salida en pantalla es:

Hasta este punto todo bien pero aún no es suficiente, escribamos un ejemplo de código bien sencillo para probar todo el proceso de compilación y ejecución al final. Ejecutemos:

Con la ejecución de los anteriores comandos hemos creado una carpeta y nos hemos movido hacia ella. Esto no es obligatorio, lo hago básicamente para no contaminar la carpeta home de mi usuario. Continuamos:

Creamos un archivo de nombre main.swift y lo abrimos para edición, esto último lo hemos hecho usando el editor mcedit (forma parte del paquete mc) pero pueden utilizar el editor que prefieran.

Una vez abierto el archivo escribimos el siguiente código de prueba:

Salvamos y devuelta en la terminal compilamos el fichero de código fuente haciendo uso del compilador de Swift (comando: swiftc), de esta manera:

Si no tenemos errores en el código no debe mostrar ninguna salida en pantalla. Luego de esto tendremos junto al código fuente un binario del mismo nombre listo para ejecutar:

Compilando con swiftc y probando el binario resultante

…como podemos observar en esta imagen todo funciona correctamente.

Creación de un paquete

Antes de terminar efectuaremos la última prueba, que reside en la creación de un paquete y esto lo haremos haciendo uso del propio Swift REPL (comando: swift). Dicho esto, lo primero que haremos será ejecutarlo para verificar que este funciona correctamente tal y como vemos en la imagen:

Probando Swift REPL

En el caso de que el comando anterior nos mostrara una salida en pantalla como la siguiente:

Mostrando el error de Swift REPL

…la solución es instalar el siguiente paquete:

Luego de esto podemos repetir los pasos que se muestran en la anterior imagen y comprobar que todo está bien.

Tras esta comprobación fundamental, ya que es la herramienta con la que gestionaremos los paquetes, pues pasamos a la creación de los mismos:

Creamos una carpeta dentro de nuestro directorio de pruebas con el nombre que tendrá nuestro paquete y a continuación:

Creando un paquete propio con Swift

Ahora sustituiremos el código que acabamos de escribir con el fichero main.swift que se crea por defecto en la carpeta Sources/MyTest/ como se puede observar en la imagen anterior.

…y proseguimos, compilando nuestro proyecto:

Compilando un paquete propio

Puedes copiar el comando anterior aquí:

Cuando el proceso de compilación finaliza, el ejecutable se encuentra en una carpeta oculta en la raíz de nuestro proyecto llamada .build, desde la cual podemos ejecutar el binario de esta manera::

Ejecutando nuestro paquete creado con Swift

Puedes copiar el comando anterior aquí:

También podemos hacerlo de la siguiente manera que es de hecho la correcta:

Ejecutando nuestro paquete creado con Swift pero de la manera correcta

Como podemos ver todo funciona correctamente por lo que a partir de este punto ya podemos comenzar a trabajar en la implementación de nuestro proyecto.

Palabras finales

Mi impresión es que el proceso pudiera simplificarse mucho más, por ejemplo teniendo paquetes oficiales de Swift tanto para para Ubuntu (.deb) como para Fedora (.rpm) y estos en los repositorios oficiales. Cuando esto sea una realidad todo este proceso se simplificará y será el momento de actualizar esta guía.

Sin más espero que todo cuanto se ha dicho aquí, de una forma u otra le haya servido de aprendizaje, de referencia, que haya valido su preciado tiempo.

Este artículo, al igual que el resto, será revisado con cierta frecuencia en pos de mantener un contenido de calidad y actualizado.

Cualquier sugerencia, ya sea errores, información o ejemplos a añadir será, más que bienvenida, necesaria!

RECIBE CONTENIDO SIMILAR EN TU CORREO

RECIBE CONTENIDO SIMILAR EN TU CORREO

Suscríbete a nuestra lista de correo y mantente actualizado con las nuevas publicaciones.

Se ha suscrito correctamente!

Close

Adblock Detected

Please consider supporting us by disabling your ad blocker