我如何修复一个糟糕的商业deb包?


Answers:


3

我自己回答这个问题,因为其他人可能会发现这些信息很有用。此问答的灵感来自于另一个问题:如何在Debian 64位Linux上安装Citrix ICA Client(Receiver)13?

  1. 创建临时目录并将.deb文件复制到该目录。
  2. 提取.deb文件:ar vx archive.deb
  3. 将出现三个文件:
    • debian-binary: 不要碰
    • control.tar.gz:用于安装和卸载的配置和脚本
      • 此文件可能具有不同的扩展名,具体取决于所使用的压缩格式。
    • data.tar.gz:要安装的文件
      • 此文件可能具有不同的扩展名,具体取决于所使用的压缩格式。

两个*.tar.gz文件可能有不同的扩展名,具体取决于使用的压缩格式 该.deb格式支持一些不同的。这两个*.tar.gz文件都是tarbombs,所以所有文件都会爆炸到同一个路径。最好创建一个临时目录,复制,然后提取。

文件control.tar.gz有两个适合黑客攻击的文件:

  • control:包含包依赖项列表。您可以添加/删除依赖项。
  • postinst:包含安装后脚本。您可以添加/删除命令。

*.tar.gz文件重新创建为:tar -czvf control.tar.gz *或(data.tar.gz

最后,创建一个新的存档。订单在这里非常重要:ar rv my_new_package.deb debian-binary control.tar.gz data.tar.gz

您可以使用以下命令尝试新包:

  • 卸载现有包: apt-get remove $package_name
    • ... $package_name包裹的名称在哪里,例如,icaclient
  • 安装新包: dpkg --install my_new_package.deb

参考:http//tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/


1
只需添加一些额外的信息,请注意,这个deb格式是实际等同于ar格式。如果你以这种方式手动打包deb,dpkg通常会很好用它,但其他一些重要的工具,如apt-ftparchive不会。如果可以的话,你最好打开包装dpkg-deb -R mypkg.deb tempdir并重新包装dpkg-deb -b tempdir
保罗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.