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 metadata
was 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 metadata
Fehler.
Ausgabe
sudo rpm -ivh ....rpm
Schlägt mit einem fehl error: Failed dependencies
und 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 http
Protokoll klonen . Dies verstößt jedoch gegen die Linux-Dateistruktur.
Zwei Fragen:
- 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 ohneprefix
Argument? - 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?
Antworten:
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
curl
oder verwendenwget
, um die Pakete herunterzuladen, die für die Installation erforderlich sind, entweder mityum
oderrpm
direkt.Ich würde vorschlagen, in den Repositories RepoForge sowie EPEL nach RPMs zu suchen . Zum Beispiel sind die
git
Pakete hier.Ein einfacher Befehl im Terminal lädt es herunter:
Neuerstellen einer Quell-RPM
Wenn Sie nicht über die neuesten Versionen verfügen müssen, können Sie weiterhin RPMs verwenden. Anstatt jedoch die
.rpm
Version eines Pakets herunterzuladen , möchten Sie die.src.rpm
Version herunterladen . Diese können mit dem folgenden Befehl neu erstellt werden:Neuerstellung eines tar.gz mit einer Donor-Quell-RPM
Sie können auch Ihre
.tar.gz
Tarballs nehmen und die oben enthaltene.spec
Datei wiederverwenden.src.rpm
. Sie tun dies mit den folgenden Befehlen.Dann erstellen Sie eine
~/.rpmmacros
Datei.Jetzt können wir den Spender "installieren"
.src.rpm
.Dadurch werden ein Tarball und eine
.spec
Datei in Ihren~/rpm
Verzeichnissen abgelegt . Sie können diese.spec
Datei dann bearbeiten und den Tarball durch den neueren ersetzen.Nun, um es wieder aufzubauen:
Dadurch wird
.rpm
eine neue.src.rpm
Datei erstellt, sobald diese abgeschlossen ist.Zusätzliche Tipps
Mit dem Tool können
yum-builddep
Sie sicherstellen, dass alle erforderlichen RPMs installiert sind, bevor Sie beginnen.quelle
sudo yum localinstall ....rpm
gab mir den gleichen yum-Fehler wie üblich (Repository-Metadaten können nicht abgerufen werden).sudo rpm -ivh ....rpm
gab mir `Fehler: Fehlgeschlagene Abhängigkeiten: <Paketname> wird von git-all benötigt 'Ich werde die src-Methode ausprobieren.sudo rpm -ivh 1.rpm 2.rpm 3.rpm...
.git-all
erfordertemacs-git
,git
,git-arch
, von denen jeder andere RPMs erfordern. Ich werde die RepoForge jedoch versuchen und zurückmeldenDer Installationspfad ist leicht zu finden. Die meisten
configure
Skripte sind ziemlich Standard und haben normalerweise ein-h
Flag, das eine Hilfemeldung druckt. Schauen Sie sich gits an:So installieren Sie
curl
mit--prefix=/home/downloads/curl
und es wurde nachgewiesen , indemgit
mit--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
yum
RPM-Pakete installieren. Sie können einfach Folgendes tun:Ich habe RHEL 6 RPMs für
git
undcurl
auf rpm.pbone.net gefunden . Ich konnte keinen RHEL 6 finden,expat
aber es gab verschiedene für Fedora und CentOS, einer davon würde wahrscheinlich auch für Sie funktionieren.quelle
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-
/usr
oder/usr/share
Speicherorten installiert werden . An einem Ort, der sich bereits im Systempfad befindet. Sie finden dies inconfig.log
oder in anderen Protokollen, die vom Konfigurationsskript hinterlassen wurden. Darüber hinaus können einige Administratoren diese Pakete in einem/opt
Verzeichnis 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
.quelle