Giriş
Bu yazıda bir önceki bölümde anlatılanların devamı olarak sistemden bağımsız hale getirdiğimiz uygulamamızı nasıl appimage haline getireceğimiz anlatılacaktır.
Yazımızın 1. bölümüne bu adresten ulaşabilirsiniz.
İlk olarak Appimage dosyasını çözme ve paketleme ardından appimage dosyasının iç yapısı üzerinde durulacaktır.
Appimage dosyalarının çözülmesi
Herhangi bir appimage dosyasına –appimage-extract parametresi eklendiğinde appimage dosyası çözülür.
Appimage paketleme
Appimage dosyaları appimagekit kullanılarak paketlenir. Appimagekit aşağıdaki gibi kullanılır.
ARCH=x86_64 appimagetool-x86_64.AppImage /home/user/appimage-proje
Appimage dosyamız proje dizinimizin bir üst dizininde oluşturulur.
Paketleme dizini oluşturma
Öncelikle paketleme dizini oluşturmamız gerekiyor. Appimage dosyalarında temel 3 dosyaya ihtiyaç vardır. Bunlar AppRun dosyası, uygulama başlatıcısı ve uygulama simgesidir.
$ ls appimage-test test.desktop test.png AppRun ... test.bin libs/ ld-linux-x86-64.so.2 ...
Bir önceki bölümde sistemden bağımsız hale getirdiğimiz uygulamamızı yukarıdaki örnekteki gibi yerleştirmemiz gerekmektedir. Burada .desktop uzantılı dosyamızı yakından inceleyelim.
[Desktop Entry] Name=Test uygulama Exec=test.bin Icon=test Type=Application Categories=Utility;
Burada Name uygulamamızın ismini, Exec çalıştırılacak dosyanın adını, Icon uygulama simgesi adını belirtir.
- Not: Icon bölümünde belirtilen isimle aynı isime sahip uygulama simgesi bulunması gerekmektedir.
AppRun dosyası
AppRun dosyası appimage çalıştırıldığında çalıştırılacak olan dosyadır. Bu dosyada uygulamamızı çalıştırmak için gereken komutlar tanımlanır.
#!/bin/bash echo "Merhaba Dünya"
Yukarıda ekrana yazı yazan basit bir komut kullandık. Burada dikkat edilmesi gereken noktalar şunlardır.
- Appimage bütün sistemlerde çalışması için tasarlandığı için /bin/sh yerine /bin/bash tercih edilir.
- Paketlenmiş bir appimage dosyası salt okur olarak bağlanarak çalıştırılır.
- AppRun dosyasarı çalıştırılabilir dosya olmalıdır. Betik olmasına gerek yoktur. Eğer ikili dosya kullanılacaksa static oarak derlenmelidir.
AppRun dosyamızın içerisinde bir önceki bölümdeki gibi uygulamamızı çalıştıralım. İlk olarak mevcut bulunduğumuz yeri tespit etmemiz gerekmektedir. Bunun için readlink komutundan faydalanabiliriz.
#!/bin/bash export SELF=$(readlink -f "$0") export HERE=${SELF%/*} "${HERE}"/ld-linux-x86-64.so.2 --library-path "${HERE}"/libs/ "${HERE}"/test.bin
Bukarıdaki örnekte appimage bağlanan dizini HERE çevresel değişkeni olarak tanımlayıp onu kullanarak uygulamamızı başlattık.
Çevresel değişkenler
Yazının devamında uygulamamızın düzgün çalışması için gereken tanımlamalar üzerinde durulacaktır.
AppRun dosyamızda glib şemaları için aşağıdaki gibi çevresel değişken tanımı yapılır. Ardından glib şemamız derlenir.
# AppRun dosyamıza aşağıdaki ekleme yapılır. export GSETTINGS_SCHEMA_DIR="${HERE}"/glib-schemas # glib şemamız aşağıdaki gibi derlenir. glib-compile-schemas proje-dizini/glib-schemas
Qt plugin dizini QT_PLUGIN_PATH değişkeni ile belirtilir.
export QT_PLUGIN_PATH="${HERE}"/qt5/plugins
Uygulamanın normalde /usr/share dizininde yer alması gereken dosyalarının konumunu XDG_DATA_DIRS değişkeni ile tanımlamamız gerekebilir.
export XDG_DATA_DIRS="${HERE}"/share
Python modülü dizini PYTHONPATH ile tanımlanır.
export PYTHONPATH="${HERE}/python-shared"
Perl kütüphanesi dizinleri PERLLIB ile tanımlanır.
export PERLLIB="${HERE}/perl-libs"