如何使用 Gentoo 中的包管理器从 git 安装自定义源?

如何使用 Gentoo 中的包管理器从 git 安装自定义源?

我想安装自定义源从一个git存储库,但是使用我的包管理器(为 portage 出现)。

背景

我已经使用 EFI 安装了 Gentoo坂木的教程,所以我已经出现了dev-vcs/git

我想要的包是用于安装的Canonical 的 Snapd(背景读取自技术艺术),他们的指令是:

根图

安装快照限制.ebuildsnapd.ebuild

'# 启用 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 没有正确形成正确的依赖关系,但我认为这些步骤提供了一个很好的教程 - 基于以下内容:

  1. https://wiki.gentoo.org/wiki/Basic_guide_to_write_Gentoo_Ebuilds
  2. https://devmanual.gentoo.org/quickstart/

用于Portage管理

基于其他 Gentoo 存储库,我建议开发人员创建一个包含捕捉限制快照ebuilds 分别位于包类别sys-appsapp-emulation下。

然后,我们创建了一个元数据/layout.conf文件包含masters = gentoo以避免 portage 兼容性投诉。开发人员指南还要求我们有一个配置文件/repo_name具有标识的存储库名称的文件。在每个包的文件夹中,我们创建了一个元数据.xml文件,然后运行repoman manifest生成显现文件。

最后,用户需要在 内创建一个条目/etc/portage/repos.conf/,其说明在sakaki-tools github 仓库

相关内容