自动安装pkg的依赖包
来源:互联网 发布:淘宝 厂家投诉 编辑:程序博客网 时间:2024/05/21 13:03
当我们要按照一个pkg时,可能有几个依赖的包需要安装,用下面这个脚本可以将pkg要依赖的包自动安装上。
其用法如下:
pkgs="parted"
install_deps "${pkgs}"
在install_deps 中支持Debian|Ubuntu/CentOS/Fedora 这五个os,我们以centos为例
安装依赖的包,起始就是给yum加上-e 0的参数即可.
install_deps() {
//给pkgs 赋值,本例中pkgs=parted
pkgs="$1"
// -z表示为null,也就是说pkgs如果为null,则通过error_msg 这个函数输出信息,提示用过正确使用install_deps
[ -z "${pkgs}" ] && error_msg "Usage: install_deps pkgs"
// 调用info_msg 输出需要安装的pkgs
info_msg "Installing ${pkgs}"
// 调用dist_name 来判断当前使用的os
dist_name
// 通过case 语句针对不同的os,调用不通的安装函数
case "${dist}" in
Debian|Ubuntu)
# Use the default answers for all questions.
DEBIAN_FRONTEND=noninteractive apt-get update -q -y
# shellcheck disable=SC2086
DEBIAN_FRONTEND=noninteractive apt-get install -q -y ${pkgs}
;;
CentOS)
# shellcheck disable=SC2086
yum -e 0 -y install ${pkgs}
;;
Fedora)
# shellcheck disable=SC2086
dnf -e 0 -y install ${pkgs}
;;
Unknown)
warn_msg "Unsupported distro: package install skipped"
;;
esac
}
error_msg() {
//给msg赋值,这里的msg=="Usage: install_deps pkgs"
msg="$1"
//如果msg为null,则输出Unknown error
[ -z "${msg}" ] && msg="Unknown error"
//如果msg不为null,则通过printf 输出 2表示error console。
printf "ERROR: %s\n" "${msg}" >&2
// 以返回值0退出
exit 0
}
info_msg() {
msg="$1"
[ -z "${msg}" ] && msg="Unknown info"
printf "INFO: %s\n" "${msg}" >&1
}
dist_name() {
//根读取不通的路径,获取os信息.-x 表示是否可以执行,-f表示文件
if [ -x /usr/bin/lsb_release ]; then
dist="$(lsb_release -si)"
elif [ -f /etc/lsb-release ]; then
. /etc/lsb-release
dist="${DISTRIB_ID}"
elif [ -f /etc/debian_version ]; then
dist="Debian"
elif [ -f /etc/fedora-release ]; then
dist="Fedora"
elif [ -f /etc/centos-release ]; then
dist="CentOS"
else
dist="Unknown"
warn_msg "Unsupported distro: cannot determine distribution name"
fi
}
其用法如下:
pkgs="parted"
install_deps "${pkgs}"
在install_deps 中支持Debian|Ubuntu/CentOS/Fedora 这五个os,我们以centos为例
安装依赖的包,起始就是给yum加上-e 0的参数即可.
install_deps() {
//给pkgs 赋值,本例中pkgs=parted
pkgs="$1"
// -z表示为null,也就是说pkgs如果为null,则通过error_msg 这个函数输出信息,提示用过正确使用install_deps
[ -z "${pkgs}" ] && error_msg "Usage: install_deps pkgs"
// 调用info_msg 输出需要安装的pkgs
info_msg "Installing ${pkgs}"
// 调用dist_name 来判断当前使用的os
dist_name
// 通过case 语句针对不同的os,调用不通的安装函数
case "${dist}" in
Debian|Ubuntu)
# Use the default answers for all questions.
DEBIAN_FRONTEND=noninteractive apt-get update -q -y
# shellcheck disable=SC2086
DEBIAN_FRONTEND=noninteractive apt-get install -q -y ${pkgs}
;;
CentOS)
# shellcheck disable=SC2086
yum -e 0 -y install ${pkgs}
;;
Fedora)
# shellcheck disable=SC2086
dnf -e 0 -y install ${pkgs}
;;
Unknown)
warn_msg "Unsupported distro: package install skipped"
;;
esac
}
error_msg() {
//给msg赋值,这里的msg=="Usage: install_deps pkgs"
msg="$1"
//如果msg为null,则输出Unknown error
[ -z "${msg}" ] && msg="Unknown error"
//如果msg不为null,则通过printf 输出 2表示error console。
printf "ERROR: %s\n" "${msg}" >&2
// 以返回值0退出
exit 0
}
info_msg() {
msg="$1"
[ -z "${msg}" ] && msg="Unknown info"
printf "INFO: %s\n" "${msg}" >&1
}
dist_name() {
//根读取不通的路径,获取os信息.-x 表示是否可以执行,-f表示文件
if [ -x /usr/bin/lsb_release ]; then
dist="$(lsb_release -si)"
elif [ -f /etc/lsb-release ]; then
. /etc/lsb-release
dist="${DISTRIB_ID}"
elif [ -f /etc/debian_version ]; then
dist="Debian"
elif [ -f /etc/fedora-release ]; then
dist="Fedora"
elif [ -f /etc/centos-release ]; then
dist="CentOS"
else
dist="Unknown"
warn_msg "Unsupported distro: cannot determine distribution name"
fi
}
自动安装pkg的依赖包
0 0
- 自动安装pkg的依赖包
- pkg-config找不到安装过的包
- ubuntu笔记-自动下载依赖安装包
- ubuntu 自动安装依赖包命令
- pkg-config找不到安装包
- mac 卸载pkg安装包
- unix典型软件安装包pkg的制作
- PKG安装包的管理与文件格式分析
- 让Maven自动下载依赖的包
- 使用eclipse在Maven本地仓中自动安装依赖jar包的目录结构
- 安装gcc时的依赖包
- linux安装gcc需要的依赖包
- 安装cmake时包的依赖问题
- Openstack的python依赖包安装方法
- 安装openrave 0.9的各种依赖包
- RPM与pkg两种软件安装包的制做方法
- solaris10下的tar及gzip打包 制作源码pkg安装包
- 自动安装系统的包
- JPA 之 深入浅出 --概述讲解
- 对整型数用printf %f输出的话,就会变成0.0000 不管整型数是多少
- 一个小公司怎么实现APP的UI自动化测试
- 工资计算
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- 自动安装pkg的依赖包
- Android依赖管理与私服搭建
- ToolBar的再使用
- C#学习笔记(定义属性get&set)
- 教你快速认识mapreduce和hadoop
- poj-2104【构造】
- JAVA从键盘输入三种常规方法详解
- 回归问题中-梯度下降原理及思考
- 在vs2008中编写c控制台程序,运行完后经常一闪而过解决办法