Как мне установить некоторые необходимые библиотеки для программы без sudo?

Вопрос или проблема

Я пытаюсь запустить программу на компьютере с Red Hat 6.5. Это приводит к появлению следующих трех ошибок:

"/lib64/libc.so.6: версия `GLIBC_2.14' не найдена"
"/usr/lib64/libstdc++.so.6: версия `GLIBCXX_3.4.15' не найдена"
"/lib64/libm.so.6: версия `GLIBC_2.15' не найдена"

Очевидно, мне нужно установить эти библиотеки, но при поиске я только нашел решения, которые предлагают выполнить “sudo apt-get”, что, к сожалению, я не могу сделать (нет доступа sudo). Таким образом, мне нужно решение для установки их без sudo. (ПРИМЕЧАНИЕ: На этой системе нет apt-get, но я под впечатлением, что yum, который здесь есть, не так уж далек от этого. Тем не менее, он также требует root).

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

Я был бы признателен за помощь в том, как добиться чего-то подобного, или, если это невозможно, мне бы хотелось это знать (и из любопытства, может быть, также почему).

Итак, есть две вещи, которые вам нужно знать:

  • Как получить библиотеку
  • Как использовать библиотеку

Получение библиотеки

Обратите внимание, что я менее знаком с yum, чем с apt-get

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

Если она доступна…

Вы видели инструкции, указывающие на apt-get. Это вещь Debian (включая Ubuntu и Mint). Yum – это аналогичный инструмент для родственников Redhat (включая Fedora и Centos). Yum используется для установки “RPM”, тогда как apt-get устанавливает DPKG.

Начните с:

  1. Скачайте нужный RPM
  2. Извлеките RPM

Использование библиотеки

Вы можете разместить библиотеку в любой понравившийся вам каталог и затем использовать переменную среды LD_LIBRARY_PATH для указания на этот каталог.

Есть одно препятствие! Насколько я знаю, нет способа добавить в стандартный путь библиотеки, только полностью его заменить. В отличие от PATH, LD_LIBRARY_PATH по умолчанию не установлен. Поэтому, чтобы его установить, вам нужно будет указать каждый каталог библиотеки, который вам нужен:

export LD_LIBRARY_PATH=/home/me/my-libs:/lib:/usr/lib: ... и остальные

Если вы не знаете, какие каталоги lib вам нужны, вы можете проанализировать свою программу с помощью ldd перед установкой переменной среды. Например:

ldd /bin/bash
    linux-vdso.so.1 (0x00007fff55394000)
    libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fb13c31f000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb13c319000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb13c12f000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb13c480000)

Показывает, что bash требует включения /lib:/lib64.

Я ставлю на то, что программа, которую вы пытаетесь запустить, требует более новой версии GLIBC, чем та, что установлена на вашем компьютере. К сожалению, поскольку это GLIBC, нет способа получить более новую версию без доступа root и без влияния на всю систему. Проверьте сайт программы, убедитесь, что она поддерживается на RHEL 6.

Ответ или решение

Установка необходимых библиотек для программы на системе Red Hat 6.5 без прав sudo может представлять собой сложную задачу, особенно когда дело касается библиотеки glibc. Ниже мы рассмотрим возможные шаги для решения вашей проблемы.

Установите необходимые библиотеки

  1. Проверьте наличия RPM
    Первым шагом будет проверка, доступны ли необходимые версии библиотек в репозиториях. Поскольку yum требует прав суперпользователя (root), вы можете попробовать получить необходимые RPM-файлы по следующим ссылкам:

    Введите нужные вам пакеты:

    • glibc
    • libstdc++
  2. Загрузите RPM напрямую
    Если RPM-файлы доступны, вы можете загрузить их вручную. Запишите версии, которые вам нужны (например, GLIBC_2.14, GLIBCXX_3.4.15), затем скачайте соответствующие RPM-файлы.

  3. Извлеките файлы из RPM
    Если у вас нет прав для установки RPM через yum, вы можете извлечь файлы из RPM-пакетов. Для этого используйте следующую команду:

    rpm2cpio package.rpm | cpio -idmv

    Эта команда извлечет файлы в текущий каталог.

Используйте извлечённые библиотеки

После извлечения файлов библиотек выполните следующие действия:

  1. Создайте пользовательский каталог для библиотек
    Вам нужно создать каталог в вашем домашнем каталоге, где вы будете хранить эти библиотеки:

    mkdir -p ~/my-libs
  2. Скопируйте файлы библиотек
    Скопируйте необходимые файлы библиотек в этот каталог (например, если у вас извлечённые файлы libc.so.6, libstdc++.so.6 и т.д.):

    cp ./libc.so.6 ~/my-libs/libc.so.6
    cp ./libstdc++.so.6 ~/my-libs/libstdc++.so.6
  3. Настройте переменную окружения LD_LIBRARY_PATH
    Чтобы указать системе искать библиотеки в вашем пользовательском каталоге, выполните команду:

    export LD_LIBRARY_PATH=~/my-libs:$LD_LIBRARY_PATH

    Вы можете добавить эту строку в файл ~/.bashrc или ~/.bash_profile, чтобы не вводить её каждый раз.

  4. Запустите вашу программу
    После того как вы настроите переменную окружения, попробуйте запустить вашу программу еще раз. Если все сделано правильно, программа должна найти необходимые библиотеки.

Важное замечание

Библиотека glibc является критически важной для системы, и замена её может привести к нестабильности. Поэтому всегда понимайте последствия работы с библиотеками на низком уровне.

Если программа требует версии glibc, которая значительно новее, чем установленная на вашей системе, возможно, вы не сможете её запустить без прав администратора. В этом случае, вам может понадобиться рассмотреть использование контейнеризации (например, Docker, если доступен), или виртуальную машину, где можно настроить более свежую версию ОС.

Заключение

Изложенные шаги позволят вам установить необходимые библиотеки без прав суперпользователя на Red Hat 6.5. Тем не менее, будьте внимательны и осторожны в манипуляциях с библиотеками, чтобы избежать потенциальных проблем с системой.

Оцените материал
Добавить комментарий

Капча загружается...