Kaynaklardan programlar nasıl derlenir ve kurulur


39

Bu benim Linux keyfimi gerçekten sınırlayan bir konudur. Eğer uygulama bir depoda değilse veya bir kurucu betiği yoksa, bir uygulamayı kaynağından nereye ve nasıl yükleyeceğimi gerçekten zorluyorum.

Nispeten Windows'a göre, kolaydır. Bir sihirbazdaki tüm işleri yapan bir yükleme uygulaması kullanmanız gerekiyor (hemen hemen). Linux ile ... çok değil.

Peki, bu konuda herhangi bir ipucunuz veya talimatınız var mı veya Linux programlarını kaynaktan nasıl, neden ve nereye kurmanız gerektiğini açıkça açıklayan web siteleri var mı?


7
"Nispeten Windows'a göre, kolaydır. Bir sihirbazda tüm işi yapan bir yükleyici uygulamasını kullanmanız gerekir (hemen hemen). Linux ile çok değil." Soruda zayıf nokta var. Windows ile, kaynak kodunu nadiren alırsınız, bu yüzden paketi kimin yaptığının insafına kalırsınız. Bunu düşünürseniz, "Linux paketi yoktu, bu yüzden kaynaktan inşa etmeliyim" demekten pek de farklı değil. başlamak için bir yol yoktu. Kaynaktan inşa etmek genellikle * nix-land'taki son çaredir, ancak nadiren Windows-ville'de bir seçenektir.
Avery Payne

2
Olduğu söyleniyor ... +1 tüm üyeler için * nix sistemlerine cevap verilmesi gereken ortak bir soru sormak için çarptı. :) Kaynaktan inşa etmek bazen kötü bir hatayı düzeltmekle bir sonraki yazılım sürümüne kadar acı çekmek arasındaki fark anlamına gelir. Bu gerçekten o kadar da kötü değil ve burada belirtildiği gibi, ne arayacağınızı ve nasıl yapacağınızı bildiğiniz zaman, oldukça acısız.
Avery Payne

Yanıtlar:


22

Normalde, projenin nasıl oluşturulacağı ve kurulacağı ile ilgili talimatları içeren bir web sitesi olacaktır. Bunun için ilk Google.

Çoğunlukla ya yapacaksın:

  1. Kaynak kodun belirli bir sürümünün yayınlandığı bir tarball'ı (tar.gz veya tar.bz2 dosyası) indirin
  2. Tarball'ı tar zxvf myapp.tar.gz, gzipli tar jxvf myapp.tar.bz2tarball veya bzipped tarball gibi bir komutla çıkarın.
  3. yukarıda oluşturulan dizine cd
  4. Çalıştırmak ./configure && make && sudo make install

Veya:

  1. En son kaynak kodunu resmi kaynak havuzundan çıkarmak için git veya svn veya herhangi bir şekilde kullanın.
  2. yukarıda oluşturulan dizine cd
  3. Çalıştırmak ./autogen.sh && make && sudo make install

Configure ve autogen.sh, yazılımın nereye kurulduğunu belirtmek için bir --prefix argümanını kabul eder. Kontrol etmenizi öneririm Kendimi derlediğim yazılımı nereye koymalıyım? ısmarlama yazılım yüklemek için en iyi yer tavsiye için.


Autogen.sh en son sürüm alırken neden kullanılıyor ancak resmi bir sürüm için configure / make kullanılıyor?
Louis Salin,

1
Tipik olarak "kanama kenarı" yazılımını isteyen kişiler, sürüm kontrol yazılımından (git, subversion veya CVS gibi) sürümleri çeker. Bu "kanama kenarı" dır, çünkü muhtemelen (muhtemelen) çalışma için (en azından çoğunlukla) itiraz edilen serbest bırakılmış bir tarballın aksine denenmemiş. Mantıklı olmak?
Matt Simmons

2
@Matt, kesinlikle mantıklı ama sanırım Sandy'nin şimdi her git'd / svn'd bagajında ​​bir autogen.sh varmış gibi görünmesini sağladı.
42'de reiche

1
Ve her tencerede bir tavuk ... ya da onun gibi bir şey. Heck, arada bir, ben de bir config betiği olmadan yazılımla karşılaşıyorum. Bunu yapmanın kolay ve birleşik bir yolu olsaydı, paketlere ihtiyacımız olmazdı ;-)
Matt Simmons

Matt kesinlikle haklı, bu yüzden "çoğunlukla" dedim ve ilk önce projenin web sitesine bakılmasını savundum. Autogen.sh/configure tavsiyesi hemen hemen her GNOME modülünü ve bir sürü başka projeyi de içerecektir. Bazı projeler automake kullanmazlar ve sadece Makefile'leri olur ve siz sadece koşacaksınız make && sudo make install. Bazı Python projelerinde yalnızca yüklemek için çağıracağınız bir setup.py dosyası olacaktır (çünkü gerçek derleme ayarları yoktur). Dışarıda da birçok kurulum / kurulum sistemi var. Umarım README veya INSTALL dosyaları ne yapılacağını tam olarak açıklayacaktır.
Sandy

3

Sadece paketleri kaynaktan derleyen ve tüm paket bağımlılıklarını, bayraklarını vb. İşleyen paket yöneticileri olduğunu eklemek istiyorum.

BSD sistemlerinde ports: Limanlar Koleksiyonunu Kullanma

Debian'da, apt-getpaket yöneticisi de kaynaktan yükleyebilir: APT NASIL: Kaynak paketlerle çalışma (Aynı Ubuntu, Linux-nane ve Debian'a dayanan her şey için geçerli)

Gentoo dağıtımı portage, tüm sistemi sadece kaynaktan derleyen paket yöneticisini kullanır : Portage Giriş .

Slackware paketleri derleyebilir ancak bunun için bir paket yöneticisi olup olmadığını bilmiyorum .. =)

Her neyse, her zaman yukarıda belirtilen Sandy gibi paketleri manuel olarak derleyebilirsiniz =) Ayrıca yöneticileri başka herhangi bir dağıtım sisteminde kullanmak apt-getveya portagepaketlemek mümkün olmalıdır ...


1
"Apt-get paket yöneticisi kaynaktan yükleyebilir" demek yanlıştır. Alıntılanan bölüm, Debian kaynaklarından nasıl bir Debian paketi yaratabileceğini anlatıyor . Değil memba kaynaklarının keyfi.
Faheem Mitha

2

Yüklemek istediğiniz belirli program veya uygulamayla birlikte gelen belgeleri okumak en iyisidir. Genellikle tarball'ların içinde (genellikle indirebileceğiniz uygulama kaynak arşivi) readmes / README'ler veya belki de söz konusu uygulamayı kurmanın tercih edilen yolunun ne olduğunu öğrenmek ve okumak için INSTALL dosyaları bulunur. Kısacası: RTFM;)


Buraya geldim, çünkü README Linux altında inşa etmek için gereken tüm şartları sağladı, ancak yalnızca Windows yükleme yönergelerine sahip. Kabul edilen cevap benim için çalıştı ve muhtemelen çoğu zaman çalışıyor. Sanırım ./configure rotasını denemek ve işe yaramazsa README'ye gitmek (yani bir bağımlılığı kaçırmak ve derleyici çıktısını okuyamamak) için daha iyi bir tavsiye.
Stephen C

1

FreeBSD'de Port Koleksiyonunu kullanmak için bir özet:

Limanı Bul

Limanlar kategoriye göre düzenlenir, böylece limanda hangi kategorinin bulunduğunu bilmiyorsanız önce onu bulmanız gerekir:

cd /usr/ports
make search name=myport

Bazen bu şekilde çok fazla giriş var. Şahsen tercih ederim:

find /usr/ports -name myport* -print -depth 2

Kullanırken *genellikle bir portun çoklu versiyonları olduğundan arama yaparken kullanın . Derinlik argümanı, geri dönüş sonuçlarınızın, istemediğiniz eşleşmelerle gereksiz yere karışık kalmamasını sağlar.

Yapılandırma

Genellikle, bazı yapılandırma yapmak istersiniz; Apache ve Postgres gibi yazılımlar pratikte gerektirir. Üç ana seçenek vardır: komut satırı, çevre ve yapılandırma dosyaları. Komut satırına başlamak için:

make showconfig

bu, varsayılan yapılandırma seçeneklerini listeler. Varsayılanları beğendiyseniz derlemeye ve yüklemeye hazırsınız. Değilse,

make config

istediğiniz seçenekleri seçebileceğiniz bir iletişim kutusu açılacaktır. (Bununla karıştırmayın ve make configurebağlantı noktanızı seçtiğiniz seçeneklerle yapılandırın!) Bu genellikle yeterlidir ancak Apache gibi bazı yazılımlar için basit bir iletişim kutusunun işlemeyeceği karmaşık bir yapılandırma vardır. Bunun için, bazen size daha fazla bilgi verecek bir takım ek hedefler verecek Makefile (ler) e de bakmalısınız. Apache örneğine devam etmek için

make show-modules
make show-options
make show-categories

seçtiğiniz modülleri, iplik seçeneklerini ve benzerlerini ayarlama konusunda size bilgi verecektir. Bağlantı noktanızın varsayılan değerleri çoğunlukla iyi durumdasa ve yalnızca birkaç şeyi değiştirmek istiyorsanız, yalnızca anahtar = ortam değişkenleri gibi değer çiftlerini de geçebilirsiniz:

make MYVBL1=MYVAL1 ... install clean

Ayrıca, seçeneklerle anahtar seçeneklerini ayarlayabilirsiniz -D:

make -D MYVAR -D MYOTHERVAR ... install clean

Ancak karmaşık yapılandırma için komut satırı iyi çalışmayacak ve ilk iki yöntemden hiçbiri etkili olmayacaktır. Bu durumda bir yapılandırma dosyası oluşturabilir ve bunu make__MAKE_CONF değişkeniyle iletebilirsiniz. FreeBSD varsayılan bir konfigürasyon dosyasına sahiptir: /etc/make.confgenellikle önceden kurulmuş portlar ve diğer sistem ayarları hakkında bilgi içerir. Başlamak için port seçeneklerinizle bir dosya oluşturun, arayın ~/myport.mkve ardından bu dosyayı /etc/make.conf ile birleştirin:

cat /etc/make.conf ~/myport.mk >> ~/make.myport.conf

yapılandırmanızı iki kez kontrol edebilirsiniz:

make showconfig __MAKE_CONF=~/make.port.conf

ve eğer her şey iyi görünüyorsa:

make install clean __MAKE_CONF=~/make.myport.conf

DİKKAT! Yapılandırma ayarlarınızı make configurebir kurulumdan sonra veya tamamen veya tamamen ayarlamanız gerekiyorsa, öncelikle yapılandırmanızı silmeniz gerekir :

make rmconfig

Bunu yapmamak, bağlantı noktaları alt sistemi, bağlantı noktanızın makevarsayılan değerleri ve istediğiniz yapılandırma arasında beklenmeyen etkileşimlere neden olur .

Bu bir özeti için çok şey var, ancak yapılandırma karmaşıklığı çoğunlukla uygulama ile ilgili, liman değil. Mesela Bash, gerçekten hiçbir seçeneğe sahip değil.

Kurulum

Bu kolay kısmı:

make install clean

ya da yapabilirsin

make build
make install
make clean

bu sadece daha çok yazıyor.

Hepsi bukadar. Açıkçası bağımlılıkları ve konfigürasyon seçeneklerini tekrarlı bir şekilde listelemek, yamalar ile güncellemek vb. Gibi yapabileceğiniz daha çok şey var. Burada sizi El Kitabının Limanlar bölümüne , liman alt sisteminin man sayfasına (ek hedefler hakkında iyi bilgi) ve man sayfasına yönlendireceğim.make


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.