/ Usr / sbin, / usr / local / sbin ve / usr / local / bin ne anlama geliyor?


22

Tüm bin ve sbin klasörleriyle açıklayalım (dosya sistemi hiyerarşisinden standart):

  • /bin sistem düzeyinde ikili dosyalar içindir
  • /sbin genellikle sistem yükleyici ve sistem yöneticileri için kullanılan sistem seviyesindeki ikili dosyalar içindir.
  • /usr/bin temel ikili dosyalar için değil
  • /usr/sbin- Burası karışıklığın başladığı yer - sistem yöneticileri için gerekli araçlar değil mi? Bunun anlamı ne? Deneyler için?
  • /usr/local/bin - bu klasör hakkında haber yok
  • /usr/local/sbin- yerel olarak kurulmuş sistem yönetim programları. Tekrar? Nasıl hakkında /usr/sbin?

Yani soru şu: Orada pek çok dizinleri ve anlamları nelerdir Neden /usr/sbin, /usr/local/sbinve /usr/local/bin?

Birçok program arşivler aracılığıyla dağıtılır ve bunları kaynak kodundan oluşturmak zorundayız. Genellikle dosya doldururlar, bu yüzden oldukça kolaydır. Bu işlem, belirli bir program için belirli klasörler oluşturmadan usr / local / lib, usr / local / bin ... usr / local / içinde dosya oluşturmayı içerir.

Neden bu kadar?

Bence bu doğru değil çünkü programı kaldırmamız gerekirse, programın yaratıcısı ilgilenmezse, tüm dosyalarını manuel olarak silmemiz gerekir.


Sergey, Lütfen Süper Kullanıcıya mesaj yazmak için Markdown sözdizimini kullanın . İçlerinde HTML olması, düz metin olarak onları okumayı ve düzenlemeyi gerçekten zorlaştırır.
slhck

Tamam, deneyeceğim
Sergey

Dizin dosya sistemlerinden nefret ediyorum. Neden birileri dosyaların sadece etiketlendiği bir dosya sistemi icat etmiyor? Bunun yanı sıra, dizinler anlamsızdır, çünkü inodes dosyaların parçalanmasına izin verir. Bir dizin, çoğunlukla bir bölüm gibi, bir yol değil, sabit sürücü bellek alanının ayrılmış bir parçası olmalıdır.
şaka

[FilesystemQA] sitesinde

Yanıtlar:


22

1. Dizin yapısı

Bu, Dosya Sistemi Hiyerarşisi Standardında ( 2.3 PDF ) ele alınmalıdır.

/ bin / Essential komut ikili dosyalarında, tek kullanıcı modunda kullanılabilir olması gerekir;
            tüm kullanıcılar için, örneğin, kedi, ls, cp

/ sbin / Essential sistem ikili dosyaları, örneğin, init, ip, mount.

/ usr / bin / Gerekli olmayan komut ikili dosyaları (tek kullanıcı modunda gerekli değildir); 
            bütün kullanıcılar için

/ usr / sbin / Temel olmayan sistem ikili dosyaları, örneğin çeşitli ağ servisleri için numaralar.

/ usr / local / Bu konağa özel yerel veriler için üçüncül hiyerarşi. 
            Genellikle başka alt dizinleri vardır, örneğin bin /, lib /, share /

2. kurulum

Mümkün olan her yerde paket yöneticisi kullanıyorum (örneğin yum veya apt-get). Bu, çok sayıda uygulama için mümkündür, birkaç durumda bir havuz eklemek zorunda kalabilirsiniz. İkinci tercihim RPM'ler gibi düşük seviyeli paketler olacak ve kaynaktan derlemek benim son çarem olacaktı (ama bazı insanlar bunu tercih ediyor)

Bazı paket yöneticileri RPM'lerden yükleme yapabilir (örn. yum install oddity.rpm)

Eğer kaynaktan bir derleme yapıyorsanız, sistem kurucusunun ne yaptığını bilmesi için muhtemelen kendi paketinizi oluşturmak için büyük bir adım değildir.

O zaman problemin örneğin yum remove packagename

Alternatif, gerçekleştirilen tüm sysadmin etkinlikleri hakkında iyi belgeler tutmaktır (yine de bir günlük dosyasında bir günlük dosyası tutuyorum)


3
Hala usr / sbin, usr / local / bin ve usr / local / sbin arasındaki farkı anlamadım. usr / local'ın bu ana bilgisayara özgü olduğu söylenir, usr / sbin değil, usr / bin de ana bilgisayara özgü değil mi? İkinci soru repolarda olmayan programlar hakkındaydı - kaldırma işlemini her zaman işe yaramazsa - bu programları nasıl sileceğimi sordum?
Sergey

3
@Sergey Bu tarihidir. /usr/(s)binbir ağ dosya sisteminden monte edilme eğilimindedir. Bu yüzden makineyi başlatmak için gereken her şeyin içinde olması gerekiyordu /(s)bin. Çoğunlukla /usr/localşimdi, paket yöneticisinin dışına yüklediğiniz programlar için (yapmamanız gereken) kullanılır.
Let_Me_Be

elle gerek duymadığınız programlar için artık düzenli bir silme (rm) yapmanız gerekmiyor. / usr / local, ağda önyükleme sistemlerinde olduğu gibi makineye özgü veriler içindir / genellikle ağ paylaşımında usr. @Let_Me_Be Paket yöneticisinin dışından program yüklemek mükemmel derecede iyidir ve sık sık gerekli olabilir.
Lamar B

@Sergey: Aynı ortamdan kurulmuş iki bilgisayarınız varsa ve daha sonra manuel olarak bunlardan birine bir yazılım eklerseniz, geleneksel olarak bu, "standart" ın bir parçası değil, o makineye yerel olduğundan / usr / local olur. satıcı tarafından sağlanan programlar kümesi. Diğerlerinin de söylediği gibi, bu tarihsel uygulama günümüzde pek çok paket kurucusu tarafından takip edilmiyor - Sanırım standart depolardaki yazılımlar, kullanıcı tarafından kurulan yerel kişiselleştirme yerine, satıcı tarafından sağlanan isteğe bağlı yazılımlar olarak daha etkin bir şekilde ele alınmaktadır.
RedGrittyBrick 19:11

3

Tüm * / sbin dizinlerindeki sayfalar sadece sistem yöneticileri için faydalı olma eğilimindedir. Normal bir kullanıcıysanız onları PATH'inizden uzak tutabilirsiniz.

Farklı dizinler, tek bir diskte tek bir unix makineniz varsa çok anlamlı değildir, ancak büyük bir sisteminiz ve farklı bölümleriniz varsa daha anlamlı olur. Unutmayın ki, bu alışkanlıkların birçoğu sistemler biraz farklıyken 80'lerde ve 90'larda yapılmıştı.

/sbinçok küçük olma eğilimindedir . Bunlar gerçekten hortum tutulduğunda ihtiyacınız olan yardımcı programlardır. Bunu / root ve / lib içeren en az bir kök bölüme koyarsınız. / Sbin içindeki nesnelerin tümü statik olarak bağlanmış, çünkü / usr bölümünüzün bağlanması durumunda, dinamik olarak bağlanmış herhangi bir uygulama işe yaramaz. fsck burada ve statik olarak bağlanmış. Eğer / usr'a bağımlıysanız, belli ki fsck / usr / 'a katılamazsınız. Tabii ki, eğer kök bölüme hortumlanmışsa, çok sıkılırsınız. Bu kadar küçük bir bölüm olmasının nedeni budur - burada çok az sayıda blok kullanarak hatalı disk bloğunun olasılığını düşürün.

/usr/sbinİkili dosyalar, en azından tek kullanıcı moduna geçebileceğiniz ve tüm hacimlerinizi bağlayabileceğiniz genel sysadmin araçlarıdır. Dinamik olarak bağlantılı olmalarına izin verilir.

/ Sbin (/ sbin on / partition) ve / usr için ayrı bölümler, yedeklemenin hem zaman hem de teyp için çok pahalı olduğunu hatırladığınızda daha anlamlı olur. Ayrı bölümlerde olsaydı, onları farklı şekilde zamanlayabilirsiniz.

/usr/localbir ağ dosya sistemi olabilir. Bu yüzden birçok makinede paylaşılabilen yerel olarak yazılmış sysadmin araçları bazen / usr / local / sbin 'e gider. Açıkçası hiçbir ağ tamir aracı oraya gidemez.

Yine, bir çok şey yönetilen makinelerde ağ ortamında bulunan büyük makinelerdeki büyük makinelerde, tek bir kök bölümündeki bir Linux makinesinde daha az anlamlı bir şey oldu.


2

Gerçekten ikinci sorumuzun burada Süper Kullanıcı'da ayrı bir soru olmasını sağlamalısınız. İlki ile ilgisi yok.

Evet, her yerde dosyaları olması berbat. Bu yüzden birçok ambalajlama çözümü var. RedHat her yerde kullanılan RPM'yi yarattı. Solaris'in paket formatı vardı. HP / UX’in kendilerine ait olan, apt ve daha birçok paket formatı var. Eşyaları doğru yerlerde (/ usr / bin, / usr / lib) uygun yerlerde tutun, fakat kolayca eklemeye ve çıkarmaya izin verin.

Kaynak için, / usr / local alt dizininde yapılandırmanıza ve yüklemenize izin veren araçlar vardı ve sizin için / usr / local / bin sembolik bağlarını işleyecekti. Geniş paket araçların yayılmasından bu yana, bu daha az gerekli ve isimlerini unuttum.

Bazı insanlar / opt / packagename komutunu kurmayı ve orada her şeyi bir arada tutmayı sever . İyi: her şey bir dizinde ve bir kaldırma rm -rf /opt/packagename. Bunun dezavantajları, herkesin PATH'ına / opt / packagename / bin'i eklemek ve insanların genellikle ayrı bir bölüme koyulmamasını / seçmemesi ve kök bölümünü doldurmanız.


1
RPM her yerde kullanılır mı? Debian formatının her yerde kullanıldığını söylemek gerçeğe daha yakın olmaz mıydı?
iconoclast

0

İkinci sorunuza cevap vermek için:
Genellikle programlar paket yönetici olarak adlandırılır . Bir paket yöneticisi genellikle ikili paketleri alır (belirli bir platform için derlenmiş yazılımlar) ve onu dizinlerin etrafına fırlatır (kaynak kodunu indiren, makinenizde derleyen ve yükleyenler vardır). Bu nedenle, paket yöneticisi belirli "programlara" (paket) ait dosyaların nerede bulunduğunu bilir ve paketi kaldırmak istediğinizde paket yöneticisi her şeyi temizler.
Kaynak kodu kendi başınıza derlerken bile

make

ve ile yükleyin

make install

genellikle yapabilirsin

make uninstall

dosyaları dosya sisteminden siler.


Kaldırma işlemi yalnızca programlayıcıda yapılabilir, bu işlem make dosyasına eklenir. Soru şuydu - make lift'in çalışmadığı yerlerde nasıl sililir?
Sergey

1
Doğru, ancak makefile'da kaldırmadan ciddi bir proje bulmanın oldukça zor olduğunu düşünüyorum (bununla hiç problem yaşamadım). Eğer kaynaktan derlerseniz ve makefile kaldırılmazsa, bence bunu yapmanın kolay bir yolu değil, ama yine de make installçıktıyı ayıran ve burada belirtilen dosyaları silen bir komut dosyası yazabilirsiniz .
Matej Repinc
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.