我有一个 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 文件。您现在应该能够在多个系统上安装它,而不必每次安装后都复制库文件。