Por que não existe nsenter no util-linux?

20

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

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

zerospiel
fonte
Se acontecer de você quer para usá-lo com Docker em seguida, basta seguir o guia aqui github.com/jpetazzo/nsenter
Pithikos
@ Sylvain Não vejo o ponto de adicionar 14.04 como uma tag, uma vez que 13.xy foi removido.
muru
@muru, na verdade, nsenterestá disponível em 14.10 (veja a lista de pacotes para utils-linux). Daí a tag 14.04 para esta pergunta.
Sylvain Pineau
@SylvainPineau talvez, mas faz sentido adicionar tag a uma pergunta com meio ano de idade? Por que não 12.04 então?
muru
@muru Não verifiquei se a compilação 2.24, conforme sugerido na minha resposta original, funciona em 12.04. Por isso, preferi restringir o escopo deste Q / A a 14.04. O objetivo de mantê-lo atualizado é obviamente que essa solução não é necessária a partir das 14h10
Sylvain Pineau 28/15

Respostas:

19

Atualização :

A partir de 14.10, o util-linuxfornece o nsentercomando. A solução abaixo foi testada com 14.04.


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

Existe um erro aberto e, até o momento, infelizmente, nenhum progresso.

Você pode tentar construí-lo 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

Fazer NÃO sudo make install este pacote no Ubuntu 14.04 LTS até que seja oficialmente pronto para uso, como ele definitivamente exige uma versão indisponíveis de libmount, quebrando o seu arranque. (Se você fizer isso, reinstale o mountpacote antes de reiniciar sua máquina, se puder.)

Créditos: Trevor Alexander por seu comentário .


Finalmente você terá:

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

Nota : como o 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
Sylvain Pineau
fonte
Eu tentei sua solução, mas recebo um erro enquanto ./configure, porque não existe esse arquivo. Estou recebendo Could not locate the pkg-config autoconf macros.se tentar usar o configure.acarquivo.
Zerospiel 26/03
11
Tente com o tarball . Certifique-se de ter os dois pkg-confige autoconfinstalado muito
Sylvain Pineau
2
IMPORTANTE: NÃO sudo make installeste pacote no Ubuntu 14.04 LTS até que esteja oficialmente pronto para uso, pois definitivamente exige uma versão indisponível libmount, interrompendo sua inicialização. (Se você fizer isso, reinstale o mountpacote antes de reiniciar sua máquina, se puder.)
bright-star
11
Não vai quebrar nada para colocar o nsenter em / usr / bin, mas a prática usual é deixar isso para coisas instaladas a partir de pacotes apt e instalar outras coisas em / usr / local / bin. Na maioria das vezes, é mais fácil ver quais itens personalizados você configurou.
Mc0e 6/02
11
É utils-linuxum erro de digitação util-linux? (O suficiente para não confiante para editar a resposta, mas tanto quanto eu posso dizer, é.)
DreadPirateShawn
11

Se você usar o docker, poderá instalar o nsenter em um contêiner e copiar o comando nsenter para o host.

Da minha essência: https://gist.github.com/mbn18/0d6ff5cb217c36419661

# 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
michaelbn
fonte
"Mantendo o sistema host limpo" significa evitar a necessidade de instalar build-essentiale as outras bibliotecas no apt-getcomando acima, certo? Isso é realmente muito interessante se sim, não sabia docker cp. Isso é ótimo para criar todo tipo de coisa como binários sem poluir o host.
Aditya MP
0

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

docker exec -it CONTAINER_NAME /bin/bash

conforme mencionado no repositório para https://github.com/jpetazzo/nsenter

Scott Stensland
fonte