it-swarm-eu.dev

Jak nainstalovat program lokálně bez oprávnění sudo?

Předpokládejme, že jako uživatel používám ssh přístup k některému serveru Ubuntu a potřebuji pro usnadnění instalace nějaké ne systémové nástroje (mc, rtorrent, mcedit). Nechci obtěžovat administrátory pro tyto malé programy.

Existuje způsob, jak je nainstalovat (nechat je běžet) bez použití něco jako Sudo apt-get install?

80
yura
  1. Kompilace a instalace do ~/bin (a upravte své .bashrc nastavte PATH tak, aby obsahoval). knihovny lze podobně kompilovat a instalovat do ~/lib (nastavit LD_LIBRARY_PATH na to přejděte) a vývojové záhlaví lze nainstalovat do např. ~/includes.

  2. V závislosti na konkrétních podrobnostech programů, které chcete nainstalovat, a na knihovnách, na kterých závisí, si můžete stáhnout soubory .deb a použít 'dpkg-deb -x 'a rozbalte je pod domovským adresářem. Poté budete mít spoustu „zábavných“ nastavení PATH, LD_LIBRARY_PATH a další variables. Čím složitější je program nebo aplikace, kterou instalujete, tím více zábavy pro vás bude :)

    Nebudete samozřejmě moci tímto způsobem nainstalovat binární soubory setuid - budou se instalovat, ale (protože nemáte oprávnění je chown rootovat nebo nastavit bit setuid na oni) budou to jen normální binární soubory, které vlastníte.

    Podobně démoni a systémové služby, které očekávají, že budou spuštěny jako určité UID nebo mají schopnost změnit uid, nebo očekávají, že soubory budou v /etc spíše ~/etc a tak dále nebude fungovat dobře, pokud vůbec.

  3. Většina sysadminů považuje mc a mcedit za „většinou neškodné“, neškodné programy.

    Jen velmi málo z nich by však považovalo instalaci torrent klienta za neškodnou, zejména pokud musí platit za šířku pásma nebo nakonec být právně odpovědné. Většina sysadminů by pravděpodobně nebyla zcela šťastná, kdyby koncoví uživatelé instalovali takový software bez povolení. Mohou říci „jistě, jděte do toho, vyrazte se“ nebo ne… ale měli byste se zeptat na cokoli, co by mohlo majitelům/správcům stroje způsobit problémy.

36
cas

Musíte je zkompilovat ze zdroje. Mělo by to být jen otázkou

apt-get source PACKAGE
./configure --prefix=$HOME/myapps
make
make install

Binární kód by pak byl umístěn v ~/myapps/bin. Takže přidejte export PATH="$HOME/myapps/bin:$PATH" tvému ​​.bashrc soubor a znovu načtěte .bashrc soubor s source ~/.bashrc. To samozřejmě předpokládá, že v systému je nainstalován gcc.

53
eof

Můžete použít JuNest , který vytvoří malý linuxový kontejner v uživatelském adresáři, kde můžete nainstalovat jakékoli balíčky.

5
niutech

Mám stejný problém jako vy. Ještě jsem to nezkusil, ale zdá se, že Linuxbrew může být užitečné v této záležitosti.

1
JPCF

Čelil jsem stejnému problému, tady je, jak jsem to rychle vyřešil, za předpokladu, že máte linuxový server stejného OS a architektury.

  1. Nainstalujte software do systému, který ovládáte

  2. Najděte spustitelný příklad which python a zkopírujte jej do ~/

  3. Kopírovat knihovny s:

    ldd "$(which python)"  | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ~/
    

Přeneste spustitelný soubor a knihovny do jiného systému, kde máte pouze místní oprávnění, a potom spusťte následující:

mkdir ~/lib
export PATH="$PATH:~/lib"
export LD_LIBRARY_PATH=~/lib:/lib:/usr/lib

Tím vytvoříte složku ~/lib uložte si knihovny, přidejte je do své cesty a řekněte LD, aby se tam podíval na knihovny, takže tam stačí přidat spustitelné soubory a knihovny), nyní můžete spustit, jak jste ' d jinde

Může to být velmi hackerské, ale je to velmi přenosné, rychlé a ještě jsem nenašel něco, co nemohu spustit, samozřejmě, software se nemůže pokusit dělat věci, které vyžadují přístup root, jako je vazba na nižší port než 1024 atd.

0
Freedo