куда поместить бинарные файлы, чтобы они всегда были в пути и могли быть легко найдены


10

Я делаю довольно много двоичных файлов, скриптов и т. Д., Которые я хочу легко установить (используя мои собственные rpms). Поскольку я хочу, чтобы они были доступны всем, моя интуиция заключалась бы в том, чтобы поместить их в / usr / bin;

  • нет необходимости менять путь

Однако; мои исполняемые файлы теперь исчезают в пуле всех остальных; Как я могу найти все исполняемые файлы, которые я положил туда простым способом. Я думал о:

  • подкаталог в / usr / bin (я знаю, что не могу этого сделать; просто чтобы проиллюстрировать свое мышление)
  • другой каталог (/ opt /self / bin) и связывание каждого исполняемого файла с / usr / bin (много работы)
  • другой каталог (/ opt /self / bin) и связывающий каталог с / usr / bin (возможно ли это?)

что было бы «лучшим, наиболее совместимым с Linux способом» сделать это?

РЕДАКТИРОВАТЬ: мы обсудили это в компании и предложили этот неоптимальный вариант: поместите двоичные файлы в / usr / bin / company с символической ссылкой из / usr / bin. Я не в восторге от этого решения (продолжается обсуждение)

Ответы:


7

Если вы объединяете свои двоичные файлы в свои собственные RPM, то просто получить список того, что они есть и где они были установлены.

пример

$ rpm -ql httpd| head -10
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
/etc/httpd/conf.modules.d/00-base.conf

Я бы посоветовал поместить ваши исполняемые файлы в либо /usr/binили /usr/local/binразвернуть ваши собственные RPM. Это довольно тривиально, и, управляя развертыванием программного обеспечения с помощью RPM, вы сможете пометить пакет номером версии, что еще больше упростит управление конфигурацией программного обеспечения при его развертывании.

Определение того, какие обороты являются «моими»?

Вы можете построить свои RPM, используя некоторую известную информацию, которая затем может быть согласована до начала строительства. Я часто собираю пакеты в системах, которые принадлежат моему домену, поэтому найти RPM довольно просто, просто просматривая все RPM, созданные на хосте X.mydom.com.

пример

$ rpm -qi httpd
Name        : httpd
Version     : 2.4.7
Release     : 1.fc19
Architecture: x86_64
Install Date: Mon 17 Feb 2014 01:53:15 AM EST
Group       : System Environment/Daemons
Size        : 3865725
License     : ASL 2.0
Signature   : RSA/SHA256, Mon 27 Jan 2014 11:00:08 AM EST, Key ID 07477e65fb4b18e6
Source RPM  : httpd-2.4.7-1.fc19.src.rpm
Build Date  : Mon 27 Jan 2014 08:39:13 AM EST
Build Host  : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

Это будет Build Hostлиния в RPM.

Использование / usr / bin / company?

Я бы, вероятно, не рекомендовал бы использовать такое место, как это. Главным образом потому, что он требует, чтобы все ваши системы были $PATHдополнены, и он нестандартный. Настройка вещей всегда была «правом прохода» для каждого желающего администратора Unix, но я всегда препятствую этому, если в этом нет крайней необходимости.

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

Могу ли я просто получить список файлов из RPM?

Да, вы можете достичь этого, но для этого потребуется 2 вызова RPM. Первый создаст список пакетов, которые были собраны на хосте X.mydom.com. После получения этого списка вам нужно будет повторно вызвать RPM-запрос для файлов, принадлежащих каждому из этих пакетов. Вы можете достичь этого, используя один вкладыш:

$ rpm -ql $(rpm -qa --queryformat "%-30{NAME}%{BUILDHOST}\n" | \
    grep X.mydom.com | awk '{print $1}') | head -10
/etc/pam.d/run_init
/etc/sestatus.conf
/usr/bin/secon
/usr/bin/semodule_deps
/usr/bin/semodule_expand
/usr/bin/semodule_link
/usr/bin/semodule_package
/usr/bin/semodule_unpackage
/usr/sbin/fixfiles
/usr/sbin/genhomedircon

и как получить список всех двоичных файлов, которые были установлены всеми установленными мной rpms? К счастью, мы согласились поставить название нашей компании в названиях rpm; так что-то вроде «rpm -qa | grep company» перечисляет мои установленные rpms
Крис Мэйс

@ChrisMaes - смотрите обновления. Я использую build host, чтобы определить, какие pkgs "мои".
SLM

Спасибо за обновление; если бы вы могли просто добавить команду, чтобы найти все бинарные файлы, принадлежащие моим rpms (в названии которых есть «компания»), это было бы замечательно
Крис Мэйс,

@ChrisMaes - смотрите обновление, LMK, если вам нужно дальнейшее руководство.
SLM

очень хороший письменный ответ; полный и хорошо отформатированный. Большое спасибо!
Крис Мэйс

4

Очевидные предложения - назвать ваши двоичные файлы или ваши пакеты особым образом. Так, например, вы могли бы поставить перед ними префикс cm-, как указано в этом посте. Если вы устанавливаете RPM, они должны войти /usr/bin(если они исполняемые файлы уровня пользователя), в соответствии с FHS. Они не должны вдаваться в /usr/local/binпример. Это только для локальной установки.

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


3

Двоичные файлы, не являющиеся частью системы или дистрибутива, обычно находятся в

/usr/local/bin

каталог обычно находится в стандарте, $PATHтак что ваши двоичные файлы будут найдены.


обычно / usr / local / bin предназначен для двоичных файлов, которые существуют только «локально» на этой машине; не для двоичных файлов я буду распространять на других машинах, используя RPM ...?
Крис Мэйс

2
Под Linux, /usr/local/binдля исполняемых файлов, установленных вручную. Исполняемые файлы, управляемые менеджером пакетов, входят в /usr/bin.
Жиль "ТАК - перестань быть злым"

@ Жиль, моя первая интерпретация вопроса состояла в том, чтобы установить на одном компьютере, чтобы двоичные файлы были доступны каждому пользователю (не устанавливая в $ HOME). Теперь я вижу, что это было не совсем то, что я понял.
Маттео
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.