Вопрос или проблема
Мой опыт работы с CentOS и RPM ограничен, так что я могу пропустить что-то очевидное, но я не могу разобраться в этом… Я пытаюсь установить Sphinx на CentOS 6 в образе Docker, следуя инструкциям здесь: http://sphinxsearch.com/docs/current/installing-redhat.html (хотя я пытаюсь установить из исходного RPM вместо бинарного)
Я запускаю docker run -i -t centos:centos6 bash
, чтобы получить работающий образ CentOS, и вот что я получаю, когда пытаюсь выполнить команды (немного отличается от инструкций для предоставления большего количества информации и пропуска подсказок):
[root@db60006ae258 /]# yum -y install postgresql-libs unixODBC
Загруженные плагины: fastestmirror
Настройка процесса установки
base | 3.7 kB 00:00
base/primary_db | 4.6 MB 00:37
extras | 3.4 kB 00:00
extras/primary_db | 34 kB 00:00
updates | 3.4 kB 00:00
updates/primary_db | 3.3 MB 00:08
Определение зависимостей
--> Выполнение проверки транзакции
---> Установка пакета postgresql-libs.x86_64 0:8.4.20-4.el6_7
---> Установка пакета unixODBC.x86_64 0:2.2.14-14.el6
--> Обработка зависимости: libltdl.so.7()(64bit) для пакета: unixODBC-2.2.14-14.el6.x86_64
--> Выполнение проверки транзакции
---> Установка пакета libtool-ltdl.x86_64 0:2.2.6-15.5.el6
--> Завершено разрешение зависимостей
Зависимости разрешены
==========================================================================================================================================
Пакет Архитектура Версия Репозиторий Размер
==========================================================================================================================================
Установка:
postgresql-libs x86_64 8.4.20-4.el6_7 updates 202 k
unixODBC x86_64 2.2.14-14.el6 base 378 k
Установка для зависимостей:
libtool-ltdl x86_64 2.2.6-15.5.el6 base 44 k
Итог транзакции
==========================================================================================================================================
Установить 3 Пакет(ов)
Общий размер загрузки: 624 k
Установленный размер: 1.8 M
Загрузка пакетов:
(1/3): libtool-ltdl-2.2.6-15.5.el6.x86_64.rpm | 44 kB 00:00
(2/3): postgresql-libs-8.4.20-4.el6_7.x86_64.rpm | 202 kB 00:00
(3/3): unixODBC-2.2.14-14.el6.x86_64.rpm | 378 kB 00:01
------------------------------------------------------------------------------------------------------------------------------------------
Всего 234 kB/s | 624 kB 00:02
внимание: rpmts_HdrFromFdno: Подпись заголовка V3 RSA/SHA1, идентификатор ключа c105b9de: NOKEY
Получение ключа из file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Импорт GPG ключа 0xC105B9DE:
Идентификатор пользователя : CentOS-6 Key (CentOS 6 Official Signing Key) <[email protected]>
Пакет: centos-release-6-7.el6.centos.12.3.x86_64 (установлен)
Из: /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Выполнение rpm_check_debug
Запуск теста транзакции
Тест транзакции выполнен успешно
Запуск транзакции
Установка : libtool-ltdl-2.2.6-15.5.el6.x86_64 1/3
Установка : unixODBC-2.2.14-14.el6.x86_64 2/3
Установка : postgresql-libs-8.4.20-4.el6_7.x86_64 3/3
Проверка : postgresql-libs-8.4.20-4.el6_7.x86_64 1/3
Проверка : unixODBC-2.2.14-14.el6.x86_64 2/3
Проверка : libtool-ltdl-2.2.6-15.5.el6.x86_64 3/3
Установлено:
postgresql-libs.x86_64 0:8.4.20-4.el6_7 unixODBC.x86_64 0:2.2.14-14.el6
Установлена зависимость:
libtool-ltdl.x86_64 0:2.2.6-15.5.el6
Готово!
[root@db60006ae258 /]# rpm -Uhvv http://sphinxsearch.com/files/sphinx-2.2.10-1.rhel6.src.rpm
Получение http://sphinxsearch.com/files/sphinx-2.2.10-1.rhel6.src.rpm
D: ============== /var/tmp/rpm-tmp.Knfx7x
D: загрузка ключей из pubkeys в /var/lib/rpm/pubkeys/*.key
D: не удалось найти никаких ключей в /var/lib/rpm/pubkeys/*.key
D: загрузка ключей из rpmdb
D: открытие окружения базы данных /var/lib/rpm cdb:mpool:joinenv
D: открытие индекса базы данных /var/lib/rpm/Packages rdonly mode=0x0
D: заблокирован индекс базы данных /var/lib/rpm/Packages
D: открытие индекса базы данных /var/lib/rpm/Name rdonly mode=0x0
D: проверка h# 155 Санитарная проверка заголовка: ОК
D: добавлен ключ gpg-pubkey-c105b9de-4e0fd3a3 в кольцо ключей
D: Использование устаревших gpg-pubkey(ов) из rpmdb
D: Ожидаемый размер: 4201741 = lead(96)+sigs(180)+pad(4)+data(4201461)
D: Фактический размер: 4201741
D: /var/tmp/rpm-tmp.Knfx7x: Заголовок SHA1 дайджест: ОК (f86024cbd050d0758ddb1aa0fc73c246deeb2f90)
D: добавлен исходный пакет [0]
D: найден 1 исходный и 0 бинарных пакетов
D: Ожидаемый размер: 4201741 = lead(96)+sigs(180)+pad(4)+data(4201461)
D: Фактический размер: 4201741
D: InstallSourcePackage at: psm.c:244: Заголовок SHA1 дайджест: ОК (f86024cbd050d0758ddb1aa0fc73c246deeb2f90)
D: создано директория(и) /root/rpmbuild с правами 0755
D: создано директория(и) /root/rpmbuild/SOURCES с правами 0755
D: создано директория(и) /root/rpmbuild/SPECS с правами 0755
1:sphinx D: ========== Директории, которые не явно включены в пакет:
D: 0 /root/rpmbuild/SOURCES/
D: 1 /root/rpmbuild/SPECS/
D: ==========
внимание: пользователь builder не существует - используется root
внимание: группа builder не существует - используется root
D: завершено 100644 1 ( 0, 0) 288 /root/rpmbuild/SOURCES/config.patch;56a3c57f неизвестно
внимание: пользователь builder не существует - используется root
внимание: группа builder не существует - используется root
D: завершено 100664 1 ( 0, 0) 129584 /root/rpmbuild/SOURCES/libstemmer_c.tgz;56a3c57f неизвестно
внимание: пользователь builder не существует - используется root
внимание: группа builder не существует - используется root
D: завершено 100664 1 ( 0, 0) 1064388 /root/rpmbuild/SOURCES/re2.tar.gz;56a3c57f неизвестно
внимание: пользователь builder не существует - используется root
внимание: группа builder не существует - используется root
########################################### [100%]
D: завершено 100644 1 ( 0, 0) 3109250 /root/rpmbuild/SOURCES/sphinx-2.2.10-release.tar.gz;56a3c57f неизвестно
внимание: пользователь builder не существует - используется root
внимание: группа builder не существует - используется root
D: завершено 100644 1 ( 0, 0) 2048 /root/rpmbuild/SOURCES/sphinx.init;56a3c57f неизвестно
внимание: пользователь builder не существует - используется root
внимание: группа builder не существует - используется root
D: завершено 100644 1 ( 0, 0) 9647 /root/rpmbuild/SPECS/sphinx_rel22.spec;56a3c57f неизвестно
GZDIO: 527 чтений, 4316100 всего байт за 0.021979 сек
D: закрыт индекс базы данных /var/lib/rpm/Name
D: закрыт индекс базы данных /var/lib/rpm/Packages
D: закрыто окружение базы данных /var/lib/rpm
[root@db60006ae258 /]# service searchd start
bash: service: команда не найдена
[root@db60006ae258 /]# find / -name "searchd*"
[root@db60006ae258 /]#
Исходный RPM (src.rpm) – это исходный пакет, собранный с использованием формата RPM. Вы можете использовать его для создания бинарного пакета для вашей машины или использовать как отправную точку для пользовательских версий. Исходные RPM достаточно портативны по сравнению с бинарными, но если у вас нет соответствующих навыков, я бы не рекомендовал идти по этому пути.
Проверьте страницы CentOS, убедитесь, есть ли доступные бинарные пакеты для вашей системы, либо как официальный пакет, либо в одном из проверенных сторонних репозиториев. Будьте осторожны, некоторые более подозрительные сторонние репозитории могут перезаписывать основные пакеты и могут сломать вашу систему (или сделать обновление трудным).
Ответ или решение
Когда вы пытаетесь установить исходный RPM (source RPM) на CentOS 6, возможно возникновение различных предупреждений и ошибок, особенно если у вас ограниченный опыт работы с данной системой и RPM. Рассмотрим подробно шаги, которые вы предприняли, а также основные проблемы и рекомендации для их решения.
Проблемы, которые вы столкнулись
-
Предупреждения о пользователе и группе
builder
: Вы получили несколько предупреждений, таких как:warning: user builder does not exist - using root warning: group builder does not exist - using root
Эти предупреждения означают, что RPM-пакет, который вы пытаетесь установить, ожидает наличие пользователя и группы с именем "builder", но они не были созданы в вашей среде. По умолчанию RPM использует пользователя
root
, что может не позволить корректно установить или собрать пакет с необходимыми настройками. -
Отсутствие команды
service
: Ошибкаbash: service: command not found
указывает на то, что командаservice
недоступна в вашей среде, возможно, из-за того, что вы находитесь в контейнере Docker без установленных необходимых пакетов управления сервисами. -
Проблемы с зависимостями и установкой: Хотя зависимости (
postgresql-libs
иunixODBC
) были успешно установлены, вам нужно будет убедиться, что другие необходимые зависимости для сборки Sphinx также установлены.
Рекомендации по решению проблем
-
Создание пользователя и группы
builder
:- Вы можете создать пользователя и группу с помощью следующих команд:
groupadd builder useradd -g builder builder
- Это позволит избежать предупреждений, связанных с отсутствием этих учетных записей.
- Вы можете создать пользователя и группу с помощью следующих команд:
-
Установка необходимых пакетов для сборки:
- Убедитесь, что у вас установлены все зависимости, необходимые для сборки RPM. Обычно для этого требуется установить
rpm-build
,gcc
,make
и другие инструменты для разработки:yum install -y rpm-build gcc make
- Убедитесь, что у вас установлены все зависимости, необходимые для сборки RPM. Обычно для этого требуется установить
-
Использование Docker для установки сервисов:
- Если вы не можете использовать команду
service
, вы можете непосредственно запускать службы с помощью команд, например, для запуска Sphinx вы можете использовать:nohup searchd &
- Убедитесь, что директория для хранения данных и конфигурация Sphinx настроены правильно.
- Если вы не можете использовать команду
-
Работа с исходным RPM:
- После установки всех необходимых зависимостей вы можете собрать бинарный RPM из исходного RPM, используя следующие команды:
rpmbuild --rebuild sphinx-2.2.10-1.rhel6.src.rpm
- После успешной сборки бинарный RPM будет находиться в каталоге
~/rpmbuild/RPMS/x86_64/
.
- После установки всех необходимых зависимостей вы можете собрать бинарный RPM из исходного RPM, используя следующие команды:
-
Поиск бинарных пакетов:
- Если вы не уверены, стоит ли пытаться собирать из исходников, проверьте наличие бинарных пакетов в официальных репозиториях или в проверенных сторонних репозиториях (например, EPEL), которые могут существенно упростить процесс установки.
Заключение
Работа с RPM и CentOS может быть непростой задачей для новичков, но с пониманием основ и шагов, описанных выше, вы сможете успешно преодолеть возникшие препятствия. Убедитесь, что вы внимательно отслеживаете все зависимости и уделяйте внимание создаваемым пользователям и группам на вашем сервере. Это поможет избежать множества проблем в будущем и упростит управление пакетами и сервисами в вашей системе.