2015-05-11 1 views
6

Я использую коробку Gentoo, и я хочу создать среду chroot на основе Debian без использования учетной записи root или sudo.Ошибка Gentoo + debootstrap при использовании с fakeroot и fakechroot

Это представляется возможным с помощью таких инструментов, как fakeroot и fakechroot, но до сих пор я не имел никакого успеха с ними. Вот команда, которую я использую для Precise:

fakeroot fakechroot /usr/sbin/debootstrap --variant=fakechroot precise ./precise http://archive.ubuntu.com/ubuntu/ 

Он всегда терпит неудачу с такой же ошибкой:

I: Installing core packages... 
W: Failure trying to run: chroot precise dpkg --force-depends --install /var/cache/apt/archives/base-passwd_3.5.24_amd64.deb 
W: See precise/debootstrap/debootstrap.log for details 

И содержание debootstrap.log являются:

dpkg: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory 

Я понятия не имею, почему SELinux втягивается и почему он неправильно обрабатывает эту зависимость. Кроме того, я попытался построить Визе и Джесси. Такая же ошибка.

Что происходит? Версии:

debootstrap-1.0.67

fakeroot-1.19

fakechroot-2.17.2

kernel-3.19.6

+0

Я не вижу, как fakeroot помогает вам здесь. Чтобы быть ясным, где вы пытаетесь установить свой chroot? И почему вы хотите сделать это без использования root? –

+0

chroot не запускается без fakeroot (учетная запись без учетной записи root). Я следую некоторым учебникам, но это не работает в моей среде. И я хотел бы настроить настраиваемые среды сборки, не предоставляя пользователю дополнительные привилегии. Docker может использоваться, но он имеет те же проблемы (или больше), когда вы пытаетесь использовать его как обычного пользователя. – ivarec

ответ

1

fakeroot и fakechroot не являются проблемой здесь. Похоже, libselinux.so.1 использовался, когда dpkg был изначально построен. Сначала попробуйте выполнить команду локации:

locate libselinux 

без версии. Это должно 1) подтвердить, что он действительно не существует, или 2) что он существует, но не в вашем пути LD_LIBRARY_PATH или пути библиотеки по умолчанию.

Если локация отображает другую версию, используйте команду ln -s для создания символической ссылки (libselinux.so.1), указывающей на существующую версию.

Чтобы увидеть зависимость, запустите:

ldd `which dpkg` 
+0

Он работает как root, но не как обычный пользователь с fakeroot и fakechroot. Это не вопрос. – ivarec

+0

OK. Когда он терпит неудачу, библиотека не найдена. Я уверен, что путь поиска отличается для root, который преуспевает, чем путь поиска, используемый для fakeroot. У вас есть страт, чтобы показать вам все, что было обследовано? Он показывает каждый путь, даже если он не находится в LD_LIBRARY_PATH. – donjuedo

Смежные вопросы