mirror of
https://github.com/bin456789/reinstall.git
synced 2025-01-19 04:49:13 +08:00
core: 优化依赖包安装
This commit is contained in:
parent
baf928ab0f
commit
ef67973707
101
reinstall.sh
101
reinstall.sh
@ -555,57 +555,74 @@ verify_os_string() {
|
|||||||
usage_and_exit
|
usage_and_exit
|
||||||
}
|
}
|
||||||
|
|
||||||
apt_install() {
|
|
||||||
[ -z "$apk_updated" ] && apt update && apk_updated=1
|
|
||||||
apt install -y $pkgs
|
|
||||||
}
|
|
||||||
|
|
||||||
install_pkg() {
|
install_pkg() {
|
||||||
cmds=$*
|
|
||||||
|
|
||||||
is_in_windows && return
|
is_in_windows && return
|
||||||
|
|
||||||
need_install=false
|
for cmd in "$@"; do
|
||||||
for cmd in $cmds; do
|
if ! command -v $cmd ||
|
||||||
if ! command -v $cmd >/dev/null; then
|
# gentoo 默认编译的 unsquashfs 不支持 xz
|
||||||
need_install=true
|
{ [ "$cmd" = unsquashfs ] &&
|
||||||
break
|
command -v emerge &&
|
||||||
|
! unsquashfs |& grep -w xz &&
|
||||||
|
echo "unsquashfs not supported xz. need rebuild."; }; then
|
||||||
|
|
||||||
|
if ! find_pkg_mgr; then
|
||||||
|
error_and_exit "Can't find compatible package manager. Please manually install $cmd."
|
||||||
|
fi
|
||||||
|
cmd_to_pkg
|
||||||
|
install_pkg_real
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if $need_install; then
|
find_pkg_mgr() {
|
||||||
if is_in_alpine; then
|
if [ -z "$pkg_mgr" ]; then
|
||||||
add_community_repo_for_alpine
|
# command -v 有先后顺序,dnf放yum前面
|
||||||
|
if ! pkg_mgr=$(command -v dnf yum apt pacman zypper emerge apk | head -1 | awk -F/ '{print $NF}' | grep .); then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
# cmds to pkgs
|
}
|
||||||
for cmd in $cmds; do
|
|
||||||
pkg=
|
|
||||||
case $cmd in
|
|
||||||
unsquashfs) command -v zypper && pkg=squashfs || pkg=squashfs-tools ;;
|
|
||||||
lsmem | lsblk) pkg=util-linux ;;
|
|
||||||
nslookup | dig)
|
|
||||||
{ command -v apk && pkg="bind-tools"; } ||
|
|
||||||
{ command -v apt && pkg="dnsutils"; } ||
|
|
||||||
{ command -v pacman && pkg="bind"; } ||
|
|
||||||
{ command -v yum dnf zypper && pkg="bind-utils"; }
|
|
||||||
;;
|
|
||||||
*) pkg=$cmd ;;
|
|
||||||
esac
|
|
||||||
pkgs+=" $pkg"
|
|
||||||
done
|
|
||||||
|
|
||||||
# command -v 有先后顺序,dnf放yum前面
|
cmd_to_pkg() {
|
||||||
pkg_mgr=$(command -v dnf yum apt pacman zypper apk | head -1 | awk -F/ '{print $NF}')
|
unset USE
|
||||||
case $pkg_mgr in
|
case $cmd in
|
||||||
dnf) dnf install -y --setopt=install_weak_deps=False $pkgs ;;
|
lsmem | lsblk) pkg="util-linux" ;;
|
||||||
yum) yum install -y $pkgs ;;
|
unsquashfs)
|
||||||
apk) apk add $pkgs ;;
|
case "$pkg_mgr" in
|
||||||
apt) apt_install $pkgs ;;
|
zypper) pkg="squashfs" ;;
|
||||||
pacman) pacman -Syu --noconfirm --needed $pkgs ;;
|
emerge) pkg="squashfs-tools" && export USE="lzma" ;;
|
||||||
zypper) zypper install -y $pkgs ;;
|
*) pkg="squashfs-tools" ;;
|
||||||
*) error_and_exit "Unexpected package manager: $pkg_mgr" ;;
|
esac
|
||||||
|
;;
|
||||||
|
nslookup | dig)
|
||||||
|
case "$pkg_mgr" in
|
||||||
|
apt) pkg="dnsutils" ;;
|
||||||
|
pacman) pkg="bind" ;;
|
||||||
|
apk | emerge) pkg="bind-tools" ;;
|
||||||
|
yum | dnf | zypper) pkg="bind-utils" ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*) pkg=$cmd ;;
|
||||||
esac
|
esac
|
||||||
fi
|
}
|
||||||
|
|
||||||
|
install_pkg_real() {
|
||||||
|
case $pkg_mgr in
|
||||||
|
dnf) dnf install -y --setopt=install_weak_deps=False $pkg ;;
|
||||||
|
yum) yum install -y $pkg ;;
|
||||||
|
emerge) emerge --oneshot $pkg ;;
|
||||||
|
pacman) pacman -Syu --noconfirm --needed $pkg ;;
|
||||||
|
zypper) zypper install -y $pkg ;;
|
||||||
|
apk)
|
||||||
|
add_community_repo_for_alpine
|
||||||
|
apk add $pkg
|
||||||
|
;;
|
||||||
|
apt)
|
||||||
|
[ -z "$apk_updated" ] && apt update && apk_updated=1
|
||||||
|
apt install -y $pkg
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
check_ram() {
|
check_ram() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user