Packaging Linux
Format Package
Section titled “Format Package”Package aplikasi Anda untuk distribusi Linux:
wails3 package GOOS=linuxIni membuat beberapa format di direktori bin/:
- AppImage: Portable, berjalan di distribusi Linux mana pun
- DEB: Untuk Debian, Ubuntu, dan turunannya
- RPM: Untuk Fedora, RHEL, dan turunannya
- Arch: Untuk Arch Linux dan turunannya
Format Individual
Section titled “Format Individual”Build format tertentu:
wails3 task linux:create:appimagewails3 task linux:create:debwails3 task linux:create:rpmwails3 task linux:create:aurKustomisasi Package
Section titled “Kustomisasi Package”Desktop Entry
Section titled “Desktop Entry”File .desktop mengontrol bagaimana aplikasi Anda muncul di menu aplikasi. Dihasilkan dari nilai di build/linux/Taskfile.yml:
vars: APP_NAME: 'MyApp' EXEC: 'MyApp' ICON: 'MyApp' CATEGORIES: 'Development;'Metadata Package
Section titled “Metadata Package”Edit build/linux/nfpm/nfpm.yaml untuk menyesuaikan package DEB dan RPM:
name: myappversion: 1.0.0description: My awesome Wails applicationhomepage: https://example.comlicense: MITAppImage
Section titled “AppImage”Konfigurasi AppImage ada di build/linux/appimage/. Ikon aplikasi berasal dari build/appicon.png.
Menandatangani Package
Section titled “Menandatangani Package”Tandatangani package DEB dan RPM dengan kunci PGP:
# Using the wrapper (auto-detects platform)wails3 sign GOOS=linux
# Or using tasks directlywails3 task linux:sign:debwails3 task linux:sign:rpmwails3 task linux:sign:packages # BothKonfigurasi signing di build/linux/Taskfile.yml:
vars: PGP_KEY: "path/to/signing-key.asc" SIGN_ROLE: "builder" # origin, maint, archive, or builderSimpan password kunci Anda:
wails3 setup signingLihat Menandatangani Aplikasi untuk detail.
Build untuk ARM
Section titled “Build untuk ARM”wails3 build GOOS=linux GOARCH=arm64wails3 package GOOS=linux GOARCH=arm64Dukungan Legacy GTK3
Section titled “Dukungan Legacy GTK3”Wails v3 build pada GTK4 dengan WebKitGTK 6.0 secara default. Path legacy GTK3 / WebKit2GTK 4.1 masih tersedia untuk distribusi yang belum menyediakan WebKitGTK 6.0 (Ubuntu 22.04 LTS, Debian 12, Fedora ≤ 39, RHEL 9.x). Path legacy opt-in via build tag dan dijadwalkan dihapus di v3.1.
Dependensi
Section titled “Dependensi”Instal library development GTK3 dan WebKit2GTK 4.1:
# Ubuntu/Debiansudo apt install libgtk-3-dev libwebkit2gtk-4.1-dev
# Fedorasudo dnf install gtk3-devel webkit2gtk4.1-devel
# Archsudo pacman -S gtk3 webkit2gtk-4.1Paket pkg-config yang diperlukan adalah gtk+-3.0 dan webkit2gtk-4.1.
Build dengan GTK3
Section titled “Build dengan GTK3”Gunakan flag -tags gtk3:
wails3 build -tags gtk3Atau langsung dengan Go:
go build -tags gtk3 -o myapp .Perbedaan Diketahui dari GTK4
Section titled “Perbedaan Diketahui dari GTK4”- Dialog file: GTK4 menggunakan
xdg-desktop-portaluntuk dialog file (default), sehingga beberapa opsi dialog (seperti direktori default, tampilan filter kustom) berperilaku berbeda dari GTK3. Lihat Referensi Dialog - Perilaku Dialog Linux untuk detail. - Gaya menu: GTK4 mendukung opsi
LinuxMenuStylePrimaryMenuyang menampilkan tombol hamburger (☰) di header bar, mengikuti GNOME HIG. Opsi ini tidak berpengaruh pada build-tags gtk3. Lihat API Window - Linux MenuStyle. - Scaling DPI: GTK4 menggunakan
gdk_monitor_get_scale(GTK 4.14+) untuk dukungan fractional scaling.
Memeriksa Build Anda
Section titled “Memeriksa Build Anda”Jalankan wails3 doctor untuk memverifikasi setup. Tanpa flag, ini memeriksa GTK4 / WebKitGTK 6.0 (default). Paket legacy GTK3 / WebKit2GTK 4.1 tercantum sebagai opsional.
Troubleshooting
Section titled “Troubleshooting”AppImage tidak berjalan
Section titled “AppImage tidak berjalan”Buat executable:
chmod +x MyApp-x86_64.AppImageDependensi hilang
Section titled “Dependensi hilang”Jika aplikasi gagal start, periksa dependensi WebKit yang hilang:
# Debian/Ubuntusudo apt install libwebkit2gtk-4.1-0
# Fedorasudo dnf install webkit2gtk4.1
# Archsudo pacman -S webkit2gtk-4.1C compiler tidak ditemukan
Section titled “C compiler tidak ditemukan”Sistem build memerlukan GCC atau Clang untuk CGO:
# Debian/Ubuntusudo apt install build-essential
# Fedorasudo dnf install gcc
# Archsudo pacman -S base-develAlternatifnya, jalankan wails3 task setup:docker dan sistem build akan menggunakan Docker otomatis.
Window kosong atau putih di GPU NVIDIA
Section titled “Window kosong atau putih di GPU NVIDIA”Di Linux dengan driver proprietary NVIDIA, aplikasi Wails dapat menampilkan window kosong atau putih saat startup. Ini disebabkan bug WebKitGTK di mana renderer DMA-BUF gagal dengan gbm_bo_map() terhadap driver proprietary NVIDIA (memengaruhi X11 dan Wayland, versi driver 377–580+, GPU dari seri 10 dan GT 710 yang lebih lama).
Wails menerapkan WEBKIT_DISABLE_DMABUF_RENDERER=1 otomatis saat mendeteksi modul kernel NVIDIA (/sys/module/nvidia), sehingga sebagian besar pengguna tidak perlu melakukan apa pun.
Jika Anda masih melihat window kosong (misalnya di container di mana path modul tidak terlihat), set variabel environment secara manual sebelum meluncurkan aplikasi:
WEBKIT_DISABLE_DMABUF_RENDERER=1 ./myappBug upstream terkait: WebKit #262607, WebKit #180739.
Kompatibilitas strip AppImage
Section titled “Kompatibilitas strip AppImage”Di distribusi Linux modern (Arch Linux, Fedora 39+, Ubuntu 24.04+), library sistem dikompilasi dengan section ELF .relr.dyn untuk relocasi lebih efisien. Alat linuxdeploy yang digunakan membuat AppImage membundel binary strip lama yang tidak dapat memproses section modern ini.
Wails mendeteksi situasi ini otomatis dengan memeriksa library GTK sistem sebelum build AppImage. Saat terdeteksi, stripping dinonaktifkan (NO_STRIP=1) untuk memastikan kompatibilitas.
Artinya:
- AppImage akan sedikit lebih besar (~20-40%) di sistem yang terpengaruh
- Fungsionalitas aplikasi tidak terpengaruh
- Ditangani otomatis — tidak perlu tindakan
Jika Anda memerlukan AppImage lebih kecil di sistem modern, instal binary strip yang lebih baru dan konfigurasi linuxdeploy untuk menggunakannya.