/usr/bin/env: python3.3: нет такого файла или каталога внутри chroot

#python #linux #python-3.x

#python #linux #python-3.x

Вопрос:

 chroot --userspec 1000:1000 /var/lib/broot/sugar-build-3xlQJ /usr/bin/env -i 
PATH=/bin:  /usr/bin:/usr/sbin BROOT=yes XAUTHORITY=/home/broot/.Xauthority 
DISPLAY=:0 HOME=/home/broot LANG=C TERM=xterm-256color  
/bin/bash -lc "/home/broot/sugar-build/osbuild build"
 

кто-нибудь может объяснить приведенную выше команду, потому что ошибка, похоже, заключается только в этом. Я знаю, что в основном делает chroot, поэтому проблема, похоже, в том, что модуль python3.3 не находится в тюрьме chroot. итак, если это проблема, как я могу получить модуль python3.3 внутри тюрьмы chroot.
Кстати, я переношу некоторые модули с python2.7 на python3.3, и приведенная выше команда взята из этих модулей, и она работала в python2.7.

Комментарии:

1. Находятся ли файлы в пути python3.3? Хорошее место для их размещения / проверки находится в папке site-packages .

2. @MrAlias Какие файлы?

3. Изначально мне было интересно, какие модули вы пытаетесь перенести, но по вашему ответу мне теперь интересно, установлен ли у вас python3.3 под новым chroot?

4. я думаю, что это проблема. У меня нет python3.3, установленного в новом chroot. Как я могу это сделать?

5. Я предполагаю, что вы используете Mac, поэтому сначала позвольте мне сказать «удачи». Вероятно, вам нужно выполнить chroot в корневой каталог (не пытаясь запустить скрипт), а затем установить python3.3

Ответ №1:

Когда вы создаете среду chroot, все, что вам нужно, должно быть скопировано из вашей установки.

Допустим, ваша среда chroot запускается в /var/chroot .

Допустим, далее, что вы хотите иметь возможность запускать «ls» (у вас нет, если вам никогда не нужно иметь возможность запускать «ls», но допустим, у вас есть). Сначала вы должны скопировать /bin/ls в /var/chroot/bin/ls . Теперь для запуска «/bin/ls» требуется несколько файлов библиотеки.
Допустим, вы обнаружили, что один из них называется /lib64/libcap.so . Это означает, что вам нужно скопировать /lib/libcap.so в /var/chroot/lib64/libcap.так что в противном случае ваш /var/chroot/bin/ls НЕ будет запущен. Вы делаете это для всех библиотек, которые требуются «ls».

После всего, что сделано, вы можете выполнить chroot в /var/chroot, и, вуаля, ваш «ls» теперь выполняется.

Та же идея с любыми другими командами, будь то системные команды, такие как «ls», или компиляторы / интерпретаторы, такие как python.

Комментарии:

1. эй, я также думаю, что именно так работает chroot, но что меня смущает, так это то, что команда, которую я упомянул в своем посте, является единственной командой, связанной с chroot, и они явно не установили python2.7 или что-то еще, но он все еще мог запускать файлы python2.7, но теперь он не может запустите файлы python3.3. я что-то здесь упускаю?