web-dev-qa-db-ja.com

util-linuxにnsenterがないのはなぜですか?

Arch Linuxのメインシステムで、目的のためにnsenterコマンドを頻繁に使用しています。今、Ubuntuでアプリをテストする必要がありますが、util-linuxにはnsenterはありません。多分それは別のパッケージですか?

UPD。 OK、Ubuntuのutil-linuxのバージョンが2.23よりもずっと古いことを確認しました。 Ubuntuで問題なく新しいバージョンのパッケージをインストールする方法を教えてください。

20
zerospiel

更新

14.10の時点で、 util-linuxnsenterコマンドを提供します。以下のソリューションは14.04でテスト済みです。


Debian/Ubuntuのバージョンは、Trustyであっても、あなたが今言ったようにかなり古いものです。

未解決の bug があり、残念ながらこれまでのところ進展はありません。

あなたはソースからそれを構築しようとすることができます:

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

次のビルド依存関係を必ずインストールしてください。

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

そして、ソースディレクトリ(~/Downloads/util-linux-2.24.1)で実行するだけです:

./autogen.sh

./configure && make

重要

Ubuntu 14.04 LTSでこのパッケージをNOTSudo make install使用するまでは、使用できないバージョンのlibmountが間違いなく要求されるため、ブートが中断されます。 (これを行う場合は、可能であれば、マシンをリブートする前にmountパッケージを再インストールしてください。)

クレジット: Trevor Alexander for comment


最終的に次のものが得られます:

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

:nsenterはubuntu util-linuxバージョンでは使用できないため、このファイルだけを/ usr/bin(またはsbin)にインストールできます。

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

Dockerを使用する場合、コンテナにnsenterをインストールしてから、nsenterコマンドをホストにコピーできます。

私の要点から: 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

Docker 1.3以降では、Docker execを使用してDockerコンテナーに入ることができます。

docker exec -it CONTAINER_NAME /bin/bash

https://github.com/jpetazzo/nsenter のリポジトリに記載されているとおり

0
Scott Stensland