分类 标签 存档 黑客派 订阅 搜索

Ubuntu 下重新打包预编译安装的 PHP

1221 浏览0 评论

起因

写这篇文章的起因是要安装Swoole,而它又依赖php_sockets扩展,因为我是通过apt安装的php7.2,没办法直接重新编译,所以就找到了方法,这里记录一下。

依赖

  1. Ubuntu/Debian的打包工具

sudo apt install devscripts

  1. 重新打包PHP7.2需要的依赖

sudo apt build-dep php7.2

  1. 下载源码

sudo apt source php7.2

这里要注意一点,Ubuntu默认不打开deb-src段,也就是默认情况下你在apt-get source下是找不到任何东西的。所以需要在/etc/apt/sources.list中删除相应的deb-src的注释。然后执行sudo apt update更新本地缓存。

更改配置

今天终于知道为什么很多流行的项目源码目录下总是有一个debian目录了,原来是给Debian打包用的配置。所以给PHP打包也不例外,这里就不说具体怎么修改了,因为如果自己编译过PHP,很容易就能找到需要修改哪里。

更新版本号

这个步骤是可选的,简单说就是你更新了这个包,如果你要发布它,那它肯定不能和当前已经发布的包同名。
做法是执行dch -i,这样就会把版本号的最后一位加1。例如当前版本是7.2.5-0ubuntu0.18.04.1, 执行之后就是7.2.5-0ubuntu0.18.04.2,当然这时会打开一个交互界面让你填一些类似git commit时的Message。

重新打包

这一步很简单,就是执行一下debuild。我试了一下在源码根目录或者在debian目录下都是没问题的。应该是脚本做了容错处理。

值得注意的是,不能用sudo执行debuild,该命令默认使用fakeroot执行。而且你可以指定DEB_BUILD_OPTIONS=nocheck来跳过编译选项的检查,我觉得还是稳妥一些好,所以就不加任何选项的执行了。

打包完成

打包完成之后会生成*.deb包。看到它你一定知道下一步怎么做了。

安装新包

其实我从执行debuild开始写这篇记录,到现在它还没有执行完。

sudo dpkg -i 7.2.5-0ubuntu0.18.04.2.deb

后记

这篇记录看起来是为了重新打包预编译的包,以自定义一些编译选项,其实本质上就是一个包的maintainer的工作过程,只不过这里少了发布过程。这里是处理PHP的包,读者们也可以举一反三,根据自己的需求定制一些别的包。

评论  
留下你的脚步
推荐阅读