Как добавить собственный путь для зависимостей rpm

Я пытаюсь установить необходимое программное обеспечение glib 2.14

поэтому я установил его с помощью этого руководства: Как обновить glibc с версии 2.12 до 2.14 на CentOS?

проблема в том, что путь к glib 2.14 - это /opt/glibc-2.14/lib/libc.so.6

поэтому, когда я пытаюсь установить программное обеспечение с помощью rpm, я все еще получаю эту ошибку:

error: Failed dependencies:
        libc.so.6(GLIBC_2.14)(64bit) is needed by xyz-4.6.6-1.x86_64
        libc.so.6(GLIBC_2.15)(64bit) is needed by xyz-4.6.6-1.x86_64
        libc.so.6(GLIBC_2.17)(64bit) is needed by xyz-4.6.6-1.x86_64

как я могу добавить собственный путь для зависимостей rpm?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 150
1

Ответы 1

Было бы немного помочь, если бы вы дали нам имя пакета, который пытаетесь установить. Вы не можете просто указать путь, RPM проверяет, есть ли какие-либо зарегистрированные пакеты, которые предоставляют эти библиотеки, а их нет. Вот несколько методов, которые вы можете использовать:

  1. Используйте --nodeps

    Если вы уже знаете, что у вас есть все, что требуется, использование --nodeps совершенно нормально, ИМО.

  2. Создайте виртуальные пакеты для недостающих библиотек (передовой)

    Вам не хватает следующих библиотек: libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.15)(64bit)libc.so.6(GLIBC_2.17)(64bit).

    Вот пример файла .spec для создания виртуального пакета претензии для предоставления этих библиотек:

    Name: libc-virtual-provides
    Provides: libc.so.6(GLIBC_2.14)(64bit)
    Provides: libc.so.6(GLIBC_2.15)(64bit)
    Provides: libc.so.6(GLIBC_2.17)(64bit)
    Version: 1.0
    Release: 1
    Summary: Virtual package providing libc 2.14, 2.15, 2.17
    License: Public domain
    
    %description
    Virtual package providing libc 2.14, 2.15, 2.17
    
    %prep
    
    %files
    
    %changelog
    

    Чтобы создать виртуальный пакет из этого файла SPEC, сначала создайте несколько каталогов:

    mkdir -p ~/rpmbuild/BUILD ~/rpmbuild/BUILDROOT ~/rpmbuild/RPMS ~/rpmbuild/SOURCES ~/rpmbuild/SPECS ~/rpmbuild/SRPMS
    

    Затем скопируйте файл SPEC в ~/rpmbuild/SPECS и создайте RPM:

    cp virtual-glibc-provides.spec ~/rpmbuild/SPECS
    cd ~/rpmbuild/SPECS
    rpmbuild -ba virtual-glibc-provides.spec
    

    Вы получите такой результат:

    Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.6Jni5u
    + umask 022
    + cd /home/.../rpmbuild/BUILD
    + exit 0
    Processing files: glib2.14-virtual-provides-2.14-1.x86_64
    Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/.../rpmbuild/BUILDROOT/glib2.14-virtual-provides-2.14-1.x86_64
    Wrote: /home/.../rpmbuild/SRPMS/glib2.14-virtual-provides-2.14-1.src.rpm
    Wrote: /home/.../rpmbuild/RPMS/x86_64/glib2.14-virtual-provides-2.14-1.x86_64.rpm
    Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.YNj8gP
    + umask 022
    + cd /home/.../rpmbuild/BUILD
    + /bin/rm -rf /home/.../rpmbuild/BUILDROOT/glib2.14-virtual-provides-2.14-1.x86_64
    + exit 0
    

    И у вас будет ваш RPM под /home/.../rpmbuild/RPMS/, который затем можно будет установить с помощью rpm -ivh ....rpm. После этого вы сможете без проблем установить другой пакет.

Другие вопросы по теме