Переведенный repacman

Переведенный с французского на английский 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 [email protected]
  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


Могу сделать русскую версию, если кому надо.
А почему не в АУР?
а куда можно положить скрипт, чтобы он всегда был доступен в сети?
ну дык, в аур-ный пакет и засунуть.
действительно! я думал в AUR хранятся только PKGBUILDs. Вернусь с работы, сделаю.

UPD
Теперь английский repacman можно установить коммандой
yaourt -S repacman-en
а для чего он нужен?
#// description : utility to rebuild installed package from information contained in pacman's database
Небольшое замечание, совместно со скриптами на bash можно использовать gettext, это гораздо более правильный способ перевода сообщений.
http://www.linuxjournal.com/content/int … sh-scripts
И на русском: http://kalina.lug.ru/wiki/%D0%98%D0%BD% … 0%BE%D0%B2
BESTRAFER
#// description : utility to rebuild installed package from information contained in pacman's database
Это что-то навроде makeworld и PacBuilder? Для скучающих по Gentoo? :)

ТС поправь ссылку в PKGBUILD на http://archlinux.fr/repacman
Nebulosa,
нет, репакмен просто собирает файлы какого-либо установленного пакета в системе и пакует в установочный тарболл. Например, если нужно забекапить пакет перед обновлением, которого не сохранилось в кеше пакмана…

Поправил адрес и права на скрипт. Спасибо.
 
Зарегистрироваться или войдите чтобы оставить сообщение.