Perché non c'è nsenter in util-linux?

20

Uso frequentemente il comando nsenter per i miei scopi nel mio sistema principale su Arch Linux. Ora devo lavorare su Ubuntu per testare le mie app su di esso, ma non c'è nsenter in util-linux. Forse è un pacchetto separato?

UPD. Ok, ho controllato che la versione di util-linux in Ubuntu sia ancora molto più vecchia della 2.23. Come posso installare una nuova versione del pacchetto senza problemi successivi su Ubuntu?

    
posta zerospiel 25.03.2014 - 17:02

3 risposte

18

Aggiorna :

A partire dal 14.10, il util-linux fornisce il comando nsenter . La soluzione seguente è stata testata con 14.04.

La versione Debian / Ubuntu è come hai detto abbastanza vecchia ora, anche in Trusty.

C'è un bug aperto e finora nessun progresso purtroppo.

Potresti provare a crearlo dal sorgente:

wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.1.tar.gz -qO - | tar -xz -C ~/Downloads

Assicurati di installare le seguenti dipendenze di build:

sudo apt-get install libncurses5-dev libslang2-dev gettext zlib1g-dev libselinux1-dev debhelper lsb-release pkg-config po-debconf autoconf automake autopoint libtool

Esegui semplicemente nella directory sorgente ( ~/Downloads/util-linux-2.24.1 ):

./autogen.sh

./configure && make

Importante

Fai NON sudo make install questo pacchetto su Ubuntu 14.04 LTS finché non è ufficialmente pronto per l'uso, poiché richiede sicuramente una versione non disponibile di libmount , rompendo il tuo avvio. (Se si esegue questa operazione, reinstallare il pacchetto mount prima di riavviare il computer, se possibile.)

Crediti: Trevor Alexander per il suo commento .

Finalmente avrai:

[email protected]:~/Downloads/util-linux-2.24.1$ ./nsenter -V
nsenter from util-linux 2.24.1

Nota : poiché nsenter non è disponibile nella versione ubuntu util-linux, puoi installare solo questo file in / usr / bin (o sbin):

sudo cp ./nsenter /usr/bin
    
risposta data Sylvain Pineau 25.03.2014 - 17:44
11

Se si utilizza la finestra mobile, è possibile installare nsenter in un contenitore e quindi copiare il comando nsenter sull'host.

Dal mio succo: link

# Ubuntu 14.04 don't have nsenter - the straight forward way required me to install build tools and etc.
# I preferred to keep the system clean and install nsenter in a container and then copy the command to the host
# Note - its also possible to run nsenter from a container (didn't tried) https://github.com/jpetazzo/nsenter

# start a container
docker run --name nsenter -it ubuntu:14.04 bash

## in the docker
apt-get update
apt-get install git build-essential libncurses5-dev libslang2-dev gettext zlib1g-dev libselinux1-dev debhelper lsb-release pkg-config po-debconf autoconf automake autopoint libtool

git clone git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git util-linux
cd util-linux/

./autogen.sh
./configure --without-python --disable-all-programs --enable-nsenter
make

## from different shell - on the host
docker cp nsenter:/util-linux/nsenter /usr/local/bin/
docker cp nsenter:/util-linux/bash-completion/nsenter /etc/bash_completion.d/nsenter
    
risposta data michaelbn 25.08.2014 - 14:53
0

A partire da Docker 1.3 puoi usare exec Docker per entrare in un contenitore Docker:

docker exec -it CONTAINER_NAME /bin/bash

come menzionato nel repository per link

    
risposta data Scott Stensland 02.02.2016 - 18:59

Leggi altre domande sui tag