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
Nurlan
eepm
Commits
9f0e4dc4
Commit
9f0e4dc4
authored
Jun 03, 2014
by
Vitaly Lipatov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
commit packed version
parent
34415aa5
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
350 additions
and
139 deletions
+350
-139
epm.sh
packed/epm.sh
+298
-108
serv.sh
packed/serv.sh
+52
-31
No files found.
packed/epm.sh
View file @
9f0e4dc4
...
@@ -110,17 +110,12 @@ echon()
...
@@ -110,17 +110,12 @@ echon()
set_target_pkg_env
()
set_target_pkg_env
()
{
{
[
-n
"
$DISTRNAME
"
]
||
fatal
"
Run set_target_pkg_env without DISTRNAME
"
[
-n
"
$DISTRNAME
"
]
||
fatal
"
Missing DISTRNAME in set_target_pkg_env.
"
PKGFORMAT
=
$(
$DISTRVENDOR
-p
"
$DISTRNAME
"
)
PKGFORMAT
=
$(
$DISTRVENDOR
-p
"
$DISTRNAME
"
)
PKGVENDOR
=
$(
$DISTRVENDOR
-s
"
$DISTRNAME
"
)
PKGVENDOR
=
$(
$DISTRVENDOR
-s
"
$DISTRNAME
"
)
RPMVENDOR
=
$(
$DISTRVENDOR
-n
"
$DISTRNAME
"
)
RPMVENDOR
=
$(
$DISTRVENDOR
-n
"
$DISTRNAME
"
)
}
}
realpath
()
{
readlink
-f
"
$@
"
}
showcmd
()
showcmd
()
{
{
if
[
-z
"
$quiet
"
]
;
then
if
[
-z
"
$quiet
"
]
;
then
...
@@ -236,6 +231,19 @@ warning()
...
@@ -236,6 +231,19 @@ warning()
fi
fi
}
}
info
()
{
[
-n
"
$quiet
"
]
&&
return
# print message to stderr if stderr forwarded to (a file)
if
isatty2
;
then
isatty
||
return
0
echo
"
$@
"
else
echo
"
$@
"
>
&2
fi
}
set_sudo
()
set_sudo
()
{
{
SUDO
=
""
SUDO
=
""
...
@@ -260,33 +268,30 @@ set_eatmydata()
...
@@ -260,33 +268,30 @@ set_eatmydata()
# use if possible
# use if possible
which eatmydata
>
/dev/null 2>/dev/null
||
return
which eatmydata
>
/dev/null 2>/dev/null
||
return
SUDO
=
"
$SUDO
eatmydata"
SUDO
=
"
$SUDO
eatmydata"
i
satty
&&
echo
"Uwaga! eatmydata is installed, we will use it for disable all sync operations."
>
&2
i
nfo
"Uwaga! eatmydata is installed, we will use it for disable all sync operations."
return
0
return
0
}
}
assure_exists
()
__get_package_for_command
()
{
{
PATH
=
$PATH
:/sbin:/usr/sbin which
$1
2>/dev/null
>
/dev/null
&&
return
case
"
$1
"
in
echo
"Install appropriate package for
$1
command..."
case
$1
in
equery|revdep-rebuild
)
equery|revdep-rebuild
)
epm
install
gentoolkit
echo
'gentoolkit'
;;
apt-repo
)
epm
install
apt-repo
;;
apt-file
)
epm
install
apt-file
;;
;;
update-kernel|remove-old-kernels
)
update-kernel|remove-old-kernels
)
epm
install
update-kernel
echo
'update-kernel'
;;
*
)
fatal
"Internal error: Unknown binary
$1
to check if exists"
;;
;;
esac
esac
}
}
assure_exists
()
{
load_helper epm-assure
local
package
=
"
$2
"
[
-n
"
$package
"
]
||
package
=
"
$(
__get_package_for_command
"
$1
"
)
"
__epm_assure
"
$1
"
$package
}
get_package_type
()
get_package_type
()
{
{
local
i
local
i
...
@@ -299,6 +304,14 @@ get_package_type()
...
@@ -299,6 +304,14 @@ get_package_type()
echo
"rpm"
echo
"rpm"
return
return
;;
;;
*
.txz
)
echo
"txz"
return
;;
*
.tbz
)
echo
"tbz"
return
;;
*
)
*
)
#fatal "Don't know type of $1"
#fatal "Don't know type of $1"
# return package name for info
# return package name for info
...
@@ -351,6 +364,7 @@ case $DISTRNAME in
...
@@ -351,6 +364,7 @@ case $DISTRNAME in
;;
;;
FreeBSD|NetBSD|OpenBSD|Solaris
)
FreeBSD|NetBSD|OpenBSD|Solaris
)
CMD
=
"pkgsrc"
CMD
=
"pkgsrc"
which pkg 2>/dev/null
>
/dev/null
&&
CMD
=
pkgng
;;
;;
Gentoo
)
Gentoo
)
CMD
=
"emerge"
CMD
=
"emerge"
...
@@ -404,10 +418,10 @@ case $PMTYPE in
...
@@ -404,10 +418,10 @@ case $PMTYPE in
sudocmd apt-repo add
$pkg_filenames
sudocmd apt-repo add
$pkg_filenames
;;
;;
apt-dpkg|aptitude-dpkg
)
apt-dpkg|aptitude-dpkg
)
ech
o
"You need manually add repo to /etc/apt/sources.list"
inf
o
"You need manually add repo to /etc/apt/sources.list"
;;
;;
yum-rpm
)
yum-rpm
)
ech
o
"You need manually add repo to /etc/yum.repos.d/"
inf
o
"You need manually add repo to /etc/yum.repos.d/"
;;
;;
urpm-rpm
)
urpm-rpm
)
sudocmd urpmi.addmedia
$pkg_filenames
sudocmd urpmi.addmedia
$pkg_filenames
...
@@ -419,7 +433,7 @@ case $PMTYPE in
...
@@ -419,7 +433,7 @@ case $PMTYPE in
sudocmd layman
-a
$pkg_filenames
sudocmd layman
-a
$pkg_filenames
;;
;;
pacman
)
pacman
)
ech
o
"You need manually add repo to /etc/pacman.conf"
inf
o
"You need manually add repo to /etc/pacman.conf"
# Only for alone packages:
# Only for alone packages:
#sudocmd repo-add $pkg_filenames
#sudocmd repo-add $pkg_filenames
;;
;;
...
@@ -427,7 +441,7 @@ case $PMTYPE in
...
@@ -427,7 +441,7 @@ case $PMTYPE in
sudocmd npackdcl add-repo
--url
=
$pkg_filenames
sudocmd npackdcl add-repo
--url
=
$pkg_filenames
;;
;;
slackpkg
)
slackpkg
)
ech
o
"You need manually add repo to /etc/slackpkg/mirrors"
inf
o
"You need manually add repo to /etc/slackpkg/mirrors"
;;
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
...
@@ -453,14 +467,14 @@ __epm_assure()
...
@@ -453,14 +467,14 @@ __epm_assure()
if
__check_command_in_path
"
$1
"
>
/dev/null
;
then
if
__check_command_in_path
"
$1
"
>
/dev/null
;
then
if
[
-n
"
$verbose
"
]
;
then
if
[
-n
"
$verbose
"
]
;
then
local
compath
=
"
$(
__check_command_in_path
"
$1
"
)
"
local
compath
=
"
$(
__check_command_in_path
"
$1
"
)
"
ech
o
"Command
$1
is exists:
$compath
"
inf
o
"Command
$1
is exists:
$compath
"
epm qf
"
$compath
"
epm qf
"
$compath
"
fi
fi
return
return
fi
fi
# TODO: use package name normalization
# TODO: use package name normalization
echo
"Install
appropriate package for
$1
command..."
info
"Installing
appropriate package for
$1
command..."
local
PACKAGE
=
"
$2
"
local
PACKAGE
=
"
$2
"
[
-n
"
$PACKAGE
"
]
||
PACKAGE
=
"
$1
"
[
-n
"
$PACKAGE
"
]
||
PACKAGE
=
"
$1
"
...
@@ -475,12 +489,27 @@ __epm_assure()
...
@@ -475,12 +489,27 @@ __epm_assure()
epm_assure
()
epm_assure
()
{
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Run assure without params
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Assure: Missing params. Check
$0
--help for info.
"
# use helper func for extract separate params
# use helper func for extract separate params
__epm_assure
$pkg_filenames
__epm_assure
$pkg_filenames
}
}
# File bin/epm-audit:
epm_audit
()
{
case
$PMTYPE
in
pkgng
)
sudocmd pkg audit
-F
;;
*
)
fatal
"Have no suitable command for
$PMTYPE
"
;;
esac
}
# File bin/epm-autoremove:
# File bin/epm-autoremove:
__epm_autoremove_altrpm
()
__epm_autoremove_altrpm
()
...
@@ -488,8 +517,8 @@ __epm_autoremove_altrpm()
...
@@ -488,8 +517,8 @@ __epm_autoremove_altrpm()
local
pkg
local
pkg
local
flag
=
local
flag
=
load_helper epm-packages
load_helper epm-packages
ech
o
inf
o
echo
"Just remove
all non -devel libs packages not need by anything"
info
"Just removing
all non -devel libs packages not need by anything"
for
pkg
in
$(
short
=
1
pkg_filenames
=
epm_packages |
grep
--
"^lib"
|
grep
-v
--
"-devel$"
|
grep
-v
--
^libreoffice
)
;
do
for
pkg
in
$(
short
=
1
pkg_filenames
=
epm_packages |
grep
--
"^lib"
|
grep
-v
--
"-devel$"
|
grep
-v
--
^libreoffice
)
;
do
sudocmd rpm
-v
-e
$pkg
&&
flag
=
1
sudocmd rpm
-v
-e
$pkg
&&
flag
=
1
done
done
...
@@ -545,6 +574,9 @@ case $PMTYPE in
...
@@ -545,6 +574,9 @@ case $PMTYPE in
guix
)
guix
)
sudocmd guix gc
sudocmd guix gc
;;
;;
pkgng
)
sudocmd pkg autoremove
;;
#zypper-rpm)
#zypper-rpm)
# sudocmd zypper clean
# sudocmd zypper clean
# ;;
# ;;
...
@@ -640,7 +672,7 @@ __epm_changelog_unlocal_names()
...
@@ -640,7 +672,7 @@ __epm_changelog_unlocal_names()
epm_changelog
()
epm_changelog
()
{
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Run changelog without params
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Changelog: Missing package(s) name
"
__epm_changelog_files
$pkg_files
__epm_changelog_files
$pkg_files
...
@@ -662,7 +694,7 @@ case $PMTYPE in
...
@@ -662,7 +694,7 @@ case $PMTYPE in
apt-rpm|apt-dpkg
)
apt-rpm|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
install
||
exit
sudocmd apt-get
-f
install
;;
;;
apt-dpkg
)
apt-dpkg
)
#sudocmd apt-get update || exit
#sudocmd apt-get update || exit
...
@@ -695,6 +727,9 @@ case $PMTYPE in
...
@@ -695,6 +727,9 @@ case $PMTYPE in
conary
)
conary
)
sudocmd conary verify
sudocmd conary verify
;;
;;
pkgng
)
sudocmd pkg check
-d
-a
;;
homebrew
)
homebrew
)
sudocmd brew doctor
sudocmd brew doctor
;;
;;
...
@@ -727,11 +762,8 @@ check_pkg_integrity()
...
@@ -727,11 +762,8 @@ check_pkg_integrity()
true
true
;;
;;
*
)
*
)
assure_exists erc
docmd erc
test
"
$PKG
"
&&
return
docmd erc
test
"
$PKG
"
&&
return
which erc
>
/dev/null 2>/dev/null
&&
fatal
"Check failed."
fatal
"Install erc package for file package."
# TODO
epm
install
erc
;;
;;
esac
esac
}
}
...
@@ -760,12 +792,12 @@ esac
...
@@ -760,12 +792,12 @@ esac
epm_checkpkg
()
epm_checkpkg
()
{
{
if
[
-n
"
$pkg_names
"
]
;
then
if
[
-n
"
$pkg_names
"
]
;
then
echo
"Suggest
$pkg_names
are names
of installed packages"
info
"Suggest
$pkg_names
are name(s)
of installed packages"
__epm_check_installed_pkg
$pkg_names
__epm_check_installed_pkg
$pkg_names
return
return
fi
fi
[
-n
"
$pkg_files
"
]
||
fatal
"
Run without names
"
[
-n
"
$pkg_files
"
]
||
fatal
"
Checkpkg: missing file or package name(s)
"
local
pkg
local
pkg
for
pkg
in
$pkg_files
;
do
for
pkg
in
$pkg_files
;
do
check_pkg_integrity
$pkg
||
fatal
"Broken package
$pkg
"
check_pkg_integrity
$pkg
||
fatal
"Broken package
$pkg
"
...
@@ -778,7 +810,10 @@ __is_repo_info_download()
...
@@ -778,7 +810,10 @@ __is_repo_info_download()
{
{
case
$PMTYPE
in
case
$PMTYPE
in
apt-
*
)
apt-
*
)
if
[
-r
/var/cache/apt
]
;
then
# FIXME: only if root permissions
test
-r
/var/cache/apt/pkgcache.bin
||
return
test
-r
/var/cache/apt/pkgcache.bin
||
return
fi
;;
;;
*
)
*
)
;;
;;
...
@@ -830,11 +865,14 @@ case $PMTYPE in
...
@@ -830,11 +865,14 @@ case $PMTYPE in
;;
;;
slackpkg
)
slackpkg
)
;;
;;
pkgng
)
sudo
pkg clean
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
;;
;;
esac
esac
ech
o
"It is recommend to run 'epm autoremove' also"
inf
o
"It is recommend to run 'epm autoremove' also"
}
}
...
@@ -919,32 +957,80 @@ docmd $CMD $pkg_names
...
@@ -919,32 +957,80 @@ docmd $CMD $pkg_names
epm_conflicts
()
epm_conflicts
()
{
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Run query without names
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Conflicts: Missing package(s) name
"
epm_conflicts_files
epm_conflicts_files
epm_conflicts_names
epm_conflicts_names
}
}
# File bin/epm-downgrade:
__epm_add_apt_downgrade_preferences
()
{
[
-r
/etc/apt/preferences
]
&&
fatal
"/etc/apt/preferences already exists"
cat
<<
EOF
|
$SUDO
tee /etc/apt/preferences
Package: *
Pin: release c=
$1
Pin-Priority: 1001
EOF
}
__epm_remove_apt_downgrade_preferences
()
{
sudocmd
rm
-f
/etc/apt/preferences
}
epm_downgrade
()
{
local
CMD
# it is useful for first time running
update_repo_if_needed
info
"Running command for downgrade packages"
case
$PMTYPE
in
apt-rpm
)
__epm_add_apt_downgrade_preferences classic
||
return
sudocmd apt-get dist-upgrade
__epm_remove_apt_downgrade_preferences
;;
apt-dpkg
)
__epm_add_apt_downgrade_preferences testing
||
return
sudocmd apt-get dist-upgrade
__epm_remove_apt_downgrade_preferences
;;
yum-rpm
)
# can do update repobase automagically
sudocmd yum downgrade
$pkg_filename
;;
urpm-rpm
)
assure_exists urpm-reposync urpm-tools
sudocmd urpm-reposync
-v
;;
*
)
fatal
"Have no suitable command for
$PMTYPE
"
;;
esac
}
# File bin/epm-filelist:
# File bin/epm-filelist:
local_content_filelist
()
__alt_
local_content_filelist
()
{
{
local
SYSARCH
load_helper epm-sh-altlinux
SYSARCH
=
$(
uname
-m
)
[
"
$SYSARCH
"
=
"x86_64"
]
||
SYSARCH
=
i586
local
REPODIR
=
/var/ftp/pub/ALTLinux/Sisyphus
local
CI
=
"
$(
get_local_alt_contents_index
)
"
local
CI
=
$REPODIR
/
$SYSARCH
/base/contents_index
local
CINOA
=
$REPODIR
/noarch/base/contents_index
# TODO: safe way to use less
#local OUTCMD="less"
#local OUTCMD="less"
#[ -n "$USETTY" ] || OUTCMD="cat"
#[ -n "$USETTY" ] || OUTCMD="cat"
OUTCMD
=
"cat"
OUTCMD
=
"cat"
test
-r
$CI
&&
test
-r
$CINOA
||
fatal
"Can't locate
$CI
or
$CINOA
"
{
{
[
-n
"
$USETTY
"
]
&&
echo
"Search in
$CI
and
$CINOA
for
$1
..."
[
-n
"
$USETTY
"
]
&&
echo
"Search in
$CI
for
$1
..."
grep
-h
--
".*
$1
$"
$CI
$CINOA
|
sed
-e
"s|
\(
.*
\)\t\(
.*
\)
|
\1
|g"
grep
-h
--
".*
$1
$"
$CI
|
sed
-e
"s|
\(
.*
\)\t\(
.*
\)
|
\1
|g"
}
|
$OUTCMD
}
|
$OUTCMD
}
}
...
@@ -956,7 +1042,7 @@ __epm_filelist_remote()
...
@@ -956,7 +1042,7 @@ __epm_filelist_remote()
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 local_content_filelist
$@
docmd_foreach
__alt_
local_content_filelist
$@
;;
;;
*
)
*
)
fatal
"Query filelist for non installed packages does not realized"
fatal
"Query filelist for non installed packages does not realized"
...
@@ -1022,6 +1108,9 @@ __epm_filelist_name()
...
@@ -1022,6 +1108,9 @@ __epm_filelist_name()
assure_exists equery
assure_exists equery
CMD
=
"equery files"
CMD
=
"equery files"
;;
;;
pkgng
)
CMD
=
"pkg info -l"
;;
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
}*
| less
docmd
awk
'BEGIN{desk=1}{if(/^FILE LIST:$/){desk=0} else if (desk==0) {print}}'
/var/log/packages/
${
pkg_filenames
}*
| less
...
@@ -1040,7 +1129,7 @@ __epm_filelist_name()
...
@@ -1040,7 +1129,7 @@ __epm_filelist_name()
epm_filelist
()
epm_filelist
()
{
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Run query without names
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Filelist: missing package(s) name
"
__epm_filelist_file
$pkg_files
||
return
__epm_filelist_file
$pkg_files
||
return
...
@@ -1063,7 +1152,7 @@ __epm_info_rpm_low()
...
@@ -1063,7 +1152,7 @@ __epm_info_rpm_low()
epm_info
()
epm_info
()
{
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Run info without names
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Info: missing package(s) name
"
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm
)
apt-rpm
)
...
@@ -1126,6 +1215,9 @@ case $PMTYPE in
...
@@ -1126,6 +1215,9 @@ case $PMTYPE in
ipkg
)
ipkg
)
docmd ipkg info
$pkg_names
docmd ipkg info
$pkg_names
;;
;;
pkgng
)
docmd pkg info
$pkg_names
;;
homebrew
)
homebrew
)
docmd brew info
$pkg_names
docmd brew info
$pkg_names
;;
;;
...
@@ -1220,6 +1312,9 @@ epm_install_names()
...
@@ -1220,6 +1312,9 @@ epm_install_names()
pkgsrc
)
pkgsrc
)
sudocmd pkg_add
-r
$@
sudocmd pkg_add
-r
$@
return
;;
return
;;
pkgng
)
sudocmd pkg
install
$@
return
;;
emerge
)
emerge
)
sudocmd emerge
-uD
$@
sudocmd emerge
-uD
$@
return
;;
return
;;
...
@@ -1266,7 +1361,7 @@ epm_install_names()
...
@@ -1266,7 +1361,7 @@ epm_install_names()
__separate_sudocmd
"guix package -i"
"guix package -i"
$@
__separate_sudocmd
"guix package -i"
"guix package -i"
$@
return
;;
return
;;
android
)
android
)
warning
"We
have no idea how to use package repository, ever if it is F-Droid."
fatal
"We still
have no idea how to use package repository, ever if it is F-Droid."
return
;;
return
;;
*
)
*
)
fatal
"Have no suitable install command for
$PMTYPE
"
fatal
"Have no suitable install command for
$PMTYPE
"
...
@@ -1298,6 +1393,9 @@ epm_ni_install_names()
...
@@ -1298,6 +1393,9 @@ epm_ni_install_names()
pkgsrc
)
pkgsrc
)
sudocmd pkg_add
-r
$@
sudocmd pkg_add
-r
$@
return
;;
return
;;
pkgng
)
sudocmd pkg
install
-y
$@
return
;;
emerge
)
emerge
)
sudocmd emerge
-uD
$@
sudocmd emerge
-uD
$@
return
;;
return
;;
...
@@ -1412,6 +1510,17 @@ epm_install_files()
...
@@ -1412,6 +1510,17 @@ epm_install_files()
pkgsrc
)
pkgsrc
)
sudocmd pkg_add
$@
sudocmd pkg_add
$@
return
;;
return
;;
pkgng
)
local
PKGTYPE
=
"
$(
get_package_type
$@
)
"
case
"
$PKGTYPE
"
in
tbz
)
sudocmd pkg_add
$@
;;
*
)
sudocmd pkg add
$@
;;
esac
return
;;
android
)
android
)
sudocmd pm
install
$@
sudocmd pm
install
$@
return
;;
return
;;
...
@@ -1449,6 +1558,9 @@ epm_print_install_command()
...
@@ -1449,6 +1558,9 @@ epm_print_install_command()
pkgsrc
)
pkgsrc
)
echo
"pkg_add
$@
"
echo
"pkg_add
$@
"
;;
;;
pkgng
)
echo
"pkg add
$@
"
;;
emerge
)
emerge
)
# need be placed in /usr/portage/packages/somewhere
# need be placed in /usr/portage/packages/somewhere
echo
"emerge --usepkg
$@
"
echo
"emerge --usepkg
$@
"
...
@@ -1482,12 +1594,12 @@ epm_install()
...
@@ -1482,12 +1594,12 @@ epm_install()
return
return
fi
fi
[
-
n
"
$pkg_files$pkg_names
"
]
||
{
echo
"Skip empty install list"
;
return
22
;
}
[
-
z
"
$pkg_files$pkg_names
"
]
&&
info
"Skip empty install list"
&&
return
22
local
names
=
"
$(
echo
$pkg_names
| filter_out_installed_packages
)
"
local
names
=
"
$(
echo
$pkg_names
| filter_out_installed_packages
)
"
local
files
=
"
$(
echo
$pkg_files
| filter_out_installed_packages
)
"
local
files
=
"
$(
echo
$pkg_files
| filter_out_installed_packages
)
"
[
-z
"
$files$names
"
]
&&
ech
o
"Skip empty install list"
&&
return
22
[
-z
"
$files$names
"
]
&&
inf
o
"Skip empty install list"
&&
return
22
# it is useful for first time running
# it is useful for first time running
update_repo_if_needed
update_repo_if_needed
...
@@ -1505,7 +1617,7 @@ epm_Install()
...
@@ -1505,7 +1617,7 @@ epm_Install()
local
names
=
"
$(
echo
$pkg_names
| filter_out_installed_packages
)
"
local
names
=
"
$(
echo
$pkg_names
| filter_out_installed_packages
)
"
local
files
=
"
$(
echo
$pkg_files
| filter_out_installed_packages
)
"
local
files
=
"
$(
echo
$pkg_files
| filter_out_installed_packages
)
"
[
-z
"
$files$names
"
]
&&
echo
"Skip empty install list
"
&&
return
22
[
-z
"
$files$names
"
]
&&
info
"Install: Skip empty install list.
"
&&
return
22
# do update only if really need install something
# do update only if really need install something
case
$PMTYPE
in
case
$PMTYPE
in
...
@@ -1556,6 +1668,7 @@ __emerge_install_ebuild()
...
@@ -1556,6 +1668,7 @@ __emerge_install_ebuild()
# copy tarballs
# copy tarballs
local
DDIR
=
/usr/portage/distfiles
local
DDIR
=
/usr/portage/distfiles
# 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
...
@@ -1599,7 +1712,7 @@ epm_install_emerge()
...
@@ -1599,7 +1712,7 @@ epm_install_emerge()
epm_kernel_update
()
epm_kernel_update
()
{
{
echo
"Start
update system kernel to the latest version"
info
"Starting
update system kernel to the latest version"
case
$DISTRNAME
in
case
$DISTRNAME
in
ALTLinux
)
ALTLinux
)
...
@@ -1658,6 +1771,17 @@ case $PMTYPE in
...
@@ -1658,6 +1771,17 @@ case $PMTYPE in
;;
;;
pkgsrc
)
pkgsrc
)
CMD
=
"pkg_info"
CMD
=
"pkg_info"
docmd
$CMD
|
sed
-e
"s| .*||g"
return
;;
pkgng
)
CMD
=
"pkg info -E
$pkg_filenames
"
if
[
-n
"
$short
"
]
;
then
docmd
$CMD
|
sed
-e
"s| .*||g"
|
sed
-e
"s|-[0-9].*||g"
else
docmd
$CMD
|
sed
-e
"s| .*||g"
fi
return
;;
;;
pacman
)
pacman
)
CMD
=
"pacman -Qs
$pkg_filenames
"
CMD
=
"pacman -Qs
$pkg_filenames
"
...
@@ -1726,7 +1850,9 @@ epm_provides_files()
...
@@ -1726,7 +1850,9 @@ epm_provides_files()
{
{
[
-n
"
$pkg_files
"
]
||
return
[
-n
"
$pkg_files
"
]
||
return
case
$(
get_package_type
$pkg_files
)
in
local
PKGTYPE
=
"
$(
get_package_type
$pkg_files
)
"
case
$PKGTYPE
in
rpm
)
rpm
)
docmd rpm
-q
--provides
-p
$pkg_files
docmd rpm
-q
--provides
-p
$pkg_files
;;
;;
...
@@ -1769,10 +1895,13 @@ case $PMTYPE in
...
@@ -1769,10 +1895,13 @@ case $PMTYPE in
assure_exists equery
assure_exists equery
CMD
=
"equery files"
CMD
=
"equery files"
;;
;;
pkgng
)
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
ech
o
"Please inform the author how to get provides from dpkg"
inf
o
"Please inform the author how to get provides from dpkg"
fi
fi
# CMD="rpm -q --provides"
# CMD="rpm -q --provides"
#else
#else
...
@@ -1792,7 +1921,8 @@ docmd $CMD $pkg_names
...
@@ -1792,7 +1921,8 @@ docmd $CMD $pkg_names
epm_provides
()
epm_provides
()
{
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"Run query without names"
[
-n
"
$pkg_filenames
"
]
||
fatal
"Provides: missing package(s) name"
epm_provides_files
epm_provides_files
epm_provides_names
epm_provides_names
}
}
...
@@ -1923,8 +2053,13 @@ __epm_query_name()
...
@@ -1923,8 +2053,13 @@ __epm_query_name()
warning
"fix query"
warning
"fix query"
return
1
return
1
;;
;;
# TODO: need to print name if exists
#pkgng)
# CMD="pkg info -e"
# ;;
# Note: slackpkg info pkgname
# Note: slackpkg info pkgname
*
)
*
)
# default slow workaround
_query_via_packages_list
$@
_query_via_packages_list
$@
return
return
;;
;;
...
@@ -1951,7 +2086,7 @@ separate_installed()
...
@@ -1951,7 +2086,7 @@ separate_installed()
epm_query
()
epm_query
()
{
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Run query without names
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Query: missing package(s) name
"
__epm_query_file
$pkg_files
||
return
__epm_query_file
$pkg_files
||
return
...
@@ -1973,7 +2108,7 @@ __do_query_real_file()
...
@@ -1973,7 +2108,7 @@ __do_query_real_file()
else
else
TOFILE
=
`
which
$1
2>/dev/null
||
echo
$1
`
TOFILE
=
`
which
$1
2>/dev/null
||
echo
$1
`
if
[
"
$TOFILE
"
!=
"
$1
"
]
;
then
if
[
"
$TOFILE
"
!=
"
$1
"
]
;
then
ech
o
"Note:
$1
is placed as
$TOFILE
"
inf
o
"Note:
$1
is placed as
$TOFILE
"
fi
fi
fi
fi
...
@@ -1981,10 +2116,11 @@ __do_query_real_file()
...
@@ -1981,10 +2116,11 @@ __do_query_real_file()
if
[
-L
"
$TOFILE
"
]
;
then
if
[
-L
"
$TOFILE
"
]
;
then
__do_query
$TOFILE
__do_query
$TOFILE
LINKTO
=
`
readlink
"
$TOFILE
"
`
LINKTO
=
`
readlink
"
$TOFILE
"
`
ech
o
"Note:
$TOFILE
is link to
$LINKTO
"
inf
o
"Note:
$TOFILE
is link to
$LINKTO
"
__do_query_real_file
"
$LINKTO
"
__do_query_real_file
"
$LINKTO
"
fi
fi
FULLFILEPATH
=
`
realpath
$TOFILE
`
FULLFILEPATH
=
"
$TOFILE
"
}
}
dpkg_print_name_version
()
dpkg_print_name_version
()
...
@@ -2025,6 +2161,9 @@ __do_query()
...
@@ -2025,6 +2161,9 @@ __do_query()
pacman
)
pacman
)
CMD
=
"pacman -Qo"
CMD
=
"pacman -Qo"
;;
;;
pkgng
)
CMD
=
"pkg which"
;;
conary
)
conary
)
CMD
=
"conary query --path"
CMD
=
"conary query --path"
;;
;;
...
@@ -2081,6 +2220,7 @@ epm_query_file()
...
@@ -2081,6 +2220,7 @@ epm_query_file()
{
{
# in short mode print handle only real names and do short output
# in short mode print handle only real names and do short output
# TODO: move to separate command?
# TODO: move to separate command?
# FIXME: it is possible use query
if
[
-n
"
$short
"
]
;
then
if
[
-n
"
$short
"
]
;
then
[
-n
"
$pkg_files
"
]
||
fatal
"Run query without file names (needed path to files)"
[
-n
"
$pkg_files
"
]
||
fatal
"Run query without file names (needed path to files)"
__do_short_query
$pkg_files
__do_short_query
$pkg_files
...
@@ -2118,7 +2258,8 @@ epm_reinstall_names()
...
@@ -2118,7 +2258,8 @@ epm_reinstall_names()
[
-n
"
$1
"
]
||
return
[
-n
"
$1
"
]
||
return
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm|apt-dpkg
)
apt-rpm|apt-dpkg
)
sudocmd apt-get
--reinstall
install
$@
local
APTOPTIONS
=
"
$(
subst_option non_interactive
-y
)
"
sudocmd apt-get
--reinstall
$APTOPTIONS
install
$@
return
;;
return
;;
aptitude-dpkg
)
aptitude-dpkg
)
sudocmd aptitude reinstall
$@
sudocmd aptitude reinstall
$@
...
@@ -2159,7 +2300,7 @@ epm_reinstall_files()
...
@@ -2159,7 +2300,7 @@ epm_reinstall_files()
epm_reinstall
()
epm_reinstall
()
{
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"R
un install without packages
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"R
einstall: missing package(s) name.
"
epm_reinstall_names
$pkg_names
epm_reinstall_names
$pkg_names
epm_reinstall_files
$pkg_files
epm_reinstall_files
$pkg_files
...
@@ -2170,8 +2311,8 @@ epm_reinstall()
...
@@ -2170,8 +2311,8 @@ epm_reinstall()
epm_release_upgrade
()
epm_release_upgrade
()
{
{
echo
"Start
upgrade whole system to the next release"
info
"Starting
upgrade whole system to the next release"
ech
o
"Check also http://wiki.etersoft.ru/Admin/UpdateLinux"
inf
o
"Check also http://wiki.etersoft.ru/Admin/UpdateLinux"
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm
)
apt-rpm
)
...
@@ -2244,6 +2385,9 @@ epm_remove_low()
...
@@ -2244,6 +2385,9 @@ epm_remove_low()
pkgsrc
)
pkgsrc
)
sudocmd pkg_delete
-r
$@
sudocmd pkg_delete
-r
$@
return
;;
return
;;
pkgng
)
sudocmd pkg delete
-R
$@
return
;;
emerge
)
emerge
)
sudocmd emerge
--unmerge
$@
sudocmd emerge
--unmerge
$@
return
;;
return
;;
...
@@ -2280,6 +2424,9 @@ epm_remove_names()
...
@@ -2280,6 +2424,9 @@ epm_remove_names()
pkgsrc
)
# without dependencies
pkgsrc
)
# without dependencies
sudocmd pkg_delete
$@
sudocmd pkg_delete
$@
return
;;
return
;;
pkgng
)
sudocmd pkg delete
-R
$@
return
;;
emerge
)
emerge
)
#sudocmd emerge --unmerge $@
#sudocmd emerge --unmerge $@
sudocmd emerge
-aC
$@
sudocmd emerge
-aC
$@
...
@@ -2359,6 +2506,9 @@ epm_remove_nonint()
...
@@ -2359,6 +2506,9 @@ epm_remove_nonint()
slackpkg
)
slackpkg
)
sudocmd /usr/sbin/slackpkg
-batch
=
on
-default_answer
=
yes
remove
$@
sudocmd /usr/sbin/slackpkg
-batch
=
on
-default_answer
=
yes
remove
$@
return
;;
return
;;
pkgng
)
sudocmd pkg delete
-y
-R
$@
return
;;
ipkg
)
ipkg
)
sudocmd ipkg
-force-defaults
remove
$@
sudocmd ipkg
-force-defaults
remove
$@
return
;;
return
;;
...
@@ -2378,6 +2528,9 @@ epm_print_remove_command()
...
@@ -2378,6 +2528,9 @@ epm_print_remove_command()
pkgsrc
)
pkgsrc
)
echo
"pkg_delete -r
$@
"
echo
"pkg_delete -r
$@
"
;;
;;
pkgng
)
echo
"pkg delete -R
$@
"
;;
pacman
)
pacman
)
echo
"pacman -R
$@
"
echo
"pacman -R
$@
"
;;
;;
...
@@ -2407,7 +2560,7 @@ epm_remove()
...
@@ -2407,7 +2560,7 @@ epm_remove()
# get full package name(s) from the package file(s)
# get full package name(s) from the package file(s)
[
-n
"
$pkg_files
"
]
&&
pkg_names
=
"
$pkg_names
$(
epm query
$pkg_files
)
"
[
-n
"
$pkg_files
"
]
&&
pkg_names
=
"
$pkg_names
$(
epm query
$pkg_files
)
"
[
-n
"
$pkg_names
"
]
||
fatal
"R
un remove without args
"
[
-n
"
$pkg_names
"
]
||
fatal
"R
emove: missing package(s) name.
"
epm_remove_low
$pkg_names
&&
return
epm_remove_low
$pkg_names
&&
return
# get package name for hi level package management command (with version if supported and if possible)
# get package name for hi level package management command (with version if supported and if possible)
...
@@ -2434,10 +2587,10 @@ case $PMTYPE in
...
@@ -2434,10 +2587,10 @@ case $PMTYPE in
sudocmd apt-repo
rm
$pkg_filenames
sudocmd apt-repo
rm
$pkg_filenames
;;
;;
apt-dpkg|aptitude-dpkg
)
apt-dpkg|aptitude-dpkg
)
ech
o
"You need remove repo from /etc/apt/sources.list"
inf
o
"You need remove repo from /etc/apt/sources.list"
;;
;;
yum-rpm
)
yum-rpm
)
ech
o
"You need remove repo from /etc/yum.repos.d/"
inf
o
"You need remove repo from /etc/yum.repos.d/"
;;
;;
urpm-rpm
)
urpm-rpm
)
sudocmd urpmi.removemedia
$pkg_filenames
sudocmd urpmi.removemedia
$pkg_filenames
...
@@ -2449,13 +2602,13 @@ case $PMTYPE in
...
@@ -2449,13 +2602,13 @@ case $PMTYPE in
sudocmd layman
-d
$pkg_filenames
sudocmd layman
-d
$pkg_filenames
;;
;;
pacman
)
pacman
)
ech
o
"You need remove repo from /etc/pacman.conf"
inf
o
"You need remove repo from /etc/pacman.conf"
;;
;;
npackd
)
npackd
)
sudocmd npackdcl remove-repo
--url
=
$pkg_filenames
sudocmd npackdcl remove-repo
--url
=
$pkg_filenames
;;
;;
slackpkg
)
slackpkg
)
ech
o
"You need remove repo from /etc/slackpkg/mirrors"
inf
o
"You need remove repo from /etc/slackpkg/mirrors"
;;
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
...
@@ -2527,7 +2680,9 @@ epm_requires_files()
...
@@ -2527,7 +2680,9 @@ epm_requires_files()
{
{
[
-n
"
$pkg_files
"
]
||
return
[
-n
"
$pkg_files
"
]
||
return
case
$(
get_package_type
$pkg_files
)
in
local
PKGTYPE
=
"
$(
get_package_type
$pkg_files
)
"
case
"
$PKGTYPE
"
in
rpm
)
rpm
)
docmd rpm
-q
--requires
-p
$pkg_files
docmd rpm
-q
--requires
-p
$pkg_files
;;
;;
...
@@ -2535,7 +2690,7 @@ epm_requires_files()
...
@@ -2535,7 +2690,7 @@ epm_requires_files()
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
$P
M
TYPE
"
fatal
"Have no suitable command for
$P
KG
TYPE
"
;;
;;
esac
esac
}
}
...
@@ -2583,6 +2738,10 @@ case $PMTYPE in
...
@@ -2583,6 +2738,10 @@ case $PMTYPE in
assure_exists equery
assure_exists equery
CMD
=
"equery depgraph"
CMD
=
"equery depgraph"
;;
;;
pkgng
)
#CMD="pkg rquery '%dn-%dv'"
CMD
=
"pkg info -d"
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
;;
;;
...
@@ -2595,7 +2754,7 @@ docmd $CMD $pkg_names
...
@@ -2595,7 +2754,7 @@ docmd $CMD $pkg_names
epm_requires
()
epm_requires
()
{
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"R
un query without names
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"R
equires: missing package(s) name
"
epm_requires_files
epm_requires_files
epm_requires_names
epm_requires_names
}
}
...
@@ -2624,6 +2783,9 @@ case $PMTYPE in
...
@@ -2624,6 +2783,9 @@ case $PMTYPE in
pkgsrc
)
pkgsrc
)
CMD
=
"pkg_info -x --"
CMD
=
"pkg_info -x --"
;;
;;
pkgng
)
CMD
=
"pkg search -i --"
;;
emerge
)
emerge
)
CMD
=
"emerge --search --"
CMD
=
"emerge --search --"
;;
;;
...
@@ -2730,7 +2892,7 @@ __epm_search_make_grep()
...
@@ -2730,7 +2892,7 @@ __epm_search_make_grep()
epm_search
()
epm_search
()
{
{
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Please, use search with some argument
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Search: missing search argument(s)
"
# it is useful for first time running
# it is useful for first time running
update_repo_if_needed
update_repo_if_needed
...
@@ -2744,35 +2906,30 @@ epm_search()
...
@@ -2744,35 +2906,30 @@ epm_search()
# File bin/epm-search_file:
# File bin/epm-search_file:
local_content_search
()
__alt_
local_content_search
()
{
{
lo
cal
SYSARCH
lo
ad_helper epm-sh-altlinux
SYSARCH
=
$(
uname
-m
)
[
"
$SYSARCH
"
=
"x86_64"
]
||
SYSARCH
=
i586
local
CI
=
"
$(
get_local_alt_contents_index
)
"
local
REPODIR
=
/var/ftp/pub/ALTLinux/Sisyphus
local
CI
=
$REPODIR
/
$SYSARCH
/base/contents_index
local
CINOA
=
$REPODIR
/noarch/base/contents_index
#local OUTCMD="less"
#local OUTCMD="less"
#[ -n "$USETTY" ] || OUTCMD="cat"
#[ -n "$USETTY" ] || OUTCMD="cat"
OUTCMD
=
"cat"
OUTCMD
=
"cat"
test
-r
$CI
&&
test
-r
$CINOA
||
fatal
"Can't locate
$CI
or
$CINOA
"
{
{
[
-n
"
$USETTY
"
]
&&
echo
"Search in
$CI
and
$CINOA
for
$1
..."
[
-n
"
$USETTY
"
]
&&
echo
"Search in
$CI
for
$1
..."
grep
-h
--
".*
$1
.*
\t
"
$CI
$CINOA
|
sed
-e
"s|
\(
.*
\)\t\(
.*
\)
|
\2
:
\1
|g"
grep
-h
--
".*
$1
.*
\t
"
$CI
|
sed
-e
"s|
\(
.*
\)\t\(
.*
\)
|
\2
:
\1
|g"
}
|
$OUTCMD
}
|
$OUTCMD
}
}
epm_search_file
()
epm_search_file
()
{
{
local
CMD
local
CMD
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Run search without names
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Search file: missing file name(s)
"
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm
)
apt-rpm
)
local_content_search
$pkg_filenames
__alt_
local_content_search
$pkg_filenames
return
;;
return
;;
apt-dpkg|aptitude-dpkg
)
apt-dpkg|aptitude-dpkg
)
assure_exists apt-file
assure_exists apt-file
...
@@ -2809,6 +2966,23 @@ docmd $CMD $pkg_filenames
...
@@ -2809,6 +2966,23 @@ docmd $CMD $pkg_filenames
}
}
# File bin/epm-sh-altlinux:
get_local_alt_contents_index
()
{
load_helper epm-repolist
epm_repolist |
grep
"rpm.*file:/"
|
sed
-e
"s|^rpm.*file:||g"
|
while
read
URL ARCH other
;
do
test
-d
"
$URL
/
$ARCH
"
||
continue
# fatal "Local mirror is not accessible via $URL/$ARCH"
FILE
=
"
$URL
/
$ARCH
/base/contents_index"
if
[
-r
"
$FILE
"
]
;
then
echo
"
$FILE
"
else
info
"TODO for girar server: There is no
$(
basename
$FILE
)
file in
$(
dirname
$FILE
)
"
fi
done
}
# File bin/epm-simulate:
# File bin/epm-simulate:
...
@@ -2874,10 +3048,9 @@ EOF
...
@@ -2874,10 +3048,9 @@ EOF
;;
;;
zypper-rpm
)
zypper-rpm
)
if
!
__use_zypper_dry_run
>
/dev/null
;
then
if
!
__use_zypper_dry_run
>
/dev/null
;
then
echo
"zypper is too old: does not support --dry-run"
fatal
"zypper is too old: does not support --dry-run"
return
fi
fi
CMD
=
"zypper --non-interactive install"
CMD
=
"zypper --non-interactive install
--dry-run
"
;;
;;
emerge
)
emerge
)
local
res
=
0
local
res
=
0
...
@@ -2908,7 +3081,7 @@ EOF
...
@@ -2908,7 +3081,7 @@ EOF
pkg_filenames
=
"
$pkg
-[0-9]"
epm_search |
grep
-E
"(installed|upgrade)"
&&
continue
pkg_filenames
=
"
$pkg
-[0-9]"
epm_search |
grep
-E
"(installed|upgrade)"
&&
continue
pkg_filenames
=
"
$pkg
"
epm_search |
grep
-E
"(installed|upgrade)"
&&
continue
pkg_filenames
=
"
$pkg
"
epm_search |
grep
-E
"(installed|upgrade)"
&&
continue
res
=
1
res
=
1
echo
"D
oes not found in repository."
info
"Package '
$pkg
' d
oes not found in repository."
done
done
return
$res
;;
return
$res
;;
*
)
*
)
...
@@ -2921,16 +3094,16 @@ EOF
...
@@ -2921,16 +3094,16 @@ EOF
epm_simulate
()
epm_simulate
()
{
{
[
-z
"
$pkg_filenames
"
]
&&
echo
"
Skip empty list"
&&
return
22
[
-z
"
$pkg_filenames
"
]
&&
info
"Simulate:
Skip empty list"
&&
return
22
local
filenames
=
"
$(
echo
$pkg_filenames
| filter_out_installed_packages
)
"
local
filenames
=
"
$(
echo
$pkg_filenames
| filter_out_installed_packages
)
"
[
-z
"
$filenames
"
]
&&
echo
"
All packages are already installed"
&&
return
0
[
-z
"
$filenames
"
]
&&
info
"Simulate:
All packages are already installed"
&&
return
0
_epm_do_simulate
$filenames
_epm_do_simulate
$filenames
local
RES
=
$?
local
RES
=
$?
if
[
-z
"
$quiet
"
]
;
then
if
[
-z
"
$quiet
"
]
;
then
[
"
$RES
"
=
0
]
&&
echo
"Result:
$filenames
package(s) CAN BE installed"
||
echo
"R
esult: There are PROBLEMS with install some package(s)"
[
"
$RES
"
=
0
]
&&
info
"Simulate result:
$filenames
package(s) CAN BE installed"
||
info
"Simulate r
esult: There are PROBLEMS with install some package(s)"
fi
fi
return
$RES
return
$RES
}
}
...
@@ -2941,7 +3114,7 @@ epm_simulate()
...
@@ -2941,7 +3114,7 @@ epm_simulate()
epm_update
()
epm_update
()
{
{
echo
"Run
command for update remote package repository database"
info
"Running
command for update remote package repository database"
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm
)
apt-rpm
)
...
@@ -2989,6 +3162,10 @@ case $PMTYPE in
...
@@ -2989,6 +3162,10 @@ case $PMTYPE in
ipkg
)
ipkg
)
sudocmd ipkg update
sudocmd ipkg update
;;
;;
pkgsrc
)
# portsnap extract for the first time?
sudocmd portsnap fetch update
;;
*
)
*
)
fatal
"Have no suitable update command for
$PMTYPE
"
fatal
"Have no suitable update command for
$PMTYPE
"
;;
;;
...
@@ -3006,7 +3183,7 @@ epm_upgrade()
...
@@ -3006,7 +3183,7 @@ epm_upgrade()
# it is useful for first time running
# it is useful for first time running
update_repo_if_needed
update_repo_if_needed
echo
"Run
command for upgrade packages"
info
"Running
command for upgrade packages"
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm|apt-dpkg
)
apt-rpm|apt-dpkg
)
...
@@ -3046,6 +3223,9 @@ epm_upgrade()
...
@@ -3046,6 +3223,9 @@ epm_upgrade()
pkgsrc
)
pkgsrc
)
CMD
=
"freebsd-update fetch install"
CMD
=
"freebsd-update fetch install"
;;
;;
pkgng
)
CMD
=
"pkg upgrade"
;;
chocolatey
)
chocolatey
)
CMD
=
"chocolatey update all"
CMD
=
"chocolatey update all"
;;
;;
...
@@ -3092,7 +3272,7 @@ epm_Upgrade()
...
@@ -3092,7 +3272,7 @@ epm_Upgrade()
epm_whatdepends
()
epm_whatdepends
()
{
{
local
CMD
local
CMD
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Run query without names
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Whatdepends: missing package(s) name
"
case
$PMTYPE
in
case
$PMTYPE
in
apt-rpm
)
apt-rpm
)
...
@@ -3111,6 +3291,9 @@ case $PMTYPE in
...
@@ -3111,6 +3291,9 @@ case $PMTYPE in
assure_exists equery
assure_exists equery
CMD
=
"equery depends -a"
CMD
=
"equery depends -a"
;;
;;
pkgng
)
CMD
=
"pkg info -r"
;;
*
)
*
)
fatal
"Have no suitable command for
$PMTYPE
"
fatal
"Have no suitable command for
$PMTYPE
"
;;
;;
...
@@ -3125,7 +3308,7 @@ docmd $CMD $pkg_filenames
...
@@ -3125,7 +3308,7 @@ docmd $CMD $pkg_filenames
epm_whatprovides
()
epm_whatprovides
()
{
{
local
CMD
local
CMD
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Run query without names
"
[
-n
"
$pkg_filenames
"
]
||
fatal
"
Whatprovides: missing package(s) name
"
case
$PMTYPE
in
case
$PMTYPE
in
conary
)
conary
)
...
@@ -3484,7 +3667,7 @@ $(get_help HELPOPT)
...
@@ -3484,7 +3667,7 @@ $(get_help HELPOPT)
print_version
()
print_version
()
{
{
echo
"EPM package manager version 1.5.
0
"
echo
"EPM package manager version 1.5.
4
"
echo
"Running on
$(
$DISTRVENDOR
)
('
$PMTYPE
' package manager uses '
$PKGFORMAT
' package format)"
echo
"Running on
$(
$DISTRVENDOR
)
('
$PMTYPE
' package manager uses '
$PKGFORMAT
' package format)"
echo
"Copyright (c) Etersoft 2012-2014"
echo
"Copyright (c) Etersoft 2012-2014"
echo
"This program may be freely redistributed under the terms of the GNU AGPLv3."
echo
"This program may be freely redistributed under the terms of the GNU AGPLv3."
...
@@ -3663,10 +3846,16 @@ check_command()
...
@@ -3663,10 +3846,16 @@ check_command()
Upgrade
)
# HELPCMD: force update package base, then run upgrade
Upgrade
)
# HELPCMD: force update package base, then run upgrade
epm_cmd
=
Upgrade
epm_cmd
=
Upgrade
;;
;;
downgrade
)
# HELPCMD: downgrade [all] packages to the repo state
epm_cmd
=
downgrade
;;
simulate
)
# HELPCMD: simulate install with check requires
simulate
)
# HELPCMD: simulate install with check requires
epm_cmd
=
simulate
epm_cmd
=
simulate
;;
;;
checkpkg|integrity
)
# HELPCMD: check package file integrity (checksum)
audit
)
# HELPCMD: audits installed packages against known vulnerabilities
epm_cmd
=
audit
;;
-V
|
checkpkg|integrity
)
# HELPCMD: check package file integrity (checksum)
epm_cmd
=
checkpkg
epm_cmd
=
checkpkg
;;
;;
...
@@ -3725,7 +3914,8 @@ check_option()
...
@@ -3725,7 +3914,8 @@ check_option()
check_filenames
()
check_filenames
()
{
{
local
opt
=
"
$1
"
local
opt
=
"
$1
"
if
[
-f
"
$opt
"
]
&&
echo
$opt
|
grep
-q
"
\.
"
;
then
# files can be with full path or have extension via .
if
[
-f
"
$opt
"
]
&&
echo
"
$opt
"
|
grep
-q
"[/
\.
]"
;
then
pkg_files
=
"
$pkg_files
$opt
"
pkg_files
=
"
$pkg_files
$opt
"
else
else
pkg_names
=
"
$pkg_names
$opt
"
pkg_names
=
"
$pkg_names
$opt
"
...
@@ -3745,7 +3935,7 @@ done
...
@@ -3745,7 +3935,7 @@ done
# if input is not console, get pkg from it too
# if input is not console, get pkg from it too
if
!
inputisatty
;
then
if
!
inputisatty
;
then
for
opt
in
$(
timeout
1
cat
)
;
do
for
opt
in
$(
timeout
1
cat
2>/dev/null
)
;
do
check_filenames
$opt
check_filenames
$opt
done
done
fi
fi
...
...
packed/serv.sh
View file @
9f0e4dc4
...
@@ -108,17 +108,12 @@ echon()
...
@@ -108,17 +108,12 @@ echon()
set_target_pkg_env
()
set_target_pkg_env
()
{
{
[
-n
"
$DISTRNAME
"
]
||
fatal
"
Run set_target_pkg_env without DISTRNAME
"
[
-n
"
$DISTRNAME
"
]
||
fatal
"
Missing DISTRNAME in set_target_pkg_env.
"
PKGFORMAT
=
$(
$DISTRVENDOR
-p
"
$DISTRNAME
"
)
PKGFORMAT
=
$(
$DISTRVENDOR
-p
"
$DISTRNAME
"
)
PKGVENDOR
=
$(
$DISTRVENDOR
-s
"
$DISTRNAME
"
)
PKGVENDOR
=
$(
$DISTRVENDOR
-s
"
$DISTRNAME
"
)
RPMVENDOR
=
$(
$DISTRVENDOR
-n
"
$DISTRNAME
"
)
RPMVENDOR
=
$(
$DISTRVENDOR
-n
"
$DISTRNAME
"
)
}
}
realpath
()
{
readlink
-f
"
$@
"
}
showcmd
()
showcmd
()
{
{
if
[
-z
"
$quiet
"
]
;
then
if
[
-z
"
$quiet
"
]
;
then
...
@@ -234,6 +229,19 @@ warning()
...
@@ -234,6 +229,19 @@ warning()
fi
fi
}
}
info
()
{
[
-n
"
$quiet
"
]
&&
return
# print message to stderr if stderr forwarded to (a file)
if
isatty2
;
then
isatty
||
return
0
echo
"
$@
"
else
echo
"
$@
"
>
&2
fi
}
set_sudo
()
set_sudo
()
{
{
SUDO
=
""
SUDO
=
""
...
@@ -258,33 +266,30 @@ set_eatmydata()
...
@@ -258,33 +266,30 @@ set_eatmydata()
# use if possible
# use if possible
which eatmydata
>
/dev/null 2>/dev/null
||
return
which eatmydata
>
/dev/null 2>/dev/null
||
return
SUDO
=
"
$SUDO
eatmydata"
SUDO
=
"
$SUDO
eatmydata"
i
satty
&&
echo
"Uwaga! eatmydata is installed, we will use it for disable all sync operations."
>
&2
i
nfo
"Uwaga! eatmydata is installed, we will use it for disable all sync operations."
return
0
return
0
}
}
assure_exists
()
__get_package_for_command
()
{
{
PATH
=
$PATH
:/sbin:/usr/sbin which
$1
2>/dev/null
>
/dev/null
&&
return
case
"
$1
"
in
echo
"Install appropriate package for
$1
command..."
case
$1
in
equery|revdep-rebuild
)
equery|revdep-rebuild
)
epm
install
gentoolkit
echo
'gentoolkit'
;;
apt-repo
)
epm
install
apt-repo
;;
apt-file
)
epm
install
apt-file
;;
;;
update-kernel|remove-old-kernels
)
update-kernel|remove-old-kernels
)
epm
install
update-kernel
echo
'update-kernel'
;;
*
)
fatal
"Internal error: Unknown binary
$1
to check if exists"
;;
;;
esac
esac
}
}
assure_exists
()
{
load_helper epm-assure
local
package
=
"
$2
"
[
-n
"
$package
"
]
||
package
=
"
$(
__get_package_for_command
"
$1
"
)
"
__epm_assure
"
$1
"
$package
}
get_package_type
()
get_package_type
()
{
{
local
i
local
i
...
@@ -297,6 +302,14 @@ get_package_type()
...
@@ -297,6 +302,14 @@ get_package_type()
echo
"rpm"
echo
"rpm"
return
return
;;
;;
*
.txz
)
echo
"txz"
return
;;
*
.tbz
)
echo
"tbz"
return
;;
*
)
*
)
#fatal "Don't know type of $1"
#fatal "Don't know type of $1"
# return package name for info
# return package name for info
...
@@ -349,6 +362,7 @@ case $DISTRNAME in
...
@@ -349,6 +362,7 @@ case $DISTRNAME in
;;
;;
FreeBSD|NetBSD|OpenBSD|Solaris
)
FreeBSD|NetBSD|OpenBSD|Solaris
)
CMD
=
"pkgsrc"
CMD
=
"pkgsrc"
which pkg 2>/dev/null
>
/dev/null
&&
CMD
=
pkgng
;;
;;
Gentoo
)
Gentoo
)
CMD
=
"emerge"
CMD
=
"emerge"
...
@@ -403,16 +417,20 @@ serv_common()
...
@@ -403,16 +417,20 @@ serv_common()
sudocmd service
$SERVICE
"
$@
"
sudocmd service
$SERVICE
"
$@
"
;;
;;
service-initd|service-update
)
service-initd|service-update
)
sudocmd
/etc/init.d
/
$SERVICE
"
$@
"
sudocmd
$INITDIR
/
$SERVICE
"
$@
"
;;
;;
systemd
)
systemd
)
# run init script directly (for nonstandart commands)
if
[
-x
$INITDIR
/
$SERVICE
]
;
then
sudocmd
$INITDIR
/
$SERVICE
"
$@
"
else
sudocmd systemctl
"
$@
"
$SERVICE
sudocmd systemctl
"
$@
"
$SERVICE
fi
;;
;;
*
)
*
)
fatal
"Have no suitable command for
$SERVICETYPE
"
fatal
"Have no suitable command for
$SERVICETYPE
"
;;
;;
esac
esac
}
}
# File bin/serv-disable:
# File bin/serv-disable:
...
@@ -498,7 +516,7 @@ serv_list_all()
...
@@ -498,7 +516,7 @@ serv_list_all()
sudocmd chkconfig
--list
|
cut
-f1
sudocmd chkconfig
--list
|
cut
-f1
;;
;;
service-initd|service-update
)
service-initd|service-update
)
sudocmd
ls
-1
/etc/init.d/
*
|
sed
-e
"s|/etc/init.d/||g"
|
grep
-v
README
sudocmd
ls
$INITDIR
/
|
grep
-v
README
;;
;;
systemd
)
systemd
)
sudocmd systemctl list-unit-files
$@
sudocmd systemctl list-unit-files
$@
...
@@ -537,7 +555,7 @@ serv_start()
...
@@ -537,7 +555,7 @@ serv_start()
sudocmd service
$SERVICE
start
"
$@
"
sudocmd service
$SERVICE
start
"
$@
"
;;
;;
service-initd|service-update
)
service-initd|service-update
)
sudocmd
/etc/init.d
/
$SERVICE
start
"
$@
"
sudocmd
$INITDIR
/
$SERVICE
start
"
$@
"
;;
;;
systemd
)
systemd
)
sudocmd systemctl start
"
$SERVICE
"
"
$@
"
sudocmd systemctl start
"
$SERVICE
"
"
$@
"
...
@@ -557,7 +575,7 @@ is_service_running()
...
@@ -557,7 +575,7 @@ is_service_running()
$SUDO
service
$1
status
>
/dev/null
$SUDO
service
$1
status
>
/dev/null
;;
;;
service-initd|service-update
)
service-initd|service-update
)
$SUDO
/etc/init.d
/
$1
status
>
/dev/null
$SUDO
$INITDIR
/
$1
status
>
/dev/null
;;
;;
systemd
)
systemd
)
$SUDO
systemctl status
$1
>
/dev/null
$SUDO
systemctl status
$1
>
/dev/null
...
@@ -598,7 +616,7 @@ serv_status()
...
@@ -598,7 +616,7 @@ serv_status()
sudocmd service
$SERVICE
status
"
$@
"
sudocmd service
$SERVICE
status
"
$@
"
;;
;;
service-update
)
service-update
)
sudocmd
/etc/init.d
/
$SERVICE
status
"
$@
"
sudocmd
$INITDIR
/
$SERVICE
status
"
$@
"
;;
;;
systemd
)
systemd
)
sudocmd systemctl status
$SERVICE
"
$@
"
sudocmd systemctl status
$SERVICE
"
$@
"
...
@@ -621,7 +639,7 @@ serv_stop()
...
@@ -621,7 +639,7 @@ serv_stop()
sudocmd service
$SERVICE
stop
"
$@
"
sudocmd service
$SERVICE
stop
"
$@
"
;;
;;
service-initd|service-update
)
service-initd|service-update
)
sudocmd
/etc/init.d
/
$SERVICE
stop
"
$@
"
sudocmd
$INITDIR
/
$SERVICE
stop
"
$@
"
;;
;;
systemd
)
systemd
)
sudocmd systemctl stop
$SERVICE
"
$@
"
sudocmd systemctl stop
$SERVICE
"
$@
"
...
@@ -647,7 +665,7 @@ serv_try_restart()
...
@@ -647,7 +665,7 @@ serv_try_restart()
;;
;;
service-initd|service-update
)
service-initd|service-update
)
is_service_running
$SERVICE
||
return
0
is_service_running
$SERVICE
||
return
0
sudocmd
/etc/init.d
/
$SERVICE
restart
"
$@
"
sudocmd
$INITDIR
/
$SERVICE
restart
"
$@
"
;;
;;
systemd
)
systemd
)
sudocmd systemctl try-restart
$SERVICE
"
$@
"
sudocmd systemctl try-restart
$SERVICE
"
$@
"
...
@@ -1003,6 +1021,8 @@ esac
...
@@ -1003,6 +1021,8 @@ esac
}
}
INITDIR
=
/etc/init.d
PATH
=
$PATH
:/sbin:/usr/sbin
PATH
=
$PATH
:/sbin:/usr/sbin
set_sudo
set_sudo
...
@@ -1092,7 +1112,7 @@ $(get_help HELPOPT)
...
@@ -1092,7 +1112,7 @@ $(get_help HELPOPT)
print_version
()
print_version
()
{
{
echo
"Service manager version 1.5.
0
"
echo
"Service manager version 1.5.
4
"
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."
...
@@ -1210,6 +1230,7 @@ if [ -z "$withoutservicename" ] && [ -z "$service_name" ] ; then
...
@@ -1210,6 +1230,7 @@ if [ -z "$withoutservicename" ] && [ -z "$service_name" ] ; then
fatal
"Run
$ $progname
--help for get help"
fatal
"Run
$ $progname
--help for get help"
fi
fi
# use common way if the command is unknown
if
[
-z
"
$serv_cmd
"
]
;
then
if
[
-z
"
$serv_cmd
"
]
;
then
serv_cmd
=
common
serv_cmd
=
common
fi
fi
...
...
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