Apa itu / usr / local / bin?

85

Sebelum hari ini, saya telah menggunakan terminal untuk memindahkan dan keluar dari direktori dan mengubah tanggal file menggunakan touchperintah. Saya telah menyadari sepenuhnya terminal setelah menginstal skrip yang menyenangkan pada Mac dan harus chmod 755file agar dapat dieksekusi setelah itu.

Saya ingin tahu apa /usr/local/binitu. /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/binakan baik-baik saja?

Dan apa itu /bin? Mengapa area ini biasanya digunakan untuk menginstal skrip ke terminal?

JFW
sumber

Jawaban:

77

/usr/local/bin adalah untuk program yang dapat dijalankan oleh pengguna normal.

  • The /usr/localhirarki 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 dapat dibagikan di antara sekelompok host, tetapi tidak ditemukan di /usr.
  • Perangkat lunak yang diinstal secara lokal harus ditempatkan di dalam /usr/localdaripada / usr kecuali jika sedang diinstal untuk mengganti atau meningkatkan perangkat lunak dalam /usr.

Sumber ini membantu menjelaskan standar hierarki sistem file pada level yang lebih dalam.

Anda mungkin menemukan artikel ini tentang penggunaan dan penyalahgunaan yang/usr/local/bin menarik juga.

iamsid
sumber
"" "kecuali jika sedang dipasang untuk mengganti atau memutakhirkan perangkat lunak di / usr" "artinya?
Pacerier
63

/ usr /, saya asumsikan adalah pengguna komputer.

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. /usrWas $HOMEDirektori Anda mungkin berada /usr/jfwpada kotak System III .

/usrjuga berisi, kemudian seperti sekarang, /usr/bin, /usr/lib, dll Pengalaman menunjukkan bahwa pemisahan direktori rumah adalah praktik sistem manajemen yang baik, sehingga dengan /homeperubahan kebijakan di SVR4, yang ditinggalkannya segala sesuatu yang kita sekarang anggap sebagai milik di /usr.

/usrmasih 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 /usrbisa 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 /usrsehingga Anda masih bisa boot ke mode single-user ² bahkan jika /usrvolume itu unmountable karena suatu alasan. Volume root berisi alat yang cukup untuk mendapatkan /usrvolume 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 /usrpada volume.³ tunggal Red Hat Enterprise Linux, Solaris dan Cygwin symlink /binuntuk /usr/bindan /libuntuk /usr/libsehingga tidak ada lagi perbedaan antara direktori ini.

... / lokal / ... jelas merupakan singkatan dari komputer lokal ...

Iya. Ini merujuk pada fakta bahwa file di bawah /usr/localseharusnya 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 /usrlebih 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/localketika 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, bashdari kode sumber GNU Bash . Mereka menggunakan /sebagai awalan instalasi, mengesampingkan /usr/localdefault, 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 dan cursesperangkat lunak berbasis. Ini dilakukan hanya dengan mengganti /usr/localawalan default dengan /usr/X11R6.⁵

Dan apa itu / bin?

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, dll

Sekali waktu, bahkan skrip shell - yang merupakan file teks biasa - disimpan di luar bindirektori, tetapi baris ini juga kabur. Saat ini, bindirektori biasanya berisi segala jenis file yang dapat dieksekusi, baik "biner" atau tidak


Catatan Kaki dan Digesti :

  1. Sifat primitif dari alat manajemen pengguna sebelum SVR4 berarti bahwa HOME=/usr/$NAMEskema 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/$NAMEskema 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/$NAMEmenjadi 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.

  2. 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.

  3. OS Unixy yang masih muncul untuk menjaga file mode pengguna tunggal yang kritis /usrtidak dapat, pada kenyataannya, melakukannya hari ini. Saya pernah membuat kotak FreeBSD 9 unbootable dengan pindah /usrke volume ZFS. Saya lupa bahwa fitur ZFS-on-root tidak mendarat sampai FreeBSD 10, membuat Catch 22 : OS membutuhkan file /usruntuk 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 /usrmenjadi tidak dapat di-mount, jelas bahwa tradisi telah dilanggar entah bagaimana. Saya harus mem-boot dari CD cadangan untuk mendapatkan kembali sistem itu.

  4. 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.

  5. "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 .

  6. Sistem Unix asli menyimpan skrip shell inti mereka /etcuntuk menghindari membaurnya mereka dengan binari yang sebenarnya /bin.

Warren Young
sumber
3
Menyukai gambar mesin cuci!
asgs
@ Warren, Apa OS penting sebelum Sistem III?
Pacerier
@Pacerier: Versi UNIX 1 hingga 7, UNIX / 32V, 1BSD hingga 4BSD tidak termasuk rilis dot 4BSD (4.1BSD kira-kira sezaman dengan AT&T Unix System III), dan PWB Unix. Sumber . Mengapa Anda bertanya, dan apa hubungannya dengan pertanyaan ini?
Warren Young
@ Warren, Yah, mereka mungkin telah mempengaruhi "sistem penamaan direktori" defacto entah bagaimana
Pacerier
@Pacerier: Saya akan mendukung klaim saya: tidak ada "standar" sebelum Sistem V, hanya konvensi dan praktik lokal.
Warren Young
9

Saya akan merekomendasikan merujuk ke Wikipedia untuk pertanyaan terkait struktur secara umum, itu akan mencakup dasar-dasar.

Untuk menjawab pertanyaan Anda secara langsung, namun:

  • / usr, secara longgar, pustaka dan executable sistem yang tidak kritis
  • / usr / local, sekali lagi longgar, untuk pustaka dan executable non-sistem

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

ls -ld /usr/{,local/}{bin,sbin,lib}

dari shell lokal Anda untuk melihat cara kerjanya.

Tok
sumber
9

/usr/local/bin menunjukkan akar UNIX-esque dari Mac OS terbaru (berbasis BSD di bawah sana).

  • "usr" adalah singkatan dari UNIX System Resources. Ini adalah lokasi dimana program sistem dan pustaka disimpan.
  • "lokal" mewakili sumber daya yang tidak dikirimkan dengan distribusi standar dan, biasanya, disusun dan dikelola berdasarkan basis per lokasi.
  • "bin" mewakili executable yang dikompilasi biner.

Ini telah berubah sejak implementasi awal UNIX ke Linux dan BSD, tetapi konvensi tetap ada. Sekarang, /usr/binakan untuk "utama" atau program inti dan perpustakaan di mana /usr/local/binakan untuk program dan perpustakaan tambahan dan tidak penting.

nzwulfin
sumber
12
Saya telah menggunakan Unix sejak tak lama setelah Tembok Berlin runtuh, dan saya belum pernah mendengar ekspansi "Unix System Resources" untuk "usr" hingga hari ini; itu adalah backronym. "usr" mendapatkan namanya karena itu adalah tempat direktori home pengguna awalnya berada. Artinya, jika Anda memiliki login pada kotak Sistem III lama, direktori kerja awal Anda akan secara /usr/nzwulfindefault. Skema umum lainnya. sebelum /homeskema 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.
Warren Young
3
@ Warren Saya juga belum mendengarnya dan mencari-cari di Google; sepertinya ada beberapa backronym
Michael Mrozek
4

/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, /usrtelah 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, /usrsistem file dapat dipasang hanya-baca. /usr/localmengalahkan 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/localtidak dipilih sebagai gantinya ...

Jlliagre
sumber
1

Saya sarankan Anda menggunakan /usr/localuntuk 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 /homepartisi sendiri untuk alasan ini juga.

ncmathsadist
sumber
0

Jawaban ini mungkin bermanfaat juga.

/ usr / local

Gagasan asli di belakang /usr/localadalah 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/localsecara luas dianggap sebagai tempat yang baik untuk menjaga program yang disusun sendiri atau pihak ketiga. The /usr/localhirarki 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/localdaripada /usrkecuali jika sedang diinstal untuk mengganti atau meningkatkan perangkat lunak /usr.

Vishwanath gowda k
sumber