Как установить пакеты .deb в пользовательскую папку, отличную от root (/) с использованием dpkg?

Я должен установить несколько пакетов .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_conisting_debs , пакеты установлены правильно, но не в том месте, которое я хочу). Операционная система - Ubuntu 16.04.6 LTS (архитектура x86-64)

1
задан 20 July 2020 в 15:56

1 ответ

You probably looking for this:

dpkg-deb -x $YourDebFile $TARGET_DIRECTORY

# Example 
dpkg-deb -x <file_name>.deb /opt/corbos-linux/2.4.4/sysroots/x86_64-pokysdk-linux/

Found Here


Update: --- Вы можете установить все пакеты `.deb` с помощью простого цикла командной строки.

For Example, this is your current "files and folders" and you want to install all these .deb files to /home/username/testing/ directory:

some_deb_file.deb
another_file.deb
other/
testing/

For this you can run these commands:

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

Code Explanation:


  1. We create all_debs.txt file with all .deb file names inside it. In our case file will look like this: NOTE: If your one package depends on another one, then you can edit this file and order the file names as you want.
some_deb_file.deb
another_file.deb
  1. We loop inside file, taking line ("file name"), and installing it using dpkg-deb -x structure.
  2. Deleting file that we created at the beginning.

One line code for nerds :) :

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

Hope it helps! Have a great day! :D

1
ответ дан 30 July 2020 в 22:05

Другие вопросы по тегам:

Похожие вопросы: