Commit 71934755 authored by Vitaly Lipatov's avatar Vitaly Lipatov

update packed scripts

parent e8f9462c
...@@ -157,7 +157,7 @@ sudocmd_foreach() ...@@ -157,7 +157,7 @@ sudocmd_foreach()
#showcmd "$@" #showcmd "$@"
shift shift
for pkg in "$@" ; do for pkg in "$@" ; do
sudocmd "$cmd" $pkg sudocmd "$cmd" $pkg || return
done done
} }
...@@ -295,7 +295,12 @@ assure_exists() ...@@ -295,7 +295,12 @@ assure_exists()
load_helper epm-assure load_helper epm-assure
local package="$2" local package="$2"
[ -n "$package" ] || package="$(__get_package_for_command "$1")" [ -n "$package" ] || package="$(__get_package_for_command "$1")"
__epm_assure "$1" $package __epm_assure "$1" $package || fatal "Can't assure in '$1' command"
}
eget()
{
$PROGDIR/epm-eget "$@"
} }
get_package_type() get_package_type()
...@@ -318,6 +323,14 @@ get_package_type() ...@@ -318,6 +323,14 @@ get_package_type()
echo "tbz" echo "tbz"
return return
;; ;;
*.exe)
echo "exe"
return
;;
*.msi)
echo "msi"
return
;;
*) *)
#fatal "Don't know type of $1" #fatal "Don't know type of $1"
# return package name for info # return package name for info
...@@ -421,7 +434,7 @@ epm_addrepo() ...@@ -421,7 +434,7 @@ epm_addrepo()
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
assure_exists apt-repo assure_exists apt-repo
sudocmd apt-repo add $pkg_filenames sudocmd apt-repo add "$pkg_filenames"
;; ;;
apt-dpkg|aptitude-dpkg) apt-dpkg|aptitude-dpkg)
info "You need manually add repo to /etc/apt/sources.list" info "You need manually add repo to /etc/apt/sources.list"
...@@ -430,13 +443,13 @@ case $PMTYPE in ...@@ -430,13 +443,13 @@ case $PMTYPE in
info "You need manually add repo to /etc/yum.repos.d/" info "You need manually add repo to /etc/yum.repos.d/"
;; ;;
urpm-rpm) urpm-rpm)
sudocmd urpmi.addmedia $pkg_filenames sudocmd urpmi.addmedia "$pkg_filenames"
;; ;;
zypper-rpm) zypper-rpm)
sudocmd zypper ar $pkg_filenames sudocmd zypper ar "$pkg_filenames"
;; ;;
emerge) emerge)
sudocmd layman -a $pkg_filenames sudocmd layman -a $"pkg_filenames"
;; ;;
pacman) pacman)
info "You need manually add repo to /etc/pacman.conf" info "You need manually add repo to /etc/pacman.conf"
...@@ -444,7 +457,7 @@ case $PMTYPE in ...@@ -444,7 +457,7 @@ case $PMTYPE in
#sudocmd repo-add $pkg_filenames #sudocmd repo-add $pkg_filenames
;; ;;
npackd) npackd)
sudocmd npackdcl add-repo --url=$pkg_filenames sudocmd npackdcl add-repo --url="$pkg_filenames"
;; ;;
slackpkg) slackpkg)
info "You need manually add repo to /etc/slackpkg/mirrors" info "You need manually add repo to /etc/slackpkg/mirrors"
...@@ -476,7 +489,7 @@ __epm_assure() ...@@ -476,7 +489,7 @@ __epm_assure()
info "Command $1 is exists: $compath" info "Command $1 is exists: $compath"
epm qf "$compath" epm qf "$compath"
fi fi
return return 0
fi fi
# TODO: use package name normalization # TODO: use package name normalization
...@@ -525,7 +538,7 @@ __epm_autoremove_altrpm() ...@@ -525,7 +538,7 @@ __epm_autoremove_altrpm()
load_helper epm-packages load_helper epm-packages
info info
info "Just removing all non -devel libs packages not need by anything" info "Just removing all non -devel libs packages not need by anything"
for pkg in $(short=1 pkg_filenames= epm_packages | grep -- "^lib" | grep -v -- "-devel$" | grep -v -- ^libreoffice ) ; do for pkg in $(short=1 pkg_filenames= epm_packages | grep -- "^lib" | grep -v -- "-devel$" | grep -v -- "-debuginfo$" | grep -v -- ^libreoffice | grep -v -- libnss- ) ; do
sudocmd rpm -v -e $pkg && flag=1 sudocmd rpm -v -e $pkg && flag=1
done done
...@@ -765,7 +778,13 @@ check_pkg_integrity() ...@@ -765,7 +778,13 @@ check_pkg_integrity()
docmd dpkg --contents $PKG >/dev/null && echo "Package $PKG is correct." docmd dpkg --contents $PKG >/dev/null && echo "Package $PKG is correct."
;; ;;
exe) exe)
true file $PKG | grep -q "executable for MS Windows"
;;
msi)
# TODO: add to patool via cabextract
assure_exists cabextract
#file $PKG | grep -q "Microsoft Office Document"
cabextract -t $PKG
;; ;;
ebuild) ebuild)
true true
...@@ -1024,6 +1043,43 @@ epm_downgrade() ...@@ -1024,6 +1043,43 @@ epm_downgrade()
esac esac
} }
# File bin/epm-eget:
WGET="wget -q"
if echo "$1" | grep -q "\(^ftp://\|[^*]$\)" ; then
$WGET $1 && exit 0
fi
URL=$(echo $1 | grep /$ || dirname $1)
MASK=$(basename $1)
MYTMPDIR="$(mktemp -d)"
DIRALLFILES="$MYTMPDIR/files/"
get_index(){
INDEX=$MYTMPDIR/index
$WGET $URL -O $INDEX
}
save_temp_files(){
mkdir -p $DIRALLFILES
ALLFILES="$MYTMPDIR/allfiles"
cat $INDEX | grep -o -E 'href="([^\*/"#]+)"' | cut -d'"' -f2 > $ALLFILES
while read line ; do
touch $DIRALLFILES/$line
done <$ALLFILES
}
sort_files(){
for line in $DIRALLFILES/$MASK ; do
$WGET $URL/`basename "$line"` -P $CURRENTDIR/
done
}
get_index
save_temp_files
sort_files
# File bin/epm-filelist: # File bin/epm-filelist:
...@@ -1300,6 +1356,15 @@ __separate_sudocmd() ...@@ -1300,6 +1356,15 @@ __separate_sudocmd()
return 0 return 0
} }
download_pkg_urls()
{
local url
[ -z "$1" ] && return
for url in $* ; do
eget $url || warning "Skipped"
done
}
epm_install_names() epm_install_names()
{ {
if [ -n "$non_interactive" ] ; then if [ -n "$non_interactive" ] ; then
...@@ -1454,6 +1519,10 @@ epm_install_files() ...@@ -1454,6 +1519,10 @@ epm_install_files()
{ {
[ -z "$1" ] && return [ -z "$1" ] && return
# TODO: check read permissions
# sudo test -r FILE
# do not fallback to install_names if we have no permissions
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
sudocmd rpm -Uvh $force $nodeps $@ && return sudocmd rpm -Uvh $force $nodeps $@ && return
...@@ -1606,6 +1675,10 @@ epm_install() ...@@ -1606,6 +1675,10 @@ epm_install()
return return
fi fi
# Download urls via eget pkg_urls and use eget
# TODO: use optimization (rpm can download packages by url, yum too?)
download_pkg_urls "$pkg_urls"
[ -z "$pkg_files$pkg_names" ] && info "Skip empty install list" && return 22 [ -z "$pkg_files$pkg_names" ] && info "Skip empty install list" && return 22
local names="$(echo $pkg_names | filter_out_installed_packages)" local names="$(echo $pkg_names | filter_out_installed_packages)"
...@@ -1746,10 +1819,11 @@ __epm_packages_sort() ...@@ -1746,10 +1819,11 @@ __epm_packages_sort()
{ {
case $PMTYPE in case $PMTYPE in
apt-rpm|yum-rpm|urpm-rpm|zypper-rpm|dnf-rpm) apt-rpm|yum-rpm|urpm-rpm|zypper-rpm|dnf-rpm)
docmd rpm -qa --queryformat "%{size} %{name}-%{version}-%{release}\n" $pkg_filenames | sort -n # FIXME: space with quotes problems, use point instead
docmd rpm -qa --queryformat "%{size}.%{name}-%{version}-%{release}\n" $pkg_filenames | sort -n
;; ;;
apt-dpkg) apt-dpkg)
docmd dpkg-query -W --showformat="\${Size} \${Package}-\${Version}\n" $pkg_filenames | sort -n docmd dpkg-query -W --showformat="\${Size}.\${Package}-\${Version}\n" $pkg_filenames | sort -n
;; ;;
*) *)
fatal "Sorted package list are not realized for $PMTYPE" fatal "Sorted package list are not realized for $PMTYPE"
...@@ -1813,6 +1887,9 @@ case $PMTYPE in ...@@ -1813,6 +1887,9 @@ case $PMTYPE in
conary) conary)
CMD="conary query" CMD="conary query"
;; ;;
chocolatey)
CMD="chocolatey list"
;;
slackpkg) slackpkg)
CMD="ls -1 /var/log/packages/" CMD="ls -1 /var/log/packages/"
if [ -n "$short" ] ; then if [ -n "$short" ] ; then
...@@ -2613,7 +2690,7 @@ epm_removerepo() ...@@ -2613,7 +2690,7 @@ epm_removerepo()
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
assure_exists apt-repo assure_exists apt-repo
sudocmd apt-repo rm $pkg_filenames sudocmd apt-repo rm "$pkg_filenames"
;; ;;
apt-dpkg|aptitude-dpkg) apt-dpkg|aptitude-dpkg)
info "You need remove repo from /etc/apt/sources.list" info "You need remove repo from /etc/apt/sources.list"
...@@ -2622,19 +2699,19 @@ case $PMTYPE in ...@@ -2622,19 +2699,19 @@ case $PMTYPE in
info "You need remove repo from /etc/yum.repos.d/" info "You need remove repo from /etc/yum.repos.d/"
;; ;;
urpm-rpm) urpm-rpm)
sudocmd urpmi.removemedia $pkg_filenames sudocmd urpmi.removemedia "$pkg_filenames"
;; ;;
zypper-rpm) zypper-rpm)
sudocmd zypper removerepo $pkg_filenames sudocmd zypper removerepo "$pkg_filenames"
;; ;;
emerge) emerge)
sudocmd layman -d$pkg_filenames sudocmd layman "-d$pkg_filenames"
;; ;;
pacman) pacman)
info "You need remove repo from /etc/pacman.conf" info "You need remove repo from /etc/pacman.conf"
;; ;;
npackd) npackd)
sudocmd npackdcl remove-repo --url=$pkg_filenames sudocmd npackdcl remove-repo --url="$pkg_filenames"
;; ;;
slackpkg) slackpkg)
info "You need remove repo from /etc/slackpkg/mirrors" info "You need remove repo from /etc/slackpkg/mirrors"
...@@ -2949,7 +3026,8 @@ __alt_local_content_search() ...@@ -2949,7 +3026,8 @@ __alt_local_content_search()
{ {
[ -n "$USETTY" ] && echo "Search in $CI for $1..." [ -n "$USETTY" ] && echo "Search in $CI for $1..."
grep -h -- ".*$1.*\t" $CI | sed -e "s|\(.*\)\t\(.*\)|\2: \1|g" # note! tabulation below!
grep -h -- ".*$1.* " $CI | sed -e "s|\(.*\)\t\(.*\)|\2: \1|g"
} | $OUTCMD } | $OUTCMD
} }
...@@ -3698,7 +3776,7 @@ $(get_help HELPOPT) ...@@ -3698,7 +3776,7 @@ $(get_help HELPOPT)
print_version() print_version()
{ {
echo "EPM package manager version 1.5.6" echo "EPM package manager version 1.5.7"
echo "Running on $($DISTRVENDOR) ('$PMTYPE' package manager uses '$PKGFORMAT' package format)" echo "Running on $($DISTRVENDOR) ('$PMTYPE' package manager uses '$PKGFORMAT' package format)"
echo "Copyright (c) Etersoft 2012-2014" echo "Copyright (c) Etersoft 2012-2014"
echo "This program may be freely redistributed under the terms of the GNU AGPLv3." echo "This program may be freely redistributed under the terms of the GNU AGPLv3."
...@@ -3722,6 +3800,7 @@ show_command_only= ...@@ -3722,6 +3800,7 @@ show_command_only=
epm_cmd= epm_cmd=
pkg_files= pkg_files=
pkg_names= pkg_names=
pkg_urls=
quoted_args= quoted_args=
progname="${0##*/}" progname="${0##*/}"
...@@ -3784,7 +3863,7 @@ check_command() ...@@ -3784,7 +3863,7 @@ check_command()
-e|-P|remove|delete|uninstall|erase|e) # HELPCMD: remove (delete) package(s) from the database and the system -e|-P|remove|delete|uninstall|erase|e) # HELPCMD: remove (delete) package(s) from the database and the system
epm_cmd=remove epm_cmd=remove
;; ;;
-s|search) # HELPCMD: search in remote package repositories -s|search|s) # HELPCMD: search in remote package repositories
epm_cmd=search epm_cmd=search
;; ;;
-qp|qp|query_package) # HELPCMD: search in the list of installed packages -qp|qp|query_package) # HELPCMD: search in the list of installed packages
...@@ -3950,6 +4029,8 @@ check_filenames() ...@@ -3950,6 +4029,8 @@ check_filenames()
# files can be with full path or have extension via . # files can be with full path or have extension via .
if [ -f "$opt" ] && echo "$opt" | grep -q "[/\.]" ; then if [ -f "$opt" ] && echo "$opt" | grep -q "[/\.]" ; then
pkg_files="$pkg_files $opt" pkg_files="$pkg_files $opt"
elif echo "$opt" | grep -q "://" ; then
pkg_urls="$pkg_names $opt"
else else
pkg_names="$pkg_names $opt" pkg_names="$pkg_names $opt"
fi fi
...@@ -3977,6 +4058,7 @@ fi ...@@ -3977,6 +4058,7 @@ fi
pkg_files=$(strip_spaces "$pkg_files") pkg_files=$(strip_spaces "$pkg_files")
pkg_names=$(strip_spaces "$pkg_names") pkg_names=$(strip_spaces "$pkg_names")
pkg_urls=$(strip_spaces "$pkg_urls")
pkg_filenames=$(strip_spaces "$pkg_files $pkg_names") pkg_filenames=$(strip_spaces "$pkg_files $pkg_names")
......
...@@ -155,7 +155,7 @@ sudocmd_foreach() ...@@ -155,7 +155,7 @@ sudocmd_foreach()
#showcmd "$@" #showcmd "$@"
shift shift
for pkg in "$@" ; do for pkg in "$@" ; do
sudocmd "$cmd" $pkg sudocmd "$cmd" $pkg || return
done done
} }
...@@ -293,7 +293,12 @@ assure_exists() ...@@ -293,7 +293,12 @@ assure_exists()
load_helper epm-assure load_helper epm-assure
local package="$2" local package="$2"
[ -n "$package" ] || package="$(__get_package_for_command "$1")" [ -n "$package" ] || package="$(__get_package_for_command "$1")"
__epm_assure "$1" $package __epm_assure "$1" $package || fatal "Can't assure in '$1' command"
}
eget()
{
$PROGDIR/epm-eget "$@"
} }
get_package_type() get_package_type()
...@@ -316,6 +321,14 @@ get_package_type() ...@@ -316,6 +321,14 @@ get_package_type()
echo "tbz" echo "tbz"
return return
;; ;;
*.exe)
echo "exe"
return
;;
*.msi)
echo "msi"
return
;;
*) *)
#fatal "Don't know type of $1" #fatal "Don't know type of $1"
# return package name for info # return package name for info
...@@ -472,7 +485,10 @@ serv_enable() ...@@ -472,7 +485,10 @@ serv_enable()
is_service_autostart $1 && echo "Service $1 already enabled for startup" && return is_service_autostart $1 && echo "Service $1 already enabled for startup" && return
case $SERVICETYPE in case $SERVICETYPE in
service-chkconfig|service-upstart) service-chkconfig)
sudocmd chkconfig --add $1
;;
service-upstart)
sudocmd chkconfig $1 on sudocmd chkconfig $1 on
;; ;;
service-initd|service-update) service-initd|service-update)
...@@ -1118,7 +1134,7 @@ $(get_help HELPOPT) ...@@ -1118,7 +1134,7 @@ $(get_help HELPOPT)
print_version() print_version()
{ {
echo "Service manager version 1.5.6" echo "Service manager version 1.5.7"
echo "Running on $($DISTRVENDOR)" echo "Running on $($DISTRVENDOR)"
echo "Copyright (c) Etersoft 2012, 2013" echo "Copyright (c) Etersoft 2012, 2013"
echo "This program may be freely redistributed under the terms of the GNU AGPLv3." echo "This program may be freely redistributed under the terms of the GNU AGPLv3."
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment