當前位置: 首頁>>技術教程>>正文


為什麽util-linux中沒有nsenter?

, ,

問題描述

我經常在 Arch Linux 下的主係統中使用 nsenter 命令來實現我的目的。現在我必須在 Ubuntu 上測試我的應用程序,但 util-linux 中沒有 nsenter。也許它是一個單獨的包?

UPD。好的,我檢查了 Ubuntu 中的 util-linux 版本仍然比 2.23 舊得多。如何在 Ubuntu 上安裝新版本的軟件包而不會出現任何問題?

最佳答案

更新:

從 14.10 開始,util-linux 提供 nsenter 命令。下麵的解決方案已經用 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

IMPORTANT

在正式準備好使用之前,不要在 Ubuntu 14.04 LTS 上 sudo make install 這個包,因為它肯定需要一個不可用的 libmount 版本,這會破壞你的啟動。 (如果您這樣做,請在重新啟動計算機之前重新安裝 mount 軟件包,如果可以的話。)

學分: Trevor Alexander 為他的 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

次佳答案

如果您使用 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

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/13005.html,未經允許,請勿轉載。