我想安装自定义源从一个git存储库,但是使用我的包管理器(为 portage 出现)。
背景
我已经使用 EFI 安装了 Gentoo坂木的教程,所以我已经出现了dev-vcs/git
。
我想要的包是用于安装的Canonical 的 Snapd(背景读取自技术艺术),他们的指令是:
根图
'# 启用 snapd systemd 服务:
sudo systemctl enable --now snapd.service
尝试过的步骤不起作用
尝试1
首先,我尝试将先决条件 git .ebuilds 添加为存储库,将它们放入我的/etc/portage/repos.conf/
目录(两个单独的条目)中。我会发帖一举个例子:
[zyga-snap-confine]
# Snapd build dependency #1
# Maintainer: obscured
location = /usr/local/portage/zyga-snap-confine
sync-type = git
sync-uri = https://github.com/zyga/snap-confine-gentoo.git
priority = 60
auto-sync = yes
我同步了存储库,emaint sync --repo zyga-snap-confine
.然后我尝试通过emerge --search
和找到我想要的包eix
。 没有运气。
它抛出了关于缺少布局、master = gentoo 条目的错误...我意识到缺少元数据,但我抱有很高的希望。
尝试2
我终于找到了参考什么与 ebuild 相关。在官方Gentoo 维基,以及来自此处的其他帖子(从源安装 Git、Curl 和 Expat) 和这里 (如何在Funtoo/Gentoo中打包软件?), 我决定:
root@Gentoo ~ # cd /opt
root@Gentoo opt # git clone https://github.com/zyga/snap-confine-gentoo.git
root@Gentoo opt # cd snap-confine-gentoo
root@Gentoo snap-confine-gentoo # ebuild snap-confine-1.0.32.ebuild manifest clean merge
但是,它返回了错误:
Appending / to PORTDIR_OVERLAY...
!!! Repository 'x-' is missing masters attribute in '/metadata/layout.conf'
!!! Set 'masters = gentoo' in this file for future compatibility
ebuild: /opt/snap-confine-gentoo/snap-confine-1.0.32.ebuild: does not seem to have a valid PORTDIR structure
首选解决方案
我对 Gentoo 比较陌生,并且在 Linux 上自学,并且我在 Gentoo 论坛中找不到有关存储库维护的教程(有开发者指南,但它假设有很多知识)。理想的答案将提供 cli 方法(我假设使用git clone
...和./configure
?)以及包管理器版本。
即使我必须创建自己的 git 存储库来添加缺少的元数据和布局文件 - 我更愿意以这种方式管理 snapd 安装。
答案1
根据上面的@likewhoa 评论,ebuild 的结构需要进行调整。创建者在创建 git 存储库时并没有考虑到最新的 portage 结构。
对于命令行
(没有portage目录结构的ebuild)
我内心/usr/local/portage/
决定捕捉限制属于类别sys-apps
从 bash root 提示符:
cd /usr/local/portage
git clone https://github.com/zyga/snap-confine-gentoo.git
cd snap-confine-gentoo
mkdir -pv sys-apps/snap-confine
# the Manifest file will be recreated later
rm -v Manifest
mv -v snap-confine-1.0.32.ebuild sys-apps/snap-confine/
# to avoid errors, you need your masters = gentoo reference
mkdir -v metadata
echo 'masters = gentoo' > metadata/layout.conf
cd sys-apps/snap-confine
ebuild snap-confine-1.0.32.ebuild manifest clean merge
事实证明,.ebuild 没有正确形成正确的依赖关系,但我认为这些步骤提供了一个很好的教程 - 基于以下内容:
- https://wiki.gentoo.org/wiki/Basic_guide_to_write_Gentoo_Ebuilds
- https://devmanual.gentoo.org/quickstart/
用于Portage管理
基于其他 Gentoo 存储库,我建议开发人员创建一个包含捕捉限制和快照ebuilds 分别位于包类别sys-apps
和app-emulation
下。
然后,我们创建了一个元数据/layout.conf文件包含masters = gentoo
以避免 portage 兼容性投诉。开发人员指南还要求我们有一个配置文件/repo_name具有标识的存储库名称的文件。在每个包的文件夹中,我们创建了一个元数据.xml文件,然后运行repoman manifest
生成显现文件。
最后,用户需要在 内创建一个条目/etc/portage/repos.conf/
,其说明在sakaki-tools github 仓库