首页 > 其他 > 详细

软件包管理

时间:2021-03-30 20:38:12      阅读:24      评论:0      收藏:0      [点我收藏+]
一、yum和dnf

1.1工作原理

yum和dnf解决了rpm的包依赖问题。

yum:Yellowdog Update Modifer,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具,Centos8用dnf代替了yum,不过保留了yum的兼容性,配置也是相通的。

dnf:DaNdiFied,是新一代的RPM软件包管理器。DNF发行日期是2015年5月11日,DNF包管理器采用Python编写,发行许可为GPL v2。DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等。用法和yum一致。

yum/dnf是基于C/S模式。

  • yum服务器存放rpm包和相关包的元数据库
  • yum客户端访问yum服务器进行安装或查询

yum实现过程:先在yum服务器上创建yum repository(yum仓库),在仓库中事先存储了众多rpm包,以及包的相关元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装包时,会自动下载repodata中的元数据,查询元数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。

yum服务器的仓库可以有以下几种形式存在:

  • file:// 本地路径
  • http://
  • https://
  • ftp://

1.2yum/dnf客户端配置文件

yum客户端配置文件

  • /etc/yum.conf 为所有仓库提供公共配置,一般很少使用
  • /etc/yum.repos.d/*.repo 为每个仓库提供配置文件

帮助文档:man 5 yum.conf

相关变量

yum的repo配置文件中可用的变量:
$releasever:当前OS的发行版的主版本号,如:8,7,6
$basearch:系统基础平台,如:i386,x86_64
$arch:CPU架构,如:aarch64,i586,i686,x86_64
$contentdir:表示目录
$YUM0-$YUM9:自定义变量

例:Centos8上的/etc/yum.conf文件

[root@Cenos8 ~]# cat /etc/yum.conf 
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False

yum/dnf仓库缓存

/var/cache/dnf  Centos8上dnf缓存目录
/var/cache/yum  Centos7上yum缓存目录

例:Centos8上dnf缓存目录

[root@Cenos8 ~]# ll /var/cache/dnf/
total 23740
drwxr-xr-x 3 root root      22 Mar 29 20:44 appstream-a5e033d33ad24141
-rw-r--r-- 1 root root 4863188 Mar 29 20:44 appstream-filenames.solvx
-rw-r--r-- 1 root root 2206264 Mar 29 20:44 appstream.solv
drwxr-xr-x 3 root root      22 Mar 29 20:44 baseos-43708d1174dbbac2
-rw-r--r-- 1 root root 1323519 Mar 29 20:44 baseos-filenames.solvx
-rw-r--r-- 1 root root 1476012 Mar 29 20:44 baseos.solv
drwxr-xr-x 3 root root      22 Mar 29 20:44 epel-a19d7e5a690d289a
-rw-r--r-- 1 root root 7077798 Mar 29 20:44 epel-filenames.solvx
-rw-r--r-- 1 root root    1900 Mar 29 20:44 epel-presto.solvx
-rw-r--r-- 1 root root 2648587 Mar 29 20:44 epel.solv
-rw-r--r-- 1 root root 3370520 Mar 29 20:44 epel-updateinfo.solvx
-rw-r--r-- 1 root root       2 Mar 29 20:44 expired_repos.json
drwxr-xr-x 3 root root      22 Mar 29 20:44 extras-edb9f0658ab13c15
-rw-r--r-- 1 root root    1407 Mar 29 20:44 extras-filenames.solvx
-rw-r--r-- 1 root root   14619 Mar 29 20:44 extras.solv
-rw-r--r-- 1 root root       0 Mar 29 20:44 last_makecache
-rw-r--r-- 1 root root 1302528 Mar 29 20:44 packages.db

1.3yum命令

yum用法:

格式:yum [OPTION] [COMMAND] [package...]
选项 说明
-y 自动回答yes
-q 静默模式,不显示安装信息
--nogpgcheck 禁止gpgcheck
--enablerepo=repoid 临时启用此处指定的repo,支持通配符,如:“*”
--disablerepo=repoid 临时禁用此处指定的repo
命令 说明
repolist [all | enabled | disabled] 显示仓库列表
list 显示程序包
install 安装程序包
remove 卸载程序包
info 查询程序包,可使用通配符模糊查询
provides 查询某个命令是由哪个包提供的
history 查看yum安装日志

1.4实例

自建yum仓库,分别为网络源和本地源。

  • 网络源

    1. 在/etc/yum.repos.d/目录下创建Base.repo文件

      技术分享图片

    2. 在/etc/yum.repos.d/目录下创建Epel.repo文件

      技术分享图片

    3. 在/etc/yum.repos.d/目录下创建Extras.repo文件

      技术分享图片

  • 本地源

    这里我们通过httpd服务创建基于http的自建yum仓库,本例中为了方便,创建Centos8的系统仓库时直接使用光盘文件作为Base和Appstream源,规划两台机器分别作为yum客户端(IP:10.0.0.201)和自建yum仓库服务器(IP:10.0.0.202)。实际中,配置yum仓库服务器,一般将包和元数据下载到主机中保存,由于epel源包太大,所以选择小一点的extras源作为演示。

    1. 在yumserver上安装httpd服务并启动,作为yum仓库服务器

      技术分享图片

    2. 在yumserver上的/var/www/html/目录下创建centos8目录,并将光盘挂载到centos8目录中

      技术分享图片

      用浏览器查看yumserver上的文件

      技术分享图片

    3. 在yumclient上做yum客户端配置,编辑生成/etc/yum.repo.d/Base.repo文件

      技术分享图片

    4. 下载清华大学的extras源,制作私有yum源

      技术分享图片

      用浏览器查看yumserver主机上的extras源

      技术分享图片

    5. 在yumclient上做yum客户端配置,编辑生成/etc/yum.repo.d/extras.repo文件

      技术分享图片

    6. 在yumclient上安装一个xz压缩工具作为测试

      技术分享图片

    二、源码编译安装

    2.1源码编译简介

    程序包编译安装一般都会有以下几个过程:

    源代码--->预处理--->编译--->汇编--->链接--->执行

    有很多开源软件都会打包成rpm包供人们使用,但并不是所有软件都会打成包,如果使用没有打成包的开源软件,就需要自己下载源码进行编译安装。此外还有一个原因就是rpm包的安装路径和软件特性在打包时就已经指定,如果想要自定义安装路径或使用软件的某些特性,这时也需要进行源码编译安装。

    2.2源码编译安装过程

    C、C++的源码编译,使用make项目管理器;java的源码编译使用maven。源码编译安装前可以查看README,INSTALL获取安装帮助。

    C语言源代码编译安装过程:

    • 执行源码包里面的configure脚本(./configure)

    通过选项传递参数,指定安装路径、启用特性等。

    执行时使用Makefile.in文件作为模板生成Makefile文件。

    检查依赖的外部环境,如依赖的软件包。

    • make

    根据Makefile文件,进行构建应用程序,同样会检测依赖到的环境。

    • make install

    根据前面指定的路径,复制文件到相应路径。

    2.3实例

    源码编译安装httpd2.4.46。

    1. 下载httpd-2.4.46.tar.gz包,并安装编译httpd的相关工具包。

      技术分享图片

      [root@centos8 ~]#dnf -y install gcc make apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config
    2. 解压缩后进入解压后的包目录,可以查看README和INSTALL文件中的说明和安装帮助。

      [root@centos8 ~]#tar -xvf httpd-2.4.46.tar.gz -C /usr/local/src

      技术分享图片

    3. 运行configure脚本,生成Makefile文件。指定安装路径/app/httpd2.4.46,启用ssl协议。

      技术分享图片

    4. 编译并安装

      [root@Centos8 httpd-2.4.46]#make && make install

      编译安装完成后的结果如图:

      技术分享图片

    5. 配置环境并运行

      技术分享图片

    6. 指定apache用户运行httpd服务

      创建系统用户apache

      [root@centos8 ~]#useradd -r -u 48 -s /sbin/nologin -c apache -d /var/www apache

      修改httpd配置文件

      技术分享图片

    7. 重启服务并验证

      技术分享图片

    三、sed命令回顾

    1. 利用sed 取出ifconfig命令中本机的IPv4地址

      技术分享图片

    2. 删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

      技术分享图片

    3. 处理/etc/fstab路径,使用sed命令取出其目录名和基名

      技术分享图片

软件包管理

原文:https://blog.51cto.com/15092752/2677657

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!