Что требуется: Python (пакет) для файлов спецификаций RHEL?

В настоящее время я упаковываю пакеты Python без RPM, и некоторые из них зависят от других, которые я упаковываю.

Во время упаковки я заметил формат, в котором люди делают: Require: python(pkg-name) , но я пытаюсь понять, есть ли какой-то конкретный синтаксис для использования этого? Потому что, когда он используется, он, похоже, не заботится о версиях требуемого пакета.

Пример:

 Requires: Python(gocd-cli) >= 0.9 

Показывается в списке требований после создания моего RPM:

 $ rpm -qp --requires dist/gocd-cli.encryption.blowfish-1.0-1.noarch.rpm Python(gocd-cli) >= 0.9 python(abi) = 2.6 python-crypto rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 

Этот пакет прекрасно устанавливается, несмотря на то, что версия пакета gocd-cli> = 0.9 еще не построена и не доступна.

В общем, я пытаюсь понять:

  1. Как это необходимо Requires: Python() должен использоваться?
  2. Что называется частью Python() ? Я также видел это для Ruby, Perl и других …

One Solution collect form web for “Что требуется: Python (пакет) для файлов спецификаций RHEL?”

Хотя модули Ruby и Perl используют эти виртуальные пакеты, AFAIK python не использует их.

Это ничего, кроме виртуальных (см. Главу «Создание виртуальных возможностей» ). Полезно, если вы знаете, какой модуль вы хотите использовать, но не знаете, какой пакет содержит его. Хотя в большинстве случаев это очень просто, и perl-foo предоставляет perl(foo) , есть случаи, которые не так просты. Например, perl(APR) предоставляется mod_perl .

Virtual обеспечивает Perl довольно старые и обрабатываются непосредственно rpm и rpmbuild. В прошлом в Ruby вы должны были добавить их вручную, но теперь это также обрабатывается rpm. Для python не было никого, кто будет управлять этим изменением, и он вообще не использует эти виртуальные обеспечивает. Поэтому вам необходимо указать точное имя пакета.

Вывод:

Если вы упаковываете библиотеку python, нет никакого вреда при установке spec:

 Provides: python(foo) = %{version}-%{release} 

Однако вы не должны ожидать, что другие модули python предоставят это, и вам нужно будет потребовать их использования обычного имени пакета.

И последнее замечание – Requires / Provides чувствительны к регистру, поэтому Python (foo)! = Python (foo).

  • Определение макросов для создания файлов RPM, требующих Python 3
  • Ошибка при создании libxcrypt
  • RPM говорит, что общий объект отсутствует, но я могу найти его с ls
  • Строить RPM, чтобы вести себя по-другому при установке и обновлении?
  • Как устранить предупреждения: mockbuild не существует
  • Ошибка RPM build-rpaths error 0x0001
  • Укажите расположение распаковки в файле спецификации RPM.
  • Создание RPM приводит к тому, что ничего не генерируется в каталоге RPMS
  • Попытка создания (a) пакета kmod для acpi_call на Fedora, не может быть установлена
  • Обновление ядра 2.6.18 до 2.6.32 на CentOS 5.10
  • Каково поведение по умолчанию для% install?
  • Interesting Posts

    Разрешает ли NAT доступ к внутренней сети (или локальному интерфейсу маршрутизатора) по умолчанию по умолчанию?

    Есть ли способ, которым я мог бы выполнять файлы удаленно с файлами, содержащими include?

    Беспроводная сеть и проводной сервер dhcp

    Замените один блок текста на другой блок текста, когда заменяемый текст находится в файле

    список процессов, запущенных внутри экрана (менеджер с эмуляцией терминала VT100 / ANSI)

    Как заставить systemd-resolved прекратить попытки использовать автономные DNS-серверы?

    Изменить заголовок с помощью sed или awk

    Ошибка sshfs: сброс соединения с помощью сверстника

    «. ~ / .bashrc "не устанавливает переменные, как ожидалось, в вызывающем скрипте

    Используйте команду sed для поиска текстового файла для записей 10000 и под

    Как найти и установить GNU Smalltalk на CentOS или Fedora / RedHat?

    Изменить сортировку верхнего уровня на CPU

    Использование красного смещения для регулировки яркости

    Разделение `File` и` имя каталога с пробелом 'через скрипт оболочки

    Понимание среды Linux Back-Slash и звездочки

    Linux и Unix - лучшая ОС в мире.