Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
eepm
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
eepm
Commits
fffa7293
Commit
fffa7293
authored
Oct 08, 2013
by
Vitaly Lipatov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
commit packed
parent
877249a8
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
303 additions
and
57 deletions
+303
-57
epm.sh
packed/epm.sh
+255
-56
serv.sh
packed/serv.sh
+48
-1
No files found.
packed/epm.sh
View file @
fffa7293
...
@@ -222,6 +222,40 @@ set_sudo()
...
@@ -222,6 +222,40 @@ set_sudo()
SUDO
=
"fatal 'Can't find sudo. Please install sudo or run epm under root.'"
SUDO
=
"fatal 'Can't find sudo. Please install sudo or run epm under root.'"
}
}
assure_exists
()
{
PATH
=
$PATH
:/sbin:/usr/sbin which
$1
2>/dev/null
>
/dev/null
&&
return
echo
"Install appropriate package for
$1
command..."
case
$1
in
equery|revdep-rebuild
)
epm
install
gentoolkit
;;
apt-repo
)
epm
install
apt-repo
;;
apt-file
)
epm
install
apt-file
;;
update-kernel|remove-old-kernels
)
epm
install
update-kernel
;;
*
)
fatal
"Internal error: Unknown binary
$1
to check if exists"
;;
esac
}
get_package_type
()
{
local
i
for
i
in
deb rpm
;
do
[
"
${
1
/.
$i
/
}
"
!=
"
$1
"
]
&&
echo
$i
&&
return
done
echo
"
$1
"
return
0
}
get_help
()
get_help
()
{
{
grep
-v
--
"^#"
$0
|
grep
--
"#
$1
"
|
while
read
n
;
do
grep
-v
--
"^#"
$0
|
grep
--
"#
$1
"
|
while
read
n
;
do
...
@@ -291,6 +325,9 @@ case $DISTRNAME in
...
@@ -291,6 +325,9 @@ case $DISTRNAME in
OpenWRT
)
OpenWRT
)
CMD
=
"ipkg"
CMD
=
"ipkg"
;;
;;
GNU/Linux/Guix
)
CMD
=
"guix"
;;
*
)
*
)
fatal
"Have no suitable DISTRNAME
$DISTRNAME
"
fatal
"Have no suitable DISTRNAME
$DISTRNAME
"
;;
;;
...
@@ -305,6 +342,7 @@ epm_addrepo()
...
@@ -305,6 +342,7 @@ epm_addrepo()
{
{
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm
)
apt-rpm
)
assure_exists apt-repo
sudocmd apt-repo add
$pkg_filenames
sudocmd apt-repo add
$pkg_filenames
;;
;;
apt-dpkg
)
apt-dpkg
)
...
@@ -346,6 +384,7 @@ epm_autoremove()
...
@@ -346,6 +384,7 @@ epm_autoremove()
{
{
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm
)
apt-rpm
)
assure_exists remove-old-kernels
# ALT Linux only
# ALT Linux only
sudocmd remove-old-kernels
sudocmd remove-old-kernels
;;
;;
...
@@ -370,7 +409,7 @@ case $PMTYPE in
...
@@ -370,7 +409,7 @@ case $PMTYPE in
;;
;;
emerge
)
emerge
)
sudocmd emerge
--depclean
sudocmd emerge
--depclean
docmd epm
--skip-installed
install
gentoolkit
assure_exists revdep-rebuild
sudocmd revdep-rebuild
sudocmd revdep-rebuild
;;
;;
pacman
)
pacman
)
...
@@ -380,6 +419,9 @@ case $PMTYPE in
...
@@ -380,6 +419,9 @@ case $PMTYPE in
# clean-system removes non official packages
# clean-system removes non official packages
#sudocmd slackpkg clean-system
#sudocmd slackpkg clean-system
;;
;;
guix
)
sudocmd guix gc
;;
#zypper-rpm)
#zypper-rpm)
# sudocmd zypper clean
# sudocmd zypper clean
# ;;
# ;;
...
@@ -393,19 +435,27 @@ esac
...
@@ -393,19 +435,27 @@ esac
# File bin/epm-changelog:
# File bin/epm-changelog:
__epm_changelog_apt
()
{
local
i
for
i
in
$@
;
do
docmd apt-cache show
$i
|
grep
-A
1000
"^Changelog:"
done
}
__epm_changelog_files
()
__epm_changelog_files
()
{
{
[
-z
"
$*
"
]
&&
return
[
-z
"
$*
"
]
&&
return
case
$PMTYPE
in
# TODO: detect every file
apt-rpm|yum-rpm|zypper-rpm|urpm-rpm
)
case
$(
get_package_type
$1
)
in
rpm
)
docmd_foreach
"rpm -p --changelog"
$@
| less
docmd_foreach
"rpm -p --changelog"
$@
| less
;;
;;
*
)
*
)
fatal
"Have no suitable command for
$
PMTYPE
"
fatal
"Have no suitable command for
$
1
"
;;
;;
esac
esac
}
}
__epm_changelog_local_names
()
__epm_changelog_local_names
()
...
@@ -417,12 +467,11 @@ __epm_changelog_local_names()
...
@@ -417,12 +467,11 @@ __epm_changelog_local_names()
docmd_foreach
"rpm --changelog"
$@
| less
docmd_foreach
"rpm --changelog"
$@
| less
;;
;;
apt-dpkg
)
apt-dpkg
)
# FIXME: only first pkg
docmd zcat /usr/share/doc/
$1
/changelog.Debian.gz | less
docmd zcat /usr/share/doc/
$1
/changelog.Debian.gz | less
;;
;;
emerge
)
emerge
)
docmd view /usr/portage/category/
$1
/ChangeLog | less
assure_exists equery
#
docmd equery changes -f $1 | less
docmd equery changes
-f
$1
| less
;;
;;
pacman
)
pacman
)
docmd pacman
-Qc
$1
| less
docmd pacman
-Qc
$1
| less
...
@@ -438,9 +487,9 @@ __epm_changelog_unlocal_names()
...
@@ -438,9 +487,9 @@ __epm_changelog_unlocal_names()
[
-z
"
$*
"
]
&&
return
[
-z
"
$*
"
]
&&
return
case
$PMTYPE
in
case
$PMTYPE
in
#
apt-rpm)
apt-rpm
)
# docmd_foreach "rpm --changelog"
$@ | less
__epm_changelog_apt
$@
| less
#
;;
;;
#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
...
@@ -454,6 +503,10 @@ __epm_changelog_unlocal_names()
...
@@ -454,6 +503,10 @@ __epm_changelog_unlocal_names()
#zypper-rpm)
#zypper-rpm)
# sudocmd zypper clean
# sudocmd zypper clean
# ;;
# ;;
emerge
)
assure_exists equery
docmd equery changes
-f
$1
| less
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
;;
;;
...
@@ -526,11 +579,10 @@ esac
...
@@ -526,11 +579,10 @@ esac
check_pkg_integrity
()
check_pkg_integrity
()
{
{
local
EXT
=
`
echo
"
$1
"
|
sed
-e
"s|.*
\.\(
[a-z0-9]*
\)\$
|
\1
|g"
`
local
PKG
=
"
$1
"
local
PKG
=
"
$1
"
local
RET
local
RET
case
$
EXT
in
case
$
(
get_package_type
$PKG
)
in
rpm
)
rpm
)
docmd rpm
--checksig
$PKG
docmd rpm
--checksig
$PKG
;;
;;
...
@@ -546,8 +598,10 @@ check_pkg_integrity()
...
@@ -546,8 +598,10 @@ check_pkg_integrity()
;;
;;
*
)
*
)
docmd erc
test
"
$PKG
"
&&
return
docmd erc
test
"
$PKG
"
&&
return
which erc
>
/dev/null 2>/dev/null
&&
fatal
"Check failed"
which erc
>
/dev/null 2>/dev/null
&&
fatal
"Check failed."
fatal
"Install erc package."
fatal
"Install erc package for file package."
# TODO
epm
install
erc
;;
;;
esac
esac
}
}
...
@@ -561,6 +615,10 @@ case $PMTYPE in
...
@@ -561,6 +615,10 @@ case $PMTYPE in
*
-dpkg
)
*
-dpkg
)
docmd debsums
$@
docmd debsums
$@
;;
;;
emerge
)
assure_exists equery
docmd equery check
$@
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
;;
;;
...
@@ -630,11 +688,12 @@ __epm_filelist_file()
...
@@ -630,11 +688,12 @@ __epm_filelist_file()
[
-z
"
$*
"
]
&&
return
[
-z
"
$*
"
]
&&
return
case
$PMTYPE
in
# TODO: allow a new packages
apt-rpm|yum-rpm|urpm-rpm|zypper-rpm
)
case
$(
get_package_type
$1
)
in
rpm
)
CMD
=
"rpm -qlp"
CMD
=
"rpm -qlp"
;;
;;
apt-dpkg
)
deb
)
CMD
=
"dpkg --contents"
CMD
=
"dpkg --contents"
;;
;;
*
)
*
)
...
@@ -675,6 +734,10 @@ __epm_filelist_name()
...
@@ -675,6 +734,10 @@ __epm_filelist_name()
docmd pacman
-Ql
$pkg_names
|
sed
-e
"s|.* ||g"
docmd pacman
-Ql
$pkg_names
|
sed
-e
"s|.* ||g"
return
return
;;
;;
emerge
)
assure_exists equery
CMD
=
"equery files"
;;
slackpkg
)
slackpkg
)
is_installed
$pkg_names
||
fatal
"Query filelist for non installed packages does not realized"
is_installed
$pkg_names
||
fatal
"Query filelist for non installed packages does not realized"
docmd
awk
'BEGIN{desk=1}{if(/^FILE LIST:$/){desk=0} else if (desk==0) {print}}'
/var/log/packages/
${
pkg_filenames
}*
docmd
awk
'BEGIN{desk=1}{if(/^FILE LIST:$/){desk=0} else if (desk==0) {print}}'
/var/log/packages/
${
pkg_filenames
}*
...
@@ -756,12 +819,22 @@ case $PMTYPE in
...
@@ -756,12 +819,22 @@ case $PMTYPE in
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
)
assure_exists equery
docmd equery meta
$pkg_names
docmd equery which
$pkg_names
docmd equery uses
$pkg_names
docmd equery size
$pkg_names
;;
slackpkg
)
slackpkg
)
docmd /usr/sbin/slackpkg info
$pkg_names
docmd /usr/sbin/slackpkg info
$pkg_names
;;
;;
ipkg
)
ipkg
)
docmd ipkg info
$pkg_names
docmd ipkg info
$pkg_names
;;
;;
homebrew
)
docmd brew info
$pkg_names
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
;;
;;
...
@@ -891,6 +964,9 @@ epm_install_names()
...
@@ -891,6 +964,9 @@ epm_install_names()
nix
)
nix
)
__separate_sudocmd
"nix-env --install"
"nix-env --upgrade"
$@
__separate_sudocmd
"nix-env --install"
"nix-env --upgrade"
$@
return
;;
return
;;
guix
)
__separate_sudocmd
"guix package -i"
"guix package -i"
$@
return
;;
*
)
*
)
fatal
"Have no suitable install command for
$PMTYPE
"
fatal
"Have no suitable install command for
$PMTYPE
"
;;
;;
...
@@ -902,6 +978,7 @@ epm_ni_install_names()
...
@@ -902,6 +978,7 @@ epm_ni_install_names()
[
-z
"
$1
"
]
&&
return
[
-z
"
$1
"
]
&&
return
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm|apt-dpkg
)
apt-rpm|apt-dpkg
)
export
DEBIAN_FRONTEND
=
noninteractive
sudocmd apt-get
-y
--force-yes
-o
Dpkg::Options::
=
"--force-confdef"
-o
Dpkg::Options::
=
"--force-confold"
$APTOPTIONS
install
$@
sudocmd apt-get
-y
--force-yes
-o
Dpkg::Options::
=
"--force-confdef"
-o
Dpkg::Options::
=
"--force-confold"
$APTOPTIONS
install
$@
return
;;
return
;;
yum-rpm
)
yum-rpm
)
...
@@ -1210,6 +1287,7 @@ epm_kernel_update()
...
@@ -1210,6 +1287,7 @@ epm_kernel_update()
case
$DISTRNAME
in
case
$DISTRNAME
in
ALTLinux
)
ALTLinux
)
assure_exists update-kernel
sudocmd update-kernel
sudocmd update-kernel
return
;;
return
;;
esac
esac
...
@@ -1258,7 +1336,9 @@ case $PMTYPE in
...
@@ -1258,7 +1336,9 @@ case $PMTYPE in
[
-n
"
$short
"
]
&&
CMD
=
"rpm -qa --queryformat %{name}
\n
$pkg_filenames
"
[
-n
"
$short
"
]
&&
CMD
=
"rpm -qa --queryformat %{name}
\n
$pkg_filenames
"
;;
;;
emerge
)
emerge
)
CMD
=
"qlist -I"
CMD
=
"qlist -I -C"
# print with colors for console output
isatty
&&
CMD
=
"qlist -I"
;;
;;
pkgsrc
)
pkgsrc
)
CMD
=
"pkg_info"
CMD
=
"pkg_info"
...
@@ -1288,11 +1368,14 @@ case $PMTYPE in
...
@@ -1288,11 +1368,14 @@ case $PMTYPE in
fi
fi
;;
;;
homebrew
)
homebrew
)
CMD
=
"brew
$pkg_filenames
"
CMD
=
"brew
list
$pkg_filenames
"
;;
;;
ipkg
)
ipkg
)
CMD
=
"ipkg list"
CMD
=
"ipkg list"
;;
;;
guix
)
CMD
=
"guix package -I"
;;
*
)
*
)
fatal
"Have no suitable query command for
$PMTYPE
"
fatal
"Have no suitable query command for
$PMTYPE
"
;;
;;
...
@@ -1318,28 +1401,40 @@ epm_programs()
...
@@ -1318,28 +1401,40 @@ epm_programs()
# File bin/epm-provides:
# File bin/epm-provides:
epm_provides
()
epm_provides
_files
()
{
{
local
CMD
[
-n
"
$pkg_files
"
]
||
return
[
-n
"
$pkg_filenames
"
]
||
fatal
"Run query without names"
case
$PMTYPE
in
case
$(
get_package_type
$pkg_files
)
in
*
-rpm
)
rpm
)
CMD
=
"rpm -q --provides -p"
docmd
"rpm -q --provides -p"
;;
deb
)
# FIXME: will we provide ourself?
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
}
[
-n
"
$pkg_files
"
]
&&
docmd
$CMD
$pkg_files
epm_provides_names
()
{
local
CMD
[
-n
"
$pkg_names
"
]
||
return
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm
)
apt-rpm
)
# FIXME: need fix for a few names case
# 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
CMD
=
"apt-cache depends"
EXTRA_SHOWDOCMD
=
' | grep "Provides:"'
docmd apt-cache show
$pkg_names
|
grep
"Provides:"
return
fi
fi
;;
;;
urpm-rpm|zypper-rpm|yum-rpm
)
urpm-rpm|zypper-rpm|yum-rpm
)
...
@@ -1350,32 +1445,63 @@ case $PMTYPE in
...
@@ -1350,32 +1445,63 @@ case $PMTYPE in
fi
fi
;;
;;
emerge
)
emerge
)
assure_exists equery
CMD
=
"equery files"
CMD
=
"equery files"
;;
;;
apt-dpkg
)
# FIXME: need fix for a few names case
if
is_installed
$pkg_names
;
then
CMD
=
"rpm -q --provides"
else
EXTRA_SHOWDOCMD
=
' | grep "Provides:"'
docmd apt-cache show
$pkg_names
|
grep
"Provides:"
return
fi
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
;;
;;
esac
esac
[
-n
"
$pkg_names
"
]
&&
docmd
$CMD
$pkg_names
docmd
$CMD
$pkg_names
}
}
epm_provides
()
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"Run query without names"
epm_provides_files
epm_provides_names
}
# File bin/epm-query:
# File bin/epm-query:
_get_grep_exp
()
{
local
def
=
"^
$1
$"
[
"
$PMTYPE
"
!=
"emerge"
]
&&
echo
"
$def
"
&&
return
# Gentoo hack: support for short package form
echo
"
$1
"
|
grep
-q
"/"
&&
echo
"
$def
"
&&
return
echo
"/
$1
$"
}
_query_via_packages_list
()
_query_via_packages_list
()
{
{
local
res
=
0
local
res
=
0
local
grepexp
local
firstpkg
=
$1
local
firstpkg
=
$1
shift
shift
grepexp
=
$(
_get_grep_exp
$firstpkg
)
# separate first line for print out command
# separate first line for print out command
short
=
1
pkg_filenames
=
$firstpkg
epm_packages |
grep
--
"
^
$firstpkg
$
"
||
res
=
1
short
=
1
pkg_filenames
=
$firstpkg
epm_packages |
grep
--
"
$grepexp
"
||
res
=
1
for
pkg
in
"
$@
"
;
do
for
pkg
in
"
$@
"
;
do
short
=
1
pkg_filenames
=
$pkg
epm_packages 2>/dev/null |
grep
--
"^
$pkg
$"
||
res
=
1
grepexp
=
$(
_get_grep_exp
$pkg
)
short
=
1
pkg_filenames
=
$pkg
epm_packages 2>/dev/null |
grep
--
"
$grepexp
"
||
res
=
1
done
done
return
$res
return
$res
...
@@ -1416,7 +1542,7 @@ __epm_get_hilevel_name()
...
@@ -1416,7 +1542,7 @@ __epm_get_hilevel_name()
for
i
in
$@
;
do
for
i
in
$@
;
do
local
pkg
local
pkg
# get short form in pkg
# get short form in pkg
quiet
=
1
short
=
1
pkg
=
$(
__epm_query_name
$i
)
quiet
=
1
short
=
1
pkg
=
$(
__epm_query_name
$i
)
||
continue
# drop not installed packages
# if already short form, skipped
# if already short form, skipped
[
"
$pkg
"
=
"
$i
"
]
&&
echo
"
$i
"
&&
continue
[
"
$pkg
"
=
"
$i
"
]
&&
echo
"
$i
"
&&
continue
# try get long form or use short form
# try get long form or use short form
...
@@ -1470,7 +1596,7 @@ __epm_query_name()
...
@@ -1470,7 +1596,7 @@ __epm_query_name()
conary
)
conary
)
CMD
=
"conary query"
CMD
=
"conary query"
;;
;;
brew
)
home
brew
)
warning
"fix query"
warning
"fix query"
return
1
return
1
;;
;;
...
@@ -1486,8 +1612,9 @@ __epm_query_name()
...
@@ -1486,8 +1612,9 @@ __epm_query_name()
is_installed
()
is_installed
()
{
{
#pkg_filenames="$@" epm_query >/dev/null
pkg_filenames
=
"
$@
"
pkg_names
=
"
$@
"
epm_query
>
/dev/null 2>/dev/null
epm installed
$@
>
/dev/null 2>/dev/null
# broken way to recursive call here (overhead!)
#epm installed $@ >/dev/null 2>/dev/null
}
}
separate_installed
()
separate_installed
()
...
@@ -1569,6 +1696,7 @@ __do_query()
...
@@ -1569,6 +1696,7 @@ __do_query()
CMD
=
"rpm -qf"
CMD
=
"rpm -qf"
;;
;;
emerge
)
emerge
)
assure_exists equery
CMD
=
"equery belongs"
CMD
=
"equery belongs"
;;
;;
pacman
)
pacman
)
...
@@ -1606,6 +1734,7 @@ __do_short_query()
...
@@ -1606,6 +1734,7 @@ __do_short_query()
dpkg_print_name_version
$(
dpkg
-S
$1
|
sed
-e
"s|:.*||"
|
grep
-v
"^diversion by"
)
dpkg_print_name_version
$(
dpkg
-S
$1
|
sed
-e
"s|:.*||"
|
grep
-v
"^diversion by"
)
return
;;
return
;;
NOemerge
)
NOemerge
)
assure_exists equery
CMD
=
"equery belongs"
CMD
=
"equery belongs"
;;
;;
NOpacman
)
NOpacman
)
...
@@ -1758,6 +1887,12 @@ epm_release_upgrade()
...
@@ -1758,6 +1887,12 @@ epm_release_upgrade()
conary
)
conary
)
epm Upgrade
epm Upgrade
;;
;;
emerge
)
epm Upgrade
;;
guix
)
sudocmd guix pull
--verbose
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
;;
;;
...
@@ -1800,9 +1935,12 @@ epm_remove_names()
...
@@ -1800,9 +1935,12 @@ epm_remove_names()
[
-z
"
$1
"
]
&&
return
[
-z
"
$1
"
]
&&
return
case
$PMTYPE
in
case
$PMTYPE
in
apt-
rpm|apt-
dpkg
)
apt-dpkg
)
sudocmd apt-get remove
--purge
$@
sudocmd apt-get remove
--purge
$@
return
;;
return
;;
apt-rpm
)
sudocmd apt-get remove
$@
return
;;
deepsolver-rpm
)
deepsolver-rpm
)
sudocmd ds-remove
$@
sudocmd ds-remove
$@
return
;;
return
;;
...
@@ -1840,6 +1978,9 @@ epm_remove_names()
...
@@ -1840,6 +1978,9 @@ epm_remove_names()
nix
)
nix
)
sudocmd nix-env
--uninstall
$@
sudocmd nix-env
--uninstall
$@
return
;;
return
;;
guix
)
sudocmd guix package
-r
$@
return
;;
chocolatey
)
chocolatey
)
sudocmd chocolatey uninstall
$@
sudocmd chocolatey uninstall
$@
return
;;
return
;;
...
@@ -1861,9 +2002,12 @@ epm_remove_names()
...
@@ -1861,9 +2002,12 @@ epm_remove_names()
epm_remove_nonint
()
epm_remove_nonint
()
{
{
case
$PMTYPE
in
case
$PMTYPE
in
apt-
rpm|apt-
dpkg
)
apt-dpkg
)
sudocmd apt-get
-y
--force-yes
remove
--purge
$@
sudocmd apt-get
-y
--force-yes
remove
--purge
$@
return
;;
return
;;
apt-rpm
)
sudocmd apt-get
-y
--force-yes
remove
$@
return
;;
urpm-rpm
)
urpm-rpm
)
sudocmd urpme
--auto
$@
sudocmd urpme
--auto
$@
return
;;
return
;;
...
@@ -1950,6 +2094,7 @@ epm_removerepo()
...
@@ -1950,6 +2094,7 @@ epm_removerepo()
{
{
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm
)
apt-rpm
)
assure_exists apt-repo
sudocmd apt-repo
rm
$pkg_filenames
sudocmd apt-repo
rm
$pkg_filenames
;;
;;
apt-dpkg
)
apt-dpkg
)
...
@@ -2000,6 +2145,7 @@ epm_repolist()
...
@@ -2000,6 +2145,7 @@ epm_repolist()
{
{
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm
)
apt-rpm
)
assure_exists apt-repo
docmd apt-repo list
docmd apt-repo list
;;
;;
deepsolver-rpm
)
deepsolver-rpm
)
...
@@ -2022,6 +2168,7 @@ case $PMTYPE in
...
@@ -2022,6 +2168,7 @@ case $PMTYPE in
docmd zypper sl
-d
docmd zypper sl
-d
;;
;;
emerge
)
emerge
)
docmd eselect profile list
docmd layman
-L
docmd layman
-L
;;
;;
pacman
)
pacman
)
...
@@ -2039,31 +2186,44 @@ esac
...
@@ -2039,31 +2186,44 @@ esac
# File bin/epm-requires:
# File bin/epm-requires:
epm_requires
()
epm_requires_files
()
{
{
local
CMD
[
-n
"
$pkg_files
"
]
||
return
[
-n
"
$pkg_filenames
"
]
||
fatal
"Run query without names"
case
$PMTYPE
in
case
$(
get_package_type
$pkg_files
)
in
apt-rpm|urpm-rpm|zypper-rpm|yum-
rpm
)
rpm
)
CMD
=
"rpm -q --requires -p"
docmd
"rpm -q --requires -p"
;;
;;
apt-dpkg
)
deb
)
# FIXME: need package base
a
=
docmd dpkg
-I
$pkg_files
|
grep
"^ *Depends:"
|
sed
"s|^ *Depends:||g"
showcmd dpkg
-s
$pkg_files
a
=
dpkg
-s
$pkg_names
|
grep
"^Depends:"
|
sed
"s|^Depends:||g"
# FIXME: we need execute package name section too
return
;;
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
;;
;;
esac
esac
}
[
-n
"
$pkg_files
"
]
&&
docmd
$CMD
$pkg_files
epm_requires_names
()
{
local
CMD
[
-n
"
$pkg_names
"
]
||
return
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm|urpm-rpm|zypper-rpm
)
apt-rpm
)
# FIXME: need fix for a few names case
# FIXME: too low level of requires name (libSOME.so)
if
is_installed
$pkg_names
;
then
CMD
=
"rpm -q --requires"
else
#EXTRA_SHOWDOCMD=' | grep "Depends:"'
#docmd apt-cache show $pkg_names | grep "Depends:"
#return
CMD
=
"apt-cache depends"
fi
;;
urpm-rpm|zypper-rpm
)
# FIXME: use hi level commands
# FIXME: use hi level commands
CMD
=
"rpm -q --requires"
CMD
=
"rpm -q --requires"
;;
;;
...
@@ -2074,7 +2234,18 @@ case $PMTYPE in
...
@@ -2074,7 +2234,18 @@ case $PMTYPE in
CMD
=
"pactree"
CMD
=
"pactree"
;;
;;
apt-dpkg
)
apt-dpkg
)
# FIXME: need fix for a few names case
if
is_installed
$pkg_names
;
then
showcmd dpkg
-s
$pkg_names
a
=
dpkg
-s
$pkg_names
|
grep
"^Depends:"
|
sed
"s|^Depends:||g"
return
else
CMD
=
"apt-cache depends"
CMD
=
"apt-cache depends"
fi
;;
emerge
)
assure_exists equery
CMD
=
"equery depgraph"
;;
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
...
@@ -2082,10 +2253,17 @@ case $PMTYPE in
...
@@ -2082,10 +2253,17 @@ case $PMTYPE in
esac
esac
[
-n
"
$pkg_names
"
]
&&
docmd
$CMD
$pkg_names
docmd
$CMD
$pkg_names
}
}
epm_requires
()
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"Run query without names"
epm_requires_files
epm_requires_names
}
# File bin/epm-search:
# File bin/epm-search:
__epm_search_output
()
__epm_search_output
()
...
@@ -2141,6 +2319,9 @@ case $PMTYPE in
...
@@ -2141,6 +2319,9 @@ case $PMTYPE in
homebrew
)
homebrew
)
CMD
=
"brew search"
CMD
=
"brew search"
;;
;;
guix
)
CMD
=
"guix package -A"
;;
*
)
*
)
fatal
"Have no suitable search command for
$PMTYPE
"
fatal
"Have no suitable search command for
$PMTYPE
"
;;
;;
...
@@ -2169,6 +2350,7 @@ __epm_search_make_grep()
...
@@ -2169,6 +2350,7 @@ __epm_search_make_grep()
# FIXME: The World has not idea how to do grep both string
# FIXME: The World has not idea how to do grep both string
# http://stackoverflow.com/questions/10110051/grep-with-two-strings-logical-and-in-regex?rq=1
# http://stackoverflow.com/questions/10110051/grep-with-two-strings-logical-and-in-regex?rq=1
for
i
in
$list
;
do
for
i
in
$list
;
do
# FIXME -n on MacOS?
echo
-n
" | egrep -i --color --
\"
$i
\"
"
echo
-n
" | egrep -i --color --
\"
$i
\"
"
done
done
}
}
...
@@ -2216,6 +2398,7 @@ case $PMTYPE in
...
@@ -2216,6 +2398,7 @@ case $PMTYPE in
local_content_search
$pkg_filenames
local_content_search
$pkg_filenames
return
;;
return
;;
apt-dpkg
)
apt-dpkg
)
assure_exists apt-file
sudocmd apt-file update
sudocmd apt-file update
docmd apt-file search
$pkg_filenames
docmd apt-file search
$pkg_filenames
return
;;
return
;;
...
@@ -2476,7 +2659,9 @@ epm_upgrade()
...
@@ -2476,7 +2659,9 @@ epm_upgrade()
CMD
=
"chocolatey update all"
CMD
=
"chocolatey update all"
;;
;;
homebrew
)
homebrew
)
CMD
=
"brew upgrade"
#CMD="brew upgrade"
sudocmd
"brew upgrade
`
brew outdated
`
"
return
;;
;;
ipkg
)
ipkg
)
CMD
=
"ipkg upgrade"
CMD
=
"ipkg upgrade"
...
@@ -2484,6 +2669,9 @@ epm_upgrade()
...
@@ -2484,6 +2669,9 @@ epm_upgrade()
slackpkg
)
slackpkg
)
CMD
=
"/usr/sbin/slackpkg upgrade-all"
CMD
=
"/usr/sbin/slackpkg upgrade-all"
;;
;;
guix
)
CMD
=
"guix package -u"
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
;;
;;
...
@@ -2526,6 +2714,7 @@ case $PMTYPE in
...
@@ -2526,6 +2714,7 @@ case $PMTYPE in
CMD
=
"repoquery --whatrequires"
CMD
=
"repoquery --whatrequires"
;;
;;
emerge
)
emerge
)
assure_exists equery
CMD
=
"equery depends -a"
CMD
=
"equery depends -a"
;;
;;
*
)
*
)
...
@@ -2807,6 +2996,16 @@ elif [ `uname` = "SunOS" ] ; then
...
@@ -2807,6 +2996,16 @@ elif [ `uname` = "SunOS" ] ; then
DISTRIB_ID
=
"SunOS"
DISTRIB_ID
=
"SunOS"
DISTRIB_RELEASE
=
$(
uname
-r
)
DISTRIB_RELEASE
=
$(
uname
-r
)
# fixme: can we detect by some file?
elif
[
`
uname
`
=
"Darwin"
]
;
then
DISTRIB_ID
=
"MacOS"
DISTRIB_RELEASE
=
$(
uname
-r
)
# fixme: move to up
elif
[
`
uname
`
=
"Linux"
]
&&
which guix 2>/dev/null
>
/dev/null
;
then
DISTRIB_ID
=
"GNU/Linux/Guix"
DISTRIB_RELEASE
=
$(
uname
-r
)
# try use standart LSB info by default
# try use standart LSB info by default
elif
distro lsb-release
&&
[
-n
"
$DISTRIB_RELEASE
"
]
;
then
elif
distro lsb-release
&&
[
-n
"
$DISTRIB_RELEASE
"
]
;
then
# use LSB
# use LSB
...
@@ -2885,7 +3084,7 @@ $(get_help HELPOPT)
...
@@ -2885,7 +3084,7 @@ $(get_help HELPOPT)
print_version
()
print_version
()
{
{
echo
"EPM package manager version 1.4.
1
"
echo
"EPM package manager version 1.4.
2
"
echo
"Running on
$(
$DISTRVENDOR
)
('
$PMTYPE
' package manager uses '
$PKGFORMAT
' package format)"
echo
"Running on
$(
$DISTRVENDOR
)
('
$PMTYPE
' package manager uses '
$PKGFORMAT
' package format)"
echo
"Copyright (c) Etersoft 2012-2013"
echo
"Copyright (c) Etersoft 2012-2013"
echo
"This program may be freely redistributed under the terms of the GNU AGPLv3."
echo
"This program may be freely redistributed under the terms of the GNU AGPLv3."
...
...
packed/serv.sh
View file @
fffa7293
...
@@ -220,6 +220,40 @@ set_sudo()
...
@@ -220,6 +220,40 @@ set_sudo()
SUDO
=
"fatal 'Can't find sudo. Please install sudo or run epm under root.'"
SUDO
=
"fatal 'Can't find sudo. Please install sudo or run epm under root.'"
}
}
assure_exists
()
{
PATH
=
$PATH
:/sbin:/usr/sbin which
$1
2>/dev/null
>
/dev/null
&&
return
echo
"Install appropriate package for
$1
command..."
case
$1
in
equery|revdep-rebuild
)
epm
install
gentoolkit
;;
apt-repo
)
epm
install
apt-repo
;;
apt-file
)
epm
install
apt-file
;;
update-kernel|remove-old-kernels
)
epm
install
update-kernel
;;
*
)
fatal
"Internal error: Unknown binary
$1
to check if exists"
;;
esac
}
get_package_type
()
{
local
i
for
i
in
deb rpm
;
do
[
"
${
1
/.
$i
/
}
"
!=
"
$1
"
]
&&
echo
$i
&&
return
done
echo
"
$1
"
return
0
}
get_help
()
get_help
()
{
{
grep
-v
--
"^#"
$0
|
grep
--
"#
$1
"
|
while
read
n
;
do
grep
-v
--
"^#"
$0
|
grep
--
"#
$1
"
|
while
read
n
;
do
...
@@ -289,6 +323,9 @@ case $DISTRNAME in
...
@@ -289,6 +323,9 @@ case $DISTRNAME in
OpenWRT
)
OpenWRT
)
CMD
=
"ipkg"
CMD
=
"ipkg"
;;
;;
GNU/Linux/Guix
)
CMD
=
"guix"
;;
*
)
*
)
fatal
"Have no suitable DISTRNAME
$DISTRNAME
"
fatal
"Have no suitable DISTRNAME
$DISTRNAME
"
;;
;;
...
@@ -836,6 +873,16 @@ elif [ `uname` = "SunOS" ] ; then
...
@@ -836,6 +873,16 @@ elif [ `uname` = "SunOS" ] ; then
DISTRIB_ID
=
"SunOS"
DISTRIB_ID
=
"SunOS"
DISTRIB_RELEASE
=
$(
uname
-r
)
DISTRIB_RELEASE
=
$(
uname
-r
)
# fixme: can we detect by some file?
elif
[
`
uname
`
=
"Darwin"
]
;
then
DISTRIB_ID
=
"MacOS"
DISTRIB_RELEASE
=
$(
uname
-r
)
# fixme: move to up
elif
[
`
uname
`
=
"Linux"
]
&&
which guix 2>/dev/null
>
/dev/null
;
then
DISTRIB_ID
=
"GNU/Linux/Guix"
DISTRIB_RELEASE
=
$(
uname
-r
)
# try use standart LSB info by default
# try use standart LSB info by default
elif
distro lsb-release
&&
[
-n
"
$DISTRIB_RELEASE
"
]
;
then
elif
distro lsb-release
&&
[
-n
"
$DISTRIB_RELEASE
"
]
;
then
# use LSB
# use LSB
...
@@ -981,7 +1028,7 @@ $(get_help HELPOPT)
...
@@ -981,7 +1028,7 @@ $(get_help HELPOPT)
print_version
()
print_version
()
{
{
echo
"Service manager version 1.4.
1
"
echo
"Service manager version 1.4.
2
"
echo
"Running on
$(
$DISTRVENDOR
)
"
echo
"Running on
$(
$DISTRVENDOR
)
"
echo
"Copyright (c) Etersoft 2012, 2013"
echo
"Copyright (c) Etersoft 2012, 2013"
echo
"This program may be freely redistributed under the terms of the GNU AGPLv3."
echo
"This program may be freely redistributed under the terms of the GNU AGPLv3."
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment