Autor Thema: mehrere Versionen installieren und aufrufen  (Gelesen 3115 mal)

bblochl

  • Gast
mehrere Versionen installieren und aufrufen
« am: Dienstag, 23. Juli 2013, 15:25 »
Hier ist gewissermaßen die Fortsetzung von "mehrer versionen installieren und aufrufen"  https://archiv.lilypondforum.de/index.php?topic=1499.msg8357#msg8357 .
Nachdem die Compilation an einer falschen guile-Version gescheitert war ,hat es etwas gedauert. (Warnung! Die Guile-Version muss kleiner als 2.0.0 sein, aber größer als 1.8, üblich ist guile Version 1.8.8 aber inzwischen wird bei Linux auf Version 2.0.5 upgedatet. Eine 5 am Ende zu viel -> großer Ärger!)

Hier eine Kurzbeschreibung einer einfachen Lösung für "mehrere Versionen installieren und aufrufen" als Überblick:

Die Version wird in ein Verzeichnis mit der Versionsnummer im Heimverzeichnis, z. B. 2.16.2 aus der Quelle installiert (nur damit funktioniert das so!). Man kann auch einen anderen Namen verwenden, der nicht im Home-Verzeichnis vorkommt. lilypond-2.16.2 wäre vermutlich schlecht, weil nach dem Entpacken in diesem Verzeichnis die Quelldateien sind. Die Versionsnummer ist außerdem sinnvoll, weil sie leicht wiederzufinden ist. Es wird zuletzt ein versionsspezifisches Shellscript erstellt, mit dem man genau die gewünschte Version aufrufen kann.

Hilfen zur Compilation:
Die Compilation aus der Quelle ist sehr einfach, bei Linux eigentlich üblich und z. B. von https://archiv.lilypondforum.de/index.php?topic=1499.msg8329#msg8329 beschrieben, allerdings fehlt der letzte Schritt
sudo make install(Dort ging es lediglich um ein Problem bei der Compilation im Zusammenhang mit dem guile-Problem mit make und nicht um den letzten Schritt, die Installation, der deshalb fehlt. Aber die Beschreibung ist kurz und übersichtlich weshalb auf diese hier verwiesen wird.)
Außerdem ist jeder Quelle eine Datei INSTALL.txt beigepackt, wo die Installation noch mal ausführlich beschrieben ist. Und nicht zuletzt  gibt es eine weitere Beschreibung mit lilypond spezifischen Infos hier: http://lilypond.org/doc/v2.17/Documentation/contributor-big-page#compiling.

1. entpacken
Der Quellcode wird gepackt (gezipt) heruntergeladen - zunächst entpacken. Wie steht z. B. in INSTALL.txt.

2.  konfigurieren
man hält sich am Besten an die Beschreibung in INSTALL.txt und erstellt ein Unterverzeichnis build. Der configure Aufruf erfolgt mit einer kleinen Abweichung, die Option --prefix :
../config --prefix=$HOME/versionsnummer/
Also für Version 2.16.2:
../config --prefix=$HOME/2.16.2Dadurch werden alle Dateien in das Unterverzeichnis $Home/versionsnummer installiert und können so für jede Version getrennt gehalten werden.
$HOME ist eine Systemvariable die den Pfad zum Homeverzeichnis enthält. Z. B. Du bist der Nutzer "ich", dann ist $HOME = /home/ich/ und darin wird bei der Installation ein Verzeichnis "Versionsnummer" erstellt.

3.  compilieren
mit
makeDabei wird der Quellcode compiliert.
Was in der Beschreibung (soweit ich mich erinnern kann) nicht steht:
Wenn die Compilation nicht auf Anhieb klappt, sollte nach dem neuen ../configure...usw ein make clear eingefügt werden, dadurch werden alte störende Reste des Vorversuchs entfernt (die sonst Schwierigkeiten machen können - aber nicht müssen).
Danach folgt wie oben
make .

4. installieren
Im letzten Schritt werden die kompilierten Dateien installiert, d. h. in die passenden Verzeichnisse geschrieben mit
sudo make install .
"sudo" ist "superuser do" und dazu muss das Passwort eingegeben werden (es wird abgefragt).

Wenn Allles geklappt hat, liegt jetzt eine vollständige lilypond-Version im Unteverzeichnis versionsnummer (also 2.16.2).
ich@ich-desktop:~$ ls ./2.16.2
bin  lib  share
ich@ich-desktop:~$ ls ./2.16.2/bin
abc2ly      etf2ly    lilypond       lilypond-invoke-editor  midi2ly
convert-ly  lilymidi  lilypond-book  lilysong                musicxml2ly
ich@ich-desktop:~$ ls ./2.16.2/lib
lilypond
ich@ich-desktop:~$ ls ./2.16.2/lshare
ls: cannot access ./2.16.2/lshare: No such file or directory
ich@ich-desktop:~$ ls ./2.16.2/share
emacs  info  lilypond  locale  man
ich@ich-desktop:~$

Eines meiner Ziele war es auch die lilypond Libraries mit getrennt zu halten, die sich ja bei neuen Versionen ändern können - könnte dann ohne Trennung Probleme geben.

5. Shellscript zum Aufrufen
Um diese lilypond-Versionen versionsspezifisch bequem aufrufen zu können erstellen wir uns ein versionsspezifisches, einfaches Shellscript.:
  #!/bin/bash
  exec "$HOME/2.16.2/bin/lilypond" "$1"
Kann man copy/pasten!

Dieses script ruft das versionsspezifische lilypond im Versinsspezifischen Verzeichnis auf und übergibt den Namen der lilypond-Datei die compilieren soll.

Dieses Script speichern wir in ein Verzeichnis, wo es von überall gefunden werden kann, nämlich nach
/home/bin/(falls vorhanden) und benennen es z. B. LP-2.16.2 (lilypond-2.16.2 würde wohl auch funktionieren, aber wozu so viel schreiben?).
Alternativer Speicherort ist
/usr/local/bin/Es gibt bei Linux eine Besonderheit, nach der neue Scripts nicht ausführbar sind.Das sieht dann so aus:
ich@ich-desktop:~$ ls -l $HOME/bin/LP*
-rw-r--r-- 1 ich ich 58 Jul 23 14:17 /home/bb/bin/LP-2.16.2
es sind 3 Dreiergruppen vorhanden für usr, group und others. Man kann sehen dass dort kein x für "executable" auftaucht. Das muss man ändern, damit das Shellscript aufgerufen und ausgeführt werden kann, es wird also die Berechtigung verändert. Es muss zumindest dem usr (= "ich" im Beispiel bisher) die Ausführung erlaubt werden, r (=read) und w (write) hat er ja schon. Am Einfachsten passiert das mit
ich@ich-desktop:~$ chmod u+x $HOME/bin/LP*
ich@ich-desktop:~$  ls -l $HOME/bin/LP*
-rwxr--r-- 1 ich ich 58 Jul 23 14:17
ich@ich-desktop:~$
chmod steht für "change mode", u steht für usr und +x steht für x hinzufügen.
Fertig! Done!

Danach kann man von beliebigen Verzeichnissen mit LP-2.16.2 die lilypond-Vesion 2.16.2 aufrufen und nutzen. Diese Schritte kann man natürlich für alle anderen Versionen ebenso nachvollziehen, vorausgesetzt es liegt die Quelle vor.

Jetzt wo ich mir das rückblickend überlege, glaube ich man kann auch schon installierte Versionen in ein solches Versionsunterverzeichnis verschieben? Essentiell ist natürlich das versionsspezifische Shellsript.

Ich wollte eine oder mehrere abgetrennte Versionen haben damit ich die neuste Version zusätzlich zum Testen installieren kann. Wenn was schief geht, dann habe ich immer noch die alte Version zum Compilieren sicher. Braucht man das? Beispiel: Es gab ein altes Programm, das unter Version 2.14.2 lief, bei 2.16.2 aber hängen blieb - Neustart erforderlich - und gleich auf 2.17 lauffähig gemacht werden sollte ...

Grüße





« Letzte Änderung: Sonntag, 4. August 2013, 22:35 von bblochl »

harm6

  • Gast
Re: mehrere Versionen installieren und aufrufen
« Antwort #1 am: Mittwoch, 24. Juli 2013, 00:27 »
Zitat von: bblochl
allerdings fehlt der letzte Schritt
sudo make install

Nun, diesen Schritt habe ich absichtlich ausgelassen. Um eine benutzbare LilyPond-Version zu kompilieren reicht
makevollkommen aus.

Für meine Zwecke ist das auch absolut hinreichend.
Ich modifiziere die Interna schon mal etwas heftiger.
Den Weg über 'sudo' beschreiten zu müssen ist dann einfach nur lästig.


Gruß,
  Harm

bblochl

  • Gast
Re: mehrere Versionen installieren und aufrufen
« Antwort #2 am: Mittwoch, 24. Juli 2013, 08:27 »
War kein Vorwurf! An der Stelle ging es außerdem nur um die Compilation mit make und nicht um die Installation.

Wer weiß wie's geht weiß es ohnhin. Für den der's nicht weiß, muss ich den Schritt eben ergänzen.

Grüße
« Letzte Änderung: Mittwoch, 24. Juli 2013, 12:33 von bblochl »

bblochl

  • Gast
Re: mehrere Versionen installieren und aufrufen
« Antwort #3 am: Samstag, 27. Juli 2013, 17:14 »
Mit dem Problem  "mehrere Versionen ... " haben sich schon andere Nutzer beschäftigt.

Ich stieß eher zufällig unter "Frescobaldi 2 installieren"  darauf:
[url]https://archiv.lilypondforum.de/index.php?topic=1131.msg6224#msg6224[url]
Das Thema Frescobaldi läßt natürlich nicht darauf schließen, dass es hier um die lilypond-Installation geht. Ich wusste bisher nicht, dass --prefix auch für die Installation mit der Shell funktioniert! Das erleichtert ja sehr  Vieles!

Eines allerdings stimmt in dem blog nicht:
Mit synaptic werden keine Quellen installiert oder aus der Quelle installiert, sondern auch nur Binaries.

Grüße