Стандартное расположение для хранения исходных файлов программного обеспечения

16

Есть ли в Linux стандартное расположение для хранения исходных файлов, например OpenSSL . Я строю Nginx из исходного кода с не по умолчанию версией OpenSSL. Мне нужно скачать и распаковать OpenSSL, и я сделал это в домашнем каталоге. Теперь мне интересно, есть ли в Linux стандартное расположение /opt?

user3448600
источник
1
Как писал terdon / usr / src - это стандартное расположение, и вы можете найти каталоги для исходного кода ядра (/ usr / src / linux, связанный с / usr / src / linux-version) и, например, X11. Исходный код для пакетов, установленных локально (/ usr / local), лучше подходит для / usr / local / src. Если вы хотите собирать пакеты «вручную» самостоятельно, вероятно, хорошей идеей будет создание src-директории в вашем домашнем каталоге ... Помните, что вы не должны скачивать, распаковывать или собирать как root - устанавливайте только как! Если вы собираете deb / rpm-пакеты, вместо них обычно используются временные каталоги сборки (например, в / var / tmp). TBC
Baard Kopperud
Если вы собираете и устанавливаете пакет - или создаете пакет (rpm / dem) - самостоятельно, вам обычно не нужен исходный код после его установки. Причина, по которой у вас может быть исходный код для некоторых пакетов, таких как ядро ​​или X11, в каталоге / usr / src (или / usr / local / src, если он был создан локально), в основном потому, что они могут вам понадобиться, если вы ' пересобрать (или написать) некоторый программный пакет самостоятельно (например, некоторые непонятные заголовочные файлы из ядра, соответствующие вашей фактической настройке системы). (Конечно, он вам понадобится, если вы тоже хотите собрать собственное ядро ​​...) Но это относится к нескольким пакетам.
Baard Kopperud

Ответы:

20

Всякий раз, когда вы спрашиваете себя о чем-то подобном, ознакомьтесь со стандартом иерархии файловой системы (FHS). Там вы найдете следующую запись:

usr / src: исходный код (необязательно)

Цель

Исходный код может быть размещен в этом подкаталоге, только для справочных целей

Таким образом, вы можете поместить свои исходные файлы в подкаталоги /usr/src. Тем не менее, это необязательный каталог, так что вы можете хранить его где угодно. Исходный код не имеет значения после того, как вы скомпилировали его в исполняемый файл, поэтому система никогда не потребует, чтобы источник чего-либо был доступен в определенном месте.

В заключение: /usr/srcэто довольно стандартное место, но вы можете выбрать свой собственный, если хотите.

Тердон
источник
6
Просто знайте , что вы на самом деле не хочу быть баловаться с /usr/srcна , не -Linux системы. По умолчанию BSD хранит свои базовые системные источники, и вы не хотите смешивать их со сторонним программным обеспечением. Просто $HOME
построй
1
То же самое относится к некоторым подкаталогам /usr/srcпроизводных Debian, если у вас установлены определенные пакеты ( gcc-6-source, binutils-sourceпакеты DKMS, заголовки ядра и т. Д.). В Debian есть хорошая функция, где вы можете добавить себя в srcгруппу, которой владеете /usr/src, а затем просто написать там как вы сами (без необходимости sudoили чего-то еще).
Стивен Китт
А на Fedora не стоит трогать /usr/src/debugи /usr/src/kernels(AFAICS).
Стивен Китт
Msgstr "Исходный код может быть размещен". «Помещено место» - опечатка или я что-то упустил?
Фахим Митха
3
Я пойду дальше и скажу, что вы не должны касаться /usrни одной системы. Вы должны положить вещи /usr/local. BSDs против использования /usr/local/src?
Музер
13

/usr/local/srcбезопасное место для хранения исходного кода и его сборки. FHS говорит :

Directory   Description  
src         Local source code

а также

Иерархия / usr / local предназначена для использования системным администратором при локальной установке программного обеспечения. Он должен быть защищен от перезаписи при обновлении системного программного обеспечения.

Непонятно, что означает «Локальный исходный код», но ясно, что система не будет пытаться помещать что-либо, в /usr/local/srcотличие от этого /usr/src, поэтому, кажется, есть небольшой недостаток в размещении кода там.

На самом деле, у меня есть моя отдельная файловая система:

Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/data-local_src     79G   46G   30G  61% /usr/local/src

Примечание: по крайней мере в Debian, ваш пользователь должен быть добавлен в staffгруппу, чтобы писать в /usr/local.

Фахим Митха
источник
+1 за указание, в /usr/local/srcто время как другие ответы только обсуждают/usr/src
MattSturgeon
Что касается того, что означает «локальный исходный код», в целом это означает, что он контролируется локальным системным администратором, а не дистрибутивом . Так же, как и все остальное в /usr/local(в теории). Так что по сути это означает именно то, что вы описали.
MattSturgeon
9

Если под «стандартным» вы подразумеваете обычный, то местом для распаковки и сборки исходного кода является ваш домашний каталог. Ожидается, что такие файлы будут временными, удалятся, когда вы закончите, или сохранены, если хотите, организованы так, как вам удобно. Ваш домашний каталог - ваша область, где можно поиграть со всем этим.

Если вы хотите сохранить их впоследствии, для справки , « Стандарт иерархии файловой системы » рекомендует /usr/src. Тем не менее, это руководство, а не закон; и, если вы привыкнете к этой привычке, а затем решитесь на систему, отличную от Linux, вы, вероятно, будете создавать проблемы, следуя ей. Например, в системе BSD хранятся исходные системные источники, и вы действительно не хотите с ними связываться. Даже в Linux вы можете рискнуть смешаться с любым источником, сохраненным менеджерами пакетов, что нежелательно.

Я бы порекомендовал избегать в /usr/srcцелом. Нет ничего очевидного в том, чтобы что-то там держать, и нет потенциального риска, если вы запутаете его предполагаемое значение.

Гонки легкости с Моникой
источник
5

Вы можете использовать /usr/srcэто как разумное место, а дистрибутивы на основе rpm используют его для хранения содержимого пакетов srpm. Но в любом другом месте , как /opt, /usr/local, ~/srcхорошо

Ромео Нинов
источник
msgstr "дистрибутивы на основе rpm используют его для хранения содержимого пакетов srpm." Именно поэтому вы не должны хранить свои собственные не дистрибутивные источники там, а использовать / usr / local. - «Это должно быть хорошее место для хранения вещей со всеми этими вилочными погрузчиками, которые, кажется, того же мнения…»
rackandboneman