Моя компания использует небольшой устаревший кластер (CentOS 5.4) для выполнения числовых вычислений (точнее, конечно-элементных расчетов). Они используют коммерческий пакет и не имеют представления о Linux. Они не хотят ничего менять на машинах, пока они работают, что я принимаю как политику, эффективную с точки зрения времени. Я делаюнетимеют административные права.
Я могу заставить их установить меньшие пакеты, но не менять, например, версию python с 2.4 на 2.6+, поэтому я решил скомпилировать текущую версию ( ./configure --prefix=/home/mysuser/root2
) и столкнулся с несколькими проблемами с зависимостями (неправильная версия, например, readline, zlib, curses, bz2 ... или пакеты не найдены). Мне также нужно обновить gcc, который жалуется на отсутствие GMP
, MPFR
и MPC
.
Причина этого в том, что я хотел бы скомпилировать другое тестовое программное обеспечение для запуска на этих машинах. Что я могу сделать, чтобы эффективно установить пакеты, которые мне нужны для компиляции программного обеспечения, с которым мне нужно работать? Я в другом месте используюархлинукси было бы очень удобно иметь возможность сделать что-то в этом роде
pacman --root /home/myuser/root2 -S <package>
Но я понятия не имею, возможно ли это и разумно ли.
Другие вопросы по SE:gentoo-префиксиpkgsrcкажется, это не так-то просто (хотя я могу ошибаться).
решение1
Ваше руководство поступает мудро, не пытаясь модернизировать работающий кластер, выполняющий важную функцию на основе фирменного пакета.
Бэкпортирование пакетов — это долго и рискованно, то есть не всегда осуществимо. Вы можете избежать штрафа за время, если сможете найти пакеты, которые хотите установить, в исходном репозитории CentOS 5.4 или в каком-то репозитории бэкпорта CentOS 5.4. Хотя у вас может быть несколько версий GCC на одном хосте одновременно (встраиваемые системы/компиляторы делают это постоянно), но не так-то просто иметь более одного glibc в одной среде выполнения.
Поэтому вам лучше всего посоветовать работать в отдельной, новой среде, которая имеет нужные вам пакеты, и найти способ протестировать вывод старой среды в новой. В любом случае, не рискуйте сломать что-либо в старой среде, иначе вам могут понадобиться все очки репутации stackexchange.com, которые вы можете получить, чтобы найти новую работу ;-)
решение2
Установка пакетов из дистрибутивов часто затруднена, если у вас нет прав root, поскольку они предполагают фиксированную структуру каталогов, а система зависимостей, как правило, требует наличия некоторых пакетов с программами setuid или setgid, которые вы не можете установить, будучи пользователем без прав root.
Компиляция из исходного кода чаще всего является самым простым способом. (А если вам важна скорость, вы можете выбрать наилучшие параметры компиляции для вашей конкретной модели процессора.)
Для организации пакетов, которые вы компилируете (или устанавливаете путем распаковки tar-архивов), я рекомендую использоватьукладыватьили более мощный, но и более сложныйxstow. Их основной режим работы — установка каждого пакета в отдельный каталог, а затем создание символических ссылок для их объединения. Вот типичный сеанс компиляции и установки с помощью stow:
tar xzf foobar-42.tar.gz
cd foobar-42
./configure --prefix=~/software/stow/foobar-42
make
make install
cd ~/software/stow
stow foobar-42
Последняя команда создает символические ссылки из файлов и каталогов в ~/software/stow
разделе ~/software
. Например, если ~/software/stow/foobar-42
содержит lib/foobar
каталог и файлы bin/foobar
и man/man1/foobar.1
, то вы получите символические ссылки
~/software/bin/foobar -> ../stow/foobar-42/bin/foobar
~/software/lib/foobar -> ../stow/foobar-42/lib/foobar
~/software/man/man1/foobar.1 -> ../../stow/foobar-42/man/man1/foobar.1
Чтобы удалить программу, запустите stow -D foobar-42
в ~/software/stow
каталоге и удалите ~/software/stow/foobar-42
. Чтобы сделать программу временно недоступной (например, чтобы попробовать другую версию), просто запустите stow -D
часть.
Смотрите такжеМенеджеры пакетов без прав root;Лучший способ обновить vim/gvim до версии 7.3 в Ubuntu 10.04?