Почему я должен переместить все в / opt?

16

Каждый раз, когда я читаю советы по установке SDK, IDE, какого-либо расширения и так далее, в нем говорится, что я должен распаковать их в /optпапку. Зачем мне это делать?

Когда я устанавливал Ubuntu, я прочитал, что должен установить только 10-20 ГБ для /файловой системы и оставшееся пространство для /home. Так я должен расширить пространство для корневой папки, или оставить все вещи в /home? Есть ли разница?

Praytic
источник
1
У вас есть два вопроса здесь. Допускается только один вопрос на пост. Пожалуйста, отредактируйте свое сообщение, и, если хотите, вы можете опубликовать еще один вопрос, касающийся размера или домашней папки
Сергей Колодяжный

Ответы:

20

Во-первых, следует понимать, что любой каталог, который явно не является точкой монтирования для отдельного раздела (или подкаталог такой точки монтирования), хранится в разделе root ( /). Таким образом, если у вас есть root ( /) /homeи другие разделы отсутствуют, ваш /optкаталог - это просто каталог root ( /). Точно так же для /tmp, /sbinи всего остального. Таким образом, первоначальный вопрос основан на ложной предпосылке, что вам нужны отдельные разделы для каждого каталога, который ведет от root ( /), и поэтому на него нельзя ответить напрямую.

Во-вторых, /optиспользуется для стороннего программного обеспечения, которое в контексте Ubuntu означает предварительно скомпилированное программное обеспечение, которое не распространяется через пакеты Debian. Иногда вы можете увидеть официальную документацию программы, на которую ссылаются /opt, но доступны пакеты Debian, которые удаляют эти файлы в другом месте. В таких случаях вы должны игнорировать официальную документацию или, по крайней мере, игнорировать ссылки на расположение файлов при использовании пакета Debian. Кроме того, если у вас есть выбор использования предварительно скомпилированного пакета через tarball или пакет Debian, обычно лучше использовать пакет Debian. В общем, использование /optдовольно редко в наши дни. Если вы все еще думаете, что вам нужно поместить файлы /opt, вы могли бы назвать название программного обеспечения, так как люди здесь могут знать, доступен ли пакет Debian для этого программного обеспечения.

Наконец, объединяя два предыдущих пункта, очень редко для установок Ubuntu делятся /optна отдельный раздел, потому что это редко для хранения значительных объемов данных. Большая часть программного обеспечения Ubuntu используется в /usrдругих местах. Когда-то было обычным делить /usrна отдельный раздел, но сегодня такая практика встречается довольно редко. Если вам действительно нужно установить много программного обеспечения /opt, то создание отдельного раздела для него можетимеет смысл - но во многих случаях это не очень полезно. Отдельные разделы имеют смысл, если вам нужно по-разному управлять безопасностью, если будут полезны различные функции файловой системы, для обмена данными между несколькими установками ОС в конфигурации с множественной загрузкой и по другим причинам. Обычная установка программного обеспечения вряд ли выиграет от отдельного раздела; на самом деле, создание отдельного раздела для /optможет вызвать проблемы, если изменится размер, потребляемый хранящимся там программным обеспечением, или если вы изначально неверно оценили размер.

Род Смит
источник
1
Re "использование / opt довольно редко в наши дни" Вы уверены?
Pacerier
@Pacerier по некоторым причинам / opt, похоже, возвращается, / usr / local, безусловно, был более популярен в Ubuntu несколько лет назад. В любом случае, IMHO, / opt и / usr / local эквивалентны. Смотрите также linuxjournal.com/magazine/pointcounterpoint-opt-vs-usrlocal и tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html « В эти дни,„/ USR / местные“широко рассматривается как хорошее место в котором хранятся самостоятельно скомпилированные или сторонние программы. "
Пантера
8

Вы?

Дело в том, что вам не нужно это делать. Использование /optэто соглашение. Я бы порекомендовал использовать его, но это не является строго необходимым.

Из иерархии файловой системы Linux: Глава 1. Иерархия файловой системы Linux :

1,13. / неавтоматического

Этот каталог зарезервирован для всех программ и дополнительных пакетов, которые не являются частью установки по умолчанию. Например, пакеты StarOffice, Kylix, Netscape Communicator и WordPerfect обычно находятся здесь. Для соответствия FSSTND все сторонние приложения должны быть установлены в этом каталоге. Любой пакет, который должен быть установлен здесь, должен найти свои статические файлы (т.е. дополнительные шрифты, картинки, файлы базы данных) должен найти свои статические файлы в отдельном дереве каталогов / opt / 'package' или / opt / 'provider' (аналогично тому, как в котором Windows установит новое программное обеспечение в свое собственное дерево каталогов C: \ Windows \ Progam Files \ «Имя программы»), где «пакет» - это имя, которое описывает пакет программного обеспечения, а «поставщик» - это зарегистрированное имя провайдера LANANA.

Хотя большинство дистрибутивов пренебрегают созданием каталогов / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib и / opt / man, они зарезервированы для использования локальным системным администратором. Пакеты могут предоставлять «входные» файлы, предназначенные для размещения (путем связывания или копирования) этих зарезервированных каталогов системным администратором, но они должны нормально функционировать при отсутствии этих зарезервированных каталогов. Программы, вызываемые пользователями, находятся в каталоге / opt / 'package' / bin. Если пакет включает справочные страницы UNIX, они находятся в / opt / 'package' / man, и должна использоваться та же самая подструктура, что и / usr / share / man. Файлы пакетов, которые являются переменными, должны быть установлены в / var / opt. Специфичные для хоста файлы конфигурации устанавливаются в / etc / opt.

Ни при каких обстоятельствах другие файлы пакетов не должны существовать вне иерархий / opt, / var / opt и / etc / opt, за исключением тех файлов пакетов, которые должны находиться в определенных местах в дереве файловой системы, чтобы функционировать должным образом. Например, файлы блокировки устройств в / var / lock и устройства в / dev. Дистрибутивы могут устанавливать программное обеспечение в / opt, но не должны изменять или удалять программное обеспечение, установленное локальным системным администратором без согласия локального системного администратора.

Использование / opt для дополнительного программного обеспечения является общепринятой практикой в ​​сообществе UNIX. Двоичный интерфейс приложения System V [AT & T 1990], основанный на определении интерфейса System V (третье издание) и стандарте двоичной совместимости Intel v. 2 (iBCS2), обеспечивает структуру / opt, очень похожую на определенную здесь.

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

Структура каталогов ниже / opt / 'provider' оставлена ​​на усмотрение упаковщика программного обеспечения, хотя рекомендуется устанавливать пакеты в / opt / 'provider' / 'package' и следовать структуре, аналогичной рекомендациям для / опт / пакет. Действительная причина отклонения от этой структуры - для пакетов поддержки, в которых могут быть установлены файлы в / opt / 'provider' / lib или / opt / 'provider' / bin.

Torrien
источник
Это странно, потому что большинство людей рекомендует разделить небольшое пространство на корневой каталог, и я подумал, потому что он не будет сильно изменен. Похоже, что мне нужно напомнить эти советы, чтобы следовать конвенциям?
молитва
2
@Praytic Не совсем. В прошлом /optчасто был отдельный диск. Он будет использоваться для установки проприетарного программного обеспечения, которое часто требует огромного дискового пространства из-за объединения всех необходимых библиотек и других ресурсов. В наше время диски настолько большие, что возможно и проще просто использовать один корень на одном диске.
бен
4

/optиспользуется для (иногда проприетарных) внешних приложений, которые не считаются частью дистрибутива Linux. Эти приложения могут иметь жестко запрограммированные пути и поэтому будут корректно работать только при установке в /opt- но если нет жестко запрограммированных путей, вы можете установить их по любому пути. Программа, которая установлена ​​в /opt, должна быть автономной.

Основной причиной использования /optявляется предоставление общего стандартного пути, где внешнее программное обеспечение может быть установлено, не мешая остальной части установленной системы. /optне отображается в стандартных путях компилятора или компоновщика ( gcc -print-search-dirsи /etc/ld.so.confт. д.), поэтому установленные там заголовки и библиотеки несколько изолированы от основной системы и не должны мешать уже установленным программам.

Использование /optопределяется стандартом иерархии файловых систем : / opt , который отмечает, что /optизначально пришел из Unix.

/ opt: дополнительные программные пакеты

Цель

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

Пакет для установки в / opt должен размещать свои статические файлы в отдельном дереве каталогов / opt / <пакет> или / opt / <provider>, где <пакет> - это имя, описывающее пакет программного обеспечения, а <поставщик> - это зарегистрированное имя провайдера LANANA.

Требования

Каталоги / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib и / opt / man зарезервированы для использования локальным системным администратором. Пакеты могут предоставлять «входные» файлы, предназначенные для размещения (путем связывания или копирования) этих зарезервированных каталогов локальным системным администратором, но они должны нормально функционировать при отсутствии этих зарезервированных каталогов.

Программы, вызываемые пользователями, должны находиться в каталоге / opt / <пакет> / bin или в иерархии / opt / <provider>. Если пакет включает справочные страницы UNIX, они должны находиться в / opt / <package> / share / man или в иерархии / opt / <provider>, и должна использоваться та же самая подструктура, что и / usr / share / man.

Файлы пакетов, которые являются переменными (изменение в нормальной работе), должны быть установлены в / var / opt. Смотрите раздел в / var / opt для получения дополнительной информации.

Специфичные для хоста файлы конфигурации должны быть установлены в / etc / opt. Смотрите раздел / etc для получения дополнительной информации.

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

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

обоснование

Использование / opt для дополнительного программного обеспечения является общепринятой практикой в ​​сообществе UNIX. Двоичный интерфейс приложения System V [AT & T 1990], основанный на определении интерфейса System V (третье издание), обеспечивает структуру / opt, очень похожую на определенную здесь.

Стандарт двоичной совместимости Intel v. 2 (iBCS2) также предоставляет аналогичную структуру для / opt.

Как правило, все данные, необходимые для поддержки пакета в системе, должны присутствовать в / opt / <package>, включая файлы, предназначенные для копирования в / etc / opt / <package> и / var / opt / <package>, а также зарезервированные каталоги в / opt.

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

Структура каталогов ниже / opt / <provider> оставлена ​​на усмотрение упаковщика программного обеспечения, хотя рекомендуется устанавливать пакеты в / opt / <provider> / <package> и следовать структуре, аналогичной рекомендациям для / опт / пакет. Действительная причина отклонения от этой структуры - для пакетов поддержки, в которых могут быть установлены файлы в / opt / <provider> / lib или / opt / <provider> / bin.

Bain
источник
3

В этом нет ничего святого /opt, это просто обычная практика - размещать предварительно скомпилированное программное обеспечение, которое должно быть доступно всем пользователям системы в этом каталоге. Если вы являетесь единственным пользователем системы, нет ничего плохого в том, чтобы распаковать ее в вашем домашнем каталоге. И даже если в системе есть несколько пользователей, которым нужен доступ к этому программному обеспечению, но вы хотите использовать пространство в своем /homeразделе, нет ничего плохого в создании общедоступного /home/softwarenameкаталога и извлечении вашего программного обеспечения там (единственное предостережение, если вы случитесь если имя пользователя softwarenameбудет указано, вы не сможете использовать его в домашнем каталоге пользователя).

fkraiem
источник
2

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

Помещать вещи /optили /usr/localдержать вещи в чистоте и безопасности.

В частности, ваш путь поиска программного обеспечения ($ PATH) определяет порядок поиска местоположений при поиске программы с конкретным именем для выполнения. Обычно такие места как /optи /usr/localнаходятся в конце списка.

Если вы устанавливаете пакет, в котором есть программа, названная cpв нем, порядок поиска по умолчанию, поставляемый с вашим дистрибутивом, найдет нормальный, потому что каталог, в котором он хранится, ищется до таких мест, как /opt.

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

Если что-то подобное происходит, может пройти некоторое время, прежде чем кто-то решит выполнить такую ​​команду type cp(которой может даже не хватить, чтобы показать, что что-то не так), чтобы выяснить, что то, что выполняется, не то, что вы думаете. До этого момента вы застряли на «Все именно так, как и должно быть, кроме мелких деталей, что это не работает!»

Это в основном помогает предотвратить непредвиденные события, а также позволяет избежать ситуаций, когда системные обновления могут удалять или заменять некоторые или все ваши «пользовательские» установленные пакеты. Или, наоборот, некоторые «пользовательские» программы могут перезаписывать системные программы, на которые могут положиться многие другие программы или сценарии.

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

Если у вас есть проблема с вашей системой или программой и вам нужна помощь, один из первых вопросов, который задают: «Что вы изменили?» и «Можем ли мы временно отключить некоторые из этих изменений, чтобы мы знали, что смотрим на реальную проблему, а не просто на симптом чего-то другого».

В отдельных местах эти изменения можно быстро идентифицировать, и все, что вам нужно сделать (по крайней мере, для самих программ), это временно удалить их каталоги из пути.

Джо
источник