Kaynaktan yükleme. Paket yöneticisini yok etmeden bağımlılıklar nasıl çözülür?


19

Yazılımı derlemek ve kurmak, üstesinden gelemediğim bir acı ve sorundur. Ben sadece bir sonraki seviyeye geçmek için aklımı temizlemek için daha bilgili biriyle bu süreci anlamak benim aşağı koşmak istiyorum.

İhtiyacım olan birçok bilimsel yazılım paket olarak dağıtılmaz. "./Configure" derleme değişkenlerini ayarlar ve "make" bağımlılıklarını kontrol eder "sudo make install" derlemesi tüm kütüphaneleri ve kutuları yerlerine koyar. Ancak asla işe yaramıyor. Ben nadiren bağımlılık cehennemi girmeden a) "./configure" aşamasından çıkıyorum ve eğer yaparsam, b) "sudo make install" muhtemelen kutumu tıkar.

a) Bağımlılık cehennemi çok sinir bozucu. Bazen kütüphaneye sahibim ama hoşuma gitmiyor. Veya kütüphane yüklemek istemiyor. Veya "configure" bulamıyor. Ya da dağıtımım olmamalı bir yere koydu. Veya sistemimde iki sürüm var. Sorun şu ki, bu sorunları nasıl teşhis edeceğimizi ve bu nedenle nasıl çözeceğimizi anlayamıyorum. Programcı olması gerekmeyen biri için öğrenilecek iyi referanslar nelerdir?

b) Benim anlayışım "yükleme yap" paket yöneticim bunun farkında olmadan bazı kütüphanelerin yerini alacak ve ayarları değiştirecektir. Bu nedenle, bazı programlar çalışmaz, diğerleri güncellenemez. Yani, "make install" komutunu kullanmazsam ve sadece kullanıcı dizinimde PATH'a sembolik bir bağlantı eklenmiş olarak derlenmiş ikili dosyayı saklarsam, net bir şekilde mi olacağım?

Kutum tek kullanıcı, tonlarca ücretsiz HD'ye sahip, bu yüzden sorunlarımı çözecekse kütüphanelerin birden fazla (düzinelerce) kopyasına sahip olmak umurumda değil. Alan ucuz.


3
Hangi dağıtımı kullandığınızı söylemezsiniz, bu ilginç bir bilgi parçasıdır. Bir Debian türevi çalıştırırsanız apt-get build-dep <package>, gerekli bağımlılıkları otomatik olarak yüklemek için kullanabilirsiniz .
Marco

CentOS 6 kullanıyorum (laboratuvarımızdaki süper guruya sahip olmak için), ancak Ubuntu kullanıyordum.
Lenz

Bir dağıtım paketleyicisinin hayatına hoş geldiniz. Tüm bu bağımlılık izlemesini yapmak özellikle zor değil, ama baş belası.
Gilles 'SO- kötü olmayı bırak

Bkz Olmayan Kök Paketi Yöneticileri ve belki diğer sorular etiketli olmayan-kök kullanıcıyı yazılım yüklemesi ve paket yönetimi ile ilgilidir.
Gilles 'SO- kötü olmayı bırak

Yanıtlar:


16

Çoğu paket bir <package>-dev (Debian tabanlı) veya <package>-devel(Red Hat tabanlı için) bina için bağlanmak için gereken kütüphaneler olacaktır.

Yani, örneğin kaynak gerektiriyorsa diyorsa libxmlDebian tabanlı sistemlerde bulacaksınız, libxml2velibxml2-dev ( apt-cache search <dependancy>bunları bulmak için kullanabilirsiniz ).

İhtiyacınız olacak libxml2-dev inşa etmek ve libxml2çalıştırmak için ihtiyacınız olacak.

./configureAdım genellikle bayraklar gibi destekler --with-libxml=/usr/lib/(doğru kütüphanelerde işaret etmek için ./configure --helptüm seçenekleri listeleme olmalıdır). Ayrıca genellikle yükleme konumunun değiştirilmesini destekler.--prefix=$HOME/sw . Paket yöneticinizin kontrol ettiği yazılımın dışında bir önek kullanmak, paket yöneticisi tarafından yüklenen yazılımla çakışmaları önlemenin en iyi yoludur.

Debian ve türevleri kullanarak üzerinde --prefixbir /usr/local/ya da/opt/local/ güvenli olmalıdır.

İhtiyacınız olan bir kitaplık (veya sürüm) paket yöneticisinden kullanılamıyorsa, sadece kaynağı indirin ve benzer seçenekleri kullanarak derleyin. En önemlisi --prefixpaket yöneticinizin dışını ve gerçekten kullanmak istediğiniz yazılımı derlerken kullanın --with-<library>=/<path/to/installed/library>.


5

auto-aptBunun için kullanılabilecek bir araç var.

Gönderen adam otomatik apt :

auto-apt, auto-apt ortamlarında çalışan programların dosya erişimini kontrol eden bir programdır. Bir program paketsiz bir dosyaya erişecekse, auto-apt dosyayı içeren paketi apt-get kullanarak kuracaktır.

Aşağıdaki gibi kullanılır:

auto-apt run ./configure

Başka bir yol apt-get build-dep <package>Debian tabanlı dağıtımlarda kullanmaktır .


apt-get build-dep <package>benim için çalıştı. Bir ./configuregerekli paketi daha öğrenmek için tekrar tekrar sinir bozucu oldu !
HeatfanJohn

2

RPM tabanlı dağıtımlar için, uygun paketleri oluşturmada elinizi deneyebilirsiniz (o kadar da zor değil ...).

Uygun bir paketin avantajları, paket yöneticinizin yazılımı takip etmesidir ve kurulumunuzu başka bir yerde / bir sonraki makinede kolayca çoğaltabilirsiniz. İleriye dönük uygun bir kaynak paketiyle (yeni yukarı akış sürümü, hata düzeltme yaması, temel kütüphaneler güncellenir), bir dahaki sefere hepsini sıfırdan anlamaktan daha kolaydır.

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.