Lupinus

Re:从零开始的go学习生活(`・ω・´)

0%

[软件包管理]

RPM包管理

什么是rpm包?

rpm全称RedHat Package Manager缩写,由红帽开发用于软件包的安装、升级、卸载与查询

rpm包名组成部分

15621427002419

1
2
3
4
5
6
7
#tree-1.6.0-10.el7.x86_64.rpm 
tree:软件名称
1.6.0:版本号
10:该版本的发布次数
el7:适用系统版本(RedHat7,CentOS7)向下兼容
x86_64:系统平台64位 x86:32位 i386
rpm:后缀名

安装包的类型

分类 安装 版本
rpm包 编译好的源码包,下载下来后,直接使用rpm命令安装,安装简单 软件版本偏低
源码包 先编译,将源代码翻译成系统认识的软件,再安装,安装繁琐 软件版本随意
二进制包 解压即可使用,安装简单 不能修改源码
系统平台 包类型 工具 自动解决依赖
RedHat/Centos RPM rpm yum
Ubuntu/Debian DPKG dpkg apt

RPM包获取途径

系统光盘镜像:CentOS官网

RPM查询:RPM官网

挂载mount

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#挂载语法 
mount 源设备文件 目标路径

#示例
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
#查看磁盘分区、使用情况、挂载设备及目录
[root@localhost ~]# df -h
/dev/sr0 4.3G 4.3G 0 100% /mnt

#挂载报错
[root@ yjc ~ ] # mount /dev/cdrom /mnt
mount: no medium found on /dev/sr0
原因:设备文件是空的,里面没有任何内容,光驱没有连接

#卸载语法
umount 目标路径

#示例
[root@localhost ~]# umount /mnt

#卸载报错
[root@localhost mnt]# umount /mnt
umount: /mnt: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
[root@localhost mnt]# cd
[root@localhost ~]# umount /mnt
原因:设备繁忙

#查看基础包
[root@localhost ~]# ll /mnt/Packages/ | grep 'zip'
-rw-rw-r-- 1 root root 53120 Nov 25 2015 bzip2-1.0.6-13.el7.x86_64.rpm
-rw-rw-r-- 1 root root 223224 Nov 25 2015 bzip2-devel-1.0.6-13.el7.x86_64.rpm
-rw-rw-r-- 1 root root 40740 Nov 25 2015 bzip2-libs-1.0.6-13.el7.x86_64.rpm
-rw-rw-r-- 1 root root 132636 Apr 25 2018 gzip-1.5-10.el7.x86_64.rpm
-rw-rw-r-- 1 root root 49644 Jul 4 2014 libzip-0.10.1-8.el7.x86_64.rpm
-rw-rw-r-- 1 root root 33172 Jul 4 2014 perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm
-rw-rw-r-- 1 root root 173704 Apr 25 2018 unzip-6.0-19.el7.x86_64.rpm
-rw-rw-r-- 1 root root 266160 Nov 21 2016 zip-3.0-11.el7.x86_64.rpm
-rw-rw-r-- 1 root root 83872 Nov 12 2018 zziplib-0.13.62-9.el7.x86_64.rpm

rpm命令-安装

选项 说明
-i 安装
-v 显示安装的过程
-h 显示安装的进度条
–test 仅测试,不安装
–force 强制安装
–nodeps 忽略依赖关系
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#语法: 
rpm [options] rpm包名

#rpm包名
-本地包名:在系统中某个目录下的rpm包
-远程包名:不用下载,直接使用网站上的rpm包

#示例
#卸载tree命令
[root@localhost ~]# yum remove -y tree
#安装-i
[root@localhost ~]# rpm -i /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
#显示安装过程-v
[root@localhost ~]# rpm -iv /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
Preparing packages... tree-1.6.0-10.el7.x86_6
#显示安装进度条-h
[root@localhost ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:tree-1.6.0-10.el7 ################################# [100%]
#测似安装--test
[root@localhost Packages]# rpm -ivh --test tree-1.6.0-10.el7.x86_64.rpm
Preparing... ################################# [100%]
#强制--force --nodeps
[root@localhost Packages]# rpm -ivh --force --nodeps samba-4.8.3-4.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:samba-0:4.8.3-4.el7 ################################# [100%]

ps:rpm命令管理rpm包的缺点,无法解决依赖关系

#阿里云镜像源安装
[root@localhost ~]# rpm -ivh https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/zip-3.0-11.el7.x86_64.rpm

rpm命令-查询

选项 说明(配合以下选项使用)
-q 查看指定的安装包是否安装
-p 查询未安装的包相关信息(需要系统存在这个包)
选项 说明
-a 全部安装过的包
-i 详细信息
-l 列出rpm包相关的配置文件和目录
-c 只查看该软件包相关的配置文件
-d 只查看该软件的帮助文档文件
-f 反向查找,根据配置文件,目录,帮助文档,查找该文件属于哪个包
–scripts 查看安装包,安装之前之后,和卸载之前之后要执行的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#语法 
rpm [options] rpm包名

#示例
[root@localhost Packages]# rpm -q vim-common vim-common-7.4.629-8.el7_9.x86_64
#查看所有安装过的包-a
[root@localhost ~]# rpm -qa
[root@localhost ~]# rpm -qa | grep 'net'
#查看软件包的详细信息-i
[root@localhost Packages]# rpm -qi $(rpm -qa|grep 'net')
[root@localhost Packages]# rpm -qa | grep 'net' | xargs rpm -qi
#查看软件包的相关文件-l
[root@localhost Packages]# rpm -ql zip
#查看软件包的相关配置文件-c
[root@localhost ~]# rpm -qc mariadb
/etc/my.cnf.d/client.cnf
[root@localhost ~]# rpm -qc mariadb-server
/etc/logrotate.d/mariadb
/etc/my.cnf.d/server.cnf
/var/log/mariadb/mariadb.log
#查看软件包的帮助文档
[root@localhost ~]# rpm -qd zip
#查看命令所属的软件包
[root@localhost ~]# rpm -qf /etc/hostname
systemd-219-62.el7.x86_64
[root@localhost ~]# rpm -ql systemd | gerp 'bin'
#p选项
-qip:查看没有安装包的详细信息(指定一个已存在的完整包名或者远程包名)
-qlp:查看没有安装包会生成那些文件(指定一个已存在的完整包名或者远程包名)
-qcp:查看没有安装包会生成哪些配置文件(指定一个已存在的完整包名或者远程包名)
-qdp:查看没有安装包会生成哪些帮助文件(指定一个已存在的完整包名或者远程包名)
[root@localhost ~]# rpm -qip https://mirrors.aliyun.com/epel/7/x86_64/Packages/n/nginx-1.20.1-9.el7.x86_64.rpm
[root@localhost ~]# rpm -qlp https://mirrors.aliyun.com/epel/7/x86_64/Packages/n/nginx-1.20.1-9.el7.x86_64.rpm
[root@localhost ~]# rpm -qcp https://mirrors.aliyun.com/epel/7/x86_64/Packages/n/nginx-1.20.1-9.el7.x86_64.rpm
[root@localhost ~]# rpm -qcd https://mirrors.aliyun.com/epel/7/x86_64/Packages/n/nginx-1.20.1-9.el7.x86_64.rpm

#报错
[root@localhost ~]# rpm -q ifconfig
package ifconfig is not installed
原因:需要知道命令隶属的包

rpm命令-更新

选项 说明
-U 老版本不存在,则安装;如果老版本存在则升级
-f 必须有老版本存在
1
2
3
4
5
6
7
8
9
#安装nginx的包(1.10版本)
[root@localhost ~]# rpm -ivh nginx-1.10.0-1.el7.ngx.x86_64.rpm
#查询当前系统中安装nginx的包
[root@localhost ~]# rpm -qa | grep nginx
nginx-1.10.0-1.el7.ngx.x86_64
#使用Uvh安装,会将已存在的老版本卸载,升级成新1.12版本
[root@localhost ~]# rpm -Uvh nginx-1.12.0-1.el7.ngx.x86_64.rpm
#查看当前系统中的nginx版本为升级后的1.12版本
[root@zls ~]# rpm -qa | grep nginx nginx-1.12.0-1.el7.ngx.x86_64

rpm命令-卸载

选项 说明
-e 后面接卸载的包名即可
1
2
3
4
5
6
7
8
[root@zls ~]# rpm -qa | grep nginx nginx-1.12.0-1.el7.ngx.x86_64 
[root@zls ~]# rpm -e nginx
[root@zls ~]# rpm -qa | grep nginx
[root@zls ~]# rpm -qa | grep mariadb
mariadb-5.5.68-1.el7.x86_64
mariadb-server-5.5.68-1.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64
[root@zls ~]# rpm -e $(rpm -qa | grep mariadb)

镜像站地址

yum管理工具

什么是yum?

yum 也是一种 rpm 包管理工具,相比于rpm命令,优势是可以自动解决依赖关系

自动解决依赖关系前提条件,你的yum源中要有这些依赖包

什么是yum源?

yum源:可以理解为手机中的应用商店

yum源其他名称:镜像站、yum仓库、rpm仓库

配置yum源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#使用阿里云的yum源 
http://mirrors.aliyun.com

#系统中需要的基础yum源
base源:和镜像中的Linux基础rpm包差不多
epel源:一些扩展安装包

#yum源配置文件目录
/etc/yum.repos.d/

#1.使系统yum源失效
[root@localhost ~]# gzip -r /etc/yum.repos.d/
#2.下载Base源
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#3.下载epel源
[root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@localhost ~]# ll /etc/yum.repos.d/
-rw-r--r-- 1 root root 0 Apr 21 16:22 CentOS-Base.repo
-rw-r--r-- 1 root root 664 Dec 26 2020 epel.repo

注意:在/etc/yum.repos.d/目录下所有的yum源配置,必须以.repo结尾

查看linux版本

1
2
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

nginx安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#安装nginx服务,使用nginx官方yum源
[root@localhost ~]# vim /etc/yum.repos.d/nginx.repo
[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

yum查询软件包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#查询所有仓库软件包
[root@localhost ~]# yum list
#查询系统中已安装的软件包
[root@localhost ~]# yum list installed
#过滤yum仓库中是否有wget包
[root@localhost ~]# yum list | grep wget

#查看指定包的详细信息
[root@localhost ~]# yum info wget
#查看yum仓库中,所有安装包的详细信息
[root@localhost ~]# yum info

#查询互联网中所有软件包存在的某个命令
[root@localhost ~]# yum provides nginx
[root@localhost ~]# yum provides ifconfig
##该命令隶属于的包名
net-tools-2.0-0.25.20131004git.el7.x86_64 : Basic networking tools
##该命令隶属于的仓库
Repo : @base
Matched from:
##装完后,命令会在/usr/sbin下叫ifconfig
Filename : /usr/sbin/ifconfig
#根据命令查找属于哪个安装包,最好写命令的绝对路径
[root@localhost ~]# yum provides */ifconfig

#查看启用/禁用的软件包
[root@localhost ~]# yum list all

yum安装软件包

yum安装方式:

  • 本地安装
1
2
#前提该包已经下载在服务器上
yum localinstall -y 包名
  • yum源安装
1
yum install -y tree
  • 网站安装
1
yum install -y http://test.driverzeng.com/Nginx_package/nginx-1.12.2- 3.el7.x86_64.rpm

注意:自动解决依赖关系的前提条件,在你的所有yum源中都要有该软件的依赖包

yum重装软件包

1
2
3
4
yum reinstall -y 包名 
作用:误删除了该服务相关的任何一个文件,使用reinstall都可以恢复,但是恢复的是最初始的配置

reinstall的方式,必须跟最开始安装这个包的方式保持一致

yum更新软件包

1
2
3
4
5
#查看当前系统中,有哪些软件是可以更新的 
[root@localhost ~]# yum check-update

#更新指定的软件包
[root@localhost ~]# yum update -y zlib

yum卸载软件包

1
2
[root@localhost ~]# yum remove 包名 -y
[root@localhost ~]# yum erase 包名 -y

yum中止软件包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#第一个端口
[root@localhost ~]# yum install -y python36-devel
#第二个端口
[root@localhost ~]# yum remove -y tree
Loaded plugins: fastestmirror
Existing lock /var/run/yum.pid: another copy is running as pid 7387.
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: yum
Memory : 24 M RSS (419 MB VSZ)
Started: Sat Apr 23 13:54:25 2022 - 00:05 ago
State : Sleeping, pid: 7387
原因:另一个yum进程正在启动
#查看yum进程
[root@localhost ~]# /var/run/yum.pid
37494
#中止进程
[root@localhost ~]# kill 进程号

yum缓存命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#清除所有的缓存 
yum clean all
#加载缓存
yum makecache

#默认情况下,yum是不会下载rpm的只会安装
#除非开启,下载的配置
[root@localhost ~]# vim /etc/yum.conf
[main] cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0 #把0改成1就是开启下载rpm

#下面是yum下载后的默认路径
[root@localhost ~]# ll /var/cache/yum/x86_64/7/
total 12
drwxr-xr-x. 4 root root 256 Apr 23 13:54 base
drwxr-xr-x 4 root root 4096 Apr 23 13:54 epel
drwxr-xr-x. 4 root root 161 Apr 23 13:54 extras
drwxr-xr-x 4 root root 254 Apr 23 13:54 nginx-stable
-rw-r--r-- 1 root root 76 Apr 23 13:55 timedhosts
-rw-r--r--. 1 root root 105 Apr 20 17:50 timedhosts.txt
drwxr-xr-x. 4 root root 161 Apr 23 13:54 updates

#下载nginx,不安装,并指定目录
yum install nginx -y --downloadonly --downloaddir=/tmp
--downloadonly:仅下载,不安装
--downloaddir:指定下载的目录

#只会清除默认路径下的rpm包
yum clean packages

yum包组管理命令

1
2
3
4
5
6
#查看有哪些包组可以安装 
yum group list
#安装包组
yum groups install 包组名字
#卸载包组
yum groups remove 包组名字

yum历史查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#显示Command line(一次性)
[root@localhost ~]# yum --setopt=history_list_view=commands history list all
-------------------------------------------------------------------------------
[root@localhost ~]# vim /etc/yum.conf
# edit file "/etc/yum.conf" ==>>> and add this line somewhere in it
history_list_view=cmds
#查看yum的历史操作
[root@localhost ~]# yum history
命令的ID 执行的命令 执行的时间 动作 操作几个包
ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
55 | install -y tree | 2022-04-22 00:10 | Install | 1
54 | install -y yum-utils | 2022-04-21 23:44 | I, U | 5

#查看某个历史操作的详细信息
yum history info ID
[root@localhost ~]# yum history info 46
[root@localhost ~]# yum history package-list tree

#撤销历史操作:一般撤销更新操作
[root@localhost ~]# yum history undo ID
[root@localhost ~]# yum history undo 55