如何修改 deb 包?

如何修改 deb 包?

我目前所做的

  • 我从 ubuntu-repositories 下载了官方 deb 包的源代码。
  • 我打了一个补丁。
  • 运行 configure 并成功制作。
  • 测试了该程序。

我想做什么

  • 我想使用旧包中的所有信息(依赖项等)创建一个 deb 包。

我的问题是(它们密切相关)

  1. 有没有一种简单(=大部分自动化)的方法来做到这一点?
  2. 我可以将二进制文件复制到旧的 deb 文件中吗?
  3. 一旦原始软件包在存储库中更新,我的更改会被覆盖吗?
  4. 如果是的话,该如何避免呢?
  5. 有没有办法将其标记为满足原始包的所有“传入”依赖项的“替代”版本?

附加信息

  • 我运行的是 Ubuntu 9.04,32 位,目前我不关心其他的 archs/版本。
  • 有问题的软件包是 compiz-gnome。
  • 变化很小,并且不会增加任何依赖项。

答案1

我在 Ubuntu 论坛上找到了以下重建网络管理器包的指南这里

回复:如何修补 deb 源

引用:最初由 cord 发表

我想用某种自定义补丁重新构建网络管理器包来测试一些东西。所以我想:1. 获取 ubuntu“版本”网络管理器的源代码

代码:

sudo apt-get source network-manager

引用:2. 使用我的补丁程序对其进行修补源文件将下载到工作目录中。请参阅了解更多信息。

引用:3. 制作一个 deb 文件,我可以用它来代替当前的网络管理器进行安装。

执行代码:

dpkg-buildpackage -rfakeroot -uc -b
在创建的目录中。

还发现了这篇文章:Debian 新维护者指南 第六章 - 构建软件包


至于你的更改是否会因官方存储库的更新而丢失,我不确定。你总是可以将你的补丁发送回上游 compiz-gnome包裹 维护者或者创建自己的存储库获取更新后的软件包。

答案2

我使用的程序如下:

获取源代码(通过 apt-get src)。

应用补丁,或进行任何需要更改的操作。

运行debchange --nmu并输入您所做更改的描述。这将自动增加版本号,这样系统就不会尝试将您的自定义包“升级”回标准包。

跑步debuild

享受你的 deb 文件。

答案3

如果你从官方网站下载源代码,那么应该可以通过 apt 获得软件包本身。因此,你只需下载现成的软件包,修改它并再次打包:

apt-get download your_package
dpkg -x your_package_vesion.deb your_package_folder/
... making changes in your_package_folder/ ...
# extract all needed controles/scripts from existing deb to new
dpkg -e your_package_vesion.deb your_package_folder/DEBIAN
dpkg -b your_package_folder/ new_package_vesion.deb

详细信息来源:http://sysadm.pp.ua/linux/deb-creation-edit.html

答案4

好吧,归根结底还是要重新编译。如果您不想要完整的 Debian 批准的软件包创建环境(正确的方法),我倾向于使用 checkinstall 进行快速而粗糙的软件包创建(简单的方法) - 这不是 Debian 推荐的方法,但它比其他方法简单得多。configure 然后 make,用 checkinstall 替换 makeinstall。然后使用 sudo dpkg -i 安装您的新软件包

相关内容