我必须.deb
在子目录中安装一些软件包,即/opt/corbos-linux/2.4.4/sysroots/x86_64-pokysdk-linux/
。此文件夹应用作新的根目录。我尝试使用以下方法安装这些软件包
dpkg --root=/opt/corbos-linux/2.4.4/sysroots/x86_64-pokysdk-linux/ -i *.deb
但出现了这个错误:
dpkg: error: unable to access dpkg status area: No such file or directory
如果我给
dpkg --instdir=/opt/corbos-linux/2.4.4/sysroots/x86_64-pokysdk-linux/ -i *.deb
大多数软件包都会出现此错误:
dpkg (subprocess): admindir must be inside instdir for dpkg to work properly
一些额外的信息:所有命令都以 root 权限执行,并在包含.deb
包的文件夹中执行(请注意,如果我只是运行dpkg -i *.deb
,例如,,/home/folder_containing_debs
包安装正确,但不在我想要的位置)。操作系统是 Ubuntu 16.04.6 LTS(x86-64 架构)
答案1
你可能在找这个:
dpkg-deb -x $YourDebFile $TARGET_DIRECTORY
# Example
dpkg-deb -x <file_name>.deb /opt/corbos-linux/2.4.4/sysroots/x86_64-pokysdk-linux/
更新: --- 您可以使用简单的命令行循环安装所有“.deb”包。
例如,这是您当前的“文件和文件夹”并且您要将所有这些.deb
文件安装到/home/username/testing/
目录中:
some_deb_file.deb
another_file.deb
other/
testing/
为此,您可以运行以下命令:
ls -1 | grep [.]deb >> all_debs.txt
cat all_debs.txt | while read fn; do dpkg-deb -x $fn /home/username/testing; done
rm all_debs.txt
代码解释:
- 我们创建一个文件,其中
all_debs.txt
包含所有文件名。.deb
在我们的案例中,文件看起来如下: 注意:如果您的一个包依赖于另一个包,那么您可以编辑此文件并根据需要排列文件名。
some_deb_file.deb
another_file.deb
- 我们在文件内部循环,取行(“文件名”),并利用结构进行安装
dpkg-deb -x <file_name> <path>
。 - 删除我们一开始创建的文件。
书呆子的一行代码:):
ls -1 | grep [.]deb >> all_debs.txt && cat all_debs.txt | while read fn; do dpkg-deb -x $fn /home/username/testing; done && rm all_debs.txt
希望对你有帮助!祝你有个愉快的一天!:D
答案2
一行代码即可在一个文件夹中安装多个 deps:
ls -1 *.deb | xargs -i sudo dpkg-deb -x {} /path/to/folder
ls 将列出 deb 包,xargs 循环遍历列表并执行 dpkg-deb 命令,用列表中的文件名替换 {}