Instale novos pacotes no computador antigo não-mantido

3

Temos um antigo servidor (Fedora Core 4) instalado em 2005. Este servidor nunca foi atualizado. Ele executa um software especial que permite monitorar uma linha de produção sem estar conectado diretamente ao mundo externo.

Está fora de questão atualizar o sistema.

Alguns utilitários têm erros ou opções ausentes. Alguns outros utilitários estão faltando.

Eu tenho que instalar algum script neste servidor. O principal problema é que o Bash é realmente muito velho e não tem algumas coisas úteis. Eu não gosto da ideia de hackear esses scripts bem testados.

Existe uma maneira de executar um Bash mais novo e instalar novos programas enquanto deixa o sistema intacto?

Talvez algo como o BusyBox faça? Ou dentro de um chroot? O problema de um chroot é a dificuldade de acessar o sistema real. Por exemplo, meu script de backup não funcionará.

    
por Gregory MOUSSAT 12.05.2013 / 17:06

4 respostas

3

Acho que a maneira mais fácil é copiar em massa programas e bibliotecas de outra instalação para um diretório separado. Por exemplo, a partir de um live-cd systemrescuecd que pode conter tudo o que você precisa para apenas cem megabytes, copiado em / opt / new /. Isso permite que você copie sem precisar pesquisar / encontrar / adivinhar / testar quais bibliotecas são necessárias.

Você pode executar esses programas com LD_LIBRARY_PATH=/opt/new/lib/ ; /opt/new/bin/diff ou LD_LIBRARY_PATH=/opt/new/lib/ ; /opt/new/bin/bash Isso deve funcionar sem falhas até que os utilitários não leiam os arquivos de configuração antigos que não entendem mais. Ou pior, até que não escrevam neles.

Uma vez que isso funcione, você pode copiar as novas bibliotecas em / lib / para esquecer o truque LD_LIBRARY_PATH. Enquanto os nomes dos arquivos não colidirem, isso é seguro (acho que outros conselhos são bem-vindos).

E até mesmo substituir binários antigos por novos (somente para os selecionados) se você ousar, mas talvez não seja uma boa ideia para um servidor de produção.

    
por 12.05.2013 / 20:07
3

Você pode compilar e instalar as ferramentas necessárias no diretório inicial de um usuário dedicado.

Variáveis de ambiente deste usuário dedicado devem ser configuradas para preferir versões locais de executáveis e bibliotecas, por exemplo, PATH e LD_LIBRARY_PATH .

Os passos necessários são algo como:

  1. crie um novo usuário: cooluser
  2. crie um diretório ~cooluser/Local
  3. edite ~cooluser/.profile para definir o ambiente conforme necessário:
    • PATH=${HOME}/Local/bin:${PATH}
    • LD_LIBRARY_PATH=${HOME}/Local/lib:${LD_LIBRARY_PATH}
  4. faça o download de fontes de ferramentas necessárias
  5. configure a ferramenta para que ela seja instalada em ~cooluser/Local
    • por exemplo. %código%
  6. compilar e instalar

Obviamente, você precisa de ./configure --prefix=~cooluser/Local e muitas outras ferramentas de desenvolvedor na máquina. Se você não os possui, você pode compilar as ferramentas em outra máquina (virtual?) Executando a versão do sistema operacional e transferir o diretório gcc quando estiver pronto.

    
por 12.05.2013 / 17:38
1

Se você vai instalar muitos programas, mantê-los manualmente será uma dor. Eu recomendo instalar uma nova distribuição em um chroot.

Você pode instalar o Fedora se estiver acostumado. Eu não sei se tem recursos para ajudar a instalar em um chroot. Se não, o Debian e os derivados, com Debootstrap . Este guia pode ajudar. Uma versão tão antiga do Fedora não tem schroot, mas você pode instalar o rpm de qualquer maneira.

Se você não conseguir que o schroot funcione, preencha o chroot com montagens de bind manualmente. Se você tiver uma distribuição instalada em /new e não estiver usando o schroot, adicione essas entradas a /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

Como você estará usando montagens de ligação, certifique-se de configurar seu script de backup para não atravessar nenhum dos diretórios montados na ligação, ou você estará fazendo o backup duas vezes, uma vez no local original e uma vez no novo local .

    
por 13.05.2013 / 01:36
-1

O Bash depende da libc, que é tão antiga que as chances de uma compilação bem-sucedida são muito limitadas. Talvez nos dizendo qual é o material que sua versão bash está faltando ajudaria.

    
por 12.05.2013 / 17:43