Почему нет nsenter в util-linux?

19

Я часто использую команду nsenter для своих целей в своей основной системе в Arch Linux. Теперь мне нужно работать над Ubuntu, чтобы тестировать мои приложения на нем, но в утилите-linux нет nsenter . Может быть, это отдельный пакет?

UPD. Хорошо, я проверил, что версия util-linux в Ubuntu все еще намного старше 2.23. Как установить новую версию пакета без каких-либо проблем на Ubuntu?

    
задан zerospiel 25.03.2014 в 17:02
источник

3 ответа

18

Обновление

Начиная с 14.10, util-linux предоставляет команду nsenter . Решение ниже было протестировано с 14.04.

Версия Debian / Ubuntu, как вы уже сказали, довольно старая, даже в Trusty.

Есть открытая ошибка , и к сожалению пока ничего не сделано.

Вы можете попытаться построить его из источника:

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

ВАЖНО

Сделайте НЕ sudo make install этого пакета на Ubuntu 14.04 LTS, пока он официально не будет готов к использованию, так как он определенно требует недоступную версию libmount , нарушая вашу загрузку. (Если вы это сделаете, переустановите пакет mount перед перезагрузкой вашего компьютера, если сможете.)

Кредиты: Тревор Александр за его комментарий .

Наконец, вы получите:

[email protected]:~/Downloads/util-linux-2.24.1$ ./nsenter -V
nsenter from util-linux 2.24.1

Примечание : поскольку ncenter недоступен в версии ubuntu util-linux, вы можете установить именно этот файл в / usr / bin (или sbin):

sudo cp ./nsenter /usr/bin
    
ответ дан Sylvain Pineau 25.03.2014 в 17:44
источник
10

Если вы используете докер, вы можете установить nsenter в контейнер и затем скопировать команду nsenter на хост.

Из моего списка: Ссылка

# 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
    
ответ дан michaelbn 25.08.2014 в 14:53
0

Начиная с Docker 1.3 вы можете использовать Docker exec для входа в контейнер Docker:

docker exec -it CONTAINER_NAME /bin/bash

, как указано в репо для Ссылка

    
ответ дан Scott Stensland 02.02.2016 в 18:59