--Prefix, ./configure'da kullanıldığında tam olarak ne yapar?


29

Bu yüzden, muhtemelen beni aptal gibi gösterecek basit bir sorum vardı, ama öğreniyorum

Ne zaman yaparım

./configure --prefix/usr/bin/

Önek ne yapıyor? Bu sadece paketi o yere mi kurmak

Ve bir cevap, karmaşık bir kurulum için daha ayrıntılı bir cevap verebilir ve onunla birlikte gelen önekleri ve seçenekleri ayrıntılı olarak açıklayabilir.

Bir apt-get install çalıştırsaydım, önek ile belirli bir yere nasıl kurardım

Ben de gördüm

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

Önek ./configure'da çağrılıyorsa, neden bu iki örnekte her zaman yapılıyor?

Şimdiden teşekkür ederim!



güncellenmiş cevabı kontrol et
luv.preet 11:00

freetds.org/userguide/config.htm , bu size daha fazla yardımcı olacaktır
luv.preet

Hakemler: Bu, yazılım yüklemeyle ilgili . "Ubuntu hakkında değil" olarak üç yakın konu dışı oy kullandı. Bu kapanış ile bir türlü tutarlı ise herhangi fiili sitesi politikası , ben yorum yapma öneririz. Aksi takdirde, bu kapalı olsa bile tekrar açılacaktır.
Eliah Kagan

Yanıtlar:


32

Yazılımı make installveya ile yüklediğinizde sudo make install, farklı dosyalar farklı dizinlere yerleştirilir. Kullanıcının çalıştırması gereken komutları çalıştıran komutlar genellikle bir bindizine, kütüphaneler genellikle bir libdizine, manuel sayfalar genellikle bir mandizine vb. Gider.

Eğer çalıştırdığınızda ./configure, seçenek nereye belirtmenizi sağlar bu dizinleri vardır . Adı, oluşturduğunuz program veya kitaplıktaki dosyaların yükleneceği dizinlerin her birinde yollarda görünen öneki girmenize izin vermesidir . Komut dosyalarının çoğu onu destekler ve ihmal eder ve yalnızca çalışır duruma gelir .--prefix--prefixconfigure--prefix./configure./configure --prefix=/usr/local

Bunu daha doğru cevaplamak için cevabımdan “global olarak” tar dosyasını nasıl kurabilirim? (bu, özellikle Unix ve Linux'ta ):

Yapınızı Yapılandırma

Çalıştırılarak derlenen kaynak kodunuz varsa ./configure ve onu yüklemek için makegenellikle make install(veya sudo make install) kullanırsınız. Bu, dosyaları build dizininden yükleme konumuna kopyalar. Kurmakta olduğunuz şey yürütülebilir komutlar verdiğinde, bu yürütülebilir dosyalar genellikle içinde olan $PATHveya eklemeyi düşünmeniz gereken bir dizine kopyalanır $PATH.

Bina ve yazılım yüklemeden çalışan olarak basit sıklıkta olmasına rağmen ./configure, makebazen make checkya make test, ardından make installya sudo make install, bazen seçenekleri es isteyecektir configureyapı yapılandırma komut dosyası. Özellikle, pfnuesel'in dediği gibi , yazılımın nereye yükleneceğini bu şekilde yapılandırıyorsunuz . Olsa make installadım aslında yazılım yükleyen, her şey kurulacağı yerleri tipik kurulmuş olan ./configureadım.

Bunun için en yaygın seçenek --prefix. configureNe kullanılacağını söylemediğinizde, varsayılan önek genellikle 'dir /usr/local. (Bazen, bir program veya kitaplığın kaynak kodu varsayılan olarak başka bir ön eke döner. Neyse ki bu nadirdir.)

Bu yüzden ./configuregenellikle eşittir ./configure --prefix=/usr/local. Yazılımı ana dizininize yüklemek için, ./configure --prefix=/home/galahad( /home/galahadana dizininiz ise) kullanabilirsiniz --prefix="$HOME". O zaman elbette yazılımı hala kurmanız ve kurmanız gerekir make. Kaynak kod biçiminde dağıtılan tüm yazılımların bu şekilde inşa edilmediğini söylemeliyim. Çıkarılmış kaynak kod arşivi içindeki dokümanları her zaman aramalısınız.

Ne --prefixDemektir?

Çalıştırdığınızda , yazılımın dizinin altına kurulması gerektiğini belirtirsiniz . Ancak bu nadiren, hiç değilse, gevşek dosyaları içine yerleştirir . Bunun yerine, farklı alt dizinlere farklı amaçlara hizmet eden dosyaları yerleştirir . Bu alt dizinler mevcut değilse, onları oluşturur../configure --prefix=directorydirectorydirectorydirectory

Executables genellikle gitmek directory/binonlar devam etse de, directory/sbinbunlar yaygın sistem yönetimi için kullanılan konum ya da gidebilir (daha nadiren bu gün) directory/gamesonlar oyunlar ise. Kütüphaneler directory/libya da benzer şekilde adlandırılmış başka bir dizine girerler directory/lib32. Başlık dosyaları girildi directory/include. Manuel sayfalar girildi directory/man. Yazılım tarafından kullanılan veri dosyaları girilir directory/share.

Önekdirectory olmanın anlamı budur . Farklı dosyaların yükleneceği konumları içeren ana dizindir. Böylece , veya tarafından çalıştırılan birçok dosya ve dizinin mutlak yollarında önek olarak görünür .make installsudo make install

Bunun bazı istisnaları var. Her zaman olmasa da, bunları kullanacak yazılımı kurarken oluşturulan sistem çapında konfigürasyon dosyaları genellikle içeriye girer /etc. Bu genellikle farklı bir önek belirtilmesinden etkilenmez. Çok fazla yazılım yükleseniz bile /usr/local, çoğunlukla kullanmaya devam edecek /etcve /usr/local/etcdizininiz muhtemelen varolmayacak, boş veya çok az dosya içerecektir.

Birçok sistemde, çalıştırarak tipik dosya sistemi düzeni hakkında daha fazla bilgi bulabilirsiniz man hier. Bir GNU / Linux sistemi kullanıyorsanız, Dosya Sistemi Hiyerarşisi Standardı ile ilgilenebilirsiniz .


2

Mevcut paketi veya yazılımı yapılandırmak için gerekli olan şeylerin yerini gösterir.

Basit bir durumda olduğu gibi, ssl kütüphanelerinin yerini söyleyebilir:

--with-libssh2=/usr/local  #used in configuring nagios

ve ayrıca hangi paketlerin yapılandırılmayacağını, programın sisteminize göre programın uygun derlemelerini yapmasını sağlar:

--disable-shared  # used in configuring nagios
--disable-link-balancer  # used in configuring Firehol

Bunlar sisteminize uygun bir derleme yapmak için sadece ekstra seçeneklerdir. Ben de öyle düşünüyorum. Başka bir şey varsa beni düzeltin.

Bu --prefix=PREFIXseçenek mimari bağımsız dosyaları içine yükler PREFIX. Bir make installkomutu çalıştırdığınızda , kütüphaneler PREFIX/libdizine, çalıştırılabilir PREFIX/bindizinlere vb. Yerleştirilir.

Bu argüman configurekomuta alınmazsa, varsayılan değer şudur /usr/local.

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.