Как получить пакеты сборки из других репозиториев apt в snapcraft

Я пытаюсь создать снимок, который зависит от gtk3d, пакеты для которого доступны только в архиве Debian:

https://packages.debian.org/sid/libgtkd -3-dev

Можно ли получить build-packages для получения пакетов из дополнительных репозиториев apt, чем archive.ubuntu.com? Или есть другая альтернатива для получения snapcraft для получения пакетов из Debian?

5
задан 15 July 2016 в 10:30

2 ответа

С прямо сейчас, в настоящее время нет способа сделать это, если Вы не создадите свой снимок в системе Debian, в этом случае, он выберет пакеты от Debian repos.

Универсальная поддержка распределения приходит, просто еще.

0
ответ дан 15 July 2016 в 10:30

Можно сделать это теперь путем записи очень простого пользовательского плагина (на основе 'нулевого' плагина). Просто поместите sources.list файл (содержащий repos, который Вы хотите установить от) в каталоге Вашего проекта верхнего уровня, и поместите следующий код в 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()

После этого, Вы, возможно, должны волноваться о gpg ключах для источников. Можно просто добавить тех, которые к способным ключам системы.

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

, В зависимости от которого repos Вы пытаетесь использовать в своем снимке, Вы, возможно, должны указать некоторые специальные опции для Кв. Можно сделать это с пользовательским apt.conf файлом. Мой apt.conf похож на это.

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

можно заставить snapcraft использовать этот файл, когда он называет склонным внутренне путем установки огибающей переменной.

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

Наконец, отредактируйте свой snapcraft.yaml для использования нового плагина.

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

Теперь, можно выполнить "snapcraft снимок", и он должен установить пакеты из репозиториев, перечисленных в пользовательском sources.list файле вместо системы.

0
ответ дан 15 July 2016 в 10:30
  • 1
    You' право ре, экспорт doesn' t работают с sudo потому что it' s сборка в команде оболочки – Félicien 14 February 2018 в 08:29

Другие вопросы по тегам:

Похожие вопросы: