将库文件添加到已经存在的 debian 包文件 .deb

将库文件添加到已经存在的 debian 包文件 .deb

我有一个 debian 软件包文件 (.deb),缺少一个关键库。我不知道创建 debian 软件包的具体细节。是否可以只将这个库文件添加到 debian 软件包中?

答案1

如果在您安装的系统中复制该特定的库文件有效,那么将该库插入到您的私有 deb 包中也应该有效。

Debian 软件包文件不过是一些文件的存档,其中包含有关这些文件的元数据和一些在系统上复制文件时执行的(可选)脚本/

假设你的系统/usr/lib没有缺少库,necessary-lib.so

├── usr
│   ├── lib 
│   │   ├── lib1.so
│   │   ├── lib2.so
│   │   ├── <missing lib necessary-lib.so> 
│   │   ├── lib3.so

并复制已工作的库文件/usr/lib/

然后就可以解压deb文件,并将库文件放在usr/lib解压文件的目录中,然后重新打包。

如何注入库

首先创建一个文件夹来提取 deb 文件

mkdir extracted

然后提取你的 deb 文件。我假设它的名字是mypackage.deb

dpkg-deb -R mypackage.deb extracted/

这将提取文件夹中的包extracted。将有一个文件夹,DEBIAN其中包含一些其他文件夹,如 中的文件夹/。您应该usr在那里找到一个文件夹,并在该lib文件夹中找到一个文件夹。您可以将库文件复制到那里。

理论上,您将把库文件复制到提取文件夹的同一位置,假设它是系统的根目录。因此,您将把它复制到extracted/usr/lib

cp necessary-lib.so extracted/usr/lib

现在,使用此命令重新构建 deb 包。

dpkg-deb -b extracted

它将创建一个新extracted.deb文件。这是您的新 deb 文件。您现在应该能够在多个系统上安装它,而不必每次安装后都复制库文件。

相关内容