1 rpm包的格式
源码包--->编译--->二进制RPM包
rpm包文件名共分4个部分:
- 软件包名字
- 原始版本号
- 发行版本号,由软件打包商提供,如18.el7表示基于红帽7打包的第18个版本
- 软件包运行的处理器架构:x86_64(64位)、i686(32位)、noarch(无要求)、aarch64(64位arm)
2 rpm
2.1 安装
命令rpm -ivh rpm文件全名
rpm -ivh rpm文件全名
[root@node1 Packages]$ rpm -ivh httpd-2.4.6-90.el7.centos.x86_64.rpm
2.2 卸载
命令rpm -e 软件包名
命令rpm -e --nodeps 软件包名
不检查包的依赖性,相比yum remove
,更推荐这种方式
2.3 查询软件包的信息
rpm -qi 软件包名字
查询软件包信息
rpm -qa
查询所有已经安装的软件包名
rpm -ql 已安装软件包名
查询软件包安装的所有文件
rpm -qc 已安装软件包名
查询软件包配置文件信息
[root@node1 ~]$ rpm -qc ntp
/etc/ntp.conf
/etc/ntp/crypto/pw
/etc/sysconfig/ntpd
rpm -qf file路径信息
查询哪个已安装的软件包含file文件
[root@node1 ~]$ rpm -qf /usr/bin/virsh
libvirt-client-4.5.0-33.el7_8.1.x86_64
rpm -q --scripts 已安装软件包名
查询软件包安装的脚本信息,通常用来检测是否有恶意脚本
rpm -qp --scripts rpm文件名
查询rpm文件的脚本信息,通常用来检测是否有恶意脚本
[root@node1 ~]$ rpm -q --scripts libvirt-client
postinstall scriptlet (using /bin/sh):
/sbin/ldconfig
if [ $1 -eq 1 ] ; then
# Initial installation
systemctl preset libvirt-guests.service >/dev/null 2>&1 || :
fi
preuninstall scriptlet (using /bin/sh):
.......
rpm -ql 已安装软件包名 | grep systemd
查看安装的软件包生成的服务名
[root@node1 ~]$ rpm -ql ntpdate | grep systemd
/usr/lib/systemd/system/ntpdate.service
3 yum
yum install 软件包名
yum remove 软件包名
yum reinstall 软件包名
yum update [软件包名]
不加参数更新所有软件包
yum info 软件包名
查询软件包信息
yum list available
查询所有未安装的软件包
由于软件有依赖关系,remove
卸载被依赖的软件时会提示是否卸载有依赖关系的软件,可能会造成不可挽回的损失,不要加-y
参数
3.1 yum源配置
yum仓库的配置文件在/etc/yum.repos.d/
下,仓库文件必须以.repo
结尾,配置示例如下
[test]
name=Red Hat 7
baseurl=http://192.168.1.1/repo
#baseurl=file:///media
enabled=1
gpgcheck=1
gpgkey=http://192.168.1.1/repo/RPM-GPG-KEY-CentOS-7
# [仓库的名称]
# name=仓库的描述
# baseurl=软件包所在位置,可以以http://开头,也可以file://开头
# enabled=1启用,0禁用
# gpgcheck=1检查完整性,0不检查
# gpgkey=公钥的位置
RPM包数字签名
软件包一般都使用数字签名,用私钥加密签名,公钥解密签名,RPM配搭的gpgkey就是解密的公钥,如果解密成功证明软件包是完成的,没有被篡改。
3.2 配置阿里云yum源
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
3.3 yum源配置检查
使用yum安装软件前,最好坐下yum源配置检查,步骤如下。
清除yum缓存
yum clean all
检查yum源,软件包后面带@符号的代表已经安装,不带@的代表在哪个软件仓库(base、update、test等)中
yum list all
[root@node1 mnt]$ yum list all | less
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.neusoft.edu.cn
* centos-qemu-ev: mirrors.neusoft.edu.cn
* elrepo: mirrors.neusoft.edu.cn
* extras: mirrors.neusoft.edu.cn
* updates: mirrors.neusoft.edu.cn
Installed Packages
GConf2.x86_64 3.2.6-8.el7 @base
GeoIP.x86_64 1.5.0-14.el7 @anaconda
ModemManager.x86_64 1.6.10-3.el7_6 @base
ModemManager-glib.x86_64 1.6.10-3.el7_6 @base
NetworkManager.x86_64 1:1.18.4-3.el7 @base
NetworkManager-adsl.x86_64 1:1.18.4-3.el7 @base
NetworkManager-bluetooth.x86_64 1:1.18.4-3.el7 @base
NetworkManager-glib.x86_64 1:1.18.4-3.el7 @base
3.4 repodata
repodata文件夹下的文件,为Packages中软件包的数据库,记录软件包的信息及依赖关系,供yum安装时读取所用。
所以yum仓库的配置位置应该为repodata所在的文件夹!
repodata也可以自行创建,当需要根据软件包自行创建数据库时
createrepo -v rpm包所在路径 或 rpm包文件夹所在路径
3.5 groupinstall
以组的形式安装一整套软件包
yum group install "组名"
以组的形式卸载一整套软件包
yum group remove "组名"
4 查询命令与包的对应关系
yum provides "*/命令"
,一般命令在/usr/bin/
目录下,找这个目录下的对应信息
yum provides "*/vim"
[root@node1 tmp]$ yum provides "*/vim"
......
2:vim-enhanced-7.4.629-6.el7.x86_64 : A version of the VIM editor which includes recent enhancements
Repo : base
Matched from:
Filename : /usr/bin/vim
5 编译安装软件
5.1 下载源码包,解决依赖关系
5.2 解压下载好的软件,进入软件目录
5.3 编译安装三部曲
5.3.1 进行配置操作
./configure
后面接配置参数
常见参数:
--prefix=PATH #指定程序安装路径
--user=USER #设置一个虚拟用户管理worker进程
--group=GROUP #设置一个虚拟用户组管理worker进程
--with XXX #包含哪些模块
--without XXX #去除哪些模块
5.3.2 进行软件编译过程
make
编译
5.3.3 编译安装过程
make install
编译安装
网友评论