Derlediğim yazılımı nereye koymalıyım?


Yanıtlar:


89

En azından Debian aromalı sistemlerde temel kural:

  • /usr/localşeyler için "sistem genelinde" -yani olan /usr/local, bir dağıtıma varsayılan olma eğilimindedir $PATHve standart bir UNIX dizin hiyerarşisini izler /usr/local/bin, /usr/local/libvb

  • /optSistem genelinde yapmak için güvenmediğiniz şeyler için, uygulama başına öneklerle - yani /opt/firefox-3.6.8, /opt/mono-2.6.7vb. Buradaki öğeler daha dikkatli bir yönetim gerektirir, ancak sisteminizi kırma olasılığı da daha düşüktür ve yalnızca klasörü sildiğinizden ve silindiği için kaldırılması daha kolaydır.


ilginci, bir çok program / appplications otomatik olarak yüklemeye önermek /optsen yoksa sudoyükleyin.
HongboZhu

50

Gerçekten karışmasını istemiyorsan, içine sokma $PATH.

İsterseniz $PATH, en azından yüklemek istemediğinizden emin olun /usr/local. Dağıtım tarafından yüklense bile birçok yazılımın orada göründüğünü gördüm /usr.

Özel derlenmiş yazılımı yüklemek için en sevdiğim yol dizimde $HOME. Bu şekilde sudohiçbir şey için kullanmak zorunda kalmazsınız ve sisteminizin geri kalanından çok hoş bir şekilde ayrılmıştır. Örneğin:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

İsterseniz Ve, daha sonra ekleyebilirsiniz /home/username/stage/binadresinden Müşteri $PATH.


1
Kesinlikle, giriş dizininizi kullanmak en iyi seçenektir. IMO.
bitek

1
+1 Anladım. Ben bash / ruby ​​/ python scriptleri için ~ / sbin'i ve derlenmiş kurulumlar için ~ / opt / ... komutunu ~ / bin içindeki diğer adlarla seviyorum.
Kris

4
Ev dizininizi, işleri daha basit hale getirdiği için kullanmak için +1; -1 $ PATH önlemek için öneri için -1 - orada standartlara göre "yerel kurulumlar için ayrılmış" dizinler var (ör /usr/local.).
Riccardo Murri

1
/ Usr / local 'dan kaçınmak için önerim, orijinal posterin (biraz belirsiz) paketlenmiş yazılıma müdahale etmeme isteğine dayanıyordu. / Usr / local ya da $ PATH içerisine bakacak şekilde "yardımcı olacak" bir sürü paket yazılım olduğu için, engelleyici olarak nitelendirdiğini düşündüm. Ancak bu gerçekten bir insanın kişisel ihtiyaçlarına ve hedeflerine bağlıdır. / usr / local, birçok durumda mükemmel bir seçim olabilir.
Sandy,

hiç kimse yorum # 2'deki "s" harfinin yanlış anlaşıldığını fark etmedi. Bu silinmesi gerekir
18'de

20

FHS, dağıtımların buna dokunmaması gereken yere / usr / local içine koyulduğunu söyledi. /usr/local/binİkili /usr/local/srckaynaklar için ve /usr/local/libkütüphaneler için. Daha fazla bilgi için FHS özelliklerine bakın


Peki ya yapılandırma? Paket yöneticisini kullanmadan MySQL kurduğumu söyle /etc/mysql, yapılandırma için hala kullanmalı mıyım?
Hubro

/usr/local/etcVarsayılan olarak bir klasör olduğunu fark ettim , sanırım bunu kullanmalıyım ... :-)
Hubro

10

Çoğu zaman kendi derlenmiş eşyalarımı içine koymayı severim /opt. Bir tür sahte standart yer. Ayrıca düşünebilirsiniz /usr/local, ancak eşyalarımı% 100 izole tutmayı tercih ederim.


1
distro, / opt (genellikle özel paketler) / opt içine epeyce şeyler koyma eğilimindedir / opt , dağıtımın dokunamadığını söylemez. ancak / usr / local
xenoterracide hakkında

1
Ben bir dağıtımın koymak şeyler görmedim /optancak defalarca gördüm, /usr/localdağıtıma geliyor önemsiz ile çevrili olan
Scott Anderson

distro'yu java koymak / kullanmak gibi kullanıyorum. Orada da akrobat okuyucu gördüm. / usr / local içine bir şeyler koyarlarsa, sistem güncellemelerinde üzerine yazılmasının güvenli olması gerektiğini söyleyen FHS'yi görmezden gelirler.
xenoterracide

Her biri kendi için sanırım. FHS güzel, ama bence bazen göz ardı ediliyor.
Scott Anderson,

Distro paketlerinde gördüğüm tek şey /usr/local, standart ağaçtakileri paralel hale getiren dizin hiyerarşileri ve TeX gibi şeyler için dizin dosyaları oluşturmaktı.
Phil Miller

9

Onları koy /usr/local/src.

Yaptığım şey bu dizindeki kaynağı çıkarmak. Gibi bir yol yaratacaktır

/usr/local/src/postgresql-8.3.7

Sonra ona sembolik bir bağlantı oluşturuyorum:

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

Bütün binanı içeri yap /usr/local/src/postgresql.

Bu şekilde işlem yapmak, hangi sürümü kullandığınızı sürümler ve belgeler arasında açmanız gerektiğinde yardımcı olur.


1
Gerekçenizi ve OP'nin nasıl uygulanabileceğini (sürüm oluşturma dahil) belirtmek için +1.
07'de

6

Bu bana hatırlatıyor, checkinstall'ı daha sık kullanmam gerekiyor ! Bu şekilde sadece her zamanki gibi yaparım

 ./configure
 make

bunu takiben

 sudo checkinstall

Bir .deb dosyası oluşturmak için ...


2
Soruyu cevaplamıyor.
JBentley

5

Olasılık varsa, yazılımınızı derlemenizi ve ardından FC paketi oluşturmanızı öneririm (yazılım paketlerini yüklemek için yum kullandığını düşünüyorum). Sonra kendi derlenmiş yazılımın paketini kurabilir ve tüm sistemi mahvetmeden kaldırabilirsiniz.


5

Kendi oluşturduğunuz birçok uygulamayı kolayca kurup kaldırmak istiyorsanız, Stow'u basit bir paket yöneticisi olarak kullanabilirsiniz .


5

Başına FHS , /usr/local/olurken, kaynaktan derlenen uygulamalar için kullanılır /opt/işletim sistemi satıcı tarafından desteklenmeyen 3. parti uygulamalar için kullanılır.


4

Tavsiye edebileceğim iki şey:

Sistem geneli: stow kullanın ve / usr / local / stow / package-version altında kurun. Sonra kolayca sürüm arasında geçiş yapabilirsiniz.

Evimde ya da / usr / yerel yazma iznim yoksa, kişisel olarak ~ / .local altındaki programları yükledim, bu da XDG standardına göre belirtilir .

Ben de hiç kullanmadım rağmen stow yerel olarak kullanabilirsiniz :)


3

Çoğu insandan biraz farklı bir kurulumum var çünkü çok fazla gelişim yapıyorum. Bunları içine kurduğum bir / home / jackson / bin / dizinim var.

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

Bunu her şey için yapmazdım, ama gelişim sırasında güzel.


3

Kaynak tarball'dan deb veya rpm oluşturmak zor değil. Bu şekilde, sisteminizi temiz tutmak için distro'nun paket yöneticisinin özelliklerini kullanabilirsiniz. Yaptığım şey bu, çoğu zaman: sadece küçük bir devir oluşturun.


2

Eğer bir uygulamayı derliyorsanız, PATH env değişkeninde çalıştırılabilir yolunu ekleyebilirsiniz. bu diğer kullanıcıları etkilemeyecektir.


Neden aşağı oy kullandı acaba? +1 "dengeleme"
türünden

Ayrıca neden :-) merak ediyorum. Kurulum izinlerine sahip olmadığınız cscope kullanmak için aynı çözümü kullandım.
Hemant

@phunehehe Muhtemelen soruyu cevaplamaya çalışmadığı için. Soru, yazılımı nereye yerleştireceğinizi sorar . Bu cevap, bir yere yerleştirdikten sonra neler yapabileceğinize dair bir ipucu verir . Hangi klasörlerin kullanılacağı konusunda bazı önerilerde bulunmak suretiyle iyileştirilebilir.
JBentley

2

Her zaman "ait olduğu yere koyma" seçeneği var ama önce basit bir rpm yaz.


1

Uygulamanızın sistemdeki tüm kullanıcılar tarafından kullanılabilir olmasını istiyorsanız ve gerekli izinlere sahipseniz, / opt. Uygulamanın yalnızca sizin (ve root'un) kullanımına açılmasını istiyorsanız, / home / username kullanın.


0

Bunu yapmanın en kolay yolu, kaynak paketi ( .src.rpmRPMites için) kapmak , paketini açmak, yeni kaynak / konfigürasyon / hack'i kesmek, ne olursa olsun, sürümü uygun şekilde değiştirmek ve derlemektir. Bunun kurulması, paket yöneticinizin yeni paketin farkında olmasını sağlar, bağımlılıklar için dikkate almanızı ve kaldırmanızı / güncellemenizi sağlar.

Bu ilk defa bir angaryadır, ancak yeni bir sürüm (veya bazı kritik yamalar) ortaya çıkarsa, güncellenmesi daha kolaydır. Diğer bir yararı, örneğin bir laboratuardaki makineler tarafından paylaşılmak üzere yerel yazılımla kendi havuzunuzu oluşturabilmenizdir.


0

Bir RPM yazın, bu zor değil, şeyleri nereye koyacağınızla ilgili yönergeler içeriyor ve bir çırpıda kaldırma işlemini gerçekleştiriyor.

Bunu yaparsanız , paketleme sisteminden gelen diğer tüm dosyalar gibi, altına /usrve altına olmayan dosyaları yükleyin /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.