我目前所做的
- 我从 ubuntu-repositories 下载了官方 deb 包的源代码。
- 我打了一个补丁。
- 运行 configure 并成功制作。
- 测试了该程序。
我想做什么
- 我想使用旧包中的所有信息(依赖项等)创建一个 deb 包。
我的问题是(它们密切相关)
- 有没有一种简单(=大部分自动化)的方法来做到这一点?
- 我可以将二进制文件复制到旧的 deb 文件中吗?
- 一旦原始软件包在存储库中更新,我的更改会被覆盖吗?
- 如果是的话,该如何避免呢?
- 有没有办法将其标记为满足原始包的所有“传入”依赖项的“替代”版本?
附加信息
- 我运行的是 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
答案4
好吧,归根结底还是要重新编译。如果您不想要完整的 Debian 批准的软件包创建环境(正确的方法),我倾向于使用 checkinstall 进行快速而粗糙的软件包创建(简单的方法) - 这不是 Debian 推荐的方法,但它比其他方法简单得多。configure 然后 make,用 checkinstall 替换 makeinstall。然后使用 sudo dpkg -i 安装您的新软件包