void |
|
Темы:
32
Сообщения:
375
Участник с: 15 февраля 2010
|
Переведенный с французского на английский repacman-0.98-1:#!/bin/sh #// repacman.sh #// (c) 2008 - gyo <gyo_at_archlinux_dot_fr> #// license : GPL #// description : utility to rebuild installed package from information contained in pacman's database _prg_name="${0##*/}" _prg_version='0.98' # Getting some parameters from pacman.conf eval $(sed -re '/^[[:space:]]#/d' -e '/(DBPath|CacheDir)/s:([^[:space:]]+)[[:space:]]*=[[:space:]]*([^[:space:]]+):\1="\2":p;d' /etc/pacman.conf) PACMAN_DB_DIR=${DBPath:-'/var/lib/pacman/'} PACMAN_CACHE_DIR=${CacheDir:-'/var/cache/pacman/pkg/'} FILE_PREP_DIR="/tmp/${_prg_name}_$$" CURRENT_DIR="`pwd`" DEBUG=0 #------ function ------# function f_generate_pkginfo { [ -e $package_dir/desc ] || _f_missed_file desc 3 dateR=`date -R` cat << EOF > .PKGINFO # Generated by $_prg_name $_prg_version # $dateR EOF function file_stream { cat $package_dir/desc [ -e $package_dir/depends ] && cat $package_dir/depends sed -rne '/%BACKUP%/,$s/^([^[:space:]]+).*/\1/p' $package_dir/files } file_stream | while read; do case $REPLY in %NAME%) pkginfo_var='pkgname';; %VERSION%) pkginfo_var='pkgver';; %DESC%) pkginfo_var='pkgdesc';; %GROUPS%) pkginfo_var='group';; %URL%) pkginfo_var='url';; %LICENSE%) pkginfo_var='license';; %ARCH%) pkginfo_var='arch';; %BUILDDATE%) pkginfo_var='builddate';; %PACKAGER%) pkginfo_var='packager';; %SIZE%) pkginfo_var='size';; %REPLACES%) pkginfo_var='replace';; %DEPENDS%) pkginfo_var='depend';; %CONFLICTS%) pkginfo_var='conflict';; %PROVIDES%) pkginfo_var='provide';; %BACKUP%) pkginfo_var='backup';; %*%) unset pkginfo_var;; *) if [ -n "$REPLY" -a -n "$pkginfo_var" ]; then echo "$pkginfo_var = $REPLY" >> .PKGINFO fi ;; esac done } function f_create_tar { mkdir $FILE_PREP_DIR cd $FILE_PREP_DIR [ -e $package_dir/files ] || _f_missed_file files 2 sed -rne '/%FILES%/,/%BACKUP%/{/^(%FILES%|%BACKUP%| *)$/d;s:^:/:p}' $package_dir/files > .FILELIST if [ -e $package_dir/install ]; then cd $FILE_PREP_DIR cp $package_dir/install .INSTALL fi if [ -e $package_dir/changelog ]; then cd $FILE_PREP_DIR cp $package_dir/changelog .CHANGELOG fi f_generate_pkginfo echo bsdtar czvf $CURRENT_DIR/$pkgname_ver.pkg.tar.gz --exclude=. --exclude=.. --exclude=.FILELIST -n -T .FILELIST .* } function _f_missed_file { echo "! File \"$1\" is missing" >&2 exit $2 } function f_help { cat << EOF [ $_prg_name $_prg_version ] $_prg_name package_name (ex: $_prg_name hal) -h : show this help EOF } #------ end function ------# #------ MAIN ------# if [ "`id -u`" != 0 -a `type -p fakeroot` ]; then fakeroot -- $0 $@ exit $? fi if ((!$#)); then echo "Error: not enough arguments !" echo f_help exit 1 fi if [ "$1" = '-h' ]; then f_help; exit 0; fi pkgname="$1" package_dir=`echo $PACMAN_DB_DIR/local/$pkgname-[0-9]*` if [ ! -d $package_dir ]; then echo "Package \"$pkgname\" does not exist in the database !" exit 1 fi pkgname_ver=${package_dir##*/} if [ -f $PACMAN_CACHE_DIR/$pkgname_ver.pkg.tar.gz ]; then echo "Package \"$pkgname_ver.pkg.tar.gz\" already exists in cache repository : $PACMAN_CACHE_DIR" read -n 1 -p 'Continue (y/N) ? ' case $REPLY in y|Y) ;; *) echo -e '\nBye.'; exit 0;; esac echo fi echo "- Full package name : $pkgname_ver" if (($DEBUG)); then echo $package_dir fi read -n 1 -p 'Continue (Y/n) ? ' case $REPLY in n|N) echo -e '\nBye.'; exit 0;; *) ;; esac pkgname_ver="${package_dir##*/}" f_create_tar if ((!$DEBUG)); then rm -fr $FILE_PREP_DIR fi cd $CURRENT_DIR echo "--> $CURRENT_DIR/$pkgname_ver.pkg.tar.gz created !" exit 0 #------ END MAIN ------# Устанавливается по комманде yaourt -S repacman-en Могу сделать русскую версию, если кому надо. |
vadik |
|
Темы:
55
Сообщения:
5395
Участник с: 17 августа 2009
|
А почему не в АУР? |
void |
|
Темы:
32
Сообщения:
375
Участник с: 15 февраля 2010
|
а куда можно положить скрипт, чтобы он всегда был доступен в сети? |
mango |
|
Темы:
43
Сообщения:
1521
Участник с: 18 декабря 2008
|
ну дык, в аур-ный пакет и засунуть. |
void |
|
Темы:
32
Сообщения:
375
Участник с: 15 февраля 2010
|
действительно! я думал в AUR хранятся только PKGBUILDs. Вернусь с работы, сделаю. UPD Теперь английский repacman можно установить коммандой yaourt -S repacman-en |
dimonezzz |
|
Темы:
0
Сообщения:
1
Участник с: 21 июня 2011
|
а для чего он нужен? |
bestrafer |
|
Темы:
1
Сообщения:
23
Участник с: 30 апреля 2009
|
#// description : utility to rebuild installed package from information contained in pacman's database |
lampus |
|
Темы:
1
Сообщения:
10
Участник с: 28 ноября 2010
|
Небольшое замечание, совместно со скриптами на bash можно использовать gettext, это гораздо более правильный способ перевода сообщений. http://www.linuxjournal.com/content/int … sh-scripts И на русском: http://kalina.lug.ru/wiki/%D0%98%D0%BD% … 0%BE%D0%B2 |
Nebulosa |
|
Темы:
10
Сообщения:
830
Участник с: 05 марта 2009
|
BESTRAFERЭто что-то навроде makeworld и PacBuilder? Для скучающих по Gentoo? :)#// description : utility to rebuild installed package from information contained in pacman's database ТС поправь ссылку в PKGBUILD на http://archlinux.fr/repacman |
void |
|
Темы:
32
Сообщения:
375
Участник с: 15 февраля 2010
|
Nebulosa, нет, репакмен просто собирает файлы какого-либо установленного пакета в системе и пакует в установочный тарболл. Например, если нужно забекапить пакет перед обновлением, которого не сохранилось в кеше пакмана… Поправил адрес и права на скрипт. Спасибо. |