این راهنما طراحی شده است تا استانداردهای لازم برای بستهبندی تمامی انواع نرمافزارها، ابزارها، فونتها، برنامههای Wine و حتی برنامههای اندرویدی قابل اجرا در Waydroid را در توزیع پارچ لینوکس پوشش دهد. هدف ما ایجاد یکنواختی، پایداری، و کیفیت در بستهها است.
ابزارهای ضروری:
base-devel
: شامل ابزارهایی مانند gcc
, make
, patch
.git
: برای دریافت سورسها از مخازن.waydroid
(برای تست برنامههای اندرویدی، در صورت نیاز).ابزارهای خاص:
wine
و winetricks
.ساختار فایل PKGBUILD:
فایل PKGBUILD باید در بالاترین سطح شامل متغیرهای زیر باشد:
pkgname
)، نسخه (pkgver
)، شماره انتشار (pkgrel
)، معماری (arch
).depends
, makedepends
)، لایسنس، توضیحات، و سورس.فایلها باید طبق استاندارد Filesystem Hierarchy Standard (FHS) در مسیرهای مناسب قرار گیرند:
/usr/bin
/usr/lib
یا /usr/lib64
/usr/share/fonts/<نوع>
/usr/share/<نامبسته>
/etc/<نامبسته>
برای تمامی بستهها، فایل PKGBUILD باید شامل این متغیرها باشد:
pkgname=<نام بسته>
pkgver=<نسخه>
pkgrel=<شماره انتشار>
pkgdesc="<توضیح مختصر بسته>"
arch=('x86_64' 'armv7h' 'aarch64') # یا هر معماری پشتیبانیشده
url="<آدرس پروژه>"
license=('GPL' 'MIT' 'custom')
depends=('فهرست بستههای وابسته')
makedepends=('فهرست ابزارهای لازم برای ساخت')
source=("آدرس سورس کد یا فایل")
sha256sums=('چکسام فایلها')
ttf-fontname
otf-fontname
bdf-fontname
بستهبندی فونت DejaVu:
pkgname=ttf-dejavu
pkgver=2.37
pkgrel=1
arch=('any')
pkgdesc="فونتهای DejaVu با پشتیبانی گسترده."
license=('custom:Bitstream Vera')
source=("https://sourceforge.net/projects/dejavu/files/dejavu/${pkgver}/dejavu-fonts-ttf-${pkgver}.tar.bz2")
sha256sums=('fa9ca4efc0e2907e723aad11dc8f71c1f7b79be15f4f9b2c1214eeeaefa0f4dd')
package() {
cd "${srcdir}/dejavu-fonts-ttf-${pkgver}"
install -dm755 "${pkgdir}/usr/share/fonts/ttf-dejavu"
install -m644 ttf/*.ttf "${pkgdir}/usr/share/fonts/ttf-dejavu/"
}
fc-cache
در دسترس هستند:post_install() {
fc-cache -f
}
<نام-بسته>-wine
نامگذاری شوند.
notepad-wine
, winrar-wine
.wine
, winetricks
، و وابستگیهای خاص خود نیاز دارند./opt/<نام-بسته>
قرار گیرند./etc/<نام-بسته>
ذخیره شوند.فرض کنیم میخواهید بسته Notepad++ را در Wine بستهبندی کنید:
pkgname=notepadplusplus-wine
pkgver=8.5
pkgrel=1
arch=('x86_64')
pkgdesc="ویرایشگر متن Notepad++ برای اجرا تحت Wine"
license=('GPL')
depends=('wine' 'winetricks')
source=("https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v${pkgver}/npp.${pkgver}.Installer.exe")
sha256sums=('d7e62d70d5d1dc0c4e31e9da57edb937d8a6e3c5457e405fc41d1e1dbb2b34cf')
package() {
install -Dm755 "$srcdir/npp.${pkgver}.Installer.exe" "$pkgdir/usr/share/notepadplusplus/installer.exe"
echo '#!/bin/bash' > "$pkgdir/usr/bin/notepadplusplus"
echo 'wine /usr/share/notepadplusplus/installer.exe' >> "$pkgdir/usr/bin/notepadplusplus"
chmod +x "$pkgdir/usr/bin/notepadplusplus"
}
<نام-برنامه>-waydroid
نامگذاری شوند.
whatsapp-waydroid
, vlc-waydroid
.waydroid
نیاز دارند.فرض کنیم میخواهید برنامه WhatsApp را بستهبندی کنید:
pkgname=whatsapp-waydroid
pkgver=2.23.12.76
pkgrel=1
arch=('any')
pkgdesc="WhatsApp Messenger برای اجرا تحت Waydroid"
license=('custom')
depends=('waydroid')
source=("https://www.whatsapp.com/android/current/WhatsApp-${pkgver}.apk")
sha256sums=('4a5d8a6f2c54b6f6fa7e652ff8a5eb37c68a1299f65863b0af8b5d3ef4e3c91b')
package() {
install -Dm644 "$srcdir/WhatsApp-${pkgver}.apk" "$pkgdir/usr/share/waydroid/apps/WhatsApp-${pkgver}.apk"
}
برای نصب خودکار برنامه، میتوانید اسکریپتی اضافه کنید:
post_install() {
waydroid app install /usr/share/waydroid/apps/WhatsApp-${pkgver}.apk
}
wine
, fontconfig
, waydroid
).gcc
, cmake
).تست با namcap
:
namcap PKGBUILD
namcap <نام-بسته>.pkg.tar.zst
تست اجرا روی Waydroid یا Wine:
waydroid app install <نام-فایل-APK>
waydroid app launch <نام-برنامه>
wine /opt/<نام-برنامه>/<فایل-اجرایی>