Archlinux: Vytvářejte balíčky pro různé platformy a z balíčků .deb

Asi před rokem jsem vysvětlil, jak vytvářet balíčky pro Archlinux. Dnes vám vysvětlím, jak je vytvořit z balíčků deb, které se používají v Debian / Mint / Ubuntu / atd.
Tento článek vznikl po přečtení otázky od uživatele ve fóru jorgegc protože jsem nemohl nainstalovat balíček z AUR, hlavně proto, že je zastaralý a používal verzi ukončeno z PKGBUILD (naštěstí jsem dříve vytvořil balíčky tímto způsobem), vysvětlím také, jak vytvořit balíčky programů, které potřebují 32bitové knihovny, z uzavřený kód o již sestaveno a že má různé balíčky ke stažení.

Základ pro PKGBUILD je stejný, pouze s několika změnami.
První změnou bude použití věty pokud elif podle Bash


if [ "${CARCH}" = 'x86_64' ]; then
ARCH='amd64'
md5sums=('192a0a222893d59d95f00c34f3c8a674')
depends=('openal' 'lib32-openal')
elif [ "${CARCH}" = 'i686' ]; then
ARCH='i386'
md5sums=('047c670443124193c5cc3dd54da99925')
depends=('openal')
fi
source=("http://www.unaurl.com/files/${name}.$ARCH.deb")

V tomto příkladu byla definována proměnná, která bude později použita ke změně URL kde je balíček (v tomto případě architektura balíčku ke stažení).
Kromě toho, v závislosti na architektuře, Součty MD5 takže je změníme na odpovídající.

Při použití makepkg -g ke generování MD5 součty Tím se vygeneruje pouze ten, který odpovídá architektuře, kterou používáte. Chcete-li znát součet MD5 druhého balíčku, stáhněte si jej a použijte příkaz md5sum file.deb vědět své

Nakonec vidíme, že v příkladu změníme závislosti. V některých 64bitových programech je nutná instalace 32bitové verze některých knihoven takže je musíme označit. Pokud nejsou nutné, jednoduše proměnnou definujte obvyklým způsobem.

Nyní pro balíčky .deb budeme potřebovat pouze následující řádky uvnitř funkce balíček ():

cd "${srcdir}/"
tar xvzf data.tar.gz -C .
cp -r usr ${pkgdir}

Jak vidíte, v tomto případě potřebujeme ke generování balíčku pouze 3 řádky. Pokud je nutné něco jiného (například zkopírovat soubor, který není součástí balíčku, nebo upravit obsah jednoho), musíte to dát stejně jako u jakéhokoli jiného balíčku.

Totéž může platit (s některými změnami), pokud místo .deb použijeme balíčky min nebo jiné typy balíčků. Funkce stavět () není potřeba, takže jej nemusíme přidávat.

A voila, již máme balíček multilib nebo vytvořený z balíčku deb připraveného k použití.
Doufám, že se vám to líbí a že jsem to dobře vysvětlil 