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


20

J'utilise fréquemment la nsentercommande à mes fins dans mon système principal sous Arch Linux. Maintenant, je dois travailler sur Ubuntu pour tester mes applications dessus, mais il n'y en a pas nsenterdans util-linux. C'est peut-être un package séparé?

UPD. Ok, j'ai vérifié que la version d' util-linuxUbuntu est encore beaucoup plus ancienne que la 2.23. Comment puis-je installer une nouvelle version du paquet sans aucun problème après sur Ubuntu?


Si vous le souhaitez pour l'utiliser avec Docker, suivez simplement le guide ici github.com/jpetazzo/nsenter
— Pithikos

@Sylvain Je ne vois pas l'intérêt d'ajouter 14.04 comme balise étant donné que 13.xy a été supprimé.
— muru

@muru, nsenterest en fait disponible en 14.10 (Voir la liste des paquets pour utils-linux). D'où la balise 14.04 de cette question.
— Sylvain Pineau

@SylvainPineau peut-être, mais est-il judicieux d'ajouter une balise à une question vieille de six ans? Pourquoi pas 12.04 alors?
— muru

@muru Je n'ai pas vérifié si la compilation de 2.24 comme suggéré dans ma réponse d'origine fonctionne le 12.04. J'ai donc préféré limiter la portée de ce Q / A à 14.04. Le point de mise à jour est évidemment que cette solution n'est plus nécessaire à partir du 14.10
— Sylvain Pineau

Réponses:


19

Mise à jour :

Depuis 14.10, le util-linuxfournit la nsentercommande. La solution ci-dessous a été testée avec 14.04.


La version Debian / Ubuntu est comme vous l'avez dit 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 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 build 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 lancez simplement dans le répertoire source ( ~/Downloads/util-linux-2.24.1):

./autogen.sh

./configure && make

IMPORTANT

Ne pas sudo make install ce paquet sur Ubuntu 14.04 LTS jusqu'à ce qu'il soit officiellement prêt à l' emploi, car il exige certainement une version unavailable libmount, casser votre botte. (Si vous procédez ainsi, réinstallez le mountpackage avant de redémarrer votre ordinateur, si vous le pouvez.)

Crédits: Trevor Alexander pour son commentaire .


Enfin, vous obtiendrez:

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

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

sudo cp ./nsenter /usr/bin

J'ai essayé votre solution, mais j'obtiens une erreur pendant ./configurequ'il n'y a pas un tel fichier. Je reçois Could not locate the pkg-config autoconf macros.si j'essaie d'utiliser le configure.acfichier.
— zerospiel

1
Essayez plutôt avec le tarball . Assurez-vous d'avoir les deux pkg-configet autoconfinstallés aussi
— Sylvain Pineau

2
IMPORTANT: NE PAS sudo make installce paquet sur Ubuntu 14.04 LTS jusqu'à ce qu'il soit officiellement prêt à l'emploi, car il exige définitivement une version non disponible de libmount, cassant votre démarrage. (Si vous faites cela, réinstallez le mountpackage avant de redémarrer votre machine, si vous le pouvez.)
— Bright-Star

1
Cela ne va rien casser pour mettre nsenter dans / usr / bin, mais la pratique habituelle est de laisser cela pour les trucs installés à partir des paquets apt, et d'installer d'autres trucs dans / usr / local / bin. Cela permet généralement de voir plus facilement les éléments personnalisés que vous avez configurés.
— mc0e

1
Est utils-linuxune faute de frappe util-linux? (Pas assez confiant pour modifier la réponse, mais pour autant que je
— sache

11

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

De mon essence: 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

Par "garder le système hôte propre", vous entendez éviter la nécessité d'installer build-essentialet les autres bibliothèques dans la apt-getcommande ci-dessus, non? C'est en fait très intéressant si oui, je ne le savais pas docker cp. C'est idéal pour construire toutes sortes de choses en tant que binaires sans polluer l'hôte.
— Aditya MP

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.