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)与红帽系统检查软件命令对比

分类: Linux系统基础