Installieren von Git, Curl und Expat von der Quelle

7

Ich habe eine RHEL 6.4-VM, die von der internen KVM meines Unternehmens bereitgestellt wird.

Wir haben einige Probleme bei der Verwendung yum( Cannot retrieve repository metadatawas in diesem Fall für die interne Cloud meines Unternehmens spezifisch ist), daher muss ich Git aus dem Quellcode erstellen.

Herunterladen der RPM-Datei und Ausgabe

sudo yum localinstall ....rpm

Gibt mir den gleichen Cannot retrieve repository metadataFehler.

Ausgabe

sudo rpm -ivh ....rpm

Schlägt mit einem fehl error: Failed dependenciesund listet dann alle Pakete auf, die ich installieren muss. Ich gehe davon aus, dass ich die Download-Links für alle finden konnte, aber ich habe dies bereits versucht und konnte die Download-Links für die richtigen Versionen für die richtigen Pakete nicht finden.

Der folgende Code funktioniert dank der Antwort von @ slm tatsächlich :

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

Wenn ich nur den Git-Code herunterlade, entpacke ihn und erstelle ihn wie folgt:

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

Beim Klonen aus dem http://Protokoll wird folgende Fehlermeldung angezeigt :

fatal: Unable to find remote helper for 'http'

Googeln sagte mir, dass ich Curl-Devel und Expat brauchte. Ich kann yum nicht benutzen, also habe ich auch diese gebaut:

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

Beim erneuten Erstellen von Git erhalte ich jedoch den gleichen Fehler. Nachdem ich mehr gegoogelt hatte, stellte ich fest, dass ich die folgenden Parameter an Git's übergeben musste ./configure:

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

Ich konnte jedoch nicht feststellen, wo sich die Curl- und Expat-Installationspfade befanden.

Also habe ich stattdessen Git, Curl und Expat mit dem erstellt ./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
...

und daraus konnte ich mit Git aus dem httpProtokoll klonen . Dies verstößt jedoch gegen die Linux-Dateistruktur.

Zwei Fragen:

  1. Wenn Sie Git aus dem Quellcode erstellen, müssen Sie die Installationspfade für Curl und Expat angeben ./configure. Wo befinden sich diese Installationspfade bei der Installation von Curl und Expat ohne prefixArgument?
  2. Ich habe erfahren, dass ich die Installationspfade von Curl und Expat benötige, als ich einen Fehler bekam und danach suchte. Gibt es andere Programme, die ich Git mitteilen muss, damit ich in Zukunft keine Fehler mehr bekomme?
Matthew Moisen
quelle
Eine andere Option könnte darin bestehen, einfach eine SSH-URL anstelle einer http-URL zu verwenden.
Michas

Antworten:

3

Ich denke, ich würde vorschlagen, diese Elemente nicht direkt von der Quelle zu installieren, sondern die Leistung Ihres Paketmanagers zu nutzen, um diese Pakete weiterhin zu warten.

lokal installieren

Sie können ein Befehlszeilentool wie curloder verwenden wget, um die Pakete herunterzuladen, die für die Installation erforderlich sind, entweder mit yumoder rpmdirekt.

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

Ich würde vorschlagen, in den Repositories RepoForge sowie EPEL nach RPMs zu suchen . Zum Beispiel sind die gitPakete hier.

Ein einfacher Befehl im Terminal lädt es herunter:

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

Neuerstellen einer Quell-RPM

Wenn Sie nicht über die neuesten Versionen verfügen müssen, können Sie weiterhin RPMs verwenden. Anstatt jedoch die .rpmVersion eines Pakets herunterzuladen , möchten Sie die .src.rpmVersion herunterladen . Diese können mit dem folgenden Befehl neu erstellt werden:

$ rpmbuild --rebuild some.src.rpm

Neuerstellung eines tar.gz mit einer Donor-Quell-RPM

Sie können auch Ihre .tar.gzTarballs nehmen und die oben enthaltene .specDatei wiederverwenden .src.rpm. Sie tun dies mit den folgenden Befehlen.

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

Dann erstellen Sie eine ~/.rpmmacrosDatei.

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

Jetzt können wir den Spender "installieren" .src.rpm.

$ rpm -ivh some.src.rpm

Dadurch werden ein Tarball und eine .specDatei in Ihren ~/rpmVerzeichnissen abgelegt . Sie können diese .specDatei dann bearbeiten und den Tarball durch den neueren ersetzen.

Nun, um es wieder aufzubauen:

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

Dadurch wird .rpmeine neue .src.rpmDatei erstellt, sobald diese abgeschlossen ist.

Zusätzliche Tipps

Mit dem Tool können yum-builddepSie sicherstellen, dass alle erforderlichen RPMs installiert sind, bevor Sie beginnen.

$ sudo yum-builddep some.src.rpm
slm
quelle
Danke für die Antwort. Mein Yum funktioniert jedoch nicht. sudo yum localinstall ....rpmgab mir den gleichen yum-Fehler wie üblich (Repository-Metadaten können nicht abgerufen werden). sudo rpm -ivh ....rpmgab mir `Fehler: Fehlgeschlagene Abhängigkeiten: <Paketname> wird von git-all benötigt 'Ich werde die src-Methode ausprobieren.
Matthew Moisen
@MatthewMoisen - Sie müssen alle erforderlichen RPM-Dateien herunterladen und eine sudo rpm -ivh 1.rpm 2.rpm 3.rpm....
slm
@MatthewMoisen - Ich warne Sie, ich beschäftige mich seit über 20 Jahren mit diesem Zeug. Das Kompilieren aus der Quelle kann schmerzhaft sein, mehr als das Sammeln der erforderlichen Drehzahlen!
slm
Ich hatte Schwierigkeiten zu finden und alle erforderlichen .rpm - Dateien, zum Beispiel das Herunterladen git-allerfordert emacs-git, git, git-arch, von denen jeder andere RPMs erfordern. Ich werde die RepoForge jedoch versuchen und zurückmelden
Matthew Moisen
@MatthewMoisen - ja, der Vorteil, beim Repo zu bleiben, ist, dass alle erforderlichen Pakete vorhanden sind!
slm
3

Der Installationspfad ist leicht zu finden. Die meisten configureSkripte sind ziemlich Standard und haben normalerweise ein -hFlag, das eine Hilfemeldung druckt. Schauen Sie sich gits an:

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

So installieren Sie curlmit --prefix=/home/downloads/curlund es wurde nachgewiesen , indem gitmit --with-curl=/home/downloads/curl. Wenn Sie an den Standardspeicherorten installiert hätten, wären Sie daher ausgeführt worden --with-curl=/usr/local/.

Wie für andere mögliche Probleme keine Ahnung. Sie werden diese Brücke überqueren, wenn Sie dazu kommen.


Generell empfehle ich Ihnen, vor der Installation von der Quelle nach RPM-Paketen zu suchen. Sie müssen keine yumRPM-Pakete installieren. Sie können einfach Folgendes tun:

rpm -i rpmfile.rpm

Ich habe RHEL 6 RPMs für gitund curlauf rpm.pbone.net gefunden . Ich konnte keinen RHEL 6 finden, expataber es gab verschiedene für Fedora und CentOS, einer davon würde wahrscheinlich auch für Sie funktionieren.

terdon
quelle
Bewerben Sie diese Repos: fedoraproject.org/wiki/EPEL & repoforge.org . Beachten Sie die Warnungen in diesem CentOS-Wiki, wenn Sie Repositorys mischen: wiki.centos.org/AdditionalResources/Repositories
slm
@slm ist repoforge eigentlich sicher? Ich bin im Laufe der Jahre auf einige Probleme mit rpmforge gestoßen.
Jordan
@ Jordanm - Ich benutze es. Sie haben kürzlich Pakete getrennt, um das Mischen zu beheben. Sie werden jetzt RFX-Pakete sehen, die einige der problematischen sein können, aber im Allgemeinen habe ich sie verwendet. Beim Mischen von RF mit anderen wird es chaotisch.
slm
-1

Beantwortung 1. Der Installationspfad zu zusätzlichen Paketen hängt davon ab, wie sie installiert werden. Wenn Sie sie als Administrator installieren, sollten sie an Standard- /usroder /usr/shareSpeicherorten installiert werden . An einem Ort, der sich bereits im Systempfad befindet. Sie finden dies in config.logoder in anderen Protokollen, die vom Konfigurationsskript hinterlassen wurden. Darüber hinaus können einige Administratoren diese Pakete in einem /optVerzeichnis installieren, das für "optionale Pakete" steht. Wenn Sie sie jedoch als sterblicher Benutzer installieren, können Sie sie überall dort installieren, wo Sie Schreibzugriff haben, höchstwahrscheinlich bei Ihnen /home. Normalerweise benutze ich einen Ort wie /home/myname/curl-install.

mkc
quelle