Commit f204e69b authored by Vitaly Lipatov's avatar Vitaly Lipatov

epm: replace tab with 4 spaces

parent 4bc2d877
...@@ -67,7 +67,7 @@ check_tty ...@@ -67,7 +67,7 @@ check_tty
phelp() phelp()
{ {
echo "$Descr echo "$Descr
$Usage $Usage
Options: Options:
......
...@@ -22,6 +22,6 @@ load_helper epm-upgrade ...@@ -22,6 +22,6 @@ load_helper epm-upgrade
epm_Upgrade() epm_Upgrade()
{ {
epm_update epm_update
epm_upgrade "$@" epm_upgrade "$@"
} }
...@@ -23,12 +23,12 @@ epm_audit() ...@@ -23,12 +23,12 @@ epm_audit()
[ -z "$pkg_filenames" ] || fatal "No arguments are allowed here" [ -z "$pkg_filenames" ] || fatal "No arguments are allowed here"
case $PMTYPE in case $PMTYPE in
pkgng) pkgng)
sudocmd pkg audit -F sudocmd pkg audit -F
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
__epm_orphan_altrpm() __epm_orphan_altrpm()
{ {
docmd apt-cache list-extras docmd apt-cache list-extras
} }
epm_autoorphans() epm_autoorphans()
...@@ -29,113 +29,113 @@ epm_autoorphans() ...@@ -29,113 +29,113 @@ epm_autoorphans()
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
# ALT Linux only # ALT Linux only
assure_exists /usr/share/apt/scripts/list-extras.lua apt-scripts assure_exists /usr/share/apt/scripts/list-extras.lua apt-scripts
if [ -z "$dryrun" ] ; then if [ -z "$dryrun" ] ; then
echo "We will try remove all installed packages which are missed in repositories" echo "We will try remove all installed packages which are missed in repositories"
warning "Use with caution!" warning "Use with caution!"
fi fi
epm Upgrade || fatal epm Upgrade || fatal
local PKGLIST=$(__epm_orphan_altrpm \ local PKGLIST=$(__epm_orphan_altrpm \
| sed -e "s/\.32bit//g" \ | sed -e "s/\.32bit//g" \
| grep -v -- "^eepm$" \ | grep -v -- "^eepm$" \
| grep -v -- "^distro_info$" \ | grep -v -- "^distro_info$" \
| grep -v -- "^kernel") | grep -v -- "^kernel")
local play_installed="$(epm play --list-installed-packages)" local play_installed="$(epm play --list-installed-packages)"
if [ -n "$play_installed" ] ; then if [ -n "$play_installed" ] ; then
echo "Skip follow packages installed via epm play: $play_installed" echo "Skip follow packages installed via epm play: $play_installed"
fi fi
PKGLIST="$(estrlist exclude "$play_installed" "$PKGLIST")" PKGLIST="$(estrlist exclude "$play_installed" "$PKGLIST")"
if [ -z "$dryrun" ] && [ -n "$PKGLIST" ] ; then if [ -z "$dryrun" ] && [ -n "$PKGLIST" ] ; then
showcmd epm remove $dryrun $force $PKGLIST showcmd epm remove $dryrun $force $PKGLIST
confirm_info "We will remove packages above." confirm_info "We will remove packages above."
fi fi
# if [ -n "$dryrun" ] ; then # if [ -n "$dryrun" ] ; then
# echo "$PKGLIST" # echo "$PKGLIST"
# else # else
docmd epm remove $dryrun $force $(subst_option non_interactive --auto) $PKGLIST docmd epm remove $dryrun $force $(subst_option non_interactive --auto) $PKGLIST
# fi # fi
;; ;;
apt-dpkg|aptitude-dpkg) apt-dpkg|aptitude-dpkg)
assure_exists deborphan assure_exists deborphan
showcmd deborphan showcmd deborphan
a='' deborphan | docmd epm remove $dryrun a='' deborphan | docmd epm remove $dryrun
;; ;;
#aura) #aura)
# sudocmd aura -Oj # sudocmd aura -Oj
# ;; # ;;
yum-rpm) yum-rpm)
docmd epm upgrade docmd epm upgrade
assure_exists package-cleanup yum-utils assure_exists package-cleanup yum-utils
showcmd package-cleanup --orphans showcmd package-cleanup --orphans
local PKGLIST=$(package-cleanup -q --orphans | grep -v "^eepm-") local PKGLIST=$(package-cleanup -q --orphans | grep -v "^eepm-")
docmd epm remove $dryrun $PKGLIST docmd epm remove $dryrun $PKGLIST
;; ;;
dnf-rpm) dnf-rpm)
# TODO: dnf list extras # TODO: dnf list extras
docmd epm upgrade docmd epm upgrade
assure_exists package-cleanup dnf-utils assure_exists package-cleanup dnf-utils
showcmd package-cleanup --orphans showcmd package-cleanup --orphans
local PKGLIST=$(package-cleanup -q --orphans | grep -v "^eepm-") local PKGLIST=$(package-cleanup -q --orphans | grep -v "^eepm-")
docmd epm remove $dryrun $PKGLIST docmd epm remove $dryrun $PKGLIST
;; ;;
urpm-rpm) urpm-rpm)
if [ -n "$dryrun" ] ; then if [ -n "$dryrun" ] ; then
fatal "--dry-run is not supported yet" fatal "--dry-run is not supported yet"
else else
showcmd urpme --report-orphans showcmd urpme --report-orphans
sudocmd urpme --auto-orphans sudocmd urpme --auto-orphans
fi fi
;; ;;
#emerge) #emerge)
# sudocmd emerge --depclean # sudocmd emerge --depclean
# assure_exists revdep-rebuild # assure_exists revdep-rebuild
# sudocmd revdep-rebuild # sudocmd revdep-rebuild
# ;; # ;;
pacman) pacman)
if [ -n "$dryrun" ] ; then if [ -n "$dryrun" ] ; then
info "Autoorphans packages list:" info "Autoorphans packages list:"
sudocmd pacman -Qdtq sudocmd pacman -Qdtq
else else
sudocmd pacman -Qdtq | sudocmd pacman -Rs - sudocmd pacman -Qdtq | sudocmd pacman -Rs -
fi fi
;; ;;
slackpkg) slackpkg)
# clean-system removes non official packages # clean-system removes non official packages
sudocmd slackpkg clean-system sudocmd slackpkg clean-system
;; ;;
eopkg) eopkg)
sudocmd eopkg remove-orphans sudocmd eopkg remove-orphans
;; ;;
#guix) #guix)
# sudocmd guix gc # sudocmd guix gc
# ;; # ;;
#pkgng) #pkgng)
# sudocmd pkg autoremove # sudocmd pkg autoremove
# ;; # ;;
zypper-rpm) zypper-rpm)
# https://www.linux.org.ru/forum/desktop/11931830 # https://www.linux.org.ru/forum/desktop/11931830
assure_exists zypper zypper 1.9.2 assure_exists zypper zypper 1.9.2
# For zypper < 1.9.2: zypper se -si | grep 'System Packages' # For zypper < 1.9.2: zypper se -si | grep 'System Packages'
sudocmd zypper packages --orphaned sudocmd zypper packages --orphaned
# FIXME: x86_64/i586 are duplicated # FIXME: x86_64/i586 are duplicated
local PKGLIST=$(zypper packages --orphaned | tail -n +5 | cut -d \| -f 3 | sort -u) local PKGLIST=$(zypper packages --orphaned | tail -n +5 | cut -d \| -f 3 | sort -u)
docmd epm remove $dryrun --clean-deps $PKGLIST docmd epm remove $dryrun --clean-deps $PKGLIST
;; ;;
xbps) xbps)
if [ -n "$dryrun" ] ; then if [ -n "$dryrun" ] ; then
fatal "--dry-run is not supported yet" fatal "--dry-run is not supported yet"
else else
sudocmd xbps-remove -o sudocmd xbps-remove -o
fi fi
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -21,101 +21,101 @@ load_helper epm-query ...@@ -21,101 +21,101 @@ load_helper epm-query
__epm_changelog_apt() __epm_changelog_apt()
{ {
local i local i
for i in $@ ; do for i in $@ ; do
docmd apt-cache show $i | grep -A 1000 "^Changelog:" docmd apt-cache show $i | grep -A 1000 "^Changelog:"
done done
} }
__epm_changelog_files() __epm_changelog_files()
{ {
[ -z "$*" ] && return [ -z "$*" ] && return
# TODO: detect every file # TODO: detect every file
case $(get_package_type $1) in case $(get_package_type $1) in
rpm) rpm)
assure_exists rpm assure_exists rpm
docmd_foreach "rpm -q -p --changelog" $@ docmd_foreach "rpm -q -p --changelog" $@
;; ;;
# deb) # deb)
# #
# ;; # ;;
*) *)
fatal "Have no suitable command for $1" fatal "Have no suitable command for $1"
;; ;;
esac esac
} }
__epm_changelog_local_names() __epm_changelog_local_names()
{ {
[ -z "$*" ] && return [ -z "$*" ] && return
case $PMTYPE in case $PMTYPE in
apt-rpm|yum-rpm|dnf-rpm|urpm-rpm|zypper-rpm) apt-rpm|yum-rpm|dnf-rpm|urpm-rpm|zypper-rpm)
docmd_foreach "rpm -q --changelog" $@ docmd_foreach "rpm -q --changelog" $@
;; ;;
apt-dpkg|aptitude-dpkg) apt-dpkg|aptitude-dpkg)
docmd zcat /usr/share/doc/$1/changelog.Debian.gz docmd zcat /usr/share/doc/$1/changelog.Debian.gz
;; ;;
emerge) emerge)
assure_exists equery assure_exists equery
docmd equery changes -f $1 docmd equery changes -f $1
;; ;;
pacman) pacman)
docmd pacman -Qc $1 docmd pacman -Qc $1
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
__epm_changelog_unlocal_names() __epm_changelog_unlocal_names()
{ {
[ -z "$*" ] && return [ -z "$*" ] && return
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
__epm_changelog_apt "$1" __epm_changelog_apt "$1"
;; ;;
#apt-dpkg) #apt-dpkg)
# # FIXME: only first pkg # # FIXME: only first pkg
# docmd zcat /usr/share/doc/$1/changelog.Debian.gz | less # docmd zcat /usr/share/doc/$1/changelog.Debian.gz | less
# ;; # ;;
#yum-rpm) #yum-rpm)
# sudocmd yum clean all # sudocmd yum clean all
# ;; # ;;
urpm-rpm) urpm-rpm)
docmd urpmq --changelog "$1" docmd urpmq --changelog "$1"
;; ;;
#zypper-rpm) #zypper-rpm)
# sudocmd zypper clean # sudocmd zypper clean
# ;; # ;;
emerge) emerge)
assure_exists equery assure_exists equery
docmd equery changes -f "$1" docmd equery changes -f "$1"
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE. Try install the package firstly." fatal "Have no suitable command for $PMTYPE. Try install the package firstly."
;; ;;
esac esac
} }
epm_changelog() epm_changelog()
{ {
[ -n "$pkg_filenames" ] || fatal "Changelog: Missing package(s) name" [ -n "$pkg_filenames" ] || fatal "Changelog: Missing package(s) name"
__epm_changelog_files $pkg_files __epm_changelog_files $pkg_files
# TODO: add less or bat # TODO: add less or bat
local pkg local pkg
for pkg in $pkg_names ; do for pkg in $pkg_names ; do
if is_installed $pkg ; then if is_installed $pkg ; then
__epm_changelog_local_names $pkg __epm_changelog_local_names $pkg
else else
__epm_changelog_unlocal_names $pkg __epm_changelog_unlocal_names $pkg
fi fi
done done
} }
...@@ -25,60 +25,60 @@ update_repo_if_needed ...@@ -25,60 +25,60 @@ update_repo_if_needed
local APTOPTIONS="$(subst_option non_interactive -y)" local APTOPTIONS="$(subst_option non_interactive -y)"
local DNFOPTIONS="$(subst_option non_interactive -y) $(subst_option verbose --verbose) " local DNFOPTIONS="$(subst_option non_interactive -y) $(subst_option verbose --verbose) "
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
#sudocmd apt-get check || exit #sudocmd apt-get check || exit
#sudocmd apt-get update || exit #sudocmd apt-get update || exit
sudocmd apt-get -f $APTOPTIONS install || return sudocmd apt-get -f $APTOPTIONS install || return
info "You can use epm dedup also" info "You can use epm dedup also"
;; ;;
apt-dpkg) apt-dpkg)
#sudocmd apt-get check || exit #sudocmd apt-get check || exit
#sudocmd apt-get update || exit #sudocmd apt-get update || exit
sudocmd apt-get -f $APTOPTIONS install || return sudocmd apt-get -f $APTOPTIONS install || return
;; ;;
packagekit) packagekit)
docmd pkcon repair docmd pkcon repair
;; ;;
aptitude-dpkg) aptitude-dpkg)
sudocmd aptitude -f $APTOPTIONS install || return sudocmd aptitude -f $APTOPTIONS install || return
#sudocmd apt-get autoremove #sudocmd apt-get autoremove
;; ;;
yum-rpm) yum-rpm)
docmd yum check $DNFOPTIONS docmd yum check $DNFOPTIONS
docmd package-cleanup --problems docmd package-cleanup --problems
#docmd package-cleanup --dupes #docmd package-cleanup --dupes
sudocmd package-cleanup --cleandupes sudocmd package-cleanup --cleandupes
docmd rpm -Va --nofiles --nodigest docmd rpm -Va --nofiles --nodigest
;; ;;
dnf-rpm) dnf-rpm)
sudocmd dnf check $DNFOPTIONS sudocmd dnf check $DNFOPTIONS
;; ;;
emerge) emerge)
sudocmd revdep-rebuild sudocmd revdep-rebuild
;; ;;
#urpm-rpm) #urpm-rpm)
# sudocmd urpme --auto-orphans # sudocmd urpme --auto-orphans
# ;; # ;;
zypper-rpm) zypper-rpm)
sudocmd zypper $(subst_option non_interactive --non-interactive) verify sudocmd zypper $(subst_option non_interactive --non-interactive) verify
;; ;;
conary) conary)
sudocmd conary verify sudocmd conary verify
;; ;;
pkgng) pkgng)
sudocmd pkg check -d -a sudocmd pkg check -d -a
;; ;;
homebrew) homebrew)
docmd brew doctor docmd brew doctor
;; ;;
xbps) xbps)
sudocmd xbps-pkgdb -a sudocmd xbps-pkgdb -a
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -74,21 +74,21 @@ update_repo_if_needed() ...@@ -74,21 +74,21 @@ update_repo_if_needed()
# save manually installed packages # save manually installed packages
save_installed_packages() save_installed_packages()
{ {
[ -d /var/lib/rpm ] || return 0 [ -d /var/lib/rpm ] || return 0
estrlist list "$@" | sudorun tee /var/lib/rpm/EPM-installed >/dev/null estrlist list "$@" | sudorun tee /var/lib/rpm/EPM-installed >/dev/null
} }
check_manually_installed() check_manually_installed()
{ {
[ -r /var/lib/rpm/EPM-installed ] || return 1 [ -r /var/lib/rpm/EPM-installed ] || return 1
grep -q -- "^$1\$" /var/lib/rpm/EPM-installed grep -q -- "^$1\$" /var/lib/rpm/EPM-installed
} }
skip_manually_installed() skip_manually_installed()
{ {
local i local i
for i in "$@" ; do for i in "$@" ; do
check_manually_installed "$i" && continue check_manually_installed "$i" && continue
echo "$i" echo "$i"
done done
} }
...@@ -25,82 +25,82 @@ __rpm_allows_nosignature() ...@@ -25,82 +25,82 @@ __rpm_allows_nosignature()
check_pkg_integrity() check_pkg_integrity()
{ {
local PKG="$1" local PKG="$1"
local RET local RET
local NOSIGNATURE local NOSIGNATURE
case $(get_package_type $PKG) in case $(get_package_type $PKG) in
rpm) rpm)
assure_exists rpm assure_exists rpm
__rpm_allows_nosignature && NOSIGNATURE="--nosignature" || NOSIGNATURE="--nogpg" __rpm_allows_nosignature && NOSIGNATURE="--nosignature" || NOSIGNATURE="--nogpg"
docmd rpm --checksig $NOSIGNATURE $PKG docmd rpm --checksig $NOSIGNATURE $PKG
;; ;;
deb) deb)
assure_exists dpkg assure_exists dpkg
# FIXME: debsums -ca package ? # FIXME: debsums -ca package ?
docmd dpkg --contents $PKG >/dev/null && echo "Package $PKG is correct." docmd dpkg --contents $PKG >/dev/null && echo "Package $PKG is correct."
;; ;;
exe) exe)
file $PKG | grep -q "executable for MS Windows" file $PKG | grep -q "executable for MS Windows"
;; ;;
msi) msi)
# TODO: add to patool via cabextract # TODO: add to patool via cabextract
assure_exists cabextract assure_exists cabextract
#file $PKG | grep -q "Microsoft Office Document" #file $PKG | grep -q "Microsoft Office Document"
docmd cabextract -t $PKG docmd cabextract -t $PKG
;; ;;
ebuild) ebuild)
true true
;; ;;
*) *)
docmd erc test "$PKG" && return docmd erc test "$PKG" && return
;; ;;
esac esac
} }
__epm_check_all_pkgs() __epm_check_all_pkgs()
{ {
case $PMTYPE in case $PMTYPE in
eopkg) eopkg)
sudocmd eopkg check sudocmd eopkg check
return return
;; ;;
esac esac
local j cl local j cl
#local play_installed="$(epm play --list-installed-packages)" #local play_installed="$(epm play --list-installed-packages)"
epm qa --short | xargs -n20 | while read cl ; do epm qa --short | xargs -n20 | while read cl ; do
#cl="$(estrlist exclude "$play_installed" "$i")" #cl="$(estrlist exclude "$play_installed" "$i")"
__epm_check_installed_pkg $cl && continue __epm_check_installed_pkg $cl && continue
# check each package # check each package
for j in $cl ; do for j in $cl ; do
__epm_check_installed_pkg $j && continue __epm_check_installed_pkg $j && continue
# TODO: check play installed too # TODO: check play installed too
epm --auto reinstall $j </dev/null || exit epm --auto reinstall $j </dev/null || exit
done done
done done
} }
__epm_check_installed_pkg() __epm_check_installed_pkg()
{ {
case $PMTYPE in case $PMTYPE in
*-rpm) *-rpm)
docmd rpm -V $@ docmd rpm -V $@
;; ;;
*-dpkg) *-dpkg)
assure_exists debsums assure_exists debsums
docmd debsums $@ docmd debsums $@
;; ;;
emerge) emerge)
assure_exists equery assure_exists equery
docmd equery check $@ docmd equery check $@
;; ;;
eopkg) eopkg)
sudocmd eopkg check $@ sudocmd eopkg check $@
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -108,37 +108,37 @@ esac ...@@ -108,37 +108,37 @@ esac
epm_checkpkg() epm_checkpkg()
{ {
if [ "$1" = "--all" ] ; then if [ "$1" = "--all" ] ; then
__epm_check_all_pkgs __epm_check_all_pkgs
return return
fi fi
if [ -n "$pkg_names" ] ; then if [ -n "$pkg_names" ] ; then
# TODO: если есть / или расширение, это отсутствующий файл # TODO: если есть / или расширение, это отсутствующий файл
info "Suggest $pkg_names are name(s) of installed package(s)" info "Suggest $pkg_names are name(s) of installed package(s)"
__epm_check_installed_pkg $pkg_names __epm_check_installed_pkg $pkg_names
return return
fi fi
# if possible, it will put pkg_urls into pkg_files or pkg_names # if possible, it will put pkg_urls into pkg_files or pkg_names
if [ -n "$pkg_urls" ] ; then if [ -n "$pkg_urls" ] ; then
load_helper epm-download load_helper epm-download
__handle_pkg_urls_to_checking __handle_pkg_urls_to_checking
fi fi
[ -n "$pkg_files" ] || fatal "Checkpkg: filename(s) is missed" [ -n "$pkg_files" ] || fatal "Checkpkg: filename(s) is missed"
local RETVAL=0 local RETVAL=0
local pkg local pkg
for pkg in $pkg_files ; do for pkg in $pkg_files ; do
check_pkg_integrity $pkg || RETVAL=1 check_pkg_integrity $pkg || RETVAL=1
done done
# TODO: reinvent # TODO: reinvent
[ -n "$to_remove_pkg_files" ] && rm -fv $to_remove_pkg_files [ -n "$to_remove_pkg_files" ] && rm -fv $to_remove_pkg_files
[ -n "$to_remove_pkg_files" ] && rmdir -v $(dirname $to_remove_pkg_files | head -n1) 2>/dev/null [ -n "$to_remove_pkg_files" ] && rmdir -v $(dirname $to_remove_pkg_files | head -n1) 2>/dev/null
#fatal "Broken package $pkg" #fatal "Broken package $pkg"
return $RETVAL return $RETVAL
} }
...@@ -21,23 +21,23 @@ ...@@ -21,23 +21,23 @@
__alt_fix_triggers() __alt_fix_triggers()
{ {
local TDIR=$(mktemp -d) local TDIR=$(mktemp -d)
assure_exists time assure_exists time
touch $TDIR/added touch $TDIR/added
for ft in $(ls /usr/lib/rpm/*.filetrigger | sort) ; do for ft in $(ls /usr/lib/rpm/*.filetrigger | sort) ; do
echo "Try run $ft ..." echo "Try run $ft ..."
echo $TDIR/added $TDIR/removed | a='' time $ft echo $TDIR/added $TDIR/removed | a='' time $ft
done done
rm -f $TDIR/added fatal rm -f $TDIR/added fatal
rmdir $TDIR || fatal rmdir $TDIR || fatal
echo "Count lines:" echo "Count lines:"
wc -l /var/lib/rpm/files-awaiting-filetriggers wc -l /var/lib/rpm/files-awaiting-filetriggers
} }
epm_checksystem_ALTLinux() epm_checksystem_ALTLinux()
{ {
fatal "Not yet implemented" fatal "Not yet implemented"
#__alt_fix_triggers #__alt_fix_triggers
} }
...@@ -47,27 +47,27 @@ epm_checksystem() ...@@ -47,27 +47,27 @@ epm_checksystem()
is_root && fatal "Do not use checksystem under root" is_root && fatal "Do not use checksystem under root"
case $PMTYPE in case $PMTYPE in
homebrew) homebrew)
sudocmd brew doctor sudocmd brew doctor
return return
;; ;;
esac esac
case $BASEDISTRNAME in case $BASEDISTRNAME in
"alt") "alt")
epm_checksystem_$DISTRNAME epm_checksystem_$DISTRNAME
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
# direct debug run # direct debug run
if [ "$1" = "--debug" ] ; then if [ "$1" = "--debug" ] ; then
shift shift
SUDO=sudo SUDO=sudo
DISTRNAME=ALTLinux DISTRNAME=ALTLinux
epm_checksystem epm_checksystem
fi fi
...@@ -19,19 +19,19 @@ ...@@ -19,19 +19,19 @@
__remove_alt_apt_cache_file() __remove_alt_apt_cache_file()
{ {
sudocmd rm -vf /var/cache/apt/*.bin sudocmd rm -vf /var/cache/apt/*.bin
sudocmd rm -vf /var/cache/apt/partial/* sudocmd rm -vf /var/cache/apt/partial/*
sudocmd rm -vf /var/lib/apt/lists/*pkglist* sudocmd rm -vf /var/lib/apt/lists/*pkglist*
sudocmd rm -vf /var/lib/apt/lists/*release* sudocmd rm -vf /var/lib/apt/lists/*release*
} }
__remove_deb_apt_cache_file() __remove_deb_apt_cache_file()
{ {
sudocmd rm -vf /var/cache/apt/*.bin sudocmd rm -vf /var/cache/apt/*.bin
sudocmd rm -vf /var/cache/apt/archives/partial/* sudocmd rm -vf /var/cache/apt/archives/partial/*
sudocmd rm -vf /var/lib/apt/lists/*Packages* sudocmd rm -vf /var/lib/apt/lists/*Packages*
sudocmd rm -vf /var/lib/apt/lists/*Release* sudocmd rm -vf /var/lib/apt/lists/*Release*
sudocmd rm -vf /var/lib/apt/lists/*Translation* sudocmd rm -vf /var/lib/apt/lists/*Translation*
} }
epm_clean() epm_clean()
...@@ -41,58 +41,58 @@ epm_clean() ...@@ -41,58 +41,58 @@ epm_clean()
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
sudocmd apt-get clean sudocmd apt-get clean
[ -n "$force" ] && __remove_alt_apt_cache_file [ -n "$force" ] && __remove_alt_apt_cache_file
;; ;;
apt-dpkg) apt-dpkg)
sudocmd apt-get clean sudocmd apt-get clean
[ -n "$force" ] && __remove_deb_apt_cache_file [ -n "$force" ] && __remove_deb_apt_cache_file
;; ;;
aptitude-dpkg) aptitude-dpkg)
sudocmd aptitude clean sudocmd aptitude clean
[ -n "$force" ] && __remove_deb_apt_cache_file [ -n "$force" ] && __remove_deb_apt_cache_file
;; ;;
yum-rpm) yum-rpm)
sudocmd yum clean all sudocmd yum clean all
#sudocmd yum makecache #sudocmd yum makecache
;; ;;
dnf-rpm) dnf-rpm)
sudocmd dnf clean all sudocmd dnf clean all
;; ;;
urpm-rpm) urpm-rpm)
sudocmd urpmi --clean sudocmd urpmi --clean
;; ;;
homebrew) homebrew)
sudocmd brew cleanup -s sudocmd brew cleanup -s
;; ;;
pacman) pacman)
sudocmd pacman -Sc --noconfirm sudocmd pacman -Sc --noconfirm
;; ;;
zypper-rpm) zypper-rpm)
sudocmd zypper clean sudocmd zypper clean
;; ;;
nix) nix)
sudocmd nix-collect-garbage sudocmd nix-collect-garbage
;; ;;
slackpkg) slackpkg)
;; ;;
eopkg) eopkg)
sudocmd eopkg delete-cache sudocmd eopkg delete-cache
;; ;;
pkgng) pkgng)
sudocmd pkg clean -a sudocmd pkg clean -a
;; ;;
appget|winget) appget|winget)
sudocmd $PMTYPE clean sudocmd $PMTYPE clean
;; ;;
xbps) xbps)
sudocmd xbps-remove -O sudocmd xbps-remove -O
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
info "Note: Also you can try (with CAUTION) '# epm autoremove' and '# epm autoorphans' commands to remove obsoleted and unused packages." info "Note: Also you can try (with CAUTION) '# epm autoremove' and '# epm autoorphans' commands to remove obsoleted and unused packages."
} }
...@@ -21,75 +21,75 @@ load_helper epm-query ...@@ -21,75 +21,75 @@ load_helper epm-query
epm_conflicts_files() epm_conflicts_files()
{ {
[ -n "$pkg_files" ] || return [ -n "$pkg_files" ] || return
case $(get_package_type $pkg_files) in case $(get_package_type $pkg_files) in
rpm) rpm)
assure_exists rpm assure_exists rpm
docmd rpm -q --conflicts -p $pkg_files docmd rpm -q --conflicts -p $pkg_files
;; ;;
#deb) #deb)
# a= docmd dpkg -I $pkg_files | grep "^ *Depends:" | sed "s|^ *Depends:||g" # a= docmd dpkg -I $pkg_files | grep "^ *Depends:" | sed "s|^ *Depends:||g"
# ;; # ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
epm_conflicts_names() epm_conflicts_names()
{ {
local CMD local CMD
[ -n "$pkg_names" ] || return [ -n "$pkg_names" ] || return
# by package name # by package name
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
# FIXME: need fix for a few names case # FIXME: need fix for a few names case
# FIXME: too low level of requires name (libSOME.so) # FIXME: too low level of requires name (libSOME.so)
if is_installed $pkg_names ; then if is_installed $pkg_names ; then
CMD="rpm -q --conflicts" CMD="rpm -q --conflicts"
else else
EXTRA_SHOWDOCMD=' | grep "Conflicts:"' EXTRA_SHOWDOCMD=' | grep "Conflicts:"'
docmd apt-cache show $pkg_names | grep "Conflicts:" docmd apt-cache show $pkg_names | grep "Conflicts:"
return return
fi fi
;; ;;
urpm-rpm|zypper-rpm) urpm-rpm|zypper-rpm)
# FIXME: use hi level commands # FIXME: use hi level commands
CMD="rpm -q --conflicts" CMD="rpm -q --conflicts"
;; ;;
#yum-rpm) #yum-rpm)
# CMD="yum deplist" # CMD="yum deplist"
# ;; # ;;
#pacman) #pacman)
# CMD="pactree" # CMD="pactree"
# ;; # ;;
apt-dpkg) apt-dpkg)
# FIXME: need fix for a few names case # FIXME: need fix for a few names case
if is_installed $pkg_names ; then if is_installed $pkg_names ; then
showcmd dpkg -s $pkg_names showcmd dpkg -s $pkg_names
a='' dpkg -s $pkg_names | grep "^Conflicts:" | sed "s|^Conflicts:||g" a='' dpkg -s $pkg_names | grep "^Conflicts:" | sed "s|^Conflicts:||g"
return return
else else
EXTRA_SHOWDOCMD=' | grep "Conflicts:"' EXTRA_SHOWDOCMD=' | grep "Conflicts:"'
docmd apt-cache show $pkg_names | grep "Conflicts:" docmd apt-cache show $pkg_names | grep "Conflicts:"
return return
fi fi
;; ;;
# TODO: why-not show who conflicts with us # TODO: why-not show who conflicts with us
#aptitude-dpkg) #aptitude-dpkg)
# docmd aptitude why-not $pkg_names # docmd aptitude why-not $pkg_names
# ;; # ;;
#emerge) #emerge)
# assure_exists equery # assure_exists equery
# CMD="equery depgraph" # CMD="equery depgraph"
# ;; # ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
...@@ -99,7 +99,7 @@ docmd $CMD $pkg_names ...@@ -99,7 +99,7 @@ docmd $CMD $pkg_names
epm_conflicts() epm_conflicts()
{ {
[ -n "$pkg_filenames" ] || fatal "Conflicts: Missing package(s) name" [ -n "$pkg_filenames" ] || fatal "Conflicts: Missing package(s) name"
epm_conflicts_files epm_conflicts_files
epm_conflicts_names epm_conflicts_names
} }
...@@ -20,49 +20,49 @@ ...@@ -20,49 +20,49 @@
# remove duplicates # remove duplicates
try_fix_apt_rpm_dupls() try_fix_apt_rpm_dupls()
{ {
info "Check for duplicates (internal implementation) ..." info "Check for duplicates (internal implementation) ..."
local TESTPKG="ignoreflock" local TESTPKG="ignoreflock"
local has_testpkg="" local has_testpkg=""
if epm --quiet installed $TESTPKG ; then if epm --quiet installed $TESTPKG ; then
has_testpkg=1 has_testpkg=1
sudocmd epm remove --auto $TESTPKG || return sudocmd epm remove --auto $TESTPKG || return
fi fi
local PKGLIST local PKGLIST
PKGLIST=$(LANG=C sudorun apt-get install $TESTPKG 2>&1 | grep "W: There are multiple versions of" | \ PKGLIST=$(LANG=C sudorun apt-get install $TESTPKG 2>&1 | grep "W: There are multiple versions of" | \
sed -e 's|W: There are multiple versions of "\(.*\)" in your system.|\1|') sed -e 's|W: There are multiple versions of "\(.*\)" in your system.|\1|')
local TODEL local TODEL
for i in $PKGLIST ; do for i in $PKGLIST ; do
local pkg=${i/.32bit/} local pkg=${i/.32bit/}
local todel="$(rpm -q $pkg | head -n1)" local todel="$(rpm -q $pkg | head -n1)"
local todel2="$(rpm -q $pkg | head -n2 | tail -n1)" local todel2="$(rpm -q $pkg | head -n2 | tail -n1)"
if [ "$todel" = "$todel2" ] ; then if [ "$todel" = "$todel2" ] ; then
echo "Fix the same name duplicates for $pkg..." echo "Fix the same name duplicates for $pkg..."
sudocmd rpm -e "$todel" --allmatches --nodeps --justdb && epm install $pkg && continue sudocmd rpm -e "$todel" --allmatches --nodeps --justdb && epm install $pkg && continue
fi fi
# first use older package # first use older package
[ "$(rpmevrcmp "$todel" "$todel2")" = "1" ] && todel="$todel2" [ "$(rpmevrcmp "$todel" "$todel2")" = "1" ] && todel="$todel2"
sudocmd rpm -e "$todel" || TODEL="$TODEL $todel" sudocmd rpm -e "$todel" || TODEL="$TODEL $todel"
done done
[ -n "$TODEL" ] && sudocmd rpm -e $TODEL [ -n "$TODEL" ] && sudocmd rpm -e $TODEL
[ -n "$has_testpkg" ] && epm install $TESTPKG [ -n "$has_testpkg" ] && epm install $TESTPKG
} }
epm_dedup() epm_dedup()
{ {
case "$BASEDISTRNAME" in case "$BASEDISTRNAME" in
"alt") "alt")
assure_exists /usr/share/apt/scripts/dedup.lua apt-scripts assure_exists /usr/share/apt/scripts/dedup.lua apt-scripts
if [ -z "$direct" ] && [ -f /usr/share/apt/scripts/dedup.lua ] ; then if [ -z "$direct" ] && [ -f /usr/share/apt/scripts/dedup.lua ] ; then
info "Check for duplicates via apt-get dedup from apt-scripts (also you can use internal EPM dedup implementation with --direct option)" info "Check for duplicates via apt-get dedup from apt-scripts (also you can use internal EPM dedup implementation with --direct option)"
sudocmd apt-get dedup sudocmd apt-get dedup
else else
info "You can use dedup from apt-scripts package" info "You can use dedup from apt-scripts package"
try_fix_apt_rpm_dupls try_fix_apt_rpm_dupls
fi fi
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -21,8 +21,8 @@ load_helper epm-check_updated_repo ...@@ -21,8 +21,8 @@ load_helper epm-check_updated_repo
__epm_add_alt_apt_downgrade_preferences() __epm_add_alt_apt_downgrade_preferences()
{ {
[ -r /etc/apt/preferences ] && fatal "/etc/apt/preferences already exists" [ -r /etc/apt/preferences ] && fatal "/etc/apt/preferences already exists"
cat <<EOF | sudocmd tee /etc/apt/preferences cat <<EOF | sudocmd tee /etc/apt/preferences
# classic repo # classic repo
Package: * Package: *
Pin: release c=classic Pin: release c=classic
...@@ -48,9 +48,9 @@ EOF ...@@ -48,9 +48,9 @@ EOF
# See https://wiki.debian.org/ru/AptPreferences # See https://wiki.debian.org/ru/AptPreferences
__epm_add_deb_apt_downgrade_preferences() __epm_add_deb_apt_downgrade_preferences()
{ {
[ -r /etc/apt/preferences ] && fatal "/etc/apt/preferences already exists" [ -r /etc/apt/preferences ] && fatal "/etc/apt/preferences already exists"
info "Running with /etc/apt/preferences:" info "Running with /etc/apt/preferences:"
cat <<EOF | sudorun tee /etc/apt/preferences cat <<EOF | sudorun tee /etc/apt/preferences
Package: * Package: *
Pin: release a=stable Pin: release a=stable
Pin-Priority: 1001 Pin-Priority: 1001
...@@ -67,67 +67,67 @@ EOF ...@@ -67,67 +67,67 @@ EOF
__epm_remove_apt_downgrade_preferences() __epm_remove_apt_downgrade_preferences()
{ {
sudocmd rm -f /etc/apt/preferences sudocmd rm -f /etc/apt/preferences
} }
epm_downgrade() epm_downgrade()
{ {
local CMD local CMD
# it is useful for first time running # it is useful for first time running
update_repo_if_needed update_repo_if_needed
info "Running command for downgrade packages" info "Running command for downgrade packages"
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
# pass pkg_filenames too # pass pkg_filenames too
if [ -n "$pkg_names" ] ; then if [ -n "$pkg_names" ] ; then
__epm_add_alt_apt_downgrade_preferences || return __epm_add_alt_apt_downgrade_preferences || return
load_helper epm-install load_helper epm-install
(pkg_names=$(get_only_installed_packages $pkg_names) epm_install) (pkg_names=$(get_only_installed_packages $pkg_names) epm_install)
__epm_remove_apt_downgrade_preferences __epm_remove_apt_downgrade_preferences
elif [ -n "$pkg_files" ] ; then elif [ -n "$pkg_files" ] ; then
load_helper epm-install load_helper epm-install
(pkg_files=$pkg_files force="$force -F --oldpackage" epm_install) (pkg_files=$pkg_files force="$force -F --oldpackage" epm_install)
else else
__epm_add_alt_apt_downgrade_preferences || return __epm_add_alt_apt_downgrade_preferences || return
load_helper epm-upgrade load_helper epm-upgrade
epm_upgrade "$@" epm_upgrade "$@"
__epm_remove_apt_downgrade_preferences __epm_remove_apt_downgrade_preferences
fi fi
;; ;;
apt-dpkg) apt-dpkg)
local APTOPTIONS="$(subst_option non_interactive -y) $force_yes" local APTOPTIONS="$(subst_option non_interactive -y) $force_yes"
__epm_add_deb_apt_downgrade_preferences || return __epm_add_deb_apt_downgrade_preferences || return
if [ -n "$pkg_filenames" ] ; then if [ -n "$pkg_filenames" ] ; then
sudocmd apt-get $APTOPTIONS install $pkg_filenames sudocmd apt-get $APTOPTIONS install $pkg_filenames
else else
sudocmd apt-get $APTOPTIONS dist-upgrade sudocmd apt-get $APTOPTIONS dist-upgrade
fi fi
__epm_remove_apt_downgrade_preferences __epm_remove_apt_downgrade_preferences
;; ;;
yum-rpm) yum-rpm)
# can do update repobase automagically # can do update repobase automagically
if [ -n "$pkg_filenames" ] ; then if [ -n "$pkg_filenames" ] ; then
sudocmd yum downgrade $pkg_filenames sudocmd yum downgrade $pkg_filenames
else else
sudocmd yum distro-sync sudocmd yum distro-sync
fi fi
;; ;;
dnf-rpm) dnf-rpm)
if [ -n "$pkg_filenames" ] ; then if [ -n "$pkg_filenames" ] ; then
sudocmd dnf downgrade $pkg_filenames sudocmd dnf downgrade $pkg_filenames
else else
sudocmd dnf distro-sync sudocmd dnf distro-sync
fi fi
;; ;;
urpm-rpm) urpm-rpm)
assure_exists urpm-reposync urpm-tools assure_exists urpm-reposync urpm-tools
sudocmd urpm-reposync -v sudocmd urpm-reposync -v
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -65,9 +65,9 @@ __epm_korinf_install() { ...@@ -65,9 +65,9 @@ __epm_korinf_install() {
epm_epm_install_help() epm_epm_install_help()
{ {
echo "epm ei [packages] - install packages from EPM based Korinf repository" echo "epm ei [packages] - install packages from EPM based Korinf repository"
get_help HELPCMD $SHAREDIR/epm-epm_install get_help HELPCMD $SHAREDIR/epm-epm_install
cat <<EOF cat <<EOF
Default Korinf repository: $EPM_KORINF_REPO_URL Default Korinf repository: $EPM_KORINF_REPO_URL
......
...@@ -52,144 +52,144 @@ __deb_local_content_filelist() ...@@ -52,144 +52,144 @@ __deb_local_content_filelist()
__epm_filelist_remote() __epm_filelist_remote()
{ {
[ -z "$*" ] && return [ -z "$*" ] && return
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
# TODO: use RESTful interface to prometeus? See ALT bug #29496 # TODO: use RESTful interface to prometeus? See ALT bug #29496
docmd_foreach __alt_local_content_filelist "$@" docmd_foreach __alt_local_content_filelist "$@"
;; ;;
apt-dpkg) apt-dpkg)
assure_exists apt-file || return assure_exists apt-file || return
if sudo_allowed ; then if sudo_allowed ; then
sudocmd apt-file update sudocmd apt-file update
else else
info "sudo requires a password, skip apt-file update" info "sudo requires a password, skip apt-file update"
fi fi
docmd_foreach __deb_local_content_filelist "$@" docmd_foreach __deb_local_content_filelist "$@"
;; ;;
packagekit) packagekit)
docmd pkcon get-files "$@" docmd pkcon get-files "$@"
;; ;;
yum-rpm) yum-rpm)
assure_exists yum-utils || return assure_exists yum-utils || return
docmd repoquery -q -l "$@" docmd repoquery -q -l "$@"
;; ;;
dnf-rpm) dnf-rpm)
assure_exists dnf-plugins-core || return assure_exists dnf-plugins-core || return
docmd dnf repoquery -l "$@" docmd dnf repoquery -l "$@"
;; ;;
*) *)
fatal "Query filelist for non installed packages is not implemented yet." fatal "Query filelist for non installed packages is not implemented yet."
;; ;;
esac esac
} }
__epm_filelist_file() __epm_filelist_file()
{ {
local CMD local CMD
[ -z "$*" ] && return [ -z "$*" ] && return
# TODO: allow a new packages # TODO: allow a new packages
case $(get_package_type $1) in case $(get_package_type $1) in
rpm) rpm)
assure_exists rpm assure_exists rpm
CMD="rpm -qlp" CMD="rpm -qlp"
;; ;;
deb) deb)
assure_exists dpkg assure_exists dpkg
CMD="dpkg --contents" CMD="dpkg --contents"
;; ;;
eopkg) eopkg)
assure_exists eopkg assure_exists eopkg
CMD="eopkg --files info" CMD="eopkg --files info"
;; ;;
*) *)
fatal "Have no suitable query command for $PMTYPE" fatal "Have no suitable query command for $PMTYPE"
;; ;;
esac esac
# TODO: add less # TODO: add less
docmd $CMD $@ docmd $CMD $@
} }
__epm_filelist_name() __epm_filelist_name()
{ {
local CMD local CMD
[ -z "$*" ] && return [ -z "$*" ] && return
warmup_lowbase warmup_lowbase
case $PMTYPE in case $PMTYPE in
*-rpm) *-rpm)
CMD="rpm -ql" CMD="rpm -ql"
;; ;;
*-dpkg) *-dpkg)
CMD="dpkg -L" CMD="dpkg -L"
;; ;;
packagekit) packagekit)
CMD="pkcon get-files" CMD="pkcon get-files"
;; ;;
android) android)
CMD="pm list packages -f" CMD="pm list packages -f"
;; ;;
conary) conary)
CMD="conary query --ls" CMD="conary query --ls"
;; ;;
pacman) pacman)
docmd pacman -Ql $@ | sed -e "s|.* ||g" docmd pacman -Ql $@ | sed -e "s|.* ||g"
return return
;; ;;
emerge) emerge)
assure_exists equery assure_exists equery
CMD="equery files" CMD="equery files"
;; ;;
homebrew) homebrew)
CMD="brew list" CMD="brew list"
;; ;;
pkgng) pkgng)
CMD="pkg info -l" CMD="pkg info -l"
;; ;;
opkg) opkg)
CMD="opkg files" CMD="opkg files"
;; ;;
eopkg) eopkg)
docmd eopkg --files -s info $@ | grep "^/" docmd eopkg --files -s info $@ | grep "^/"
return return
;; ;;
xbps) xbps)
CMD="xbps-query -f" CMD="xbps-query -f"
;; ;;
aptcyg) aptcyg)
docmd apt-cyg listfiles $@ | sed -e "s|^|/|g" docmd apt-cyg listfiles $@ | sed -e "s|^|/|g"
return return
;; ;;
slackpkg) slackpkg)
is_installed $@ || fatal "Query filelist for non installed packages is not implemented yet" is_installed $@ || fatal "Query filelist for non installed packages is not implemented yet"
docmd awk 'BEGIN{desk=1}{if(/^FILE LIST:$/){desk=0} else if (desk==0) {print}}' /var/log/packages/${pkg_filenames}* docmd awk 'BEGIN{desk=1}{if(/^FILE LIST:$/){desk=0} else if (desk==0) {print}}' /var/log/packages/${pkg_filenames}*
return return
;; ;;
*) *)
fatal "Have no suitable query command for $PMTYPE" fatal "Have no suitable query command for $PMTYPE"
;; ;;
esac esac
# TODO: add less or bat (for any output in the function) # TODO: add less or bat (for any output in the function)
docmd $CMD $@ && return docmd $CMD $@ && return
# TODO: may be we need check is installed before prev. line? # TODO: may be we need check is installed before prev. line?
is_installed $@ || __epm_filelist_remote $@ is_installed $@ || __epm_filelist_remote $@
} }
epm_filelist() epm_filelist()
{ {
[ -n "$pkg_filenames" ] || fatal "Filelist: package name is missed" [ -n "$pkg_filenames" ] || fatal "Filelist: package name is missed"
__epm_filelist_file $pkg_files || return __epm_filelist_file $pkg_files || return
# shellcheck disable=SC2046 # shellcheck disable=SC2046
__epm_filelist_name $(print_name $pkg_names) || return __epm_filelist_name $(print_name $pkg_names) || return
} }
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
epm_full_upgrade_help() epm_full_upgrade_help()
{ {
get_help HELPCMD $SHAREDIR/epm-full_upgrade get_help HELPCMD $SHAREDIR/epm-full_upgrade
cat <<EOF cat <<EOF
Also you can comment out full_upgrade parts in /etc/eepm/eepm.conf config. Also you can comment out full_upgrade parts in /etc/eepm/eepm.conf config.
Examples: Examples:
epm full-upgrade epm full-upgrade
...@@ -32,60 +32,60 @@ EOF ...@@ -32,60 +32,60 @@ EOF
epm_full_upgrade() epm_full_upgrade()
{ {
while [ -n "$1" ] ; do while [ -n "$1" ] ; do
case "$1" in case "$1" in
"-h"|"--help"|"help") # HELPCMD: help "-h"|"--help"|"help") # HELPCMD: help
epm_full_upgrade_help epm_full_upgrade_help
return return
;; ;;
"--no-epm-play") # HELPCMD: skip epm play during full upgrade "--no-epm-play") # HELPCMD: skip epm play during full upgrade
full_upgrade_no_epm_play=1 full_upgrade_no_epm_play=1
;; ;;
"--no-flatpack") # HELPCMD: skip flatpack update during full upgrade "--no-flatpack") # HELPCMD: skip flatpack update during full upgrade
full_upgrade_no_flatpack=1 full_upgrade_no_flatpack=1
;; ;;
"--no-snap") # HELPCMD: skip snap update during full upgrade "--no-snap") # HELPCMD: skip snap update during full upgrade
full_upgrade_no_snap=1 full_upgrade_no_snap=1
;; ;;
"--no-kernel-update") # HELPCMD: skip kernel update during full upgrade "--no-kernel-update") # HELPCMD: skip kernel update during full upgrade
full_upgrade_no_kernel_update=1 full_upgrade_no_kernel_update=1
;; ;;
esac esac
shift shift
done done
docmd epm update || fatal "repository updating is failed." docmd epm update || fatal "repository updating is failed."
[ -n "$quiet" ] || echo [ -n "$quiet" ] || echo
docmd epm upgrade || fatal "upgrading of the system is failed." docmd epm upgrade || fatal "upgrading of the system is failed."
if [ -z "$full_upgrade_no_kernel_update" ] ; then if [ -z "$full_upgrade_no_kernel_update" ] ; then
[ -n "$quiet" ] || echo [ -n "$quiet" ] || echo
docmd epm update-kernel || fatal "updating of the kernel is failed." docmd epm update-kernel || fatal "updating of the kernel is failed."
fi fi
# disable epm play --update for non ALT Systems # disable epm play --update for non ALT Systems
[ "$BASEDISTRNAME" = "alt" ] || full_upgrade_no_epm_play=1 [ "$BASEDISTRNAME" = "alt" ] || full_upgrade_no_epm_play=1
if [ -z "$full_upgrade_no_epm_play" ] ; then if [ -z "$full_upgrade_no_epm_play" ] ; then
[ -n "$quiet" ] || echo [ -n "$quiet" ] || echo
docmd epm play --update all || fatal "updating of applications installed via epm play is failed." docmd epm play --update all || fatal "updating of applications installed via epm play is failed."
fi fi
if [ -z "$full_upgrade_no_flatpack" ] ; then if [ -z "$full_upgrade_no_flatpack" ] ; then
if is_command flatpak ; then if is_command flatpak ; then
[ -n "$quiet" ] || echo [ -n "$quiet" ] || echo
docmd flatpak update docmd flatpak update
fi fi
fi fi
if [ -z "$full_upgrade_no_snap" ] ; then if [ -z "$full_upgrade_no_snap" ] ; then
if is_command snap && serv snapd exists && serv snapd status >/dev/null ; then if is_command snap && serv snapd exists && serv snapd status >/dev/null ; then
[ -n "$quiet" ] || echo [ -n "$quiet" ] || echo
sudocmd snap refresh sudocmd snap refresh
fi fi
fi fi
[ -n "$quiet" ] || echo [ -n "$quiet" ] || echo
docmd epm clean docmd epm clean
} }
...@@ -22,86 +22,86 @@ JCHAN='-t apt-get -t rpm' ...@@ -22,86 +22,86 @@ JCHAN='-t apt-get -t rpm'
__alt_epm_history_journal() __alt_epm_history_journal()
{ {
a= journalctl $JCHAN a= journalctl $JCHAN
} }
__alt_epm_history_uniq() __alt_epm_history_uniq()
{ {
__alt_epm_history_journal | grep "$EHOG\[[0-9][0-9]*\]:" | sed -e "s@.*$EHOG\[\([0-9][0-9]*\)\]: .*@\2@" | uniq | tac __alt_epm_history_journal | grep "$EHOG\[[0-9][0-9]*\]:" | sed -e "s@.*$EHOG\[\([0-9][0-9]*\)\]: .*@\2@" | uniq | tac
} }
# args: pid, removed|installed # args: pid, removed|installed
__alt_epm_history_select() __alt_epm_history_select()
{ {
local pid="$1" local pid="$1"
local verb="$2" local verb="$2"
__alt_epm_history_journal | grep "$EHOG\[$pid\]: .*$verb" | sed -e "s@.*$EHOG\[[0-9][0-9]*\]: @@" | cut -d" " -f 1 __alt_epm_history_journal | grep "$EHOG\[$pid\]: .*$verb" | sed -e "s@.*$EHOG\[[0-9][0-9]*\]: @@" | cut -d" " -f 1
} }
_alt_epm_history_date() _alt_epm_history_date()
{ {
local pid="$1" local pid="$1"
__alt_epm_history_journal | grep "$EHOG\[$pid\]: " | head -n1 | cut -d" " -f 1-3,5 | sed -e 's|:$||' __alt_epm_history_journal | grep "$EHOG\[$pid\]: " | head -n1 | cut -d" " -f 1-3,5 | sed -e 's|:$||'
} }
_alt_epm_history_print_group() _alt_epm_history_print_group()
{ {
local i local i
if [ -n "$2" ] ; then if [ -n "$2" ] ; then
echo echo
echo "$1 session:" echo "$1 session:"
shift shift
else else
return return
fi fi
for i in $* ; do for i in $* ; do
echo " $i" echo " $i"
done done
} }
__alt_epm_history_removed() __alt_epm_history_removed()
{ {
echo "Removed packages history:" echo "Removed packages history:"
__alt_epm_history_uniq | while read pid ; do __alt_epm_history_uniq | while read pid ; do
date="$(_alt_epm_history_date $pid)" date="$(_alt_epm_history_date $pid)"
removed="$(epm print shortname for $(__alt_epm_history_select $pid "removed") )" removed="$(epm print shortname for $(__alt_epm_history_select $pid "removed") )"
installed="$(epm print shortname for $(__alt_epm_history_select $pid "installed") )" installed="$(epm print shortname for $(__alt_epm_history_select $pid "installed") )"
_alt_epm_history_print_group "$date" $(estrlist exclude "$installed" "$removed") _alt_epm_history_print_group "$date" $(estrlist exclude "$installed" "$removed")
done done
} }
__alt_epm_history_installed() __alt_epm_history_installed()
{ {
echo "Installed packages history:" echo "Installed packages history:"
__alt_epm_history_uniq | while read pid ; do __alt_epm_history_uniq | while read pid ; do
date="$(_alt_epm_history_date $pid)" date="$(_alt_epm_history_date $pid)"
#epm print shortname for $(__alt_epm_history_select $pid "installed") | sed -e "s|^| |" #epm print shortname for $(__alt_epm_history_select $pid "installed") | sed -e "s|^| |"
removed="$(epm print shortname for $(__alt_epm_history_select $pid "removed") )" removed="$(epm print shortname for $(__alt_epm_history_select $pid "removed") )"
installed="$(epm print shortname for $(__alt_epm_history_select $pid "installed") )" installed="$(epm print shortname for $(__alt_epm_history_select $pid "installed") )"
_alt_epm_history_print_group "$date" $(estrlist exclude "$removed" "$installed") _alt_epm_history_print_group "$date" $(estrlist exclude "$removed" "$installed")
done done
} }
__alt_epm_history_updated() __alt_epm_history_updated()
{ {
echo "Updated packages history:" echo "Updated packages history:"
__alt_epm_history_uniq | while read pid ; do __alt_epm_history_uniq | while read pid ; do
date="$(_alt_epm_history_date $pid)" date="$(_alt_epm_history_date $pid)"
#epm print shortname for $(__alt_epm_history_select $pid "installed") | sed -e "s|^| |" #epm print shortname for $(__alt_epm_history_select $pid "installed") | sed -e "s|^| |"
removed="$(epm print shortname for $(__alt_epm_history_select $pid "removed") )" removed="$(epm print shortname for $(__alt_epm_history_select $pid "removed") )"
installed="$(epm print shortname for $(__alt_epm_history_select $pid "installed") )" installed="$(epm print shortname for $(__alt_epm_history_select $pid "installed") )"
_alt_epm_history_print_group "$date" $(estrlist intersection "$removed" "$installed") _alt_epm_history_print_group "$date" $(estrlist intersection "$removed" "$installed")
done done
} }
epm_history_help() epm_history_help()
{ {
echo "package management history" echo "package management history"
get_help HELPCMD $SHAREDIR/epm-history get_help HELPCMD $SHAREDIR/epm-history
cat <<EOF cat <<EOF
Examples: Examples:
epm history epm history
epm history --removed epm history --removed
...@@ -113,61 +113,61 @@ epm_history() ...@@ -113,61 +113,61 @@ epm_history()
{ {
if [ $PMTYPE = "apt-rpm" ] ; then if [ $PMTYPE = "apt-rpm" ] ; then
case "$1" in case "$1" in
"-h"|"--help"|"help") # HELPCMD: help "-h"|"--help"|"help") # HELPCMD: help
epm_history_help epm_history_help
return return
;; ;;
--installed) # HELPCMD: print only new installed packages --installed) # HELPCMD: print only new installed packages
__alt_epm_history_installed __alt_epm_history_installed
return return
;; ;;
--removed) # HELPCMD: print only removed packages --removed) # HELPCMD: print only removed packages
__alt_epm_history_removed __alt_epm_history_removed
return return
;; ;;
--updated) # HELPCMD: print only updated packages --updated) # HELPCMD: print only updated packages
__alt_epm_history_updated __alt_epm_history_updated
return return
;; ;;
--list) # HELPCMD: (or empty) print all history entries --list) # HELPCMD: (or empty) print all history entries
docmd journalctl $JCHAN docmd journalctl $JCHAN
return return
;; ;;
"") "")
;; ;;
*) *)
fatal "Unknown option $1. Use epm history --help to get help." fatal "Unknown option $1. Use epm history --help to get help."
esac esac
fi fi
[ -z "$*" ] || fatal "No arguments are allowed here" [ -z "$*" ] || fatal "No arguments are allowed here"
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
docmd journalctl $JCHAN -r docmd journalctl $JCHAN -r
;; ;;
apt-dpkg) apt-dpkg)
docmd cat /var/log/dpkg.log docmd cat /var/log/dpkg.log
;; ;;
dnf-rpm) dnf-rpm)
sudocmd dnf history sudocmd dnf history
;; ;;
eopkg) eopkg)
sudocmd eopkg history sudocmd eopkg history
;; ;;
zypper-rpm) zypper-rpm)
docmd cat /var/log/zypp/history docmd cat /var/log/zypp/history
;; ;;
pacman) pacman)
docmd cat /var/log/pacman.log docmd cat /var/log/pacman.log
;; ;;
emerge) emerge)
docmd cat /var/log/portage docmd cat /var/log/portage
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -21,131 +21,131 @@ load_helper epm-query ...@@ -21,131 +21,131 @@ load_helper epm-query
__epm_info_rpm_low() __epm_info_rpm_low()
{ {
if [ -n "$pkg_files" ] ; then if [ -n "$pkg_files" ] ; then
docmd rpm -qip $pkg_files docmd rpm -qip $pkg_files
fi fi
[ -z "$pkg_names" ] && return [ -z "$pkg_names" ] && return
is_installed $pkg_names && docmd rpm -qi $pkg_names && return is_installed $pkg_names && docmd rpm -qi $pkg_names && return
} }
__epm_info_by_pkgtype() __epm_info_by_pkgtype()
{ {
[ -n "$pkg_files" ] || return 1 [ -n "$pkg_files" ] || return 1
case $(get_package_type $pkg_files) in case $(get_package_type $pkg_files) in
rpm) rpm)
__epm_info_rpm_low && return __epm_info_rpm_low && return
;; ;;
deb) deb)
docmd dpkg -I $pkg_files docmd dpkg -I $pkg_files
;; ;;
*) *)
return 1 return 1
;; ;;
esac esac
} }
__epm_info_by_pmtype() __epm_info_by_pmtype()
{ {
case $PMTYPE in case $PMTYPE in
apt-dpkg) apt-dpkg)
if [ -n "$pkg_files" ] ; then if [ -n "$pkg_files" ] ; then
docmd dpkg -I $pkg_files docmd dpkg -I $pkg_files
fi fi
[ -z "$pkg_names" ] && return [ -z "$pkg_names" ] && return
is_installed $pkg_names && docmd dpkg -p $pkg_names && return is_installed $pkg_names && docmd dpkg -p $pkg_names && return
docmd apt-cache show $pkg_names docmd apt-cache show $pkg_names
;; ;;
aptitude-dpkg) aptitude-dpkg)
if [ -n "$pkg_files" ] ; then if [ -n "$pkg_files" ] ; then
docmd dpkg -I $pkg_files docmd dpkg -I $pkg_files
fi fi
[ -z "$pkg_names" ] && return [ -z "$pkg_names" ] && return
docmd aptitude show $pkg_names docmd aptitude show $pkg_names
;; ;;
*-rpm) *-rpm)
__epm_info_rpm_low && return __epm_info_rpm_low && return
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
docmd apt-cache show $pkg_names docmd apt-cache show $pkg_names
;; ;;
packagekit) packagekit)
docmd pkcon get-details $pkg_names docmd pkcon get-details $pkg_names
;; ;;
yum-rpm) yum-rpm)
docmd yum info $pkg_names docmd yum info $pkg_names
;; ;;
urpmi-rpm) urpmi-rpm)
docmd urpmq -i $pkg_names docmd urpmq -i $pkg_names
;; ;;
dnf-rpm) dnf-rpm)
docmd dnf info $pkg_names docmd dnf info $pkg_names
;; ;;
zypper-rpm) zypper-rpm)
docmd zypper info $pkg_names docmd zypper info $pkg_names
;; ;;
*) *)
warning "Unknown command for $PMTYPE" warning "Unknown command for $PMTYPE"
;; ;;
esac esac
;; ;;
packagekit) packagekit)
# TODO: get-details-local # TODO: get-details-local
docmd pkcon get-details $pkg_names docmd pkcon get-details $pkg_names
;; ;;
pacman) pacman)
is_installed $pkg_names && docmd pacman -Qi $pkg_names && return is_installed $pkg_names && docmd pacman -Qi $pkg_names && return
docmd pacman -Si $pkg_names docmd pacman -Si $pkg_names
;; ;;
aura) aura)
is_installed $pkg_names && docmd pacman -Qi $pkg_names && return is_installed $pkg_names && docmd pacman -Qi $pkg_names && return
docmd aura -Ai $pkg_names docmd aura -Ai $pkg_names
;; ;;
npackd) npackd)
# FIXME: --version= # FIXME: --version=
docmd npackdcl info --package=$pkg_names docmd npackdcl info --package=$pkg_names
;; ;;
conary) conary)
is_installed $pkg_names && docmd conary query $pkg_names --info && return is_installed $pkg_names && docmd conary query $pkg_names --info && return
docmd conary repquery $pkg_names --info docmd conary repquery $pkg_names --info
;; ;;
emerge) emerge)
assure_exists equery assure_exists equery
docmd equery meta $pkg_names docmd equery meta $pkg_names
docmd equery which $pkg_names docmd equery which $pkg_names
docmd equery uses $pkg_names docmd equery uses $pkg_names
docmd equery size $pkg_names docmd equery size $pkg_names
;; ;;
slackpkg) slackpkg)
docmd /usr/sbin/slackpkg info $pkg_names docmd /usr/sbin/slackpkg info $pkg_names
;; ;;
opkg) opkg)
docmd opkg info $pkg_names docmd opkg info $pkg_names
;; ;;
pkgng) pkgng)
docmd pkg info $pkg_names docmd pkg info $pkg_names
;; ;;
xbps) xbps)
docmd xbps-query --show $pkg_names docmd xbps-query --show $pkg_names
;; ;;
homebrew) homebrew)
docmd brew info $pkg_names docmd brew info $pkg_names
;; ;;
aptcyg) aptcyg)
docmd apt-cyg show $pkg_names docmd apt-cyg show $pkg_names
;; ;;
winget) winget)
docmd winget show $pkg_names docmd winget show $pkg_names
;; ;;
eopkg) eopkg)
docmd eopkg info $pkg_files $pkg_names docmd eopkg info $pkg_files $pkg_names
;; ;;
appget) appget)
docmd appget view $pkg_names docmd appget view $pkg_names
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
......
...@@ -26,73 +26,73 @@ ...@@ -26,73 +26,73 @@
# install one ebuild # install one ebuild
__emerge_install_ebuild() __emerge_install_ebuild()
{ {
local EBUILD="$1" local EBUILD="$1"
[ -s "$EBUILD" ] || fatal ".ebuild file '$EBUILD' is missed" [ -s "$EBUILD" ] || fatal ".ebuild file '$EBUILD' is missed"
# load ebuild and get vars # load ebuild and get vars
. $(pwd)/$EBUILD . $(pwd)/$EBUILD
[ -n "$SRC_URI" ] || fatal "Can't load SRC_URI from $EBUILD" [ -n "$SRC_URI" ] || fatal "Can't load SRC_URI from $EBUILD"
# try to detect tarballs # try to detect tarballs
local TARBALLS= local TARBALLS=
local BASEDIR=$(dirname $EBUILD) local BASEDIR=$(dirname $EBUILD)
for i in $SRC_URI ; do for i in $SRC_URI ; do
[ -s "$BASEDIR/$(basename $i)" ] || continue [ -s "$BASEDIR/$(basename $i)" ] || continue
TARBALLS="$TARBALLS $BASEDIR/$(basename $i)" TARBALLS="$TARBALLS $BASEDIR/$(basename $i)"
done done
local PORTAGENAME=epm local PORTAGENAME=epm
local LP=/usr/local/portage/$PORTAGENAME local LP=/usr/local/portage/$PORTAGENAME
docmd mkdir -p $LP/ docmd mkdir -p $LP/
MAKECONF=/etc/portage/make.conf MAKECONF=/etc/portage/make.conf
[ -r "$MAKECONF" ] || MAKECONF=/etc/make.conf [ -r "$MAKECONF" ] || MAKECONF=/etc/make.conf
if ! grep -v "^#" $MAKECONF | grep -q $LP ; then if ! grep -v "^#" $MAKECONF | grep -q $LP ; then
echo "PORTDIR_OVERLAY=\"$LP \${PORTDIR_OVERLAY}\"" >>$MAKECONF echo "PORTDIR_OVERLAY=\"$LP \${PORTDIR_OVERLAY}\"" >>$MAKECONF
# Overlay name # Overlay name
mkdir -p $LP/profiles/ mkdir -p $LP/profiles/
echo "$PORTAGENAME" > $LP/profiles/repo_name echo "$PORTAGENAME" > $LP/profiles/repo_name
fi fi
# copy tarballs # copy tarballs
local DDIR=/usr/portage/distfiles local DDIR=/usr/portage/distfiles
# FIXME: use independent dir # FIXME: use independent dir
[ -d /var/calculate/remote/distfiles ] && DDIR=/var/calculate/remote/distfiles [ -d /var/calculate/remote/distfiles ] && DDIR=/var/calculate/remote/distfiles
docmd cp -f $TARBALLS $DDIR/ || return docmd cp -f $TARBALLS $DDIR/ || return
# copy ebuild # copy ebuild
docmd cp -f $EBUILD $LP/ || return docmd cp -f $EBUILD $LP/ || return
cd $LP cd $LP
docmd ebuild $(basename $EBUILD) digest docmd ebuild $(basename $EBUILD) digest
cd - cd -
# FIXME: more correcty get name # FIXME: more correcty get name
local PKGNAME=$(echo $EBUILD | sed -e "s|-[0-9].*||g") local PKGNAME=$(echo $EBUILD | sed -e "s|-[0-9].*||g")
docmd emerge -av $PKGNAME || return docmd emerge -av $PKGNAME || return
} }
# install one ebuild # install one ebuild
__emerge_install_tbz2() __emerge_install_tbz2()
{ {
local TGDIR=/usr/portage/packages/app-arch local TGDIR=/usr/portage/packages/app-arch
mkdir -p $TGDIR mkdir -p $TGDIR
cp $i $TGDIR || return cp $i $TGDIR || return
docmd emerge --usepkg $TGDIR/$(basename $i) || return docmd emerge --usepkg $TGDIR/$(basename $i) || return
} }
# install ebuild list # install ebuild list
epm_install_emerge() epm_install_emerge()
{ {
local EBUILD= local EBUILD=
#local TARBALLS= #local TARBALLS=
local i local i
# search ebuild in the args # search ebuild in the args
for i in $* ; do for i in $* ; do
if echo $i | grep -q ebuild ; then if echo $i | grep -q ebuild ; then
__emerge_install_ebuild $i || return __emerge_install_ebuild $i || return
elif echo $i | grep -q "\.tbz2$" ; then elif echo $i | grep -q "\.tbz2$" ; then
__emerge_install_tbz2 $i || return __emerge_install_tbz2 $i || return
# else # else
# TARBALLS="$TARBALLS $i" # TARBALLS="$TARBALLS $i"
fi fi
done done
} }
...@@ -23,15 +23,15 @@ load_helper epm-query ...@@ -23,15 +23,15 @@ load_helper epm-query
# fill pkg_installed and pkg_noninstalled # fill pkg_installed and pkg_noninstalled
separate_installed() separate_installed()
{ {
pkg_installed= pkg_installed=
pkg_noninstalled= pkg_noninstalled=
for i in "$@" ; do for i in "$@" ; do
is_installed $i && pkg_installed="$pkg_installed $i" || pkg_noninstalled="$pkg_noninstalled $i" is_installed $i && pkg_installed="$pkg_installed $i" || pkg_noninstalled="$pkg_noninstalled $i"
done done
} }
epm_installed() epm_installed()
{ {
[ -n "$pkg_names" ] || fatal "is_installed: package name is missed" [ -n "$pkg_names" ] || fatal "is_installed: package name is missed"
is_installed "$pkg_names" is_installed "$pkg_names"
} }
...@@ -22,30 +22,30 @@ load_helper epm-sh-warmup ...@@ -22,30 +22,30 @@ load_helper epm-sh-warmup
epm_kernel_update() epm_kernel_update()
{ {
warmup_bases warmup_bases
info "Updating system kernel to the latest version..." info "Updating system kernel to the latest version..."
case $BASEDISTRNAME in case $BASEDISTRNAME in
"alt") "alt")
load_helper epm-query_package load_helper epm-query_package
if ! __epm_query_package kernel-image >/dev/null ; then if ! __epm_query_package kernel-image >/dev/null ; then
info "No installed kernel packages, skipping update" info "No installed kernel packages, skipping update"
return return
fi fi
assure_exists update-kernel update-kernel 0.9.9 assure_exists update-kernel update-kernel 0.9.9
update_repo_if_needed update_repo_if_needed
sudocmd update-kernel $dryrun $(subst_option non_interactive -y) "$@" || return sudocmd update-kernel $dryrun $(subst_option non_interactive -y) "$@" || return
#docmd epm remove-old-kernels "$@" || fatal #docmd epm remove-old-kernels "$@" || fatal
return ;; return ;;
esac esac
case $PMTYPE in case $PMTYPE in
dnf-rpm) dnf-rpm)
docmd epm install kernel docmd epm install kernel
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -20,13 +20,13 @@ ...@@ -20,13 +20,13 @@
# TODO: is it different from rpm --rebuilddb? # TODO: is it different from rpm --rebuilddb?
__repack_rpm_base() __repack_rpm_base()
{ {
assure_exists db_dump || fatal assure_exists db_dump || fatal
assure_exists db_load || fatal assure_exists db_load || fatal
cd /var/lib/rpm || fatal cd /var/lib/rpm || fatal
mv Packages Packages.BACKUP || fatal mv Packages Packages.BACKUP || fatal
# mask dependencies with a= # mask dependencies with a=
a='' db_dump Packages.BACKUP | a='' db_load Packages || fatal a='' db_dump Packages.BACKUP | a='' db_load Packages || fatal
rm Packages.BACKUP rm Packages.BACKUP
} }
epm_optimize() epm_optimize()
...@@ -35,14 +35,14 @@ epm_optimize() ...@@ -35,14 +35,14 @@ epm_optimize()
[ -z "$*" ] || fatal "No arguments are allowed here" [ -z "$*" ] || fatal "No arguments are allowed here"
case $PMTYPE in case $PMTYPE in
*-rpm) *-rpm)
#__repack_rpm_base #__repack_rpm_base
#rm -f /var/lib/rpm/__db* #rm -f /var/lib/rpm/__db*
a= rpm --rebuilddb a= rpm --rebuilddb
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -26,73 +26,73 @@ load_helper epm-repack ...@@ -26,73 +26,73 @@ load_helper epm-repack
__epm_pack() __epm_pack()
{ {
local packname="$1" local packname="$1"
local tarname="$2" local tarname="$2"
returntarname='' returntarname=''
local repackcode="$EPM_PACK_SCRIPTS_DIR/$packname.sh" local repackcode="$EPM_PACK_SCRIPTS_DIR/$packname.sh"
[ -x "$repackcode" ] || fatal "Can't find script $repackcode for packname $packname" [ -x "$repackcode" ] || fatal "Can't find script $repackcode for packname $packname"
[ -f "$repackcode.rpmnew" ] && warning "There is .rpmnew file(s) in $EPM_PACK_SCRIPTS_DIR dir. The pack script can be outdated." [ -f "$repackcode.rpmnew" ] && warning "There is .rpmnew file(s) in $EPM_PACK_SCRIPTS_DIR dir. The pack script can be outdated."
tmpdir=$(mktemp -d) tmpdir=$(mktemp -d)
filefortarname="$tmpdir/filefortarname" filefortarname="$tmpdir/filefortarname"
trap "rm -rf $tmpdir" EXIT trap "rm -rf $tmpdir" EXIT
set_sudo set_sudo
export SUDO export SUDO
# TODO: inside () ? # TODO: inside () ?
export PATH=$PROGDIR:$PATH export PATH=$PROGDIR:$PATH
local bashopt='' local bashopt=''
[ -n "$verbose" ] && bashopt='-x' [ -n "$verbose" ] && bashopt='-x'
#info "Running $($script --description 2>/dev/null) ..." #info "Running $($script --description 2>/dev/null) ..."
( unset EPMCURDIR ; docmd $CMDSHELL $bashopt $repackcode "$tarname" "$filefortarname" ) || fatal ( unset EPMCURDIR ; docmd $CMDSHELL $bashopt $repackcode "$tarname" "$filefortarname" ) || fatal
returntarname="$(cat "$filefortarname")" || fatal "pack script $repackcode didn't set tarname" returntarname="$(cat "$filefortarname")" || fatal "pack script $repackcode didn't set tarname"
rm -rf $tmpdir rm -rf $tmpdir
[ -s "$returntarname" ] || fatal "pack script $repackcode didn't return tarname" [ -s "$returntarname" ] || fatal "pack script $repackcode didn't return tarname"
#local newname="$(basename "$returntarname")" #local newname="$(basename "$returntarname")"
# now it is by default in the current dir # now it is by default in the current dir
#if [ "$returntarname" != "$(realpath $newname)" ; then #if [ "$returntarname" != "$(realpath $newname)" ; then
# # repack put its result to the current dir # # repack put its result to the current dir
# mv -v $returntarname . || fatal # mv -v $returntarname . || fatal
#fi #fi
if [ -n "$download_only" ] ; then if [ -n "$download_only" ] ; then
return return
fi fi
trap "rm -v $returntarname" EXIT trap "rm -v $returntarname" EXIT
# FIXME: __epm_repack will drop trap # FIXME: __epm_repack will drop trap
repacked_pkgs='' repacked_pkgs=''
# repack to our target # repack to our target
if __epm_repack_if_needed $returntarname ; then if __epm_repack_if_needed $returntarname ; then
[ -n "$repacked_pkgs" ] || fatal "Can't repack $returntarname" [ -n "$repacked_pkgs" ] || fatal "Can't repack $returntarname"
# if repack is forced or repack rule (not disabled) is exists # if repack is forced or repack rule (not disabled) is exists
elif [ -n "$repack" ] || [ -z "$norepack" ] && __epm_have_repack_rule $returntarname ; then elif [ -n "$repack" ] || [ -z "$norepack" ] && __epm_have_repack_rule $returntarname ; then
__epm_repack "$returntarname" __epm_repack "$returntarname"
[ -n "$repacked_pkgs" ] || fatal "Can't repack $returntarname" [ -n "$repacked_pkgs" ] || fatal "Can't repack $returntarname"
fi fi
if [ -n "$repacked_pkgs" ] ; then if [ -n "$repacked_pkgs" ] ; then
rm -v $returntarname rm -v $returntarname
mv -v $repacked_pkgs . || fatal mv -v $repacked_pkgs . || fatal
pkgname=$(pwd)/"$(basename $repacked_pkgs)" pkgname=$(pwd)/"$(basename $repacked_pkgs)"
else else
pkgname="$returntarname" pkgname="$returntarname"
fi fi
if [ -n "$install" ] ; then if [ -n "$install" ] ; then
trap "rm -v $pkgname" EXIT trap "rm -v $pkgname" EXIT
docmd epm install $pkgname docmd epm install $pkgname
return return
fi fi
trap "" EXIT trap "" EXIT
} }
......
...@@ -23,169 +23,169 @@ __epm_packages_sort() ...@@ -23,169 +23,169 @@ __epm_packages_sort()
{ {
# FIXME: sort depends on --sort value # FIXME: sort depends on --sort value
case $PMTYPE in case $PMTYPE in
*-rpm) *-rpm)
# FIXME: space with quotes problems, use point instead # FIXME: space with quotes problems, use point instead
warmup_rpmbase warmup_rpmbase
docmd rpm -qa --queryformat "%{size}@%{name}-%{version}-%{release}\n" $pkg_filenames | sed -e "s|@| |g" | sort -n -k1 docmd rpm -qa --queryformat "%{size}@%{name}-%{version}-%{release}\n" $pkg_filenames | sed -e "s|@| |g" | sort -n -k1
;; ;;
*-dpkg) *-dpkg)
warmup_dpkgbase warmup_dpkgbase
docmd dpkg-query -W --showformat="\${Installed-Size}@\${Package}-\${Version}:\${Architecture}\n" $pkg_filenames | sed -e "s|@| |g" | sort -n -k1 docmd dpkg-query -W --showformat="\${Installed-Size}@\${Package}-\${Version}:\${Architecture}\n" $pkg_filenames | sed -e "s|@| |g" | sort -n -k1
;; ;;
*) *)
fatal "Sorted package list function is not implemented for $PMTYPE" fatal "Sorted package list function is not implemented for $PMTYPE"
;; ;;
esac esac
} }
__aptcyg_print_full() __aptcyg_print_full()
{ {
#showcmd apt-cyg show #showcmd apt-cyg show
local VERSION=$(apt-cyg show "$1" | grep -m1 "^version: " | sed -e "s|^version: ||g") local VERSION=$(apt-cyg show "$1" | grep -m1 "^version: " | sed -e "s|^version: ||g")
echo "$1-$VERSION" echo "$1-$VERSION"
} }
__fo_pfn() __fo_pfn()
{ {
grep -v "^$" | grep -- "$pkg_filenames" grep -v "^$" | grep -- "$pkg_filenames"
} }
# TODO: we have a problem with error status here # TODO: we have a problem with error status here
epm_packages() epm_packages()
{ {
local CMD local CMD
[ -n "$sort" ] && __epm_packages_sort && return [ -n "$sort" ] && __epm_packages_sort && return
case $PMTYPE in case $PMTYPE in
*-dpkg) *-dpkg)
warmup_dpkgbase warmup_dpkgbase
# FIXME: strong equal # FIXME: strong equal
#CMD="dpkg -l $pkg_filenames" #CMD="dpkg -l $pkg_filenames"
CMD="dpkg-query -W --showformat=\${db:Status-Abbrev}\${Package}-\${Version}:\${Architecture}\n $pkg_filenames" CMD="dpkg-query -W --showformat=\${db:Status-Abbrev}\${Package}-\${Version}:\${Architecture}\n $pkg_filenames"
# TODO: ${Architecture} # TODO: ${Architecture}
[ -n "$short" ] && CMD="dpkg-query -W --showformat=\${db:Status-Abbrev}\${Package}\n $pkg_filenames" [ -n "$short" ] && CMD="dpkg-query -W --showformat=\${db:Status-Abbrev}\${Package}\n $pkg_filenames"
showcmd $CMD showcmd $CMD
$CMD | grep "^i" | sed -e "s|.* ||g" | __fo_pfn $CMD | grep "^i" | sed -e "s|.* ||g" | __fo_pfn
return ;; return ;;
*-rpm) *-rpm)
warmup_rpmbase warmup_rpmbase
# FIXME: strong equal # FIXME: strong equal
CMD="rpm -qa $pkg_filenames" CMD="rpm -qa $pkg_filenames"
[ -n "$short" ] && CMD="rpm -qa --queryformat %{name}\n $pkg_filenames" [ -n "$short" ] && CMD="rpm -qa --queryformat %{name}\n $pkg_filenames"
docmd $CMD docmd $CMD
return ;; return ;;
packagekit) packagekit)
docmd pkcon get-packages --filter installed docmd pkcon get-packages --filter installed
;; ;;
snappy) snappy)
CMD="snappy info" CMD="snappy info"
;; ;;
emerge) emerge)
CMD="qlist -I -C" CMD="qlist -I -C"
# print with colors for console output # print with colors for console output
isatty && CMD="qlist -I" isatty && CMD="qlist -I"
;; ;;
pkgsrc) pkgsrc)
CMD="pkg_info" CMD="pkg_info"
showcmd $CMD showcmd $CMD
$CMD | sed -e "s| .*||g" | __fo_pfn $CMD | sed -e "s| .*||g" | __fo_pfn
return ;; return ;;
pkgng) pkgng)
if [ -n "$pkg_filenames" ] ; then if [ -n "$pkg_filenames" ] ; then
CMD="pkg info -E $pkg_filenames" CMD="pkg info -E $pkg_filenames"
else else
CMD="pkg info" CMD="pkg info"
fi fi
showcmd $CMD showcmd $CMD
if [ -n "$short" ] ; then if [ -n "$short" ] ; then
$CMD | sed -e "s| .*||g" | sed -e "s|-[0-9].*||g" | __fo_pfn $CMD | sed -e "s| .*||g" | sed -e "s|-[0-9].*||g" | __fo_pfn
else else
$CMD | sed -e "s| .*||g" | __fo_pfn $CMD | sed -e "s| .*||g" | __fo_pfn
fi fi
return ;; return ;;
pacman) pacman)
CMD="pacman -Qs $pkg_filenames" CMD="pacman -Qs $pkg_filenames"
showcmd $CMD showcmd $CMD
if [ -n "$short" ] ; then if [ -n "$short" ] ; then
$CMD | sed -e "s| .*||g" -e "s|.*/||g" | __fo_pfn $CMD | sed -e "s| .*||g" -e "s|.*/||g" | __fo_pfn
return return
fi fi
;; ;;
npackd) npackd)
CMD="npackdcl list --status=installed" CMD="npackdcl list --status=installed"
# TODO: use search if pkg_filenames is not empty # TODO: use search if pkg_filenames is not empty
;; ;;
conary) conary)
CMD="conary query" CMD="conary query"
;; ;;
eopkg) eopkg)
CMD="eopkg list-installed" CMD="eopkg list-installed"
;; ;;
chocolatey) chocolatey)
CMD="chocolatey list" 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
# FIXME: does not work for libjpeg-v8a # FIXME: does not work for libjpeg-v8a
# TODO: remove last 3 elements (if arch is second from the last?) # TODO: remove last 3 elements (if arch is second from the last?)
# FIXME this hack # FIXME this hack
docmd ls -1 /var/log/packages/ | sed -e "s|-[0-9].*||g" | sed -e "s|libjpeg-v8a.*|libjpeg|g" | __fo_pfn docmd ls -1 /var/log/packages/ | sed -e "s|-[0-9].*||g" | sed -e "s|libjpeg-v8a.*|libjpeg|g" | __fo_pfn
return return
fi fi
;; ;;
homebrew) homebrew)
docmd brew list | xargs -n1 echo docmd brew list | xargs -n1 echo
;; ;;
opkg) opkg)
CMD="opkg list-installed" CMD="opkg list-installed"
;; ;;
apk) apk)
CMD="apk info" CMD="apk info"
;; ;;
tce) tce)
CMD="ls -1 /usr/local/tce.installed" CMD="ls -1 /usr/local/tce.installed"
;; ;;
guix) guix)
CMD="guix package -I" CMD="guix package -I"
;; ;;
appget) appget)
CMD="appget list" CMD="appget list"
;; ;;
winget) winget)
info "Use appget instead of winget" info "Use appget instead of winget"
return 0 return 0
;; ;;
xbps) xbps)
CMD="xbps-query -l" CMD="xbps-query -l"
showcmd $CMD showcmd $CMD
if [ -n "$short" ] ; then if [ -n "$short" ] ; then
$CMD | sed -e "s|^ii ||g" -e "s| .*||g" -e "s|\(.*\)-.*|\1|g" | __fo_pfn $CMD | sed -e "s|^ii ||g" -e "s| .*||g" -e "s|\(.*\)-.*|\1|g" | __fo_pfn
else else
$CMD | sed -e "s|^ii ||g" -e "s| .*||g" | __fo_pfn $CMD | sed -e "s|^ii ||g" -e "s| .*||g" | __fo_pfn
fi fi
return 0 return 0
;; ;;
android) android)
CMD="pm list packages" CMD="pm list packages"
showcmd $CMD showcmd $CMD
$CMD | sed -e "s|^package:||g" | __fo_pfn $CMD | sed -e "s|^package:||g" | __fo_pfn
return return
;; ;;
aptcyg) aptcyg)
CMD="apt-cyg list $pkg_filenames" CMD="apt-cyg list $pkg_filenames"
if [ -z "$short" ] ; then if [ -z "$short" ] ; then
showcmd $CMD showcmd $CMD
# TODO: fix this slow way # TODO: fix this slow way
for i in $($CMD) ; do for i in $($CMD) ; do
__aptcyg_print_full $i __aptcyg_print_full $i
done done
return return
fi fi
;; ;;
*) *)
fatal "Have no suitable query command for $PMTYPE" fatal "Have no suitable query command for $PMTYPE"
;; ;;
esac esac
docmd $CMD | __fo_pfn docmd $CMD | __fo_pfn
......
...@@ -23,48 +23,48 @@ epm_vardir=/var/lib/eepm ...@@ -23,48 +23,48 @@ epm_vardir=/var/lib/eepm
__check_installed_app() __check_installed_app()
{ {
[ -s $epm_vardir/installed-app ] || return 1 [ -s $epm_vardir/installed-app ] || return 1
grep -q -- "^$1\$" $epm_vardir/installed-app grep -q -- "^$1\$" $epm_vardir/installed-app
} }
__save_installed_app() __save_installed_app()
{ {
[ -d "$epm_vardir" ] || return 0 [ -d "$epm_vardir" ] || return 0
__check_installed_app "$1" && return 0 __check_installed_app "$1" && return 0
echo "$1" | sudorun tee -a $epm_vardir/installed-app >/dev/null echo "$1" | sudorun tee -a $epm_vardir/installed-app >/dev/null
} }
__remove_installed_app() __remove_installed_app()
{ {
[ -s $epm_vardir/installed-app ] || return 0 [ -s $epm_vardir/installed-app ] || return 0
local i local i
for i in $* ; do for i in $* ; do
sudorun sed -i "/^$i$/d" $epm_vardir/installed-app sudorun sed -i "/^$i$/d" $epm_vardir/installed-app
done done
return 0 return 0
} }
__is_app_installed() __is_app_installed()
{ {
__run_script "$1" --installed "$2" __run_script "$1" --installed "$2"
return return
} }
__run_script() __run_script()
{ {
local script="$psdir/$1.sh" local script="$psdir/$1.sh"
[ -x "$script" ] || return [ -x "$script" ] || return
[ -f "$script.rpmnew" ] && warning "There is .rpmnew file(s) in $psdir dir. The play script can be outdated." [ -f "$script.rpmnew" ] && warning "There is .rpmnew file(s) in $psdir dir. The play script can be outdated."
shift shift
( unset EPMCURDIR ; export PATH=$PROGDIR:$PATH ; $script "$@" ) ( unset EPMCURDIR ; export PATH=$PROGDIR:$PATH ; $script "$@" )
return return
} }
__get_app_package() __get_app_package()
{ {
__run_script "$1" --package-name "$2" 2>/dev/null __run_script "$1" --package-name "$2" 2>/dev/null
} }
......
...@@ -31,15 +31,15 @@ warmup_bases ...@@ -31,15 +31,15 @@ warmup_bases
pkg_names=$(__epm_get_hilevel_name $pkg_names) pkg_names=$(__epm_get_hilevel_name $pkg_names)
case $PMTYPE in case $PMTYPE in
apt-*) apt-*)
docmd apt-cache policy $pkg_names docmd apt-cache policy $pkg_names
;; ;;
packagekit) packagekit)
docmd pkcon resolve $pkg_names docmd pkcon resolve $pkg_names
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -22,21 +22,21 @@ ...@@ -22,21 +22,21 @@
# TODO: rpm only # TODO: rpm only
rpm_query_package_format_field() rpm_query_package_format_field()
{ {
local FORMAT="$1\n" local FORMAT="$1\n"
shift shift
local INSTALLED="" local INSTALLED=""
# if a file, ad -p for get from rpm base # if a file, ad -p for get from rpm base
if [ -f "$1" ] ; then if [ -f "$1" ] ; then
INSTALLED="-p" INSTALLED="-p"
fi fi
a= rpmquery $INSTALLED --queryformat "$FORMAT" "$@" a= rpmquery $INSTALLED --queryformat "$FORMAT" "$@"
} }
rpm_query_package_field() rpm_query_package_field()
{ {
local FORMAT="%{$1}" local FORMAT="%{$1}"
shift shift
rpm_query_package_format_field "$FORMAT" "$@" rpm_query_package_format_field "$FORMAT" "$@"
} }
dpkg_query_package_format_field() dpkg_query_package_format_field()
...@@ -141,13 +141,13 @@ print_pkg_name() ...@@ -141,13 +141,13 @@ print_pkg_name()
# algorithm: list all files in PKGDIR, print packages with our source pkg name # algorithm: list all files in PKGDIR, print packages with our source pkg name
print_binpkgfilelist() print_binpkgfilelist()
{ {
local PKGDIR=$1 local PKGDIR=$1
local PKGNAME=$(basename $2) local PKGNAME=$(basename $2)
find "$PKGDIR" ! -name '*\.src\.rpm' -name '*\.rpm' -execdir \ find "$PKGDIR" ! -name '*\.src\.rpm' -name '*\.rpm' -execdir \
rpmquery -p --qf='%{sourcerpm}\t%{name}-%{version}-%{release}.%{arch}.rpm\n' "{}" \; \ rpmquery -p --qf='%{sourcerpm}\t%{name}-%{version}-%{release}.%{arch}.rpm\n' "{}" \; \
| grep "^$PKGNAME[[:space:]].*" \ | grep "^$PKGNAME[[:space:]].*" \
| cut -f2 \ | cut -f2 \
| xargs -n1 -I "{}" echo -n "$PKGDIR/{} " | xargs -n1 -I "{}" echo -n "$PKGDIR/{} "
} }
# TODO: need try detect more strict # TODO: need try detect more strict
......
...@@ -22,18 +22,18 @@ load_helper epm-query_file ...@@ -22,18 +22,18 @@ load_helper epm-query_file
# Inspired by http://www.altlinux.org/Tips # Inspired by http://www.altlinux.org/Tips
epm_programs() epm_programs()
{ {
case $DISTRNAME in case $DISTRNAME in
FreeBSD|NetBSD|OpenBSD|Solaris) FreeBSD|NetBSD|OpenBSD|Solaris)
local DESKTOPDIR=/usr/local/share/applications local DESKTOPDIR=/usr/local/share/applications
;; ;;
*) *)
local DESKTOPDIR=/usr/share/applications local DESKTOPDIR=/usr/share/applications
;; ;;
esac esac
[ -d "$DESKTOPDIR" ] || fatal "There is no $DESKTOPDIR dir on the system." [ -d "$DESKTOPDIR" ] || fatal "There is no $DESKTOPDIR dir on the system."
#find /usr/share/applications -type f -name "*.desktop" | while read f; do pkg_files="$f" quiet=1 short=1 epm_query_file ; done | sort -u #find /usr/share/applications -type f -name "*.desktop" | while read f; do pkg_files="$f" quiet=1 short=1 epm_query_file ; done | sort -u
showcmd "find $DESKTOPDIR -type f -print0 -name "*.desktop" | xargs -0 $0 -qf --quiet --short | sort -u" showcmd "find $DESKTOPDIR -type f -print0 -name "*.desktop" | xargs -0 $0 -qf --quiet --short | sort -u"
find $DESKTOPDIR -type f -print0 -name "*.desktop" | \ find $DESKTOPDIR -type f -print0 -name "*.desktop" | \
xargs -0 $0 -qf --quiet --short | sort -u xargs -0 $0 -qf --quiet --short | sort -u
} }
...@@ -22,79 +22,79 @@ load_helper epm-print ...@@ -22,79 +22,79 @@ load_helper epm-print
epm_provides_files() epm_provides_files()
{ {
local pkg_files="$*" local pkg_files="$*"
[ -n "$pkg_files" ] || return [ -n "$pkg_files" ] || return
local PKGTYPE="$(get_package_type $pkg_files)" local PKGTYPE="$(get_package_type $pkg_files)"
case $PKGTYPE in case $PKGTYPE in
rpm) rpm)
assure_exists rpm assure_exists rpm
docmd rpm -q --provides -p $pkg_files docmd rpm -q --provides -p $pkg_files
;; ;;
deb) deb)
assure_exists dpkg assure_exists dpkg
# FIXME: will we provide ourself? # FIXME: will we provide ourself?
docmd dpkg -I $pkg_files | grep "^ *Provides:" | sed "s|^ *Provides:||g" docmd dpkg -I $pkg_files | grep "^ *Provides:" | sed "s|^ *Provides:||g"
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
epm_provides_names() epm_provides_names()
{ {
local pkg_names="$*" local pkg_names="$*"
local CMD local CMD
[ -n "$pkg_names" ] || return [ -n "$pkg_names" ] || return
# by package name # by package name
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
# FIXME: need fix for a few names case # FIXME: need fix for a few names case
# TODO: separate this function to two section # TODO: separate this function to two section
if is_installed $pkg_names ; then if is_installed $pkg_names ; then
CMD="rpm -q --provides" CMD="rpm -q --provides"
else else
EXTRA_SHOWDOCMD=' | grep "Provides:"' EXTRA_SHOWDOCMD=' | grep "Provides:"'
docmd apt-cache show $pkg_names | grep "Provides:" docmd apt-cache show $pkg_names | grep "Provides:"
return return
fi fi
;; ;;
urpm-rpm|zypper-rpm|yum-rpm|dnf-rpm) urpm-rpm|zypper-rpm|yum-rpm|dnf-rpm)
if is_installed $pkg_names ; then if is_installed $pkg_names ; then
CMD="rpm -q --provides" CMD="rpm -q --provides"
else else
fatal "FIXME: use hi level commands" fatal "FIXME: use hi level commands"
fi fi
;; ;;
emerge) emerge)
assure_exists equery assure_exists equery
CMD="equery files" CMD="equery files"
;; ;;
# yum-rpm) # yum-rpm)
# CMD="yum deplist" # CMD="yum deplist"
# ;; # ;;
pkgng) pkgng)
CMD="pkg info -b" CMD="pkg info -b"
;; ;;
apt-dpkg) apt-dpkg)
# FIXME: need fix for a few names case # FIXME: need fix for a few names case
if is_installed $pkg_names ; then if is_installed $pkg_names ; then
showcmd dpkg -s $pkg_names showcmd dpkg -s $pkg_names
a='' dpkg -s $pkg_names | grep "^Provides:" | sed "s|^Provides:||g" a='' dpkg -s $pkg_names | grep "^Provides:" | sed "s|^Provides:||g"
return return
else else
EXTRA_SHOWDOCMD=' | grep "Provides:"' EXTRA_SHOWDOCMD=' | grep "Provides:"'
docmd apt-cache show $pkg_names | grep "Provides:" | sed -e 's|, |\n|g' | grep -v "^Provides:" docmd apt-cache show $pkg_names | grep "Provides:" | sed -e 's|, |\n|g' | grep -v "^Provides:"
return return
fi fi
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
docmd $CMD $pkg_names docmd $CMD $pkg_names
...@@ -103,9 +103,9 @@ docmd $CMD $pkg_names ...@@ -103,9 +103,9 @@ docmd $CMD $pkg_names
epm_provides() epm_provides()
{ {
[ -n "$pkg_filenames" ] || fatal "Provides: package name is missed" [ -n "$pkg_filenames" ] || fatal "Provides: package name is missed"
epm_provides_files $pkg_files epm_provides_files $pkg_files
# shellcheck disable=SC2046 # shellcheck disable=SC2046
epm_provides_names $(print_name $pkg_names) epm_provides_names $(print_name $pkg_names)
} }
...@@ -22,67 +22,67 @@ ...@@ -22,67 +22,67 @@
# TODO: check for lib64/name situations # TODO: check for lib64/name situations
__abs_filename() __abs_filename()
{ {
if echo "$1" | grep -q "/" ; then if echo "$1" | grep -q "/" ; then
echo "$1" echo "$1"
return return
fi fi
if [ -e "$1" ] ; then if [ -e "$1" ] ; then
echo "$(pwd)/$1" echo "$(pwd)/$1"
return return
fi fi
echo "$1" echo "$1"
} }
__do_query_real_file() __do_query_real_file()
{ {
local TOFILE local TOFILE
# get canonical path # get canonical path
if [ -e "$1" ] ; then if [ -e "$1" ] ; then
TOFILE="$(__abs_filename "$1")" TOFILE="$(__abs_filename "$1")"
else else
TOFILE=$(print_command_path "$1" || echo "$1") TOFILE=$(print_command_path "$1" || echo "$1")
if [ "$TOFILE" != "$1" ] ; then if [ "$TOFILE" != "$1" ] ; then
info " > $1 is placed as $TOFILE" info " > $1 is placed as $TOFILE"
fi fi
fi fi
[ -n "$TOFILE" ] || return [ -n "$TOFILE" ] || return
local RES local RES
if [ -n "$short" ] ; then if [ -n "$short" ] ; then
__do_short_query "$TOFILE" __do_short_query "$TOFILE"
RES=$? RES=$?
else else
__do_query "$TOFILE" __do_query "$TOFILE"
RES=$? RES=$?
fi fi
# get value of symbolic link # get value of symbolic link
if [ -L "$TOFILE" ] ; then if [ -L "$TOFILE" ] ; then
local LINKTO local LINKTO
LINKTO=$(readlink -- "$TOFILE") LINKTO=$(readlink -- "$TOFILE")
info " > $TOFILE is link to $LINKTO" info " > $TOFILE is link to $LINKTO"
LINKTO=$(readlink -f -- "$TOFILE") LINKTO=$(readlink -f -- "$TOFILE")
__do_query_real_file "$LINKTO" __do_query_real_file "$LINKTO"
return return
else else
return $RES return $RES
fi fi
} }
dpkg_print_name_version() dpkg_print_name_version()
{ {
local ver i local ver i
for i in "$@" ; do for i in "$@" ; do
[ -n "$i" ] || continue [ -n "$i" ] || continue
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
echo "$i" echo "$i"
else else
echo "$i-$ver" echo "$i-$ver"
fi fi
done done
} }
......
...@@ -22,16 +22,16 @@ load_helper epm-search ...@@ -22,16 +22,16 @@ load_helper epm-search
__epm_query_package() __epm_query_package()
{ {
(pkg_filenames="$*" quoted_args="$*" quiet=1 epm_query_package) (pkg_filenames="$*" quoted_args="$*" quiet=1 epm_query_package)
} }
epm_query_package() epm_query_package()
{ {
[ -n "$pkg_filenames" ] || fatal "Please, use search with some argument or run epmqa for get all packages." [ -n "$pkg_filenames" ] || fatal "Please, use search with some argument or run epmqa for get all packages."
# FIXME: do it better # FIXME: do it better
local MGS local MGS
MGS=$(eval __epm_search_make_grep $quoted_args) MGS=$(eval __epm_search_make_grep $quoted_args)
EXTRA_SHOWDOCMD=$MGS EXTRA_SHOWDOCMD=$MGS
# Note: get all packages list and do grep # Note: get all packages list and do grep
(eval "pkg_filenames='' epm_packages \"$(eval get_firstarg $quoted_args)\" $MGS") (eval "pkg_filenames='' epm_packages \"$(eval get_firstarg $quoted_args)\" $MGS")
} }
...@@ -23,45 +23,45 @@ load_helper epm-sh-warmup ...@@ -23,45 +23,45 @@ load_helper epm-sh-warmup
# copied from etersoft-build-utils/share/eterbuild/functions/rpmpkg # copied from etersoft-build-utils/share/eterbuild/functions/rpmpkg
epm_reinstall_names() epm_reinstall_names()
{ {
[ -n "$1" ] || return [ -n "$1" ] || return
case $PMTYPE in case $PMTYPE in
apt-rpm|apt-dpkg) apt-rpm|apt-dpkg)
local APTOPTIONS="$(subst_option non_interactive -y)" local APTOPTIONS="$(subst_option non_interactive -y)"
sudocmd apt-get --reinstall $APTOPTIONS install $@ sudocmd apt-get --reinstall $APTOPTIONS install $@
return ;; return ;;
aptitude-dpkg) aptitude-dpkg)
sudocmd aptitude reinstall $@ sudocmd aptitude reinstall $@
return ;; return ;;
packagekit) packagekit)
warning "Please send me the correct command form for it" warning "Please send me the correct command form for it"
docmd pkcon install --allow-reinstall $@ docmd pkcon install --allow-reinstall $@
return ;; return ;;
yum-rpm) yum-rpm)
sudocmd yum reinstall $@ sudocmd yum reinstall $@
return ;; return ;;
dnf-rpm) dnf-rpm)
sudocmd dnf reinstall $@ sudocmd dnf reinstall $@
return ;; return ;;
homebrew) homebrew)
sudocmd brew reinstall $@ sudocmd brew reinstall $@
return ;; return ;;
pkgng) pkgng)
sudocmd pkg install -f $@ sudocmd pkg install -f $@
return ;; return ;;
opkg) opkg)
sudocmd opkg --force-reinstall install $@ sudocmd opkg --force-reinstall install $@
return ;; return ;;
eopkg) eopkg)
sudocmd eopkg --reinstall install $@ sudocmd eopkg --reinstall install $@
return ;; return ;;
slackpkg) slackpkg)
sudocmd_foreach "/usr/sbin/slackpkg reinstall" $@ sudocmd_foreach "/usr/sbin/slackpkg reinstall" $@
return ;; return ;;
esac esac
# fallback to generic install # fallback to generic install
epm_install_names $@ epm_install_names $@
} }
epm_reinstall_files() epm_reinstall_files()
......
...@@ -21,151 +21,151 @@ load_helper epm-release_upgrade ...@@ -21,151 +21,151 @@ load_helper epm-release_upgrade
get_prev_release() get_prev_release()
{ {
local FROM="$1" local FROM="$1"
case "$FROM" in case "$FROM" in
"p8") "p8")
echo "p7" ;; echo "p7" ;;
"p9") "p9")
echo "p8" ;; echo "p8" ;;
"p10") "p10")
echo "p9" ;; echo "p9" ;;
"c7") "c7")
echo "c6" ;; echo "c6" ;;
"c8") "c8")
echo "c7" ;; echo "c7" ;;
"c8.1") "c8.1")
echo "c8" ;; echo "c8" ;;
"c8.2") "c8.2")
echo "c8.1" ;; echo "c8.1" ;;
"c9f1") "c9f1")
echo "c8" ;; echo "c8" ;;
"c9f2") "c9f2")
echo "c9f1" ;; echo "c9f1" ;;
"10") "10")
echo "9" ;; echo "9" ;;
*) *)
echo "$FROM" ;; echo "$FROM" ;;
esac esac
} }
# FIXME: see epm_release_upgrade # FIXME: see epm_release_upgrade
epm_release_downgrade() epm_release_downgrade()
{ {
assure_root assure_root
assure_safe_run assure_safe_run
info "Starting upgrade/switch whole system to other release" info "Starting upgrade/switch whole system to other release"
info "Check also http://wiki.etersoft.ru/Admin/UpdateLinux" info "Check also http://wiki.etersoft.ru/Admin/UpdateLinux"
cd /tmp || fatal cd /tmp || fatal
# TODO: it is possible eatmydata does not do his work # TODO: it is possible eatmydata does not do his work
export EPMNOEATMYDATA=1 export EPMNOEATMYDATA=1
case $BASEDISTRNAME in case $BASEDISTRNAME in
"alt") "alt")
__epm_ru_update || fatal __epm_ru_update || fatal
# try to detect current release by repo # try to detect current release by repo
if [ "$DISTRVERSION" = "Sisyphus" ] || [ -z "$DISTRVERSION" ] ; then if [ "$DISTRVERSION" = "Sisyphus" ] || [ -z "$DISTRVERSION" ] ; then
local dv local dv
dv="$(__detect_alt_release_by_repo)" dv="$(__detect_alt_release_by_repo)"
if [ -n "$dv" ] && [ "$dv" != "$DISTRVERSION" ] ; then if [ -n "$dv" ] && [ "$dv" != "$DISTRVERSION" ] ; then
DISTRVERSION="$dv" DISTRVERSION="$dv"
info "Detected running $DISTRNAME $DISTRVERSION (according to using repos)" info "Detected running $DISTRNAME $DISTRVERSION (according to using repos)"
fi fi
fi fi
TARGET="" TARGET=""
[ -n "$3" ] && fatal "Too many args: $*" [ -n "$3" ] && fatal "Too many args: $*"
if [ -n "$2" ] ; then if [ -n "$2" ] ; then
DISTRVERSION="$1" DISTRVERSION="$1"
info "Force current distro version as $DISTRVERSION" info "Force current distro version as $DISTRVERSION"
TARGET="$2" TARGET="$2"
elif [ -n "$1" ] ; then elif [ -n "$1" ] ; then
TARGET="$1" TARGET="$1"
fi fi
[ -n "$TARGET" ] || TARGET="$(get_prev_release $DISTRVERSION)" [ -n "$TARGET" ] || TARGET="$(get_prev_release $DISTRVERSION)"
__alt_repofix __alt_repofix
__switch_alt_to_distro $DISTRVERSION $TARGET && info "Done. The system has been successfully downgraded to the previous release '$TARGET'." __switch_alt_to_distro $DISTRVERSION $TARGET && info "Done. The system has been successfully downgraded to the previous release '$TARGET'."
return 0 return 0
;; ;;
*) *)
;; ;;
esac esac
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
#docmd epm update #docmd epm update
info "Have no idea how to downgrade $DISTRNAME" info "Have no idea how to downgrade $DISTRNAME"
;; ;;
*-dpkg) *-dpkg)
assure_exists do-release-upgrade update-manager-core assure_exists do-release-upgrade update-manager-core
sudocmd do-release-upgrade sudocmd do-release-upgrade
;; ;;
packagekit) packagekit)
docmd pkcon upgrade-system "$@" docmd pkcon upgrade-system "$@"
;; ;;
yum-rpm) yum-rpm)
docmd epm install rpm yum docmd epm install rpm yum
sudocmd yum clean all sudocmd yum clean all
info "Try manually:" info "Try manually:"
showcmd rpm -Uvh http://mirror.yandex.ru/fedora/linux/releases/16/Fedora/x86_64/os/Packages/fedora-release-16-1.noarch.rpm showcmd rpm -Uvh http://mirror.yandex.ru/fedora/linux/releases/16/Fedora/x86_64/os/Packages/fedora-release-16-1.noarch.rpm
showcmd epm Upgrade showcmd epm Upgrade
;; ;;
dnf-rpm) dnf-rpm)
info "Check https://fedoraproject.org/wiki/DNF_system_upgrade for an additional info" info "Check https://fedoraproject.org/wiki/DNF_system_upgrade for an additional info"
docmd epm install dnf docmd epm install dnf
#docmd epm install epel-release yum-utils #docmd epm install epel-release yum-utils
sudocmd dnf --refresh upgrade sudocmd dnf --refresh upgrade
sudocmd dnf clean all sudocmd dnf clean all
assure_exists dnf-plugin-system-upgrade assure_exists dnf-plugin-system-upgrade
sudocmd dnf upgrade --refresh sudocmd dnf upgrade --refresh
local RELEASEVER="$1" local RELEASEVER="$1"
[ -n "$RELEASEVER" ] || RELEASEVER=$(($DISTRVERSION + 1)) [ -n "$RELEASEVER" ] || RELEASEVER=$(($DISTRVERSION + 1))
#[ -n "$RELEASEVER" ] || fatal "Run me with new version" #[ -n "$RELEASEVER" ] || fatal "Run me with new version"
confirm_info "Upgrade to $DISTRNAME/$RELEASEVER" confirm_info "Upgrade to $DISTRNAME/$RELEASEVER"
sudocmd dnf system-upgrade download --refresh --releasever=$RELEASEVER sudocmd dnf system-upgrade download --refresh --releasever=$RELEASEVER
# TODO: from docs: # TODO: from docs:
# dnf system-upgrade reboot # dnf system-upgrade reboot
# FIXME: download all packages again # FIXME: download all packages again
sudocmd dnf distro-sync --releasever=$RELEASEVER sudocmd dnf distro-sync --releasever=$RELEASEVER
info "Run epm autoorphans to remove orphaned packages" info "Run epm autoorphans to remove orphaned packages"
;; ;;
urpm-rpm) urpm-rpm)
sudocmd urpmi.removemedia -av sudocmd urpmi.removemedia -av
info "Try do manually:" info "Try do manually:"
showcmd urpmi.addmedia --distrib http://mirror.yandex.ru/mandriva/devel/2010.2/i586/ showcmd urpmi.addmedia --distrib http://mirror.yandex.ru/mandriva/devel/2010.2/i586/
sudocmd urpmi --auto-update --replacefiles sudocmd urpmi --auto-update --replacefiles
;; ;;
zypper-rpm) zypper-rpm)
docmd epm repolist docmd epm repolist
# TODO # TODO
# sudocmd zypper rr <номер_репозитория> # sudocmd zypper rr <номер_репозитория>
showcmd rr N showcmd rr N
showcmd epm ar http://mirror.yandex.ru/opensuse/distribution/11.1/repo/oss 11.1oss showcmd epm ar http://mirror.yandex.ru/opensuse/distribution/11.1/repo/oss 11.1oss
showcmd zypper ref showcmd zypper ref
docmd epm update docmd epm update
docmd epm install rpm zypper docmd epm install rpm zypper
docmd epm upgrade docmd epm upgrade
;; ;;
pacman) pacman)
epm Upgrade epm Upgrade
;; ;;
conary) conary)
epm Upgrade epm Upgrade
;; ;;
emerge) emerge)
epm Upgrade epm Upgrade
;; ;;
guix) guix)
sudocmd guix pull --verbose sudocmd guix pull --verbose
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -22,64 +22,64 @@ load_helper epm-sh-warmup ...@@ -22,64 +22,64 @@ load_helper epm-sh-warmup
epm_remove_old_kernels() epm_remove_old_kernels()
{ {
warmup_bases warmup_bases
case $BASEDISTRNAME in case $BASEDISTRNAME in
"alt") "alt")
load_helper epm-query_package load_helper epm-query_package
if ! __epm_query_package kernel-image >/dev/null ; then if ! __epm_query_package kernel-image >/dev/null ; then
info "No installed kernel packages, skipping cleaning" info "No installed kernel packages, skipping cleaning"
return return
fi fi
assure_exists update-kernel update-kernel 0.9.9 assure_exists update-kernel update-kernel 0.9.9
sudocmd remove-old-kernels $dryrun $(subst_option non_interactive -y) "$@" sudocmd remove-old-kernels $dryrun $(subst_option non_interactive -y) "$@"
[ -n "$dryrun" ] && return [ -n "$dryrun" ] && return
# remove unused nvidia drivers # remove unused nvidia drivers
if is_command nvidia-clean-driver ; then if is_command nvidia-clean-driver ; then
if [ -n "$non_interactive" ] ; then if [ -n "$non_interactive" ] ; then
yes | sudocmd nvidia-clean-driver yes | sudocmd nvidia-clean-driver
else else
sudocmd nvidia-clean-driver sudocmd nvidia-clean-driver
fi fi
fi fi
return ;; return ;;
esac esac
case $DISTRNAME in case $DISTRNAME in
Ubuntu) Ubuntu)
load_helper epm-query_package load_helper epm-query_package
if ! __epm_query_package linux-image >/dev/null ; then if ! __epm_query_package linux-image >/dev/null ; then
info "No installed kernel packages, skipping cleaning" info "No installed kernel packages, skipping cleaning"
return return
fi fi
info "Note: it is enough to use eepm autoremove for old kernel removing..." info "Note: it is enough to use eepm autoremove for old kernel removing..."
info "Check also http://ubuntuhandbook.org/index.php/2016/05/remove-old-kernels-ubuntu-16-04/" info "Check also http://ubuntuhandbook.org/index.php/2016/05/remove-old-kernels-ubuntu-16-04/"
# http://www.opennet.ru/tips/2980_ubuntu_apt_clean_kernel_packet.shtml # http://www.opennet.ru/tips/2980_ubuntu_apt_clean_kernel_packet.shtml
case $DISTRVERSION in case $DISTRVERSION in
10.04|12.04|14.04|15.04|15.10) 10.04|12.04|14.04|15.04|15.10)
assure_exists purge-old-kernels bikeshed assure_exists purge-old-kernels bikeshed
;; ;;
*) *)
# since Ubuntu 16.04 # since Ubuntu 16.04
assure_exists purge-old-kernels byobu assure_exists purge-old-kernels byobu
;; ;;
esac esac
sudocmd purge-old-kernels "$@" sudocmd purge-old-kernels "$@"
return ;; return ;;
Gentoo) Gentoo)
sudocmd emerge -P gentoo-sources sudocmd emerge -P gentoo-sources
return ;; return ;;
VoidLinux) VoidLinux)
sudocmd vkpurge rm all sudocmd vkpurge rm all
return ;; return ;;
esac esac
case $PMTYPE in case $PMTYPE in
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -22,73 +22,73 @@ load_helper epm-sh-altlinux ...@@ -22,73 +22,73 @@ load_helper epm-sh-altlinux
# remove grepped lines # remove grepped lines
__epm_removerepo_alt_grepremove() __epm_removerepo_alt_grepremove()
{ {
local rl local rl
# ^rpm means full string # ^rpm means full string
if [ "$1" = "all" ] || rhas "$1" "^rpm" ; then if [ "$1" = "all" ] || rhas "$1" "^rpm" ; then
rl="$1" rl="$1"
else else
rl="$( epm --quiet repolist 2>/dev/null | grep -F "$1")" rl="$( epm --quiet repolist 2>/dev/null | grep -F "$1")"
[ -z "$rl" ] && warning "Can't find '$1' in the repos (see '# epm repolist' output)" && return 1 [ -z "$rl" ] && warning "Can't find '$1' in the repos (see '# epm repolist' output)" && return 1
fi fi
echo "$rl" | while read rp ; do echo "$rl" | while read rp ; do
# TODO: print removed lines # TODO: print removed lines
if [ -n "$dryrun" ] ; then if [ -n "$dryrun" ] ; then
docmd apt-repo $dryrun rm "$rp" docmd apt-repo $dryrun rm "$rp"
continue continue
fi fi
if [ -z "$quiet" ] ; then if [ -z "$quiet" ] ; then
sudocmd apt-repo $dryrun rm "$rp" sudocmd apt-repo $dryrun rm "$rp"
else else
sudorun apt-repo $dryrun rm "$rp" sudorun apt-repo $dryrun rm "$rp"
fi fi
done done
} }
__epm_removerepo_alt() __epm_removerepo_alt()
{ {
local repo="$*" local repo="$*"
[ -n "$repo" ] || fatal "No such repo or task. Use epm repo remove <regexp|autoimports|archive|tasks|TASKNUMBER>" [ -n "$repo" ] || fatal "No such repo or task. Use epm repo remove <regexp|autoimports|archive|tasks|TASKNUMBER>"
assure_exists apt-repo assure_exists apt-repo
if tasknumber "$repo" >/dev/null ; then if tasknumber "$repo" >/dev/null ; then
local tn local tn
for tn in $(tasknumber "$repo") ; do for tn in $(tasknumber "$repo") ; do
__epm_removerepo_alt_grepremove " repo/$tn/" __epm_removerepo_alt_grepremove " repo/$tn/"
done done
return return
fi fi
local branch="$(echo "$DISTRVERSION" | tr "[:upper:]" "[:lower:]")" local branch="$(echo "$DISTRVERSION" | tr "[:upper:]" "[:lower:]")"
case "$1" in case "$1" in
autoimports) autoimports)
info "remove autoimports repo" info "remove autoimports repo"
[ -n "$DISTRVERSION" ] || fatal "Empty DISTRVERSION" [ -n "$DISTRVERSION" ] || fatal "Empty DISTRVERSION"
repo="autoimports.$branch" repo="autoimports.$branch"
sudocmd apt-repo $dryrun rm "$repo" sudocmd apt-repo $dryrun rm "$repo"
;; ;;
archive) archive)
info "remove archive repos" info "remove archive repos"
__epm_removerepo_alt_grepremove "archive/" __epm_removerepo_alt_grepremove "archive/"
;; ;;
tasks) tasks)
info "remove task repos" info "remove task repos"
__epm_removerepo_alt_grepremove " repo/[0-9]+/" __epm_removerepo_alt_grepremove " repo/[0-9]+/"
;; ;;
task) task)
shift shift
__epm_removerepo_alt_grepremove " repo/$1/" __epm_removerepo_alt_grepremove " repo/$1/"
;; ;;
-*) -*)
fatal "epm removerepo: no options are supported" fatal "epm removerepo: no options are supported"
;; ;;
*) *)
# TODO: if return empty for whole line, use grep # TODO: if return empty for whole line, use grep
# sudocmd apt-repo $dryrun rm "$*" # sudocmd apt-repo $dryrun rm "$*"
__epm_removerepo_alt_grepremove "$*" __epm_removerepo_alt_grepremove "$*"
;; ;;
esac esac
} }
...@@ -96,67 +96,67 @@ epm_removerepo() ...@@ -96,67 +96,67 @@ epm_removerepo()
{ {
case $BASEDISTRNAME in case $BASEDISTRNAME in
"alt") "alt")
__epm_removerepo_alt "$@" __epm_removerepo_alt "$@"
return return
;; ;;
"astra") "astra")
echo "Use workaround for AstraLinux" echo "Use workaround for AstraLinux"
[ -n "$*" ] || fatal "empty repo name" [ -n "$*" ] || fatal "empty repo name"
# aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for AstraLinuxCE/orel # aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for AstraLinuxCE/orel
sudocmd sed -i -e "s|.*$*.*||" /etc/apt/sources.list sudocmd sed -i -e "s|.*$*.*||" /etc/apt/sources.list
if [ -d /etc/apt/sources.list.d ] && ls /etc/apt/sources.list.d/*.list >/dev/null 2>/dev/null ; then if [ -d /etc/apt/sources.list.d ] && ls /etc/apt/sources.list.d/*.list >/dev/null 2>/dev/null ; then
sudocmd sed -i -e "s|.*$*.*||" /etc/apt/sources.list.d/*.list sudocmd sed -i -e "s|.*$*.*||" /etc/apt/sources.list.d/*.list
fi fi
return return
;; ;;
esac; esac;
case $PMTYPE in case $PMTYPE in
apt-dpkg) apt-dpkg)
assure_exists apt-add-repository software-properties-common assure_exists apt-add-repository software-properties-common
# FIXME: it is possible there is troubles to pass the args # FIXME: it is possible there is troubles to pass the args
sudocmd apt-add-repository --remove "$*" sudocmd apt-add-repository --remove "$*"
info "Check file /etc/apt/sources.list if needed" info "Check file /etc/apt/sources.list if needed"
;; ;;
aptitude-dpkg) aptitude-dpkg)
info "You need remove repo from /etc/apt/sources.list" info "You need remove repo from /etc/apt/sources.list"
;; ;;
yum-rpm) yum-rpm)
assure_exists yum-utils assure_exists yum-utils
sudocmd yum-config-manager --disable "$@" sudocmd yum-config-manager --disable "$@"
;; ;;
urpm-rpm) urpm-rpm)
if [ "$1" = "all" ] ; then if [ "$1" = "all" ] ; then
sudocmd urpmi.removemedia -av sudocmd urpmi.removemedia -av
return return
fi fi
sudocmd urpmi.removemedia "$@" sudocmd urpmi.removemedia "$@"
;; ;;
zypper-rpm) zypper-rpm)
sudocmd zypper removerepo "$@" sudocmd zypper removerepo "$@"
;; ;;
emerge) emerge)
sudocmd layman "-d$@" sudocmd layman "-d$@"
;; ;;
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="$*" sudocmd npackdcl remove-repo --url="$*"
;; ;;
winget) winget)
sudocmd winget source remove "$@" sudocmd winget source remove "$@"
;; ;;
eopkg) eopkg)
sudocmd eopkg remove-repo "$@" sudocmd eopkg remove-repo "$@"
;; ;;
slackpkg) slackpkg)
info "You need remove repo from /etc/slackpkg/mirrors" info "You need remove repo from /etc/slackpkg/mirrors"
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -48,18 +48,18 @@ __epm_check_if_needed_repack() ...@@ -48,18 +48,18 @@ __epm_check_if_needed_repack()
# fills split_replaced_pkgs with packages of that type # fills split_replaced_pkgs with packages of that type
__epm_split_by_pkg_type() __epm_split_by_pkg_type()
{ {
local type="$1" local type="$1"
shift shift
split_replaced_pkgs='' split_replaced_pkgs=''
for pkg in "$@" ; do for pkg in "$@" ; do
[ "$(get_package_type "$pkg")" = "$type" ] || return 1 [ "$(get_package_type "$pkg")" = "$type" ] || return 1
[ -e "$pkg" ] || fatal "Can't read $pkg" [ -e "$pkg" ] || fatal "Can't read $pkg"
split_replaced_pkgs="$split_replaced_pkgs $pkg" split_replaced_pkgs="$split_replaced_pkgs $pkg"
done done
[ -n "$split_replaced_pkgs" ] [ -n "$split_replaced_pkgs" ]
} }
...@@ -181,43 +181,43 @@ __prepare_source_package() ...@@ -181,43 +181,43 @@ __prepare_source_package()
# fill repacked_pkgs # fill repacked_pkgs
__epm_repack() __epm_repack()
{ {
repacked_pkgs='' repacked_pkgs=''
case $PKGFORMAT in case $PKGFORMAT in
rpm) rpm)
load_helper epm-repack-rpm load_helper epm-repack-rpm
__epm_repack_to_rpm "$@" || return __epm_repack_to_rpm "$@" || return
;; ;;
deb) deb)
# FIXME: only one package in $@ is supported # FIXME: only one package in $@ is supported
#local pkgname="$(epm print name from "$@")" #local pkgname="$(epm print name from "$@")"
__set_version_pkgname "$1" __set_version_pkgname "$1"
local repackcode="$EPM_REPACK_SCRIPTS_DIR/$PKGNAME.sh" local repackcode="$EPM_REPACK_SCRIPTS_DIR/$PKGNAME.sh"
if [ -x "$repackcode" ] ; then if [ -x "$repackcode" ] ; then
load_helper epm-repack-rpm load_helper epm-repack-rpm
load_helper epm-repack-deb load_helper epm-repack-deb
__epm_repack_to_rpm "$@" || return __epm_repack_to_rpm "$@" || return
[ -n "$repacked_pkgs" ] || return [ -n "$repacked_pkgs" ] || return
__epm_repack_to_deb $repacked_pkgs __epm_repack_to_deb $repacked_pkgs
else else
load_helper epm-repack-deb load_helper epm-repack-deb
__epm_repack_to_deb "$@" || return __epm_repack_to_deb "$@" || return
fi fi
;; ;;
*) *)
fatal "$PKGFORMAT is not supported for repack yet" fatal "$PKGFORMAT is not supported for repack yet"
;; ;;
esac esac
return 0 return 0
} }
__epm_repack_if_needed() __epm_repack_if_needed()
{ {
# return 1 if there is a package in host package format # return 1 if there is a package in host package format
__epm_split_by_pkg_type $PKGFORMAT "$@" && return 1 __epm_split_by_pkg_type $PKGFORMAT "$@" && return 1
__epm_repack "$@" __epm_repack "$@"
return 0 return 0
} }
epm_repack() epm_repack()
...@@ -242,7 +242,7 @@ epm_repack() ...@@ -242,7 +242,7 @@ epm_repack()
echo echo
echo "Adapted packages:" echo "Adapted packages:"
for i in $repacked_pkgs ; do for i in $repacked_pkgs ; do
echo " $EPMCURDIR/$(basename "$i")" echo " $EPMCURDIR/$(basename "$i")"
done done
fi fi
fi fi
......
...@@ -21,40 +21,40 @@ ...@@ -21,40 +21,40 @@
# fills repacked_pkgs # fills repacked_pkgs
__epm_repack_to_deb() __epm_repack_to_deb()
{ {
local pkg local pkg
local pkgs="$*" local pkgs="$*"
assure_exists alien assure_exists alien
assure_exists fakeroot assure_exists fakeroot
assure_exists rpm assure_exists rpm
repacked_pkgs='' repacked_pkgs=''
local TDIR=$(mktemp -d --tmpdir=$BIGTMPDIR) local TDIR=$(mktemp -d --tmpdir=$BIGTMPDIR)
to_clean_tmp_dirs="$to_clean_tmp_dirs $TDIR" to_clean_tmp_dirs="$to_clean_tmp_dirs $TDIR"
trap "__epm_remove_tmp_files" EXIT trap "__epm_remove_tmp_files" EXIT
for pkg in $pkgs ; do for pkg in $pkgs ; do
abspkg="$(realpath "$pkg")" abspkg="$(realpath "$pkg")"
info "Repacking $abspkg to local deb format (inside $TDIR) ..." info "Repacking $abspkg to local deb format (inside $TDIR) ..."
alpkg=$(basename $pkg) alpkg=$(basename $pkg)
# don't use abs package path: copy package to temp dir and use there # don't use abs package path: copy package to temp dir and use there
cp $verbose $pkg $TDIR/$alpkg cp $verbose $pkg $TDIR/$alpkg
cd $TDIR || fatal cd $TDIR || fatal
__prepare_source_package "$pkg" __prepare_source_package "$pkg"
showcmd_store_output fakeroot alien -d -k $scripts "$alpkg" showcmd_store_output fakeroot alien -d -k $scripts "$alpkg"
local DEBCONVERTED=$(grep "deb generated" $RC_STDOUT | sed -e "s| generated||g") local DEBCONVERTED=$(grep "deb generated" $RC_STDOUT | sed -e "s| generated||g")
if [ -n "$DEBCONVERTED" ] ; then if [ -n "$DEBCONVERTED" ] ; then
repacked_pkgs="$repacked_pkgs $(realpath $DEBCONVERTED)" repacked_pkgs="$repacked_pkgs $(realpath $DEBCONVERTED)"
to_remove_pkg_files="$to_remove_pkg_files $(realpath $DEBCONVERTED)" to_remove_pkg_files="$to_remove_pkg_files $(realpath $DEBCONVERTED)"
fi fi
clean_store_output clean_store_output
cd - >/dev/null cd - >/dev/null
done done
return 0 return 0
} }
...@@ -85,14 +85,14 @@ __create_rpmmacros() ...@@ -85,14 +85,14 @@ __create_rpmmacros()
[ -n "$TMPDIR" ] || TMPDIR=/tmp [ -n "$TMPDIR" ] || TMPDIR=/tmp
cat <<EOF >$HOME/.rpmmacros cat <<EOF >$HOME/.rpmmacros
%_topdir $HOME/RPM %_topdir $HOME/RPM
%_tmppath $TMPDIR %_tmppath $TMPDIR
%packager EPM <support@eepm.ru> %packager EPM <support@eepm.ru>
%_vendor EEPM %_vendor EEPM
%_gpg_name support@etersoft.ru %_gpg_name support@etersoft.ru
%_allow_root_build 1 %_allow_root_build 1
EOF EOF
to_remove_pkg_files="$to_remove_pkg_files $HOME/.rpmmacros" to_remove_pkg_files="$to_remove_pkg_files $HOME/.rpmmacros"
} }
...@@ -114,14 +114,14 @@ __epm_repack_to_rpm() ...@@ -114,14 +114,14 @@ __epm_repack_to_rpm()
assure_exists alien || fatal assure_exists alien || fatal
# TODO: check for all systems # TODO: check for all systems
case $PKGFORMAT in case $PKGFORMAT in
rpm) rpm)
assure_exists /usr/bin/rpmbuild rpm-build || fatal assure_exists /usr/bin/rpmbuild rpm-build || fatal
;; ;;
deb) deb)
assure_exists /usr/bin/rpmbuild rpm || fatal assure_exists /usr/bin/rpmbuild rpm || fatal
;; ;;
esac esac
# TODO: improve # TODO: improve
if echo "$pkgs" | grep -q "\.deb" ; then if echo "$pkgs" | grep -q "\.deb" ; then
......
...@@ -21,8 +21,8 @@ load_helper epm-sh-altlinux ...@@ -21,8 +21,8 @@ load_helper epm-sh-altlinux
epm_repo_help() epm_repo_help()
{ {
get_help HELPCMD $SHAREDIR/epm-repo get_help HELPCMD $SHAREDIR/epm-repo
cat <<EOF cat <<EOF
Examples: Examples:
epm repo set p9 epm repo set p9
epm repo add autoimports epm repo add autoimports
...@@ -34,97 +34,97 @@ EOF ...@@ -34,97 +34,97 @@ EOF
epm_repo() epm_repo()
{ {
local CMD="$1" local CMD="$1"
[ -n "$CMD" ] && shift [ -n "$CMD" ] && shift
case $CMD in case $CMD in
"-h"|"--help"|help) # HELPCMD: help "-h"|"--help"|help) # HELPCMD: help
epm_repo_help epm_repo_help
;; ;;
""|list) # HELPCMD: list packages ""|list) # HELPCMD: list packages
load_helper epm-repolist load_helper epm-repolist
epm_repolist "$@" epm_repolist "$@"
;; ;;
fix) # HELPCMD: fix paths in sources lists (ALT Linux only) fix) # HELPCMD: fix paths in sources lists (ALT Linux only)
load_helper epm-repofix load_helper epm-repofix
epm_repofix "$@" epm_repofix "$@"
;; ;;
change) # HELPCMD: <mirror>: switch sources to the mirror (supports etersoft/yandex/basealt): rewrite URLs to the specified server change) # HELPCMD: <mirror>: switch sources to the mirror (supports etersoft/yandex/basealt): rewrite URLs to the specified server
load_helper epm-repofix load_helper epm-repofix
epm_repofix "$@" epm_repofix "$@"
;; ;;
set) # HELPCMD: <mirror>: remove all existing sources and add mirror for the branch set) # HELPCMD: <mirror>: remove all existing sources and add mirror for the branch
epm repo rm all epm repo rm all
epm addrepo "$@" epm addrepo "$@"
;; ;;
switch) # HELPCMD: switch repo to <repo>: rewrite URLs to the repo switch) # HELPCMD: switch repo to <repo>: rewrite URLs to the repo
load_helper epm-repofix load_helper epm-repofix
epm_reposwitch "$@" epm_reposwitch "$@"
;; ;;
enable) # HELPCMD: enable <repo> enable) # HELPCMD: enable <repo>
load_helper epm-repoenable load_helper epm-repoenable
epm_repoenable "$@" epm_repoenable "$@"
;; ;;
disable) # HELPCMD: disable <repo> disable) # HELPCMD: disable <repo>
load_helper epm-repodisable load_helper epm-repodisable
epm_repodisable "$@" epm_repodisable "$@"
;; ;;
addkey) # HELPCMD: add repository gpg key addkey) # HELPCMD: add repository gpg key
load_helper epm-addrepo load_helper epm-addrepo
epm_addkey "$@" epm_addkey "$@"
;; ;;
clean) # HELPCMD: remove temp. repos (tasks and CD-ROMs) clean) # HELPCMD: remove temp. repos (tasks and CD-ROMs)
# TODO: check for ALT # TODO: check for ALT
sudocmd apt-repo $dryrun clean sudocmd apt-repo $dryrun clean
;; ;;
save) save)
load_helper epm-reposave load_helper epm-reposave
epm_reposave "$@" epm_reposave "$@"
;; ;;
restore) restore)
load_helper epm-reposave load_helper epm-reposave
epm_reporestore "$@" epm_reporestore "$@"
;; ;;
reset) reset)
load_helper epm-reposave load_helper epm-reposave
epm_reporeset "$@" epm_reporeset "$@"
;; ;;
add) # HELPCMD: add package repo (etersoft, autoimports, archive 2017/12/31); run with param to get list add) # HELPCMD: add package repo (etersoft, autoimports, archive 2017/12/31); run with param to get list
load_helper epm-addrepo load_helper epm-addrepo
epm_addrepo "$@" epm_addrepo "$@"
;; ;;
Add) # HELPCMD: like add, but do update after add Add) # HELPCMD: like add, but do update after add
load_helper epm-addrepo load_helper epm-addrepo
epm_addrepo "$@" epm_addrepo "$@"
epm update epm update
;; ;;
rm|remove) # HELPCMD: remove repository from the sources lists (epm repo remove all for all) rm|remove) # HELPCMD: remove repository from the sources lists (epm repo remove all for all)
load_helper epm-removerepo load_helper epm-removerepo
epm_removerepo "$@" epm_removerepo "$@"
;; ;;
create) # HELPCMD: create (initialize) repo: [path] [name] create) # HELPCMD: create (initialize) repo: [path] [name]
load_helper epm-repoindex load_helper epm-repoindex
epm_repocreate "$@" epm_repocreate "$@"
;; ;;
index) # HELPCMD: index repo: [--init] [path] [name] index) # HELPCMD: index repo: [--init] [path] [name]
load_helper epm-repoindex load_helper epm-repoindex
epm_repoindex "$@" epm_repoindex "$@"
;; ;;
pkgadd) # HELPCMD: add to <dir> applied <package-filename1> [<package-filename2>...] pkgadd) # HELPCMD: add to <dir> applied <package-filename1> [<package-filename2>...]
load_helper epm-repopkg load_helper epm-repopkg
epm_repo_pkgadd "$@" epm_repo_pkgadd "$@"
;; ;;
pkgupdate) # HELPCMD: replace in <dir> with new <package-filename1> [<package-filename2>...] pkgupdate) # HELPCMD: replace in <dir> with new <package-filename1> [<package-filename2>...]
load_helper epm-repopkg load_helper epm-repopkg
epm_repo_pkgupdate "$@" epm_repo_pkgupdate "$@"
;; ;;
pkgdel) # HELPCMD: del from <dir> <package1> [<package2>...] pkgdel) # HELPCMD: del from <dir> <package1> [<package2>...]
load_helper epm-repopkg load_helper epm-repopkg
epm_repo_pkgdel "$@" epm_repo_pkgdel "$@"
;; ;;
*) *)
fatal "Unknown command $ epm repo '$CMD'" fatal "Unknown command $ epm repo '$CMD'"
;; ;;
esac esac
} }
...@@ -25,18 +25,18 @@ alt_LISTS='/etc/apt/sources.list /etc/apt/sources.list.d/*.list' ...@@ -25,18 +25,18 @@ alt_LISTS='/etc/apt/sources.list /etc/apt/sources.list.d/*.list'
__epm_repodisable_alt() __epm_repodisable_alt()
{ {
local rl local rl
# ^rpm means full string # ^rpm means full string
if rhas "$1" "\^rpm" ; then if rhas "$1" "\^rpm" ; then
rl="$(echo "$1" | sed -e 's|\^||')" rl="$(echo "$1" | sed -e 's|\^||')"
else else
rl="$( (epm --quiet repolist) 2>/dev/null | grep -F "$1" | head -n1 )" rl="$( (epm --quiet repolist) 2>/dev/null | grep -F "$1" | head -n1 )"
[ -z "$rl" ] && warning "Can't find '$1' entries in the repos (see '# epm repolist' output)" && return 1 [ -z "$rl" ] && warning "Can't find '$1' entries in the repos (see '# epm repolist' output)" && return 1
fi fi
echo "$rl" | while read rp ; do echo "$rl" | while read rp ; do
[ -n "$dryrun" ] && echo "will comment $rp" && continue [ -n "$dryrun" ] && echo "will comment $rp" && continue
sed -i -e "s|^\($(sed_escape "$rl")\)|#\1|" $alt_LISTS sed -i -e "s|^\($(sed_escape "$rl")\)|#\1|" $alt_LISTS
done done
} }
...@@ -44,26 +44,26 @@ epm_repodisable() ...@@ -44,26 +44,26 @@ epm_repodisable()
{ {
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
assure_root assure_root
__epm_repodisable_alt "$@" __epm_repodisable_alt "$@"
;; ;;
apt-dpkg|aptitude-dpkg) apt-dpkg|aptitude-dpkg)
print_apt_sources_list print_apt_sources_list
;; ;;
yum-rpm) yum-rpm)
docmd yum repolist $verbose docmd yum repolist $verbose
[ -n "$verbose" ] || info "Use --verbose if you need detail information." [ -n "$verbose" ] || info "Use --verbose if you need detail information."
;; ;;
dnf-rpm) dnf-rpm)
sudocmd dnf config-manager --enable $verbose "$@" sudocmd dnf config-manager --enable $verbose "$@"
;; ;;
eoget) eoget)
docmd eoget disable-repo "$@" docmd eoget disable-repo "$@"
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -25,18 +25,18 @@ alt_LISTS='/etc/apt/sources.list /etc/apt/sources.list.d/*.list' ...@@ -25,18 +25,18 @@ alt_LISTS='/etc/apt/sources.list /etc/apt/sources.list.d/*.list'
__epm_repoenable_alt() __epm_repoenable_alt()
{ {
local rl local rl
# ^rpm means full string # ^rpm means full string
if rhas "$1" "\^rpm" ; then if rhas "$1" "\^rpm" ; then
rl="$(echo "$1" | sed -e 's|\^||')" rl="$(echo "$1" | sed -e 's|\^||')"
else else
rl="$( epm --quiet --all repolist 2>/dev/null | grep -F "$1" | head -n1 | sed -e 's|[[:space:]]*#[[:space:]]*||' )" rl="$( epm --quiet --all repolist 2>/dev/null | grep -F "$1" | head -n1 | sed -e 's|[[:space:]]*#[[:space:]]*||' )"
[ -z "$rl" ] && warning "Can't find commented '$1' in the repos (see '# epm repolist' output)" && return 1 [ -z "$rl" ] && warning "Can't find commented '$1' in the repos (see '# epm repolist' output)" && return 1
fi fi
echo "$rl" | while read rp ; do echo "$rl" | while read rp ; do
[ -n "$dryrun" ] && echo "will uncomment $rp" && continue [ -n "$dryrun" ] && echo "will uncomment $rp" && continue
sed -i -e "s|^[[:space:]]*#[[:space:]]*\($(sed_escape "$rl")\)|\1|" $alt_LISTS sed -i -e "s|^[[:space:]]*#[[:space:]]*\($(sed_escape "$rl")\)|\1|" $alt_LISTS
done done
} }
...@@ -44,26 +44,26 @@ epm_repoenable() ...@@ -44,26 +44,26 @@ epm_repoenable()
{ {
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
assure_root assure_root
__epm_repoenable_alt "$@" __epm_repoenable_alt "$@"
;; ;;
apt-dpkg|aptitude-dpkg) apt-dpkg|aptitude-dpkg)
print_apt_sources_list print_apt_sources_list
;; ;;
yum-rpm) yum-rpm)
docmd yum repolist $verbose docmd yum repolist $verbose
[ -n "$verbose" ] || info "Use --verbose if you need detail information." [ -n "$verbose" ] || info "Use --verbose if you need detail information."
;; ;;
dnf-rpm) dnf-rpm)
sudocmd dnf config-manager --disable $verbose "$@" sudocmd dnf config-manager --disable $verbose "$@"
;; ;;
eoget) eoget)
docmd eoget enable-repo "$@" docmd eoget enable-repo "$@"
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
...@@ -34,60 +34,60 @@ get_archlist() ...@@ -34,60 +34,60 @@ get_archlist()
# https://www.altlinux.org/APT_%D0%B2_ALT_Linux/CreateRepository # https://www.altlinux.org/APT_%D0%B2_ALT_Linux/CreateRepository
__epm_repoindex_alt() __epm_repoindex_alt()
{ {
local archlist="i586 x86_64 aarch64 noarch" local archlist="i586 x86_64 aarch64 noarch"
local init='' local init=''
if [ "$1" = "--init" ] ; then if [ "$1" = "--init" ] ; then
init='--init' init='--init'
shift shift
fi fi
epm assure genbasedir apt-repo-tools || fatal epm assure genbasedir apt-repo-tools || fatal
REPO_DIR="$1" REPO_DIR="$1"
# TODO: check if we inside arch dir or RPMS.* # TODO: check if we inside arch dir or RPMS.*
[ -n "$REPO_DIR" ] || REPO_DIR="$(pwd)" [ -n "$REPO_DIR" ] || REPO_DIR="$(pwd)"
if [ -z "$init" ] ; then if [ -z "$init" ] ; then
[ -d "$REPO_DIR" ] || fatal "Repo dir $REPO_DIR does not exist" [ -d "$REPO_DIR" ] || fatal "Repo dir $REPO_DIR does not exist"
fi fi
REPO_NAME="$2" REPO_NAME="$2"
if [ -z "$REPO_NAME" ] ; then if [ -z "$REPO_NAME" ] ; then
# default name # default name
REPO_NAME="addon" REPO_NAME="addon"
# detect name if already exists # detect name if already exists
for arch in $archlist ; do for arch in $archlist ; do
local rd="$(echo $REPO_DIR/$arch/RPMS.*)" local rd="$(echo $REPO_DIR/$arch/RPMS.*)"
[ -d "$rd" ] && REPO_NAME="$(echo "$rd" | sed -e 's|.*\.||')" && break [ -d "$rd" ] && REPO_NAME="$(echo "$rd" | sed -e 's|.*\.||')" && break
done done
fi fi
if [ -n "$init" ] ; then if [ -n "$init" ] ; then
for arch in $(get_archlist); do for arch in $(get_archlist); do
mkdir -pv "$REPO_DIR/$arch/base/" mkdir -pv "$REPO_DIR/$arch/base/"
mkdir -pv "$REPO_DIR/$arch/RPMS.$REPO_NAME/" mkdir -pv "$REPO_DIR/$arch/RPMS.$REPO_NAME/"
done done
return return
fi fi
for arch in $archlist; do for arch in $archlist; do
[ -d "$REPO_DIR/$arch/RPMS.$REPO_NAME" ] || continue [ -d "$REPO_DIR/$arch/RPMS.$REPO_NAME" ] || continue
mkdir -pv "$REPO_DIR/$arch/base/" mkdir -pv "$REPO_DIR/$arch/base/"
sudocmd genbasedir --bloat --progress --topdir=$REPO_DIR $arch $REPO_NAME sudocmd genbasedir --bloat --progress --topdir=$REPO_DIR $arch $REPO_NAME
done done
} }
__epm_repoindex_deb() __epm_repoindex_deb()
{ {
local init='' local init=''
if [ "$1" = "--init" ] ; then if [ "$1" = "--init" ] ; then
init='--init' init='--init'
shift shift
fi fi
local dir="$1" local dir="$1"
sudocmd mkdir -pv "$dir" || fatal sudocmd mkdir -pv "$dir" || fatal
assure_exists gzip assure_exists gzip
sudocmd dpkg-scanpackages -t deb "$dir" | gzip | cat > "$dir/Packages.gz" sudocmd dpkg-scanpackages -t deb "$dir" | gzip | cat > "$dir/Packages.gz"
} }
...@@ -95,30 +95,30 @@ epm_repoindex() ...@@ -95,30 +95,30 @@ epm_repoindex()
{ {
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
__epm_repoindex_alt "$@" __epm_repoindex_alt "$@"
;; ;;
apt-dpkg|aptitude-dpkg) apt-dpkg|aptitude-dpkg)
__epm_repoindex_deb "$@" __epm_repoindex_deb "$@"
;; ;;
yum-rpm) yum-rpm)
epm install --skip-installed yum-utils createrepo || fatal epm install --skip-installed yum-utils createrepo || fatal
sudocmd mkdir -pv "$@" sudocmd mkdir -pv "$@"
sudocmd createrepo -v -s md5 "$@" sudocmd createrepo -v -s md5 "$@"
sudocmd verifytree sudocmd verifytree
;; ;;
dnf-rpm) dnf-rpm)
epm install --skip-installed yum-utils createrepo || fatal epm install --skip-installed yum-utils createrepo || fatal
sudocmd mkdir -pv "$@" sudocmd mkdir -pv "$@"
sudocmd createrepo -v -s md5 "$@" sudocmd createrepo -v -s md5 "$@"
sudocmd verifytree sudocmd verifytree
;; ;;
eoget) eoget)
docmd eoget index "$@" docmd eoget index "$@"
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
} }
......
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