Cargando



Cómo crear archivos ejecutables GO en Ubuntu 17

Cómo crear archivos ejecutables de Linux, Windows o Mac desde Ubuntu 17 usando la herramienta Go fácilmente.


jun 05 2017 10:21
Avanzado
Total de Apartados : 8
jun 19 2017 12:21

Uno de los sistemas operativos más versátiles de Linux es sin lugar a dudas Ubuntu el cual gracias a sus prestaciones nos ofrece un entorno seguro y altamente configurable.

 

Además de esta gran ventaja, podemos encontrar numerosas herramientas y aplicaciones que permiten aumentar los niveles de rendimiento y productividad ofrecidos por Ubuntu y en base a esta posibilidad hoy analizaremos una herramienta que nos ofrece la posibilidad de crear archivos ejecutables de diversos sistemas operativos para posteriormente ser ejecutados con toda confianza, esta herramienta se denomina Go.

 

 

Qué es GO
Go es una aplicación de código abierto que nos permite la creación simple de software fiable y altamente productivo.

 

Go ha sido diseñado con un alto portafolio de herramientas que permiten la obtención de paquetes y creación de ejecutables de forma práctica.

 

Con Go, como administradores de sistemas, tendremos la posibilidad de crear ejecutables de múltiples sistemas operativos y gestionar todos desde un solo servidor sin la necesidad de ir a cada plataforma para descargar el ejecutable correspondiente.

 

Con Go podremos crear ejecutables de Windows, Linux, Mac OS, entre otros.

 

Antes de pasar a ver cómo crear el ejecutable daremos un breve repaso de cómo instalar Go en Ubuntu 17.

 


1. Cómo instalar y actualizar sistema Ubuntu 17

 

Paso 1

El primer paso a realizar es ejecutar los siguientes comandos para la actualización de los paquetes del sistema y su respectiva corrección de fallos:
sudo apt-get update
sudo apt-get -y upgrade
Paso 2

Una vez actualizado el sistema procedemos a descargar los binarios respectivos de Go ejecutando la siguiente línea:
wget https://storage.googleapis.com/golang/go1.7.4.linux-amd64.tar.gz

 

Nota
En caso de requerir los binarios para ediciones de 32 bits podremos ir al siguiente enlace:

 

 

 

Paso 3

Una vez descargado el archivo procedemos a su extracción ejecutando la siguiente línea:
sudo tar -xvf go1.7.4.linux-amd64.tar.gz

 

Paso 4

Moveremos el contenido a la ruta /usr/local:
sudo mv go /usr/local

2. Cómo ajustar el entorno de Go Ubuntu 17

 

Paso 1

Para que Go funcione de forma correcta será necesario que ingresemos las siguientes líneas asociadas a la ruta y acceso de Go:
export GOROOT=/usr/local/go
export GOPATH=$HOME/Solvetic/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

 

 

Paso 2

Es importante tener en cuenta que la ruta GOPATH es donde se alojaran los archivos de creación.
Una vez realizado esto podremos ejecutar los siguientes comandos para verificar la versión y entorno de Go:
go versión
go env

 

Paso 3

Con esto ya hemos instalado Go y podremos proceder a la creación de los ejecutables.
Hay que reseñar que actualmente la versión 1.8 de Go está en fase beta, pero si deseamos instalarla podremos ejecutar los siguientes comandos:
sudo add-apt-repository ppa:longsleep/golang-backports
 sudo apt-get update 
sudo apt-get install golang-go

3. Cómo descargar el código fuente en Ubuntu 17


Este es el paso inicial antes de crear cualquier ejecutable con Go, obtener su código fuente el cual obtenemos usando el parámetro go get.

 

El proceso incluye la clonación de los paquetes en la ruta GOPATH/src/ y posteriormente si aplica estos se construirán en la ruta GOPATH/bin.

 

Paso 1

La sintaxis a usar para la descarga del código fuente es:
go get (ruta del paquete)
La ruta por lo general la encontramos en la base de Github. También agregaremos el parámetro -u el cual instala todas las dependencias o la actualización de estas.

 

Paso 2

Para este caso usaremos Caddy el cual es un servidor web escrito en Go y ejecutaremos la siguiente línea para su descarga:
go get -u github.com/mholt/caddy/caddy

5-descargar-el-código-fuente-en-Ubuntu-17.png

 

Paso 3

Como vemos no se despliega ningún resultado visible pero todo el contenido será almacenado en la ruta
GOPATH/src/github.com/mholt/caddy.
Si deseamos comprobarlo podremos ejecutar la línea which caddy. En algunos casos pueden generarse errores asociados a Git, para ello ejecutaremos lo siguiente para su corrección:
sudo apt install git

4. Cómo construir el ejecutable en Ubuntu 17

 

Paso 1

Una vez descargado Caddy y para ello ejecutaremos la siguiente línea:
go build github.com/mholt/caddy/caddy
Paso 2

Este comando tampoco nos desplegará ningún resultado visible. Si deseamos especificar una ruta en especial podremos agregar el parámetro -o de la siguiente forma. Podremos cambiar la ruta build/caddy-server por la deseada. Este comando creara el archivo ejecutable y de paso, si no existe, el directorio ./build.
go build -o build/caddy-server github.com/mholt/caddy/caddy

5. Cómo instalar el ejecutable en Ubuntu 17


La instalación de un ejecutable consiste en crear el archivo .exe y almacenarlo en la ruta GOPATH/bin. Para este proceso usaremos el comando go install el cual creara el ejecutable en el lugar correcto.

 

Ejecutaremos lo siguiente. Al ejecutar el comando tampoco será visible algún resultado para el usuario pero el archivo habrá sido creado en la ruta GOPATH/bin.

go install github.com/mholt/caddy/caddy

6. construir ejecutables para diversos sistemas en Ubuntu 17


En este punto veremos el poder de Go y como se convierte en un valioso aliado gracias a las múltiples posibilidades de creación de ejecutables.

 

Paso 1

La sintaxis a implementar será la siguiente. El comando env es el encargado de crear un entorno modificado para el uso de las respectivas variables.
env GOOS=OS Objetivo GOARCH=Arquitectura go build Ruta del paquete
Paso 2

La siguiente es unan tabla con todas las opciones que nos ofrece Go:

 

12-tabla-con-todas-las-opciones-que-nos-ofrece-Go.png

 

Paso 3

En este caso crearemos un ejecutable de Windows con una arquitectura amd de 64 bits, ejecutaremos lo siguiente:
env GOOS=windows GOARCH=amd64 go build github.com/mholt/caddy/caddy

7-crear-ejecutable-linux.png

 

Como es costumbre en Go no veremos ningún resultado visible pero internamente se ha realizado el proceso.

 

Paso 4

Esto creará el archivo .exe en base al sistema elegido y para comprobarlo ejecutaremos la siguiente línea:
ls caddy.exe

8-construcción-del-ejecutable-sea-errónea.png

 

 


7. Cómo crear el script para la compilación multiplataforma en Ubuntu 17

 

Con este objetivo crearemos un script llamado go-executable-build.bash el cual será un script que se encarga de realizar todas las acciones de compilación de forma práctica y podrá ser usado a nivel general con total compatibilidad.

 

Paso 1

Para ello usaremos la línea cd ~ y ejecutaremos lo siguiente:
nano go-executable-build.bash
Paso 2

Allí debemos ingresar la siguiente información:
#!/usr/bin/env bash

package=$1
if [[ -z "$package" ]]; then
  echo "usage: $0 <package-name>"
  exit 1
fi
package_split=(${package//\// })
package_name=${package_split[-1]}

platforms=("windows/amd64" "windows/386" "darwin/amd64")

for platform in "${platforms[@]}"
do
    platform_split=(${platform//\// })
    GOOS=${platform_split[0]}
    GOARCH=${platform_split[1]}
    output_name=$package_name'-'$GOOS'-'$GOARCH
    if [ $GOOS = "windows" ]; then
	    output_name+='.exe'
    fi  

    env GOOS=$GOOS GOARCH=$GOARCH go build -o $output_name $package
    if [ $? -ne 0 ]; then
	    echo 'An error has occurred! Aborting the script execution...'
	    exit 1
    fi
done
Paso 3

Este será el script y su función es la siguiente:
#!/usr/bin/env bash: Esta línea indica que interprete analizara el script.
package=$1: Esta línea tomara el primer argumento de la línea de comandos y lo almacenará en su variable.
 if [[ -z "$package" ]]; then
  echo "usage: $0 <package-name>"
  exit 1
fi
Paso 4

Estas líneas se encargan de desplegar un mensaje en caso de que el valor no haya sido ingresado.
El parámetro if analiza el valor de la variable package.
package_split=(${package//\// }): Esta línea divide la ruta de importación del paquete en una matriz usando el delimitador /.
package_name=${package_split[-1]}: Esta línea toma el nombre de la matriz.
platforms=("windows/amd64" "windows/386" "darwin/amd64"): Allí ingresaremos el sistema operativo y arquitectura a crear.
for platform in "${platforms[@]}"
do
platform_split=(${platform//\// })
    GOOS=${platform_split[0]}
    GOARCH=${platform_split[1]}

Done
Paso 5

Estas líneas dividen los valores de la plataforma en las variables GOOS y GOARCH.
output_name=$package_name'-'$GOOS'-'$GOARCH

    if [ $GOOS = "windows" ]; then
	    output_name+='.exe'
    fi
Paso 6

Con esta secuencia crearemos el nombre del ejecutable y cuando se trata de sistemas operativos Windows debemos agregar la extensión .exe.
env GOOS=$GOOS GOARCH=$GOARCH go build -o $output_name $package: Esta línea nos permite crear el archivo ejecutable.
if [ $? -ne 0 ]; then
	    echo 'An error has occurred! Aborting the script execution...'
	    exit 1
Paso 7

Con estas líneas será desplegado un mensaje de error en caso de que la construcción del ejecutable sea errónea.

 

9-configuración-del-script-ubuntu.png

 

 

Paso 8

Una vez ingresemos esta información guardamos los cambios usando la combinación de teclas

 

 

Ctrl + O

 

 

y salimos del editor usando

 

Ctrl + X

 

 

Paso 9

Asignaremos los permisos para que el script sea ejecutable usando la siguiente línea:
chmod +x go-executable-build.bash
Paso 10

El último paso será probar la configuración del script ejecutando lo siguiente. Como vemos no ha sido generado ningún error.
./go-executable-build.bash github.com/mholt/caddy/caddy

10-comprobar-los-archivos-ejecutables-linux.png

 

 


8. Cómo comprobar los archivos ejecutables en Ubuntu 17


Para comprobar que contamos con los ejecutables correctos en Go basta con ejecutar la siguiente línea:
ls caddy*

11-comprobar-los-archivos-ejecutables.png

 

Allí veremos los ejecutables tanto de 32 como de 64 bits para el sistema seleccionado, en este caso Windows. Si deseamos usar otras plataformas basta con acceder al script y realizar los cambios en la línea platforms.

 

Hemos visto como Go es una aplicación fundamental cuando se requiere contar con múltiples ejecutables facilitando la gestión y distribución de estos en la organización.

 

Cómo poder abrir y ejecutar aplicaciones y programas de Windows en entornos de Linux fácilmente con Wine.


¿Te ayudó este Tutorial?


1 Comentarios


Jhon Sovero Sovero
mar 23 2018 20:49

¿Alguien sabe como puedo ejecutar un bash en Ubuntu, a través de go?

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X