куди поставити двійкові файли, щоб вони завжди були в дорозі і їх легко знайти


10

Я роблю досить багато бінарних файлів, скриптів тощо, які хочу легко встановити (використовуючи власні rpms). Оскільки я хочу, щоб вони були доступними для всіх, моєю інтуїцією було б помістити їх у / usr / bin;

  • не потрібно змінювати ПАТ

проте; мої виконувані файли тепер зникають у пулі всіх інших; як я можу легко знайти всі виконувані файли, які я помістив туди. Я думав про:

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

що було б "найкращим, найбільш сумісним для Linux способом" це зробити?

EDIT: ми обговорили це питання в компанії і придумали цей неоптимальний варіант: покласти бінарні файли в / 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лінія в оборотах.

Використання / 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
Chris Maes

@ChrisMaes - див. Оновлення. Я використовую хост build, щоб визначити, які pkgs є "моїми".
slm

дякую за оновлення; якби ви могли просто додати команду знайти всі бінарні файли, що належать моїм rpms (у яких на ім'я "компанія"), що було б фантастично
Chris Maes

@ChrisMaes - див. Оновлення, LMK, якщо вам потрібні подальші вказівки.
slm

дуже приємна письмова відповідь; повний і добре відформатований. Дуже дякую!
Кріс Мейс

4

Очевидна пропозиція - по-особливому назвати свої бінарні файли чи пакунки. Так, наприклад, ви можете встановити їх префіксами cm-за своїми ініціалами, як зазначено в цій публікації. Якщо ви встановлюєте rpms, вони повинні зайти /usr/bin(якщо вони виконуються на рівні користувача) відповідно до FHS. Вони не повинні вникати, /usr/local/binнаприклад. Це лише для локальних встановлень.

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


3

Бінарні файли, що не входять до системи чи розповсюдження, зазвичай є у

/usr/local/bin

каталог зазвичай є стандартним, $PATHтак що ваші двійкові файли будуть знайдені.


зазвичай / usr / local / bin призначений для двійкових файлів, які існують лише "локально" на цій машині; не для двійкових файлів, які я розповсюджуватиму на інших машинах, використовуючи rpm ...?
Кріс Мейс

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

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