¿Qué es el Snapcraft?

16

He estado probando Ubuntu Core en un dispositivo Raspberry Pi 2, y he oído que puedo usar Snapcraft para desarrollarlo. Ahora escucho que las instantáneas están disponibles en el escritorio y el servidor para Ubuntu 16.04 y otras distribuciones.

¿Qué es Snapcraft y cómo puedo usarlo?

David Planella
fuente

Respuestas:

27

Snapcraft es un conjunto de herramientas agrupadas bajo el snapcraftcomando para crear fácilmente (crear) paquetes para múltiples distribuciones de Linux . Estos paquetes .snap generalmente contienen aplicaciones independientes, proporcionan un aislamiento seguro y se pueden instalar desde la Tienda de software de Ubuntu o manualmente a través del snap install <snap-name>.snapcomando.

En pocas palabras, como desarrollador, escribiría código utilizando sus herramientas habituales y dejaría que Snapcraft se encargara de ensamblarlo para su distribución. Snapcraft también se destaca por permitir a los desarrolladores portar sus aplicaciones existentes a cualquier plataforma Linux habilitada por snap.

Snapcraft:

  • Es inteligente : recupera, construye y ensambla diversas piezas de software ( partes ) de fuentes remotas en un paquete final .snap, que contiene todas las dependencias que necesita para funcionar
  • Necesita una receta : se basa en un snapcraft.yamlarchivo que especifica las partes y los complementos necesarios para crear el paquete
  • Es extensible con complementos. Si bien se incluye con un conjunto de los complementos de sistema de compilación más comunes para satisfacer una amplia gama de compilaciones de aplicaciones, se puede ampliar fácilmente con otras nuevas .

El recorrido de 3 minutos de Snapcraft

Instalar Snapcraft en Ubuntu

Necesitará Ubuntu 16.04 LTS para usar Snapcraft. Abra una terminal con Ctrl+ Alt+ ty simplemente instale Snapcraft con este comando:

sudo apt install snapcraft
sudo apt install build-essential  # Optional, but useful for different builds

Si está utilizando otra distribución, consulte las instrucciones de instalación alternativas>

Prueba de manejo de Snapcraft

El siguiente ejemplo crea un paquete que contiene un servicio que le permite pegar y compartir. Una vez finalizado, puede instalarlo manualmente en su dispositivo ágil con fines de prueba o subirlo a la Tienda para otros usuarios.

En primer lugar, abrimos un terminal y descargamos el ejemplo del repositorio de ejemplos:

sudo apt install git
git clone https://github.com/ubuntu-core/snapcraft.git
cd snapcraft/demos/gopaste

Observe el snapcraft.yamlarchivo en ese directorio, que especifica un servicio y las partes necesarias para ensamblar el .snap final. Opcionalmente, puede examinarlo con un editor de texto.

Ahora ejecute el snapcraftcomando en la terminal. Esto hará que todos los subcomandos de snapcraft se ejecuten en secuencia para construir las partes y colocar los resultados en el paquete final .snap. Durante el desarrollo, normalmente ejecutaría los pasos por separado hasta que esté seguro de que toda la compilación y el ensamblaje funcionan.

$ snapcraft 
Pulling gopaste 
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go get -t -d github.com/wisnij/gopaste/gopasted
Building gopaste 
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go build github.com/wisnij/gopaste/gopasted
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go install github.com/wisnij/gopaste/gopasted
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build cp -a /tmp/snapcraft/examples/gopaste/parts/gopaste/build/bin /tmp/snapcraft/examples/gopaste/parts/gopaste/install
Staging gopaste 
Snapping gopaste 
Generated 'gopaste_1.0_amd64.snap' snap

En la salida del comando puedes ver los pasos que Snapcraft ejecuta para ti:

  1. Pull : extrae el código de la parte de gopaste requerida de un repositorio remoto de Github
  2. Construir : construye gopaste localmente
  3. Etapa : después de la compilación, las partes se colocan en un solo árbol de directorios, el "área de ensayo"
  4. Snap : el paquete final .snap se crea a partir de las piezas ensambladas en el área de preparación

Notas:

  • Encontrará el archivo snap final como gopaste_1.0_amd64.snap(observe que en mi caso lo construí en mi escritorio amd64, por ejemplo, los paquetes Raspberry Pi 2 tendrían el _armhfsufijo de arquitectura).
  • También puede ejecutar cada comando individual: snapcraft pull, snapcraft build, snapcraft stageosnapcraft snap
  • Úselo snapcraft -hpara obtener una descripción general rápida de todos los comandos disponibles.

¡Y eso es todo para echar un vistazo rápido a lo que Snapcraft puede hacer! Obtenga más información sobre Snapcraft>

David Planella
fuente
99
Aprecio el comentario, pero aunque no soy uno de los desarrolladores de Snapcraft, tampoco estoy seguro de cómo explicar qué es una herramienta para crear instantáneas de Ubuntu y cómo usarla, en un sitio de Ubuntu, podría constituir spam.
David Planella
La redacción en la lista de características me provocó eso. Y también"And that's it for a quick glimpse of what Snapcraft can do!"
Ismael Miguel
1
Estaría de acuerdo con David aquí.
dholbach
1
La parte bzr debe reemplazarse por comandos git equivalentes, ya que el código ahora está en Github.
lapisdecor
1
Además, para hacer esto necesitas instalar git y gcc si estás usando git y no bzr.
lapisdecor