One place for hosting & domains

      publicar

      Como empacotar e publicar um aplicativo Snap no Ubuntu 18.04


      O autor selecionou a Electronic Frontier Foundation para receber uma doação como parte do programa Write for DOnations.

      Introdução

      Um dos maiores desafios no desenvolvimento de aplicativos é o passo final da distribuição do produto acabado para seus usuários ou clientes. Muitas metodologias existentes para implantação de aplicativos não são fáceis de usar e carecem de segurança, ou não fornecem métodos para atualizar automaticamente um aplicativo assim que estiver instalado.

      O Snap é um formato moderno de empacotamento de aplicativos, com recursos de área restrita e segurança eficazes, incluindo o isolamento do sistema de arquivos, atualizações automáticas e o gerenciamento de dependências integrado. Os aplicativos do Snap, conhecidos como Snaps, podem ser baixados e instalados usando um programa de linha de comando, de maneira semelhante às ferramentas apt ou yum. O Ubuntu vem com Snap pré-instalado, o que significa que há uma amplo público-alvo para os aplicativos Snap.

      Neste tutorial, você criará um aplicativo Snap e irá publicá-lo na Snap Store.

      Pré-requisitos

      Para completar este tutorial, você precisará de:

      • Um servidor Ubuntu 18.04 configurado de acordo com o tutorial de Configuração inicial de servidor com o Ubuntu 18.04, incluindo um usuário sudo não raiz.

      • Um aplicativo que você queira empacotar e lançar como um Snap. Esse pode ser um aplicativo complexo que você criou, um projeto de código aberto comum, ou um simples programa “Hello, world!” (“Olá, mundo!”) . Caso ainda não tenha um aplicativo, o Passo 1 deste tutorial irá abranger como criar um programa Hello World em Go.

      • Uma conta no Snapcraft Developer Snapcraft [Painel de desenvolvimento do Snapcraft].

      Assim que tiver tudo pronto, faça login no seu servidor como usuário não raiz para começar.

      Passo 1 — Preparando seu aplicativo para o empacotamento

      Primeiro, você irá preparar seu aplicativo para o empacotamento como um aplicativo Snap, assegurando que tudo o que é necessário esteja armazenado em um único diretório.

      Comece criando um diretório para seu Snap, acessando-o:

      • mkdir ~/your-snap
      • cd ~/your-snap

      Em seguida, caso já tenha um aplicativo, coloque uma cópia completa do código fonte do seu aplicativo no diretório que acabou de criar. O processo aqui será significativamente diferente, dependendo do aplicativo exato que estiver empacotando. No entanto, caso o código fonte estiver armazenado em um repositório do Git, você pode usar o comando git init para criar um repositório no diretório e puxar todo o código relevante.

      Caso ainda não tenha um aplicativo que deseja empacotar, você pode, em vez disso, criar um programa “Hello World” para usar. Caso queira mais contexto sobre como escrever esse programa com o Go, confira o tutorial Como escrever seu primeiro programa em Go.

      Você pode fazer isso, primeiramente criando um arquivo Go, abrindo-o com o seu editor de texto preferido:

      Depois, adicione o código a seguir ao arquivo:

      helloworld.go

      package main
      import "fmt"
      func main() {
        fmt.Println("Hello, world!")
      }
      

      Então, salve e saia do arquivo.

      Caso não tenha o Go instalado, instale-o usando o seguinte comando:

      • sudo apt install golang-go

      Assim que o Go estiver instalado, execute seu novo programa para verificar se ele está funcionando:

      Você verá o seguinte resultado:

      Output

      Hello, world!

      Você preparou seu aplicativo para empacotar como um Snap. Em seguida, você instalará o software necessário para iniciar o processo de empacotamento.

      Passo 2 — Instalando o Snapcraft

      Neste passo, você irá baixar e instalar o Snapcraft, que é o nome da ferramenta oficial de empacotamento do aplicativo Snap. O Snapcraft está disponível na Snap Store, que, por padrão, vem integrada ao Ubuntu. Isso significa que você pode instalar o Snapcraft a partir da linha de comando, usando o comando snap.

      O comando snap é equivalente ao comando apt, mas você pode usá-lo para instalar softwares da Snap Store, em vez de pacotes dos repositórios da Apt.

      Para instalar o Snapcraft, execute o seguinte comando:

      • sudo snap install snapcraft --classic

      Use o argumento de comando --classic para que o Snapcraft faça a instalação sem os recursos rigorosos de área restrita que os Snaps normalmente usam. O Snapcraft exige esse argumento, já que precisa de acesso mais privilegiado ao seu sistema para empacotar de maneira confiável os aplicativos.

      Assim que instalar o Snapcraft, verá o seguinte:

      Output

      snapcraft 3.9.8 from Canonical✓ installed

      Por fim, você pode verificar novamente a instalação do Snapcraft, executando:

      Isso exibirá algo similar a:

      Output

      snapcraft, version 3.9.8

      Agora que você instalou o Snapcraft, pode começar a definir a configuração e os metadados para o seu aplicativo Snap.

      Neste passo, você começará a definir a configuração, a estrutura e os metadados para seu aplicativo Snap.

      Comece certificando-se de que ainda está trabalhando no diretório do seu aplicativo Snap:

      Em seguida, crie e edite o arquivo snapcraft.yaml, usando seu editor de texto preferido:

      Você usará o arquivo snapcraft.yaml para armazenar toda a configuração do seu aplicativo Snap, incluindo o nome, descrição e versão, além de configurações relacionadas ao gerenciamento de dependências e ao uso de área restrita.

      Comece definindo o nome, resumo, descrição e número de versão do seu aplicativo:

      snapcraft.yaml

      name: your-snap
      summary: A summary of your application in 78 characters or less.
      description: |
        A detailed description of your application.
        The description can have multiple lines.
      version: '1.0'
      

      O nome do seu Snap precisa ser único caso deseje publicá-lo na Snap Store — procure outros aplicativos com o mesmo nome para garantir que ele já não esteja sendo usado.

      Em seguida, defina o(s) comando(s) que deseja associar ao seu aplicativo. Isso permitirá que seu Snap seja usado diretamente a partir da linha de comando do Bash, como um comando normal.

      Adicione o seguinte ao seu arquivo snapcraft.yaml:

      snapcraft.yaml

      . . .
      apps:
        your-snap-command:
          command: your-snap
      

      your-snap-command é o nome do comando que deseja definir. Por exemplo, pode ser que queira usar o comando helloworld para executar seu programa Hello World.

      Você usará o command: your-snap para dizer ao Snapcraft o que fazer quando o comando do aplicativo for executado. No caso do programa Hello World, você usaria o valor helloworld para fazer referência ao arquivo helloworld.go, o que permitirá que o Snapcraft execute seu programa com sucesso.

      Isso resulta na seguinte configuração de exemplo:

      snapcraft.yaml

      apps:
        helloworld:
          command: helloworld
      

      Caso o nome do comando corresponda exatamente ao nome do Snap, você será capaz de executá-lo diretamente da linha de comando. Caso o comando não corresponda ao nome do Snap, o comando será prefixado automaticamente com o nome do Snap. Por exemplo, helloworld.command1.

      Por fim, você pode definir as partes que compõem seu aplicativo Snap. Os aplicativos Snap consistem em várias partes, as quais são todos os componentes que compõem seu aplicativo. Em muitos casos, há apenas uma parte, que é o aplicativo propriamente dito.

      Cada parte tem um plug-in associado. Por exemplo, para os componentes do seu aplicativo escritos em Ruby, o plug-in ruby é usado e, para os componentes escritos em Go, o plug-in go é usado.

      Use o comando list-plugins do Snapcraft para identificar o(s) plug-in(s) correto(s) para seu aplicativo:

      Isso irá gerar uma lista parecida com a seguinte:

      Output

      ant catkin-tools conda dump gradle make nil python rust autotools cmake crystal go kbuild maven nodejs qmake scons catkin colcon dotnet godeps kernel meson plainbox-provider ruby waf

      Os plug-ins mais comuns são os para linguagens de programação comuns, como Go, Rust, Ruby, ou Python.

      Assim que tiver identificado os plug-ins corretos para o seu aplicativo, você pode começar a adicionar a configuração das parts (partes) ao seu arquivo snapcraft.yaml:

      snapcraft.yaml

      . . .
      parts:
        your-snap:
          plugin: plugin-name
          source: .
      

      Utilize o parâmetro de configuração source para especificar o caminho relativo para o código fonte para o seu aplicativo. Normalmente, esse será o mesmo diretório do arquivo snapcraft.yaml em si. Assim, o valor source é um único ponto (.).

      Nota: caso o componente de seu aplicativo tenha quaisquer dependências que sejam necessárias para que o compile ou execute, você pode especificá-las usando os atributos build-packages e stage-packages. Os nomes de dependências especificados serão, então, obtidos automaticamente com o gerenciador de pacotes padrão para seu sistema.

      Por exemplo:

      snapcraft.yaml

      parts:
        your-snap:
        plugin: plugin-name
        source: .
        build-packages:
        - gcc
        - make
        stage-packages:
        - libcurl4
      

      Alguns plug-ins do Snapcraft têm suas próprias opções específicas que podem ser necessárias para seu aplicativo. Assim, vale a pena rever as páginas relevantes do manual do seu plug-in:

      • snapcraft help plugin-name

      No caso dos aplicativos Go, você também especificaria o caminho go-importpath. Para a configuração Hello World, isso resulta na seguinte configuração de exemplo:

      snapcraft.yaml

      parts:
        helloworld:
          plugin: go
          source: .
          go-importpath: helloworld
      

      Deixe seu arquivo snapcraft.yaml aberto para adicionar mais configurações no próximo passo.

      Você definiu a configuração base para seu aplicativo Snap. Em seguida, você irá configurar os aspectos de segurança e de área restrita do seu aplicativo.

      Passo 4 — Protegendo seu aplicativo Snap

      Os aplicativos Snap foram criados para executarem em um ambiente de área restrita, de modo que, neste passo, você irá configurar a área restrita para o seu Snap. Primeiro, precisará habilitar a área restrita para o seu aplicativo, conhecida dentro do Snapcraft como confinement (confinamento).

      Adicione o seguinte ao seu arquivo snapcraft.yaml:

      snapcraft.yaml

      . . .
      confinement: strict
      

      Isso habilitará a área restrita para o seu aplicativo, impedindo-o de acessar a internet, outros Snaps em execução, ou o sistema do host propriamente dito. No entanto, na maioria dos casos, os aplicativos precisam ser capazes de se comunicar fora da área restrita, como quando precisam acessar a internet ou ler/gravar no sistema de arquivos.

      Essas permissões, conhecidas dentro do Snapcraft como interfaces, podem ser concedidas ao seu aplicativo Snap usando os Plugs. Usando o Plugs, você pode ter o controle fino sobre a área restrita do seu aplicativo, para lhe dar o acesso que precisa e nada mais (princípio do menor privilégio).

      As interfaces exatas que são necessárias variam, dependendo do seu aplicativo. Algumas das interfaces mais comuns são:

      • audio-playback – permite saída de som/reprodução de sons.
      • audio-record – permite a entrada/gravação de áudio.
      • camera – permite o acesso a webcams conectadas.
      • home – permite o acesso a arquivos não ocultos dentro do seu diretório home.
      • network – permite o acesso à rede/internet.
      • network-bind – permite a vinculação às portas para operar como um serviço de rede.
      • system-files – permite o acesso ao sistema de arquivos completo da máquina de hospedagem.

      A lista completa de interfaces disponíveis pode ser encontrada dentro da documentação do Snapcraft, em Interfaces compatíveis.

      Assim que tiver identificado todas as interfaces necessárias para o seu aplicativo, você pode começar a atribuí-las aos plugs dentro do seu arquivo snapcraft.yaml.

      A configuração do exemplo a seguir permitirá que o aplicativo acesse a rede e a área inicial de usuários:

      snapcraft.yaml

      . . .
      plugs:
        your-snap-home:
          interface: home
        your-snap-network:
          interface: network
      

      Salve e saia do seu arquivo.

      O nome do Plug deve ser um nome descritivo para ajudar os usuários a identificar o propósito do Plug.

      Você habilitou a área restrita para o seu Snap e configurou alguns Plugs para conceder acesso limitado aos recursos do sistema. Em seguida, terminará a compilação do seu app Snap.

      Passo 5 — Compilando e testando seu aplicativo Snap

      Agora que você escreveu toda a configuração necessária para o seu Snap, prossiga com a compilação e teste do pacote Snap localmente.

      Caso esteja acompanhando este tutorial com a utilização de um programa Hello World como seu aplicativo, seu arquivo completo snapcraft.yaml será agora semelhante ao seguinte:

      snapcraft.yaml

      name: helloworld
      summary: A simple Hello World program.
      description: |
        A simple Hello World program written in Go.
        Packaged as a Snap application using Snapcraft.
      version: '1.0'
      confinement: strict
      
      apps:
        helloworld:
          command: helloworld
      
      parts:
        helloworld:
          plugin: go
          source: .
          go-importpath: helloworld
      
      plugs:
        helloworld-home:
          interface: home
        helloworld-network:
          interface: network
      

      Para compilar seu aplicativo Snap, execute o comando snapcraft dentro do diretório para seu Snap:

      Então, o Snapcraft irá iniciar automaticamente uma máquina virtual (VM) e começará a compilar seu Snap. Assim que terminar, o Snapcraft fechará e você verá algo semelhante ao seguinte:

      Output

      Snapped your-snap_1.0_amd64.snap

      Agora, você pode instalar o seu Snap localmente para verificar se ele está funcionando:

      • sudo snap install your-snap.snap --dangerous

      O argumento de comando --dangerous é necessário, já que você está instalando um Snap local que não foi assinado.

      Output

      your-snap 1.0 installed

      Assim que o processo de instalação estiver completo, execute seu Snap usando seu comando associado. Por exemplo:

      No caso do programa exemplo Hello World, o resultado seguinte seria:

      Output

      Hello, world!

      Você também pode visualizar a política de área restrita para seu Snap para se certificar de que as permissões atribuídas foram devidamente concedidas:

      • snap connections your-snap

      Isso irá gerar uma lista de Plugs e interfaces, parecida com a seguinte:

      Output

      snap connections your-snap Interface Plug Slot Notes home your-snap:your-snap-home :home - network your-snap:your-snap-network :network -

      Neste passo, você construiu seu Snap e o instalou localmente para testar se ele está funcionando. Em seguida, irá publicar seu Snap na Snap Store.

      Passo 6 — Publicando seu Snap

      Agora que você compilou e testou seu aplicativo Snap, é hora de lançá-lo na Snap Store.

      Comece fazendo login na sua conta de desenvolvedor do Snap, usando o aplicativo de linha de comando Snapcraft:

      Siga os prompts e digite seu endereço de e-mail e senha.

      Em seguida, você precisa registrar o nome do aplicativo na Snap Store:

      • snapcraft register your-snap

      Assim que tiver registrado o nome do Snap, poderá enviar o pacote do Snap compilado para a loja:

      • snapcraft push your-snap.snap

      Você verá um resultado similar ao seguinte:

      Output

      Preparing to push 'your-snap_1.0_amd64.snap'. Install the review-tools from the Snap Store for enhanced checks before uploading this snap. Pushing 'your-snap_1.0_amd64.snap' [===================================================================================================] 100% Processing...| Ready to release! Revision 1 of 'your-snap' created.

      Cada vez que você manda para a loja do Snap, o número de revisão é incrementado, começando em um. Isso é útil para ajudar a identificar as diferentes compilações do seu Snap.

      Por fim, você pode lançar seu Snap para o público:

      • snapcraft release your-snap revision-number channel

      Caso essa seja a primeira vez que você envia algo para a Snap Store, o número da revisão será 1. Você também pode escolher entre lançar nos canais stable, candidate, beta e edge, caso tenha várias versões do seu aplicativo em diferentes fases de desenvolvimento.

      Por exemplo, o comando a seguir lançará a revisão 1 do Snap Hello World no canal stable:

      • snapcraft release helloworld 1 stable

      Você verá um resultado similar ao seguinte:

      Output

      Track Arch Channel Version Revision latest amd64 stable 1.0 1 candidate ^ ^ beta ^ ^ edge ^ ^ The 'stable' channel is now open.

      Agora, você pode procurar pelo seu aplicativo na Snap Store e instalá-lo em qualquer um dos seus dispositivos.

      Loja do Snapcraft com o app Hello World exibido nos resultados de busca

      Neste passo final, você enviou seu pacote compilado do Snap para a Snap Store e o lançou para o público.

      Conclusão

      Neste artigo, você configurou e compilou um aplicativo Snap e, depois, lançou-o para o público através da Snap Store. Agora, possui o conhecimento básico necessário para manter o seu aplicativo e compilar novos.

      Caso queira explorar os Snaps ainda mais, confira a Snap Store completa. Você também pode querer rever a referência YAML do Snapcraft para entender mais sobre ela e identificar atributos adicionais para sua configuração do Snap.

      Por fim, caso queira investigar ainda mais o desenvolvimento do Snap, pode ser que goste de ler sobre a implementação de Snap Hooks, que permitem que os Snaps reajam dinamicamente às alterações do sistema, como as atualizações ou ajustes de política de segurança.



      Source link

      Cómo crear un paquete y publicar una aplicación de Snap en Ubuntu 18.04


      El autor seleccionó la Electronic Frontier Foundation para recibir una donación como parte del programa Write for DOnations.

      Introducción

      Uno de los mayores desafíos en el desarrollo de aplicaciones es el paso final de distribuir el producto acabado a sus usuarios o clientes. Muchos de los métodos para la implementación de aplicaciones carecen de sencillez y seguridad o no incorporan estrategias para actualizar de forma automática una aplicación una vez que se instaló.

      Snap es un formato moderno de empaquetamiento de aplicaciones que cuenta con potentes funciones de banco de pruebas y seguridad e incluye aislamiento del sistema de archivos, actualizaciones automáticas y gestión de dependencias integrada. Las aplicaciones Snap, conocidas como Snaps, pueden descargarse e instalarse usando un programa de línea de comandos, similar a apt o yum. Ubuntu viene con Snap previamente instalado, lo cual significa que las aplicaciones Snap tienen muchos adeptos.

      A través de este tutorial, creará una aplicación Snap y la publicará en la Snap Store.

      Requisitos previos

      Para completar este tutorial, necesitará lo siguiente:

      • Un servidor de Ubuntu 18.04 configurado conforme a la Configuración inicial de servidores con Ubuntu 18.04, con un usuario sudo no root.

      • Una aplicación que quiere empaquetar y publicar en el formato Snap. Esta puede ser una aplicación compleja que creó, un proyecto común de código abierto, o un simple “¡Hello, world!”. Mundo!”. Si aún no tiene una aplicación, en el paso 1 de este tutorial se abordará la manera de crear un programa Hello World en Go.

      • Una cuenta en el panel de control de Snapcraft para desarrolladores.

      Una vez que tenga todo esto listo, inicie sesión en su servidor como usuario no root.

      Paso 1: Preparar su aplicación para agregarla a un paquete

      Primero, preparará su aplicación para empaquetarla como aplicación Snap asegurándose de que todo lo necesario esté presente en un único directorio.

      Comience creando un nuevo directorio para su Snap y posicionándose en él:

      • mkdir ~/your-snap
      • cd ~/your-snap

      A continuación, si ya dispone de una aplicación, disponga una copia completa del código fuente de su aplicación en el directorio que acaba de crear. El proceso aquí variará considerablemente según la aplicación exacta que empaquete; sin embargo, en caso de que el código fuente se almacene en un repositorio de Git, puede aplicar git init en un repositorio del directorio y extraer todo el código pertinente.

      Si aún no tiene una aplicación que desee empaquetar, puede crear un programa “Hello World” para usarlo como alternativa. Si desea más información sobre cómo escribir este programa con Go, consulte el tutorial Cómo escribir su primer programa en Go.

      Puede hacer esto creando primero un nuevo archivo de Go y abriéndolo con su editor de texto preferido:

      A continuación, añada el siguiente código al archivo:

      helloworld.go

      package main
      import "fmt"
      func main() {
        fmt.Println("Hello, world!")
      }
      

      Guarde el archivo y ciérrelo.

      Si no tiene Go instalado, puede instalarlo usando el siguiente comando:

      • sudo apt install golang-go

      Una vez instalado Go, puede ejecutar su nuevo programa para comprobar que funcione:

      Verá el siguiente resultado:

      Output

      Hello, world!

      Con esto, habrá preparado su aplicación para empaquetarla con el formato Snap. A continuación, instalará el software necesario para iniciar el proceso de empaquetamiento.

      Paso 2: Instalar Snapcraft

      En este paso, descargará e instalará Snapcraft; este es el nombre que recibe la herramienta oficial de creación de paquetes de aplicaciones Snap. Snapcraft está disponible en la Snap Store, que existe en Ubuntu por defecto. Esto significa que puede instalar Snapcraft desde la línea de comandos usando el comando snap.

      El comando snap es equivalente al comando apt, pero puede usarlo para instalar software desde la Snap Store, en lugar de paquetes desde los repositorios Apt.

      Para instalar Snapcraft, ejecute el siguiente comando:

      • sudo snap install snapcraft --classic

      Se utiliza el argumento de comando --classic para que Snapcraft se instalae sin las funciones de banco de pruebas estrictas que normalmente se usan en las Snaps. Snapcraft requiere este argumento, ya que necesita más acceso privilegiado a su sistema para empaquetar las aplicaciones de forma fiable.

      Una vez que instale Snapcraft, verá lo siguiente:

      Output

      snapcraft 3.9.8 from Canonical✓ installed

      Finalmente, puede verificar la instalación de Snapcraft ejecutando lo siguiente:

      Con esto se mostrará algo similar a lo siguiente:

      Output

      snapcraft, version 3.9.8

      Ahora que instaló Snapcraft, puede empezar a definir la configuración y los metadatos para su aplicación Snap.

      En este paso, empezará a definir la configuración, la estructura y los metadatos para su aplicación Snap.

      Comience verificando que aún esté trabajando en el directorio de su aplicación Snap:

      A continuación, cree y edite el archivo snapcraft.yaml usando su editor de texto preferido:

      Usará el archivo snapcraft.yaml para almacenar toda la configuración para su aplicación Snap, incluidos el nombre, la descripción y la versión, además de los ajustes relacionados con la gestión de dependencias y el banco de pruebas.

      Comience definiendo el nombre, el resumen, la descripción y el número de la versión de su aplicación:

      snapcraft.yaml

      name: your-snap
      summary: A summary of your application in 78 characters or less.
      description: |
        A detailed description of your application.
        The description can have multiple lines.
      version: '1.0'
      

      El nombre de su Snap debe ser único si desea publicarla en la Snap Store; busque otras aplicaciones con el mismo nombre para asegurarse de que no exista aún.

      A continuación, puede definir el comando o los comandos que desee asociar a su aplicación. Esto permitirá usar su Snap desde la línea de comandos Bash como un comando normal.

      Agregue lo siguiente a su archivo snapcraft.yaml:

      snapcraft.yaml

      . . .
      apps:
        your-snap-command:
          command: your-snap
      

      your-snap-command es el nombre del comando que desea definir. Por ejemplo, es posible que desee usar el comando helloworld para ejecutar su programa Hello World.

      Se utiliza el comando: your-snap para indicar a Snapcraft lo que debe hacer cuando se ejecuta el comando de la aplicación. En el caso del programa Hello World, usaría el valor helloworld para hacer referencia al archivo helloworld.go, lo que permitirá a Snapcraft ejecutar su programa de forma correcta.

      Como resultado, se obtiene la siguiente configuración de ejemplo:

      snapcraft.yaml

      apps:
        helloworld:
          command: helloworld
      

      Si el nombre del comando coincide exactamente con el nombre de la Snap, podrá ejecutarlo de manera directa desde la línea de comandos. Si el comando no coincide con el nombre de la Snap, se le añadirá automáticamente el nombre de la Snap. Por ejemplo, helloworld.command1.

      Por último, puede definir las partes que formarán su aplicación Snap. Las aplicaciones Snap constan de varias partes, que son todos los componentes que forman su aplicación. En muchos casos solo hay una parte, que es la aplicación en sí misma.

      Cada parte tiene un complemento asociado. Por ejemplo, para los componentes de su aplicación escritos en Ruby se utiliza el complemento ruby y para los componentes escritos en Go se utiliza el complemento go.

      Puede usar el comando list-plugins de Snapcraft a fin de identificar los complementos correctos para su aplicación.

      Con esto, se mostrará algo similar a lo siguiente:

      Output

      ant catkin-tools conda dump gradle make nil python rust autotools cmake crystal go kbuild maven nodejs qmake scons catkin colcon dotnet godeps kernel meson plainbox-provider ruby waf

      Los complementos más comunes son aquellos para los lenguajes de programación más habituales, como Go, Rust, Ruby o Python.

      Una vez que haya identificado los complementos correctos para su aplicación, podrá comenzar a añadir la configuración parts a su archivo snapcraft.yaml:

      snapcraft.yaml

      . . .
      parts:
        your-snap:
          plugin: plugin-name
          source: .
      

      Se utiliza el parámetro de configuración source para especificar la ruta relativa del código fuente de su aplicación. Normalmente, este será el mismo directorio que el del archivo snapcraft.yaml, de modo que el valor source es un punto (.).

      Nota: Si en el componente de su aplicación hay dependencias que se necesiten para su compilación o ejecución, puede especificarlas usando los atributos build-packages y stage-packages. Los nombres de dependencias especificados se obtendrán automáticamente a través del administrador de paquetes predeterminado de su sistema.

      Por ejemplo:

      snapcraft.yaml

      parts:
        your-snap:
        plugin: plugin-name
        source: .
        build-packages:
        - gcc
        - make
        stage-packages:
        - libcurl4
      

      Algunos complementos de Snapcraft tienen sus propias opciones específicas que pueden ser necesarias para su aplicación, de modo que vale la pena revisar las páginas pertinentes del manual para su complemento:

      • snapcraft help plugin-name

      En el caso de las aplicaciones de Go, especificaría también el go-importpath. Para la configuración de Hello World, como resultado de esto se obtiene la siguiente configuración de ejemplo:

      snapcraft.yaml

      parts:
        helloworld:
          plugin: go
          source: .
          go-importpath: helloworld
      

      Puede dejar su archivo snapcraft.yaml abierto para añadir ajustes en el siguiente paso.

      Con esto, definió la configuración básica para su aplicación Snap. A continuación, configurará los aspectos de seguridad y banco de pruebas de su aplicación.

      Paso 4: Proteger su aplicación Snap

      Las aplicaciones Snap están diseñadas para ejecutarse en un entorno de banco de pruebas. Por ello, en este paso configurará el banco de pruebas para su Snap. Primero, deberá habilitar el banco de pruebas para su aplicación, conocido en Snapcraft como confinement.

      Agregue lo siguiente a su archivo snapcraft.yaml:

      snapcraft.yaml

      . . .
      confinement: strict
      

      Esto permitirá la aplicación de un banco de pruebas para su aplicación, lo cual evitará que esta acceda a Internet, a otras Snaps en ejecución o al sistema host. Sin embargo, en la mayoría de los casos, no es necesario que las aplicaciones puedan comunicarse fuera de su banco de pruebas, como cuando necesitan acceder a Internet o realizar tareas de lectura y escritura en el sistema de archivos.

      Estos permisos, conocidos en Snapcraft como interfaces, pueden concederse a su aplicación Snap mediante Plugs. Usando los Plugs, puede controlar de forma exhaustiva el banco de pruebas de su aplicación para darle el acceso que requiere y nada más (principio de privilegio menor).

      Las interfaces exactas necesarias variarán dependiendo de su aplicación. Las siguientes son algunas de las interfaces más comunes:

      • audio-playback: permite la salida de audio y la reproducción de sonidos.
      • audio-record: permite la entrada y grabación de audio.
      • camera: permite el acceso a cámaras web conectadas.
      • home: permite el acceso a archivos no ocultos en su directorio de inicio.
      • network: permite el acceso a la red y a Internet.
      • network-bind: permite la vinculación a puertos para el funcionamiento como servicio de red.
      • system-files: permite el acceso a todo el sistema de archivos del equipo host.

      La lista completa de interfaces disponibles está en la documentación de Snapcraft, en la sección Supported Interfaces (interfaces compatibles).

      Una vez que haya identificado todas las interfaces requeridas para su aplicación, puede comenzar a asignarlas a los plugs en su archivo snapcraft-yaml.

      La siguiente configuración de ejemplo permitirá que la aplicación acceda a la red y al área de inicio de los usuarios:

      snapcraft.yaml

      . . .
      plugs:
        your-snap-home:
          interface: home
        your-snap-network:
          interface: network
      

      Guarde y cierre su archivo.

      El nombre del Plug debería ser descriptivo para ayudar a los usuarios a identificar su finalidad.

      Habilitó el banco de pruebas para su Snap y configuró algunos Plugs para conceder acceso limitado a recursos del sistema. A continuación, terminará de compilar su aplicación Snap.

      Paso 5: Compilar y probar su aplicación Snap

      Ahora que escribió toda la configuración necesaria para su Snap, puede proceder con la compilación y prueba del paquete de Snap a nivel local.

      Si ha seguido los pasos de este tutorial con un programa Hello World como aplicación, su archivo snapcraft.yaml completo ahora tendrá un aspecto similar al siguiente:

      snapcraft.yaml

      name: helloworld
      summary: A simple Hello World program.
      description: |
        A simple Hello World program written in Go.
        Packaged as a Snap application using Snapcraft.
      version: '1.0'
      confinement: strict
      
      apps:
        helloworld:
          command: helloworld
      
      parts:
        helloworld:
          plugin: go
          source: .
          go-importpath: helloworld
      
      plugs:
        helloworld-home:
          interface: home
        helloworld-network:
          interface: network
      

      Para compilar su aplicación Snap, ejecute el comando snapcraft desde el directorio de esta:

      Snapcraft iniciará automáticamente una máquina virtual (VM) y comenzará a compilar su Snap. Una vez completado el proceso, Snapcraft se cerrará y verá algo similar a lo siguiente:

      Output

      Snapped your-snap_1.0_amd64.snap

      Ahora puede instalar su Snap localmente para comprobar si funciona:

      • sudo snap install your-snap.snap --dangerous

      El argumento del comando --dangerous es necesario ya que se instala un Snap local sin firma.

      Output

      your-snap 1.0 installed

      Una vez completado el proceso de instalación, puede ejecutar su Snap usando su comando asociado. Por ejemplo:

      En el caso del programa Hello World de ejemplo, el resultado será el siguiente:

      Output

      Hello, world!

      También puede ver la política de banco de pruebas para su Snap, a fin de garantizar que los permisos asignados se hayan concedido de forma adecuada:

      • snap connections your-snap

      Esto dará como resultado una lista de Plugs e interfaces similar a la siguiente:

      Output

      snap connections your-snap Interface Plug Slot Notes home your-snap:your-snap-home :home - network your-snap:your-snap-network :network -

      En este paso, compiló su Snap y lo instaló localmente para probar que funciona. A continuación, publicará su Snap en la Snap Store.

      Paso 6: Publicar su Snap

      Ahora que compiló y probó su aplicación Snap, es el momento de publicarla en la Snap Store.

      Comience iniciando sesión en su cuenta de desarrollador de Snap usando la aplicación de línea de comandos de Snapcraft:

      Siga las instrucciones para introducir su dirección de correo electrónico y su contraseña.

      A continuación, deberá registrar el nombre de la aplicación en la Snap Store:

      • snapcraft register your-snap

      Una vez que registre el nombre de la Snap, podrá subir el paquete de Snap a la tienda:

      • snapcraft push your-snap.snap

      Visualizará un resultado similar al siguiente:

      Output

      Preparing to push 'your-snap_1.0_amd64.snap'. Install the review-tools from the Snap Store for enhanced checks before uploading this snap. Pushing 'your-snap_1.0_amd64.snap' [===================================================================================================] 100% Processing...| Ready to release! Revision 1 of 'your-snap' created.

      Cada vez que suba contenido a la Snap Store, el número de revisión aumentará, comenzando por uno. Esto es útil para ayudar a identificar las diferentes compilaciones de su Snap.

      Finalmente, puede publicar su Snap:

      • snapcraft release your-snap revision-number channel

      Si esta es la primera vez que sube contenido a la Snap Store, el número de revisión será 1. También puede optar por realizar su publicación en los canales stable, candidate, beta y edge, si tiene varias versiones de su aplicación en diferentes etapas de desarrollo.

      Por ejemplo, con el siguiente comando se publicará la revisión 1 de la Snap Hello World en el canal stable:

      • snapcraft release helloworld 1 stable

      Visualizará un resultado similar al siguiente:

      Output

      Track Arch Channel Version Revision latest amd64 stable 1.0 1 candidate ^ ^ beta ^ ^ edge ^ ^ The 'stable' channel is now open.

      Ahora puede buscar su aplicación en la Snap Store e instalarla en cualquiera de sus dispositivos.

      Tienda de Snapcraft con la aplicación HelloWord n los resultados de búsqueda

      En este paso final, subió su paquete de Snap compilado a la Snap Store y lo puso a disponibilidad del público en general.

      Conclusión

      A través de este artículo, configuró y compiló una aplicación Snap, y luego la publicó a través de la Snap Store. Ahora tiene el conocimiento básico necesario para realizar el mantenimiento de su aplicación y crear nuevas aplicaciones.

      Si desea explorar las Snaps en mayor profundidad, es posible que desee recorrer toda la Snap Store. Es posible que desee revisar la Referencia YAML de Snapcraft para comprender mejor el tema e identificar atributos adicionales para la configuración de su Snap.

      Por último, si desea obtener más información sobre el desarrollo de Snaps, le gustará leer material sobre enlaces de Snap e implementarlos; estos permiten que los Snaps reaccionen de forma dinámica a los cambios del sistema, como las actualizaciones o los ajustes de las políticas de seguridad.



      Source link