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
8ec3eb44
Commit
8ec3eb44
authored
Jan 20, 2021
by
Vitaly Lipatov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add yum wrapper
parent
99e0f7af
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
329 additions
and
0 deletions
+329
-0
yum
bin/yum
+329
-0
No files found.
bin/yum
0 → 100755
View file @
8ec3eb44
#!/bin/sh
#
# Copyright (C) 2012-2021 Etersoft
# Copyright (C) 2012-2021 Vitaly Lipatov <lav@etersoft.ru>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
PROGDIR
=
$(
dirname
"
$0
"
)
PROGNAME
=
$(
basename
"
$0
"
)
[
"
$PROGDIR
"
=
"."
]
&&
PROGDIR
=
$(
pwd
)
if
[
"
$0
"
=
"/dev/stdin"
]
||
[
"
$0
"
=
"sh"
]
;
then
PROGDIR
=
""
PROGNAME
=
""
fi
# will replaced to /usr/share/eepm during install
SHAREDIR
=
$PROGDIR
CONFIGDIR
=
$PROGDIR
/..
load_helper
()
{
local
CMD
=
"
$SHAREDIR
/
$1
"
# do not use fatal() here, it can be initial state
[
-r
"
$CMD
"
]
||
{
echo
"FATAL: Have no
$CMD
helper file"
;
exit
1
;
}
# shellcheck disable=SC1090
.
$CMD
}
load_helper epm-sh-functions
#PATH=$PATH:/sbin:/usr/sbin
set_pm_type
set_sudo
check_tty
#############################
phelp
()
{
echo
"
Usage: yum [options] COMMAND
List of Commands:
$(
get_help HELPCMD |
sed
-e
's@|@,@g'
)
Options:
$(
get_help HELPOPT |
sed
-e
's@|@,@g'
)
"
}
print_version
()
{
echo
"EPM package manager version @VERSION@ https://wiki.etersoft.ru/Epm"
echo
"Running on
$(
$DISTRVENDOR
-e
)
('
$PMTYPE
' package manager uses '
$PKGFORMAT
' package format)"
echo
"Copyright (c) Etersoft 2012-2021"
echo
"This program may be freely redistributed under the terms of the GNU AGPLv3."
}
EPMVERSION
=
@VERSION@
verbose
=
quiet
=
nodeps
=
noremove
=
dryrun
=
force
=
repack
=
inscript
=
scripts
=
noscripts
=
short
=
direct
=
sort
=
non_interactive
=
skip_installed
=
skip_missed
=
show_command_only
=
epm_cmd
=
pkg_files
=
pkg_dirs
=
pkg_names
=
pkg_urls
=
quoted_args
=
# load system wide config
[
-f
/etc/eepm/eepm.conf
]
&&
.
/etc/eepm/eepm.conf
check_command
()
{
# do not override command
[
-z
"
$epm_cmd
"
]
||
return
# HELPCMD:
case
$1
in
check
)
# HELPCMD: Check for problems in the rpmdb
epm_cmd
=
check
;;
check-update
)
# HELPCMD: Check for available package updates
epm_cmd
=
upgrade
;;
clean
)
# HELPCMD: Remove cached data
epm_cmd
=
clean
;;
deplist
)
# HELPCMD: List a package's dependencies
# TODO: hilevel in any case
epm_cmd
=
requires
;;
distribution-synchronization
)
# HELPCMD: Synchronize installed packages to the latest available versions
# TODO: some differences from just upgrade?
epm_cmd
=
upgrade
;;
downgrade
)
# HELPCMD: downgrade a package
epm_cmd
=
downgrade
;;
erase
)
# HELPCMD: Remove a package or packages from your system
epm_cmd
=
remove
;;
groupinfo
)
# HELPCMD: Display details about a package group
fatal
"Is not supported"
;;
groupinstall
)
# HELPCMD: Install the packages in a group on your system
fatal
"Is not supported"
;;
grouplist
)
# HELPCMD: List available package groups
fatal
"Is not supported"
;;
groupremove
)
# HELPCMD: Remove the packages in a group from your system
fatal
"Is not supported"
;;
help
)
# HELPCMD: Display a helpful usage message
help
=
1
phelp
exit
0
;;
history
)
# HELPCMD: Display, or use, the transaction history
fatal
"Is not supported"
;;
info
)
# HELPCMD: Display details about a package or group of packages
epm_cmd
=
info
;;
install
)
# HELPCMD: Install a package or packages on your system
epm_cmd
=
install
;;
list
)
# HELPCMD: List a package or groups of packages
# TODO: support base options (see list -h), all available packages by default
epm_cmd
=
packages
;;
load-transaction
)
# HELPCMD: load a saved transaction from filename
fatal
"Is not supported"
;;
makecache
)
# HELPCMD: Generate the metadata cache
fatal
"Is not supported"
;;
provides
)
# HELPCMD: Find what package provides the given value
# TODO: hilevel in any case
epm_cmd
=
provides
;;
reinstall
)
# HELPCMD: reinstall a package
epm_cmd
=
reinstall
;;
repolist
)
# HELPCMD: Display the configured software repositories
epm_cmd
=
repolist
;;
resolvedep
)
# HELPCMD: Determine which package provides the given dependency
epm_cmd
=
whatprovides
;;
search
)
# HELPCMD: Search package details for the given string
epm_cmd
=
search
;;
shell
)
# HELPCMD: Run an interactive yum shell
# TODO: not full compatible
apt-shell
;;
update
)
# HELPCMD: Update a package or packages on your system
epm_cmd
=
install
;;
upgrade
)
# HELPCMD: Update packages taking obsoletes into account
epm_cmd
=
upgrade
;;
version
)
# HELPCMD: Display a version for the machine and/or available repos.
fatal
"Is not supported"
;;
*
)
return
1
;;
esac
return
0
}
check_option
()
{
case
$1
in
-h
|
--help
)
# HELPOPT: show this help message and exit
help
=
1
phelp
exit
0
;;
-t
|
--tolerant
)
# HELPOPT: be tolerant of errors
fatal
"Is not supported"
;;
-C
|
--cacheonly
)
# HELPOPT: run entirely from system cache, don't update cache
fatal
"Is not supported"
;;
--showduplicates
)
# HELPOPT: show duplicates, in repos, in list/search commands
fatal
"Is not supported"
;;
--quiet
)
# HELPOPT: quiet operation
quiet
=
1
;;
-v
|
--verbose
)
# HELPOPT: verbose operation
verbose
=
"--verbose"
;;
-y
|
--assumeyes
)
# HELPOPT: answer yes for all questions
non_interactive
=
"--auto"
;;
--assumeno
)
# HELPOPT: answer no for all questions
fatal
"Is not supported"
;;
--version
)
# HELPOPT: show Yum version and exit
print_version
exit
0
;;
# --installroot=[path] set install root
# --enablerepo=[repo] enable one or more repositories (wildcards allowed)
# --disablerepo=[repo] disable one or more repositories (wildcards allowed)
# -x [package], --exclude=[package]
# exclude package(s) by name or glob
# --disableexcludes=[repo]
# disable exclude from main, for a repo or for
# everything
# --obsoletes enable obsoletes processing during updates
# --noplugins disable Yum plugins
# --nogpgcheck disable gpg signature checking
# --skip-broken skip packages with depsolving problems
# --releasever=RELEASEVER
# set value of $releasever in yum config and repo files
# --downloadonly don't update, just download
# --downloaddir=DLDIR specifies an alternate directory to store packages
# --setopt=SETOPTS set arbitrary config and repo options
*
)
return
1
;;
esac
return
0
}
# TODO: skip for commands where we don't need parse args
check_filenames
()
{
local
opt
for
opt
in
"
$@
"
;
do
# files can be with full path or have extension via .
if
[
-f
"
$opt
"
]
&&
echo
"
$opt
"
|
grep
-q
"[/
\.
]"
;
then
has_space
"
$opt
"
&&
warning
"There are space(s) in filename '
$opt
', it is not supported. Skipped"
&&
continue
pkg_files
=
"
$pkg_files
$opt
"
elif
[
-d
"
$opt
"
]
;
then
has_space
"
$opt
"
&&
warning
"There are space(s) in directory path '
$opt
', it is not supported. Skipped"
&&
continue
pkg_dirs
=
"
$pkg_dirs
$opt
"
elif
echo
"
$opt
"
|
grep
-q
"^[fhtps]*://"
;
then
has_space
"
$opt
"
&&
warning
"There are space(s) in URL '
$opt
', it is not supported. Skipped"
&&
continue
pkg_urls
=
"
$pkg_urls
$opt
"
else
has_space
"
$opt
"
&&
warning
"There are space(s) in package name '
$opt
', it is not supported. Skipped."
&&
continue
pkg_names
=
"
$pkg_names
$opt
"
fi
quoted_args
=
"
$quoted_args
\"
$opt
\"
"
done
}
FLAGENDOPTS
=
for
opt
in
"
$@
"
;
do
[
"
$opt
"
=
"--"
]
&&
FLAGENDOPTS
=
1
&&
continue
if
[
-z
"
$FLAGENDOPTS
"
]
;
then
check_command
"
$opt
"
&&
continue
check_option
"
$opt
"
&&
continue
fi
# Note: will parse all params separately (no package names with spaces!)
check_filenames
"
$opt
"
done
pkg_files
=
$(
strip_spaces
"
$pkg_files
"
)
pkg_dirs
=
$(
strip_spaces
"
$pkg_dirs
"
)
# in common case dirs equals to names only suddenly
pkg_names
=
$(
strip_spaces
"
$pkg_names
$pkg_dirs
"
)
pkg_urls
=
$(
strip_spaces
"
$pkg_urls
"
)
pkg_filenames
=
$(
strip_spaces
"
$pkg_files
$pkg_names
"
)
# Just debug
#echover "command: $epm_cmd"
#echover "pkg_files=$pkg_files"
#echover "pkg_names=$pkg_names"
# Just printout help if run without args
if
[
-z
"
$epm_cmd
"
]
;
then
phelp
echo
fatstr
=
"No such command:
$*
. Please use /usr/bin/yum --help"
[
-n
"
$*
"
]
||
fatstr
=
"You need to give some command"
info
"
$fatstr
."
exit
1
fi
[
-n
"
$verbose$EPM_VERBOSE
"
]
&&
showcmd
"
$0
$*
"
# Run helper for command with natural args
load_helper epm-
$epm_cmd
eval
epm_
$epm_cmd
$quoted_args
# return last error code (from subroutine)
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