1、Linux常见的安装软件方式
Linux下面的软件包格式有:rpm格式(红帽系统、CentOS、麒麟系统)或deb格式(Debian、ubuntu)
软件安装方式:
yum/apt方式:点外卖,缺啥少啥,外卖解决。通过网络下载软件包,替我们安装,如果有依赖,会自动下载依赖并安装。适用场景:大部分场景可以使用,如果没有网络,可以自建yum软件仓库。
rpm/dpkg方式:半成品,缺啥少啥,自己解决。手动下载rpm包,手动安装,缺少依赖要自己解决。使用场景:没有网络,误删软件包,依赖较少。
编译安装方式:自己做,缺啥少啥,自己解决。可以自定义安装,比较漫长,缺少依赖要自己解决。适用场景:软件自定义,增加功能。
二进制安装方式:点外卖+自取,缺啥少啥,自己解决(绿色软件免安装)。类似于绿色软件,解压即可用,可能需要准备环境。并非每个软件都有,一般是服务、数据、k8s、promethues监控等。适用场景:如果有可以选用,优先选择yum安装,没有就选择二进制安装。
大型企业对软件有定制化要求,可以先编译安装软件,安装完成后再制作rpm包,搭建内部yum仓库。
2、rpm安装方式
rpm命令一般适用于软件包已经下载好了,利用rpm命令安装。
rpm增、删、改、查
增加-安装: rpm -ivh xxx.rpm (-i,install,v显示过程,h人类可读)
查看-检查: rpm -qa xxx.rpm 查看软件包是否安装 (qa:query,a:all),直接-qa则列出全部已安装的软件
-ql xxx.rpm 查看软件包内容(l:list)
-qf 文件或命令绝对路径 查看文件或命令所归属的软件包
-qc 软件 查看软件的配置文件
修改-升级: rpm -Uvh xxx.rpm 升级软件包(如果软件包不存在,则安装,相当于ivh安装)
删除: rpm -e xxx.rpm 删除软件包(-e:erase)
2.1 安装
案例:安装zabbix软件包
# 先下载该软件包
[root@linux-87-01 ~]# wget --no-check-certificate -P /server/tools/ https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.0-1.el7.x86_64.rpm
# 安装依赖
[root@linux-87-01 ~]# yum install -y pcre2
# 安装zabbisgent2
[root@linux-87-01 ~]# rpm -ivh /server/tools/zabbix-agent2-6.0.0-1.el7.x86_64.rpm
选项解释:
wget:下载指定内容,默认下载到当前目录
-P: 下载到指定目录,如果目录不存在则会创建
--no-check-certificate:下载地址https,加上该选项,下载失败
安装过程如下:
2.2 查询
案例1:检测软件包是否安装成功
[root@linux-87-01 ~]# rpm -qa zabbix
[root@linux-87-01 ~]#
# 直接查询zabbix,没有结果,应该是zabbix-agent2
[root@linux-87-01 ~]# rpm -qa zabbix-agent2
zabbix-agent2-6.0.0-1.el7.x86_64
[root@linux-87-01 ~]#
#或者使用管道 推荐使用该方法
[root@linux-87-01 ~]# rpm -qa | grep zabbix
zabbix-agent2-6.0.0-1.el7.x86_64
[root@linux-87-01 ~]#
egrep ‘a|b’ :a或b,例如:
[root@linux-87-01 ~]# echo "abcd" | egrep 'a|b'
abcd
[root@linux-87-01 ~]#
yum安装的软件,也可以通过rpm -qa检查
案例2:检查软件包的内容
[root@linux-87-01 ~]# rpm -ql zabbix-agent2
/etc/logrotate.d/zabbix-agent2
/etc/zabbix/zabbix_agent2.conf
/etc/zabbix/zabbix_agent2.d
/etc/zabbix/zabbix_agent2.d
软件包不等于命令
一般情况下,一个软件包中有1个命令,
更多情况下,1个软件包下面可能有多个命令,比如:
[root@linux-87-01 ~]# rpm -ql lrzsz
/usr/bin/rb
/usr/bin/rx
/usr/bin/rz
/usr/bin/sb
/usr/bin/sx
/usr/bin/sz
/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
/usr/share/man/man1/rz.1.gz
/usr/share/man/man1/sz.1.gz
[root@linux-87-01 ~]#
案例3:查询一个命令属于哪个软件包
[root@linux-87-01 ~]# rpm -qf /usr/sbin/ip
iproute-4.11.0-30.el7.x86_64
[root@linux-87-01 ~]#
2.3 修改-升级
rpm -Uvh 软件包
事先安装好:zabbix-agent2-6.0.0-1.el7.x86_64.rpm
然后下载:zabbix-agent2-6.0.7-1.el7.x86_64.rpm
注意:如已安装其他版本,先卸载后,再安装zabbix-agent2-6.0.0-1.el7.x86_64.rpm,最后升级zabbix-agent2-6.0.7-1.el7.x86_64.rpm
#下载相关版本
[root@linux-87-01 ~]# wget --no-check-certificate -P /server/tools/ https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.0-1.el7.x86_64.rpm
[root@linux-87-01 ~]# wget --no-check-certificate -P /server/tools/ https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.7-1.el7.x86_64.rpm
#然后升级
[root@linux-87-01 ~]# rpm -Uvh /server/tools/zabbix-agent2-6.0.7-1.el7.x86_64.rpm
2.4 删除
删除对应的软件包(rpm安装或yum安装),其他方式(编译、二进制)无法通过rpmm删除。
yum、rpm安装的软件,删除时建议使用rpm命令删除,非必要不推荐删除。
删除软件包:
[root@linux-87-01 ~]# rpm -e zabbix-agent2
-e :erase
3、yum安装方式
yum是红帽系列系统中默认的软件包管理器。
推荐安装命令补全增强工具:
[root@linux-87-01 ~]# yum install -y bash-completion bash-completion-extras
3.1 命令详解
增: yum install -y 软件
查: yum provides 内容
yum search all 内容
yum repolist 查看源列表
删: yum remove 软件
yum clean all :删除缓存
改: yum update/upgrade
选项:-y ,遇到有yes/no的时候,选择yes
3.2 增-安装
yum安装软件
#比如安装tree
[root@linux-87-01 ~]# yum install -y tree
#重新安装
[root@linux-87-01 ~]# yum reinstall -y tree
#安装tldr:
[root@linux-87-01 ~]# yum install -y tldr
已下载好的rpm包,使用yum安装:
yum localinstall -y xxxx.rpm
3.3 查
查询某个命令属于哪个软件包,查询某个依赖属于哪个软件包
#查询某个软件
[root@linux-87-01 ~]# yum list | grep tree
#查询ip命令属于哪个软件包
[root@linux-87-01 ~]# yum provides ip
#查询libpcre2-8.so.0属于哪个软件包
[root@linux-87-01 ~]# yum provides libpcre2-8.so.0
#或者:
[root@linux-87-01 ~]# yum search all libpcre2-8.so.0
#查看软件仓库的所有软件:
[root@linux-87-01 ~]# yum list
查看yum源信息:
[root@linux-87-01 ~]# yum repolist
3.4 删
尽量不要使用yum命令删除软件
删除命令:yum remove 软件
注意,会删除相关的依赖,因此,推荐使用rpm -e删除软件
3.5 改-升级
升级软件:yum update/upgrade 软件
4、tldr使用
tldr查询某个命令的用法
1、生成本地缓存
[root@linux-87-01 ~]# tldr -u
2、使用tldr,例如查看ls命令用法
[root@linux-87-01 ~]# tldr ls
5、cheat.sh使用
查看命令使用
[root@linux-87-01 ~]# curl cheat.sh
比如查看ls命令用法:
[root@linux-87-01 ~]# curl cheat.sh/ls
5、yum源配置
1、yum命令配置文件
未来在正式环境中几乎很少修改,未来也就是我们想把yum安装过的rpm包进行保存。
· 修改/etc/yum.conf配置,把keepcache=0改成1即可。
#默认是关闭缓存
[root@linux-87-01 ~]# grep 'keepcache' /etc/yum.conf
keepcache=0
yum.conf文件选项解释:
keepcache =0:关闭缓存,软件下载安装后自动删除rpm包
=1:开启缓存,软件下载安装后保留rpm包(自建yum源)
cachedir yum下载软件包的缓存目录,/var/cache/yum/$basearch/$releasever/
logfile yum命令的记录, /var/log/yum.log
2、yum源
yum源,就是yum从哪里下载安装软件。目前yum源有阿里云、腾讯、华为、清华大学、中国科技大等开源镜像站。
yum源的配置文件:/etc/yum.repos.d/目录中以.repo结尾的文件
查看系统正在使用的yum源列表:
[root@linux-87-01 ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,785
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 515
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 4,926
repolist: 29,298
[root@linux-87-01 ~]#
base、extras、updates的源是系统默认的。
epel:Extra Packages for Enterprise Linux
比如,阿里云yum镜像站:https://mirrors.aliyun.com
清华大学镜像站:https://mirrors.tuna.tsinghua.edu.cn/
系统的yum源配置文件:
[root@linux-87-01 ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo epel.repo
CentOS-Base.repo.bak CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo CentOS-x86_64-kernel.repo
[root@linux-87-01 ~]#
使用的Base、epel两个文件,其他的可以重命名或打包。比如,使用gzip打包:
#把全部repo文件就地打包
[root@linux-87-01 ~]# cd /etc/yum.repos.d/
[root@linux-87-01 yum.repos.d]# gzip *
[root@linux-87-01 yum.repos.d]# ll
total 40
-rw-r--r-- 1 root root 553 Oct 23 2020 CentOS-Base.repo.bak.gz
-rw-r--r-- 1 root root 601 Apr 27 22:55 CentOS-Base.repo.gz
-rw-r--r-- 1 root root 735 Oct 23 2020 CentOS-CR.repo.gz
-rw-r--r-- 1 root root 426 Oct 23 2020 CentOS-Debuginfo.repo.gz
-rw-r--r-- 1 root root 232 Oct 23 2020 CentOS-fasttrack.repo.gz
-rw-r--r-- 1 root root 381 Oct 23 2020 CentOS-Media.repo.gz
-rw-r--r-- 1 root root 506 Oct 23 2020 CentOS-Sources.repo.gz
-rw-r--r-- 1 root root 813 Oct 23 2020 CentOS-Vault.repo.gz
-rw-r--r-- 1 root root 272 Oct 23 2020 CentOS-x86_64-kernel.repo.gz
-rw-r--r-- 1 root root 254 Apr 27 22:55 epel.repo.gz
[root@linux-87-01 yum.repos.d]#
#再把Base、epel这两个解压即可
[root@linux-87-01 yum.repos.d]# gzip -d CentOS-Base.repo.gz
[root@linux-87-01 yum.repos.d]# gzip -d epel.repo.gz
[root@linux-87-01 yum.repos.d]# ll
total 40
-rw-r--r-- 1 root root 2523 Apr 27 22:55 CentOS-Base.repo
-rw-r--r-- 1 root root 553 Oct 23 2020 CentOS-Base.repo.bak.gz
-rw-r--r-- 1 root root 735 Oct 23 2020 CentOS-CR.repo.gz
-rw-r--r-- 1 root root 426 Oct 23 2020 CentOS-Debuginfo.repo.gz
-rw-r--r-- 1 root root 232 Oct 23 2020 CentOS-fasttrack.repo.gz
-rw-r--r-- 1 root root 381 Oct 23 2020 CentOS-Media.repo.gz
-rw-r--r-- 1 root root 506 Oct 23 2020 CentOS-Sources.repo.gz
-rw-r--r-- 1 root root 813 Oct 23 2020 CentOS-Vault.repo.gz
-rw-r--r-- 1 root root 272 Oct 23 2020 CentOS-x86_64-kernel.repo.gz
-rw-r--r-- 1 root root 664 Apr 27 22:55 epel.repo
[root@linux-87-01 yum.repos.d]#
3、yum源配置文件详解
配置文件格式如下:
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
参数解释:
[xxx]:yum源标识,命名要唯一
name:yum源的详细名称,要唯一
baseurl:yum源文件存储的位置,可以是网络地址,也可以是本地文件
enabled:是否开启该源,1表示开启,0表示关闭
gpgcheck:表示软件包gpk校验是否开启验证,1表示开启,0表示关闭
gpgkey:验证文件的位置
failovermethod:有两个值可以选择,priority是默认值,表示从列出的baseurl中顺序选择镜像服务器地址,roundrobin表示在列出的服务器中随机选择
案例01:增加1个nginx的源配置文件
nginx官网:http://nginx.org/en/download.html
最新稳定版为1.24.0
配置文件如下:
#在/etc/yum.repos.d目录中创建nginx-stable.repo文件
[root@linux-87-01 yum.repos.d]# cat > nginx-stable.repo << EOF
> [nginx-stable]
> name=nginx stable repo
> baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
> gpgcheck=1
> enabled=1
> gpgkey=https://nginx.org/keys/nginx_signing.key
> module_hotfixes=true
>
> [nginx-mainline]
> name=nginx mainline repo
> baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
> gpgcheck=1
> enabled=0
> gpgkey=https://nginx.org/keys/nginx_signing.key
> module_hotfixes=true
> EOF
[root@linux-87-01 yum.repos.d]#
6、Ubuntu系统软件包管理
apt源
apt/apt-get —> yum
dpkg —> rpm
Ubuntu的软件包为deb格式
1、配置源
apt源一般放在一个文件中,名为:/etc/apt/sources.list
系统版本:
test@my-ubuntu-server:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
系统版本是20.04
清华大学镜像站源:
配置清华大学源
#修改源之前,要备份
root@my-ubuntu-server:~# cp /etc/apt/sources.list /etc/apt/sources.list.bak
#配置源为清华大学的
root@my-ubuntu-server:~# vim /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
安装测试:
root@my-ubuntu-server:~# apt install tree
Reading package lists... Done
Building dependency tree
Reading state information... Done
No apt package "tree", but there is a snap with that name.
Try "snap install tree"
E: Unable to locate package tree
root@my-ubuntu-server:~#
提示:错误。配置好源后,要手动更新缓存:apt update
root@my-ubuntu-server:~# apt update
Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock. It is held by process 3159 (apt-get)
N: Be aware that removing the lock file is not a solution and may break your system.
E: Unable to lock directory /var/lib/apt/lists/
root@my-ubuntu-server:~#
提示错误,3159进程已经运行,所以,手动终止进程:
root@my-ubuntu-server:~# kill -9 3159
#再重新更新缓存
更新完缓存之后,就可以安装软件了(如果清华源用不了,就用阿里云等其他源)。
这里演示安装tree 、cmatrix、 lolcat软件
root@my-ubuntu-server:~# apt install -y tree cmatrix lolcat
lolcat命令:
2、查看软件包
检查软件包是否安装的命令:dpkg
选项:
-l 查看
-r 删除
查看软件包:
root@my-ubuntu-server:~# dpkg -l | grep tree
删除软件包:
root@my-ubuntu-server:~# dpkg -r cmatrix
3、Ubuntu与红帽系统
Ubuntu(debian)与红帽系统检查软件命令对比