Чому в util-linux немає нісентера?


20

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

UPD. Гаразд, я перевірив, що версія util-linuxUbuntu ще набагато старша за 2,23. Як я можу встановити нову версію пакета без проблем на Ubuntu?


Якщо ви хочете використовувати його з Docker, просто дотримуйтесь інструкції тут github.com/jpetazzo/nsenter
Pithikos

@Sylvain Я не бачу сенсу додавати 14.04 як тег, враховуючи, що 13.xy було видалено.
муру

@muru, насправді nsenterдоступний о 14.10 (Див. список пакунків для utils-linux). Звідси тег 14,04 до цього питання.
Sylvain Pineau

@SylvainPineau, можливо, але чи є сенс додавати теги до питання півроку? Чому б не 12.04 тоді?
муру

@muru Я не перевіряв, чи збирається 2,24, як було запропоновано в моїй оригінальній відповіді, 12.04. Тому я вважав за краще обмежити сферу застосування цього питання на 14.04. Суть у тому, щоб його актуалізувати, очевидно, що це рішення не потрібно станом на 14.10
Сільвейн Пано,

Відповіді:


19

Оновлення :

Станом на 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пакет перед перезавантаженням машини, якщо зможете.)

Кредити: Тревор Олександр за коментар .


Нарешті ви отримаєте:

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

Я спробував ваше рішення, але при цьому я отримую помилку ./configure, оскільки такого файлу немає. Я отримую, Could not locate the pkg-config autoconf macros.якщо намагаюся використовувати configure.acфайл.
zerospiel

1
Спробуйте замість тарболу . Переконайтесь, що у вас є і те, pkg-configі autoconfінстальовано
Sylvain Pineau

2
ВАЖЛИВО: НЕ використовуйте sudo make installцей пакет на Ubuntu 14.04 LTS, поки він не буде офіційно готовий до використання, оскільки він, безумовно, вимагає недоступної версії libmount, порушуючи завантаження. (Якщо ви це зробите, перевстановіть mountпакет перед перезавантаженням машини, якщо зможете.)
яскрава зірка

1
Щоб не поміщати nsenter в / usr / bin, не потрібно нічого порушувати, але звичайна практика - це залишити для речей, встановлених з пакетів apt, та встановити інші речі в / usr / local / bin. В основному це просто полегшує перегляд, які спеціальні речі ви створили.
mc0e

1
Це utils-linuxпомилка друку util-linux? (Не достатньо впевнений, щоб відредагувати відповідь, але наскільки я можу сказати, це так.)
DreadPirateShawn

11

Якщо ви використовуєте 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

Під "збереженням системи хосту в чистоті" ви маєте на увазі ухилення від необхідності встановлення build-essentialта інших бібліотек у apt-getкоманді, наведеній вище, правда? Це насправді дуже цікаво, якщо так, не знав docker cp. Це відмінно підходить для створення всіляких речей як бінарних файлів, не забруднюючи хоста.
Адітя МП

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.