raj*_*raj 3 compiling debian mutt rpmbuild
我有一台装有 Debian 7 的机器(是的,我知道这个系统很旧,但现在我无法升级到较新的版本)。这个版本的存储库中有 mutt 版本 1.5.21,但我希望 mutt 至少为 2.0.7,因为我很快就需要此版本的 mutt 中引入的 OAuth2 支持(Gmail 正在撤销仅密码登录) IMAP)。
我假设 Debian 7 没有 mutt >= 2.0.7 的预构建向后移植包(至少我还没有找到任何 - 如果存在,请指出)。所以我必须从源代码编译。但我想保留上游源代码中特定于 Debian 的更改。我可以只获取为较新的 Debian 版本准备的源 RPM 并在我的系统上编译它吗?还是这不起作用?
从源代码构建 deb 包相对容易(请注意,您需要 DEB 源而不是 RPM),但需要小心库依赖性。新的 mutt 可能需要旧 Debian 安装所不可用的库版本。
从https://tracker.debian.org/pkg/mutt的包页面检查包要求。请注意版本控制的链接。“box”符号链接控制文件,其中列出了构建依赖项。
最新版本2.2.4-1需要
Build-Depends: debhelper-compat (= 12),
docbook-xml,
docbook-xsl,
gawk,
gettext,
libgnutls28-dev,
libgpgme11-dev,
libidn2-dev,
libkrb5-dev,
libncurses5-dev,
libncursesw5-dev,
libgsasl-dev,
libtokyocabinet-dev,
pkg-config,
w3m,
xsltproc,
zlib1g-dev
Run Code Online (Sandbox Code Playgroud)
请注意,其中一些包名称中包含版本号。它们适用于 Debian 7 吗?如果不是,这将是一场沿着构建依赖关系链递归迭代的噩梦,可能不值得。为 Debian 打包的下一个最旧版本是 2.0.5,不足以满足您的要求。
如果 Debian 7 确实有所需的库(libgnutls28-dev、libgpgme11-dev 等),那么下一步将是下载 orig tar 文件(上游源 tarball)、debian .dsc 文件和 debian diff文件 (.debian.tar.xz),均可从https://packages.debian.org/unstable/mutt的软件包页面获取。
如果您下载这 3 个文件(可能还有用于校验和的 orig.tar.gz.asc),那么您将使用以下命令解压
dpkg-source -x mutt_2.2.4-1.dsc
Run Code Online (Sandbox Code Playgroud)
(dpkg-source在dpkg-dev包装中)
然后 cd 进入源目录 (mutt-2.2.4)。如果所有构建依赖项均按顺序排列,您需要做的就是运行
dpkg-buildpackage
Run Code Online (Sandbox Code Playgroud)
.deb 二进制文件将在父目录中创建,您可以手动安装,
sudo dpkg -i mutt_2.2.4*.deb
Run Code Online (Sandbox Code Playgroud)
您可能会遇到构建依赖项中列出的所需库版本的问题。我预计它不会在 Debian 7 上运行(如果不重建整个库链,我认为这不值得付出努力)。
除此之外,您可能会遇到问题Build-Depends: debhelper-compat (= 12),这更容易处理。替换debhelper-compat (= 12)为并创建一个仅包含数字的debhelper (>= 9~) 文件。debian/compat9
为了更好地衡量,您需要创建自己的 debian/changelog 条目,以使用自己的版本号标记您的本地构建,您可以使用dch(debchange来自devscripts包)
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |