util-linux에 nsenter가없는 이유는 무엇입니까?


20

nsenter아치 리눅스의 메인 시스템에서 목적을 위해 자주 명령을 사용 합니다. 이제 우분투에서 내 앱을 테스트해야하지만 nsenterutil-linux 에는 없습니다 . 별도의 패키지일까요?

UPD. 좋아, 나는 util-linux우분투 버전 이 여전히 2.23보다 훨씬 오래된 것을 확인했다 . 우분투에서 문제없이 새로운 버전의 패키지를 어떻게 설치할 수 있습니까?


Docker와 함께 사용하기를 원한다면 github.com/jpetazzo/nsenter
Pithikos

@Sylvain 13.xy가 제거되었다는 이유로 14.04를 태그로 추가하는 것이 보이지 않습니다.
muru

@muru, 실제로 nsenter합니다 (참조 14.10에서 사용할 패키지리스트 를 들어 utils-linux). 따라서이 질문에 14.04 태그가 있습니다.
Sylvain Pineau

@SylvainPineau 어쩌면 반 년 된 질문에 태그를 추가하는 것이 합리적입니까? 그렇다면 왜 12.04가 아닌가?
muru

@muru 나는 ​​원래 답변에서 제안한대로 2.24를 컴파일하는 것이 12.04에서 작동하는지 확인하지 않았습니다. 따라서이 Q / A의 범위를 14.04로 제한하는 것을 선호했습니다. 최신 상태를 유지하는 요점은이 솔루션이 14.10 기준으로 필요하지 않다는 것입니다.
Sylvain Pineau

답변:


19

업데이트 :

14.10부터는 명령을 util-linux제공합니다 nsenter. 아래 솔루션은 14.04에서 테스트되었습니다.


데비안 / 우분투 버전은 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

중대한

공식적으로 사용할 준비가 될 때까지 Ubuntu 14.04 LTS에서이 패키지를 사용 하지 마십시오. sudo make install 반드시 사용할 수없는 버전이 필요하므로 libmount부팅이 중단됩니다. (이렇게하면 가능 mount하다면 컴퓨터를 재부팅하기 전에 패키지를 다시 설치하십시오 .)

크레딧 : Trevor Alexander 는 그의 의견에 대해 .


마지막으로 다음을 얻을 수 있습니다.

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

참고 : usentu util-linux 버전에서는 nsenter를 사용할 수 없으므로 / usr / bin (또는 sbin)에이 파일 만 설치할 수 있습니다.

sudo cp ./nsenter /usr/bin

솔루션을 시도했지만 ./configure파일이 없기 때문에 오류가 발생했습니다 . 파일 Could not locate the pkg-config autoconf macros.을 사용하려고하면 얻고 configure.ac있습니다.
zerospiel

1
대신 tarball로 시도하십시오 . 둘 다 가지고 pkg-config있고 autoconf설치 했는지 확인하십시오
Sylvain Pineau

2
중요 : sudo make install이 패키지는 공식적으로 사용할 준비가 될 때까지 Ubuntu 14.04 LTS에서이 패키지를 사용 하지 마십시오. 반드시 사용할 수없는 버전이 필요하므로 libmount부팅이 중단됩니다. (이렇게하면 가능 mount하다면 컴퓨터를 재부팅하기 전에 패키지를 다시 설치하십시오 .)
bright-star

1
nsenter를 / usr / bin에 넣는 것은 아무 것도 깨뜨리지 않지만 일반적으로 apt 패키지에서 설치된 항목은 그대로두고 / usr / local / bin에 다른 항목을 설치하는 것이 좋습니다. 그것은 당신이 어떤 커스텀 것들을 설정했는지 쉽게 알 수있게합니다.
mc0e

1
인가 utils-linux의 오타 util-linux? (답변을 충분히 편집 할 수는 없지만 확신 할 수있는
한도

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. 이것은 호스트를 오염시키지 않고 모든 종류의 것들을 바이너리로 만드는 데 좋습니다.
Aditya MP

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.