Di mana perangkat lunak yang diinstal disimpan di Linux? [duplikat]

11

Kemungkinan Duplikat:
Dimana program Linux yang umum diinstal

Saya baru mengenal Linux dan saya ingin bertanya lebih banyak tentang paket.

Di Windows, saya mengunduh .exefile dan menginstalnya. Ketika saya menginstal, saya menentukan jalur di mana saya ingin aplikasi itu disimpan. Dalam folder itu, saya memiliki semua file yang diperlukan untuk aplikasi.

Namun, ketika saya menginstal paket di Linux menggunakan yumatau apt-get, saya tidak tahu di mana paket itu diinstal dan di mana file yang diperlukan untuk aplikasi itu disimpan. Saya telah melihat bahwa sebagian besar konfigurasi ada di /etcdirektori. Tetapi mengapa Linux menyimpan file yang diperlukan untuk aplikasi di direktori yang berbeda?

Dapatkah seseorang memberi tahu saya bagaimana paket diinstal, dan di mana dan bagaimana mereka disimpan? Dan jika pemahaman saya tentang manajemen paket salah, mohon koreksi saya.

Komunitas
sumber
Jika distribusi Anda digunakan rpm, Anda dapat menggunakan rpm -q --whatprovidesuntuk menemukan nama paket untuk file tertentu dan kemudian rpm -q -auntuk mencari tahu file apa yang diinstal paket.
David Schwartz
Dengan apt-get, jika paket diinstal gunakan dpkg -L PKGNAME, jika tidak digunakan apt-file list.
Thor

Jawaban:

14

Banyak program (binari / skrip) berakhir di /binatau /usr/bindengan bagian lain di berbagai direktori konfigurasi (sering di / bawah etc) seperti yang telah Anda catat.

Untuk perintah tertentu, Anda dapat checkout di mana

whereis prog_name

dan itu akan memberi Anda beberapa informasi tentang di mana perintah ini dapat ditemukan. Anda juga bisa mencoba yang mana

which prog_name

Juga, grafik dan penjelasan / contoh ini mungkin bisa membantu.

Levon
sumber
1
+1 untuk whereis - sangat berguna bagi mereka yang baru
tetapi mengapa konfigurasi disimpan di direktori terpisah?
@ KOU Saya tidak tahu sejarah ini, tetapi bisa jadi program bisa diperbarui tanpa mengacaukan informasi konfigurasi karena akan berada di direktori yang berbeda. Dengan cara ini berbagai versi dapat menggunakan informasi konfigurasi yang sama (dengan asumsi format dll tidak diubah yaitu kompatibel). Saya hanya menduga di sini. Anda harus meneliti sejarah sistem file Unix / Linux untuk jawaban yang pasti.
Levon
1
Saya tidak yakin dengan sejarah keputusan untuk memasukkan semua file konfigurasi sistem /etc/, tetapi memiliki satu lokasi pusat untuk file konfigurasi membuatnya sangat mudah untuk membuat cadangannya. (Bayangkan buat cadangan file konfigurasi sistem di Windows, di mana mereka tersebar di seluruh sistem file dan registri ...)
Li-aung Yip
@ Li-aungYip Poin bagus
Levon
5

Di bawah Windows, terutama versi yang lebih lama, itu umum untuk program untuk menyimpan file konfigurasi dan data yang tidak konstan dalam C:\Program Filesdirektori mereka . Ini berasal dari bagaimana program biasanya diinstal dan dijalankan di bawah DOS single-user, non-jaringan, non-file.

Dari sudut pandang keamanan, ini adalah ide yang buruk. Tempat di mana kode yang dapat dieksekusi harus dipisahkan dari data yang dapat dimodifikasi. Dengan begitu lebih mudah untuk menerapkan izin file yang sesuai untuk mencegah modifikasi binari yang diinstal oleh pengguna yang tidak sah. Demikian pula direktori perpustakaan yang dapat diperbarui secara terpisah dari executable utama juga harus di direktori yang terpisah.

Dengan munculnya gangguan Vista dan UAC, tradisi ini akhirnya mulai kehilangan daya tarik.

UNIX, dan Linux, sebagai sistem multiuser dari jauh sebelumnya, memiliki kecenderungan untuk memisahkan direktori yang dapat dieksekusi dari direktori lain jauh lebih awal, karena ada kebutuhan untuk mencegah pengguna selain root untuk memodifikasi binari yang diinstal. Itu juga mengapa /usrdan bahkan /sbinkadang-kadang partisi yang terpisah - admin yang sangat sadar keamanan dapat me-mount partisi tersebut hanya baca dan tulis mereka baca / tulis ketika instalasi / uninstall perlu terjadi.

Paket biasanya diinstal dari manajer paket. Ada berbagai manajer paket, seperti aptitude(Debian dan distribusi yang diturunkan), yum(Redhat dan distribusi yang diturunkan), pacman(lupakan distro mana ini ...), dan lainnya.

Manajer paket memungkinkan Anda menjelajahi repositori, mengunduh, memasang, menanyakan, dan menghapus perangkat lunak, seperti "app store" yang canggih (dan gratis). Ini mengasumsikan tanggung jawab untuk memastikan dependensi dijaga dan melacak apa yang saat ini diinstal.

Biasanya manajer paket juga akan mengizinkan operasi yang sama pada paket yang Anda unduh secara manual di luar repositori mana pun. Alat juga tersedia jika Anda ingin membuat sendiri dari perangkat lunak yang Anda buat atau kompilasi sendiri.

Karena paket itu sendiri BUKAN file yang dapat dieksekusi, Anda tidak perlu menjalankan file yang tidak dapat dieksekusi yang Anda tidak benar-benar tahu apa fungsinya. (Windows akhirnya hadir dengan pembaruan dengan mendistribusikan .msubukan .exe- tetapi .msisudah ada beberapa saat ...)

LawrenceC
sumber
1
Kembali. pacman, ini untuk Arch Linux .
2

Anda bisa mendapatkan daftar file yang yumdiinstal paket dengan melakukan:

yum install yum-utils

Maka Anda dapat menjalankannya seperti ini:

repoquery --list yum-utils

(Jelas, ganti "yum-utils" di yang kedua dengan nama paket yang daftar file-nya ingin Anda lihat.)

Untuk apt-get, Anda dapat menggunakan:

dpkg -L package-name
sblom
sumber
1

Biasanya di bawah /usr/bin, meskipun tergantung pada aplikasi atau pustaka tertentu yang Anda instal.

kprobst
sumber
1

Di Linux / Unix, kebanyakan program biasanya tidak berakhir dalam satu direktori, tetapi bagian yang berbeda (file executable, file konfigurasi, file log, dokumentasi, sumber daya lainnya) tersebar melalui sistem file - biasanya melalui symlinking. The Artikel Wikipedia menjelaskan lebih detail struktur direktori standar di bawah hirarki filesystem normal, menunjukkan direktori yang berbeda dan apa yang dapat Anda harapkan untuk menemukan di setiap.

mgibsonbr
sumber
0

The /optdirektori dicadangkan untuk instalasi Windows seperti di mana masing-masing paket memiliki pohon direktori sendiri. Tidak ada yang menggunakannya. Saya tidak yakin mengapa; mungkin menambahkan bahwa /opt/PACKAGE/binAnda $PATHsetiap kali Anda menginstal paket terlalu mengganggu.

Alan Curry
sumber
/opttampaknya sebagian besar digunakan oleh paket perangkat lunak komersial / tidak bebas, seperti MATLAB.
Li-aung Yip
Di Ubuntu 12.04 saya, Google Chrome menginstal /opttetapi LibreOffice 3.5 yang saya instal langsung dari sini .
0

Perangkat lunak di Linux sedikit berbeda dalam paradigma dari Windows atau Mac. Pada file-file tersebut, file yang dapat dieksekusi dan semua file pendukungnya diinstal ke dalam satu folder: Windows biasanya menyimpannya c:\Program Files\program name, di Apple /Applications/program.app. Di Linux, ada lagi ... struktur komunal. Binari-binari pada umumnya ada di /usr/bin, konfigurasi seluruh sistem dalam /etc, konfigurasi khusus pengguna biasanya di ~/.program. Perpustakaan ada di /usr/libdalamnya, file pendukung (mis. Karya seni) sering ada /usr/share/program, dll. Bahkan ada standar yang menunjukkan ke mana harus pergi.

Program umumnya diinstal oleh manajer paket, rpmdan dpkg; mereka secara otomatis dicari dan diambil (termasuk manajemen ketergantungan) oleh yumdan aptitude/ apt-get, masing-masing. Pada tingkat yang lebih teknis, paket-paket tersebut adalah file terkompresi sederhana (saya percaya rpm dan deb keduanya .tar.gz). Arsip-arsip ini berisi mirror dari potongan-potongan filesystem dari root di mana file-file itu pergi (misalnya file yang seharusnya diinstal /usr/bin/programakan berada di usr/bin/programbawah folder yang sesuai dalam paket.

Untuk menemukan informasi tentang paket tertentu, gunakan pengelola paket untuk sistem Anda, seperti yang dijelaskan di sini.

Kevin
sumber
0

Halaman hier hier dapat memberikan beberapa wawasan

AnonymousLurker
sumber
2
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah.
MaQleod
@MaQleod Jika Anda khawatir bahwa tautan tersebut mungkin tidak valid, saya telah menautkan hanya untuk kenyamanan. Saya hanya bisa menulis "man hier" dalam teks biasa, karena Anda dapat menemukan halaman manual ini dalam distribusi Linux umum apa pun yang saya kira.
AnonymousLurker
2
"Lihat manual" juga bukan jawaban yang tepat, itu adalah komentar. Jawaban harus benar-benar menjawab pertanyaan. Bagaimana ini menjawab pertanyaan yang diajukan? bagaimana daftar hierarki penting? Mengapa OP (atau siapa pun) menganggap jawaban ini patut diperhatikan? Salin bagian tautan yang relevan (atau halaman manual) dan jelaskan mengapa itu penting dalam konteks pertanyaan, maka Anda akan menjawab pertanyaan dan tidak hanya membuat komentar.
MaQleod