Я пытаюсь создать снимок, который зависит от gtk3d, пакеты для которого доступны только в архиве Debian:
https://packages.debian.org/sid/libgtkd -3-dev
Можно ли получить build-packages
для получения пакетов из дополнительных репозиториев apt, чем archive.ubuntu.com? Или есть другая альтернатива для получения snapcraft для получения пакетов из Debian?
С прямо сейчас, в настоящее время нет способа сделать это, если Вы не создадите свой снимок в системе Debian, в этом случае, он выберет пакеты от Debian repos.
Универсальная поддержка распределения приходит, просто еще.
Можно сделать это теперь путем записи очень простого пользовательского плагина (на основе 'нулевого' плагина). Просто поместите 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 файле вместо системы.