Куди мені поставити програмне забезпечення, яке я складаю сам?


126

Мені потрібно зібрати деяке програмне забезпечення на моїй машині Fedora. Де найкраще розмістити його, щоб не заважати упакованому програмному забезпеченню?


Ви також можете вважати це питання корисним.
rozcietrzewiacz

Відповіді:


89

Правило, принаймні, у системах із ароматом Debian:

  • /usr/localдля матеріалів, які є "загальносистемними" - це, /usr/localяк правило, за замовчуванням дистрибутива $PATH, і дотримується стандартної ієрархії каталогів UNIX з /usr/local/bin, /usr/local/libі т.д.

  • /optдля чого ви не довіряєте , щоб зробити в масштабах всієї системи, з в додаток префіксів-то /opt/firefox-3.6.8, /opt/mono-2.6.7і так далі. Тут є необхідне більш ретельне управління, але також є менше шансів зламати вашу систему - і її легше видалити, оскільки ви просто видалите папку і її вже немає.


Що цікаво, багато програм / додатків автоматично пропонують встановити, /optякщо ви все-таки sudoвстановите.
HongboZhu

50

Якщо ви дійсно не хочете, щоб він взагалі заважав, не ставте його ніде у своєму $PATH.

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

Мій улюблений спосіб встановити спеціально складене програмне забезпечення - у моєму $HOMEкаталозі. Таким чином вам нічого не потрібно використовувати sudo, і це дуже гарно відокремлено від решти вашої системи. Наприклад:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

А якщо хочете, то можете додати /home/username/stage/binдо свого $PATH.


1
Безперечно, використання домашнього каталогу - найкращий варіант. ІМО.
бітек

1
+1 Погоджено. Мені подобається ~ / sbin для скриптів bash / ruby ​​/ python, і ~ / opt / ... для компільованих установок, з псевдонімами у ~ / bin.
Кріс

4
+1 за використання домашнього каталогу, оскільки це робить простішими речі; -1 для пропозиції уникати $ PATH - там фактично є каталоги, «зарезервовані для локальних установок» відповідно до стандартів (наприклад, /usr/local).
Ріккардо Муррі

1
Моя пропозиція уникати / usr / local базувалася на оригінальному (дещо розпливчастому) бажанні плаката не втручатися у пакетне програмне забезпечення. Оскільки є багато упакованого програмного забезпечення, яке "допоможе", заглянувши в / usr / local або в $ PATH, я зрозумів, що це може бути заважаючим. Але це дійсно залежить від індивідуальних потреб і цілей людини. / usr / local може бути ідеальним вибором у багатьох ситуаціях.
Сенді

ніхто не помітив повністю нерозуміння літери "s" у коментарі №2. що слід видалити
meffect

20

FHS каже поставити його в / usr / local там, де розповсюдження не повинні торкатися його. /usr/local/binдля бінарних файлів /usr/local/srcдля джерела та /usr/local/libдля бібліотек. Дивіться специфікацію FHS для отримання додаткової інформації


Що з конфігурацією? Скажіть, я встановив MySQL без використання менеджера пакунків, чи потрібно все-таки використовувати /etc/mysqlдля конфігурації?
Хубро

Щойно я помітив, що /usr/local/etcза замовчуванням є папка, я думаю, я повинен використовувати це ... :-)
Hubro,

10

Більшу частину часу я люблю розміщувати власні складені речі /opt. Це свого роду псевдостандартне місце. Ви також можете розглянути /usr/local, але я вважаю за краще тримати свої речі на 100% ізольованими.


1
distro має тенденцію вводити досить багато речей у / opt (зазвичай патентовані пакети) / opt не говорить про те, що дистрибутив не може торкнутися цього. проте це говорить про те, що про / usr / local
ксенотеррацид

1
Я ніколи не бачив, щоб дистрибутив ставив речі /opt, однак я багато разів бачив, де /usr/localвсіяне сміття, яке дійде з дистрибутива
Скотт Андерсон

дистрибутивом я користуюся, як вводити Java / opt. Я теж бачив читач акробатів. якщо вони ставлять речі в / usr / local, вони ігнорують FHS, які кажуть, що це повинно бути захищено від перезапису в оновленнях системи.
ксенотеррацид

Кожен свій, я думаю. FHS приємно, але я думаю, що його іноді ігнорують.
Скотт Андерсон

Єдиний матеріал, у якому я коли-небудь бачив дистрибутивні пакети, - /usr/localце ієрархії каталогів, які паралельно застосовувались у стандартному дереві, і, можливо, індексні файли для таких речей, як TeX.
Філ Міллер

9

Покладіть їх /usr/local/src.

Що я роблю, це витягнути джерело з цього каталогу. Це створить такий шлях

/usr/local/src/postgresql-8.3.7

Тоді я створюю символічне посилання на нього:

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

Виконайте всю свою будівлю /usr/local/src/postgresql.

Цей спосіб допомагає, коли вам потрібно переходити між версіями та документами, яку версію ви використовуєте.


1
+1 за твердження про своє обґрунтування та про те, як ОП може застосовувати його, включаючи версію.
Самт

6

Це нагадує мені, мені потрібно використовувати Checkinstall частіше! Таким чином я просто роблю звичайне

 ./configure
 make

слідом за ним

 sudo checkinstall

створити .deb файл ...


2
Не відповідає на запитання.
JBentley

5

Якщо є можливість - я б запропонував скласти програмне забезпечення, а потім створити пакет FC (я вважаю, що для установки програмних пакетів використовується yum) Потім ви можете встановити цей пакет власного складеного програмного забезпечення та видалити його, не псуючи всю систему.


5

Якщо ви хочете легко встановити та видалити кілька створених вами додатків, ви можете використовувати Stow як простий менеджер пакунків.


5

Згідно з FHS , /usr/local/використовується для програм, зібраних з джерела, тоді /opt/як використовується для сторонніх додатків, не підтримуваних постачальником операційної системи.


4

Я рекомендую дві речі:

Широка система: використовувати stow та встановити під / usr / local / stow / package-version. Тоді ви можете легко перемикатися між версіями.

У моєму будинку, або якщо у мене немає / usr / local дозволів на запис, я особисто встановлюю програми під ~ / .local, на що натякає стандарт XDG .

Ви також можете використовувати stow місцево, хоча я ніколи цього не робив :)


3

У мене дещо інше налаштування, ніж у більшості людей, тому що я дуже багато розроблюю. У мене є / home / jackson / bin / каталог, в який я встановлюю речі, і я редагував свій .bashrc, додаючи це:

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

Я б не робив цього для всього, але це приємно під час розвитку.


3

Насправді не так складно створити деб або об / хв з вихідного тарболу. Таким чином, ви можете використовувати засоби диспетчера пакунків вашого дистрибутива для збереження чистоти системи. Це те, що я роблю, більшість часу: просто створюю невеликі обороти в хвилину.


2

якщо ви збираєте додаток, ви можете додати його шлях до виконуваних файлів у змінну PATH env. це не вплине на інших користувачів.


Цікаво, чому голоси "за"? +1 до виду "балансувати"
phunehehe

Мені теж цікаво, чому :-). Я використовував таке ж рішення для використання cscope, коли у мене немає дозволів на встановлення.
Хемант

@phunehehe Можливо тому, що він навіть не намагається відповісти на питання. Питання задає питання, де розмістити програмне забезпечення. Ця відповідь дає підказку щодо того, що ви могли зробити після того, як десь помістили її. Це можна було б покращити, давши кілька пропозицій щодо використання папок.
JBentley

2

Завжди є варіант "помістити її туди, куди належить", але спочатку написати простий оберт.


1

Якщо ви хочете, щоб ваша програма була доступною для всіх користувачів в системі, і у вас є необхідні дозволи, скористайтеся / виберіть. Якщо ви хочете, щоб програма була доступна лише для вас (та root), використовуйте / home / username


0

Найпростіший спосіб зробити це - захопити вихідний пакет ( .src.rpmдля RPMites), розпакувати його, зламати нове джерело / конфігурацію / що завгодно, змінити версію та скласти її. Якщо встановити це, ваш менеджер пакунків знає про новий пакет, дозволяє врахувати його для залежностей та видалити / оновити.

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


0

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

Якщо ви це зробите, встановіть файли під, /usrа не під /usr/local, як і всі інші файли, що надходять через систему упаковки.

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