it-swarm-id.com

Apa itu / usr / local / bin?

Sebelum hari ini, saya telah menggunakan terminal untuk memindahkan dan keluar direktori secara terbatas dan mengubah tanggal file menggunakan perintah touch. Saya telah menyadari sepenuhnya terminal setelah menginstal skrip yang menyenangkan pada Mac dan harus chmod 755 file untuk membuatnya dapat dieksekusi sesudahnya.

Saya ingin tahu apa /usr/local/bin adalah. /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 akan /usr/bin baik-baik saja?

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

93
JFW

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

  • /usr/local hierarki untuk digunakan oleh administrator sistem ketika menginstal perangkat lunak secara 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/local daripada/usr kecuali sedang diinstal untuk mengganti atau memutakhirkan perangkat lunak dalam /usr.

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

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

82
iamsid

/ usr /, saya asumsikan adalah pengguna komputer.

Menutup.

Unix dimulai sebagai sistem operasi multi-pengguna, jadi itu bukan "pengguna," itu "the 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 konvensional adalah /usr .¹ Direktori $HOME Anda mungkin /usr/jfw Pada kotak Sistem III .

/usr Juga berisi, maka seperti sekarang, /usr/bin, /usr/lib, Dll. Pengalaman menunjukkan bahwa memisahkan direktori home adalah praktik manajemen sistem yang baik, demikian juga dengan /home perubahan kebijakan dalam SVR4, ia meninggalkan semua yang sekarang kita anggap sebagai milik /usr.

/usr Masih memiliki 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 user - bagian fokus dari OS. Ini berarti bahwa /usr Dapat berada pada volume fisik yang berbeda, yang merupakan hal yang baik di masa hard disk 92 MB menggerakkan 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 volume /usr Tidak dapat di-mount untuk beberapa alasan. Volume root berisi alat yang cukup untuk mendapatkan volume /usr Kembali online.

Beberapa rasa Unix sekarang mengabaikan prinsip desain lama ini karena bahkan sistem embedded yang kecil memiliki ruang yang cukup untuk file volume root tradisional dan semua /usr Pada satu volume.³ Red Hat Enterprise Linux, Solaris dan Cygwin symlink /bin Ke /usr/bin Dan /lib Ke /usr/lib Sehingga tidak ada lagi perbedaan antara direktori-direktori ini.

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

Iya. Ini merujuk pada fakta bahwa file di bawah /usr/local Seharusnya khusus untuk sistem tunggal itu. File yang 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 sering berbagi sebagian besar /usr Melalui NFS atau protokol berbagi file jaringan lainnya, sehingga setiap kotak tidak harus memiliki salinannya sendiri yang berlebihan. ⁴ File khusus untuk satu kotak akan berada di bawah /usr/local, Yang akan menjadi volume terpisah dari /usr.

Warisan historis ini adalah alasan mengapa masih menjadi default untuk sebagian besar perangkat lunak Unix pihak ketiga untuk diinstal ke /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. Tim MacOS Apple melakukan ini ketika mereka membangun, katakanlah, bash dari kode sumber Bash GN . Mereka menggunakan / Sebagai awalan instalasi, mengesampingkan /usr/local Default, sehingga Bash berakhir di /bin.

Contoh lain adalah cara sistem Linux lama memisahkan perangkat lunak GUI mereka menjadi /usr/X11R6, Untuk memisahkannya dari baris perintah tradisional dan curses perangkat lunak berbasis. Ini dilakukan hanya dengan mengganti awalan /usr/local Default dengan /usr/X11R6. ⁵

Dan apa itu/bin?

Singkatan 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 direktori bin, tetapi baris ini juga kabur. Hari ini, bin direktori biasanya berisi semua jenis file yang dapat dieksekusi, baik "biner" atau tidak.


Catatan Kaki dan Digesti :

  1. Sifat primitif alat manajemen pengguna sebelum SVR4 berarti bahwa skema HOME=/usr/$NAME 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 skema /usr/$NAME Lama di 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 yang berbeda ditemukan.

    Satu skema yang saya temui sebelum /home/$NAME Menjadi standar adalah /u/$NAME.

    Sistem lain yang saya gunakan pada awal 1990-an memiliki begitu banyak pengguna sehingga mereka tidak dapat memasukkan semua direktori home ke volume fisik tunggal, sehingga mereka menggunakan skema seperti /u1/$NAME, /u2/$NAME, Dan seterusnya, seingat saya. 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-S saat 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 menjalankan sebagai root.

    Ketik "keluar" di root pengguna tunggal Prompt untuk meninggalkan mode pengguna tunggal dan melanjutkan boot ke mode GUI multi-pengguna.

  3. Unixy OS yang masih muncul untuk menjaga file mode pengguna-tunggal yang kritis dari /usr Mungkin tidak, pada kenyataannya, melakukannya hari ini. Saya pernah membuat kotak FreeBSD 9 tidak bisa di-boot dengan memindahkan /usr Ke volume ZFS. Saya lupa bahwa fitur ZFS-on-root tidak mendarat sampai FreeBSD 10, membuat Catch 22 : OS membutuhkan file dalam /usr Untuk me-mount /usr!

    Itu sudah cukup buruk, tetapi jika FreeBSD 9 masih menyimpan barang-barang dari pengguna tunggal dari /usr, Saya bisa memperbaikinya di tempat. Karena tidak bisa boot bahkan ke mode pengguna tunggal dengan /usr Tidak dapat di-mount, jelas tradisi itu telah dilanggar entah bagaimana. Saya harus mem-boot dari CD cadangan untuk mendapatkan kembali sistem itu.

  4. Di sinilah kita mendapatkan /usr/share: Ini memisahkan file yang dapat dibagi bahkan antara kotak Unix dengan jenis prosesor yang berbeda. Biasanya, file teks: halaman manual, kamus, dll.

  5. "X11R6" merujuk ke versi Sistem X Window yang mendukung Linux GUI pada saat konvensi ini lazim. Sistem Linux umumnya berhenti memisahkan perangkat lunak GUI tentang waktu X11R6 diganti dengan X.Org .

  6. Sistem Unix yang asli menyimpan skrip Shell inti mereka di /etc Untuk menghindari percampuran mereka dengan binari yang sebenarnya di /bin.

66
Warren Young

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

  • "usr" adalah singkatan dari UNIX System Resources. Ini adalah lokasi disimpannya program dan perpustakaan sistem.
  • "lokal" mewakili sumber daya yang tidak dikirimkan dengan distribusi standar dan, biasanya, dikompilasi dan dipelihara 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/bin akan untuk "program utama" atau inti dan perpustakaan di mana /usr/local/bin akan untuk program dan perpustakaan add-on dan non-kritis.

10
nzwulfin

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

Namun, untuk menjawab pertanyaan Anda secara langsung:

  • / 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 orang baru di Shell, bit dengan {} adalah ekspansi Shell. Coba jalankan

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

dari Shell lokal Anda untuk melihat cara kerjanya.

9
Tok

/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 memuat hierarki file yang dimiliki sistem operasi dan karenanya dapat dibagikan oleh banyak sistem menggunakan OS itu.

Karena file-file ini statis, /usr sistem file dapat dipasang hanya-baca. /usr/local mengalahkan standar ini karena ia dirancang oleh lokal sehingga tidak digunakan bersama, jadi perlu dibaca-tulis untuk memungkinkan kompilasi lokal dan bukan bagian dari sistem operasi. Sesuatu yang sangat buruk seperti /opt/local bukan dipilih sebagai gantinya ...

4
jlliagre

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 memberi /home partisi sendiri karena alasan ini juga.

1
ncmathsadist

Jawaban ini mungkin bermanfaat juga.

/ usr/local

Gagasan asli di balik /usr/local adalah memiliki direktori terpisah ('lokal') '/ usr' di setiap mesin selain /usr, yang mungkin saja dipasang hanya-baca 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. /usr/local hierarki untuk digunakan oleh administrator sistem ketika menginstal perangkat lunak secara 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 sedang diinstal untuk mengganti atau memutakhirkan perangkat lunak dalam /usr.

1