Linux - Installiere, ohne Symlinks zu ersetzen

1132
chrisb2244

Ich habe vor kurzem (und törichterweise, da es hier eine einfache Lösung gibt, die --prefix=Option auf eine andere als die Standardeinstellung gesetzt /usr/bin) configured und maked gcc-4.9.1, ohne die --prefix=Option einzustellen . Ich möchte nicht wirklich makedie ganze Sache betrachten, da es ein anständig großes Stück Zeit braucht.

Mein /usr/bin/Verzeichnis enthält bereits gcc-4.8.2, wie vom Betriebssystem installiert (Ubuntu-14.04). Der entscheidende Punkt ist, dass die bestehenden Symlinks sind alle auf Dinge wie gcc-4.8, und wird von dem Befehl ersetzt werden make installdurch Symlinks gcc-4.9, g++-4.9usw.

Kann ich ein Argument an mich übergeben make, damit es die bereits existierenden Symlinks nicht ersetzt? Oder ähnliches?

0
Lassen Sie uns einfach etwas klären; Sie möchten die vorhandene Installation von GCC einfach nicht überschreiben, richtig? Würde die Installation der neuen Dateien in einem anderen Verzeichnis (als hätten Sie `./configure --prefix = $ something` verwendet) ein akzeptabler Ersatz sein? Bitte [bearbeiten], um Ihre Antwort anzugeben. a CVn vor 10 Jahren 0
Ich könnte mir vorstellen, dass das gut für mich geklappt hätte - ich hätte dann entweder das neue Verzeichnis als Pfad hinzufügen oder bei meiner Wahl mit einem Symlink versehen können. Jetzt muss ich entweder die "4.8.2" - Binärdateien "installieren" und erneut verknüpfen oder eine originellere Lösung finden. Ich bin hier auf der Suche nach der erfinderischen Lösung. So oder so, Frage bearbeitet, um zu klären chrisb2244 vor 10 Jahren 0

1 Antwort auf die Frage

0
a CVn

Beachten Sie zunächst, dass das Standardpräfix meistens / usr / local ist, sofern nicht ausdrücklich eines angegeben wird. Das Überschreiben der Installation in / usr ist in Ihrem Fall möglicherweise nicht einmal ein Problem, obwohl dies sicherlich zu Verwirrung führen kann, wenn Sie einen GCC in / usr und einen anderen in / usr / local haben.

Obwohl ich nicht sicher bin, ob es speziell mit gcc-4.9.1 funktioniert (obwohl ich wenig Grund dafür sehe), bietet autoconf (das das configureSkript generiert ) die Möglichkeit, das Präfix bei der Installation zu überschreiben.

Zitieren der Autoconf- Dokumentation, Abschnitt "Installationsnamen" :

Die tragbarste Art, die Installationspositionen zu beeinflussen, besteht darin, die richtigen Positionen für die Konfiguration zu übergeben. Viele Pakete bieten jedoch eine oder beide der folgenden Tastenkombinationen für das Übergeben von Variablenzuweisungen an die Befehlszeile "make install", um den Installationsort zu ändern, ohne dass eine Neukonfiguration oder eine Neukompilierung erforderlich ist.

Die erste Methode umfasst die Bereitstellung einer Überschreibungsvariablen für jedes betroffene Verzeichnis. Beispiel: 'make install prefix = / path / to / alternate' wählt einen alternativen Speicherort und beeinflusst auch alle anderen Verzeichniskonfigurationsvariablen, die in Form von '$ ' ausgedrückt wurden (oder, anders ausgedrückt, alle) Verzeichnisse, die während der Konfiguration angegeben wurden, jedoch nicht in Bezug auf das allgemeine Präfix, müssen zum Installationszeitpunkt überschrieben werden, damit die gesamte Installation verschoben werden kann. Die Annäherung von Makefile-Variablenüberschreibungen für jede Verzeichnisvariable wird von den GNU-Codierungsstandards gefordert und führt im Idealfall zu keiner Neukompilierung. Bei einigen Plattformen sind jedoch Einschränkungen bei der Semantik gemeinsam genutzter Bibliotheken bekannt, die bei Verwendung dieser Methode eine Neukompilierung erfordern. Dies gilt insbesondere für Pakete, die GNU Libtool verwenden.

Bei der zweiten Methode wird die Variable 'DESTDIR' bereitgestellt. Beispiel: "make install DESTDIR = / path / to / alternate" wird "/ path / to / alternate" vor allen Installationspfaden angeben. Der Ansatz der 'DESTDIR'-Überschreibung wird von den GNU-Codierungsstandards nicht verlangt und funktioniert nicht auf Plattformen mit Laufwerksbuchstaben. Auf der anderen Seite werden Probleme beim erneuten Kompilieren vermieden, und es funktioniert auch dann gut, wenn einige Verzeichnisoptionen zum Zeitpunkt der Konfiguration nicht in Form von "$ " angegeben wurden. Bei Paketen, die 'DESTDIR' unterstützen, sollte die Variable während der Konfiguration und 'make all' undefiniert bleiben und nur während 'make install' angegeben werden.

Also make install DESTDIR=/opt/gcc-4.8.2 solltest du so ziemlich tun, was du willst. Je nach der gewünschten Verzeichnisstruktur müssen Sie die Dateien möglicherweise ein wenig verschieben. Dies sollte jedoch für den Anfang ausreichend sein.

Beachten Sie, dass ich dies nicht getestet habe. Sie laufen auf eigenes Risiko.