更多分享内容可访问我的个人博客

https://www.niuiic.top/

本文简要介绍如何创建自己的 ebuild 和 overlay。

自定义 overlay

ebuild 是规定软件包安装的文件,overlay 可以看成是盛放 ebuild 的容器。为了方便包管理系统和维护者管理及使用 ebuild,overlay 是必不可少的。因此在编写 ebuild 之前,首先需要创建一个自己的 overlay。

overlay 的存在形式有两种,一种在本地,一种在远程。本文使用第二种方式。

首先在本地创建一个 overlay。

sudo eselect repository create overlay_name
# overlay的默认存储位置在/usr/portage,笔者将该位置修改为/var/db/repos,下文中不再提醒。
cd /var/db/repos/overlay_name

然后在 github 上建立一个仓库,把仓库 clone 下来,将/var/db/repos/overlay_name中所有文件复制到仓库中。

注意仓库的名称可以与之前设置的 overlay_name 不同。

然后将修改后的仓库推送到远程。并执行以下命令删除本地 overlay。

sudo eselect repository remove -f overlay_name

然后再通过以下命令添加远程 overlay。

# git_url 为仓库地址
sudo eselect repository add overlay_name git git_url

现在远程 overlay 已经建立完成,只需修改本地仓库,然后推送到远程,然后使用eix-sync或者其他方式同步 overlay 即可。

ebuild 的处理

首先来看写好的 ebuild 如何处理。先在gentoo portage overlay处随意搜索并下载一个 ebuild。比如app-editors/neovim。然后在本地仓库中新建目录app-editors/neovim,并把neovim-9999.ebuild复制到该目录下。

下一步是对该 ebuild 进行签名。这一步需要用到app-portage/repoman(也可以使用老的ebuild命令,但建议用新的)。

# 首先将当前目录加入到repoman的执行对象中。
pushd path_to_repository/app-editors/neovim
# 然后进行签名。
repoman manifest
# 然后可以将当前目录退出。
popd

签名成功后,在该目录下会生成一个 Manifest 文件。

现在,将修改后的仓库推送上去并且同步 overlay 就可以安装刚才配置好的neovim-9999了。

ebuild 的写法

接下来写一个简单的dev-util/ctags/ctags-5.5.4.ebuild。内容如下。

# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2EAPI=8DESCRIPTION="Exuberant ctags generates tags files for quick source navigation"
HOMEPAGE="https://ctags.io/ https://github.com/universal-ctags/ctags"
SRC_URI="mirror://sourceforge/ctags/${P}.tar.gz"LICENSE="GPL-2+"
SLOT="0"
KEYWORDS="~mips ~sparc ~x86"src_configure() {econf --with-posix-regex
}src_install() {emake DESTDIR="${D}" installdodoc FAQ NEWS README
}

ebuild 是被 shell 解析的,也就是说这个文件中的内容其实是 shell 脚本的一堆变量声明以及函数调用。

ebuild 文件的一二两行只是一些声明,内容可以是固定的,具体可以参考/var/db/repos/gentoo/header.txt

EAPI 是 ebuild 使用的 shell 函数库的版本,这里选择的是 8,是较新的版本。

要查看这种变量的详情,可以使用 man 1 ebuild,man 5 ebuild。

为节省篇幅,其他内容不作说明,需要了解的可以查看文档或者在网上查询。

写好之后使用之前提到的处理方式进行处理,但暂时不要推送到远程,还需在本地进行测试。

首先测试从上游拉取和解压源码。

sudo ebuild ./ctags-5.5.4.ebuild clean unpack

然后测试是否可以成功编译并安装。(注意这不是正式安装)

sudo ebuild ./ctags-5.5.4.ebuild clean test install

最后还需要通过repoman full -dx进行质量检测。注意该命令需要在同步 overlay 后在 ebuild 的最终位置,即/var/db/repos/overlay_name/…下执行。

本文只是介绍了自建 overlay 和编写使用 ebuild 的基本流程,对于最关键的一步,即如何编写 ebuild 并未做详细介绍。这是因为这部分内容非常专业且内容繁杂,此外 gentoo 社区中关于这方面的资源非常丰富,完全可以自行学习。gentoo wiki ebuild guide 中的External resources一节列出了比较丰富的资源,可以参考使用。

如果你不想自己写 ebuild,也可以下载现成的。这种下载来的 ebuild 主要有两种用途。第一,修改版本。这种情况下基本上只需要修改极少部分内容。第二,解决验证方面的问题。比如下载的文件在校验时发现大小对不上,这种基本上就是 Manifest 有问题。特别常见于从仓库拉取源码的版本,即一串 9 的99999版本。原因是 Manifest 没有及时更新,当前从仓库拉取的源码大小已经与之前的不同了。这种情况下只需要拿到这个 ebuild 然后自己生成一个 Manifest 即可。其他的用途比较少见,比如解决软件依赖冲突问题,这种除非是运气好可以直接改某个依赖的版本,否则对于非专业人士而言,自己折腾不如等别人改好。

Gentoo Ebuild 和 Overlay相关推荐

  1. amd64/UEFI/systemd/gnome/gentoo安装过程记录

    注意 本人使用 install-amd64-minimal-20220123T170538Z.iso stage3-amd64-desktop-systemd-20220116T170534Z.tar ...

  2. Medusa(美杜莎)和Hydra(九头蛇)快速入门手册:01

    今天主要是初步介绍一些Hydra和Medusa的分析和内容,旨在方便快速入门,这是第一部分Medusa,后面附带一些字典,之所以是写一起,我是觉得这两个都是不错的工具,不应该分开的,在这种思想下就汇总 ...

  3. linux mplayer rpm,mplayer - movie player for linux

    Projekty związane z nami Na tej stronie znajdują się wszystkie znane nam projekty mające coś wspólne ...

  4. 《wiki》项目研发(003)之数据库设计

    前言 本系列文章的以学习为目的,结合Java中的spring.mybatis.maven和前端的vue等时下较为流行的开发技术,来实现一个简单的wiki项目,如果您对文中的开发思路或者行文观点有不同的 ...

  5. Gideo-0.1.ebuild 第五个练手作品[原创]

    # Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public Lice ...

  6. gentoo安装记录[20050216]

    原作者: * 20050216: 我明天 (17 号) 要去武汉陪 gf 几天, 顺便找找工作 (如果你有武汉的工作信息, 记得一定给我发信或者直接联系我! 非常非常感谢先!!), 可能有几天上不来了 ...

  7. 漫谈 Gentoo 中文社区的建设

    此文写于 2014 年 9 月,从简书那边迁移而来,略做修改.文中一些链接现已失效. 历史上,Gentoo 中文社区曾经出现过两次[1]. 第一次,2004 年前后,由 LinuxSir 上面的 Ge ...

  8. gentoo on macbook pro driver for the Broadcom Facetime HD webcam

    gentoo on macbook pro 按 gentoo wiki 配置kernel 选项后, 仍然不能使用摄像头 Device Drivers ---> <M> Multime ...

  9. Gentoo Linux HPPA 手冊

    Gentoo Linux HPPA 手冊 Sven Vermeulen   Author Roy Marples   Author Daniel Robbins   Author Chris Hous ...

  10. Gentoo Linux 2005.0 x86 手冊

    內容: 安裝 Gentoo 這個部份將帶領您進行 Gentoo 的安裝. 關於 Gentoo Linux 安裝步驟. 不熟悉 Gentoo 的使用者並不了解 Gentoo 的選擇. 使用 Univer ...

最新文章

  1. Error on line 19, column 16 of pubspec.yaml: Mapping values are not allowed here. Did you miss a co
  2. 《Android深度探索(卷1):HAL与驱动开发》——1.6节 Linux设备驱动
  3. m4a录音文件损坏修复_智慧输入再升级 搜狗输入法创新推出AI录音助手功能
  4. table中tr使用toggle不好,选择换一张方式
  5. 绝对强大的三个LINUX指令: AR, NM, OBJDUMP
  6. 腾讯 QQ 看点图文多目标推荐实践经验
  7. 全栈Python 必备库
  8. pcb中layer stack manager 中,右上角的layer pairs 、internal layer pairs和build-up,三者的区别?
  9. vc 控制台添加托盘显示_开源:ESP8266读DHT11温湿度,小程序实时显示
  10. [译]发布ABP v0.19包含Angular UI选项
  11. Microsoft caffe(caffe-windows) cifar实例编译之model的使用
  12. c++初学,计算立方体的体积和面积,并比较两个立方体是否相同:
  13. 汉字书写解码_汉字密码 | 500个字根即可解码10万个汉字,《说文解字》的神功...
  14. 51单片机c语言程序控制,51单片机C语言总结
  15. CKEDITOR富文本编辑器+AJAX+JQUERY+ListView综合应用
  16. 最大子列问题与分治算法
  17. 给机器人罗宾写一封英语回信_人教版5年级英语unit1知识
  18. iOS中相对1970的时间转换为现在时间
  19. python tkinter ttk的使用(上)
  20. python计算日期到天数_利用python计算时间差(返回天数)

热门文章

  1. 反向代理服务器域名解析
  2. 谈谈 .NET Reflector
  3. Mac ssh locahost Connection refused
  4. 饥荒联机版服务器控制台本地和在线,饥荒联机版控制台怎么打开_饥荒联机版控制台开启方法_牛游戏网...
  5. openssl 1.0.2 漏洞修复指南
  6. 难说 | 新读了几本书
  7. php 牛顿冷却定律,基于用户投票的排名算法(四):牛顿冷却定律
  8. U盘0字节,无法格式化,无法打开解决办法
  9. 企业遇到什么问题一定要用360评估?
  10. 计算机菜单命令后省略号,windows菜单命令项的右边有省略号…表 – 手机爱问