Де встановлюєте користувацькі програми, де "кращі практики" пропонують їх розміщення?


210

Іноді я встановлюю програми вручну, а не використовую aptчи інший менеджер пакунків.

Що місце ( /usr/, /usr/local/, /opt/, /home/і т.д.) було запропоновано «найкращої практики» для установки користувальницьких додатків?


Любить встановлювати речі з джерела так часто, я написав невеликий інструмент, щоб це зробити, який робить зміни у файлі запуску оболонки самостійно (а також змінювати префікс вашої бібліотеки, якщо ви запитуєте, для програм, які залежать від спільних бібліотек ). Не дуже багато функцій, але це працює 99% часу.
new123456

Пов’язана публікація: askubuntu.com/q/138547/62483
Лучіо

1
Велика дискусія про відмінність між /optі /usr/local: unix.stackexchange.com/q/11544/11917
blong

Відповіді:


184

Це залежить, насправді. Якщо програма має makefile або, наприклад, для додатків python, якщо програма використовує distutils (наприклад, має setup.pyфайл) або подібну систему збирання / встановлення, вам слід встановити її /usr/local/. Це часто поведінка за замовчуванням.

Як я розумію, /usr/local/є ієрархія, схожа на /usr/. Однак каталоги, як /usr/bin/і /usr/lib/зазвичай, зарезервовані для встановлення пакунків через apt. Отже програма, яка очікує "встановлення", /usr/повинна добре працювати /usr/local/.

Якщо вам просто потрібно витягти тарбол і запустити безпосередньо (наприклад, Firefox), тоді вставте його /opt/. Програма, яка потребує лише одного каталогу і отримає всі файли / бібліотеки відносно цього каталогу, може отримати один каталог для себе /opt/.


24
Здається, про це багато хто забуває opt/- на мою думку, ти вдарив цвях по голові, як за цією метою.
Marco Ceppi

3
Створіть символьне посилання з / usr / bin або додайте його до PATH у ~ / .bashrc
Алекс

1
Про що ~/.local/share? @Marco
ultimatex

1
Ви можете встановити речі всередині ~(домашній каталог), але це зробить програму доступною лише для одного користувача. Іншим користувачам вашої системи доведеться встановлювати та підтримувати власні установки цього програмного забезпечення. Що стосується найкращих практик встановлення програм для встановлення домашнього каталогу, я вважаю, що не існує настільки чітких рекомендацій, оскільки ви не заважатимете системним пакетам.
Умань

1
Чи неправильно встановлювати додатки, які "розпаковані з дьогтю" під / home / ubuntu / myapp - чим це відрізняється порівняно з / opt / myapp?
JARC

116

Добре пам’ятати, що /usrце не для користувачів, а для системи Unix .

Як такий, я схильний вважати, що будь-який дистрибутив має право переповнювати весь вміст /usr,і що мої конкретні доповнення до системи входять /usr/local, які я зберігаю перед оновленням.

Тим часом заявки та інші речі надходять /opt.

Деякі люди відчувають себе комфортно, коли кладуть речі /home, хоча я рідко дотримуюся цієї конвенції.

Все, що сказано, я дозволяю менеджеру розповсюджувальних пакетів робити все спочатку своїм способом, а потім виконувати вищезазначене під час прокатки ручної роботи.


35
Варто пам’ятати, що «системні ресурси Unix» - це перейменування, яке виконується ПІСЛЯ додано «/ home». У старі, старі, старі часи (Unix Version 6 et.al.) ви побачили каталоги типу / usr / jimmy, / usr / siobhan, / usr / ahmed тощо), оскільки каталоги "user" зберігалися в / usr .
Марк Лейтон Фішер

5
Добре, я кусаю: що таке опція?
Сет

3
@Seth Я думаю, що це "необов’язково" - спочатку це було програмне забезпечення, яке не було частиною встановлення за замовчуванням.
Карл Н

5
/ usr є User. Це було тому, що користувачі Linux були розробниками. По-перше, як це почало розділяти на розробників і користувачів, /homeбуло введено dir. А потім хтось - то прийшла в голову ідея сказати , що це означає Unix System Resources, що на насправді не має сенсу, тому що ми маємо Unix system Resourcesін/dev
Info-екран

2
Правильно, / usr - це назви. Мета змінилася з часів, коли Unix працював на PDP-7 ще в 1969 році.
Уолт Стоунбернер

34

Встановлення нестабільних програм, таких як Firefox devel in / home / user / opt /, значно полегшує їх видалення, і не виникає плутанина для інших користувачів щодо того, якою версією вони повинні користуватися ... Тож якщо це не програма для глобального використання, встановіть це у підпапці у вашому домашньому каталозі.

Ніколи не встановлюйте програми в / usr /, це може спричинити хаос, речі, встановлені в / usr /, повинні бути призначені лише для розповсюдження пакетів. / usr / local / - для пакунків, що складаються локально. І структура працює точно так само! Файли в / usr / local / будуть мати пріоритет над файлами в / usr /

/ opt / слід використовувати для установки попередньо складених (бінарних) пакетів (Thunderbird, Eclipse, Netbeans, IBM NetSphere тощо) тощо. Але якщо вони призначені лише для одного користувача, їх слід помістити у домашній каталог.

Якщо ви хочете мати можливість запускати програму, встановлену у "дивному" місці (наприклад, / home / user / opt / firefox /), не вводячи весь шлях, вам потрібно додати його до змінної $ PATH, ви можете це зробити додавши такий рядок у свій /home/user/.profile

export PATH=/home/user/opt/firefox:$PATH

Ім'я папки має бути тим, де знаходиться виконавчий файл, який потрібно запустити.


26

Стандарт ієрархії файлової системи Linux вказує /usr/local.

З http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html :

Початкова ідея "/ usr / local" полягала в тому, щоб на кожній машині, крім "/ usr", був окремий каталог ("local") "/ usr", який може бути встановлений лише для читання з іншого місця. Він копіює структуру '/ usr'. У наші дні "/ usr / local" широко вважається хорошим місцем для збереження самостійно складених або сторонніх програм. / Usr / local ієрархія використовується для системного адміністратора при локальній установці програмного забезпечення. Це повинно бути захищено від перезапису при оновленні системного програмного забезпечення. Він може використовуватися для програм і даних, які можна поділити серед групи хостів, але їх не знайти в / usr. Місцеве програмне забезпечення повинно розміщуватися в / usr / local, а не / usr, якщо воно не встановлюється для заміни або оновлення програмного забезпечення в / usr.


1
Здається, це суперечить цьому / usr / локальному матеріалу з інформацією на сторінці opt: tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html "" Цей каталог зарезервований для всіх програмних та додаткових пакетів, які не є частиною встановлення за замовчуванням. Наприклад, тут зазвичай знаходяться пакети StarOffice, Kylix, Netscape Communicator і WordPerfect. Щоб відповідати FSSTND, всі додатки сторонніх розробників повинні бути встановлені в цьому каталозі. "..." (подібно до того, як Windows встановить нове програмне забезпечення до власного дерева каталогів C: \ Windows \ Progam Files \ "Назва програми ")"
Pod

6

Зазвичай у мене вдома є папка під назвою "Програми", куди я встановлюю ці програми, досить дивно (або ні) вони зараз усі на Java.

Для мене є одна велика перевага, коли я перевстановлюю або змінюю комп’ютери, вони переїжджають разом з рештою мого будинку. Має явний недолік, ці програми доступні лише моєму користувачеві.


Як я можу перевстановити Ubuntu 16.04, не втрачаючи даних у домашній папці? Я спробував це зробити за допомогою /каталогу formate лише потім ввести те саме старе ім’я користувача та пароль, але я виявив, що Ubuntu створює ще одну домашню папку.
Ібрагім Дісукі

1

Використовуйте "checkinstall" для перетворення чужорідного пакету в деб, щоб його не можна було встановити за допомогою менеджера пакунків.

Зверніть увагу, що конфігураційні файли часто не обробляються як конфігураційні файли (можливо, ігноруються або, можливо, трактуються як частина програми), і що сценарії до і після встановлення інколи потрапляють у помилку, хоча, як правило, попереджають вас, коли думаєте, що deb буде мати неправильний сценарій до або після встановлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.