Yerel olarak sudo ayrıcalıklarına sahip olmayan bir program nasıl kurulur?


73

Kullanıcı olarak bazı Ubuntu sunucularına ssh erişimim olduğunu ve kullanım kolaylığı için bazı sistem araçlarına ihtiyaç duymadığımı varsayalım (mc, rtorrent, mcedit). Bu küçük programlar için yöneticileri rahatsız etmek istemiyorum.

Gibi bir şey kullanmadan onları yüklemek (onları çalıştırmak) bir yolu var mı sudo apt-get install?





Ayrıca bakınız programları takip etme
Gilles

Yanıtlar:


33
  1. Derleyin ve kurun ~/bin(ve eklemek .bashrcüzere düzenleyin PATH). kütüphaneler benzer şekilde derlenip yüklenebilir ~/lib( LD_LIBRARY_PATHişaret edecek şekilde ayarlanabilir ) ve geliştirme başlıkları örn ~/includes.

  2. Kurmak istediğiniz programların belirli ayrıntılarına ve bağımlı oldukları kitaplıklara bağlı olarak .deb dosyalarını indirebilir ve ' dpkg-deb -x' dizini altına eklemek için ' ' kullanabilirsiniz . Daha sonra ayar "eğlence" bir sürü olacak PATH, LD_LIBRARY_PATHve diğer variables. Yüklediğiniz program veya uygulama ne kadar karmaşıksa, o kadar eğlenceli olur :)

    Elbette, setuidbu şekilde ikili dosyaları kurmanız mümkün olmayacaktır - bunlar yüklenecektir, ancak (onları kök ya da kökünü ayarlamak için izniniz olmadığından setuid) size ait olan normal ikili dosyalar olacaktır. .

    Benzer şekilde, belirli bir şekilde çalışmayı bekleyen UIDveya kullanıcı kimliğini değiştirme yeteneğine sahip olan veya dosyaların daha /etcdoğrusu böyle olmasını bekleyen servis sağlayıcılar ve sistem hizmetleri de iyi sonuç vermeyebilir ~/etc.

  3. Çoğu sistem yöneticisi, "çoğunlukla zararsız", masum programları olarak düşünür mcve mceditolur.

    Bununla birlikte, çok az kişi, özellikle bant genişliği için ödeme yapmak zorunda olmaları veya yasal olarak sorumlu olmaları durumunda, torrent istemcisini zararsız olarak değerlendirir. Çoğu sistem yöneticisi, son kullanıcıların bu tür bir yazılımı izinsiz kurmaktan tamamen memnun olmaz. "Kesin devam et, kendini nakavt" diyebilirler ya da olmayabilir ... ama makinenin sahipleri / yöneticileri için sorunlara neden olabilecek her şeyi sormalısın.


Ayarın LD_LIBRARY_PATHkötü bir saldırı olduğunu duydum . Bu da burada geçerli mi, yoksa yanlış mı anladım?
Vousden Will

1
LD_LIBRARY_PATH ayarı ile ilgili tüm sorunlar geçerlidir. evet, kötü bir saldırıdır. Bazen kötü hedefler belirli hedeflere ulaşmak için gereklidir ... "kuralları çiğnemenin en önemli yanı, sizi neden onlardan kurtarmak için tasarlandıklarını bilmeleri için yeterince iyi bir şekilde bilmeleri ve bu özel durumda onları neden kırmanız gerektiğidir. ve risklerin neler olduğu veya olabileceği.
Cas

Sadece bağımsız bir program (zoom) kurmak zorunda kaldım, bu yüzden önce 2. seçeneği denedim ( dpkg-deb -xyerel bir dizine). Bir cazibe gibi çalıştı. Herhangi bir LD_LIBRARY_PATHhack yapmak zorunda değildim . Zorunlu olsam bile, aynı ayarları küresel ayarlara etkilemeyecek şekilde yapardım (örneğin $ LD_LIBRARY_PATH=/home/usr1/zoom/opt/zoom:/home/usr1/zoom/opt/zoom/zoom ZoomLauncher).
Antony,

kurmak istediğiniz paketlerden biri veya daha fazlası paylaşılan kütüphaneler sağlıyorsa, yalnızca LD_LIBRARY_PATH ayarlamanız gerekir. Yalnızca çalıştırılabilir dosyalar ve veriler ve belgeler ve yapılandırma dosyaları vb. İse, sistem kitaplıklarını kullanabilir.
kas

50

Bunları kaynaktan derlemelisin. Sadece bir mesele olmalı

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

İkili dosya daha sonra bulunacaktı ~/myapps/bin. Yani, eklemek export PATH="$HOME/myapps/bin:$PATH"için için .bashrcdosya ve yeniden .bashrcdosyayı source ~/.bashrc. Tabii ki, bu sistemde gcc'nin kurulu olduğunu varsayar.


6
Peki ya bağımlılıklar? Her biri için aynı kodu çalıştırmadan otomatik olarak işlem yapmanın bir yolu var mı?
yura,

1
@yura hayır, kendin yapmak zorundasın.
Ulrich Dangel

Ya bunu yapma ayrıcalıklarına sahip değilseniz? Sudo / root erişimi olmayan bir yazılımı derleme iznine sahip olmak normal mi?
Freedo

5

Herhangi bir paketi kurabileceğiniz, kullanıcı dizininde küçük bir Linux kabı oluşturan JuNest'i kullanabilirsiniz .


0

Aynı sorunla karşılaştım, işte aynı işletim sistemi ve mimaride bir linux sunucunuz olduğunu varsayarak hızlıca nasıl düzelttiğimi.

  1. Yazılımı kontrol ettiğiniz sisteme yükleyin

  2. Yürütülebilir örneği bulun which pythonve kopyalayın.~/

  3. Kütüphaneleri kopyalayın:

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

Yürütülebilir dosyayı ve kitaplıkları yalnızca yerel ayrıcalıklarınızın olduğu diğer sisteme aktarın, ardından aşağıdakileri çalıştırın:

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

Bu ~/lib, kitaplıkları depolamak, yolunuza eklemek ve LD'ye oradaki kitaplıklara bakmasını söylemek için bir klasör yaratacaktır , bu nedenle çalıştırılabilir dosyalarınızı ve oradaki kitaplıkları ekleyin, şimdi istediğiniz yerde çalıştırabilirsiniz

Bu çok tehlikeli olabilir, ancak çok taşınabilir, hızlı ve henüz bu şekilde çalıştıramayacağım bir şey bulamadım, elbette, yazılım daha düşük bir bağlantı noktasına bağlanmak gibi kök erişimi gerektiren şeyler yapmayı deneyemez 1024'ten, vb.


-1

Seninle aynı problemi yaşıyorum. Henüz denemedim ama bu konuda Linuxbrew kullanışlı olabilir gibi görünüyor .

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.