Commit e1f431b0 authored by Vitaly Lipatov's avatar Vitaly Lipatov

backported to M60P as 1.0.6-alt0.M60P.1 (with rpmbph script)

parents 03f846fb 114cdd79
2. Дописать таблицу на вики на основании реализованных команд. 2. Дописать таблицу на вики на основании реализованных команд.
3. Доделать и проверить deplist|requires 3. Доделать и проверить deplist|requires
eix мне кажеться для поиска немного удобной, без параметров выведет все что есть в "портежах"
eix -I - список всех установленных (-Ic сокращенный список)
eix phrase - выведет список всего что содержит phrase (-c кратко)
eix-sync - обновление "портежей"
к сожалению и ставить с emerge. хотя может можно дать и eix команду, но не смотрел, вроде
только для поиска (просто удобнее, мне по-крайне мере).
ну в man'e понятное дело много чего %)
в любом случае связка eix-sync, emerge -uDN system world, etc-update/dispatch-conf,
revdep-rebuild хорошо работает если не нужно mask/unmask делать %)
...@@ -94,7 +94,6 @@ if distro altlinux-release ; then ...@@ -94,7 +94,6 @@ if distro altlinux-release ; then
elif has Walnut ; then DISTRIB_RELEASE="4.0" elif has Walnut ; then DISTRIB_RELEASE="4.0"
elif has 5.0 ; then DISTRIB_RELEASE="5.0" elif has 5.0 ; then DISTRIB_RELEASE="5.0"
elif has 5.1 ; then DISTRIB_RELEASE="5.1" elif has 5.1 ; then DISTRIB_RELEASE="5.1"
elif has Ziziphora ; then DISTRIB_RELEASE="5.1"
elif has "ALT Linux p5" ; then DISTRIB_RELEASE="p5" elif has "ALT Linux p5" ; then DISTRIB_RELEASE="p5"
elif has "ALT Linux p6" ; then DISTRIB_RELEASE="p6" elif has "ALT Linux p6" ; then DISTRIB_RELEASE="p6"
elif has "ALT Linux p7" ; then DISTRIB_RELEASE="p7" elif has "ALT Linux p7" ; then DISTRIB_RELEASE="p7"
...@@ -118,11 +117,7 @@ elif distro mopslinux-version ; then ...@@ -118,11 +117,7 @@ elif distro mopslinux-version ; then
fi fi
elif distro slackware-version ; then elif distro slackware-version ; then
DISTRIB_ID="Slackware" DISTRIB_ID="Slackware"
if has 10.2 ; then DISTRIB_RELEASE="10.2" DISTRIB_RELEASE="$(grep -Eo [0-9]+\.[0-9]+ $DISTROFILE)"
elif has 11 ; then DISTRIB_RELEASE="11"
elif has 11.1 ; then DISTRIB_RELEASE="11.1"
elif has 12 ; then DISTRIB_RELEASE="12"
fi
elif distro arch-release ; then elif distro arch-release ; then
DISTRIB_ID="ArchLinux" DISTRIB_ID="ArchLinux"
......
...@@ -28,6 +28,8 @@ load_helper() ...@@ -28,6 +28,8 @@ load_helper()
load_helper epm-sh-functions load_helper epm-sh-functions
#PATH=$PATH:/sbin:/usr/sbin
set_sudo set_sudo
check_tty check_tty
...@@ -112,6 +114,9 @@ check_command() ...@@ -112,6 +114,9 @@ check_command()
-e|-P|remove|delete) # HELPCMD: remove (delete) package(s) from the database and the system -e|-P|remove|delete) # HELPCMD: remove (delete) package(s) from the database and the system
epm_cmd=remove epm_cmd=remove
;; ;;
autoremove) # HELPCMD: auto remove unneeded package(s)
epm_cmd=autoremove
;;
-qi|info|show) # HELPCMD: print package detail info -qi|info|show) # HELPCMD: print package detail info
epm_cmd=info epm_cmd=info
;; ;;
...@@ -142,7 +147,7 @@ check_command() ...@@ -142,7 +147,7 @@ check_command()
-qf|which|belongs) # HELPCMD: query package(s) owning file -qf|which|belongs) # HELPCMD: query package(s) owning file
epm_cmd=query_file epm_cmd=query_file
;; ;;
-sf|filesearch|search_file) # HELPCMD: search in which package a file is included -sf|sf|filesearch|search_file) # HELPCMD: search in which package a file is included
epm_cmd=search_file epm_cmd=search_file
;; ;;
-ql|filelist) # HELPCMD: print package file list -ql|filelist) # HELPCMD: print package file list
...@@ -154,13 +159,16 @@ check_command() ...@@ -154,13 +159,16 @@ check_command()
checkpkg|integrity) # HELPCMD: check package integrity checkpkg|integrity) # HELPCMD: check package integrity
epm_cmd=checkpkg epm_cmd=checkpkg
;; ;;
changelog|cl) # HELPCMD: show changelog for package
epm_cmd=changelog
;;
simulate) # HELPCMD: simulate install (check requires) simulate) # HELPCMD: simulate install (check requires)
epm_cmd=simulate epm_cmd=simulate
;; ;;
addrepo|ar) # HELPCMD: add package repo addrepo|ar) # HELPCMD: add package repo
epm_cmd=addrepo epm_cmd=addrepo
;; ;;
repolist|sl|listrepo) # HELPCMD: print repo list repolist|sl|rl|listrepo) # HELPCMD: print repo list
epm_cmd=repolist epm_cmd=repolist
;; ;;
removerepo|rr) # HELPCMD: remove package repo removerepo|rr) # HELPCMD: remove package repo
...@@ -168,13 +176,14 @@ check_command() ...@@ -168,13 +176,14 @@ check_command()
;; ;;
*) *)
return 1 return 1
;;
esac esac
return 0 return 0
} }
for opt in "$@" ; do check_option()
check_command $opt && continue {
case $opt in case $1 in
-h|--help|help) # HELPOPT: this help -h|--help|help) # HELPOPT: this help
phelp phelp
exit 0 exit 0
...@@ -189,7 +198,7 @@ for opt in "$@" ; do ...@@ -189,7 +198,7 @@ for opt in "$@" ; do
--skip-installed) # HELPOPT: skip already install during install --skip-installed) # HELPOPT: skip already install during install
skip_installed=1 skip_installed=1
;; ;;
--show-command-only) # HELPOPT: show command only, do not any action --show-command-only) # HELPOPT: show command only, do not any action (supports install and remove ONLY)
show_command_only=1 show_command_only=1
;; ;;
--quiet) # HELPOPT: quiet mode (do not print commands before exec) --quiet) # HELPOPT: quiet mode (do not print commands before exec)
...@@ -205,13 +214,21 @@ for opt in "$@" ; do ...@@ -205,13 +214,21 @@ for opt in "$@" ; do
non_interactive=1 non_interactive=1
;; ;;
*) *)
if [ -f "$opt" ] ; then return 1
pkg_files="$pkg_files $opt"
else
pkg_names="$pkg_names $opt"
fi
;; ;;
esac esac
return 0
}
for opt in "$@" ; do
check_command $opt && continue
check_option $opt && continue
if [ -f "$opt" ] ; then
pkg_files="$pkg_files $opt"
else
pkg_names="$pkg_names $opt"
fi
done done
pkg_files=$(strip_spaces "$pkg_files") pkg_files=$(strip_spaces "$pkg_files")
...@@ -219,6 +236,7 @@ pkg_names=$(strip_spaces "$pkg_names") ...@@ -219,6 +236,7 @@ pkg_names=$(strip_spaces "$pkg_names")
pkg_filenames=$(strip_spaces "$pkg_files $pkg_names") pkg_filenames=$(strip_spaces "$pkg_files $pkg_names")
echover "command: $epm_cmd"
echover "pkg_files=$pkg_files" echover "pkg_files=$pkg_files"
echover "pkg_names=$pkg_names" echover "pkg_names=$pkg_names"
......
...@@ -42,6 +42,9 @@ case $PMTYPE in ...@@ -42,6 +42,9 @@ case $PMTYPE in
pacman) pacman)
echo "You need manually add repo to /etc/pacman.conf" echo "You need manually add repo to /etc/pacman.conf"
;; ;;
npackd)
docmd npackdcl add-repo --url=$pkg_filenames
;;
slackpkg) slackpkg)
echo "You need manually add repo to /etc/slackpkg/mirrors" echo "You need manually add repo to /etc/slackpkg/mirrors"
;; ;;
......
#!/bin/sh
#
# Copyright (C) 2012 Etersoft
# Copyright (C) 2012 Vitaly Lipatov <lav@etersoft.ru>
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
#
epm_autoclean()
{
case $PMTYPE in
#apt-rpm)
# sudocmd apt-get autoclean
# ;;
apt-dpkg)
sudocmd apt-get autoclean
;;
#yum-rpm)
# sudocmd yum clean all
# ;;
#urpm-rpm)
# sudocmd urpmi --clean
# ;;
#zypper-rpm)
# sudocmd zypper clean
# ;;
*)
fatal "Do not known command for $PMTYPE"
;;
esac
}
#!/bin/sh
#
# Copyright (C) 2012 Etersoft
# Copyright (C) 2012 Vitaly Lipatov <lav@etersoft.ru>
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
#
load_helper epm-query
__epm_changelog_files()
{
[ -z "$@" ] && return
case $PMTYPE in
apt-rpm|yum-rpm|zypper-rpm|urpm-rpm)
docmd_foreach "rpm -p --changelog" $@ | less
;;
# apt-dpkg)
#
# ;;
*)
fatal "Do not known command for $PMTYPE"
;;
esac
}
__epm_changelog_local_names()
{
[ -z "$@" ] && return
case $PMTYPE in
apt-rpm|yum-rpm|urpm-rpm|zypper-rpm)
docmd_foreach "rpm --changelog" $@ | less
;;
apt-dpkg)
# FIXME: only first pkg
docmd zcat /usr/share/doc/$1/changelog.Debian.gz | less
;;
emerge)
docmd view /usr/portage/category/$1/ChangeLog | less
;;
pacman)
docmd pacman -Qc package | less
;;
*)
fatal "Do not known command for $PMTYPE"
;;
esac
}
__epm_changelog_unlocal_names()
{
[ -z "$@" ] && return
case $PMTYPE in
#apt-rpm)
# docmd_foreach "rpm --changelog" $@ | less
# ;;
#apt-dpkg)
# # FIXME: only first pkg
# docmd zcat /usr/share/doc/$1/changelog.Debian.gz | less
# ;;
#yum-rpm)
# sudocmd yum clean all
# ;;
#urpm-rpm)
# sudocmd urpmi --clean
# ;;
#zypper-rpm)
# sudocmd zypper clean
# ;;
*)
fatal "Do not known command for $PMTYPE"
;;
esac
}
epm_changelog()
{
[ -n "$pkg_filenames" ] || fatal "Run changelog without params"
__epm_changelog_files $pkg_files
local pkg
for pkg in $pkg_names ; do
if pkg_names=$pkg epm_query ; then
__epm_changelog_local_names $pkg
else
__epm_changelog_unlocal_names $pkg
fi
done
}
...@@ -25,6 +25,7 @@ check_rpm_integrity() ...@@ -25,6 +25,7 @@ check_rpm_integrity()
check_deb_integrity() check_deb_integrity()
{ {
# FIXME: debsums -ca package ?
a= dpkg --contents $@ >/dev/null a= dpkg --contents $@ >/dev/null
} }
...@@ -82,8 +83,8 @@ check_pkg_integrity() ...@@ -82,8 +83,8 @@ check_pkg_integrity()
epm_checkpkg() epm_checkpkg()
{ {
[ -n "$pkg_files" ] || fatal "Run without names" [ -n "$pkg_files" ] || fatal "Run without names"
local pkg
for i in $pkg_files ; do for pkg in $pkg_files ; do
check_pkg_integrity $i || fatal "Broken package $i" check_pkg_integrity $pkg || fatal "Broken package $pkg"
done done
} }
...@@ -20,36 +20,73 @@ ...@@ -20,36 +20,73 @@
load_helper epm-query load_helper epm-query
__epm_filelist_file()
{
local CMD
[ -z "$@" ] && return
case $PMTYPE in
apt-rpm|yum-rpm|urpm-rpm|zypper-rpm)
CMD="rpm -qlp"
;;
apt-dpkg)
CMD="dpkg --contents"
;;
*)
fatal "Do not known query command for $PMTYPE"
;;
esac
docmd $CMD $@
}
__epm_filelist_name()
{
local CMD
[ -z "$@" ] && return
case $PMTYPE in
apt-rpm)
CMD="rpm -ql"
;;
apt-dpkg)
CMD="dpkg -L"
;;
yum-rpm)
CMD="rpm -ql"
;;
urpm-rpm)
CMD="rpm -ql"
;;
zypper-rpm)
CMD="rpm -ql"
;;
pacman)
CMD="pacman -Ql"
;;
slackpkg)
epm_query >/dev/null || fatal "Query filelist for non installed packages does not realized"
docmd awk 'BEGIN{desk=1}{if(/^FILE LIST:$/){desk=0} else if (desk==0) {print}}' /var/log/packages/${pkg_filenames}*
return
;;
*)
fatal "Do not known query command for $PMTYPE"
;;
esac
docmd $CMD $pkg_names && return
epm_query >/dev/null || fatal "Query filelist for non installed packages does not realized"
}
epm_filelist() epm_filelist()
{ {
[ -n "$pkg_filenames" ] || fatal "Run query without names" [ -n "$pkg_filenames" ] || fatal "Run query without names"
case $PMTYPE in
apt-rpm) __epm_filelist_file $pkg_files || return
CMD="rpm -ql" __epm_filelist_name $pkg_names || return
;;
apt-dpkg)
CMD="dpkg -L"
;;
yum-rpm)
CMD="rpm -ql"
;;
urpm-rpm)
CMD="rpm -ql"
;;
zypper-rpm)
CMD="rpm -ql"
;;
pacman)
CMD="pacman -Ql"
;;
*)
fatal "Do not known query command for $PMTYPE"
;;
esac
docmd $CMD $pkg_filenames && return
epm_query >/dev/null || fatal "Query filelist for non installed packages does not realized"
} }
...@@ -20,33 +20,47 @@ ...@@ -20,33 +20,47 @@
load_helper epm-query load_helper epm-query
__epm_info_rpm_low()
{
if [ -n "$pkg_files" ] ; then
docmd rpm -qip $pkg_files
fi
[ -z "$pkg_names" ] && return
pkg_filenames=$pkg_names epm_query >/dev/null && docmd rpm -qi $pkg_names && return
}
epm_info() epm_info()
{ {
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
if [ -n "$pkg_files" ] ; then __epm_info_rpm_low && return
docmd rpm -qip $pkg_files
fi
[ -z "$pkg_names" ] && return
pkg_filenames=$pkg_names epm_query >/dev/null && docmd rpm -qi $pkg_names && return
docmd apt-cache show $pkg_names docmd apt-cache show $pkg_names
;; ;;
apt-dpkg) apt-dpkg)
if [ -n "$pkg_files" ] ; then
docmd dpkg -I $pkg_files
fi
[ -z "$pkg_names" ] && return [ -z "$pkg_names" ] && return
pkg_filenames=$pkg_names epm_query >/dev/null && docmd dpkg -I $pkg_names && return pkg_filenames=$pkg_names epm_query >/dev/null && docmd dpkg -p $pkg_names && return
docmd apt-cache show $pkg_names docmd apt-cache show $pkg_names
;; ;;
yum-rpm) yum-rpm)
__epm_info_rpm_low && return
docmd yum info $pkg_names docmd yum info $pkg_names
;; ;;
zypper-rpm) zypper-rpm)
__epm_info_rpm_low && return
docmd zypper info $pkg_names docmd zypper info $pkg_names
;; ;;
pacman) pacman)
docmd pacman -Si $pkg_names docmd pacman -Si $pkg_names
;; ;;
npackd)
# FIXME: --version=
docmd npackdcl info --package=$pkg_names
;;
slackpkg) slackpkg)
docmd slackpkg info $pkg_names docmd /usr/sbin/slackpkg info $pkg_names
;; ;;
*) *)
fatal "Do not known command for $PMTYPE" fatal "Do not known command for $PMTYPE"
......
...@@ -23,6 +23,7 @@ filter_out_installed_packages() ...@@ -23,6 +23,7 @@ filter_out_installed_packages()
{ {
[ -z "$skip_installed" ] && cat && return [ -z "$skip_installed" ] && cat && return
# TODO: rewrite with use epm_query
# TODO: use this more effectively way # TODO: use this more effectively way
#for i in $(cat) ; do #for i in $(cat) ; do
# rpm -q $i >/dev/null && continue # rpm -q $i >/dev/null && continue
...@@ -80,7 +81,7 @@ epm_install_names() ...@@ -80,7 +81,7 @@ epm_install_names()
return ;; return ;;
slackpkg) slackpkg)
# TODO: use upgrade if package is already installed # TODO: use upgrade if package is already installed
sudocmd slackpkg install $@ sudocmd /usr/sbin/slackpkg install $@
return ;; return ;;
*) *)
fatal "Do not known install command for $PMTYPE" fatal "Do not known install command for $PMTYPE"
...@@ -111,9 +112,16 @@ epm_ni_install_names() ...@@ -111,9 +112,16 @@ epm_ni_install_names()
pacman) pacman)
sudocmd pacman -S --noconfirm $@ sudocmd pacman -S --noconfirm $@
return ;; return ;;
npackd)
# npackdcl update --package=<package> (remove old and install new)
docmd npackdcl add --package=$@
return ;;
chocolatey)
docmd chocolatey install $@
return ;;
slackpkg) slackpkg)
# TODO: use upgrade if package is already installed # TODO: use upgrade if package is already installed
sudocmd slackpkg -batch=on -default_answer=yes install $@ sudocmd /usr/sbin/slackpkg -batch=on -default_answer=yes install $@
return ;; return ;;
*) *)
fatal "Do not known appropriate install command for $PMTYPE" fatal "Do not known appropriate install command for $PMTYPE"
...@@ -145,7 +153,7 @@ epm_install_files() ...@@ -145,7 +153,7 @@ epm_install_files()
sudocmd pacman -U --noconfirm $@ sudocmd pacman -U --noconfirm $@
return ;; return ;;
slackpkg) slackpkg)
sudocmd installpkg $@ sudocmd /sbin/installpkg $@
return ;; return ;;
esac esac
...@@ -169,7 +177,10 @@ epm_print_install_command() ...@@ -169,7 +177,10 @@ epm_print_install_command()
echo "pacman -U --noconfirm $@" echo "pacman -U --noconfirm $@"
;; ;;
slackpkg) slackpkg)
echo "installpkg $@" echo "/sbin/installpkg $@"
;;
npackd)
echo "npackdcl add --package=$@"
;; ;;
*) *)
fatal "Do not known appropriate install command for $PMTYPE" fatal "Do not known appropriate install command for $PMTYPE"
...@@ -181,7 +192,7 @@ epm_print_install_command() ...@@ -181,7 +192,7 @@ epm_print_install_command()
epm_install() epm_install()
{ {
if [ -n "$show_command_only" ] ; then if [ -n "$show_command_only" ] ; then
epm_print_install_command $names epm_print_install_command $pkg_filenames
return return
fi fi
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
epm_packages() epm_packages()
{ {
local CMD
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
...@@ -40,6 +41,12 @@ case $PMTYPE in ...@@ -40,6 +41,12 @@ case $PMTYPE in
pacman) pacman)
CMD="pacman -Qs" CMD="pacman -Qs"
;; ;;
npackd)
CMD="npackdcl list"
;;
# chocolatey)
# CMD="chocolatey list"
# ;;
slackpkg) slackpkg)
CMD="ls -1 /var/log/packages/" CMD="ls -1 /var/log/packages/"
;; ;;
......
...@@ -22,26 +22,78 @@ load_helper epm-packages ...@@ -22,26 +22,78 @@ load_helper epm-packages
# TODO: combine with -qa (the difference only in return status now) # TODO: combine with -qa (the difference only in return status now)
_query_via_packages_list()
{
local res=0
local firstpkg=$1
shift
epm_packages | grep "$firstpkg-" || res=1
for pkg in "$@" ; do
epm_packages 2>/dev/null | grep "$pkg-" || res=1
done
return $res
}
__epm_query_file()
{
local CMD
[ -z "$@" ] && return
case $PMTYPE in
apt-rpm|yum-rpm|urpm-rpm|zypper-rpm)
CMD="rpm -qp"
;;
apt-dpkg)
CMD="dpkg-deb --show"
# TODO: make rpm-like output
#showcmd dpkg -l $pkg_filenames
#dpkg -l $pkg_filenames | grep "^ii"
#return
;;
*)
fatal "Do not know command for query file package"
;;
esac
docmd $CMD $pkg_files
}
__epm_query_name()
{
local CMD
[ -z "$@" ] && return
case $PMTYPE in
apt-rpm|yum-rpm|urpm-rpm|zypper-rpm)
CMD="rpm -q"
;;
apt-dpkg)
CMD="dpkg -l"
# TODO: make rpm-like output
#showcmd dpkg -l $pkg_filenames
#dpkg -l $pkg_filenames | grep "^ii"
#return
;;
npackd)
CMD="npackdcl path --package=$pkg_names"
;;
*)
_query_via_packages_list $pkg_names
return
;;
esac
docmd $CMD $pkg_names
}
epm_query() epm_query()
{ {
[ -n "$pkg_filenames" ] || fatal "Run query without names" [ -n "$pkg_filenames" ] || fatal "Run query without names"
case $PMTYPE in __epm_query_file $pkg_files || return
apt-rpm|yum-rpm|urpm-rpm|zypper-rpm)
CMD="rpm -q"
;;
apt-dpkg)
CMD="dpkg -l"
# TODO: make rpm-like output
#showcmd dpkg -l $pkg_filenames
#dpkg -l $pkg_filenames | grep "^ii"
#return
;;
*)
epm_packages | grep "$pkg_filenames"
;;
esac
docmd $CMD $pkg_filenames
__epm_query_name $pkg_names || return
} }
...@@ -23,7 +23,7 @@ load_helper epm-search_file ...@@ -23,7 +23,7 @@ load_helper epm-search_file
# copied from etersoft-build-utils/bin/rpmqf # copied from etersoft-build-utils/bin/rpmqf
# use and modify TOFILE recursively # use and modify TOFILE recursively
real_file() __do_query_real_file()
{ {
local LINKTO1 LINKTO local LINKTO1 LINKTO
local TOFILE local TOFILE
...@@ -40,16 +40,17 @@ real_file() ...@@ -40,16 +40,17 @@ real_file()
# get value of symbolic link # get value of symbolic link
if [ -L "$TOFILE" ] ; then if [ -L "$TOFILE" ] ; then
__do_query $TOFILE
LINKTO=`readlink "$TOFILE"` LINKTO=`readlink "$TOFILE"`
echo "Note: $TOFILE is link to $LINKTO" echo "Note: $TOFILE is link to $LINKTO"
real_file "$LINKTO" __do_query_real_file "$LINKTO"
fi fi
FULLFILEPATH=`readlink -f $TOFILE` FULLFILEPATH=`realpath $TOFILE`
} }
dpkg_print_name_version() dpkg_print_name_version()
{ {
local ver local ver i
for i in $* ; do for i in $* ; do
ver=$(dpkg -s $i 2>/dev/null | grep "Version:" | sed -e "s|Version: ||g") ver=$(dpkg -s $i 2>/dev/null | grep "Version:" | sed -e "s|Version: ||g")
if [ -z "$ver" ] ; then if [ -z "$ver" ] ; then
...@@ -83,6 +84,11 @@ __do_query() ...@@ -83,6 +84,11 @@ __do_query()
pacman) pacman)
CMD="pacman -Qo" CMD="pacman -Qo"
;; ;;
slackpkg)
# note: need remove leading slash for grep
docmd grep -R "$(echo $@ | sed -e 's|^/\+||g')" /var/log/packages | sed -e "s|/var/log/packages/||g"
return
;;
*) *)
fatal "Do not known query command for $PMTYPE" fatal "Do not known query command for $PMTYPE"
;; ;;
...@@ -96,10 +102,9 @@ epm_query_file() ...@@ -96,10 +102,9 @@ epm_query_file()
# file can exists or not # file can exists or not
[ -n "$pkg_filenames" ] || fatal "Run query without file names" [ -n "$pkg_filenames" ] || fatal "Run query without file names"
for pkg in $pkg_filenames ; do
for i in $pkg_filenames ; do __do_query_real_file "$pkg"
real_file "$i" __do_query $FULLFILEPATH || pkg_filenames=$pkg epm_search_file
__do_query $FULLFILEPATH || pkg_filenames=$i epm_search_file done
done
} }
...@@ -42,7 +42,7 @@ epm_reinstall_names() ...@@ -42,7 +42,7 @@ epm_reinstall_names()
sudocmd pacman -U $@ sudocmd pacman -U $@
return ;; return ;;
slackpkg) slackpkg)
sudocmd slackpkg reinstall $@ sudocmd /usr/sbin/slackpkg reinstall $@
return ;; return ;;
*) *)
fatal "Do not known install command for $PMTYPE" fatal "Do not known install command for $PMTYPE"
...@@ -63,7 +63,7 @@ epm_reinstall_files() ...@@ -63,7 +63,7 @@ epm_reinstall_files()
sudocmd dpkg -i $@ sudocmd dpkg -i $@
return ;; return ;;
slackpkg) slackpkg)
sudocmd installpkg $@ sudocmd /sbin/installpkg $@
return ;; return ;;
esac esac
......
...@@ -33,10 +33,10 @@ epm_remove_low() ...@@ -33,10 +33,10 @@ epm_remove_low()
sudocmd pkg_delete -r $@ sudocmd pkg_delete -r $@
return ;; return ;;
emerge) emerge)
sudocmd emerge -unmerge $@ sudocmd emerge --unmerge $@
return ;; return ;;
slackpkg) slackpkg)
sudocmd removepkg $@ sudocmd /sbin/removepkg $@
return ;; return ;;
esac esac
return 1 return 1
...@@ -72,8 +72,14 @@ epm_remove_names() ...@@ -72,8 +72,14 @@ epm_remove_names()
mpkg) mpkg)
sudocmd mpkg remove $@ sudocmd mpkg remove $@
return ;; return ;;
npackd)
docmd npackdcl remove --package=$@
return ;;
chocolatey)
docmd chocolatey uninstall $@
return ;;
slackpkg) slackpkg)
sudocmd slackpkg remove $@ sudocmd /usr/sbin/slackpkg remove $@
return ;; return ;;
*) *)
fatal "Do not known command for $PMTYPE" fatal "Do not known command for $PMTYPE"
...@@ -101,15 +107,44 @@ epm_remove_nonint() ...@@ -101,15 +107,44 @@ epm_remove_nonint()
sudocmd zypper --non-interactive remove $@ sudocmd zypper --non-interactive remove $@
return ;; return ;;
slackpkg) slackpkg)
sudocmd slackpkg -batch=on -default_answer=yes remove $@ sudocmd /usr/sbin/slackpkg -batch=on -default_answer=yes remove $@
return ;; return ;;
esac esac
return 5 return 5
} }
epm_print_remove_command()
{
case $PMTYPE in
apt-rpm|yum-rpm|zypper-rpm|urpm-rpm)
echo "rpm -ev $nodeps $@"
;;
apt-dpkg)
echo "dpkg -P $@"
;;
pkg_add)
echo "pkg_delete -r $@"
;;
emerge)
echo "emerge --unmerge $@"
;;
slackpkg)
echo "/sbin/removepkg $@"
;;
*)
fatal "Do not known appropriate remove command for $PMTYPE"
;;
esac
}
epm_remove() epm_remove()
{ {
if [ -n "$show_command_only" ] ; then
epm_print_remove_command $pkg_filenames
return
fi
[ -n "$pkg_filenames" ] || fatal "Run remove without args" [ -n "$pkg_filenames" ] || fatal "Run remove without args"
epm_remove_low $pkg_filenames && return epm_remove_low $pkg_filenames && return
......
...@@ -42,6 +42,9 @@ case $PMTYPE in ...@@ -42,6 +42,9 @@ case $PMTYPE in
pacman) pacman)
echo "You need remove repo from /etc/pacman.conf" echo "You need remove repo from /etc/pacman.conf"
;; ;;
npackd)
docmd npackdcl remove-repo --url=$pkg_filenames
;;
slackpkg) slackpkg)
echo "You need remove repo from /etc/slackpkg/mirrors" echo "You need remove repo from /etc/slackpkg/mirrors"
;; ;;
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
print_apt_sources_list() print_apt_sources_list()
{ {
local i
for i in $@ ; do for i in $@ ; do
test -r "$i" || continue test -r "$i" || continue
#echo #echo
...@@ -51,10 +52,10 @@ case $PMTYPE in ...@@ -51,10 +52,10 @@ case $PMTYPE in
docmd layman -L docmd layman -L
;; ;;
pacman) pacman)
docmd cat /etc/pacman.conf docmd grep -v "^#\|^$" /etc/pacman.conf
;; ;;
slackpkg) slackpkg)
docmd cat /etc/slackpkg/mirrors docmd grep -v "^#\|^$" /etc/slackpkg/mirrors
;; ;;
*) *)
fatal "Do not known command for $PMTYPE" fatal "Do not known command for $PMTYPE"
......
...@@ -18,13 +18,10 @@ ...@@ -18,13 +18,10 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
# #
load_helper epm-packages
# TODO: combine with -qa (the difference only in return status now)
epm_requires() epm_requires()
{ {
[ -n "$pkg_filenames" ] || fatal "Run query without names" local CMD
[ -n "$pkg_filenames" ] || fatal "Run query without names"
# by file package # by file package
case $PMTYPE in case $PMTYPE in
......
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
epm_search() epm_search()
{ {
[ -n "$pkg_filenames" ] || fatal "Run search without names" local CMD
[ -n "$pkg_filenames" ] || fatal "Run search without names"
case $PMTYPE in case $PMTYPE in
apt-rpm|apt-dpkg) apt-rpm|apt-dpkg)
...@@ -49,8 +50,17 @@ case $PMTYPE in ...@@ -49,8 +50,17 @@ case $PMTYPE in
mpkg) mpkg)
CMD="mpkg search" CMD="mpkg search"
;; ;;
npackd)
fatal "FIXME: Have not idea for search with npackdcl list"
;;
chocolatey)
CMD="chocolatey list"
;;
slackpkg) slackpkg)
CMD="slackpkg search" # FIXME
echo "FIXME: need case insensitive search"
docmd_foreach "/usr/sbin/slackpkg search" $pkg_filenames
return
;; ;;
*) *)
fatal "Do not known search command for $PMTYPE" fatal "Do not known search command for $PMTYPE"
......
...@@ -29,8 +29,9 @@ local_content_search() ...@@ -29,8 +29,9 @@ local_content_search()
local REPODIR=/var/ftp/pub/ALTLinux/Sisyphus local REPODIR=/var/ftp/pub/ALTLinux/Sisyphus
local CI=$REPODIR/$SYSARCH/base/contents_index local CI=$REPODIR/$SYSARCH/base/contents_index
local CINOA=$REPODIR/noarch/base/contents_index local CINOA=$REPODIR/noarch/base/contents_index
local OUTCMD="less" #local OUTCMD="less"
[ -n "$USETTY" ] || OUTCMD="cat" #[ -n "$USETTY" ] || OUTCMD="cat"
OUTCMD="cat"
test -r $CI && test -r $CINOA || fatal "Can't locate $CI or $CINOA" test -r $CI && test -r $CINOA || fatal "Can't locate $CI or $CINOA"
...@@ -42,7 +43,8 @@ local_content_search() ...@@ -42,7 +43,8 @@ local_content_search()
epm_search_file() epm_search_file()
{ {
[ -n "$pkg_filenames" ] || fatal "Run search without names" local CMD
[ -n "$pkg_filenames" ] || fatal "Run search without names"
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
...@@ -65,7 +67,7 @@ case $PMTYPE in ...@@ -65,7 +67,7 @@ case $PMTYPE in
CMD="pacman -Qo" CMD="pacman -Qo"
;; ;;
slackpkg) slackpkg)
CMD="slackpkg file-search" CMD="/usr/sbin/slackpkg file-search"
;; ;;
*) *)
fatal "Do not known search file command for $PMTYPE" fatal "Do not known search file command for $PMTYPE"
......
...@@ -30,6 +30,10 @@ isatty() ...@@ -30,6 +30,10 @@ isatty()
check_tty() check_tty()
{ {
isatty || return isatty || return
which tput >/dev/null 2>/dev/null || return
# FreeBSD does not support tput -S
echo | tput -S >/dev/null 2>/dev/null || return
[ -z "$USETTY" ] || return
export USETTY=1 export USETTY=1
} }
...@@ -37,7 +41,7 @@ check_tty() ...@@ -37,7 +41,7 @@ check_tty()
set_boldcolor() set_boldcolor()
{ {
[ -n "$USETTY" ] || return [ "$USETTY" = "1" ] || return
{ {
echo bold echo bold
echo setaf $1 echo setaf $1
...@@ -46,7 +50,7 @@ set_boldcolor() ...@@ -46,7 +50,7 @@ set_boldcolor()
restore_color() restore_color()
{ {
[ -n "$USETTY" ] || return [ "$USETTY" = "1" ] || return
{ {
echo op; # set Original color Pair. echo op; # set Original color Pair.
echo sgr0; # turn off all special graphics mode (bold in our case). echo sgr0; # turn off all special graphics mode (bold in our case).
...@@ -56,7 +60,7 @@ restore_color() ...@@ -56,7 +60,7 @@ restore_color()
echover() echover()
{ {
[ -n "$verbose" ] || return [ -n "$verbose" ] || return
echo "$*" echo "$*" >&2
} }
# Used DISTRNAME # Used DISTRNAME
...@@ -93,6 +97,18 @@ docmd() ...@@ -93,6 +97,18 @@ docmd()
"$@" "$@"
} }
# Print command line and run command line
docmd_foreach()
{
local cmd
cmd="$1"
#showcmd "$@"
shift
for pkg in "$@" ; do
docmd $cmd $pkg
done
}
# Print command line and run command line with SUDO # Print command line and run command line with SUDO
sudocmd() sudocmd()
{ {
...@@ -127,12 +143,20 @@ fatal() ...@@ -127,12 +143,20 @@ fatal()
set_sudo() set_sudo()
{ {
SUDO=""
# skip SUDO if disabled
[ -n "$EPMNOSUDO" ] && return
# set SUDO not for root user # set SUDO not for root user
SUDO="sudo"
[ -n "$UID" ] || UID=`id -u` [ -n "$UID" ] || UID=`id -u`
if [ $UID = "0" ]; then
SUDO="" # do not need sudo
fi [ $UID = "0" ] && return
# use sudo if possible
which sudo >/dev/null 2>/dev/null && SUDO="sudo" && return
SUDO="fatal 'Can't find sudo. Please install sudo or run epm under root.'"
} }
# print options description from HELPCMD/HELPOPT lines in the code # print options description from HELPCMD/HELPOPT lines in the code
...@@ -185,6 +209,9 @@ case $DISTRNAME in ...@@ -185,6 +209,9 @@ case $DISTRNAME in
SUSE|SLED|SLES) SUSE|SLED|SLES)
CMD="zypper-rpm" CMD="zypper-rpm"
;; ;;
Windows)
CMD="chocolatey"
;;
*) *)
fatal "Do not known DISTRNAME $DISTRNAME" fatal "Do not known DISTRNAME $DISTRNAME"
;; ;;
......
...@@ -19,23 +19,22 @@ ...@@ -19,23 +19,22 @@
# #
load_helper epm-install load_helper epm-install
load_helper epm-search
epm_simulate() _epm_do_simulate()
{ {
local CMD local CMD
[ -z "$pkg_filenames" ] && echo "Skip empty list" && return 2 local filenames=$@
local filenames="$(echo $pkg_filenames | filter_out_installed_packages)"
[ -z "$filenames" ] && echo "All packages are already installed" && return 2
case $PMTYPE in case $PMTYPE in
apt-rpm|apt-dpkg) apt-rpm|apt-dpkg)
CMD="apt-get --simulate install" CMD="apt-get --simulate install"
;; ;;
yum-rpm) yum-rpm)
CMD="yum provides" LC_ALL=C sudocmd yum --assumeno install $filenames
;; # FIXME: check only error output
LC_ALL=C sudocmd yum --assumeno install $filenames 2>&1 | grep "^No package" && return 1
return 0 ;;
urpm-rpm) urpm-rpm)
CMD="urpmi --test --auto" CMD="urpmi --test --auto"
;; ;;
...@@ -50,8 +49,18 @@ epm_simulate() ...@@ -50,8 +49,18 @@ epm_simulate()
echo no | $SUDO pacman -v -S $filenames echo no | $SUDO pacman -v -S $filenames
return ;; return ;;
slackpkg) slackpkg)
docmd slackpkg -batch=on -default_answer=yes download #docmd /usr/sbin/slackpkg -batch=on -default_answer=yes download
;; # just try search every package
# FIXME: epm_search have to return false status code if the package does not found
local pkg res
res=0
for pkg in $filenames ; do
pkg_filenames="$pkg-[0-9]" epm_search | grep -E "(installed|upgrade)" && continue
pkg_filenames="$pkg" epm_search | grep -E "(installed|upgrade)" && continue
res=1
echo "Does not found in repository."
done
return $res ;;
*) *)
fatal "Do not known simulate command for $PMTYPE" fatal "Do not known simulate command for $PMTYPE"
;; ;;
...@@ -60,3 +69,19 @@ epm_simulate() ...@@ -60,3 +69,19 @@ epm_simulate()
sudocmd $CMD $filenames sudocmd $CMD $filenames
} }
epm_simulate()
{
[ -z "$pkg_filenames" ] && echo "Skip empty list" && return 2
local filenames="$(echo $pkg_filenames | filter_out_installed_packages)"
[ -z "$filenames" ] && echo "All packages are already installed" && return 0
_epm_do_simulate $filenames
local RES=$?
if [ -z "$quiet" ] ; then
[ "$RES" = 0 ] && echo "Result: $filenames package(s) CAN BE installed" || echo "Result: There are PROBLEMS with install some package(s)"
fi
return $RES
}
...@@ -48,7 +48,7 @@ case $PMTYPE in ...@@ -48,7 +48,7 @@ case $PMTYPE in
sudocmd emerge --sync sudocmd emerge --sync
;; ;;
slackpkg) slackpkg)
sudocmd slackpkg update sudocmd /usr/sbin/slackpkg update
;; ;;
*) *)
fatal "Do not known update command for $PMTYPE" fatal "Do not known update command for $PMTYPE"
......
...@@ -20,8 +20,10 @@ ...@@ -20,8 +20,10 @@
epm_upgrade() epm_upgrade()
{ {
echo "Run command for upgrade packages" local CMD
case $PMTYPE in echo "Run command for upgrade packages"
case $PMTYPE in
apt-rpm|apt-dpkg) apt-rpm|apt-dpkg)
# FIXME: apt-get update before # FIXME: apt-get update before
CMD="apt-get dist-upgrade" CMD="apt-get dist-upgrade"
...@@ -45,13 +47,16 @@ epm_upgrade() ...@@ -45,13 +47,16 @@ epm_upgrade()
pkg_add) pkg_add)
CMD="freebsd-update fetch install" CMD="freebsd-update fetch install"
;; ;;
chocolatey)
CMD="chocolatey update all"
;;
slackpkg) slackpkg)
CMD="slackpkg upgrade-all" CMD="/usr/sbin/slackpkg upgrade-all"
;; ;;
*) *)
fatal "Do not known command for $PMTYPE" fatal "Do not known command for $PMTYPE"
;; ;;
esac esac
sudocmd $CMD $pkg_filenames sudocmd $CMD $pkg_filenames
} }
# This spec is backported to ALTLinux p6 automatically by rpmbph script. Do not edit it. # This spec is backported to ALTLinux p6 automatically by rpmbph script. Do not edit it.
# #
Name: eepm Name: eepm
Version: 1.0.2 Version: 1.0.6
Release: alt0.M60P.1 Release: alt0.M60P.1
Summary: Etersoft EPM package manager Summary: Etersoft EPM package manager
...@@ -51,9 +51,44 @@ with various distros. ...@@ -51,9 +51,44 @@ with various distros.
%_bindir/distr_info %_bindir/distr_info
%changelog %changelog
* Fri Oct 05 2012 Vitaly Lipatov <lav@altlinux.ru> 1.0.2-alt0.M60P.1 * Sat Nov 24 2012 Vitaly Lipatov <lav@altlinux.ru> 1.0.6-alt0.M60P.1
- backport to ALTLinux p6 (by rpmbph script) - backport to ALTLinux p6 (by rpmbph script)
* Sat Nov 24 2012 Vitaly Lipatov <lav@altlinux.ru> 1.0.6-alt1
- epm: add changelog (cl) command
- add support for work without tput, with uncompat tput, allow USETTY=0 for disable tput use
- epm: write verbose output to stderr
- epm-filelist: add support for filelist of file package
- epm-query: add support for query file package
- epm-info: rewrite for support low level and hi level package info
- epm-simulate: return 0 if all needed packages are already installed
* Mon Oct 29 2012 Vitaly Lipatov <lav@altlinux.ru> 1.0.5-alt1
- epm-simulate: fix for non numeric version on Slackware (libjpeg-v8a)
- epm: intoduce autoremove command
- epm-search_file: do not use less
- epm-query_file: query package for every full path, not only last
* Fri Oct 26 2012 Vitaly Lipatov <lav@altlinux.ru> 1.0.4-alt1
- epm-simulate: fix simulate for yum
- epm-simulate: realize simulate for slackware
- epm-search: fix search for multiple packages in slackware
- epm-query: fix query for multiple names
- epm-query_file: more clean output on Slackware
- epm-simulate: print out result of the check
* Mon Oct 22 2012 Vitaly Lipatov <lav@altlinux.ru> 1.0.3-alt1
- rewrite set_sudo, skip SUDO if env. var EPMNOSUDO is not empty
- add initial support for window package manager Chocolatey
- add initial support for windows package manager Npackd
- epm-filelist: print package file list for slackware
- epm-query_file: add slackware support (thanks, bormant)
- distr_info: grep version from /etc/slackware-version (thanks, bormant)
- set_sudo: print fatal error if needed absent sudo
- use full path to slackpkg/installpkg/removepkg on Slackware (thanks, bormant)
- epm-remove: add support for --show-command-only (thanks, bormant)
- epm-repolist: fix grep source list (thanks, bormant)
* Tue Sep 18 2012 Vitaly Lipatov <lav@altlinux.ru> 1.0.2-alt1 * Tue Sep 18 2012 Vitaly Lipatov <lav@altlinux.ru> 1.0.2-alt1
- replace all docmd $SUDO with sudocmd call - replace all docmd $SUDO with sudocmd call
- fix install package rpm-build-altlinux-compat via package fullname - fix install package rpm-build-altlinux-compat via package fullname
......
#!/bin/sh
cepm()
{
echo
../bin/epm --verbose $@ >/dev/null
}
cepm changelog mc
cepm filelist mc
cepm info mc
cepm -q mc
cepm -qf mc
cepm requires mc
# query packages
#cepm -qp mc
#cepm install mc
#cepm packages mc
#cepm search mc
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