dpkg源码编译-Debian 打包入门更改

日志包含每个更改的作者、内容和时间等信息

控件包含包的名称、维护者和构建依赖项等信息

补丁目录包含包作者对上游代码所做的更改

在规则中是包的生成脚本

这些文件基本上是

DEB包,它们是我们将来要进行更改的包的主要部分。

首次成立

在浏览完包的整体结构后,我们可以尝试改进包,但在此之前,我们首先需要安装它需要的各种依赖dpkg源码编译,使用以下命令:

dpkg源码编译-Debian 打包入门更改

sudo apt build-dep node-pretty-ms

apt 会根据包控制文件中描述的依赖手动帮我们安装所需的依赖,下载安装完成后dpkg源码编译,使用 debuild 命令进行改进:

debuild -b -uc -us

命令运行后,可以在父目录中找到编译好的 deb 包。

修改源代码

当然,我们这次的目标不是按原样重新编译 deb 包,毕竟为什么不直接从服务器下载呢?我们要做的是对源代码进行更改并重新编译:

cd node-pretty-ms-7.0.1
vim index.js

dpkg源码编译-Debian 打包入门更改

拿其中之一

throw new TypeError('Expected a finite number');

修改为

throw new TypeError('Expected a finite number!');

保存并退出,并使用以下命令编译日志

dch -i -Dunstable

这里的不稳定是指软件分发渠道,由于我们不是官方维护者,我们所做的更改会增加 * 默认为非维护者上传

编写更新日志后,您可以使用以下命令退出编辑器并生成补丁:

dpkg-source -b . --commit

输入补丁名称并确认此命令也会将我们之前的更改保存到 debian/patches 目录,并在编译源代码时手动应用它们。

进行上述更改后,使用以下命令重新生成 DSC 源代码

dpkg-source -b .

dpkg源码编译-Debian 打包入门更改

返回

父目录再次,你可以看到新生成的 .DSC 和 debian.tar.xz 文件,这些是带有我们之前更改的新 deb 包,要重新编译,只需返回源子目录并重新输入:

debuild -b -uc -us

让我们坐下来等待收拾袋子!

高级方法

直接使用前面的形式编译其实很方便,但是当我们大规模打包的时候,就会出现问题:不同的 pack 有不同的依赖,重复安装不仅特别麻烦,有时还可能导致依赖估计错误——明显不需要依赖的包变成了必要的依赖, 这样你打的包可以在本地机器上正常工作,但可以放在别人的机器上,但不能正常编译和安装。这给 pbuilder 和 sbuild 带来了:这些工具可以帮助我们构建一个隔离的环境,比如 chroot 或 docker,但对打包进行了更具体的优化,如下面的 pbuilder 所示。

要安装 pbuilder,只需在终端中输入以下命令:

sudo apt install pbuilder

安装完成后,使用以下命令创建编译环境

sudo pbuilder create

这一步会为我们配置一个完整的环境,供我们以后编译,等待创建完成,运行以下命令完成编译

pbuilder build node-pretty-ms_7.0.1-1.dsc

这是一个关于 deb 打包的简短教程,pbuilder 的更高级用法正在等待读者进一步挖掘。

参考文章:

背景

看看ElasticSearch的源代码,

我下载了 ElasticSearch 的 6.3 和 6.8 版本,使用了三个版本的 gradle,但没有成功编译。

ElasticSearch 和 Gradle 之间的版本对应关系到底是什么?我在 ElasticSearch 源代码包的文档中找到了答案。

确定分级版本

如何确定 ElasticSearch 和 gradle 的版本?查看源文档,我发现有一个命令。

在提交您的更改之前,运行测试套件以确保

Nothingisbroken,with:sh./gradlewcheck

我把它敲掉了,找到了版本之间的对应关系。

下载相应版本的 Gradle

Gradle 的双补包,直接解压并将 bin 目录设置为环境变量。要编译 ElasticSearch 6.3 的实现,需要 gradle 4.5。

dpkg源码编译-Debian 打包入门更改

进入源代码对应的目录,执行命令 gradleidea:

编译失败,由于JDK版本不一致,重新下载JDK 1.10并重新编译。

dpkg源码编译-Debian 打包入门更改

总结

在执行 gradleidea 命令时,如果网络不好,在解决单个依赖包时会出现编译因请求超时而导致编译失败的问题,解决方案是多次执行命令才能成功。

下载JDK时需要注册Oracle账号,但账号登录在Edge浏览器下存在表单不兼容问题,导致下载操作无响应,建议下载前使用Microsoft浏览器登录Oracle账号。

启示

明天我听了一本书《弹性思维》,我想了一会儿,找到gradle和ES版本对应关系的过程,是大脑弹性思维的结果。我以为 ES 源代码和 gradle 之间的对应关系可以在互联网上找到,但不幸的是,我找不到它。

和格拉德尔

而且ES版本改得太快了,三级下一一试还是行不通,不是一个好办法。所以从 ES 源代码中的文档开始elasticsearch源码编译,找到有 DISTISTRIBUTION.md 文档,在文档中找到与 gradle 相关的命令,参见 gradlecheck 并尝试,宾果游戏,解决问题!编译过程失败时,一眼看异常

消息就是读取超时等网络超时,当我认为编译Tomcat时maven依赖包下载也失败时,我再执行一次。

最后,我想感叹,异常信息确实是一件好事elasticsearch源码编译,好的日志可以让人反思如何解决问题,所以在项目开发中使用好的日志非常重要!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 dpkg源码编译-Debian 打包入门更改 https://www.wkzy.net/game/134312.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务