两个常用的软件包管理工具
RPM 和 DPKG
distribution代表 管理机制 使用指令 在线升级指令
Red Hat/CentOS RPM rpm,rpmbuild yum
Debian/Ubuntu DPKG dpkg apt-get
RPM
RPM 全名是 RedHat Package Manager
httpd-2.4.6-67.el7.centos.x86_64.rpm
| | | | | | |
| | | | | | |___.rpm-------软件包后缀名,一般为 *.rpm 或 *.src.rpm
| | | | | |________.x86_64----适用硬件平台,一般为 x86_64、i386 等
| | | | |_______________.centos----适用操作系统,noarch为通用版本
| | | |_____________________.el7-------发行商版本号,el5为CentOS5与HREL5以下使用
| | |________________________.67--------编译版本号,表示第几次编译
| |_____________________________.2.4.6-----软件版本号,分别为:主版本号.次版本号.修正号
|___________________________________.httpd-----软件包名称
SRPM
是 Source RPM 的意思,也就是这个 RPM 档案里面含有原始码,扩展名为***.src.rpm
为何说 CentOS 是『社群维护的企业版』呢? Red Hat 公司的 RHEL 发布出后,连带会将 SRPM 发布出来。
社群的朋友就将这些 SRPM 收集起来幵重新编译成为所需要的软件,再重复释出成为 CentOS,所以才能号称与 Red Hat 的 RHEL 企业版同步啊!真要感谢 SRPM !如果想要理解 CentOS 是如何编译一支程序的, 也能够透过学习 SRPM 内含的编译参数,来学习的啊!
rpm包的管理
rpm -qa | grep 软件包名 //查询系统已安装的软件
rpm -ql 软件包名 // 列出所有的已安装文件
rpm -qc 软件包名 // 列出配置文档
rpm -qi 查询已安装软件包的信息
rpm -V 校验已安装到系统中的文件的改动情况
-V 后的值:
5 md5校验值
S 文件大小
L 链接文件
T 文件的创建时间
D 设备文件
U 文件的所属主
G 文件的所属组
M 文件的权限
yum
YUM 是Yellow dog Updater Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke开发团队进行改进,遂有此名。yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件池,但必须包含rpm的header, header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。它能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。自己本身也可以做yum服务器,本身可以根据光盘镜像做yum服务器
yum provides tre* //查询由哪个软件提供的
关于配置文件
配置文件路径: /etc/yum.conf
我们通过配置文件的设置,可以把从远程仓库安装的软件保存到本地
cachedir 设置缓存软件到本地的路径
keepcache 设置是否保存缓存的软件包,0 不保存, 1 保存
假如想把已安装好的软件包保存到本地,需要设置 keepcache=1
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
pid文件
/var/run/yum.pid
这个文件在每次使用 yum 命令时被创建,正常安装软件结束后被删除。
有时候非正常退出 yum install 命令时,这个文件会保留,并且里面写入了本次 yum install 命令的进程号。
因为 YUM 是单进程的,就是每次只能运行一个 yum install 命令, 所以假如上次的命令没有正常结束,本次的命令就无法执行,此时就会报错,解决方法就是删除 /var/run/yum.pid 文件后,重新执行 yum install 命令
YUM 源配置文件
/etc/yum.repos.d
ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo docker-ce.repo
CentOS-Debuginfo.repo CentOS-Sources.repo
在这个目录下存放了可以使用的软件包仓库的地址等信息,都是以 .repo 结尾的文件。
文件内容:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[base] 代表软件库的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的软件库名称
name 为库的名称,自定义但不需要太长
mirrorlist=:列出这个软件库可以使用的软件仓库的URL列表,如果不想使用,可以注解到这行;
baseurl=:这个最重要,因为后面接的就是软件库的实际网址! mirrorlist 是由 yum 程序自行去查找仓库URL, baseurl 则是指定固定的一个软件库URL!
baseurl 支持的传输协议,可以为
file://
ftp://
http://
https://
enabled 为是否启用库 1 代表启用;0 代表关闭
gpgcheck 为检查软件包的签名,1 为检查;0 为不检查
gpgkey 数字签名的公钥位置
一些基本用法
# 安装软件
[root@localhost ~]# yum -y install httpd # -y表示后面的交互式询问默认选为yes
# 更新所有软件(包括内核)
[root@localhost ~]# yum update
# 升级指定软件
[root@localhost ~]# yum update httpd
# 列出所有可更新的软件
[root@localhost ~]# yum check-update
# 列出所有可安装的软件清单
[root@localhost ~]# yum list
# 查找软件包
[root@localhost ~]# yum search httpd
# 删除软件包
[root@localhost ~]# yum remove httpd
# 清理yum的缓存
[root@localhost ~]# yum clean all
# 生成yum的缓存
[root@localhost ~]# yum makecache
自建 YUM 源(仓库),基于光盘镜像的 YUM 源
Packages :自带RPM包 # 重点
repodata :YUM源数据库 # 重点
在光盘镜像中还存放着一个repodata目录,这个目录下存放的yum源的数据库文件,也可以理解为这里记录了软件包的互相依赖关系。只要把光盘镜像挂载到服务器上,然后配好yum源为挂载的镜像,当使用yum安装软件的时候yum就会到这个目录下面去查询数据库,然后再到Packages目录下去拿rpm包进行安装,所以简单理解可以说repodata是记录Packages目录下所有 rpm 包的数据库
基于本地磁盘配置yum源
可扩展性强,就是可以向本地的仓库添加其他的 rpm 软件包
会占用本地的磁盘空间,只可以对本机提供 YUM 服务。
先在/目录下创建一个iso的空目录(不要在空目录内存放东西!目录名称可自定义)
1.1 [root@localhost ~]# mkdir /iso将光盘镜像挂载到刚刚创建的/iso目录
[root@localhost ~]# mount /dev/cdrom /iso/
mount: /dev/sr0 写保护,将以只读方式挂载将原有的yum源文件移走备份
[root@shark ~]# mkdir /etc/yum.repos.d/back
[root@shark ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/back/
配置yum源
[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Local-ISO.repo
[cdrpm]
name=cdrpm
baseurl=file:///iso
enabled=1
gpgcheck=0清理缓存并缓存新的数据
[root@localhost ~]# yum clean all && yum makecache
基于 FTP 文件传输协议的 YUM 源
可扩展性强,可以向互联网上的任意主机提供 YUM 服务,前提是 互联网上的主机可以访问到 FTP Server
会占用 FTP Server 的磁盘空间
getenforce //获取防火墙状态
vim /etc/selinux/config //修改linux内核中防火墙的信息
image.png
systemctl stop firewalld
setenforce 0 //关了防火墙
1.先安装 FTP Server 软件
可以是任意能提供 FTP 服务的软件,这里使用的是 VSFTPD
yum install vsftpd -y
2.保证下面的选项在配置文件中是打开的,一般是默认值
配置文件: /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
3.启动服务,并检查监听端口
20端口传输数据
21端口传输控制信号
systemctl start vsftpd
[root@shark ftp]# ss -ntal |grep 21
LISTEN 0 1024 127.0.0.1:9121 *:*
LISTEN 0 32 :::21 :::*
4.拷贝数据包到 FTP Server 的根目录下的指定文件夹下
这里为了演示方便,可以直接拷贝 ISO 光盘镜像中的数据包目录到 /var/ftp/ftpYum/ 目录下
实验环境
FTP server 地址 127.0.0.1
FTP server 根目录 /var/ftp
rpm 软件包存放的目录是 /var/ftp/ftpYum/Packages
我们计划把创建的 源数据目录 repodata 放在 /var/ftp/ftpYum 下
这个可以使用 -o 选项实现, o 是小写字母的 o
4.拷贝光盘上的软件包目录到 /var/ftp/ftpYum/ 下
mkdir /var/ftp/ftpYum
mount /dev/cdrom /media
cp -a /media/Packages/ /var/ftp/ftpYum/
createrepo /var/ftp/ftpYum/ //将依赖包安装到与Packages同一目录下
[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Local-ISO.repo
[cdrpm]
name=cdrpm
baseurl=file://127.0.0.1/ftpYum
enabled=1
gpgcheck=0
yum clean all &&yum makecache
yum remove tree
yum install -y tree
[闫哥笔记]
(https://www.jianshu.com/p/9188afa43cfd
)