Установка новых пакетов на старый невосстановленный компьютер

У нас есть сервер ancien (Fedora Core 4), установленный в 2005 году. Этот сервер никогда не обновлялся. Он запускает специальное программное обеспечение, позволяющее контролировать производственную линию без непосредственного подключения к внешнему миру.

Невозможно обновить систему.

Некоторые утилиты имеют ошибки или отсутствующие параметры. Некоторые другие утилиты отсутствуют.

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

Есть ли способ запустить новый Bash и установить новые программы, не давая системе нетронутой?

Может быть, что-то вроде BusyBox? Или внутри chroot? Проблема chroot – это трудность доступа к реальной системе. Например, мой сценарий резервного копирования не будет работать.

Я думаю, что самый простой способ – массовое копирование программ и библиотек из другой установки в отдельный каталог. Например, из live-cd like systemrescuecd, который может содержать все, что вам нужно, всего в сотни мегабайт, скопировано в / opt / new /. Это позволяет копировать без необходимости поиска / поиска / угадывания / тестирования, какие библиотеки нужны.

Затем вы можете запускать эти программы с помощью LD_LIBRARY_PATH=/opt/new/lib/ ; /opt/new/bin/diff LD_LIBRARY_PATH=/opt/new/lib/ ; /opt/new/bin/diff или LD_LIBRARY_PATH=/opt/new/lib/ ; /opt/new/bin/bash LD_LIBRARY_PATH=/opt/new/lib/ ; /opt/new/bin/bash Это должно работать безупречно, пока утилиты не прочитают старые файлы конфигурации, которые они больше не понимают. Или хуже, пока они не напишут в них.

После этого вы можете скопировать новые библиотеки в / lib /, чтобы забыть о трюке LD_LIBRARY_PATH. Пока имена файлов не сталкиваются, это безопасно (я думаю, другие советы приветствуются).

И даже замените старые двоичные файлы новыми (только для выбранных), если вы решитесь, но, возможно, не очень хорошая идея для производственного сервера.

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

Переменные среды этого выделенного пользователя должны быть настроены на предпочтение локальной версии исполняемых файлов и библиотек, например, PATH и LD_LIBRARY_PATH .

Необходимые шаги:

  1. создать нового пользователя: cooluser
  2. создать ~cooluser/Local
  3. edit ~cooluser/.profile для установки среды по мере необходимости:
    • PATH=${HOME}/Local/bin:${PATH}
    • LD_LIBRARY_PATH=${HOME}/Local/lib:${LD_LIBRARY_PATH}
  4. скачать источники необходимых инструментов
  5. настройте инструмент так, чтобы он инсталлировался в ~cooluser/Local
    • например ./configure --prefix=~cooluser/Local
  6. компилировать и устанавливать

Очевидно, вам нужны gcc и многие другие инструменты разработчика на машине. Если у вас их нет, вы можете скомпилировать инструменты на другом (виртуальном?) ~cooluser/Local запущена некоторая версия os, и передать ~cooluser/Local каталог ~cooluser/Local .

Если вы собираетесь устанавливать множество программ, их обслуживание вручную будет больно. Я рекомендую установить новый дистрибутив в chroot.

Вы можете установить Fedora, если вы привыкли к ней. Я не знаю, есть ли у него возможности для установки в chroot. Если это не так, Debian и производные делают с Debootstrap . Это руководство может помочь. Такая старая версия Fedora не имеет шлота, но вы все равно сможете установить rpm.

Если вы не можете заставить schroot работать, запишите chroot с помощью монтирования привязки вручную. Если у вас есть дистрибутив, установленный на /new , и вы не используете schroot, добавьте эти записи в /etc/fstab :

 / /new/old rbind rbind /dev /new/dev rbind rbind /home /new/home rbind rbind /tmp /new/tmp rbind rbind proc /new/proc proc defaults sysfs /new/sys sysfs defaults 

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

Bash зависит от libc, который настолько стар, что шансы на успешную компиляцию очень ограничены. Возможно, рассказывать нам, что из того, что недостает вашей версии bash, поможет.