Wildcards in Symlinks

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
linuxlooser
Beiträge: 141
Registriert: 27.12.2012 17:17:37
Wohnort: Karlsruhe

Wildcards in Symlinks

Beitrag von linuxlooser » 03.01.2024 13:21:44

Hallo zusammen,
zunächst wünsche ich Euch alles Gute für 2024 :)

Zur Frage: ich habe hier Appimages von nightly builds eines SW-Projektes. Diese möchte ich ganz normal über den Desktop (Startmenü oder Starter auf dem Desktop starten. Bis dahin kein Problem.
Aber: jede neue Version hat natürlich einen anderen komplizierten Namen, der sieht dann so aus:

Code: Alles auswählen

anwendung-7.4.0+98.gbce83d51a9-x86_64.AppImage 
- stecken halt die Commits etc. mit drin.

Nun dachte ich mir, mittels eines Symlinks

Code: Alles auswählen

ln -sT anwendung* anwendung.AppImage
einen "abstrahierten" Starteintrag generieren zu können (damit ich nicht den Starter jedesmal umbauen muß, wenn ich ein aktuelles Appimage herunterlade).
Das funktioniert auch soweit - direkt nach dem Einrichten.

ABER: wenn ich ein "Update" durchführe, indem ich die aktuelle Appimage-Datei lösche und stattdessen eine neue dorthin herunterlade (und natürlich ausführbar mache), dann startet das Programm nicht.
Wenn ich mir dann den Symlink selbst anschaue, dann steckt dort der vollständige alte Dateiname drin als Ziel - aber diese Datei gibt es natürlich nicht mehr.

Gibt es da eine Möglichkeit, mein Ziel irgendwie zu erreichen?
Grüße
LL

Benutzeravatar
hikaru
Moderator
Beiträge: 13594
Registriert: 09.04.2008 12:48:59

Re: Wildcards in Symlinks

Beitrag von hikaru » 03.01.2024 13:32:24

Die Wildcard wird bereits zum Zeitpunkt der Erstellung des Symlinks expandiert. Daher wird nach einem Update die neue Datei (mit neuem Namen) nicht gefunden.
Was du erreichen musst ist, die Bildung des Namens erst zum Zeitpunkt des Aufrufs durchzuführen. Das geht mit Symlinks nicht, mit einem Wrapperscript hingegen schon.

Benutzeravatar
linuxlooser
Beiträge: 141
Registriert: 27.12.2012 17:17:37
Wohnort: Karlsruhe

Re: Wildcards in Symlinks

Beitrag von linuxlooser » 03.01.2024 13:44:05

Das hatte ich befürchtet - danke.
Aber jetzt weiß ich auch sicher, daß ich mit den Symlinks auf'm Holzweg war :hail:

Muß mir mal https://appimage.github.io/AppImageUpdate/ angucken - vielleicht hilft mir das für meine spezielle Fallgestaltung weiter ...
Grüße
LL

Huo
Beiträge: 614
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Wildcards in Symlinks

Beitrag von Huo » 03.01.2024 13:52:41

Du kannst in der Exec-Zeile der .desktop-Datei eine Wildcard (*) verwenden, wenn du den Aufruf als Shell-Anweisung ausführst:

Code: Alles auswählen

Exec sh -c "/pfad/anwendung-*.AppImage"

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wildcards in Symlinks

Beitrag von Meillo » 03.01.2024 14:16:06

Ein ueblicher Weg ist, zum Installations-/Upgrade-Zeitpunkt den Symlink zu ersetzen.

So macht man es z.B. wenn man einen `latest'-Link anbieten will, der auf die zum jeweiligen Zeitpunkt letzte Version verweist: Bei der Installation einer neuen Version loescht man den alten Link und legt ihn neu an.


Den Vorschlag von Huo finde ich auch gut, allerdings sehe ich dabei schon Schwierigkeiten am Horizont, wenn man nicht nur die Trivialsetups hat, die die Entwickler vor Augen haben, sondern auch mal zwei verschiedene Versionen parallel installieren will. Ich finde, bei der Softwareentwicklung sollte man sich davor hueten, zu viele Annahmen ueber die Nutzungsszenarien zu treffen. Das schraenkt sonst oft ein, da die Anwender zumeist (zurecht!) kreativer sind als die Entwickler sich vorstellen konnten. (In diesem aktuellen Fall ist das ja nur eine Kleinigkeit, und ein versierter Anwender kann sich einfach seinen eigenen Starter schreiben; ich meine diese Anmerkung eher generell, was aber so simple Faelle auch umfasst.)
Use ed once in a while!

Benutzeravatar
linuxlooser
Beiträge: 141
Registriert: 27.12.2012 17:17:37
Wohnort: Karlsruhe

Re: Wildcards in Symlinks

Beitrag von linuxlooser » 03.01.2024 16:02:04

Huo hat geschrieben: ↑ zum Beitrag ↑
03.01.2024 13:52:41
Du kannst in der Exec-Zeile der .desktop-Datei eine Wildcard (*) verwenden, wenn du den Aufruf als Shell-Anweisung ausführst:

Code: Alles auswählen

Exec sh -c "/pfad/anwendung-*.AppImage"
Danke, super - so funzt das:

Code: Alles auswählen

[Desktop Entry]
Name=anwendung AppImage
Exec=sh -c "/home/{benutzername}/bin/appimage/anwendung-*.AppImage --configdir '~/.config/anwendung-master'  --cachedir '~/.cache/anwendung-master'"
Comment=Entwicklerversion von anwendung
Terminal=false
Icon=/home/{benutzername}/Vorlagen/anwendung/anwendung_logo_128x128.png
Type=Application
Ich hoffe, mit den Hochkommas keinen zu großen Bock geschossen zu haben in den Ausführungsparametern ...
Grüße
LL

Benutzeravatar
linuxlooser
Beiträge: 141
Registriert: 27.12.2012 17:17:37
Wohnort: Karlsruhe

Re: Wildcards in Symlinks

Beitrag von linuxlooser » 03.01.2024 16:06:46

Meillo hat geschrieben: ↑ zum Beitrag ↑
03.01.2024 14:16:06
Ein ueblicher Weg ist, zum Installations-/Upgrade-Zeitpunkt den Symlink zu ersetzen.
Genau diesen Schritt wollte ich vermeiden - bin faul :lol:
Meillo hat geschrieben: ↑ zum Beitrag ↑
03.01.2024 14:16:06
sondern auch mal zwei verschiedene Versionen parallel installieren will.
Genau das mache ich - das AppImage ist die zweite Version (die erste ist aus dem normalen Repo). Aber klar, noch 'n weiteres Appimage z. B. geht so natürlich nicht.
Und dafür brauche ich auch die Parameter --configdir und --cachedir, um da nix zu zerschießen.

Danke Euch für die Hilfe.
Grüße
LL

Antworten