В какую директорию я должен установить программы в Linux?

Я хочу установить программу в Linux и запустить ее как демон. (Team Speak 3 в этом случае, но вопрос носит общий характер). Пакета не предоставляется, только tarred двоичные файлы. Где в структуре каталогов я должен поместить такую ​​программу по соглашению?

В Интернете я обнаружил, что / opt используется для «дополнительных приложений аддона», а / usr – для «пользовательских программ». Я нашел один учебник, предлагающий / opt, в то время как другой sugested / usr.

Итак, какой из них «более правильный»?

«Более правильное» зависит от вашего распределения. Вы должны проверить свои правила распространения в отношении того, куда поместить программное обеспечение, которое не управляется менеджером пакетов (часто /usr/local ) или о том, как создать для него свой собственный пакет.

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

(Но, например, в Archlinux менеджер пакетов может установить там, поэтому я все равно сделаю PKGBUILD для установки в /opt .)

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

Стандартная база Linux и стандарт иерархии файловой системы – это, пожалуй, стандарты того, где и как вы должны устанавливать программное обеспечение в системе Linux, и предложили бы разместить программное обеспечение, которое не включено в ваш дистрибутив, в /opt или /usr/local/ или, скорее, вложенные подкаталоги ( /opt/<package> /opt/<provider> /usr/local/bin ).

Лучшей практикой является преобразование программного обеспечения, которое вы загружаете, в устанавливаемый программный пакет, свойственный вашему дистрибутиву, например, форматы dpkg или rpm. Это облегчит отчетность, обновление и чистое удаление программного обеспечения.

Если вы будете компилировать свое собственное программное обеспечение, вы в конечном счете контролируете место установки. По соглашению программное обеспечение, скомпилированное и установленное вручную (не через диспетчер пакетов, например apt, yum, pacman), устанавливается в /usr/local . Некоторые пакеты (программы) создадут подкаталог в /usr/local для хранения всех соответствующих файлов, например /usr/local/openssl . Другие пакеты установят необходимые файлы в существующие каталоги, такие как /usr/local/sbin и /usr/local/etc Это просто места по умолчанию и могут быть изменены во время компиляции.

При компиляции программного обеспечения местоположение установки можно указать с помощью параметра --prefix= при запуске ./configure . Настоятельно рекомендуется просмотреть все доступные параметры для вашего пакета, запустив $ ./configure --help | less $ ./configure --help | less . Кроме того, просмотр документов INSTALL и README, предоставляемых вашим пакетом, является хорошей идеей. Они, как правило, включают в себя инструкции по установке и информацию о зависимости, характерную для пакета.

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

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

Дополнительная информация: man hier

Бинарники попадают в папку bin по общим соглашениям, как бы вы организовали структуру своего пакета, зависит от вас, я могу думать о /opt/<prog_name>/ если это всего лишь список двоичных файлов.

У меня был тот же вопрос при установке eclipse через установщик eclipse. Я заметил, что gimp, perl и vim установлены в папку / usr / share и решили установить его там.

В зависимости от того, как они упакованы, можно установить два способа.

  1. Через менеджера программ (apt, synaptic, Gdebi и т. Д.) – программа находится в виде пакета, обычно .deb или rpm. Менеджеры программного обеспечения в большинстве случаев обрабатывают зависимости и устанавливают двоичные файлы, обычно в /usr/bin , файлы конфигурации в /etc и так далее. Они также могут создать файл конфигурации для вашей программы, обычно ~/.foo . Если вы можете отредактировать этот файл, вы также можете легко изменить настройки для своего сеанса таким образом. Когда вы удаляете пакет, менеджер найдет все файлы и очистит их (он сохранит все места в специальном текстовом файле). Но он может сохранять некоторые файлы конфигурации, например, в вашей домашней папке.

  2. Вы загружаете программу (обычно сжимаете) в виде предварительно скомпилированных двоичных файлов для вашей архитектуры. Исполняемый файл программы обычно находится в одной папке рядом с другими файлами (динамически связанные библиотеки и т. Д.). Вся эта папка может быть скопирована с привилегиями root, либо в /opt либо в /usr/bin и может, если позволяют разрешения, может использоваться любым пользователем. Я сам поместил папки с двоичными файлами в свою домашнюю папку в ~/bin . Теперь вы можете запустить программу, вызвав файл bin.