Предлагаемый далее метод имеет следующие ограничения:
нет разрешения зависимостей, как в арче, их придется устанавливать ручками
нет верификации подписи
Естественно нет гарантии что любой пакет , собранный таким методом, будет работать, но большинство пакетов будет работать вполне нормально.
PKGBUILD официальных репозиториев берутся из abs (Arch Build System) или можно клонировать git
git clone git://projects.archlinux.org/svntogit/pa
PKGBUILD неофициального репозитория aur берутся здесь - aur.archlinux.org/packages.php (тарбалл).
Арч использует для создания пакетов из PKGBUILD утилиту makepkg в составе менеджера пакетов pacman. Сам по себе pacman в слаке не только не нужен, но и крайне вреден, с его помощью можно запросто сломать систему, поэтому создаем пакет только с makepkg из pacman
- скачиваем сорцы pacman - ftp://ftp.archlinux.org/other/pacman/pac
- распаковываем сорцы в любое место и конфигурируем в папке с сорцами
./configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr \
--libdir=/usr/lib \
--localstatedir=/var \
--sysconfdir=/etc \
--mandir=/usr/man
- make
- в файле ../pacman-4.0.3/scripts/makepkg комментируем (# в начале каждой строки) строчки 1042-1045, чтобы makepkg не стирал файлы *.la, необходимые слаке. Должно получится вот так:
# if [[ $(check_option libtool) = "n" ]]; then
# msg2 "$(gettext "Removing "%s" files...")" "libtool"
# find . ! -type d -name "*.la" -exec rm -f -- '{}' \;
# fi
- переименовываем makepkg в makepkg-arch и копируем его в /sbin
- копируем файл ../pacman-4.0.3/etc/makepkg.conf в /etc/makepkg.conf
Переопределяем флаги компиляции в файле /etc/makepkg.conf
приводя их к следующему виду
#-- Compiler and Linker Flags
# -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1 -fPIC"
CXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1 -fPIC"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
#-- Make Flags: change this for DistCC/SMP systems
MAKEFLAGS="-j1"
Флаги могут какие угодно по хотению собственной левой пятки :-)
Скачиваем пакет pacman-mirrorlist - https://www.archlinux.org/packages/c
Для создания и использования abs необходим сам пакет abs. Создаем его следующим образом: копируем PKGBUILD для abs c www.archlinux.org/packages/extra/i686/ab
#!/bin/sh
renice 19 $$ > /dev/null
CWD=$(pwd)
name=$(basename $(pwd))
/sbin/makepkg-arch --asroot || exit 1
cd pkg
mkdir install
sed -n -e '/post_install() {[[:space:]]*$/,/^[[:space:]]*}[[:space:
namepkg=$(sed -n '/pkgname=/p' $CWD/PKGBUILD | sed 's/pkgname=//') > /dev/null
version=$(sed -n '/pkgver=/p' $CWD/PKGBUILD | sed 's/pkgver=//') > /dev/null
rm -rf .INSTALL > /dev/null
rm -rf .PKGINFO > /dev/null
/sbin/makepkg -l y -c n $CWD/$namepkg-$version-archlinux.txz
sed -n -e '/post_install() и далее в одной строке
В файле /etc/abs.conf можно переопределить место сохранения дерева abs в строке
[ "$ABSROOT" = "" ] && ABSROOT="/ваш_путь_к_дереву_abs/"
Создаем дерево официальных репозиториев — abs в терминале. Обновляется дерево abs такой же командой — abs.
Далее просто переходим в папку с нужным PKGBUILD и запускаем в ней указанный выше скрипт, на выходе получаем пакет слаки. Если у пакета есть какие то зависимости, то они указаны и в вебморде и в секциях depends, makedepends, optdepends PKGBUILD. Depends жесткие зависимости, которые обязательно должны быть, makedepends нужны только для создания пакета и после его создания могут быть удалены, optdepends для каких то дополнительных и необязательных возможностей. Как и было сказано, все зависимости придется устанавливать ручками.
Арч декларирует наличие самых новых версий прог, но это далеко не всегда так, особенно в aur. Поэтому если хочется самые последние версии прог, надо зайти на сайт проги, и если есть новая версия, скачать ее сорцы в папку со PKGBUILD и в нем поправить pkgver и md5sums (sha256sums) для архива сорцов.
Поиск PKGBUILD выполняется через вебморды, для официальных репозиториев здесь — www.archlinux.org/packages, для aur здесь — aur.archlinux.org/packages. Поиск возможен как по названию пакета, так и по описанию (типа «pdf»)
Иногда, довольно редко, нужны тривиальные правки PKGBUILD, типа замены qt4-qmake на qmake.
Сказанного вполне достаточно для работы с abs и aur, но если возникли какие то вопросы они скорее всего разобраны в вики арча, wiki.archlinux.org.
Но надо помнить что создание пакетов из чужого дистра изначально может быть некорректным (хотя в большинстве случаев такое создание вполне удачно), поэтому в первую очередь надо думать головой (впрочем это всегда полезно :-)
В любом случае не надо собирать из арча системные пакеты, уже имеющиеся в слаке на DVD или в других местах, поломать систему таким образом очень легко. Лучше всего использовать abs и aur для сборки пользовательских пакетов и их зависимостей, которых в слаке нигде нет.
(Анонимно)
2013-05-06 23:49 (UTC)
==> ERROR: Cannot find the pacman binary required for dependency operations.
я и гуглил, и не очень мне это помогло ни чего не нашёл.
Прошу вас мне помочь!
2013-05-07 00:30 (UTC)
Вот makepkg от 2012 года, с которым все работает
http://pastebin.com/E3GcrfbP
2013-05-07 03:47 (UTC)
Спасибо
(Анонимно)
2013-05-07 11:04 (UTC)
Re: Спасибо
2013-05-07 11:08 (UTC)