Apa yang setara dengan Linux untuk C: \ Program Files?

64

Saya mengerti bahwa di Windows serta Linux dan Unix, program | aplikasi | perangkat lunak dapat diinstal di direktori mana pun. Juga jika paket diinstal menggunakan sistem pengemasan distribusi, itu akan menempatkan file di lokasi yang benar.

Tetapi kadang-kadang, instalasi perangkat lunak meminta jalur untuk menempatkan file. Dalam hal distro Linux, di mana tempat default ini ( C:\Program Filesatau yang C:\progra~1setara)? Apakah berbeda untuk berbagai distribusi? Jika ya, untuk apa ini RHEL, Susedan Ubuntu?

Thomas
sumber

Jawaban:

60

The Proyek Dokumentasi Linux memiliki deskripsi hirarki filesystem Linux di mana mereka menjelaskan folder yang berbeda dan (sebagian sejarah) mereka makna.

Seperti yang sudah ditunjukkan xenoterracide /bindan /optmerupakan direktori standar yang dapat dibandingkan dengan "Program Files" pada Windows.

/binberisi beberapa perintah berguna yang berguna bagi administrator sistem maupun pengguna yang tidak memiliki hak istimewa. Biasanya berisi kerang seperti bash, csh, dll .... dan umum digunakan perintah seperti cp, mv, rm, cat, ls.

( dikutip dari TLDP )

/optdicadangkan untuk semua perangkat lunak dan paket tambahan yang bukan bagian dari instalasi default. Sebagai contoh, paket StarOffice, Kylix, Netscape Communicator dan WordPerfect biasanya ditemukan di sini.

( dikutip dari TLDP )

Axel Knauf
sumber
9
Bukankah / opt hanya digunakan untuk paket yang tidak terkandung dalam repo? Folder aplikasi untuk inkscape, gimp, rhythmbox dll terletak di / usr / share. Bukankah itu lebih baik setara?
c76c3r8c42b347r8
5
Lihat linuxfoundation.org/en/FHS untuk info terbaru tentang hierarki sistem file (FHS). (Catatan: Situs sedang down saat ini tetapi harus segera dicadangkan).
jw013
@Toxicbits: Setidaknya pada Gentoo di / opt ada paket biner - terutama yang tidak dapat diinstal ke / usr karena hierarki sistem file yang tidak standar.
Maciej Piechotka
TLDP tampak hebat! Nah, di samping catatan; pertama kali saya melihat TLDP, saya berpikir: "terlalu lama tidak ... memuncak? apa?"
Ege Özcan
3
Ini salah. / bin hanya berisi program yang dapat dieksekusi. Direktori File Program Windows berisi subdirektori untuk setiap aplikasi yang diinstal, yang berisi semua file executable, dll, file data, dan segala sesuatu yang dibutuhkan oleh / dikirimkan bersama aplikasi tersebut.
psusi
45

Tidak ada padanan langsung. Struktur direktori sangat berbeda. Di bawah Windows, Anda memiliki direktori tunggal untuk setiap paket / perangkat lunak yang diinstal yang berisi semua file yang berkaitan dengan (misalnya C:\Program Files\MyProgram). Di Linux, setiap perangkat lunak "tersebar" di banyak direktori sesuai dengan jenis file dan beberapa aturan lainnya.

Sebagai contoh, kita dapat memeriksa di mana file yang berbeda terkait dengan xscreensaverprogram diinstal:

/etc/pam.d/xscreensaver
/etc/xscreensaver
/etc/xscreensaver/README
/usr/bin/xscreensaver
/usr/bin/xscreensaver-command
/usr/bin/xscreensaver-demo
/usr/bin/xscreensaver-gl-helper
/usr/share/X11/app-defaults/XScreenSaver
/usr/share/applications/xscreensaver-properties.desktop
/usr/share/doc/packages/xscreensaver
/usr/share/doc/packages/xscreensaver/README
/usr/share/locale/ca/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/da/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/de/LC_MESSAGES/xscreensaver.mo
[ ... ]
/usr/share/locale/zh_TW/LC_MESSAGES/xscreensaver.mo
/usr/share/man/man1/xscreensaver-command.1.gz
/usr/share/man/man1/xscreensaver-demo.1.gz
/usr/share/man/man1/xscreensaver.1.gz
/usr/share/man/man6/xscreensaver-gl-helper.6x.gz
/usr/share/pixmaps/xscreensaver.xpm
/usr/share/xscreensaver
/usr/share/xscreensaver/glade
/usr/share/xscreensaver/glade/screensaver-cmndln.png
/usr/share/xscreensaver/glade/screensaver-colorselector.png
[ ... ]

Jangan khawatir, biasanya ketika installer suatu bertanya di mana untuk menginstal ke, jawaban yang benar adalah salah satu dari berikut: /, /opt, /usr,/usr/local

Seperti yang Anda lihat, cukup semua (1) file xscreensaverdiinstal /usrmenurut beberapa aturan sederhana: executable in /usr/bin, halaman manual /usr/share/man, dokumentasi /usr/share/doc/packages/PROGRAMNAMEdan sebagainya.

Ketika seorang pemasang meminta instalasi prefix, biasanya ia ingin sekarang jalur dasar di mana menginstal program. Dalam xscreensavercontoh saya , itu /usr.

Sebagai aturan sederhana: /harus berisi hanya program yang diperlukan untuk mem-boot sistem (as C:\windows\system32), /usr/localharus berisi program yang hanya diperlukan pada komputer unik itu, /opt(2) semua program opsional yang memiliki struktur direktori non standar dan /usrsemua perangkat lunak standar .

Bagaimanapun, ada standar yang mendefinisikan semua aturan ini secara rinci: Filesystem Hierarchy Standard

(1) file konfigurasi sistem harus berada di /etc

(2) cukup usang di Linux

andcoz
sumber
/optlebih disukai untuk perangkat lunak pihak ketiga selama /usr/localbeberapa waktu.
Steve-o
7
Hanya penjelasan, /usr/sharedisebut "bagikan" karena dibagi antara arsitektur yang berbeda (dokumentasi, skrip, gambar), sedangkan /usr/lib*untuk file yang bergantung pada arsitektur (dan bukan yang dapat dieksekusi, ke mana /usr/bin).
eudoxos
12

Ususually, /bin, /usr/bin, /usr/local/bin, atau /opt/bin. Saya pikir /usr/bindan /opt/binyang paling dekat dengan Program Files, karena biasanya mereka untuk binary non-sistem kritis yang diinstal oleh administrator sistem, meskipun tidak seperti windows keduanya mengandung program yang diinstal dengan manajer paket. Di mana /usr/local/binuntuk perangkat lunak non-distro. /binadalah untuk sistem seperti binari kritis /bin/sh.

xenoterracide
sumber
mengapa empat opsi? /bin, /usr/bin, /usr/local/binAtau /opt/bin. Tidak ada satu lokasi standar? Alasan saya bertanya adalah karena saya menginstal perangkat lunak pada beberapa VM dan lokasi default mengambil partisi yang memiliki ruang terbesar. Saya ingin mengubah ruang partisi ke direktori tempat perangkat lunak biasanya pergi dan tidak menempatkan perangkat lunak secara berbeda di semua VM.
Thomas
1
standar menentukan beberapa lokasi idk mengapa pathname turun tapi di sini ada tautan ke FHS yang di - cache yang masuk ke definisi yang lebih banyak tentang apa ini, dan itu sangat tergantung pada apa yang Anda pasang. Juga RHEL, Suse, dan Ubuntu berbeda sehingga mereka dapat menempatkan hal yang sama di lokasi yang sedikit berbeda. /optmisalnya biasanya digunakan untuk perangkat lunak berpemilik.
xenoterracide
Juga biasanya ... biasanya mereka semua berada di partisi yang sama ... kadang /usr/- kadang partisi yang terpisah.
xenoterracide
1
Beberapa orang (misalnya proyek Hurd) berpendapat bahwa /bindan /usr/bindiskriminasi sudah usang sekarang; historis, sistem-kritis barang akan di /bin, /lib, ... (langsung di root), sementara /usr(dengan /usr/bin, /usr/lib, ...) akan dipasang nanti (mungkin melalui jaringan), tidak menjadi diperlukan untuk fungsionalitas sistem dasar.
eudoxos
1
@ Thomas, /optseharusnya tidak keluar. Beberapa orang pernah berpikir di masa lalu bahwa itu adalah ide yang baik untuk memiliki beberapa aplikasi di lokasi yang berbeda dari semua aplikasi lain. /binada di partisi root. Karena pada beberapa sistem, ruang pada partisi root terbatas, binari yang tidak penting (yaitu semua aplikasi pengguna) dipindahkan ke /usr/bin.
Jan
8

Lihatlah man hieritu "Deskripsi hirarki sistem file".

dengan mudah-vm
sumber
3

Seperti orang lain tunjukkan, program yang diinstal melalui manajer paket tersebar di beberapa direktori. Sementara biner biasanya ditemukan /usr/bin, file konfigurasi seluruh sistem ada di /etc, dan seterusnya.

Jika aplikasi tidak diinstal melalui manajer paket, file-file tersebut harus diinstal di tempat di mana mereka tidak mengganggu manajer paket. Tempat ini /usr/local.

Jika Anda diminta untuk jalur instalasi, pilihan yang paling umum adalah /usr/local/appname

Jan
sumber
3

Ketik echo $PATHterminal Anda untuk melihat jalur yang akan dilihat shell untuk menemukan perintah. Pergi memeriksa file dalam urutan itu dicetak.

Jaseem
sumber
1
Ini tidak menanggapi apa yang diminta OP.
Francesco Turco
1

Yah Anda tidak akan menemukan semua solusi Anda /bindan sbinkarena mereka memegang sebagian besar perintah sistem (yaitu perintah yang digunakan oleh sistem).

/usr/bindapat secara ideal disebut "Program Files"dunia unix. Mengenai /optsangat sedikit paket memilih untuk menggunakan lokasi itu untuk instalasi, hal yang sama berlaku untuk paket yang menggunakan /etc/atau /varsebagai lokasi

pankajdoharey
sumber