उपयोग-लिनेक्स में कोई nsenter क्यों नहीं है?


20

मैं अक्सर nsenterआर्क लिनक्स के तहत अपने मुख्य सिस्टम में अपने उद्देश्यों के लिए कमांड का उपयोग कर रहा हूं । अब मुझे उस पर अपने ऐप्स का परीक्षण करने के लिए उबंटू पर काम करना है, लेकिन उपयोग nsenter-लिनेक्स में नहीं है। शायद यह एक अलग पैकेज है?

युपीडी। ठीक है, मैंने जाँच की कि util-linuxउबंटू का संस्करण अभी भी 2.23 से अधिक पुराना है। मैं Ubuntu पर समस्याओं के बाद बिना किसी पैकेज के नए संस्करण को कैसे स्थापित कर सकता हूं?


यदि आप इसे डॉकर के साथ उपयोग करने के लिए चाहते हैं, तो बस यहां गाइड का पालन करें github.com/jpetazzo/nsenter
Pithikos

@ सिल्वेन मुझे 14.04 जोड़ने के बिंदु के रूप में नहीं दिखता है कि 13.xy हटा दिया गया था।
मुरु

@muru, वास्तव में nsenter14.10 में उपलब्ध है (देखें पैकेज सूची के लिए utils-linux)। इसलिए इस सवाल का टैग 14.04 है।
सिल्वेन पिनेउ

@SylvainPineau हो सकता है, लेकिन क्या यह आधे साल पुराने एक सवाल से टैग जोड़ने का मतलब है? 12.04 क्यों नहीं?
मुरु

@ मरमू की जाँच नहीं की अगर मैं २२.२४ पर अपने मूल उत्तर के कामों में २.२४ का संकलन करता हूँ। इसलिए मैंने इस क्यू / ए के दायरे को 14.04 तक सीमित करना पसंद किया। इसे अप-टू-डेट रखने की बात जाहिर है कि इस समाधान की आवश्यकता 14.10 तक नहीं है
सिल्वेन पिनेउ

जवाबों:


19

अपडेट :

14.10 तक, कमांड util-linuxप्रदान करता है nsenter। नीचे दिए गए समाधान का परीक्षण 14.04 के साथ किया गया है।


डेबियन / उबंटू संस्करण जैसा कि आपने काफी पुराना कहा है, यहां तक ​​कि ट्रस्टी में भी।

एक खुला बग है और अब तक दुर्भाग्य से कोई प्रगति नहीं हुई है।

आप इसे स्रोत से बनाने का प्रयास कर सकते हैं:

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

नोट : चूंकि एनसेंटर ubuntu यूज़-लिनेक्स संस्करण में उपलब्ध नहीं है, आप बस इस फ़ाइल को / usr / bin (या sbin) में स्थापित कर सकते हैं:

sudo cp ./nsenter /usr/bin

मैंने आपके समाधान की कोशिश की, लेकिन मुझे एक त्रुटि मिलती है ./configure, क्योंकि ऐसी कोई फ़ाइल नहीं है। Could not locate the pkg-config autoconf macros.अगर configure.acफ़ाइल का उपयोग करने की कोशिश कर रहा हूँ ।
zerospiel

1
इसके बजाय टारबॉल के साथ प्रयास करें । सुनिश्चित करें कि आपके पास दोनों हैं pkg-configऔर autoconfस्थापित हैं
सिल्वेन पिनेउ

2
महत्वपूर्ण: sudo make installजब तक यह निश्चित रूप से उपयोग के लिए तैयार नहीं हो जाता है, तब तक यह पैकेज उबंटू 14.04 एलटीएस पर नहीं है, क्योंकि यह निश्चित रूप से libmountआपके बूट को तोड़ने के अनुपलब्ध संस्करण की मांग करता है । (यदि आप ऐसा mountकरते हैं, तो अपनी मशीन को रिबूट करने से पहले पैकेज को फिर से स्थापित करें , यदि आप कर सकते हैं।)
उज्ज्वल-स्टार

1
यह / usr / bin में nsenter डालने के लिए कुछ भी तोड़ने वाला नहीं है, लेकिन सामान्य अभ्यास यह है कि उपयुक्त संकुल से संस्थापित सामान के लिए, और / usr / स्थानीय / बिन में अन्य सामान स्थापित करें। यह ज्यादातर यह देखना आसान बनाता है कि आपने कौन सा कस्टम सामान सेट किया है।
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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.