Warum gibt es in util-linux kein nsenter?


20

Ich verwende häufig nsenterBefehle für meine Zwecke in meinem Hauptsystem unter Arch Linux. Jetzt muss ich an Ubuntu arbeiten, um meine Apps darauf zu testen, aber es gibt kein nsenterUtil-Linux. Vielleicht ist es ein separates Paket?

UPD. Ok, ich habe überprüft, dass die Version von util-linuxin Ubuntu noch viel älter als 2.23 ist. Wie kann ich eine neue Version des Pakets ohne Probleme unter Ubuntu installieren?


Wenn Sie es für Docker verwenden möchten, folgen Sie einfach der Anleitung hier github.com/jpetazzo/nsenter
Pithikos

@ Sylvain Ich sehe keinen Sinn darin, 14.04 als Tag hinzuzufügen, da 13.xy entfernt wurde.
muru

@muru nsenterist aktuell in 14.10 verfügbar (siehe Paketliste für utils-linux). Daher der 14.04 Tag zu dieser Frage.
Sylvain Pineau

@ SylvainPineau vielleicht, aber macht es Sinn, eine Frage, die ein halbes Jahr alt ist, mit einem Tag zu versehen? Warum dann nicht 12.04?
muru

@muru Ich habe nicht geprüft, ob das Kompilieren von 2.24, wie in meiner ursprünglichen Antwort vorgeschlagen, am 12.04. funktioniert. Aus diesem Grund habe ich es vorgezogen, den Umfang dieser Q / A auf 14.04 zu beschränken. Um es auf dem neuesten Stand zu halten, ist es offensichtlich, dass diese Lösung ab 14.10 nicht mehr benötigt wird
Sylvain Pineau

Antworten:


19

Update :

Ab 14.10 util-linuxliefert der den nsenterBefehl. Die folgende Lösung wurde mit 14.04 getestet.


Die Debian / Ubuntu-Version ist, wie Sie sagten, mittlerweile ziemlich alt, sogar in Trusty.

Es gibt einen offenen Bug und bisher leider keine Fortschritte.

Sie könnten versuchen, es aus dem Quellcode zu erstellen:

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

Stellen Sie sicher, dass Sie die folgenden Build-Abhängigkeiten installieren:

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

Und einfach im Quellverzeichnis ( ~/Downloads/util-linux-2.24.1) ausführen :

./autogen.sh

./configure && make

WICHTIG

Habe nicht sudo make install dieses Paket auf Ubuntu 14.04 LTS , bis es offiziell einsatzbereit ist, wie es auf jeden Fall eine nicht verfügbare Version verlangt libmount, Ihr Boot zu brechen. (Installieren Sie in diesem Fall das mountPaket erneut, bevor Sie den Computer neu starten, sofern dies möglich ist.)

Credits: Trevor Alexander für seinen Kommentar .


Endlich bekommen Sie:

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

Hinweis : Da nsenter in der Ubuntu Util-Linux-Version nicht verfügbar ist, können Sie nur diese Datei in / usr / bin (oder sbin) installieren:

sudo cp ./nsenter /usr/bin

Ich habe versucht, Ihre Lösung, aber ich bekomme eine Fehlermeldung, während ./configure, weil es keine solche Datei gibt. Ich bekomme, Could not locate the pkg-config autoconf macros.wenn ich versuche, configure.acDatei zu verwenden .
Zerospiel

1
Versuchen Sie es stattdessen mit dem Tarball . Stellen Sie sicher, dass Sie beide haben pkg-configund auch autoconfinstalliert
Sylvain Pineau

2
WICHTIG: Führen Sie sudo make installdieses Paket unter Ubuntu 14.04 LTS erst dann aus, wenn es offiziell einsatzbereit ist, da es definitiv eine nicht verfügbare Version von erfordert libmount, die Ihren Bootvorgang unterbricht. (Wenn Sie dies tun, installieren Sie das mountPaket erneut, bevor Sie Ihren Computer neu starten, wenn Sie können.)
bright-star

1
Es wird nichts kaputt machen, wenn nsenter in / usr / bin abgelegt wird, aber es ist übliche Praxis, das für Sachen zu belassen, die aus apt-Paketen installiert wurden, und andere Sachen in / usr / local / bin zu installieren. Meistens ist es einfacher zu sehen, welche benutzerdefinierten Elemente Sie eingerichtet haben.
mc0e

1
Ist utils-linuxein Tippfehler von util-linux? (Nicht sicher genug, um die Antwort zu bearbeiten, aber soweit ich das
beurteilen

11

Wenn Sie Docker verwenden, können Sie nsenter in einem Container installieren und dann den Befehl nsenter auf den Host kopieren.

Aus meiner Sicht: 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

Wenn Sie das Host-System sauber halten, müssen Sie weder die Installation noch build-essentialdie anderen Bibliotheken im apt-getobigen Befehl ausführen , oder? Das ist eigentlich sehr interessant, wenn ja, wusste nicht docker cp. Dies ist großartig, um alle möglichen Dinge als Binärdateien zu erstellen, ohne den Host zu verschmutzen.
Aditya MP

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.