我有一个 debian 软件包文件 (.deb),缺少一个关键库。我不知道创建 debian 包的细节。是否可以只将这个库文件添加到 debian 包中?
如果在已安装的系统中复制该特定库文件有效,那么如果将该库插入到您的私有 deb 包中,它也应该有效。
\n\ndebian 包文件只不过是一些文件的存档,其中包含有关这些文件的元数据以及在系统上复制文件时执行的一些(可选)脚本/。
可以说,你的系统/usr/lib是这样的,没有缺少库,necessary-lib.so
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 usr\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib \n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib1.so\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib2.so\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 <missing lib necessary-lib.so> \n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib3.so\nRun Code Online (Sandbox Code Playgroud)\n\n并将库文件复制到/usr/lib/工作中。
然后您可以提取deb文件并将库文件放入usr/lib提取文件的目录中并重新打包。
如何注入库
\n\n首先创建一个文件夹来提取deb文件
\n\nmkdir extracted\nRun Code Online (Sandbox Code Playgroud)\n\n然后提取您的 deb 文件。我假设它的名字是mypackage.deb.
dpkg-deb -R mypackage.deb extracted/\nRun Code Online (Sandbox Code Playgroud)\n\n这会将包解压到extracted文件夹中。将有一个文件夹DEBIAN以其他一些文件夹命名,例如/. 您应该在那里找到一个usr文件夹,并在其中找到一个lib文件夹。您可以将库文件复制到那里。
理论上,您将库文件复制到提取的文件夹的同一位置,假设它是系统的根目录。所以,你将其复制到extracted/usr/lib
cp necessary-lib.so extracted/usr/lib\nRun Code Online (Sandbox Code Playgroud)\n\n现在,使用此命令重新构建 deb 包。
\n\ndpkg-deb -b extracted\nRun Code Online (Sandbox Code Playgroud)\n\n它将创建一个新extracted.deb文件。这是您的新 deb 文件。您现在应该能够将其安装在多个系统上,而无需每次安装后都复制库文件。
| 归档时间: |
|
| 查看次数: |
4405 次 |
| 最近记录: |