Kök erişimi olmayan sistemde oluşturmak için geliştirme dosyalarını yerel olarak yüklensin mi?


11

Üzerinde çalıştığım, eski bir Linux sürümünü çalıştıran bir sunucu var. Sisteme kök erişimim yok, bu yüzden çok kullandığım bir aracın daha yeni bir sürümünü oluşturmak istedim (Vim 7.3). Sadece inşa edip ~ / bin içine kuracağımı düşündüm. Ancak, sistem genelinde yüklü olmayan ncurses geliştirme dosyaları gerektirir. Ncurses-devel rpm'yi buldum ve 'lib' ve 'include' klasörlerini çıkardım, nereye koyacağım ve paketi yerel olarak düzgün bir şekilde yapılandırabilmem için nasıl ./configure betiğini bulacağını nasıl söyleyebilirim?

Düzenleme: Virtualbox'a aynı işletim sistemini yükleyip paketi orada oluşturarak ve ikili dosyaları kopyalayarak bu sorunu çözdüm.


serverfault.com/questions/23734 yardımcı olacak kadar benzer olabilir. Çoğu yanıt, homedir'inize tüm sistemin etkili bir şekilde kurulmasını içerir, ancak bu Gentoo Prefix ve Rootless Gobo'da çözülebilir.
ephemient

Yanıtlar:


14

Bunu son işimde oldukça sık yaptım - en iyi sonuç veren çözüm ~ / usr dizini oluşturmak ve .pconfig komut dosyalarını doğru yönde göstermek için --prefix argümanını kullanmaktı. İşte adımlar:

  • ~ / Usr dizini oluşturun ve altına lib ve bin dizinlerini ekleyin.
  • .Profile, .bashrc veya başka bir kabuk başlatma komut dosyanızda aşağıdakileri (veya kabuğunuzun lehçesinde eşdeğerini) ekleyin:
    export PATH=$PATH:~/usr/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/usr/lib
    export C_INCLUDE_PATH=$C_INCLUDE_PATH:~/usr/include
    export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/usr/include
  • Paketler oluştururken, ./configure --prefix=/home/<username>/usr

Bu düzenleme, kullanıcı alanında bir şeyler inşa etmem gereken çoğu durumda benim için çalıştı. En zor kısım genellikle ihtiyacınız olan tüm bağımlılıkları bulmak ve oluşturmaktır, ancak bu sadece paket yöneticinizin 'kaynak alın' işlevselliğinin bazı googling veya mantıklı kullanımını gerektirir.


Benim için pek işe yaramadı. Configure betiği ~ / usr içinde hiçbir şey bulamıyor
postfuturist

Ben de aynı sorunu yaşadım @postfuturist. Tüm dışa aktarma çağrılarım ${HOME}yerine bunu kullanarak düzeltmeyi ~bitirdim ve sonra pkg-config mutluydu ve kullanıcı tarafından yüklenen kütüphanelerimi ve paketleri bulabildim.
phyatt

3

Normalde, ana dizininizde yeni bir konum veya tüm kitaplıklar ve programlar için başka bir yol tanımlamak için kodu yeniden yapılandırabilmeli ve değiştirebilmelisiniz ...

Ancak, IMHO, en kolay yol (bol miktarda alanınız varsa), tüm linux dağıtımının yüklü olduğu bir alt dizinde chroot kullanmaktır. Cuorse'un normal bir kullanıcı olarak chroot kullanamazsınız , ancak şu harika araçları kullanabilirsiniz: fakechroot ve fakeroot

Chroot dosya sistemini oluşturmak için, debootstrap yardımcı programını kullanarak Debian (veya ubuntu gibi herhangi bir Debian türevi) ile bir dizin dağıtmak istiyorum .

Bu yüzden prosedür kolaydır (teknik ayrıntıları girmeyeceğim, komut kılavuzlarını okuyun):

  • Alın ve yükleyin: fakeroot, fakechroot ve debootstrap araçları
  • debootstrap kullanarak bir alt dizin oluşturun (Bunu yalnızca root olarak çalıştırabildim. Başka bir bilgisayarda yapabilir ve gerekirse ikili dosyaları kopyalayabilirsiniz)
  • Yürüt: fakechroot fakeroot chroot mydebian-dir

Daha fazla ayrıntıya ihtiyacınız varsa, tüm bunları yapmak için bir yerde bir senaryom vardı sanırım.


2

Bu sorunun başka bir çözümü, MacOSX kullanıcıları ve diğer platformların (solaris, AIX) yaptığı gibi Gentoo Öneki'ni kullanmaktır:

http://www.gentoo.org/proj/en/gentoo-alt/prefix/

Gentoo yığınını (portage ile) $ PREFIX konumunda derleyecektir. Gentoo paketlerini kullanır, paketlerin çoğu bu ayarların kullanımını destekler.

Portage tüm bağımlılıkları takip edecek, yazılımın son sürümüne sahip olacaksınız, topluluk tarafından test edildi ...


1

Çalışmazsa prefix=/home/foo/usr, şunları deneyin:

CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure
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.