Tại sao không có nsenter trong produc-linux?


20

Tôi thường xuyên sử dụng nsenterlệnh cho các mục đích của mình trong hệ thống chính của mình trong Arch Linux. Bây giờ tôi phải làm việc trên Ubuntu để kiểm tra các ứng dụng của mình trên nó, nhưng không có nsentertrong linux-linux. Có lẽ đó là một gói riêng biệt?

CẬP NHẬT. Ok, tôi đã kiểm tra phiên bản util-linuxtrong Ubuntu vẫn cũ hơn nhiều so với 2,23. Làm cách nào tôi có thể cài đặt phiên bản mới của gói mà không gặp sự cố nào sau Ubuntu?


Nếu bạn
tình cờ

@Sylvain Tôi không thấy điểm thêm 14.04 là một thẻ cho rằng 13.xy đã bị xóa.
muru

@muru, thực sự nsentercó sẵn trong 14.10 (Xem danh sách gói cho utils-linux). Do đó, thẻ 14.04 cho câu hỏi này.
Sylvain Pineau

@SylvainPineau có thể, nhưng nó có ý nghĩa khi thêm thẻ vào câu hỏi nửa năm tuổi không? Tại sao không phải là 12.04?
muru

@muru Tôi không kiểm tra nếu biên dịch 2.24 như đề xuất trong câu trả lời ban đầu của tôi hoạt động vào ngày 12.04. Vì vậy, tôi thích giới hạn phạm vi của Q / A này đến 14.04. Điểm quan trọng của việc cập nhật rõ ràng là giải pháp này không cần thiết kể từ ngày 14.10
Sylvain Pineau

Câu trả lời:


19

Cập nhật :

Kể từ ngày 14.10, lệnh util-linuxcung cấp nsenterlệnh. Các giải pháp dưới đây đã được thử nghiệm với 14.04.


Phiên bản Debian / Ubuntu như bạn đã nói khá cũ, ngay cả trong Trusty.

Có một lỗi đã mở và cho đến nay không có tiến triển nào đáng tiếc.

Bạn có thể thử xây dựng nó từ nguồn:

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

Đảm bảo cài đặt các phụ thuộc bản dựng sau:

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

Và chỉ cần chạy trong thư mục nguồn ( ~/Downloads/util-linux-2.24.1):

./autogen.sh

./configure && make

QUAN TRỌNG

Làm KHÔNG sudo make install gói này trên Ubuntu 14.04 LTS cho đến khi nó chính thức sẵn sàng để sử dụng, vì nó chắc chắn đòi hỏi một phiên bản không có của libmount, phá vỡ khởi động của bạn. (Nếu bạn làm điều này, hãy cài đặt lại mountgói trước khi khởi động lại máy của bạn, nếu bạn có thể.)

Tín dụng: Trevor Alexander cho nhận xét của mình .


Cuối cùng bạn sẽ nhận được:

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

Lưu ý : vì nsenter không có sẵn trong phiên bản linux-linux, bạn chỉ có thể cài đặt tệp này trong / usr / bin (hoặc sbin):

sudo cp ./nsenter /usr/bin

Tôi đã thử giải pháp của bạn, nhưng tôi gặp lỗi trong khi ./configurekhông có tệp nào như vậy. Tôi nhận được Could not locate the pkg-config autoconf macros.nếu cố gắng sử dụng configure.actập tin.
zerospiel

1
Thay vào đó hãy thử với tarball . Hãy chắc chắn rằng bạn có cả hai pkg-configautoconfcài đặt quá
Sylvain Pineau

2
QUAN TRỌNG: KHÔNG sudo make installgói này trên Ubuntu 14.04 LTS cho đến khi nó chính thức sẵn sàng để sử dụng, vì nó chắc chắn yêu cầu một phiên bản không có sẵn libmount, phá vỡ khởi động của bạn. (Nếu bạn thực hiện việc này, hãy cài đặt lại mountgói trước khi khởi động lại máy, nếu có thể.)
ngôi sao sáng

1
Sẽ không phá vỡ bất cứ điều gì để đặt nsenter vào / usr / bin, nhưng thực tế thông thường là để nó cho các công cụ được cài đặt từ các gói apt và cài đặt các công cụ khác vào / usr / local / bin. Nó chủ yếu chỉ giúp dễ dàng hơn để xem những gì tùy chỉnh bạn đã thiết lập.
mc0e

1
utils-linuxmột lỗi đánh máy của util-linux? (Không đủ tự tin để chỉnh sửa câu trả lời, nhưng theo như tôi có thể nói, thì đúng như vậy.)
DreadPirateShawn

11

Nếu bạn sử dụng docker, bạn có thể cài đặt nsenter trong một container và sau đó sao chép lệnh nsenter vào máy chủ.

Từ ý chính của tôi: 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

Bằng cách "giữ cho hệ thống máy chủ sạch", bạn có nghĩa là không cần phải cài đặt build-essentialvà các thư viện khác trong apt-getlệnh trên, phải không? Điều đó thực sự rất thú vị nếu có, không biết docker cp. Điều này là tuyệt vời để xây dựng tất cả các loại như nhị phân mà không gây ô nhiễm máy chủ.
MP Aditya

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.