Neden util-linux'da bir merkez yok?


20

nsenterArch Linux altında ana sistemimde amaçlarımı sıklıkla kullanıyorum . Şimdi uygulamalarımı test etmek için Ubuntu üzerinde çalışmam gerekiyor, ancak nsenterutil-linux'da yok. Belki ayrı bir paket?

UPD. Tamam, util-linuxUbuntu'daki sürümün hala 2.23'ten daha eski olduğunu kontrol ettim . Ubuntu'da problemsiz bir şekilde yeni paket sürümünü nasıl kurabilirim?


Eğer Docker ile kullanmak için istediğiniz edersek o zaman sadece burada kılavuzu izleyin github.com/jpetazzo/nsenter
Pithikos

@Sylvain 13.xy'nin kaldırıldığı verilen bir etiket olarak 14.04 ekleme noktasını göremiyorum.
muru

@muru, aslında nsenter(Bkz 14.10 mevcuttur paket listesi için utils-linux). Dolayısıyla bu soruya 14.04 etiketi.
Sylvain Pineau,

@SylvainPineau belki, ama yarım yaşındaki bir soruya etiket eklemek mantıklı mı? Neden 12.04 değil?
muru

@muru Orijinal cevabımda önerildiği gibi 2.24 derlemesinin 12.04 tarihinde çalıştığını kontrol etmedim. Bu yüzden, bu Q / A'nın kapsamını 14.04 ile sınırlandırmayı tercih ettim. Güncel tutulması gerektiği açıktır ki, bu çözüme 14.10'dan itibaren gerek duyulmamaktadır
Sylvain Pineau

Yanıtlar:


19

Güncelleme :

14.10 itibariyle util-linuxsağlar nsenterkomutu. Aşağıdaki çözüm 14.04 ile test edilmiştir.


Debian / Ubuntu sürümü şu an oldukça eski dediğiniz gibi, Trusty'de bile.

Açık bir hata var ve şu ana kadar maalesef ilerleme kaydedilmedi.

Kaynaktan oluşturmayı deneyebilirsiniz:

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

Aşağıdaki yapı bağımlılıklarını yüklediğinizden emin olun:

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

Ve sadece kaynak dizinde ( ~/Downloads/util-linux-2.24.1) çalıştırın :

./autogen.sh

./configure && make

ÖNEMLİ

Do DEĞİL sudo make install kesinlikle bir kullanılamayan bir sürümünü gerektiriyor gibi, kullanıma resmen hazır olana kadar Ubuntu 14.04 LTS bu paket libmountsizin çizme kırma. (Bunu yaparsanız mount, makinenizi yeniden başlatmadan önce paketi yeniden yükleyin .)

Kredi: Trevor Alexander yaptığı yorum için .


Sonunda alacaksınız:

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

Not : nsenter, ubuntu util-linux sürümünde bulunmadığından, bu dosyayı / usr / bin (veya sbin) dizinine kurabilirsiniz:

sudo cp ./nsenter /usr/bin

Çözümünüzü denedim ama bir hata alıyorum ./configureçünkü böyle bir dosya yok. Dosya Could not locate the pkg-config autoconf macros.kullanmaya çalışıyorsam alıyorum configure.ac.
Zerospiel

1
Bunun yerine tarball ile deneyin . pkg-configautoconf
İkisini

2
ÖNEMLİ: sudo make installBu paketi, resmi olarak kullanıma hazır olana kadar kesinlikle kullanılamaz bir sürümünü talep ettiğinden libmount, önyüklemenizi kesmeden Ubuntu 14.04 LTS'de YAPMAYIN . (Bunu yaparsanız mount, makinenizi yeniden başlatmadan önce paketi yeniden yükleyin , eğer yapabilirseniz.)
parlak yıldız

1
Nsenter'ı / usr / bin dizinine koymak hiçbir şeyi bozmaz, ancak genel uygulama bunu apt paketlerinden yüklenenler için bırakmak ve / usr / local / bin dizinine başka şeyler koymaktır. Çoğunlukla hangi özel şeyleri kurduğunuzu görmeyi kolaylaştırır.
mc0e

1
utils-linuxBir yazım hatası mı util-linux? (Cevabı düzenlemek için yeterince emin değilim, ama söyleyebileceğim kadarıyla, öyle.)
DreadPirateShawn 23

11

Docker kullanıyorsanız nsenter'ı bir kaba yükleyebilir ve ardından nsenter komutunu ana bilgisayara kopyalayabilirsiniz.

Benim düşüncemden: 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

"Ana bilgisayar sistemini temiz tutmak" derken, yukarıdaki komuttaki kurulum build-essentialve diğer kütüphaneleri kaldırma ihtiyacını ortadan kaldırıyorsunuz apt-get, değil mi? Evet, bilmiyordum, aslında çok ilginç docker cp. Bu, konağı kirletmeden her türlü şeyi ikili dosyalar oluşturmak için mükemmeldir.
Aditya MP,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.