20 votes

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

Je fais souvent usage de la commande nsenter pour mes besoins sur mon système principal sous Arch Linux. Maintenant, je dois travailler sur Ubuntu pour tester mes applications, mais il n'y a pas de nsenter dans util-linux. Peut-être est-ce un paquet séparé ?

UPD. D'accord, j'ai vérifié que la version de util-linux sur Ubuntu est encore bien plus ancienne que 2.23. Comment puis-je installer une nouvelle version du paquet sans aucun problème par la suite sur Ubuntu ?

19voto

Sylvain Pineau Points 59212

Mise à jour:

À partir de la version 14.10, le util-linux fournit la commande nsenter. La solution ci-dessous a été testée avec la version 14.04.


La version Debian/Ubuntu est en effet assez ancienne maintenant, même dans Trusty.

Il y a un bug ouvert et malheureusement aucune avancée jusqu'à présent.

Vous pouvez essayer de le construire à partir de la 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 PAS utiliser la commande sudo make install pour ce paquet sur Ubuntu 14.04 LTS avant qu'il ne soit officiellement prêt à être utilisé, car cela demande définitivement une version non disponible de libmount, ce qui peut causer des problèmes de démarrage. (Si vous le faites, réinstallez le paquet mount avant de redémarrer votre machine, si vous le pouvez.)

Crédits: <a href="https://askubuntu.com/users/129616/trevor-alexander">Trevor Alexander</a> pour son <a href="https://askubuntu.com/questions/439056/why-there-is-no-nsenter-in-util-linux/439065#comment727477_439065">commentaire</a>.


Enfin, vous obtiendrez:

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

Remarque: comme nsenter n'est pas disponible dans la version ubuntu de util-linux, vous pouvez simplement installer ce fichier dans /usr/bin (ou sbin):

sudo cp ./nsenter /usr/bin

11voto

michaelbn Points 210

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

De mon gist : https://gist.github.com/mbn18/0d6ff5cb217c36419661

# Ubuntu 14.04 n'a pas nsenter - la méthode la plus simple m'aurait obligé à installer des outils de compilation, etc.
# Je préférais garder le système propre et installer nsenter dans un conteneur, puis copier la commande sur l'hôte
# Note - il est également possible d'exécuter nsenter à partir d'un conteneur (je n'ai pas essayé) https://github.com/jpetazzo/nsenter

# démarrer un conteneur
docker run --name nsenter -it ubuntu:14.04 bash

## dans le conteneur 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

## à partir d'un shell différent - sur l'hôte
docker cp nsenter:/util-linux/nsenter /usr/local/bin/
docker cp nsenter:/util-linux/bash-completion/nsenter /etc/bash_completion.d/nsenter

0voto

Scott Stensland Points 12948

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

docker exec -it NOM_DU_CONTENEUR /bin/bash

comme mentionné dans le dépôt pour https://github.com/jpetazzo/nsenter

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X