Home » Guías » Swift 3 en Linux Ubuntu 16.04, guía de instalación y entorno de trabajo
Ubuntu 16.04

Swift 3 en Linux Ubuntu 16.04, guía de instalación y entorno de trabajo

Hemos hablado en algunas ocasiones sobre Swift y Linux, e incluso hemos dado algunas guías sobre cómo instalarlo de diferentes formas. Hablamos de ello cuando Swift 3 era solo una beta, hemos visto varias formas de configurar los entornos e incluso vimos como usar el shell de Ubuntu que podemos instalar en la última edición de Windows 10, para trabajar con Swift en Windows 10. Sin olvidarnos de la guía de Docker para virtualizar en cualquier máquina una instalación con Swift 3 ya pre-instalado.

Pero el problema que nos hemos encontrado en algunas de estas guías es el paso del tiempo: las versiones cambian, las instalaciones, los procesos… por lo tanto, vamos a iniciar una serie de guías básicas que nos ayuden a trabajar con Swift en Linux (en este caso, en la última versión de Ubuntu LTS, la 16.04). En estas guías no vamos a centrarnos únicamente en cómo instalar Swift y crear un entorno de trabajo con él que nos permita compilar y probar nuestros programas. También vamos a echar un vistazo a las funcionalidades más interesantes que actualmente tenemos a nuestra disposición a través del instalador de paquetes de Swift (o Swift Package Manager) y a ver cómo funcionan algunas de las soluciones de lado servidor (server-side) que Swift nos ofrece, no solo Kitura (que ya vimos en su día), si no los más populares Perfect o Vapor.

Así que sin más dilación, comenzamos esta guía donde lo primero que vamos a hacer es instalar y configurar un entorno de trabajo estable con Swift y el editor de código abierto de GitHub, Atom.

Swift en Ubuntu 16.04

Vamos a suponer que ya tenemos un Ubuntu instalado en nuestra máquina. La instalación del mismo es tan trivial y sencilla que cualquiera puede hacerlo. En eso, Linux ha evolucionado mucho en los últimos años para bien. En nuestro caso tenemos un VirtualBox 5.1 en un macOS donde hemos dado 2GB de RAM para la máquina virtual y 12GB de disco duro (con 8GB no podréis instalar porque es justo el mínimo que Ubuntu necesita).

Una vez instalado, lo primero es ir al navegador Firefox que ya viene pre-instalado en Ubuntu e ir a la página oficial de Swift, swift.org. En ella vamos a Downloads y descargamos la última versión disponible para la versión Ubuntu 16.04. En este caso, siempre será la que esté como Releases que en el momento que escribimos el artículo es Swift 3.0.2 de fecha 13 de diciembre de 2016.

Yo personalmente prefiero trabajar copiando el fichero descargado en el Home del usuario, descomprimirlo ahí mismo (botón derecho, extraer aquí) y luego renombrar la carpeta que contiene todo a swift (todo en minúscula). Por lo tanto vamos a suponer que así es como vamos a trabajar. Es muy importante que respetéis las rutas donde guardáis las cosas, así que vamos a suponer que la descarga del lenguaje la hemos descomprimido y ahora mismo está en la ruta del sistema ~/swift. Notar que el símbolo birgulilla o ~ se consigue en un teclado español pulsando la tecla Alt y luego Ñ, y que este corresponde en Linux (en Mac también) a la abreviatura del acceso al Home del sistema. En mi caso, mi usuario es jcfmunoz y mi carpeta es /home/jcfmunoz. De hecho, Swift está instalado en /home/jcfmunoz/swift pero basta con poner ~/swift para que el sistema lo entienda y, lo más importante, dará igual el nombre que tengáis como Home en vuestro sistema que lo cogerá igual. Así que a partir de ahora vamos a usar esta abreviatura con la birgulilla (mientras nos dejen).

Ahora abrimos el terminal. Solo hay que ir al botón de Ubuntu arriba a la izquierda donde pone Busca en tu ordenador y una vez allí escribimos Terminal. Aparecerá y le pinchamos. Este nos situará en nuestra carpeta Home. Desde ahí, hacemos la instalación del compilador clang, necesario para que funcione Swift. Ejecutamos:

En algunos casos podría ser necesario instalar la librería de compatibilidad de Unicode, que podemos instalar de esta forma (gracias a nuestro lector Joaquín Jiménez por reportarnos este posible problema):

Nos pedirá la clave de administración del sistema (la que dimos como clave de nuestro usuario). Ojo, no se ve cuando escribimos, pero sí que escribimos. Nos dirá que tiene que instalar unos cuantos paquetes adicionales además del que queremos instalar y nos dirá si queremos continuar. Le decimos que sí escribiendo Y (o S, según idioma) en mayúscula y pulsamos ENTER. Ahora toca esperar. Una vez terminado, tenemos que editar el fichero .profile que existe en nuestra carpeta Home. Como es un fichero que empieza con un . es oculto al sistema, pero creedme que está ahí. Desde el terminal escribimos vi .profile y pulsamos ENTER. Aparecerá un listado con un montón de líneas. Hemos de buscar la que diga:

Pues bien, nos colocamos con el curso justo después de $HOME/.local/bin:, situando el cursor que parpadea en los dos puntos. Una vez ahí (aún no podemos escribir) pulsamos la tecla i y comenzamos a escribir :$HOME/swift/usr/bin. De esta forma la línea quedará de la siguiente forma:

Escrito esto pulsamos la tecla ESCAPE (ESC) y veremos que el cursor retrocede una posición y se pone encima de la n de bin. Ahora pulsamos : y veremos que se va abajo del todo con los dos puntos. Hecho esto, escribimos wq y pulsamos ENTER. Listo, lo que hemos hecho es guardar los cambios y salir del editor VI que hemos usado. Ya tenemos en la configuración de nuestro usuario metida la ruta de Swift en las rutas por defecto del sistema, por lo que no tendremos que hacer nada más para que funcione. Eso sí, para que coja la configuración tendremos que reiniciar Linux o (como mínimo) cerrar sesión y volverla a abrir. De esta forma, cogerá las variables de entorno que hemos creado.

Una vez re-abierto Linux, abrimos el terminal y ponemos:

Y nos aparecerá la versión correcta.

Si apareciera un error referenciado a Python y hablando de paquetes que no hemos instalado, es que algún paso hemos hecho mal de los que he ido nombrado. Mejor repasarlo todo.

Creando el entorno de trabajo

Ahora vamos a descargar Atom, el editor de texto de GitHub, que nos va a permitir trabajar y crear un entorno para crear nuestros programas en Swift. En mi caso particular, me gusta crearme una carpeta Developer en el Home del sistema para meter ahí todos mis proyectos, por lo que vamos a suponer que vosotros hacéis lo mismo.

Atom no puede bajarse de la tienda de software de Ubuntu, así que abrimos Firefox y vamos a la página web del mismo para descargarlo: atom.io. Una vez ahí, debemos pulsar en Download .deb que es el tipo de paquete que se instala en Ubuntu. Una vez descargado, abrimos de nuevo el terminal y nos vamos a ~/Downloads que es donde lo ha descargado (yo tengo Ubuntu en inglés, puede que si lo tenéis en español sea Descargas). Una vez ahí escribimos:

Nos pedirá la clave del sistema (la del usuario) y luego se instalará. Tras esto, hemos de asegurarnos que todas las dependencias del mismo estén instaladas así que escribimos ahora:

Cualquier dependencia que no esté instalada o actualizada en nuestro sistema, se descargará e instalará. Este proceso puede tardar un poco. Terminado, ya tenemos Atom en nuestro sistema listo para funcionar y ahora vamos a configurarlo para trabajar con nuestro entorno Swift. Para ello vamos a usar un comando que instala el propio Atom llamado apm (o Atom Package Manager) que nos permite instalar extensiones que nos ayudan a trabajar desde línea de comandos.

En principio vamos a instalar dos: una extensión que nos da soporte del lenguaje Swift en Atom (con marcado de código) y otra que nos crea un debugger que nos permite ejecutar y probar programas directamente desde Atom. Por desgracia, en el momento de escribir este artículo, el auto-completado de código sigue siendo una asignatura pendiente en Linux. Existe un paquete llamado SourceKitten que trabaja directamente con SourceKit (la librería que se encarga de esta función en el lenguaje) que a fecha actual compila en Linux pero no funciona porque no está bien enganchado y probado. Por lo tanto, los paquetes que ofrece Atom para el auto-completado no funcionan (aun) correctamente porque no enganchan con la librería y solo funcionan (por ahora) en sistemas basados en Darwin (o sea, macOS).

No obstante, sí vamos a instalar los dos paquetes que nos dan soporte para trabajar con Swift. Desde el mismo terminal donde hemos instalado Atom escribimos:

Hecho esto e instalado, ya podemos crear nuestro proyecto en Linux para empezar a trabajar.

Creando un proyecto ejecutable

Ya tenemos todo instalado, así que ahora solo tenemos que crearnos una carpeta donde vayamos a guardar nuestro primer proyecto. En este caso, vamos a llamarlo test, así que una vez creada la carpeta, accedemos a ella y escribimos la instrucción que nos permite inicializar un entorno en Swift para un programa ejecutable:

Cuando escribimos esto, veremos que crea varios archivos y carpetas dentro de la ruta donde estamos:

El fichero Package.swift es el que define la estructura de nuestro proyecto. En contra de Xcode que funciona con proyectos de él mismo, trabajando en Swift de forma pura lo que tenemos son paquetes, y estos pueden o no ser ejecutables. Nosotros hemos definido que el nuestro lo sea (por eso hemos puesto --type executable al crearlo). Luego se ha creado un fichero .gitignore para ignorar los ficheros que no será necesario incluir en la gestión de versiones de Git (si lo usamos) y se crean dos carpetas: Sources y Test. La primera tiene los fuentes que vamos a usar en nuestro proyecto, donde al existir un main.swift indica que es el primer archivo que se ejecutará en el ejecutable de nuestro proyecto. Es importante recordar ese punto. La carpeta Test está vacía, pero está destinada a que pongamos cualquier archivo de test unitarios que queramos incluir en nuestro proyecto.

Ahora solo tenemos que ir a nuestra carpeta creada y abrir con Atom el fichero Package.swift que es el principal del proyecto. Esto hará que se muestren en el navegador del editor el resto de ficheros. Desde Ubuntu, botón derecho, “Abrir con…” y elegimos Atom. Una vez hecho pulsamos la combinación de teclas ALT+R para abrir el debugger de Swift. Cada vez que trabajemos hemos de configurar dos variables de entorno para que funcione: el nombre de nuestro proyecto y la ruta donde está la librería de Swift.

Ubuntu Atom Swift

En la parte de abajo vemos que hay una línea que pone po foo y debajo unos botones: run, stop, clear, next line y resume. En la línea donde pone po foo pulsamos y escribimos el nombre de nuestro proyecto como entorno escribiendo e=test (recordemos que hemos creado un paquete que se llama así). Una vez le demos a ENTER la consola de abajo dirá executable path set. Luego escribimos la ruta donde está Swift. En este caso no podemos usar la birgulilla, así que hemos de poner la ruta completa. Escribimos: p=/home/jcfmunoz/swift/usr/bin. Recordemos que jcfmunoz es como se llama MI usuario del Home. Aquí debéis poner el que hayáis creado cada uno. Al hacerlo nos dirá: swift path set. Hecho esto, podemos ejecutar pulsando en run y veremos que nos compila y muestra el mensaje Hello, world! que tiene el fichero main.swift de nuestro proyecto. Este proceso de configuración de e= y p= hay que hacerlo siempre que abramos Atom.

A empezar a trabajar

El entorno no es tan cómodo como Xcode, pero esto irá mejorando poco a poco y os iremos informando de la progresión y depurando esta guía. Además iremos viendo más cosas que podremos hacer con Linux. Si tenéis cualquier duda o problema, no dudéis en usar los comentarios. Un saludo y Good Apple Coding.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

Codable (I)

Codable (I), cargando un JSON hacia un struct

Aprendemos a cómo cargar el contenido de un archivo JSON directamente en instancias de tipo struct con el nuevo protocolo Codable y la serialización de Swift 4. Un proceso no solo simple, sencillo y potente, si no que nos evita tener que usar diccionario, sabernos claves de memoria... simplemente cargamos el JSON, parseamos y listo. Magia Swift 4.

  • Joaquín Jiménez García

    Muy buen artículo para empezar a manejar Swift también desde Linux. Fácil y sencillo. Muchas gracias!

    Añado un aporte: A mi con un Ubuntu 16.04 me ha dado problemas con una librería que he tenido que instalar manualmente. Dejo aquí el link de la página oficial de Ubuntu http://packages.ubuntu.com/trusty/amd64/libicu52/download

    Saludos!

    • Gracias Joaquín. He añadido tu aporte al artículo (esa librería es la de soporte de Unicode a nivel desarrollo). Gracias por el apunte y me alegro que te guste la guía y sea útil.

      Un saludo

  • Rodrigo Sánchez

    Lo que no entendí es que se podrá o no usar el interface builder

    • Hola Rodrigo.
      Estamos en Linux usando Swift como lenguaje de programación. Lo primero y principal a distinguir en desarrollo es que al igual que Java es un lenguaje de programación y desarrollar para Android es usar sus librerías y herramientas usando dicho lenguaje, en Apple pasa igual. Una cosa es la librería Cocoa Touch que construye las aplicaciones para iOS y que usan Xcode y el constructor de interfaces, y otra completamente diferente es el lenguaje Swift. Aquí estamos usando Swift, nada más. En Linux no hay soporte de construcción de apps, pero podemos usar el lenguaje para crear interesantes programas para Linux en modo terminal o usar cualquier librería que nos permita crear páginas web en Swift. E insisto, todo eso está totalmente separado de Xcode. No tiene nada que ver.
      Un saludo.

  • Rusty Wild

    ‘/home/javier/swift/usr/bin/swift’ could not be spawned. Is it installed and on your path? If so please open an issue on the package spawning the process.

    Me da ese error cuando hago un run. Este es mi path::PATH=”$HOME/bin:$HOME/.local/bin:$HOME/swift/usr/bin:$PATH”

    en aton p=/home/javier/swift/usr/bin

  • Roger Bargalló

    Ayuda, no me sale la carpeta build cuando abro mi package en Atom, a que se debe?