ubuntuusers.de

Wie erstellt man ein Appimage Paket?

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11229

Wohnort: München

ubinde schrieb:

seahawk, wenn du noch dabei bist. Können wir das ganze anders angehen? Statt du schreibt was zu machen ist. Schreibe ich was ich plane. Und du kannst dann kommentieren. Wenn wie ich es machen möchte umständlicher ist, bevorzuge ich das.

Ich habe

sudo apt install cmake ninja-build valac gettext libgee-0.8-dev libsqlite3-dev libgtk-3-dev libgpgme-dev libsoup2.4-dev libgcrypt20-dev libqrencode-dev libgspell-1-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libwebrtc-audio-processing-dev libsrtp2-dev libnice-dev glib-networking gstreamer1.0-plugins-good gstreamer1.0-gtk3 libsignal-protocol-c-dev

durchgeführt.

Ich habe downloadet linuxdeploy-x86_64.AppImage und marked allow execute file as program.

Soweit so gut.

Ich habe downloadet dino-master.zip und extracted. Umbenannt in dino und in home folder platziert.

Wozu?

Dann habe ich in home folder einen folder namens dino.AppDir kreiert. In dem den folder usr kreiert. In dem den folder bin kreiert.

Was soll das bringen? Beim make install werden die Ordner unter berücksichtigung des DESTDIR doch eh angelegt.

Kann ich im dino.AppDir einen 256 x 256 dino.png icon platzieren?

Können tust du schon, bringen wird dir das nichts, weil das die Validierung nicht übersteht.

Stat ein build folder zu benutzen, kann man dann einen bin folder benutzen? Das heisst dino.AppDir/usr/bin.

Nicht ohne dich mit cmake anzulegen - und es muss ja wesentlich mehr als die fertigen Binaries ins Appimage.

Soll ich jetzt den Inhalt vom dino folder in folder dino.AppDir/usr/bin kopieren? Dann cd in dino.AppDir/usr/bin? Dann command line make

Es geht darum, das ich beim jeder Schritt weniger machen möchte. Dafür mehrere Schritte.

Ich hatte das eigentlich schon auf die kleinste Zahl von Schritten eingedampft - wenn du dir ohnehin den aktuellen Stand aus dem master-Zweig holst, sparst du dir auch den Schritt mit dem Herumpatchen bei den Metadaten der Screenshots - der ganze Vorgang ist vollständig skriptbar - unter der Annahme, dass die Pakete für die Abhängigkeiten schon installiert sind, sind das dann diese Schritte:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/bash
# this is the directory where the newly created AppImage should reside
TARGET_DIR=~/bin
# create the target directory if it does not exist yet
mkdir -p "$TARGET_DIR"

# create a temporary directory to build dino
WORK_DIR=$(mktemp -d)
# remove the temporary directory when the script exits
trap "rm -r \"$WORK_DIR\"" EXIT

# enter the temporary directory
cd "$WORK_DIR"

# download linuxdeploy appimage
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage -O linuxdeploy-x86_64.AppImage
# make the linuxdeploy appimage executable
chmod +x linuxdeploy-x86_64.AppImage

# download source code
wget https://github.com/dino/dino/archive/refs/heads/master.tar.gz
# extract source code
tar xzfv master.tar.gz

# enter source directory 
cd dino-master
# configure the buildsystem - we want to override the "/usr/local" prefix with "/usr"
./configure --prefix="/usr"
# compile the program
make
# install the program to a folder in the build-directory
make DESTDIR=Dino.AppDir install

# enter build directory
cd build
LD_LIBRARY_PATH=Dino.AppDir/usr/lib/ ../../linuxdeploy-x86_64.AppImage --appdir Dino.AppDir/ --output appimage

# copy the created AppImage to the TARGET_DIR
cp  Dino-x86_64.AppImage "$TARGET_DIR"

ubinde

(Themenstarter)

Anmeldungsdatum:
10. September 2010

Beiträge: 173

./configure --prefix="/usr" returns ein paar Fehler. No ALPN support, needs GIO >= 2.60. Gio ist das glib? Weil auf mein debian 10 main ist glib-networking version 2.58. glib-networking-common und glib-networing-services sind auch 2.58. Zweiter Fehler: Could NOT find SignalProtocol: Found unsuitable version "2.3.1", but required is at least "2.3.2". Es ist libsignal-protocol-c 2.3.1 das installiert ist. Ich habe nicht versucht glib Pakete 2.60 oder libsignal-protocol-c 2.3.2 zu installieren. Weil ich nicht weiss ob es debian durcheinander bringt. Kann man glib Pakete 2.60 und libsignal-protocol-c 2.3.2 mit compilieren ohne die Pakete erst auf debian installieren? Wenn ja, wie geht das?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11229

Wohnort: München

Man kann nicht ewig auf old stable releases herumsitzen, wenn man aktuelle Software bauen will - Debian 11 ist doch schon seit fast einem Jahr draußen und wie es aussieht aktuell genug - warum nutzt du das nicht, um das AppImage zu erstellen?

ubinde

(Themenstarter)

Anmeldungsdatum:
10. September 2010

Beiträge: 173

warum nutzt du das nicht

Wenn ich auf ein neuerer Version umsteige, mache ich keinen upgrade. Ich installiere neu. Bez Version 11 bin ich dazu nicht gekommen. Dann gibt es dieser Hinweis. https://docs.appimage.org/reference/best-practices.html?highlight=practice#binaries-compiled-on-old-enough-base-system Ich lese es so, wird ein appimage auf debian 11 compiliert, kann man nicht sicher sein, das das appimage auch auf debian 10 läuft. Umgekehrt ein appimage auf debian 10 compiliert sollte auf debian 11 laufen können. Weil debian 10 noch mehrere Jahre supported ist, würde ich es als mangelhaft bezeichnen wenn ein appimage nicht auf debian 10 laufen kann.

ubinde

(Themenstarter)

Anmeldungsdatum:
10. September 2010

Beiträge: 173

Auf ein debian 11 computer hat commands bis zu dieser command funktioniert:

LD_LIBRARY_PATH=Dino.AppDir/usr/lib/ linuxdeploy-x86_64.AppImage --appdir Dino.AppDir/ --output appimage

Dieser command returns

bash: linuxdeploy-x86_64.AppImage: command not found

in welcher folder soll man das appimage linuxdeploy-x86_64.AppImage platzieren? Ich frage weil ich nicht command

wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage -O ~/bin/linuxdeploy-x86_64.AppImage

durchgeführt habe. Sondern linuxdeploy-x86_64.AppImage in home folder downloaded. Und dann file mit allow executing file as program markiert.

Soll appimage linuxdeploy-x86_64.AppImage in einer bestimmte folder? Soll man linuxdeploy-x86_64.AppImage anders als mit double click starten?

schragge

Anmeldungsdatum:
27. Januar 2022

Beiträge: 181

ubinde schrieb:

LD_LIBRARY_PATH=Dino.AppDir/usr/lib/ linuxdeploy-x86_64.AppImage --appdir Dino.AppDir/ --output appimage

Dieser command returns

bash: linuxdeploy-x86_64.AppImage: command not found

Du hast den Pfad vergessen

../../linuxdeploy-x86_64.AppImage

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11229

Wohnort: München

ubinde schrieb:

in welcher folder soll man das appimage linuxdeploy-x86_64.AppImage platzieren? Ich frage weil ich nicht command

wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage -O ~/bin/linuxdeploy-x86_64.AppImage

durchgeführt habe. Sondern linuxdeploy-x86_64.AppImage in home folder downloaded. Und dann file mit allow executing file as program markiert.

Dann gib den Pfad zu dem Ort an, wo linuxdeploy-x86_64.AppImage zu finden ist - also z.B. falls das direkt in deinem Home-Verzeichnis liegt:

LD_LIBRARY_PATH=Dino.AppDir/usr/lib/ ~/linuxdeploy-x86_64.AppImage --appdir Dino.AppDir/ --output appimage 

Das Abweichen von Anleitungen klappt am besten, wenn man sich die Mühe gemacht hat zu verstehen, was da passiert - im Zweifelsfall muss man dann halt kleinschrittig vorgehen und erst mal die Shell-Syntax klären und sich dann über die Argumente und Umgebungsvariablen informieren.

ubinde

(Themenstarter)

Anmeldungsdatum:
10. September 2010

Beiträge: 173

Danke für das dran bleiben. Es hat funktioniert. Es scheint etwas am https://docs.appimage.org/reference/best-practices.html?highlight=practice#binaries-compiled-on-old-enough-base-system zu sein. Dino appimage läuft auf debian 11. Nicht auf debian 10.

Kannst du dieser command erläutern?

LD_LIBRARY_PATH=Dino.AppDir/usr/lib/ ~/linuxdeploy-x86_64.AppImage --appdir Dino.AppDir/ --output appimage

Wieso ist lib folder mit dabei?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11229

Wohnort: München

ubinde schrieb:

Kannst du dieser command erläutern?

LD_LIBRARY_PATH=Dino.AppDir/usr/lib/ ~/linuxdeploy-x86_64.AppImage --appdir Dino.AppDir/ --output appimage

Wieso ist lib folder mit dabei?

Weil Dino einige Bibliotheken selbst mitbringt und diese nach dem make install Befehl nicht an dem Ort liegen, wo der von linuxdeploy genutzte dynamische Linker standardmäßig danach suchen würde. Mehr zu LD_LIBRARY_PATH gibt es z.B. in der Manpage zu ld.so

Antworten |