Por que não há nsenter no util-linux?

20

Eu freqüentemente uso o comando nsenter para meus propósitos em meu sistema principal no Arch Linux. Agora eu tenho que trabalhar no Ubuntu para testar meus aplicativos, mas não há nsenter no util-linux. Talvez seja um pacote separado?

UPD. Ok, eu verifiquei que a versão do util-linux no Ubuntu ainda é muito mais antiga que a 2.23. Como posso instalar uma nova versão do pacote sem nenhum problema no Ubuntu?

    
por zerospiel 25.03.2014 / 17:02

3 respostas

18

Atualizar :

A partir de 14.10, o util-linux fornece o comando nsenter . A solução abaixo foi testada com 14.04.

A versão Debian / Ubuntu é como você disse bastante antiga agora, mesmo em Trusty.

Há um bug aberto e até agora não houve progresso.

Você pode tentar criar a partir da fonte:

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

Certifique-se de instalar as seguintes dependências de compilação:

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

E apenas execute no diretório de origem ( ~/Downloads/util-linux-2.24.1 ):

./autogen.sh

./configure && make

IMPORTANTE

Faça NÃO sudo make install neste pacote no Ubuntu 14.04 LTS até que esteja oficialmente pronto para uso, já que definitivamente exige uma versão não disponível de libmount , quebrando sua inicialização. (Se você fizer isso, reinstale o pacote mount antes de reinicializar sua máquina, se puder.)

Créditos: Trevor Alexander para o seu comentário .

Por fim, você verá:

sylvain@sylvain-ThinkPad-T430s:~/Downloads/util-linux-2.24.1$ ./nsenter -V
nsenter from util-linux 2.24.1

Nota : como nsenter não está disponível na versão ubuntu util-linux, você pode instalar apenas este arquivo em / usr / bin (ou sbin):

sudo cp ./nsenter /usr/bin
    
por Sylvain Pineau 25.03.2014 / 17:44
11

Se você usar a janela de encaixe, poderá instalar o nsenter em um contêiner e, em seguida, copiar o comando nsenter para o host.

De minha essência: 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
    
por michaelbn 25.08.2014 / 14:53
0

A partir do Docker 1.3, você pode usar o Docker exec para entrar em um contêiner do Docker:

docker exec -it CONTAINER_NAME /bin/bash

como mencionado no repositório do link

    
por Scott Stensland 02.02.2016 / 18:59