2015-05-11 12 views
6

Utilizzo una casella Gentoo e voglio creare ambienti chroot basati su Debian senza utilizzare l'account root o sudo.Errore Gentoo + debootstrap in caso di utilizzo con fakeroot e fakechroot

Questo sembra essere possibile utilizzando strumenti come fakeroot e fakechroot, ma finora non ho avuto alcun successo con loro. Ecco il comando che sto usando per Precise:

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

Non riesce sempre con lo stesso errore:

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 

E il contenuto di debootstrap.log sono:

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

Non ho idea del perché SELinux sia stato estratto e perché non gestisca correttamente questa dipendenza. Inoltre, ho provato a costruire anche Wheezy e Jessie. Lo stesso errore.

Cosa sta succedendo? Versioni:

debootstrap-1.0.67

fakeroot-1.19

fakechroot-2.17.2

kernel-3.19.6

+0

Io non vedo come fakeroot ti aiuta qui. Per essere chiari, dove stai cercando di installare il tuo chroot? E perché vuoi farlo senza usare root? –

+0

chroot non verrà avviato senza fakeroot (account non root). Sto seguendo alcuni tutorial, ma non funziona sul mio ambiente. E mi piacerebbe configurare ambienti di build personalizzati senza dover concedere privilegi extra all'utente. È possibile utilizzare Docker, ma presenta gli stessi problemi (o più) quando si tenta di utilizzarlo come utente normale. – ivarec

risposta

1

fakeroot e fakechroot non sono il problema qui. Sembra che libselinux.so.1 sia stato usato quando originariamente era stato creato dpkg. Innanzitutto, prova il comando locate:

locate libselinux 

senza la versione. Questo dovrebbe 1) confermare che non esiste realmente, o 2) che esiste, ma non nel tuo $ LD_LIBRARY_PATH o percorso di ricerca della libreria di default.

Se locate mostra un'altra versione, utilizzare il comando ln -s per creare il collegamento simbolico (libselinux.so.1) che punta alla versione esistente che si ha.

Per vedere la dipendenza, eseguire:

ldd `which dpkg` 
+0

Funziona come root, ma non come un utente normale con fakeroot e fakechroot. Non è questo il punto della domanda. – ivarec

+0

OK. Quando fallisce, la libreria non viene trovata. Sto scommettendo che il percorso di ricerca è diverso per root, che ha successo, rispetto al percorso di ricerca in uso per fakeroot. Hai difficoltà a mostrarti tutto ciò che è stato esaminato? Mostra ogni percorso tentato, anche quando non è in LD_LIBRARY_PATH. – donjuedo

Problemi correlati