美文网首页
9、软件仓库管理

9、软件仓库管理

作者: 一个反派人物 | 来源:发表于2020-11-08 16:39 被阅读0次

1 rpm包的格式

源码包--->编译--->二进制RPM包



rpm包文件名共分4个部分:

  1. 软件包名字
  2. 原始版本号
  3. 发行版本号,由软件打包商提供,如18.el7表示基于红帽7打包的第18个版本
  4. 软件包运行的处理器架构: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编译安装

相关文章

网友评论

      本文标题:9、软件仓库管理

      本文链接:https://www.haomeiwen.com/subject/vddlbktx.html