我正在尝试构建一个依赖于 gtk3d 的 snap,其软件包仅在 Debian 存档中可用:
https://packages.debian.org/sid/libgtkd-3-dev
是否可以build-packages从除了archive.ubuntu.com 之外的其他apt 存储库获取包?或者是否有另一种选择让 snapcraft 从 Debian 获取软件包?
小智 4
您现在可以通过编写一个非常简单的自定义插件(基于“nil”插件)来完成此操作。只需将一个sources.list文件(包含您要从中安装的存储库)放入项目的顶级目录中,并将以下代码放入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()
Run Code Online (Sandbox Code Playgroud)
之后,您可能需要担心源的 gpg 密钥。您只需将它们添加到系统的 apt 键中即可。
$sudo apt-key add <file with repo's gpg key>
Run Code Online (Sandbox Code Playgroud)
根据您尝试在 snap 中使用的存储库,您可能需要为 apt 指定一些特殊选项。您可以使用自定义 apt.conf 文件来执行此操作。我的 apt.conf 看起来像这样。
Acquire::ForceHash "sha1";
Acquire::CompressionTypes::Order { "bz2", "gz"; };
Acquire::Languages { "none"; };
Run Code Online (Sandbox Code Playgroud)
您可以通过设置 ENV 变量使 snapcraft 在内部调用 apt 时使用此文件。
$export APT_CONFIG=<path to custom apt.conf file>
Run Code Online (Sandbox Code Playgroud)
最后,编辑 snapcraft.yaml 以使用新插件。
parts:
custom-part:
plugin: your_plugin
stage-packages:
- <package from custom repo>
Run Code Online (Sandbox Code Playgroud)
现在,您可以运行“snapcraft snap”,它应该从自定义的sources.list文件中列出的存储库而不是系统的存储库中安装软件包。
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |