Como buscar pacotes de compilação de outros repositórios apt no snapcraft

5

Estou tentando construir um snap que depende do gtk3d, os pacotes dos quais estão disponíveis apenas no repositório Debian:

link

É possível obter build-packages para buscar pacotes de repositórios apt adicionais que archive.ubuntu.com? Ou existe outra alternativa para fazer o snapcraft buscar os pacotes do Debian?

    
por David Planella 14.07.2016 / 23:30

2 respostas

4

Você pode fazer isso agora escrevendo um plugin personalizado muito simples (baseado no plugin 'nil'). Basta colocar um arquivo sources.list (contendo os repositórios que você deseja instalar) no diretório de nível superior do seu projeto e colocar o seguinte código em parts / plugins / your_plugin.py

import snapcraft
import os

class YourPlugin(snapcraft.BasePlugin):
    @classmethod
    def schema(cls):
        return {
            '$schema': 'http://json-schema.org/draft-04/schema#',
            'type': 'object',
            'additionalProperties': False,
            'properties': {},
        }

    def enable_cross_compilation(self):
        pass

    @property
    def PLUGIN_STAGE_SOURCES(self):
        return open('sources.list', 'r').read()

Depois disso, você pode precisar se preocupar com as chaves gpg para as fontes. Você pode simplesmente adicioná-los às chaves do seu sistema.

$sudo apt-key add <file with repo's gpg key>

Dependendo de quais repositórios você está tentando usar no seu snap, você pode precisar especificar algumas opções especiais para o apt. Você pode fazer isso com um arquivo apt.conf personalizado. Meu apt.conf se parece com isso.

Acquire::ForceHash "sha1";
Acquire::CompressionTypes::Order { "bz2", "gz"; };
Acquire::Languages { "none"; };

Você pode fazer o snapcraft usar este arquivo quando ele chama o apt internamente definindo uma variável ENV.

$export APT_CONFIG=<path to custom apt.conf file>

Por fim, edite seu snapcraft.yaml para usar seu novo plug-in.

parts:
  custom-part:
    plugin: your_plugin
    stage-packages:
      - <package from custom repo>

Agora, você pode rodar o "snap snap snap", e ele deve instalar pacotes dos repositórios listados em seu arquivo sources.list customizado, ao invés do sistema.

    
por canis-puppis 01.12.2016 / 20:40
0

A partir de agora, atualmente não há uma maneira de fazer isso, a menos que você construa seu snap em um sistema Debian, nesse caso, ele buscará os pacotes do repositório Debian.

O suporte à distribuição universal está chegando, ainda não.

    
por Simon Quigley 15.07.2016 / 15:04

Tags