源码编译为deb包
文章目录
先说明该文章内容是在Linux系统的Debian流派下进行的,也就是使用dpkg和apt来管理包。
命令都没考虑权限问题,提示权限不够,自己加sudo。
平时在Linux安装软件,如果不追求新版本,一般都直接apt-get install packagename
来进行
安装。但有时需要对这个软件源码进行更改来实现某个特别的功能。这种时候一般情况,我会去官网下
载源码然后修改代码后编译安装。这段时间发现了另外一种的方法,用起来会更简单,缺点就是软件
版本只能使用源里面的版本。方法就是使用apt-get来下载源码包,下面说说这种方法。
apt-get除了直接安装软件,还可以下载源码包。 通过修改源码包再生成deb包,然后安装deb包就能
很轻松实现修改代码并安装的需求,而且安装依赖和编译还是一个命令搞的定那种,非常方便。
下面开始一步一步的说明过程,我以安装samba为例。
下载源码
要下载deb的源码包,首先要确保源列表中有deb-src的源列表项,这是下载deb源码包必须的, 要注意有些源为了更新列表快速,会把deb-src的项注释掉。下面是网易源Debian8的例子:
|
|
添加好源后需要执行apt-get update
来更新源数据到本地。更新成功后,如果知道软件名,那直接
执行如下命令即可下载deb包:
|
|
如果不知道准确的包名,可以通过如下命令搜索源中都有哪些软件包,命令如下:
|
|
这个命令可以列出所有包含samba字符串的软件包,配合grep做一下筛选效果更佳
安装依赖
apt的安装依赖这个是真的方便,以前我进行源码编译都是configure提示缺什么装什么,还要去找 对应的包名,或者到处找文档这个源码编译都依赖啥。而使用deb源码包,只需下面一句命令就可以 把需要的编译依赖全装上,命令如下:
|
|
其实即使是直接下载官方源码进行编译,我觉得也可以先执行一下这个命令,依赖基本都能解决掉, 剩下不行的再慢慢再装上这样会更简单。
修改源码并制作补丁
如果只是想deb包源码编译而不修改源码,那可以直接看下一节。
创建补丁我用了一个命令quilt来帮助我完成,但这并不是唯一的方法,因为好明显这个命令也是
封装了一些diff之类的方法来实现的,所以按道理用其它命令也能弄出补丁。
如果没有quilt命令的话,先用如下命令安装:
|
|
quilt默认会使用源码目录下的debian/patchs作为补丁目录,可以通过设置QUILT_PATCHES
环境变量来修改。
我们先使用命令把现有的补丁都打上,命令如下:
|
|
现在可以创建输入自己的补丁,先创建一个补丁文件,命令如下:
|
|
创建补丁后,把需要修改的代码添加进quilt中:
|
|
然后对xxx.c进行需要的修改,刷新补丁记录:
|
|
刷新后打开debian/patchs/1_test.patch文件就可以看到我们做的修改
编译并生成deb包
上面的都弄好后,生成deb就简单了,直接下面的命令就可以完成编译到生成deb包的整套工作:
|
|
命令成功执行后,deb包会在源码包的上一级目录中
安装
转到deb包所在目录,使用下面命令全部安装即可:
|
|
参考
文章作者 hao
上次更新 2020-04-30