Saya memiliki executable untuk klien kontrol versi perforce ( p4). Saya tidak dapat menempatkannya /opt/localkarena saya tidak memiliki hak akses root. Apakah ada lokasi standar di mana ia harus ditempatkan $HOME?
Apakah Hirarki Sistem File memiliki konvensi yang mengatakan bahwa executable / binari lokal perlu ditempatkan $HOME/bin?
Secara umum, jika non-sistem yang diinstal dan dipelihara biner harus dapat diakses di seluruh sistem untuk beberapa pengguna, itu harus ditempatkan oleh administrator /usr/local/bin. Ada hierarki lengkap di bawah /usr/localyang umumnya digunakan untuk paket perangkat lunak yang disusun dan diinstal secara lokal.
Jika Anda adalah satu-satunya pengguna biner, menginstal ke $HOME/binadalah lokasi yang tepat karena Anda dapat menginstalnya sendiri dan Anda akan menjadi satu-satunya konsumen. Jika Anda mengkompilasi paket perangkat lunak dari sumber, itu juga tepat untuk membuat hierarki lokal parsial atau penuh di $HOMEdirektori Anda . Hirarki lokal lengkap akan terlihat seperti ini.
$HOME/bin Binari lokal
$HOME/etc Konfigurasi sistem khusus host untuk binari lokal
$HOME/games Binari game lokal
$HOME/include File header C lokal
$HOME/lib Perpustakaan lokal
$HOME/lib64 Perpustakaan 64-bit lokal
$HOME/man Manual online lokal
$HOME/sbin Binari sistem lokal
$HOME/share Hirarki arsitektur-independen lokal
$HOME/src Kode sumber lokal
Saat menjalankan configure, Anda harus menentukan hierarki lokal Anda untuk instalasi dengan menetapkan $HOMEsebagai awalan untuk instalasi default.
./configure --prefix=$HOME
Sekarang ketika make && make installdijalankan, binari yang dikompilasi, paket, halaman manual, dan perpustakaan akan diinstal ke dalam $HOMEhierarki lokal Anda . Jika Anda belum secara manual membuat $HOMEhierarki lokal, make installakan membuat direktori yang dibutuhkan oleh paket perangkat lunak.
Setelah terinstal di $HOME/bin, Anda dapat menambahkan $HOME/binuntuk Anda $PATHatau hubungi biner menggunakan mutlak $PATH. Beberapa distribusi akan termasuk $HOME/binke dalam Anda $PATHsecara default. Anda dapat menguji ini dengan echo $PATHmelihat apakah $HOME/binada, atau memasukkan biner $HOME/bindan menjalankannya which binaryname. Jika kembali $HOME/bin/binaryname, maka secara default $ PATH Anda.
Saya tidak akan merekomendasikan menggunakan $HOME. Ini membanjiri direktori home Anda dengan banyak direktori yang Anda tidak tertarik sama sekali. Yang ingin memiliki man, lib, dll di dir rumah yang? Saya lebih suka membuat hierarki di bawah $HOME/binatau $HOME/local. Itu menambahkan hanya satu subdirektori ke direktori home Anda, bukan sepuluh. The PATHdapat dengan mudah disesuaikan untuk memasukkan $HOME/bin/binatau $HOME/local/bin.
@janneb Spesifikasi Direktori Pangkalan XDG yang Anda rujuk hanya menyebutkan $HOME/.local/share(Versi 0.7, 24 November 2010).
Piotr Dobrogost
28
Seperti yang disebutkan sebelumnya , /usr/localdimaksudkan sebagai awalan untuk, pada dasarnya, perangkat lunak yang diinstal oleh administrator sistem, sedangkan /usrharus digunakan untuk perangkat lunak yang diinstal dari paket distribusi.
Gagasan di balik ini adalah untuk menghindari bentrokan dengan perangkat lunak terdistribusi (seperti rpmdan debpaket) dan memberikan admin pemerintahan penuh atas awalan "lokal".
Ini berarti bahwa admin dapat menginstal perangkat lunak yang dikompilasi khusus saat masih menggunakan distro seperti debian.
Perangkat lunak yang ditempatkan di / atau / usr dapat ditimpa oleh peningkatan sistem (meskipun kami menyarankan distribusi tidak menimpa data di / etc dalam keadaan ini). Untuk alasan ini, perangkat lunak lokal tidak boleh ditempatkan di luar / usr / local tanpa alasan yang kuat.
Saat memasang perangkat lunak khusus pengguna, uther menyarankan penggunaan $HOMEsebagai awalan karena ini memastikan Anda memiliki izin menulis. Secara pribadi, saya merasa menggunakan $HOME/.localuntuk menjadi solusi yang lebih elegan, karena itu menghindari kekacauan direktori rumah Anda (semoga) bagus dan rapi!
$HOME/.local/sharesudah digunakan dalam spesifikasi Direktori Dasar XDG freedesktop.org , jadi tidak perlu banyak membayangkan menambahkan sebuah $HOME/.local/binke Anda $PATHdan membuat $HOME/.local/lib, dll, saat Anda sedang menggunakannya.
Jika Anda tidak benar-benar ingin awalan Anda menjadi direktori tersembunyi, Anda juga dapat membuat tautan simbolis dengan mudah, misalnya:
ln -s .local ~/local
Sidenote
Perlu dicatat bahwa .config(tidak .local/etc) adalah nilai default untuk $XDG_CONFIG_HOMEdigunakan untuk file konfigurasi khusus pengguna. Saya juga harus menunjukkan bahwa, sayangnya, sebagian besar perangkat lunak mengabaikan XDG dan membuat file konfigurasi di mana pun mereka suka (biasanya di root $HOME). Perhatikan juga bahwa $XDG_CONFIG_HOMEmungkin tidak disetel jika default $HOME/.configdiinginkan.
Anehnya, tidak ada direktori yang disediakan untuk file konfigurasi default distribusi, jadi tidak ada cara untuk mengetahui apakah suatu file /etcyang disediakan oleh distro atau diedit oleh administrator sistem.
Catatan samping /etcitu benar-benar menyebalkan ketika mengelola server dengan banyak admin - cukup sulit untuk melacak pengeditan khusus untuk file conf.
$HOME
. Ini membanjiri direktori home Anda dengan banyak direktori yang Anda tidak tertarik sama sekali. Yang ingin memilikiman
,lib
, dll di dir rumah yang? Saya lebih suka membuat hierarki di bawah$HOME/bin
atau$HOME/local
. Itu menambahkan hanya satu subdirektori ke direktori home Anda, bukan sepuluh. ThePATH
dapat dengan mudah disesuaikan untuk memasukkan$HOME/bin/bin
atau$HOME/local/bin
.$HOME/.local/share
(Versi 0.7, 24 November 2010).Seperti yang disebutkan sebelumnya ,
/usr/local
dimaksudkan sebagai awalan untuk, pada dasarnya, perangkat lunak yang diinstal oleh administrator sistem, sedangkan/usr
harus digunakan untuk perangkat lunak yang diinstal dari paket distribusi.Gagasan di balik ini adalah untuk menghindari bentrokan dengan perangkat lunak terdistribusi (seperti
rpm
dandeb
paket) dan memberikan admin pemerintahan penuh atas awalan "lokal".Ini berarti bahwa admin dapat menginstal perangkat lunak yang dikompilasi khusus saat masih menggunakan distro seperti debian.
Saat memasang perangkat lunak khusus pengguna, uther menyarankan penggunaan
$HOME
sebagai awalan karena ini memastikan Anda memiliki izin menulis. Secara pribadi, saya merasa menggunakan$HOME/.local
untuk menjadi solusi yang lebih elegan, karena itu menghindari kekacauan direktori rumah Anda (semoga) bagus dan rapi!$HOME/.local/share
sudah digunakan dalam spesifikasi Direktori Dasar XDG freedesktop.org , jadi tidak perlu banyak membayangkan menambahkan sebuah$HOME/.local/bin
ke Anda$PATH
dan membuat$HOME/.local/lib
, dll, saat Anda sedang menggunakannya.Jika Anda tidak benar-benar ingin awalan Anda menjadi direktori tersembunyi, Anda juga dapat membuat tautan simbolis dengan mudah, misalnya:
Sidenote
Perlu dicatat bahwa
.config
(tidak.local/etc
) adalah nilai default untuk$XDG_CONFIG_HOME
digunakan untuk file konfigurasi khusus pengguna. Saya juga harus menunjukkan bahwa, sayangnya, sebagian besar perangkat lunak mengabaikan XDG dan membuat file konfigurasi di mana pun mereka suka (biasanya di root$HOME
). Perhatikan juga bahwa$XDG_CONFIG_HOME
mungkin tidak disetel jika default$HOME/.config
diinginkan.Anehnya, tidak ada direktori yang disediakan untuk file konfigurasi default distribusi, jadi tidak ada cara untuk mengetahui apakah suatu file
/etc
yang disediakan oleh distro atau diedit oleh administrator sistem.sumber
.local
dalam FHS/etc
itu benar-benar menyebalkan ketika mengelola server dengan banyak admin - cukup sulit untuk melacak pengeditan khusus untuk file conf.