如何从独立系统的 deb 安装程序中删除依赖项?

如何从独立系统的 deb 安装程序中删除依赖项?

我为在 Qt 中创建的应用程序创建了一个 deb 包。我已包含该应用程序所依赖的所有库,这些库将安装在应用程序本身旁边的文件夹中:

/usr/share/MyCompany/MyProduct/executable
/usr/share/MyCompany/MyProduct/Frameworks

然后导出LD_LIBRARY_PATH指向Frameworks目录。

一切都很完美...直到我必须添加 QT Assistant,因为它需要额外的库。

检查了 Qt Assistant 的依赖项后,我在同一目录中添加了所有必需的库,包括libQtHelp.so.4和。libQtWebKit.so.4

我的 deb 非常简单,我创建所需的结构,然后设置“安装”将我的文件复制到目标目录。

blah_1/* /usr/share/MyCompany/MyProduct/

为了创建包,我创建了 tar,然后

dh_make --copyright gpl -f ../blah-1.0.tar.gz 
dpkg-buildpackage -rfakeroot [email protected]

在干净的(无 Qt)系统上运行安装程序时,我收到依赖性错误:

me:~$ sudo dpkg -i /path/blah_1.0-1_i386.deb 

Selecting previously unselected package blah.
(Reading database ... 141841 files and directories currently installed.)
Unpacking blah (from .../blah_1.0-1_i386.deb) ...
dpkg: dependency problems prevent configuration of blah:
 blah depends on libqt4-help (>= 4:4.8.0); however:
  Package libqt4-help is not installed.
 blah depends on libqtwebkit4 (>= 2.2~2011week36); however:
  Package libqtwebkit4 is not installed.
dpkg: error processing blah (--install):
 dependency problems - leaving unconfigured
Processing triggers for shared-mime-info ...
Processing triggers for desktop-file-utils ...
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for gnome-menus ...
Errors were encountered while processing:
 blah

不幸的是,我正在安装的系统没有(并且不会有)互联网访问。如何在同一个 deb 安装程序中提供所需的软件包?

或者,由于我提供了所需的库,如何禁用依赖项检查?

(如果相关的话,Ubuntu 12.04)

更新:我跑了

sudo dpkg -i --ignore-depends=libqt4-help,libqtwebkit4 /path/blah_1.0-1_i386.deb 

该程序安装正确并且运行完美。

在包中,/DEBIAN/control我看到列出了不需要的依赖项。

调用 dh_make 之后,控制文件中不再存在依赖项。

dpkg-buildpackage 必须在检查后放置依赖项(可能适用于助手)。

我可以以某种方式删除它们吗? 我可以在某处放置一个标志以不包括依赖项吗?

或者...仍然...我可以在打包文件中添加 deb 包吗?是否有一个命令可以作为包安装的一部分进行预安装?

如果没有解决方案....我想我可以提供一个脚本来运行上述 dpkg 命令,并使用 ignore-depends,但是这样就无法从软件中心安装该软件包...

答案1

根据man dpkg-source

-Dfield=value
      Override or add an output control file field.

来自man dpkg-buildpackage

--source-option=opt
      Pass option opt to dpkg-source.

因此也许你可以Depends这样覆盖该字段:

dpkg-buildpackage --source-option='-DDepends=...' ...

相关内容