一、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=1installonly_limit=3clean_requirements_on_remove=Truebest=Trueskip_if_unavailable=False

yum/dnf仓库缓存

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

例:Centos8上dnf缓存目录

[root@Cenos8 ~]# ll /var/cache/dnf/total 23740drwxr-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.solvdrwxr-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.solvdrwxr-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.jsondrwxr-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命令取出其目录名和基名

©著作权归作者所有:来自51CTO博客作者玩玩而已_的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Django链接mysql数据库
  2. 01-开发工具安装配置与HTML文档结构
  3. Xcode12无法安装,提示磁盘空间不足
  4. 基于Logstash+Zabbix4.4做主机登录失败监控告警
  5. NSX-T3.0.1安装
  6. VS2017使用QCustomPlot第三方库存在的问题
  7. CentOS7安装JDK包和Hadoop
  8. 你还不会安装Circos?其实就三步!!!
  9. Prometheus监控系统 之 安装部署

随机推荐

  1. Android Installation error: INSTALL_FA
  2. TextView的一些属性
  3. Android P应用显示宽高比maxAspectRatio
  4. Android调试神器stetho使用详解和改造
  5. 【Android Developer Blog】Android Stud
  6. Android高手进阶教程(五)之----Android
  7. android 组件
  8. android音乐播放器开发_开篇
  9. android ui显示技巧和注意事项
  10. 关于android的各种disk images(看过的讲a