Entonces agregaré contexto, pero mi BLUF es este:
En una organización que prefiere activamente "antiguo, conocido, estable" (CentOS 6.6, Repo altamente seleccionado, etc...) a "moderno, eficiente, efectivo", pero me permite una gran libertad dentro de mi propio perfil, ¿hasta dónde puedo ( ¿O debería) crear mi propio entorno dentro de mi perfil y cuál es el enfoque más sensato para que eso suceda?
Un ejemplo sencillo de lo que estoy hablando es Python. En todo el sistema estoy limitado a 2.6, pero a nadie le importa si ejecuto 2.7 o 3.4 para mis propios fines, pero incluso compilarlos manualmente (sin importar usar herramientas como pyenv, etc.) no ha tenido éxito (aunque siempre parecejustofuera del alcance de mis habilidades)
Así que nadie tiene problemas conmigo para compilar código nuevo o ejecutar paquetes de fuentes sensatas. Nada de lo que esté haciendo se ejecutará en un contexto SU, etc., pero parece que paso una cantidad increíble de tiempo dando vueltas aquí. No puedo instalar RPM porque ni siquiera puedo ejecutar las malditas herramientas (ni siquiera en un contexto de usuario), etc... Me imagino que hay una manera de que arreglen los permisos para permitirme hacer eso (sin permitirme hacerlo). hacer cambios en todo el sistema), pero antes de preguntar por cosas así, necesito saber que es la mejor (o al menos viable) solución a mi problema.
¿Qué ruta debo tomar para intentar que esto suceda? Y más allá de lo que yopoderhacer, en realidadHACERQuiero obedecer la intención general de estas políticas, por lo que me gustaría evitar hacer cualquier cosa que realmente introduzca implicaciones de seguridad. Entonces, ¿hay límites en cuanto a hasta dónde debo llevar esto?
¿Es viable utilizar el administrador de paquetes? ¿Construyendo un entorno de construcción funcional? etc.
Y, por supuesto, si hay un manual en algún lugar que debería leer, agradecería mucho un enlace. Mi google-fu me ha fallado aquí (probablemente porque me cuesta describir sucintamente el problema).
Respuesta1
Ok, esto es lo que obtuve de tu pregunta. ¿Quiere tener un entorno que contenga cualquiera de las versiones de cualquiera de los paquetes que considere necesarios, correcto? Si ese fuera el caso, no tendrá problemas para hacerlo, ya que Linux realmente lo admite. Existen pocos límites en cuanto a lo que no puede hacer como usuario.
Para su primer ejemplo, python. El administrador del sistema se abstiene (explícitamente) de actualizar esto porque es muy, muy esencial para YUM y romperlo dejará el servidor no actualizable. Sin embargo, esto no le impide crear subcarpetas en su directorio de inicio y traer una bola tar que tenga los archivos binarios necesarios. Sólo ve aquíDescarga de Pythony recoge una bola de alquitrán. Descomprímalo en su casa y agregue un archivo export PATH=/location_to_bin_folder_for python:$PATH
.bashrc y estará listo.
Esto es completamente aceptable en el mundo de Linux (las empresas pueden tener restricciones sobre lo que instala) y las bolas de alquitrán son generalmente el camino a seguir para infraestructuras cerradas. Los administradores de paquetes generalmente son algo que utilizan los administradores y usted no estará al tanto de eso a menos que tenga algo específico en mente, como una versión de PHP que provenga de Red Hat u otros proveedores de repositorios externos.
En resumen, usted está limitado por las reglas establecidas por sus administradores. En infraestructuras cerradas la seguridad no supone realmente un gran problema. Puede ir un paso más allá y crear RPM si es necesario con bolas de alquitrán como actualizaciones y puede suscribirse a actualizaciones para mantener el RPM actualizado. Descubriría cuánto querrían limitarte, pero prácticamente todas las herramientas de desarrollo están disponibles como archivos tar para este propósito.
EDITAR :
La forma más sencilla de lograr lo que busca es la forma en que se hacen las alternativas. Puedes hacer eso creando una carpeta en tu casa como
/home/user/bin
Instale Python y algo más, como por ejemplo Java en dos carpetas separadas
/home/user/python
y/home/user/java.
En su carpeta bin, cree enlaces simbólicos a los archivos binarios deseados.
$ 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
Agrega esto a tu .bashrc
export PATH=/home/user/bin:$PATH
Abra una nueva sesión de terminal e intente
which python
debería decir/home/user/bin/python
Agregue cualquier binario adicional que considere adecuado con las versiones de su elección y funcionará como se esperaba.