her zaman yollarda olmaları ve kolayca bulunabilmeleri için ikili dosyaları nereye koyacağınız


10

(Kendi rpms kullanarak) kolayca yüklemek istediğiniz oldukça bazı ikili, komut dosyaları vb yapıyorum. Herkes için erişilebilir olmasını istediğimden, sezgim onları / usr / bin içine koymak olurdu;

  • PATH değiştirmeye gerek yok

ancak; çalıştırılabilir dosyalarım artık diğerlerinin havuzunda kayboluyor; oraya koyduğum tüm çalıştırılabilir dosyaları nasıl bulabilirim? Düşünüyordum ki:

  • / usr / bin içindeki bir alt dizin (bunu yapamayacağımı biliyorum; sadece düşüncemi göstermek için)
  • başka bir dizin (/ opt / myself / bin) ve her yürütülebilir dosyayı / usr / bin (birçok çalışma) ile ilişkilendirme
  • başka bir dizin (/ opt / myself / bin) ve / usr / bin dizinine bağlama (bu mümkün mü?)

bunu yapmanın "en iyi, en linux uyumlu yolu" ne olurdu?

DÜZENLEME: Şirkette bununla ilgili bir tartışma yaptık ve bu en uygun seçenekle geldik: / usr / bin / şirketine / usr / bin'den sembolik bir bağlantı ile ikili dosyalar koyun. Bu çözümden memnun değilim (tartışma devam ediyor)

Yanıtlar:


7

İkili dosyalarınızı kendi RPM'lerinizle birleştirirseniz, ne olduklarının ve nereye kurulduklarının bir listesini almak önemsizdir.

Misal

$ rpm -ql httpd| head -10
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
/etc/httpd/conf.modules.d/00-base.conf

Yürütülebilir dosyalarınızı ya /usr/binda /usr/local/binkendi RPM'nize koymanızı öneririm . Bunu yapmak oldukça önemsizdir ve bir RPM kullanarak yazılım dağıtımınızı yöneterek, bir paketi sürüm numarasıyla etiketleyebileceksiniz.

Hangi RPM'lerin "benim" olduğunu belirlemek?

RPM'lerinizi, binayı yapmadan önce üzerinde anlaşmaya varılabilecek bazı bilinen bilgileri kullanarak oluşturabilirsiniz. Etki alanımın sahip olduğu sistemlerde genellikle paketler oluştururum, bu nedenle X.mydom.com ana bilgisayarında oluşturulmuş tüm RPM'leri arayarak RPM'leri bulmak önemsizdir.

Misal

$ rpm -qi httpd
Name        : httpd
Version     : 2.4.7
Release     : 1.fc19
Architecture: x86_64
Install Date: Mon 17 Feb 2014 01:53:15 AM EST
Group       : System Environment/Daemons
Size        : 3865725
License     : ASL 2.0
Signature   : RSA/SHA256, Mon 27 Jan 2014 11:00:08 AM EST, Key ID 07477e65fb4b18e6
Source RPM  : httpd-2.4.7-1.fc19.src.rpm
Build Date  : Mon 27 Jan 2014 08:39:13 AM EST
Build Host  : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

Bu Build HostRPM'lerdeki çizgi olacaktır .

/ Usr / bin / company kullanımı?

Muhtemelen böyle bir yerin kullanılmasını önermem. Temel olarak, tüm sistemlerinizin dahil edilmesi için $PATHartırılmasını gerektirir ve standart değildir. Bir şeyleri özelleştirmek her wannabee Unix yöneticisi için her zaman bir "geçiş hakkı" olmuştur, ancak kesinlikle gerekli olmadığı sürece her zaman cesaretini kırıyorum.

Özelleştirme ile ilgili en büyük sorun, hem çevrenizi korumak hem de yeni insanları çevrenizi nasıl kullanacağınızı hızlandırmak için bir yük haline gelmeleri.

RPM'den bir dosya listesi alabilir miyim?

Evet, bunu başarabilirsiniz, ancak 2 RPM çağrısı gerektirir. Birincisi, X.mydom.com ana bilgisayarında oluşturulan paketlerin bir listesini oluşturacaktır. Bu listeyi aldıktan sonra, bu paketlerin her birinin sahip olduğu dosyalar için RPM sorgulamasını yeniden çağırmanız gerekir. Bunu, bu tek astarı kullanarak yapabilirsiniz:

$ rpm -ql $(rpm -qa --queryformat "%-30{NAME}%{BUILDHOST}\n" | \
    grep X.mydom.com | awk '{print $1}') | head -10
/etc/pam.d/run_init
/etc/sestatus.conf
/usr/bin/secon
/usr/bin/semodule_deps
/usr/bin/semodule_expand
/usr/bin/semodule_link
/usr/bin/semodule_package
/usr/bin/semodule_unpackage
/usr/sbin/fixfiles
/usr/sbin/genhomedircon

ve yüklediğim tüm rpm'ler tarafından yüklenen tüm ikili dosyaların bir listesini nasıl alabilirim? Neyse ki firmamızın adını rpm isimlerine koymayı kabul ettik; yani "rpm -qa | grep şirketi" gibi bir şey yüklü rpms listeler
Chris Maes

@ChrisMaes - güncellemelere bakın. Hangi pkgs "benim" olduğunu belirlemek için yapı ana bilgisayar kullanın.
slm

Güncelleme için teşekkürler; rpms'im (adında "şirket" olan) sahip olan tüm ikili dosyaları bulmak için bir komut ekleyebilirseniz, bu harika olurdu
Chris Maes

@ChrisMaes - daha fazla rehbere ihtiyacınız varsa güncellemeye, LMK'ya bakın.
slm

çok güzel yazılı cevap; tam ve iyi biçimlendirilmiş. Çok teşekkürler!
Chris Maes

4

Açık bir öneri, ikili dosyalarınızı veya paketlerinizi özel bir şekilde adlandırmaktır. Örneğin cm-, bu yayında verilen baş harflerine göre bunları önek olarak ekleyebilirsiniz. Eğer rpm'leri kuruyorsanız, FHS'ye göre /usr/bin(kullanıcı düzeyinde yürütülebilirler ise) girmeleri gerekir . Onlar gitmesin /usr/local/binörneğin. Bu sadece yerel kurulumlar içindir.

Kayıt için, ikili dosyaları özel bir dizine koyma ve onları hiç çekici bulmama fikrini bulamıyorum, ancak bu tür şeylerin bazen yapıldığını düşünüyorum. Ayrıca, hangi ikilinin hangi pakete ait olduğunu bulmanız gerekirse, sadece paketleme sistemini sorgulayabileceğinizi unutmayın.


3

Sistemin veya dağıtımın bir parçası olmayan ikili dosyalar genellikle

/usr/local/bin

dizin genellikle standarttadır, $PATHböylece ikili dosyalarınız bulunacaktır.


normalde / usr / local / bin bu makinede yalnızca "yerel olarak" bulunan ikili dosyalar içindir; rpm kullanarak diğer makinelere dağıtacağım ikili dosyalar için değil ...?
Chris Maes

2
Linux altında, /usr/local/binmanuel olarak yüklenen yürütülebilir dosyalar içindir. Paket yöneticisi tarafından yönetilen yürütülebilir dosyalar girer /usr/bin.
Gilles 'SO- kötü olmayı bırak'

@Gilles, soruyla ilgili ilk yorumum tek bir makineye yüklemek ve ikili dosyaları her kullanıcı için kullanılabilir hale getirmekti ($ HOME'a yüklenmiyor). Şimdi anladığım kadarıyla bunun olmadığını anlıyorum.
Matteo
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.