Instalando Git, Curl e Expat da fonte

7

Eu tenho uma VM do RHEL 6.4 provisionada pelo KVM interno da minha empresa.

Estamos tendo problemas para usar yum ( Cannot retrieve repository metadata , o que eu confirmei neste caso, é peculiar à nuvem interna da minha empresa), então eu tenho que construir o Git a partir do código fonte.

Fazendo o download do arquivo RPM e emitindo

sudo yum localinstall ....rpm

Dá-me o mesmo erro Cannot retrieve repository metadata .

Emitindo

sudo rpm -ivh ....rpm

Falha com um error: Failed dependencies e, em seguida, lista todos os pacotes que preciso instalar. Suponho que consegui encontrar os links de download para todos eles, mas já tentei isso antes e não consegui encontrar os links para download das versões corretas dos pacotes corretos.

O seguinte código realmente funciona, graças à resposta do @sm :

wget ftp://fr2.rpmfind.net/linux/dag/redhat/el6/en/x86_64/extras/RPMS/perl-Git-1.7.9.6-1.el6.rfx.x86_64.rpm
wget http://pkgs.repoforge.org/git/git-1.7.9.6-1.el6.rfx.x86_64.rpm
rpm -ivh perl-Git-1.7.9.6-1.el6.rfx.x86_64.rpm git-1.7.9.6-1.el6.rfx.x86_64.rpm

Se eu fizer o download do código git, descompacte-o e construa-o, como:

wget https://www.kernel.org/pub/software/scm/git/git-1.8.5.tar.gz
tar -xvf git-1.8.5.tar.gz
cd git-1.8.5
./configure
make
make install

Eu recebo o seguinte erro ao clonar do protocolo http:// :

fatal: Unable to find remote helper for 'http'

O Google me disse que eu precisava de experiência e expatriados. Eu não posso usar o yum, então eu fui e os construí também:

cd ..
wget http://curl.haxx.se/download/curl-7.34.0.tar.gz
tar -xvf curl-7.34.0.tar.gz
cd curl-7.34.0
./configure
make
make install

cd ..
wget http://downloads.sourceforge.net/expat/expat-2.1.0.tar.gz
tar expat-2.1.0.tar.gz
cd expat-2.1.0
./configure
make
make install

No entanto, ao recompilar o Git, recebo o mesmo erro. Depois de pesquisar mais, determinei que precisava passar os seguintes parâmetros para o ./configure do Git:

cd git-1.8.5
./configure --with-curl=<curl_install_path> --with-expat=<expat_install_path> 

No entanto, não consegui determinar onde os caminhos de instalação de curl e expat estavam localizados.

Então, o que eu fiz foi construir o Git, curl e expat usando o ./configure --prefix=/path/to/desired/install/path

mkdir curl
cd curl-7.34.0
./configure --prefix=/home/downloads/curl
...
mkdir expat
cd expat-2.1.0
./configure --prefix=/home/downloads/expat
...
mkdir git
cd git-1.8.5
./configure --prefix=/home/downloads/git --with-curl=/home/downloads/curl --with-expat=/home/downloads/expat
...

e a partir disso eu consegui clonar com o Git do protocolo http . No entanto, isso viola a estrutura de arquivos do Linux.

Duas perguntas:

  1. Ao criar o Git a partir da origem, você precisa incluir os caminhos de instalação curl e expat em ./configure . Onde estão esses caminhos de instalação ao instalar curl e expat sem o argumento prefix ?
  2. Aprendi que precisava dos caminhos de instalação do curl e expat quando recebi um erro e procurei por ele. Existem outros programas que eu preciso dizer ao Git para que eu não receba erros no futuro?
por Matthew Moisen 04.01.2014 / 03:03

3 respostas

3

Acho que sugiro não instalar esses itens diretamente da fonte, mas sim aproveitar o poder do gerenciador de pacotes para manter esses pacotes.

instalando localmente

Você pode usar uma ferramenta de linha de comando como curl ou wget para baixar os pacotes necessários para instalá-los usando yum ou rpm diretamente.

$ sudo yum localinstall some.rpm
-or-
$ sudo rpm -ivh some.rpm

Gostaria de sugerir que olhassem para os repositórios RepoForge bem como EPEL para RPMs. Por exemplo, os pacotes git estão aqui.

Um comando simples no terminal fará o download:

$ wget http://pkgs.repoforge.org/git/git-1.7.10.4-1.el6.rfx.x86_64.rpm

Reconstruindo um RPM de origem

Se você tiver as versões mais recentes, ainda poderá usar RPMs, mas em vez de fazer o download da versão .rpm de um pacote, será necessário obter a versão .src.rpm . Estes podem ser reconstruídos usando o seguinte comando:

$ rpmbuild --rebuild some.src.rpm

Reconstruindo um tar.gz usando uma fonte de doador RPM

Você também pode pegar seus .tar.gz tarballs e reutilizar o arquivo .spec que está incluído no .src.rpm acima. Você faz isso através dos seguintes comandos.

$ mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS,tmp}

Em seguida, crie um arquivo ~/.rpmmacros .

%packager Your Name
%_topdir /home/YOUR HOME DIR/rpm
%_tmppath /home/YOUR HOME DIR/rpm/tmp

Agora estamos prontos para "instalar" o doador .src.rpm .

$ rpm -ivh some.src.rpm

Isso depositará um tarball e um arquivo .spec nos seus diretórios ~/rpm . Você pode editar esse arquivo .spec e substituir o tarball pelo mais recente.

Agora, para reconstruí-lo:

$ rpmbuild -ba ~/rpm/SPECS/some.spec

Isso criará um arquivo .rpm e um novo .src.rpm quando estiver concluído.

Dicas adicionais

Você pode usar a ferramenta yum-builddep para ter certeza de ter todos os RPMs necessários instalados antes de começar.

$ sudo yum-builddep some.src.rpm
    
por 04.01.2014 / 04:00
3

O caminho de instalação é fácil de encontrar. A maioria dos scripts configure é bastante padrão, e geralmente há um sinalizador -h que imprime uma mensagem de ajuda. Dê uma olhada no git:

$ ./configure -h | grep -A 2 Insta
Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]

Então, você instalou curl usando --prefix=/home/downloads/curl e foi detectado por git com --with-curl=/home/downloads/curl . Portanto, se você tivesse instalado nos locais padrão, teria executado --with-curl=/usr/local/ .

Quanto a outros possíveis problemas, não tem ideia. Você vai atravessar a ponte quando chegar a ela.

Em uma nota mais geral, recomendo que você tente pesquisar por pacotes RPM antes de instalar a partir da origem. Você não precisa de yum para instalar pacotes RPM, você pode simplesmente fazer:

rpm -i rpmfile.rpm

Eu encontrei o RHEL 6 RPMs para git e curl em rpm.pbone.net . Não foi possível encontrar um RHEL 6 para expat , mas existem vários para o Fedora e o CentOS, um deles provavelmente funcionaria para você também.

    
por 04.01.2014 / 03:59
-1

Respondendo 1. O caminho de instalação para pacotes adicionais depende de como eles estão instalados. Se você instalá-los como administrador, eles deverão ser instalados no /usr ou /usr/share locais padrão. Algum lugar que já está no caminho do sistema. Você pode encontrar isso em config.log ou outros registros deixados pelo script de configuração. Além disso, alguns administradores podem optar por instalar esses pacotes no diretório /opt , que significa 'pacotes opcionais'. No entanto, se você instalá-los como um usuário mortal, poderá instalá-los em qualquer lugar em que tenha acesso de gravação, provavelmente o /home . Eu normalmente uso um local como /home/myname/curl-install .

    
por 04.01.2014 / 04:02

Tags