Где я должен положить программное обеспечение, которое я сам собираю?

126

Мне нужно скомпилировать программное обеспечение на моей машине Fedora. Где лучшее место, чтобы положить его так, чтобы не мешать упакованному программному обеспечению?

theotherreceive
источник
Вы также можете найти этот вопрос полезным.
rozcietrzewiacz

Ответы:

90

Практическое правило, по крайней мере, в системах с Debian:

  • /usr/localдля вещей, которые являются "общесистемными" - то есть, /usr/localкак правило, в дистрибутиве по умолчанию $PATH, и следует стандартной иерархии каталогов UNIX с /usr/local/bin, /usr/local/libи т.д.

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

directhex
источник
Интересно, что многие программы / приложения автоматически предлагают установить, /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 может быть идеальным выбором во многих ситуациях.
Сэнди
никто не заметил совершенно неправильное понимание буквы «с» в комментарии № 2. это должно быть удалено
эффект
20

FHS говорит поместить его в / usr / local, где дистрибутивы не должны касаться его. /usr/local/binдля двоичных файлов /usr/local/srcдля исходного кода и /usr/local/libдля библиотек. Смотрите спецификации FHS для получения дополнительной информации

xenoterracide
источник
Как насчет конфигурации? Скажем, я установил MySQL без использования менеджера пакетов, должен ли я все еще использовать его /etc/mysqlдля конфигурации?
Hubro
Я только заметил, что /usr/local/etcпо умолчанию есть папка, я думаю, что я должен использовать это ... :-)
Hubro
10

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

Скотт Андерсон
источник
1
дистрибутивы обычно помещают довольно много вещей в / opt (обычно проприетарные пакеты) / opt не говорит, что дистрибутив не может их коснуться. однако это говорит о / usr / local
xenoterracide
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 за указание вашего обоснования и того, как ОП может его применить, включая управление версиями.
SAMT
6

Это напоминает мне, мне нужно чаще использовать checkinstall ! Таким образом, я просто делаю как обычно

 ./configure
 make

с последующим

 sudo checkinstall

создать файл .deb ...

Кевин Канту
источник
2
Не отвечает на вопрос.
JBentley
5

Если есть возможность - я бы предложил скомпилировать ваше программное обеспечение, а затем создать пакет FC (я полагаю, он использует yum для установки пакетов программного обеспечения). Затем вы можете установить этот пакет вашего собственного скомпилированного программного обеспечения и удалить его, не испортив всю систему.

Eimantas
источник
5

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

Дэниел Джеймс
источник
5

Согласно FHS , /usr/local/используется для приложений, скомпилированных из исходного кода, в то время /opt/как используется для сторонних приложений, не поддерживаемых поставщиком операционной системы.

Аарон Топонсе
источник
4

Две вещи, которые я бы рекомендовал:

Для всей системы: используйте stow и установите в / usr / local / stow / package-version. Тогда вы можете легко переключаться между версиями.

У меня дома или, если у меня нет разрешений на запись / usr / local, я лично устанавливаю программы в ~ / .local, на что намекает стандарт XDG .

Вы также можете использовать Stow локально, хотя я никогда не делал :)

Elmarco
источник
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

Я бы так не делал, но это приятно во время разработки.

jacksonh
источник
3

На самом деле не так сложно создать deb или rpm из исходного архива. Таким образом, вы можете использовать средства диспетчера пакетов вашего дистрибутива для поддержания вашей системы в чистоте. Это то, что я делаю большую часть времени: просто создайте немного оборотов.

wzzrd
источник
2

если вы компилируете приложение, вы можете добавить его путь к исполняемым файлам в переменную PATH env. это не повлияет на других пользователей.

Hemant
источник
Интересно, почему проголосовали за? +1 к
какому-
Мне также интересно, почему :-). Я использовал то же решение для использования cscope, где у меня нет разрешения на установку.
Hemant
@phunehehe Возможно, потому что он даже не пытается ответить на вопрос. Вопрос спрашивает, где разместить программное обеспечение. Этот ответ дает подсказку о том, что вы можете сделать после того, как разместите его где-нибудь. Это может быть улучшено, если дать несколько советов, какие папки использовать.
JBentley
2

Всегда есть возможность «положить его туда, где он принадлежит», но сначала нужно написать простой rpm.

Nils
источник
1

Если вы хотите, чтобы ваше приложение было доступно для всех пользователей системы, и у вас есть необходимые разрешения, используйте / opt. Если вы хотите, чтобы приложение было доступно только вам (и пользователю root), используйте / home / username


источник
0

Самый простой способ сделать это - взять пакет с исходным кодом ( .src.rpmдля RPMites), распаковать его, взломать новый источник / конфигурацию / что угодно в нем, изменить подходящую версию и собрать. Установка этого позволяет вашему менеджеру пакетов узнать о новом пакете, позволяет рассмотреть его на наличие зависимостей и удалить / обновить.

Это тяжелая работа в первый раз, но если выйдет новая версия (или какой-то критический патч), тогда будет проще ее обновить. Еще одним преимуществом является то, что вы можете создать свой собственный репозиторий с локальным программным обеспечением, которое будет использоваться, например, компьютерами в лаборатории.

vonbrand
источник
0

Писать RPM, это не сложно, есть руководство по тому, куда положить вещи и делает удаление оснастки.

Если вы сделаете это, установите файлы под, /usrа не под /usr/local, как и все другие файлы, которые проходят через систему упаковки.

user55149
источник