Então vou adicionar contexto, mas meu BLUF é este:
Em uma organização que prefere ativamente "antigo, conhecido, estável" (CentOS 6.6, Repo altamente curado, etc...) a "moderno, eficiente, eficaz", mas me permite uma latitude substancial dentro do meu próprio perfil, até onde posso ( ou devo criar meu próprio ambiente dentro do meu perfil e qual é a abordagem mais sensata para fazer isso acontecer?
Um exemplo fácil do que estou falando é Python. Em todo o sistema, estou limitado a 2.6, mas ninguém se importa se eu executo 2.7 ou 3.4 para meus próprios propósitos, mas mesmo construí-los manualmente (não importa usar ferramentas como pyenv, etc) não teve sucesso (embora sempre pareçaapenasfora do alcance do meu conjunto de habilidades)
Portanto, ninguém tem problemas comigo compilando novo código ou executando pacotes de fontes sensatas. Nada do que estou fazendo será executado em um contexto SU, etc, mas parece que estou gastando uma quantidade incrível de tempo girando aqui. Não consigo instalar RPMs porque não consigo nem executar as malditas ferramentas (mesmo em um contexto de usuário), etc... Imagino que haja uma maneira de eles corrigirem as permissões para me permitir fazer isso (sem permitir que eu faça isso). fazer alterações em todo o sistema), mas antes de pedir coisas assim, preciso saber se é a melhor (ou pelo menos viável) solução para o meu problema.
Que caminho devo seguir para tentar fazer isso acontecer? E além do que eupodefazer, eu na verdadeFAZERquero obedecer à intenção geral dessas políticas, então gostaria de evitar fazer qualquer coisa que realmente introduza quaisquer implicações de segurança. Portanto, há limites para até onde devo levar isso?
Usar o gerenciador de pacotes é viável? Construindo um ambiente de construção funcional? etc.
E, claro, se houver uma cartilha em algum lugar que eu deva ler, um link seria muito apreciado. Meu google-fu falhou aqui (provavelmente porque tenho dificuldade em descrever o problema de forma sucinta).
Responder1
Ok, então foi isso que entendi da sua pergunta. Você deseja ter um ambiente que contenha qualquer uma das versões de qualquer um dos pacotes que você acha necessários, correto? Se for esse o caso, você não terá problemas para fazer isso, já que o Linux realmente suporta isso. Existem poucos limites quanto ao que você não pode fazer como usuário.
Para o seu primeiro exemplo, python. O administrador do sistema evita (explicitamente) atualizar isso porque é muito essencial para o YUM e quebrá-lo deixará o servidor não atualizável. No entanto, isso não impede que você crie subpastas em seu diretório inicial e traga um tar ball que contenha os binários necessários. Basta ir aquiBaixar Pythone escolha uma bola de alcatrão. Descompacte-o em sua casa e adicione um export PATH=/location_to_bin_folder_for python:$PATH
.bashrc e pronto.
Isso é completamente aceitável no mundo do Linux (as empresas podem ter restrições sobre o que você instala) e as tar balls geralmente são a melhor opção para infraestruturas fechadas. Os gerenciadores de pacotes geralmente são usados pelos administradores e você não teria conhecimento disso, a menos que tenha algo específico em mente, como uma versão php proveniente da Red Hat ou de outros provedores de repositório de terceiros.
Resumindo, você está limitado pelas regras definidas pelos seus administradores. Em infraestruturas fechadas, a segurança não é realmente um grande problema. Você pode dar um passo adiante e criar RPMs, se necessário, com tar balls como atualizações e pode assinar atualizações para manter o RPM atualizado. Eu descobriria o quanto eles gostariam de limitar você, mas praticamente todas as ferramentas de desenvolvimento estão disponíveis como arquivos tar para essa finalidade.
EDITAR:
A maneira mais fácil de conseguir o que você procura é a forma como as alternativas são feitas. Você pode fazer isso criando uma pasta em sua casa como
/home/user/bin
Instale python e algo mais, como Java em duas pastas separadas
/home/user/python
e/home/user/java.
Na sua pasta bin, crie links simbólicos para os binários desejados
$ 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
Adicione isto ao seu .bashrc
export PATH=/home/user/bin:$PATH
Abra uma nova sessão de terminal e tente
which python
Deveria dizer/home/user/bin/python
Adicione quaisquer binários adicionais que achar adequados às versões de sua escolha e tudo funcionará conforme o esperado