Итак, я добавлю контекст, но мой BLUF таков:
В организации, которая активно предпочитает «старое, известное, стабильное» (CentOS 6.6, тщательно отобранный репозиторий и т. д.) «современному, эффективному, действенному», но предоставляет мне значительную свободу действий в рамках моего собственного профиля, насколько далеко я могу (или должен) зайти в создании собственной среды внутри моего профиля, и какой подход к этому наиболее разумен?
Простой пример того, о чем я говорю, — Python. В масштабах всей системы я ограничен версией 2.6, но никого не волнует, использую ли я 2.7 или 3.4 для своих собственных целей, но даже сборка их вручную (не говоря уже об использовании таких инструментов, как pyenv и т. д.) не увенчалась успехом (хотя всегда кажется,толькоза пределами досягаемости моих навыков)
Так что никто не имеет проблем с тем, что я компилирую новый код или запускаю пакеты из разумных источников. Ничего из того, что я делаю, не будет запущено в контексте SU и т. д., но я, похоже, трачу невероятное количество времени, крутя здесь колеса. Я не могу установить RPM, потому что я даже не могу запустить эти чертовы инструменты (даже в контексте пользователя) и т. д. Я полагаю, что есть способ исправить разрешения, чтобы позволить мне это делать (не разрешая мне вносить общесистемные изменения), но прежде чем я начну просить о таких вещах, мне нужно знать, что это лучшее (или, по крайней мере, жизнеспособное) решение моей проблемы.
Какой путь мне следует выбрать, чтобы попытаться это осуществить? И помимо того, что яможетделаю, я на самом делеДЕЛАТЬхочу следовать общему замыслу этих политик, поэтому я хотел бы избежать любых действий, которые действительно могут иметь какие-либо последствия для безопасности. Так есть ли пределы тому, насколько далеко я могу зайти в этом вопросе?
Жизнеспособно ли использование менеджера пакетов? Создание функциональной среды сборки? и т. д.
И конечно, если где-то есть учебник, который мне следует почитать, ссылка будет весьма признательна. Мой гугл-фу меня подвел (вероятно, потому что мне трудно кратко описать проблему).
решение1
Хорошо, вот что я понял из вашего вопроса. Вы хотите иметь среду, которая содержала бы любую из версий любого из пакетов, которые, по вашему мнению, необходимы, правильно? Если это так, у вас не возникнет проблем с этим, поскольку Linux на самом деле поддерживает это. Существует несколько ограничений относительно того, что вы не можете сделать как ваш пользователь.
Для вашего первого примера, python. Системный администратор воздержится (явно) от обновления этого, потому что это очень и очень важно для YUM, и его поломка оставит сервер необновляемым. Однако это не мешает вам создавать подпапки в вашем домашнем каталоге и вносить tar-шар, который содержит необходимые двоичные файлы. Просто перейдите сюдаЗагрузка Pythonи выберите tar-шар. Распакуйте его в своем домашнем каталоге и добавьте export PATH=/location_to_bin_folder_for python:$PATH
в свой .bashrc, и все готово.
Это полностью приемлемо в мире Linux (компании могут иметь ограничения на то, что вы устанавливаете), и tar-шары, как правило, являются способом для закрытых инфраструктур. Менеджеры пакетов — это, как правило, то, что используют администраторы, и вы не будете посвящены в это, если только у вас нет чего-то конкретного на уме, например, версии php, которая поставляется Red Hat или другими сторонними поставщиками репозиториев.
Итак, вкратце, вы ограничены правилами, установленными вашими администраторами. В закрытых инфраструктурах безопасность на самом деле не является большой проблемой. Вы можете пойти дальше и сделать RPM, если вам нужно, с tar-шарами в качестве обновлений, и вы можете подписаться на обновления, чтобы поддерживать RPM в актуальном состоянии. Я бы узнал, насколько они хотят ограничить вас, но практически все инструменты разработки доступны в виде tar-архивов для этой цели.
РЕДАКТИРОВАТЬ :
Самый простой способ достичь того, что вы ищете, это способ, которым альтернативы сделаны. Вы можете сделать это, создав папку у себя дома, например
/home/user/bin
Установите Python и что-нибудь еще, например Java, в две отдельные папки.
/home/user/python
и/home/user/java.
В папке bin создайте символические ссылки на нужные двоичные файлы.
$ ls -l /home/user/bin
lrwxrwxrwx. 1 user user 13 May 19 19:59 java -> /home/user/java/bin/java
lrwxrwxrwx. 1 user user 13 May 19 19:59 javac -> /home/user/java/bin/javac
lrwxrwxrwx. 1 user user 15 May 19 19:59 python -> /home/user/python/bin/python
Добавьте это в ваш .bashrc
export PATH=/home/user/bin:$PATH
Откройте новый сеанс терминала и попробуйте
which python
Он должен сказать/home/user/bin/python
Добавьте любые дополнительные двоичные файлы, которые вы считаете подходящими, с версиями по вашему выбору, и все будет работать так, как и ожидалось.