Для програмного забезпечення тільки вам потрібно використовувати свій домашній каталог замість /usr/local
.
Замість того, щоб змінювати право власності /usr/local
або не запускати команди як root, коли ви цього не хочете, вам слід просто налаштувати свої збірки, щоб вони встановились у вашому домашньому каталозі замість /usr/local
. Це вирішує всі потенційні проблеми зі зміною права власності на /usr/local
, включаючи те, як рухаються його bin
та sbin
підкаталоги root
.
Якщо вам потрібно дозволити іншим користувачам запускати ваше програмне забезпечення, ви можете надати їм доступ. Насправді, вони, ймовірно, зможуть уже, тому що за замовчуванням ваш домашній каталог має дозвільне читання та виконання доступу . (Якщо ви цього не хочете, ви можете змінити це досить легко, просто використовуючи chmod
будь-які файли чи каталоги, які ви хочете зробити приватними, а можливо, також змінити свої umask
.)
За допомогою програмного забезпечення, встановленого у вашому домашньому довіднику, бінарні файли, які були б увійшли /usr/local/bin
, замість цього заходять . Ви отримаєте інші підкаталоги вашого домашнього каталогу, відповідні підкаталогам того програмного забезпечення, яке вам потрібно встановити. Зазвичай це відбувається автоматично, коли ви встановлюєте програмне забезпечення з вихідного коду./home/username/bin
/usr/local
Налаштування ваших побудов
Більшість програмного забезпечення, яке ви будуєте з вихідного коду, має крок:
./configure
Для більшості програмного забезпечення, яке постачається зі configure
скриптом, який можна запустити таким чином, він за замовчуванням налаштовує збірку для встановлення всередині, /usr/local
коли ви, зрештою, запустіть sudo make install
її встановити. Причина в тому, що це неявно еквівалентно бігу:
./configure --prefix=/usr/local
Щоб налаштувати збірку для встановлення у своєму домашньому каталозі, використовуйте це замість цього:
./configure --prefix="$HOME"
На практиці в Ubuntu шляхи до домашнього каталогу не містять пробілів, інших пробілів або інших символів, які будуть оброблятися спеціально оболонкою, як *
, наприклад , якщо ви не налаштували обліковий запис користувача досить дивним чином, ви можете просто ввести:
./configure --prefix=$HOME
(Я не рекомендую користуватися цим звичкою для написання сценаріїв . Також, на деяких інших ОС - наприклад, macOS - рідше траси в домашні каталоги користувачів містять пробіли.)
Або якщо ви хочете, ви можете ввести повний шлях до домашнього каталогу:
./configure --prefix=/home/username
( username
Звичайно, замініть власним іменем користувача. Якщо з якоїсь причини вашого домашнього каталогу немає, /home
то вам доведеться відповідно налаштувати.)
Встановлення ваших збірок
Після запуску make
, можливо, ви звикли до запуску sudo make install
, але при встановленні у власному домашньому каталозі вам не потрібно запускати його як корінь, тож ви можете - і повинні - використовувати sudo
. Просто запустіть:
make install
Аналогічно для програмного забезпечення, яке підтримує uninstall
ціль:
make uninstall
Це саме те, про що ви просили ... просто у вашому домашньому каталозі, а не /usr/local
.
Запуск ваших програм
Можливоbin
підкаталог вашого домашнього каталогу є:
- вже у вашому
$PATH
, або
- буде у вас,
$PATH
якщо ви просто вийдете та знову ввійдете в систему.
Причина полягає в тому, що .profile
файл у вашому домашньому каталозі, який містить команди, які виконуються під час входу, містить це за замовчуванням для облікових записів користувачів, створених у більшості версій Ubuntu (включаючи початковий обліковий запис адміністратора, створений при встановленні ОС):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Цей код запускається під час входу (оскільки він є .profile
) і розміщує ваш особистий bin
каталог $PATH
лише в тому випадку, якщо він існує на той момент. Ось чому вам може знадобитися вийти та знову увійти.
Старіші випуски, такі як Ubuntu 14.04, а також новіші версії, такі як Ubuntu 17.10, поставляються з цим. Однак Ubuntu 16.04, який, мабуть, є найпопулярнішим випуском статей у цій статті, натомість має таке:
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Це просто додає bin
підкаталог домашнього каталогу ---, а також .local/bin
підкаталог - до вашого $PATH
, не перевіряючи, чи існують ці каталоги насправді. Так що якщо ви використовуєте 16.04, або при оновленні від системи , яка була 16,04 , коли була створена ваш обліковий запис користувача, то bin
підкаталог вашого домашнього каталогу, швидше за все , вже в вашому $PATH
.
Ваш .profile
файл копіюється з /etc/skel
каталогу під час створення облікового запису користувача. Якщо ваш обліковий запис користувача був створений на старій версії Ubuntu, він отримав цю версію .profile
, і він не був змінений - для вашого облікового запису користувача - оновленням до більш нової версії.
Після того, як bin
підкаталог вашого домашнього каталогу знаходиться у вашому $PATH
, ви зможете запускати програми, виконуючі файли яких встановлені там, просто ввівши їх імена, як ви могли це зробити з програмами, встановленими менеджером пакетів Ubuntu або встановленими всередині /usr/local
.
.local
варіант
Можливо, ви помітили, що .profile
файл за замовчуванням для облікових записів користувачів, створених у деяких випусках Ubuntu, в тому числі в 16.04, як описано вище, додає не тільки $HOME/bin
ваш шлях, але і $HOME/.local/bin
. Якщо ваш .profile
додаток цього не додає, але ви хочете це зробити, ви можете просто відредагувати його.
Хоча часто використовується для зберігання налаштувань і кешованих даних , ви також можете встановити програмне забезпечення всередині .local
підкаталогу домашнього каталогу. Ви повинні відчувати себе таким, що заборонено, так як з точки зору зручності використання та безпеки --prefix="$HOME/.local"
схоже на --prefix="$HOME"
.
Пам’ятайте, що файли та каталоги, що починаються з .
, не відображаються за замовчуванням у графічних браузерах файлів (використовуйте Ctrl+, Hщоб їх приховати та повторно сховати) або ls
командою (передайте -A
або -a
прапор, щоб їх показати). Це може бути не те, що ви хочете, а може бути саме те, що ви хочете. Це питання особистих уподобань.
Однак я помітив, що деякі автоматизовані менеджери пакунків на основі джерел, які створюють та встановлюють програмне забезпечення в домашньому каталозі, використовують $HOME/.local
. Я насправді не знаю, наскільки це поширене - я сподіваюсь, що далі вивчити і оновити цю відповідь, - але ви можете скористатись $HOME
лише тим, що ви збираєте вручну. Таким чином буде зрозуміло, звідки взялися речі. І якщо відбудеться зіткнення, програмне забезпечення все одно може існувати припустимо.
Ви також можете навмисно встановити певне програмне забезпечення $HOME/.local
та інше програмне забезпечення в $HOME
. Тобі вирішувати. Незалежно від того, яка bin
каталог з’явиться першою у вашій $PATH
змінній оточення, це та, з якої буде виконуватися команда, у разі якщо команди з однаковим іменем існують в обох.
Заслуга Zanna та Videonauth для вказуючи на помилки в попередній версії цієї відповіді, про те, яких релізах Ubuntu є якийсь код за замовчуванням в .profile
, і допомагають мені виправити їх (дивіться також тут ).