Yüklü yazılımlar Linux'ta nerede saklanır? [çift]


11

Olası Çoğalt:
Tipik bir Linux programının kurulu olduğu yer

Linux'ta yeniyim ve paketler hakkında biraz daha sormak istiyorum.

Windows'da bir .exedosyayı indirip yüklüyorum. Yüklerken, bu uygulamanın depolanmasını istediğim yolu tanımlarım. Bu klasörde uygulama için gerekli tüm dosyalar var.

Ancak, Linux kullanarak bir paketi kurduğumda yumveya kullanarak apt-get, paketin nereye yüklendiğini ve bu uygulama için gerekli dosyaların nerede saklandığını bilmiyorum. Yapılandırmaların çoğunun /etcdizinde olduğunu gördüm . Fakat Linux neden bir uygulama için gerekli dosyaları farklı klasörlerde saklıyor?

Birisi bana paketlerin nasıl kurulduğunu ve nerede ve nasıl depolandıklarını söyleyebilir mi? Paket yönetimi konusundaki anlayışım yanlışsa, lütfen beni düzeltin.


Dağıtımınız kullanıyorsa rpm, rpm -q --whatprovidesbelirli bir dosyanın paket adını rpm -q -abulmak ve ardından hangi paketin yüklü olduğunu bulmak için kullanabilirsiniz .
David Schwartz

Birlikte apt-get, paket yüklüyse dpkg -L PKGNAME, kullanılmıyorsa kullanın apt-file list.
Thor

Yanıtlar:


14

Birçok programları (ikili / komut dosyaları) sona /binveya /usr/binçeşitli yapılandırma dizinleri diğer bölgelerinde (/ altında sık sık birlikte etczaten belirtildiği gibi).

Herhangi bir özel komut için size ödeme yapabilirsiniz whereis

whereis prog_name

ve bu komutun nerede bulunduğu hakkında size bazı bilgiler verecektir. Ayrıca deneyebilirsiniz hangi

which prog_name

Ayrıca, bu grafik ve açıklama / örnekler yardımcı olabilir.


1

peki neden sadece konfigürasyon ayrı bir dizine kaydedildi?

@KOU Bunun tarihini bilmiyorum ama farklı bir dizinde olacağı için programların konfigürasyon bilgilerini karıştırmadan güncellenebilmesi için olabilir. Bu yolla, farklı sürümler aynı yapılandırma bilgisini kullanabilirdi (format vs'nin değiştirilmediğini, yani uyumlu olduğunu varsayarak). Ben sadece burada keşfe çıkıyorum. Kesin bir cevap için Unix / Linux dosya sisteminin tarihini araştırmanız gerekir.
Levon,

1
Tüm sistem çapında yapılandırma dosyalarını yerleştirme kararının geçmişinden emin değilim /etc/, ancak yapılandırma dosyaları için tek bir merkezi konuma sahip olmaları onları yedeklemeyi çok kolaylaştırır. (Windows'ta sistem genelinde yapılandırma dosyalarını yedeklediklerini, tüm dosya sistemi ve kayıt defterlerine dağıldıklarını hayal edin ...)
Li-aung Yip

@ Li-aungYip İyi nokta
Levon

5

Windows altında, özellikle eski sürümlerde, programların yapılandırma dosyalarını ve sabit olmayan verileri C:\Program Filesdizinlerinde depolaması yaygındı . Bu, programların genellikle nasıl yüklendiğine ve tek kullanıcılı, ağa bağlı olmayan, dosya izni olmayan DOS'a göre çalıştırılmasından türetilmiştir.

Güvenlik açısından bakıldığında bu kötü bir fikirdir. Yürütülebilir kodun yaşadığı yerler değiştirilebilir verilerden ayrılmalıdır. Bu şekilde, yüklü ikili dosyaların yetkisiz kullanıcılar tarafından değiştirilmesini önlemek için uygun dosya izinlerini uygulamak daha kolaydır. Benzer şekilde, ana yürütülebilir dosyalardan ayrı olarak güncellenebilen kütüphane dizinleri de ayrı bir dizinde bulunmalıdır.

Vista ve UAC sıkıntılarının ortaya çıkmasıyla, bu gelenek nihayetinde ciddi çekiş gücü kaybetmeye başladı.

UNIX ve daha önceleri çok kullanıcılı bir sistem olan Linux, çalıştırılabilir dizinleri diğer dizinlerden daha önce ayırma eğilimindeydi, çünkü root dışındaki kullanıcıların yüklü ikili dosyaları değiştirmelerini engelleme ihtiyacı vardı. Ayrıca yüzden /usrve hatta /sbinbazen ayrı bölümler vardır - özellikle güvenlik bilinçli yönetici bir yükleme / yazma / kaldırma olması gereken okuma salt okunur bu bölümleri mount ve bunları yeniden monte edebilirsiniz.

Paketler genellikle bir paket yöneticisinden yüklenir. aptitude(Debian ve türetilmiş dağıtımlar), yum(Redhat ve türetilmiş dağıtımlar), pacman(bunun hangi dağınıklığı unutma ...) ve diğerleri gibi çeşitli paket yöneticileri var .

Paket yöneticisi, sofistike (ve ücretsiz) bir "uygulama mağazası" gibi depolara göz atmanıza, indirmenize, yüklemenize, sorgulamanıza ve kaldırmanıza olanak tanır. Bağımlılıkların halledilmesini sağlamak ve şu anda kurulu olanları izlemek sorumluluğunu üstlenir.

Genellikle paket yöneticisi, manuel olarak indirdiğiniz bir paketin üzerinde aynı işlemlere izin verir. Ayrıca, kendiniz oluşturduğunuz veya kendiniz derlediğiniz yazılımdan kendi yazılımınızı oluşturmak istiyorsanız da kullanılabilir.

Paketin kendisi yürütülebilir bir dosya olmadığından, ne yaptığını gerçekten bilmediğiniz güvenilir olmayan bir yürütülebilir dosyayı çalıştırmanız gerekmez. (Windows nihayet .msuyerine s 'ları dağıtarak güncelleştirmelerle geliyor .exe- ama .msibir süredir ...)


1
Yeniden. pacman, bu Arch Linux için .

2

Belirli bir yumpaketin yüklediği dosyaların listesini yaparak şunları yapabilirsiniz:

yum install yum-utils

Sonra böyle koşabilirsin:

repoquery --list yum-utils

(Açıkçası, o ikinci dosyadaki "yum-utils" yerine, dosya listesini görmek istediğiniz paketin adını yazın.)

Için apt-getkullanabilirsiniz:

dpkg -L package-name

1

Kurmakta olduğunuz /usr/binbelirli bir uygulamaya veya kitaplığa bağlı olmasına rağmen, genellikle altında .


1

Linux / Unix'te çoğu program genellikle tek bir dizinde bitmez, ancak farklı bölümleri (çalıştırılabilir dosyalar, yapılandırma dosyaları, günlük dosyaları, belgeler, diğer kaynaklar) dosya sistemi üzerinden dağılır - genellikle eşleştirme yoluyla. Wikipedia makalesi farklı dizinleri ve ne her bulmayı bekleyebilirsiniz gösteren normal bir dosya sistemi hiyerarşisi altında daha detaylı olarak standart dizin yapısını açıklar.


0

/optDizinin her paket kendi dizin ağacı vardır Windows benzeri tesisler için ayrılmıştır. Kimse kullanmıyor. Neden olduğundan emin değilim; o ekleyerek bu olabilir /opt/PACKAGE/binsizin için $PATHbir paket yüklemek her zaman sadece çok sinir bozucudur.


/optMATLAB gibi çoğunlukla ticari / özgür olmayan yazılım paketleri tarafından kullanılıyor gibi görünüyor.
Li-aung Yip

Ubuntu 12.04’ümde Google Chrome yüklüyor /optancak sonra da doğrudan buradan yüklediğim LibreOffice 3.5 .

0

Linux'taki yazılım Windows veya Mac'ten paradigmada biraz farklıdır. Bunlarda, bir çalıştırılabilir dosya ve tüm destek dosyaları tek bir klasöre yüklenir: Windows normalde onları c:\Program Files\program nameApple'da tutar /Applications/program.app. Linux altında, daha bir ... ortak yapı var. İkili dosyalar genellikle içindedir /usr/bin, sistem genelinde konfigürasyondadır /etc, kullanıcıya özel konfigürasyon genellikle'dadır ~/.program. Kütüphaneler içindedir /usr/libiçinde genellikle dosyaları (örn sanat) destekleyen, /usr/share/programvb hatta var standart şeyler gitmesi gereken yere düşündüren.

Programlar genellikle paket yöneticileri tarafından yüklenir rpmve dpkg; sırasıyla yumve aptitude/ tarafından otomatik olarak aranır ve alınır (bağımlılık yönetimi dahil) apt-get. Daha teknik bir seviyede, paketler basit sıkıştırılmış dosyalardır (rpm ve deb'in ikisinin de olduğuna inanıyorum .tar.gz). Bu arşivler, dosya sistemindeki parçaların, dosyaların bulunduğu kökten bir yansımasını içerir (örneğin, yüklenmesi gereken bir dosya paket içindeki uygun klasörün altında /usr/bin/programolacaktır usr/bin/program.

Belirli bir paket hakkında bilgi bulmak için, burada açıklandığı gibi sisteminiz için paket yöneticisini kullanın.


0

Hier manpage bazı bilgiler sağlayabilir


1
Bu bağlantı soruyu cevaplayabilse de, cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak daha iyidir. Bağlantılı sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir.
MaQleod

@ MaQleod Bağlantının geçersiz olabileceğinden endişe ediyorsanız, sadece kolaylık sağlamak için bağlantı kurdum. Basitçe "man hier" yazabilirim, çünkü bu manpage'i sanırım herhangi bir yaygın Linux dağıtımında bulabilirsin.
AnonymousLurker,

1
"kılavuza bakınız" de uygun bir cevap değil, yorum. Cevaplar aslında soruyu cevaplamalıdır. Bu, sorulan soruyu nasıl cevaplar? Hiyerarşi listesinin önemi nedir? OP (veya başkası) neden bu cevabı dikkate almalı? Bağlantının (veya man sayfasının) ilgili kısımlarını kopyalayın ve neden soru bağlamında neden önemli olduklarını açıklayın, o zaman soruyu cevaplamış olacaksınız ve sadece bir yorum yapmadınız.
MaQleod
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.