web-dev-qa-db-fra.com

Pourquoi il n'y a pas de nsenter dans util-linux?

J'utilise fréquemment la commande nsenter pour mes besoins dans mon système principal sous Arch Linux. Je dois maintenant travailler sur Ubuntu pour tester mes applications, mais il n'y a pas nsenter dans util-linux. Peut-être que c'est un paquet séparé?

UPD. Ok, j’ai vérifié que la version de util-linux dans Ubuntu est toujours bien plus ancienne que la 2.23. Comment puis-je installer la nouvelle version du paquet sans aucun problème après Ubuntu?

20
zerospiel

Mise à jour :

À compter de 14h10, le util-linux fournit la commande nsentername__. La solution ci-dessous a été testée avec 14.04.


La version de Debian/Ubuntu est comme vous le dites assez ancienne maintenant, même dans Trusty.

Il y a un bug ouvert et jusqu'à présent, aucun progrès malheureusement.

Vous pouvez essayer de le construire à partir du source:

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

Assurez-vous d'installer les dépendances de construction suivantes:

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

Et exécutez simplement dans le répertoire source (~/Downloads/util-linux-2.24.1):

./autogen.sh

./configure && make

IMPORTANT

Ne PASSudo make install ce paquet sur Ubuntu 14.04 LTS jusqu'à ce qu'il soit officiellement prêt à être utilisé, car il nécessite définitivement une version indisponible de libmountname__, interrompant votre démarrage. . (Si vous procédez ainsi, réinstallez le package mountavant de redémarrer votre ordinateur, si vous le pouvez.)

Crédits: Trevor Alexander pour son commentaire .


Enfin, vous aurez:

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

Remarque : nsenter n'étant pas disponible dans la version d'ubuntu util-linux, vous pouvez uniquement installer ce fichier dans/usr/bin (ou sbin):

Sudo cp ./nsenter /usr/bin
18
Sylvain Pineau

Si vous utilisez docker, vous pouvez installer nsenter dans un conteneur, puis copier la commande nsenter sur l'hôte.

De mon fond: 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
11
michaelbn

À partir de Docker 1.3, vous pouvez utiliser Docker exec pour entrer dans un conteneur Docker:

docker exec -it CONTAINER_NAME /bin/bash

comme mentionné dans le repo pour https://github.com/jpetazzo/nsenter

0
Scott Stensland