Perché non c'è nsenter in util-linux?


20

Uso spesso il nsentercomando per i miei scopi nel mio sistema principale sotto Arch Linux. Ora devo lavorare su Ubuntu per testare le mie app su di esso, ma non c'è nsenterin util-linux. Forse è un pacchetto separato?

UPD. Ok, ho verificato che la versione di util-linuxUbuntu sia ancora molto più vecchia della 2.23. Come posso installare la nuova versione del pacchetto senza problemi dopo su Ubuntu?


Se ti capita di volerlo utilizzare con Docker, segui semplicemente la guida qui github.com/jpetazzo/nsenter
Pithikos

@Sylvain Non vedo il punto di aggiungere 14.04 come tag dato che 13.xy è stato rimosso.
Muru,

@muru, attualmente nsenterè disponibile in 14.10 (vedere l' elenco dei pacchetti per utils-linux). Da qui il tag 14.04 a questa domanda.
Sylvain Pineau,

@SylvainPineau forse, ma ha senso aggiungere un tag a una domanda di mezzo anno? Perché non 12.04 allora?
Muru,

@muru Non ho verificato se la compilazione della 2.24 come suggerito nella mia risposta originale funziona il 12.04. Quindi ho preferito limitare la portata di questo Q / A a 14.04. Il punto per tenerlo aggiornato è ovviamente che questa soluzione non è necessaria dal 14.10
Sylvain Pineau,

Risposte:


19

Aggiornamento :

A partire dal 14.10, il util-linuxfornisce il nsentercomando. La soluzione seguente è stata testata con 14.04.


La versione Debian / Ubuntu è, come hai detto, abbastanza vecchia ora, anche in Trusty.

C'è un bug aperto e finora nessun progresso purtroppo.

Potresti provare a costruirlo dal sorgente:

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

Assicurati di installare le seguenti dipendenze di build:

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

Ed esegui semplicemente nella directory di origine ( ~/Downloads/util-linux-2.24.1):

./autogen.sh

./configure && make

IMPORTANTE

NON farlo sudo make install questo pacchetto su Ubuntu 14.04 LTS fino a quando è ufficialmente pronto per l'uso, in quanto richiede sicuramente una versione non disponibili libmount, rompendo il boot. (In questo caso, reinstallare il mountpacchetto prima di riavviare il computer, se possibile.)

Crediti: Trevor Alexander per il suo commento .


Finalmente otterrai:

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

Nota : poiché nsenter non è disponibile nella versione ubuntu util-linux, è possibile installare solo questo file in / usr / bin (o sbin):

sudo cp ./nsenter /usr/bin

Ho provato la tua soluzione, ma mi viene visualizzato un errore ./configure, poiché non esiste un file del genere. Sto ottenendo Could not locate the pkg-config autoconf macros.se provo ad usare il configure.acfile.
zerospiel,

1
Prova invece con il tarball . Assicurati di avere entrambi pkg-confige autoconfinstallato anche
Sylvain Pineau

2
IMPORTANTE: NON utilizzare sudo make installquesto pacchetto su Ubuntu 14.04 LTS fino a quando non sarà ufficialmente pronto per l'uso, poiché richiede sicuramente una versione non disponibile di libmount, interrompere l'avvio. (Se lo fai, reinstalla il mountpacchetto prima di riavviare il computer, se puoi.)
bright-star

1
Non romperà nulla per mettere nsenter in / usr / bin, ma la pratica abituale è lasciarla per cose installate da pacchetti apt e installare altre cose in / usr / local / bin. Soprattutto rende più semplice vedere quali elementi personalizzati sono stati impostati.
MC0e

1
È utils-linuxun errore di battitura di util-linux? (Non abbastanza sicuro da modificare la risposta, ma per quanto ne so, lo è.)
DreadPirateShawn,

11

Se si utilizza la finestra mobile è possibile installare nsenter in un contenitore e quindi copiare il comando nsenter sull'host.

Dalla mia idea: 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

"Mantenendo pulito il sistema host" intendi ovviare alla necessità di installare build-essentiale alle altre librerie nel apt-getcomando sopra, giusto? In realtà è molto interessante se sì, non lo sapevo docker cp. Questo è ottimo per costruire ogni sorta di cose come binari senza inquinare l'host.
Aditya MP il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.