如何使用 Dpkg 将 *.deb 包安装到特定目录。

如何使用 Dpkg 将 *.deb 包安装到特定目录。

我必须从第三方安装两个软件包(libidb 和 python-idb,两者相互依赖)。因此,我们无法访问源代码。我尝试使用以下方法进行安装,但同样出现错误:

> > sumitkumars@administrator-Lenovo-U410:~$ sudo dpkg -i libidb-0.12.0-0b81d72-0.amd64.deb --instdir=/home/sumitkumars/mydir
> [sudo] password for sumitkumars:  (Reading database ... 186372 files
> and directories currently installed.) Preparing to unpack
> libidb-0.12.0-0b81d72-0.amd64.deb ... Unpacking libidb (0.12.0) over
> (0.12.0) ... dpkg: error processing archive
> --instdir=/home/sumitkumars/mydir (--install):  cannot access archive: No such file or directory Setting up libidb (0.12.0) ... Errors were
> encountered while processing:  --instdir=/home/sumitkumars/mydir

然后我尝试了这个:

sumitkumars@administrator-Lenovo-U410:~$ sudo dpkg-deb -x libidb-0.12.0-0b81d72-0.amd64.deb /home/sumitkumars/mydir/

它没有给出错误,但它没有与它的另一个依赖项(python-idb)一起工作

我还添加了 python,因为它无法与“libidb”绑定。

答案1

dpkg-deb -x $DEBFILE $TARGET_DIRECTORY

# Example 
dpkg-deb -x somedeb.deb /home/yung/test

来源

答案2

.deb 只是一个存档,就像一个 zip 文件

您可以手动提取它;https://www.cyberciti.biz/faq/how-to-extract-a-deb-file-without-opening-it-on-debian-or-ubuntu-linux/

sudo apt install binutils

ar x your.deb

然后提取 .tar 或 .deb 中的任何内容

tar xvf control.tar.gz
tar data.tar.gz

然后,您可以手动将文件复制到您希望的任何位置,我将使用 /usr/local,这样它们就在您的路径上,由您决定。

您可能还需要读取/运行配置文件并安装脚本,从您发布的内容中无法看出这一点。

答案3

在所有其他建议解压存档的答案中——这与安装不同!其中一个显着的区别是postinst使用时不会运行脚本-x。对原始发帖者问题的唯一令人满意的答案是这个选项,直接来自手册页:

       --instdir=dir
              Change default installation directory which refers to the
              directory where packages are to be installed. instdir is also the 
              directory passed to chroot(2) before running package's installation 
              scripts, which means that the scripts see instdir as a root
              directory.  (Defaults to «/»)

答案4

没有必要提取这两个包的包内容,只是因为它们互相依赖。

安装时只需同时提供两个包即可

dpkg -i libidb-0.12.0-0b81d72-0.amd64.deb python-idb-<version>.amd64.deb

相关内容