2

Я использую CentOS(7.2) и мне нужно скомпилировать некоторые инструменты из исходного кода, чтобы получить некоторые новые функции на сервере. Я в порядке с компиляцией из исходного кода, но у меня есть проблемы с ням. Давайте посмотрим на пример с GIT.

Если вы попытаетесь yum install git вы получите GIT 1.8.3.1. Мне нужна более новая версия, например, 2.10. Я следую учебнику со страницы git https://git-scm.com/book/en/v2/Getting-Started-Install-Git здесь.

Если вы установите необходимые инструменты для компиляции git, вы заметите, что одной из зависимостей является сам git. Так что перед компиляцией новой версии у вас фактически установлен git. После компиляции желаемая версия доступна (2.10)

Так что все хорошо, но вот пара вопросов, с которыми я сталкиваюсь. Допустим, в репозитории CentOS есть более новая версия GIT. Так что после yum update git моя скомпилированная версия будет заменена, скажем, 1.9. Я хотел бы предотвратить такую ситуацию.

Моей первой мыслью было добавить exclude git* в yum.conf и это решило бы проблемы с обновлением, но у него есть два недостатка:

  1. Вы все еще можете сделать yum remove git и он удалит git 2.10 (те же места в файлах).
  2. Если вы попытаетесь заставить yum install X где X имеет git в качестве зависимости, вы не сможете установить его:/

Вопрос - Как обновить yum информацией о пакете, скомпилированном из исходного кода?

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

Я хотел бы получить некоторый вклад и идеи об этой ситуации. Пожалуйста, не используйте строго GIT, это может быть любой другой пакет, например, nginx или PHP.

Любая помощь будет оценена!

1 ответ1

0

Я бы удалил пакет git после компиляции (традиционно этот шаг выполняется с помощью команды make , но, глядя на руководство по Git, которое вы упомянули, он использует make all doc info), но перед установкой с помощью sudo make install install-doc install-html install-info ( или аналогичная команда для рассматриваемого программного обеспечения, которая устанавливает то, что было скомпилировано). Или просто перезапустите команду установки после dnf remove git .

Надеюсь, я ничего не пропустил в вашем вопросе.

Также один мир предупреждений: вам нужно быть уверенным, что вы действительно знаете, что делаете - таким образом вы игнорируете своевременные обновления вашего дистрибутива (например, по соображениям безопасности) (добавляя это, потому что вы упомянули, например, php, который часто может быть вектором атаки). ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .