Archlinux: Створення міжплатформенних пакетів та пакетів .deb

Близько року тому я пояснив, як створювати пакунки для Archlinux - -. Ну, сьогодні я збираюся пояснити, як їх створювати з пакетів дебютантка, що використовуються в Debian / Mint / Ubuntu / тощо.
Ця стаття виникла після прочитання запитання користувача на форумі jorgegc тому що я не міг встановити пакет з AUR, головним чином тому, що він застарів і використовує версію припинено PKGBUILD (на щастя, я вже робив пакунки таким чином), я також пояснити, як зробити пакети програм, які потребують 32-розрядні бібліотеки, з закритий код o вже складено і що у нього є різні пакети для завантаження.

Основа PKGBUILD однакова, лише з невеликими змінами.
Першою зміною буде використання речення якщо elif від Баша


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")

У цьому прикладі було визначено змінну, яка згодом буде використана для зміни URL де знаходиться пакет (у цьому випадку архітектура пакету для завантаження).
Крім того, залежно від архітектури, Суми MD5 тому ми змінимо їх на відповідні.

При використанні makepkg -g для генерації MD5суми Це створить лише ту, що відповідає архітектурі, яку ви використовуєте. Щоб дізнатися суму MD5 іншого пакета, завантажте його та скористайтеся командою md5sum file.deb щоб знати своє

Нарешті ми бачимо, що в прикладі ми змінюємо залежності. У деякі 64-розрядні програми необхідно встановлювати 32-розрядні версії деяких бібліотек тому ми повинні їх вказати. Якщо вони не потрібні, просто визначте змінну звичайним способом.

Тепер для пакетів .deb нам знадобляться лише такі рядки всередині функції пакет ():

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

Як бачите, нам потрібно лише 3 рядки для створення пакета. Якщо потрібно щось інше (наприклад, копіювання файлу, який не входить до пакета, або зміна вмісту одного), вам просто потрібно помістити його, як і в будь-який інший пакет.

Те саме може застосовуватися (з деякими змінами), якщо замість .deb ми будемо використовувати пакети оборотів в хвилину або інші типи пакетів. Функція будувати () не потрібен, тому нам не потрібно його додавати.

І вуаля, у нас вже є пакет multilib або створений із пакета deb, готового до використання.
Сподіваюся, вам сподобається, і я добре пояснив 