tgz 2 pkg.tar.gz

Использование

sh ./tgz2pkg wine-0.9.51-athlon-rat1.tgz

#!/bin/sh
# Скрипт преобразует пакет Slackware в пакет Arch Linux
# Используйте очень осторожно. Работает только в самом Arch Linux
# Распространяется как есть.
# Автор: sudemon ([email protected])
	arch="i686";
	filename=$1;
	fileshort=${filename##*/}
	pkgname=${fileshort%%-?.*}
	pkgver=${fileshort%.tgz}
	pkgver=${pkgver#$pkgname-}
	pkgver=${pkgver%%-*}
	pkgrel=${fileshort%.tgz}
	pkgrel=${pkgrel##*-}
echo "  Имя файла: $fileshort"
echo "  Программа: $pkgname"
echo "  Версия: $pkgver"
echo "  Сборка: $pkgrel"
	mkdir -p ./build-$pkgname
	cp $filename ./build-$pkgname
	cd ./build-$pkgname
	tar -zxf $filename install/doinst.sh
	tar -zxf $filename install/slack-desc
	echo ""
	{
	echo "pkgname=$pkgname"
	echo "pkgver=$pkgver"
	echo "pkgrel=$pkgrel"
	echo "arch=('$arch')"
	echo "pkgdesc=\""
	less install/slack-desc | grep "$pkgname" | sed -e /^$/d | sed -e 1d | sed -e s/$pkgname://g | sed -e /^$/d | grep ""
	echo "\""
	echo "source=($fileshort)"
	echo "install=('$pkgname.install')"
	echo "build () {"
	echo "cd \$startdir/src"
	echo "rm -rf ./install"
	echo "rm -rf ./$fileshort"
	echo "cp -r ./* \$startdir/pkg"
	echo "}"
	} > PKGBUILD
	nano PKGBUILD
	echo ""
	{
	echo "postinstall() {"
	less install/doinst.sh
	echo "/bin/true"
	echo "}"
	echo ""
	echo "op=\$1"
	echo "shift"
	echo ""
	echo "\$op \"\$@\""
	} > $pkgname.install
	#nano $pkgname.install
	makepkg -f
	cp $pkgname-$pkgver-$pkgrel-$arch.pkg.tar.gz ../
	cd ../
	rm -rf ./build-$pkgname
Лучше вхять wine.Slackbuild и заглядывая в него написать PKGBUILD и отстроить нативный пакет. Это же костыль, максимум на попробывать. Поэтому почти никогда не пользовался alien….
systemd должен умереть.
less замени на cat, а кучу echo на:
cat > out_file << _EOF_
text
text
$(cmd)
_EOF_

Непосредственный вызов редактора замени на EDITOR или EDITOR с альтернативой: ${EDITOR:-vim}

Убрать захардкоженную архитектуру, если сборка на Arch x86_64 пакета ix86 - помещать пакет в группу lib32 с соответствующими путями.

Пока вроде все на мой взгляд =)
systemd должен умереть.
Насколько я знаю, для сборки 32бит пакета под 64бит нужно делать chroot в 32-битную систему. Жаль не могу проверить, поэтому  не буду это добавлять. А если делать через группу, то где должны находится 32битные программы в Arch x86_64 ?

По поводу других советов, то вот результат:

#!/bin/sh
# Скрипт преобразует пакет Slackware в пакет Arch Linux
# Используйте очень осторожно. Работает только в самом Arch Linux
# Распространяется как есть. Дата:   24.12.07
# Используйте -i в конце команды чтобы сразу установить пакет.
# Автор: http://archlinux.org.ru/forum/index.php/topic,425.0.html
	arch="i686";
	filename=$1;
	fileshort=${filename##*/}
	pkgname=${fileshort%%-?.*}
	pkgver=${fileshort%.tgz}
	pkgver=${pkgver#$pkgname-}
	pkgver=${pkgver%%-*}
	pkgrel=${fileshort%.tgz}
	pkgrel=${pkgrel##*-}
	mkdir -p ./build-$pkgname
	cp $filename ./build-$pkgname
	cd ./build-$pkgname
	tar -zxf $filename install/doinst.sh
	tar -zxf $filename install/slack-desc
cat > PKGBUILD << _EOF_
pkgname=$pkgname
pkgver=$pkgver
pkgrel=$pkgrel
arch=('$arch')
pkgdesc="$(cat install/slack-desc | grep $pkgname | sed -e s/$pkgname://g | sed -e 1!d)"
source=($fileshort)
install=('$pkgname.install')
build () {
	cd \$startdir/src
	rm -rf ./install
	rm -rf ./$fileshort
	cp -r ./* \$startdir/pkg
}
_EOF_
	${EDITOR:-nano} PKGBUILD
cat > $pkgname.install << _EOF_
postinstall() {
$(cat install/doinst.sh)
/bin/true
}
op=\$1
shift
\$op "\$@"
_EOF_
	${EDITOR:-nano} $pkgname.install
	makepkg -f
	cp $pkgname-$pkgver-$pkgrel-$arch.pkg.tar.gz ../
	cd ../
	rm -rf ./build-$pkgname
	if [ "$2" = "-i" ]; then
	echo "Для установки пакета требуется пароль root:"
	su -c "pacman -U $pkgname-$pkgver-$pkgrel-$arch.pkg.tar.gz"
	fi
Странно, чем PKGBUILD не устроил автора? правильнее было бы писать PKGBUILDы, чем заниматься ерундой… Хотя может я не почувствовал соль из-за отсутствия слаковых пакетов?
Разберемся, голубчик!
Как раз таки устраивает. Пользуюсь для исходников и проприетарного ПО.

Например у меня уже есть нужная программа в .tgz, а тратить трафик и время
на тоже самое но в pkg.tar.gz я не хочу.

Писать PKGBUILD это долгое занятие, намного быстрее сразу поставить пакет в систему:
tgz2pkg amarok-1.4.6-i486-1.tgz -i 

При этом он потом нормально удалится средствами pacman.

PS: Я просто поделился кодом, может кому нибудь понадобится.
PPS: Исполняя этот скрипт, я пишу PKGBUILD, который кстати в процессе выполнения можно редактировать.
sudemon
Насколько я знаю, для сборки 32бит пакета под 64бит нужно делать chroot в 32-битную систему. Жаль не могу проверить, поэтому  не буду это добавлять. А если делать через группу, то где должны находится 32битные программы в Arch x86_64 ?

Ты прав, но у тебя есть уже готовый бинарный пакет, залезь на aur.archlinux.org или посмотри в ABS BUILDPKG для пакетов lib32-*

путь должен быть /opt/lib32 (это префикс, подобный /usr или /usr/local), хотя стандарта там нет (официально Arch не поддерживает Multilib). Есди прога 32битная, нужно бы сделать ещё враппер для запуска, типа:
mv bin/proga bin/proga.bin
cat > bin/proga << EOF
#!/bin/sh
linux32 bin/proga.bin $@
EOF

Если прога ищет какие-то свои файлы по жестко вписанным локациям, сделать симлинки. В общем смотри сколько

По поводу других советов, то вот результат:

#!/bin/sh
# Скрипт преобразует пакет Slackware в пакет Arch Linux
# Используйте очень осторожно. Работает только в самом Arch Linux
# Распространяется как есть. Дата:   24.12.07
# Используйте -i в конце команды чтобы сразу установить пакет.
# Автор: http://archlinux.org.ru/forum/index.php/topic,425.0.html
	arch="i686";
	filename=$1;
	fileshort=${filename##*/}
	pkgname=${fileshort%%-?.*}
	pkgver=${fileshort%.tgz}
	pkgver=${pkgver#$pkgname-}
	pkgver=${pkgver%%-*}
	pkgrel=${fileshort%.tgz}
	pkgrel=${pkgrel##*-}
	mkdir -p ./build-$pkgname
	cp $filename ./build-$pkgname
	cd ./build-$pkgname
	tar -zxf $filename install/doinst.sh
	tar -zxf $filename install/slack-desc
cat > PKGBUILD << _EOF_
pkgname=$pkgname
pkgver=$pkgver
pkgrel=$pkgrel
arch=('$arch')
pkgdesc="$(cat install/slack-desc | grep $pkgname | sed -e s/$pkgname://g | sed -e 1!d)"
source=($fileshort)
install=('$pkgname.install')
build () {
	cd \$startdir/src
	rm -rf ./install
	rm -rf ./$fileshort
	cp -r ./* \$startdir/pkg
}
_EOF_
	${EDITOR:-nano} PKGBUILD
cat > $pkgname.install << _EOF_
postinstall() {
$(cat install/doinst.sh)
/bin/true
}
op=\$1
shift
\$op "\$@"
_EOF_
	${EDITOR:-nano} $pkgname.install
	makepkg -f
	cp $pkgname-$pkgver-$pkgrel-$arch.pkg.tar.gz ../
	cd ../
	rm -rf ./build-$pkgname
	if [ "$2" = "-i" ]; then
	echo "Для установки пакета требуется пароль root:"
	su -c "pacman -U $pkgname-$pkgver-$pkgrel-$arch.pkg.tar.gz"
	fi

я бы все таки nano на vim заменил, имхо, в большинстве случаев так будет, а переопределить - установить EDITOR в нужное тебе значение и юзай
systemd должен умереть.
Amigo
Странно, чем PKGBUILD не устроил автора? правильнее было бы писать PKGBUILDы, чем заниматься ерундой… Хотя может я не почувствовал соль из-за отсутствия слаковых пакетов?

Имхо, возникла потребность в пакете, а src скачать возможности нет, пусть, своего потребителя найдет.
systemd должен умереть.
Тады его можно и в аур :)
Разберемся, голубчик!
 
Зарегистрироваться или войдите чтобы оставить сообщение.