Sebelum hari ini, saya telah menggunakan terminal untuk memindahkan dan keluar dari direktori dan mengubah tanggal file menggunakan touch
perintah. Saya telah menyadari sepenuhnya terminal setelah menginstal skrip yang menyenangkan pada Mac dan harus chmod 755
file agar dapat dieksekusi setelah itu.
Saya ingin tahu apa /usr/local/bin
itu. /usr/
, Saya berasumsi, adalah pengguna komputer. Saya tidak yakin mengapa /local/
ada di sana. Itu jelas singkatan dari komputer lokal, tetapi karena itu ada di komputer (atau server), apakah itu benar-benar diperlukan? Tidak /usr/bin
akan baik-baik saja?
Dan apa itu /bin
? Mengapa area ini biasanya digunakan untuk menginstal skrip ke terminal?
Dekat.
Unix dimulai sebagai sistem operasi multi-pengguna, jadi itu bukan "pengguna," itu " pengguna ," jamak.
Sebelum AT&T Unix System V Release 4 (SVR4) keluar pada tahun 1988 dengan alat manajemen pengguna yang secara default membuat direktori home user di
/home
, lokasi konvensionalnya adalah./usr
Was$HOME
Direktori Anda mungkin berada/usr/jfw
pada kotak System III ./usr
juga berisi, kemudian seperti sekarang,/usr/bin
,/usr/lib
, dll Pengalaman menunjukkan bahwa pemisahan direktori rumah adalah praktik sistem manajemen yang baik, sehingga dengan/home
perubahan kebijakan di SVR4, yang ditinggalkannya segala sesuatu yang kita sekarang anggap sebagai milik di/usr
./usr
masih punya alasan kuat untuk mempertahankan nama: yang tertinggal adalah file yang tidak perlu tersedia sampai sistem di-boot cukup jauh untuk mendukung penggunaan interaktif normal. Dengan kata lain, yang tertinggal adalah bagian-bagian OS yang berfokus pada pengguna . Ini berarti bahwa/usr
bisa pada volume fisik yang berbeda, yang merupakan hal yang baik di masa 92 MB hard disk drive ukuran mesin cuci .Sistem Unix awal berhati-hati untuk menjaga file inti OS dari
/usr
sehingga Anda masih bisa boot ke mode single-user ² bahkan jika/usr
volume itu unmountable karena suatu alasan. Volume root berisi alat yang cukup untuk mendapatkan/usr
volume kembali online.Beberapa rasa Unix sekarang mengabaikan prinsip desain lama ini karena sistem embedded bahkan kecil memiliki cukup ruang untuk kedua file volume akar tradisional dan semua
/usr
pada volume.³ tunggal Red Hat Enterprise Linux, Solaris dan Cygwin symlink/bin
untuk/usr/bin
dan/lib
untuk/usr/lib
sehingga tidak ada lagi perbedaan antara direktori ini.Iya. Ini merujuk pada fakta bahwa file di bawah
/usr/local
seharusnya khusus untuk sistem tunggal itu. File dengan cara apa pun generik harus hidup di tempat lain.Ini juga berakar pada cara sistem Unix biasa digunakan beberapa dekade yang lalu ketika semua ini distandarisasi. Sekali lagi, hard disk saat itu berukuran besar, sangat mahal, dan disimpan sedikit menurut standar sekarang. Untuk menghemat uang dan ruang pada disk, lab komputer yang penuh dengan kotak Unix akan sering berbagi
/usr
lebih dari NFS atau protokol berbagi file jaringan lainnya, sehingga setiap kotak tidak harus memiliki salinannya sendiri yang berlebihan. File khusus untuk satu kotak akan masuk ke bawah/usr/local
, yang akan menjadi volume terpisah dari/usr
.Warisan historis ini adalah alasan mengapa masih menjadi standar untuk sebagian besar perangkat lunak Unix pihak ketiga untuk diinstal
/usr/local
ketika diinstal dengan tangan. Sebagian besar perangkat lunak seperti itu akan membiarkan Anda menginstal paket di tempat lain, tetapi dengan membuat pilihan, Anda mendapatkan default yang aman, yang tidak mengganggu lokasi instalasi umum lainnya dengan tujuan yang lebih spesifik.Ada alasan bagus untuk membuat perangkat lunak menginstal di tempat lain sebagai gantinya. Tim macOS Apple melakukan ini ketika mereka membangun, katakanlah,
bash
dari kode sumber GNU Bash . Mereka menggunakan/
sebagai awalan instalasi, mengesampingkan/usr/local
default, sehingga Bash berakhir di/bin
.Contoh lain adalah cara sistem Linux yang lebih tua memisahkan perangkat lunak GUI mereka
/usr/X11R6
, agar tetap terpisah dari baris perintah tradisional dancurses
perangkat lunak berbasis. Ini dilakukan hanya dengan mengganti/usr/local
awalan default dengan/usr/X11R6
.⁵Ini kependekan dari "binary," yang dalam konteks ini berarti "file yang bukan teks biasa." Sebagian besar file tersebut dapat dieksekusi pada kotak Unix, sehingga kedua istilah ini menjadi sinonim di beberapa kalangan. ("Tolong buatkan saya biner untuk RHEL 7, Fred.")
File teks pada kotak Unix tinggal di tempat lain:
/etc
,/usr/include
,/usr/share
, dllSekali waktu, bahkan skrip shell - yang merupakan file teks biasa - disimpan di luar
bin
direktori, tetapi baris ini juga kabur. Saat ini,bin
direktori biasanya berisi segala jenis file yang dapat dieksekusi, baik "biner" atau tidakCatatan Kaki dan Digesti :
Sifat primitif dari alat manajemen pengguna sebelum SVR4 berarti bahwa
HOME=/usr/$NAME
skema itu hanya didokumentasikan sebagai konvensi, bukan ditegakkan oleh alat perangkat lunak sebagai default.Anda dapat melihat ini di halaman 4-8 dari " AT&T Unix System V Release 3.2 Panduan Administrator Sistem : di sini Anda melihat AT&T merekomendasikan
/usr/$NAME
skema lama dalam versi utama terakhir Unix sebelum SVR4 keluar.Itu cukup umum di sistem Unix yang lebih lama bagi administrator sistem untuk memilih skema berbeda yang lebih masuk akal bagi mereka. Orang menjadi manusia, itu berarti banyak skema berbeda ditemukan.
Satu skema yang saya temui sebelum
/home/$NAME
menjadi standar adalah/u/$NAME
.Sistem lain yang saya digunakan di awal 1990-an memiliki begitu banyak pengguna bahwa mereka tidak bisa cocok semua direktori rumah ke volume fisik tunggal, sehingga mereka menggunakan skema seperti
/u1/$NAME
,/u2/$NAME
, dan sebagainya, seperti yang saya ingat. Disk di mana direktori home Anda berakhir hanyalah masalah yang ada di dalamnya pada saat akun Anda dibuat.Anda dapat mem-boot kotak macOS ke mode pengguna tunggal dengan menahan Cmd-Ssementara boot. Lepaskan begitu layar menjadi hitam dan Anda melihat teks abu-abu terang muncul. Ini seperti berjalan di bawah Terminal, tetapi mengambil alih seluruh layar karena GUI belum dimulai.
Hati-hati, Anda berlari seperti
root
.Ketik "keluar" pada permintaan root pengguna tunggal untuk meninggalkan mode pengguna tunggal dan melanjutkan boot ke mode GUI multi-pengguna.
OS Unixy yang masih muncul untuk menjaga file mode pengguna tunggal yang kritis
/usr
tidak dapat, pada kenyataannya, melakukannya hari ini. Saya pernah membuat kotak FreeBSD 9 unbootable dengan pindah/usr
ke volume ZFS. Saya lupa bahwa fitur ZFS-on-root tidak mendarat sampai FreeBSD 10, membuat Catch 22 : OS membutuhkan file/usr
untuk melakukan mount/usr
!Itu sudah cukup buruk, tetapi jika FreeBSD 9 masih menyimpan barang dari pengguna tunggal
/usr
, saya bisa memperbaikinya di tempat. Karena tidak bisa boot bahkan ke mode single-user dengan/usr
menjadi tidak dapat di-mount, jelas bahwa tradisi telah dilanggar entah bagaimana. Saya harus mem-boot dari CD cadangan untuk mendapatkan kembali sistem itu.Di sinilah kita mendapatkan
/usr/share
: ia memisahkan file yang dapat dibagi bahkan antara kotak Unix dengan jenis prosesor yang berbeda. Biasanya, file teks: halaman manual, kamus, dll."X11R6" mengacu pada versi Sistem X Window yang mendasari GUI Linux pada saat konvensi ini lazim. Sistem Linux umumnya berhenti memisahkan perangkat lunak GUI tentang waktu X11R6 diganti dengan X.Org .
Sistem Unix asli menyimpan skrip shell inti mereka
/etc
untuk menghindari membaurnya mereka dengan binari yang sebenarnya/bin
.sumber
Saya akan merekomendasikan merujuk ke Wikipedia untuk pertanyaan terkait struktur secara umum, itu akan mencakup dasar-dasar.
Untuk menjawab pertanyaan Anda secara langsung, namun:
Inilah sebabnya mengapa Anda cenderung menemukan struktur yang serupa di antara keduanya; / usr / {, local /} {bin, sbin, lib}. Menjadi baru pada shell, bit dengan {} adalah ekspansi shell. Coba jalankan
dari shell lokal Anda untuk melihat cara kerjanya.
sumber
/usr/local/bin
menunjukkan akar UNIX-esque dari Mac OS terbaru (berbasis BSD di bawah sana).Ini telah berubah sejak implementasi awal UNIX ke Linux dan BSD, tetapi konvensi tetap ada. Sekarang,
/usr/bin
akan untuk "utama" atau program inti dan perpustakaan di mana/usr/local/bin
akan untuk program dan perpustakaan tambahan dan tidak penting.sumber
/usr/nzwulfin
default. Skema umum lainnya. sebelum/home
skema SVR4 mengambil alih, adalah/u
. Satu sistem yang saya gunakan sejak awal memiliki begitu banyak pengguna, mereka membutuhkan beberapa disk fisik untuk penyimpanan file pengguna, sehingga mereka memiliki hal-hal seperti/u/d5/tangent
./usr/local/bin
adalah lokasi default paling populer untuk file yang dapat dieksekusi, terutama yang open source.Namun ini bisa dibilang pilihan yang buruk karena, pada sistem Unix,
/usr
telah distandarisasi pada awal tahun sembilan puluhan untuk mengandung hierarki file yang termasuk dalam sistem operasi dan dengan demikian dapat dibagi oleh beberapa sistem menggunakan OS itu.Karena file-file ini statis,
/usr
sistem file dapat dipasang hanya-baca./usr/local
mengalahkan standar ini karena dirancang oleh lokal sehingga tidak dibagi, jadi perlu dibaca-tulis untuk memungkinkan kompilasi lokal dan bukan bagian dari sistem operasi. Sayang sekali sesuatu seperti/opt/local
tidak dipilih sebagai gantinya ...sumber
Saya sarankan Anda menggunakan
/usr/local
untuk program komersial yang mungkin Anda instal seperti Mathematica. Tempatkan di partisi sendiri ketika Anda mengatur. Ketika Anda memutakhirkan OS Anda, partisi ini tidak akan terganggu dan Anda tidak perlu menginstal ulang isinya. Jadi gunakan untuk hal-hal yang ingin Anda pertahankan di antara peningkatan OS.Secara terpisah, pastikan Anda memberikan
/home
partisi sendiri untuk alasan ini juga.sumber
Jawaban ini mungkin bermanfaat juga.
/ usr / local
Gagasan asli di belakang
/usr/local
adalah untuk memiliki direktori terpisah ('lokal') '/ usr' pada setiap mesin/usr
, yang mungkin hanya dipasang read-only dari tempat lain. Ini menyalin struktur/usr
.Hari-hari ini,
/usr/local
secara luas dianggap sebagai tempat yang baik untuk menjaga program yang disusun sendiri atau pihak ketiga. The/usr/local
hirarki adalah untuk digunakan oleh administrator sistem ketika menginstal software lokal. Itu harus aman dari ditimpa ketika perangkat lunak sistem diperbarui.Ini dapat digunakan untuk program dan data yang dibagikan di antara sekelompok host, tetapi tidak ditemukan di
/usr
. Perangkat lunak yang diinstal secara lokal harus ditempatkan di dalam/usr/local
daripada/usr
kecuali jika sedang diinstal untuk mengganti atau meningkatkan perangkat lunak/usr
.sumber