Hanya untuk perangkat lunak yang Anda butuhkan, gunakan direktori home Anda alih-alih /usr/local
.
Alih-alih mengubah kepemilikan /usr/local
atau harus menjalankan perintah sebagai root ketika Anda tidak ingin, Anda hanya perlu mengkonfigurasi build Anda sehingga mereka menginstal di direktori home Anda alih-alih /usr/local
. Ini mengatasi semua masalah potensial dengan mengubah kepemilikan /usr/local
, termasuk bagaimana bin
dan sbin
subdirektori berada di root
jalurnya.
Jika Anda perlu mengizinkan pengguna lain untuk menjalankan perangkat lunak Anda, Anda dapat memberi mereka akses. Bahkan, mereka mungkin sudah bisa, karena secara default direktori home Anda memiliki akses permisif membaca dan mengeksekusi . (Jika Anda tidak menginginkannya, Anda dapat mengubahnya dengan mudah, hanya dengan menggunakan chmod
file atau direktori apa pun yang Anda ingin jadikan pribadi dan mungkin juga mengubah Anda umask
.)
Dengan perangkat lunak yang terinstal di direktori home Anda, binari yang sudah masuk /usr/local/bin
akan masuk . Anda akan mendapatkan subdirektori lain dari direktori home Anda yang sesuai dengan subdirektori yang dibutuhkan perangkat lunak yang Anda instal. Ini biasanya akan terjadi secara otomatis ketika Anda menginstal perangkat lunak dari kode sumber./home/username/bin
/usr/local
Mengkonfigurasi Bangunan Anda
Sebagian besar perangkat lunak yang Anda buat dari kode sumber memiliki langkah di mana Anda menjalankan:
./configure
Untuk sebagian besar perangkat lunak yang dikirimkan dengan configure
skrip yang dapat dijalankan seperti itu, itu default untuk mengkonfigurasi build untuk instalasi di dalamnya /usr/local
ketika Anda akhirnya menjalankan sudo make install
untuk menginstalnya. Alasannya adalah secara implisit setara dengan menjalankan:
./configure --prefix=/usr/local
Untuk mengonfigurasi bangunan untuk pemasangan di direktori home Anda, gunakan ini sebagai gantinya:
./configure --prefix="$HOME"
Dalam praktiknya, di Ubuntu, jalur direktori home tidak mengandung spasi, spasi putih lain, atau karakter lain yang akan diperlakukan secara khusus oleh shell seperti *
, jadi kecuali Anda telah membuat akun pengguna dengan aneh, Anda bisa mengetik:
./configure --prefix=$HOME
(Saya tidak menyarankan membiasakan diri untuk menulis skrip . Juga, pada beberapa OS lain - seperti macOS - lebih jarang jalur ke direktori home pengguna mengandung ruang.)
Atau jika Anda mau, Anda bisa mengetikkan path direktori home lengkap Anda:
./configure --prefix=/home/username
(Ganti username
dengan nama pengguna Anda yang sebenarnya, tentu saja. Jika karena alasan tertentu direktori home Anda tidak masuk/home
maka Anda harus menyesuaikannya.)
Menginstal Build Anda
Setelah Anda menjalankan make
, Anda mungkin terbiasa menjalankannya sudo make install
, tetapi ketika Anda menginstal di direktori home Anda sendiri, Anda tidak perlu menjalankannya sebagai root, sehingga Anda dapat - dan harus --omit sudo
. Lari saja:
make install
Demikian pula untuk perangkat lunak yang mendukung uninstall
target:
make uninstall
Ini persis seperti yang Anda minta ... hanya di direktori home Anda, bukan /usr/local
.
Menjalankan Program Anda
Mungkin yang bin
subdirektori dari direktori home Anda adalah baik:
- sudah ada di Anda
$PATH
, atau
- akan ada di Anda
$PATH
jika Anda baru saja keluar dan masuk.
Alasannya adalah .profile
file di direktori home Anda, yang berisi perintah yang berjalan saat Anda masuk, berisi ini secara default untuk akun pengguna yang dibuat di sebagian besar versi Ubuntu (termasuk akun administrator awal yang dibuat ketika Anda menginstal OS):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Kode itu berjalan ketika Anda masuk (karena ada .profile
) dan menempatkan bin
direktori pribadi Anda $PATH
hanya jika ada pada saat itu. Itu sebabnya Anda mungkin harus keluar dan kembali.
Rilis yang lebih lama seperti Ubuntu 14.04, serta rilis yang lebih baru seperti Ubuntu 17.10, datang dengan itu. Namun, Ubuntu 16.04, yang mungkin merupakan rilis paling populer pada saat penulisan ini, malah memiliki ini:
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Itu hanya menambahkan bin
subdirektori dari direktori home Anda --- dan juga .local/bin
subdirektori - ke direktori Anda $PATH
, tanpa memeriksa apakah direktori tersebut benar-benar ada. Jadi jika Anda menggunakan 16,04, atau jika Anda meningkatkan dari sistem yang 16,04 saat akun pengguna Anda dibuat, maka bin
subdirektori dari direktori home Anda kemungkinan sudah ada di Anda$PATH
.
.profile
File Anda disalin dari /etc/skel
direktori ketika akun pengguna Anda dibuat. Jika akun pengguna Anda dibuat pada rilis Ubuntu yang lebih lama, ia mendapat versi itu.profile
, dan itu tidak diubah - untuk akun pengguna Anda - dengan memutakhirkan ke rilis yang lebih baru.
Setelah bin
subdirektori dari direktori home Anda berada di Anda $PATH
, Anda akan dapat menjalankan program yang file-file yang dapat dieksekusi diinstal di sana hanya dengan mengetikkan namanya, sama seperti yang dapat Anda lakukan dengan program-program yang diinstal oleh manajer paket Ubuntu atau diinstal di dalam/usr/local
.
Itu .local
Option
Anda mungkin telah memperhatikan bahwa .profile
file default untuk akun pengguna yang dibuat di beberapa rilis Ubuntu, termasuk di 16.04 seperti dijelaskan di atas, menambahkan tidak hanya $HOME/bin
ke jalur Anda, tetapi juga $HOME/.local/bin
. Jika Anda .profile
tidak menambahkan itu, tetapi Anda mau , maka Anda cukup mengeditnya.
Meskipun sering digunakan untuk menyimpan pengaturan dan data cache , Anda juga dapat menginstal perangkat lunak di dalam .local
subdirektori direktori home Anda. Anda harus merasa tidak terhalang untuk melakukannya, karena dari sudut pandang kegunaan dan keamanan, --prefix="$HOME/.local"
serupa dengan--prefix="$HOME"
.
Ingat bahwa file dan direktori yang memulai dengan .
tidak ditampilkan secara default di browser file grafis (gunakan Ctrl+ Huntuk menyembunyikan dan menyembunyikannya) atau dengan ls
perintah (lulus -A
atau-a
bendera untuk menunjukkannya). Ini mungkin bukan yang Anda inginkan, atau mungkin persis apa yang Anda inginkan. Ini adalah masalah pilihan pribadi.
Namun, saya telah mengamati bahwa beberapa manajer paket berbasis sumber otomatis yang membangun dan menginstal perangkat lunak dalam penggunaan direktori home seseorang $HOME/.local
. Saya sebenarnya tidak tahu seberapa umum hal ini - saya berharap untuk menyelidiki lebih lanjut dan memperbarui jawaban ini - tetapi Anda mungkin lebih suka menggunakan $HOME
hal-hal yang Anda kompilasi secara manual. Dengan begitu akan jelas dari mana segala sesuatu berasal. Dan jika ada tabrakan, perangkat lunak itu masih mungkin hidup berdampingan secara wajar.
Anda mungkin juga dengan sengaja menginstal beberapa perangkat lunak di $HOME/.local
dan perangkat lunak lain di $HOME
. Terserah kamu. bin
Direktori mana pun yang pertama kali muncul di $PATH
variabel lingkungan Anda adalah yang akan dijalankan oleh perintah, jika perintah dengan nama yang sama ada di keduanya.
Penghargaan diberikan kepada Zanna dan Videonauth karena menunjukkan kesalahan dalam versi sebelumnya dari jawaban ini, mengenai rilis Ubuntu mana yang memiliki kode default .profile
, dan membantu saya untuk memperbaikinya (lihat juga di sini ).