Чи потрібно розміщувати додаток у / usr / local чи / usr / local / share?


21

Що таке "стандарти" - чи слід розміщувати додаток (не лише двійковий, а весь розподіл) на / usr / local або / usr / local / share.

Наприклад, scala або weka - вона містить приклади, бінарні файли, бібліотеки тощо. Так було б

/usr/local/scala-2.9.1 

або

/usr/local/share/scala-2.9.1

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

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


6
Я думаю / opt в цьому контексті більше звичний.
Faheem Mitha

@Faheem Mitha, дуже хороший момент. Завдяки вам я знайшов таке пояснення дерево "/ opt /" провайдер ", подібне до того, як Windows встановить нове програмне забезпечення у своє дерево каталогів C: \ Windows \ Progam Files \" Назва програми "від linuxtopia.org/ online_books / linux_beginner_books /… Чи можете ви, будь ласка, опублікувати свій коментар як відповідь, щоб я позначив це як відповідь? Дякую.
greenoldman

@greenoldman: також , будь ласка розуміють , що зберігання всіх файлів в одному директорії це НЕ «стандартний» спосіб установки додатків в Unix. /optце справді правильна відповідь, але вона не "широко використовується" традиційним програмним забезпеченням Unix / Linux. Є великі причини розділити ваші файли на декілька файлів, а також відрізнити їх /usrвід/usr/local
MestreLion,

Наприклад, зберігання всіх виконуваних файлів з усіх додатків в одному /usr/bin(або /usr/local/bin) дозволяє вашому $ PATH дійти до всього програмного забезпечення, не потребуючи його редагування для кожного програмного забезпечення, що не існує в Windows
MestreLion

Відповіді:


19

Я думаю / opt в цьому контексті є більш стандартним. Нижче наведено відповідний розділ стандарту ієрархії файлової системи .

Розподільники можуть встановлювати програмне забезпечення в / opt, але не повинні змінювати або видаляти програмне забезпечення, встановлене місцевим системним адміністратором, без згоди місцевого системного адміністратора.

Обґрунтування Використання / вибір додаткового програмного забезпечення є усталеною практикою у спільноті UNIX. Бінарний інтерфейс застосунку System V [AT&T 1990], заснований на визначенні інтерфейсу System V (Третя редакція), передбачає структуру / opt структуру, дуже подібну до визначеної тут.

Стандарт бінарної сумісності Intel v. 2 (iBCS2) також забезпечує подібну структуру для / opt.

Як правило, всі дані, необхідні для підтримки пакету в системі, повинні бути присутніми в / opt /, включаючи файли, призначені для копіювання в / etc / opt / та / var / opt /, а також зарезервовані каталоги в / opt.

Незначні обмеження щодо дистрибутивів, які використовують / opt, необхідні, оскільки можливі конфлікти між програмним забезпеченням, встановленим дистрибутивом та локальним встановленням, особливо у випадку фіксованих імен траєкторій, знайдених у деяких бінарних програмах.

Структура каталогів нижче / opt / залишається за пакувальником програмного забезпечення, хоча рекомендується, щоб пакунки встановлювались в / opt // та дотримуватися аналогічної структури інструкціям для / opt / package. Вагомою причиною відхилення від цієї структури є пакети підтримки, у яких файли можуть бути встановлені в / opt // lib або / opt // bin.


5

Вам слід користуватися лише /usr/local/shareдля файлів, не характерних для певної архітектури / версії ОС.

Після цього вирішувати, чи будете ви розподіляти файли між існуючими підкаталогами /usr/localабо створити новий виділений каталог у /usr/local(але останній вже не буде існувати у виконуваному файлі PATH, the LD_LIBRARY_PATH, ні the MANPATH).

Погляньте на FHS


Дякую. Отже, якщо це аналогія з Windows, це має бути / usr / local / SPECIAL_APP, а всередині мають бути його підкаталоги, правда?
greenoldman

@greenoldman: ні. Немає аналогія не підходить , так як для Windows і Linux використовують різні моделі: У вікнах, ви зазвичай тримаєте всі файли в одному директорії, де в Linux ви зазвичай розколоти їх на bin, share, libі т.д.
MestreLion

3

Поки не /optстало звичним, звичайне місце було /usr/local/lib/<package>.


1
З того, що я прочитав, / opt є досить поширеним, але не використовується широко, але це не сюрприз, якщо ви думаєте про кількість пакетів, наявних у сховищах.
greenoldman

0

Встановлюючи локальні програми, існує кілька варіантів залежно від способу доступу та оновлення. Також слід зазначити, що деякі методи більше схожі на систему, яка у вас вже є, а деякі - більш спеціальні. Я б сказав, що "найкращі" рішення - це ті, які полегшують управління.

Цю відповідь я розділив, виходячи з кількості пакетів, для яких можна встановити власні установки. Розщеплення базується на моєму власному досвіді. Цей досвід важить час, необхідний для управління пакунками та ризики зіпсувати щось. Я не маю на увазі, що я знаю загальні стандарти, але маю на увазі це як орієнтир, на який слід звертати увагу при прийнятті рішення.

Лише для декількох пакетів я хотів би поставити додаткові пакети /opt, де вони перешкоджають усьому іншому, тому нічого не може зіпсувати їх, і вони можуть зіпсувати щось інше. Це метод, який я використовую в своєму NAS. Цей метод, однак, захищає двійкові файли від вашого PATH, тому вам потрібно буде додати їх вручну. Це добре спрацьовує, якщо встановити лише кілька пакунків, але стає безлад, якщо їх багато.

Оновити тут досить просто, оскільки ви просто перезаписуєте каталог.

Плюси:

  • просто
  • швидко налаштувати
  • жодних шансів не вплинути на інші частини системи
  • видалити це так просто, як встановити

Мінуси:

  • Стає досить стомлюючим, якщо кількість пакунків, які потрібно встановити, велика
  • Робить PATHбезладним

Для більш ніж декількох пакетів я рекомендую використовувати виконувану програму /usr/local/<your package>і символічне з'єднання від /usr/local/binабо /usr/local/sbinзалежно від того, якщо вам потрібні привілеї root. Це позбавляє вас від зміни вашої PATH кожного разу, коли додається щось нове, щоб PATH залишався чистим. Це метод, який я використовую на своєму ноутбуці Arch для всіх пакетів без пакету та пакетів AUR.

Оновлення проводиться за допомогою перезапису каталогу пакунків і перевірки того, що симпосилання все-таки є дійсним, і виправлення, якщо це не так.

Плюси

  • Це не стає PATHбезладним
  • Не впливає на базову систему
  • Ще дуже просто видалити всі додатки та повернутися до чистої базової системи

Мінуси:

  • Більше роботи з налаштуванням
  • Видалення лише одного пакета має зробити певний пошук

Для багатьох пакетів . Оскільки це не так, як ви хочете, я буду тримати це коротко. Я б рекомендував Нарізка пакет в bin, lib, shareі т.д. , і установка їх /usr/local. Це для того, щоб зберегти структуру в чистоті. Ви також можете вказати, хто може писати, де і багато іншого. Наприклад, ви не хочете, щоб люди, крім кореня, що модифікували виконуваний файл, не змінювали.

Тут оновлення стає дещо складнішим, оскільки вам потрібно писати в більш ніж один каталог. Я б порекомендував упакувати всю справу і дозволити менеджеру пакунків впоратися з рештою.

Частка

shareСам каталог для архітектури незалежних файлів , як зазначено в Фахім по посиланню і залежні файли архітектури повинні йти lib, lib32, lib64і т.д.


Давати поради на основі кількості пакетів не корисно; як я можу знати, до якої групи належить мій пакет?
Алоїс Магдал

Крім того, коли ви говорите "рекомендується", посилайтесь на джерело або чітко
заявляєте,

І, до речі, я не бачу, як у / opt буде менше шансів, що речі зіпсують вашу програму, ніж коли вони поширюються на / usr і т. Д. Поплутати інші програми - це більше, ніж правильно називати речі та не мати помилок. встановити сценарії.
Алоїз Магдал

Це, безумовно, про називання, що робить речі заплутані. Це те, що я відчував у минулому, і саме тому мені подобається тримати свої "додаткові" пакети подалі від усього іншого. Я все ще не хочу, щоб це виглядало некрасиво.
Lauri Tšli

І так, ви правильні щодо "рекомендується", як ви бачите з моєї відповіді, я використовував "я б рекомендував" скрізь в іншому місці. Зараз я виправив правопис і уточнив, чому я б щось рекомендував. Знову ж таки, це лише моя точка зору, і це не означає остаточну відповідь.
Lauri Tšli
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.