第6章:软件包管理:软件包管理、rpm命令、yum命令

 

复制代码
软件包对于依赖库的处理方式分为2种:静态链接、动态链接
-------------------------------------------------------
链接:处理好各个模块之间相互引用的部分,使得各个模块之间能够正确地衔接。
静态链接:例如程序中会引用一些公共库,编译型开发语言在编译程序时,会将依赖的公共库完整地复制一份,并打包进程程序中
    特点:1.公共库打包进程序中;2.程序升级难,需要重新编译;3.打包了公共库,占用更多的空间,但是程序迁移方便
动态链接:
    特点:1.把依赖库做了一个动态链接,公共库未打包进程序中;2.升级相对简单;3.节省空间;4.程序迁移依赖主机环境
软件包对于依赖库的处理方式分为2种:静态链接、动态链接
复制代码
复制代码
软件包管理器、软件包的分类和拆包
=====================================================
二进程应用程序的组成部分:二进制文件、库文件、配置文件、帮助文件
程序包管理器:
    debian:deb文件,dpkg包管理器
    redhat:rpm文件,rmp包管理器(redhat package manager,RPM package manager)

系统盘的Packages目录下存放的就是各种rpm包
自动挂载方法:进入图形化界面,即自动挂载,df命令查看挂载
    例如目录路径:/run/media/username/CentOS\ 7\ x86_64/Packages/

------------------------------------------------------
包:分类和拆包(满足特定用户安装部分功能的需求,就有了包的拆分)
application-VERSION-ARCH.rpm            主包
application-devel-VERSION-ARCH.rpm      开发子包
application-utils-VERSION-ARCH.rpm      其他子包
application-libs-VERSION-ARCH.rpm       其他子包
例如:[root@yefeng Packages]# ls |grep httpd
    httpd-2.4.6-95.el7.centos.x86_64.rpm
    httpd-devel-2.4.6-95.el7.centos.x86_64.rpm
    httpd-manual-2.4.6-95.el7.centos.noarch.rpm
    httpd-tools-2.4.6-95.el7.centos.x86_64.rpm

包之间可能存在依赖关系,甚至循环依赖

包依赖管理工具:
    yum:rpm包管理器的前端工具
    apt-get:deb包管理器的前端工具
    zypper:suse上的rpm前端管理工具
    dnf:Fedore 18+ rpm包管理器的前端工具
软件包管理器、软件包的分类和拆包
复制代码
复制代码
rpm包命名方式、程序包组成
==========================================================
rpm包命名方式:name-VERSION-release.arch.rpm
例如:bash-4.2.46-19.el7.x86_64.rpm
name------------------------------------------------------------bash
VERSION = major.minor.release  与源码包VERSION相同---------------4.2.46
ARCH = release . [OS] . arch------------------------------------19.el7.x86_64
    release是指rpm的release, rpm进行编译释放后的版本--------------19(打包了19次?数字越大说明打包难度越大)
    OS指在进行编译时操作系统的类型--------------------------------el7
    arch是指编译时的硬件环境, 一般使用CPU类型指代------------------x86_64

    常见arch:
        x86:i386,i486,i586,i686
        x86_64:x64,x86_64,amd64
        powerpc:ppc
        平台无关:noarch

---------------------------------------------------------
程序包组成:(例如tree包 tree-1.6.0-10.el7.x86_64.rpm)
    1.RPM包内的文件
    2.RPM的元数据metadata,如名称、版本、依赖性、描述等等
    3.安装or卸载时运行的脚本
rpm使用者安装rpm包时, 主机中的rpm包管理软件会根据软件包里的数据库文件查看依赖软件是否满足:
    条件满足时则进行安装, 并将软件信息写入本地rpm管理软件的数据库(/var/lib/rpm目录)中, 方便后续对软件的查询,验证和升级等操作
本地rpm管理软件的数据库(/var/lib/rpm目录):保存了程序包名称、版本、依赖关系、功能说明、包安装后生成的各文件路径及校验码信息
rpm包命名方式、程序包组成
复制代码

 

复制代码
ldd命令、ldconfig命令
=============================================================================================
ldd命令:ldd可以列出一个程序所需要得动态链接库(so)、即查看指定软件包的依赖库
ldd(list, dynamic, dependencies)本身不是一个程序,而仅是一个shell脚本:ldd可以列出一个程序所需要得动态链接库(so)
    --version:打印指令版本号;
    -v:详细信息模式,打印所有相关信息;
    -u:打印未使用的直接依赖;
    -d:执行重定位和报告任何丢失的对象;
    -r:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数;
    --help:显示帮助信息。
示例:ldd /bin/ls

-------------------------------------------------------------------------------------------
ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.
    配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
    缓存文件:/etc/ld.so.cache
示例:ldconfig -p  #显示本机已经缓存的所有可用库文件名及文件路径映射关系
ldd命令、ldconfig命令
复制代码

管理程序包的方式:
1.使用包管理器rpm
2.使用前端工具yum、dnf

复制代码
程序包的来源途径
    1.系统发行的光盘、官方服务器、各种镜像服务器
        CentOS镜像
        https://www.centos.org/download/
        http://mirrors.aliyun.com
        http://mirrors.163.com
    2.项目官方站点
    3.第三方组织
    4.自己制作
    注意:第三方包建议要检查其合法性、完整性
程序包的来源途径
复制代码
复制代码
rpm2cpio命令、cpio命令
====================================
rpm2cpio言下之意就是把RPM包转化成CPIO归档档案!
    rpm2cpio package.rpm | cpio -tv #将rpm包转化为cpio格式,然后用cpio进行预览
    rpm2cpio package.rpm | cpio -idv #默认解压所有文件
    rpm2cpio package.rpm > package.cpio #把RPM包转化为cpio包,cpio包的使用范围和可用性会比RPM更广!
====================================
cpio是用来建立,还原备份档的工具程序,它可以加入,解开 cpio 或 tar 备份档内的文件。
rpm2cpio命令、cpio命令
复制代码

rpm程序包管理器命令

因为rpm命令使用环境较多, 在不同环境模式下有不同的语法格式
通用选项:
-v: 显示安装过程
-h: 以#形式显示安装进度

复制代码
rpm安装模式:-i|--install
    语法: rpm {-i|--install} [install-options] PACKAGE_FILE ...
    install-options安装选项:
        --test: 测试安装,但不真正执行安装过程;dry run模式;
        --nodeps:忽略依赖关系;
        --force:强制安装
        --replacepkgs: 重新安装;
        --replacefiles:假如A包B包都会安装一个相同文件,当检测到A包已安装,那么B包在安装时可能会遇到问题,这时可以使用replacefiles
        --nosignature: 不检查来源合法性;
        --nodigest:不检查包完整性;
        --noscript:不执行程序包脚本
            %pre:安装前脚本;--nopre
            %post:安装后脚本;--nopost
            %preun:卸载前脚本;--nopreun
            %postun:卸载后脚本;--nopostun
    常用示例:
        rpm -i PACKAGE_FILE
        rpm -ivh PACKAGE_FILE          #*****以过程和进度方式显示安装程序包(-i安装,-v详细信息,-h可读的)
        rpm -ivh --force PACKAGE_FILE  #强制安装
        rpm -ivh --replacepkgs PACKAGE_FILE   #当文件被破环,而rpm数据库显示程序已安装,可以使用--replacepkgs重新安装
rpm安装模式
复制代码
复制代码
rpm升级模式:-U|--upgrade、-F|--freshen
    语法: rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...旧版存在则进行升级; 不存在则进行安装
        rpm {-F|--freshen} [install-options] PACKAGE_FILE ...只有已安装旧版本情况下才进行对旧版本进行升级
    install-options升级选项:
        --oldpackage:降级;
        --force: 强行升级;
    升级内核建议采用安装的方式,而不要进行升级:
        即内核升级建议使用-ivh;而不是使用-Uvh,-Fvh
        linux支持多内核版本并存,在启动系统时,进行内核选择
        
    使用示例:
        rpm -Uvh PACKAGE_FILE
        rpm -Fvh PACKAGE_FILE
rpm升级模式
复制代码
复制代码
rpm查询模式-q|--query
    语法: rpm {-q|--query} [select-options] [query-options]
    作用: 用于显示程序包相关信息, 查询已安装rpm包时不需要使用版本号, 查询未安装rpm包时需要使用版本号
    select-options选择选项:
        -a: 所有包
        -f file: 查看指定的文件由哪个程序包安装生成
        -p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;
        --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供;
        --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
    query-options查询选项:
        --changelog:查询rpm包的changlog
        -c: 查询程序的配置文件
        -d: 查询程序的文档
        -i: information
        -l: 查看指定的程序包安装后生成的所有文件;
        --scripts:程序包自带的脚本片断
        -R: 查询指定的程序包所依赖的CAPABILITY;
        --provides: 列出指定程序包所提供的CAPABILITY;
    使用示例:
        rpm -qa                     #查看系统上所有已安装的包
        rpm -qa "tree"              #在系统的已安装包中进行模糊查找
        rpm -qa "tree*"              #在系统的已安装包中进行模糊查找
        rpm -q tree                 #查看指定包是否已安装,若已安装则显示安装的包名
        rpm -qf /usr/bin/tree       #查询指定文件的安装包
        rpm -ql tree                #*****查看安装tree,生成的所有文件
        rpm -q --whatprovides tree  #根据命令去查看安装包
        rpm -qi tree                #*****查看tree的安装包信息
        rpm -qpi tree-1.6.0-10.el7.x86_64.rpm   #功能同上,对象不同,这里查询对象是包
        rpm -q --script httpd       #*****查看已安装包httpd的脚本内容(不是所有的包都有脚本的!)
        rpm -qp --scripts httpd-2.4.6-95.el7.centos.x86_64.rpm  #查看未安装的rpm的脚本内容
rpm查询模式
复制代码
复制代码
rpm卸载模式-e|--erase
    语法: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
    作用: 用于卸载指定程序包
    选项: 
        --noreps: 忽略依赖关系进行卸载
    使用示例:
        rpm -e --allmatches  xxxx  #当某程序安装有多个版本,携带--allmatches则卸载所有版本
        rpm -e tree     #卸载时填写软件名
        rpm -ivh tree-1.6.0-10.el7.x86_64.rpm #安装时,填写包名称
rpm卸载模式
复制代码
复制代码
rpm校验模式、rpm包检验
=============================================================================
rpm校验模式-V|--verify
    语法: rpm {-V|--verify} [select-options] [verify-options]
    作用: 用于验证程序包完整性
    校验模式的输出字段意义:
        S: 文件的容量大小是否改变
        M: 文件的类型或文件rwx属性是否改变
        5: MD5指纹码是否改变
        D: 设备的主次代码是否改变
        L: 链接路径是否改变
        U: 文件的属主是否改变
        G: 文件的属组是否改变
        T: 文件的mtime是否改变
        P: 功能是否发生改变
    使用示例:
        rpm -V tree         #将指定程序的相关文件和rpm数据库(/var/lib/rpm)做比较,然后列出变化的项
        rpm -Va             #查询所有包的变化
=============================================================================
rpm包检验:包来源合法性验证及完整性验证
    # 使用rpm安装时需要先导入密钥, 通过 rpm --import /PATH/GPGKEY 导入软件公钥, 在通过查看和比对公钥信息来验证程序包的来源合法性
    [root@yefeng CentOS 7 x86_64]# rpm --import RPM-GPG-KEY-CentOS-7    #导入公钥;不导入该公钥,即使检查光盘文件也是not ok
    rpm -qa "gpg-pubkey"    #导入公钥后,实际上生成gpg-pubkey-f4a80eb5-53a7ff4b包
    rpm -e gpg-pubkey-f4a80eb5-53a7ff4b    #卸载包检验公钥
    [root@yefeng Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm 
    [root@yefeng Packages]# rpm --checksig tree-1.6.0-10.el7.x86_64.rpm    #包校验,--checksig功能同-K
rpm校验模式、rpm包检验
复制代码

 

复制代码
实验1:CentOS7如何修复已知公共库缺失的故障(进入CentOS7救援模式--光盘)
CentOS7救援模式--光盘:https://blog.51cto.com/1929297/2421543
人为制造故障:
    1.查看ls命令依赖的公共库
        ldd /bin/ls
    2.移动其中依赖的一个公共库
        mv /lib64/libc.so.6 libc.so.6
修复故障:
    1.启动系统时,在vmware界面提示“press F2 to enter SETUP,F12 for Network Boot,ESC for Boot Menu”。按ESC键
    2.选择 CD-ROM Drive
    3.选择Troubleshooting
    4.选择Rescue a CentOS system
    5.选择continue,系统提示centos7系统被挂载在/mnt/sysimage目录下
        1)continue:救援模式程序会自动查找系统中已有的文件系统,并可读写挂载到/mnt/sysimage目录下。
        2)Read-Only:会以只读的方式挂载已有的文件系统。
        3)Skip to shell: 手动挂载
    6.移动文件:mv /mnt/sysimage/root/libc.so.6 /mnt/sysimage/lib64/
        方法2:因为/lib64/libc.so.6其实是一个软链接文件
            cd /mnt/sysimage/lib64
            ln -sysimage lib-2.17.so libc.so.6 #注意,使用相对路径的方式创建软链接
    7.输入exit,启动自动重启并已修复
实验1:CentOS7如何修复已知公共库缺失的故障(进入CentOS7救援模式--光盘)
复制代码
复制代码
实验2:CentOS7如何修复rpm被删除的故障(进入CentOS7救援模式--光盘)
制造故障1:
    which rpm           #查询rpm命令
    rpm -qf /bin/rpm    #查询rpm命令的安装包
    rpm -ql rpm         #查询rmp包包含的文件列表
    rm -f /bin/rpm      #制造故障
修复故障方法1:
    [root@yefeng ~]# rpm2cpio /run/media/csda325/CentOS\ 7\ x86_64/Packages/rpm-4.11.3-45.el7.x86_64.rpm |cpio -idv ./bin/rpm       #rpm2cpio把RPM包转化成CPIO归档档案,解压指定文件./bin/rpm
    [root@yefeng ~]# cp ./bin/rpm /bin/    #修复
制造故障2:
    rpm -e rpm --nodeps    #忽略依赖关系卸载rpm,此时rpm2cpio也没有了
修复故障方法2:
    1.按照步骤进入到救援模式
    2.df      #我们的centos系统挂载在/mnt/sysimage目录下,光盘挂载在/run/install/repo
    3.rpm -ivh /run/install/repo/Packages/rpm-4.11.3-45.el7.x86_64.rpm --root=/mnt/sysimage
    4.chroot /mnt/sysimage          #切根,进行rpm测试

    个人理解,在救援模式下,默认/是光盘镜像系统的/;进入切根操作后(chroot /mnt/sysimage ),才切换到系统/
实验2:CentOS7如何修复rpm被删除的故障(进入CentOS7救援模式--光盘)
复制代码

 yum命令

复制代码
yum命令原理与介绍、yum日志
=======================================================================
yum(yellowdog update modifier)rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
yum通过依赖rpm程序包管理器, 实现了rpm程序包管理器在功能上的扩展, 因此yum是不能脱离rpm而独立运行的
    yum repository:yum repo,存储了众多rpm包,以及包的相关的元数据文件(放在特定目录repodata下)

yum功能上的实现原理
    yum是CS架构的软件
    Server端先对程序包进行分类后存储到不同repository容器中; 再通过收集到大量的rpm的数据库文件中程序包之间的依赖关系数据, 生成对应的依赖关系和所需文件在本地的存放位置的说明文件(.xml格式), 存放在本地的repodata目录下供Client端取用
    Cilent端通过yum命令安装软件时发现缺少某些依赖性程序包, Client会根据本地的配置文件(/etc/repos.d/SERVER.repo)找到指定的Server端, 从Server端repo目录下获取说明文件xxx.xml后存储在本地/var/cache/yum中方便以后读取, 通过xxx.xml文件查找到需要安装的依赖性程序包在Server端的存放位置, 再进入Server端yum库中的指定repository容器中获取所需程序包, 下载完成后在本地实现安装

----------------------------------------------------------------------
/var/log/yum.log   #yum的日志文件
yum常见故障
1.配置文件书写错误
2.yum cache问题
yum命令原理与介绍、yum日志
复制代码
复制代码
yum Client配置文件说明、yum-config-manager命令、更新yum源
=======================================================================
yum Client配置文件说明
    /etc/yum.conf    #为所有仓库提供公共配置
    用户可以在本地系统的/etc/yum.repos.d/目录下编辑配置文件*.repo, 用于指定yum Server, 一个文件中可以指定多个Server通过Repo_ID来进行区别, 因此同一文件中的不同Repo_ID不能重名。

    [Repo_ID]               #epo仓库的唯一标识符,不要在同一文件中有重名ID;不能有空格,光盘镜像源一般习惯命名base
    name=Description        # 用于描述repo的简要信息
    baseurl=ftp://|http://|https://|file:///PATH/TO/PAKS    # Server端repodata目录所在的具体路径, 支持四种路径格式 ftp, http,https,file(本地路径)
    enabled={1|0}           # 表示是否启用该repo, 默认为开启
    gpgcheck={1|0}          # 表示是否验证 rpm 包的合法性,如果启用必须填写 gpgkey 字段, 默认启用
    gpgkey=ftp://|http://|file:///PATH/TO/KEY    # gpgkey文件所在的具体路径,数字证书公钥文件所在位置;设置了gpgkey后会自动进行检查
    mirrorlist                      #列出这个容器可以使用的镜像站点,如果不想使用,可以注释
    cost=1000                       #默认值为1000
配置文件*.repo中可用的变量:
    $releasever     当前OS的发行版的主版本号
    $arch           平台,i386,i486,i586,x86_64等
    $basearch       基础平台,i386,x86_64
    $YUM0-$YUM9     自定义变量

极简配置示例:(最少仅需配置3项:[]、baseurl、gpgcheck)
    [base] 
    name=Description
    baseurl=file:///media
    gpgcheck=0

----------------------------------------------------------------------
yum-config-manager命令的本质是对/etc/yum.repos.d/(库数据的储存位置)文件夹下文件的增删查改,推荐使用yum-config-manager命令进行改动

yum-config-manager --add-repo repository_url        #添加repository
yum-config-manager --disable itemName               #切换库中资源---禁用
yum-config-manager --enable itemName                #切换库中资源---启用

----------------------------------------------------------------------
更新yum源为阿里源
阿里yum源路径:http://mirrors.aliyun.com/centos/7/updates/x86_64/
linux更新yum源改成阿里云源:https://developer.aliyun.com/article/691851

1、备份
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
    CentOS 7
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    或者
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、之后运行yum makecache生成缓存
yum Client配置文件说明、yum-config-manager命令、更新yum源
复制代码

 

复制代码
yum命令参数
    --nogpgcheck                #禁止进行gpg check
    -y                          #自动回答yes
    -q                          #静默模式
    --disablerepo=repoidglob    #临时禁用此处指定的repo
    --enablerepo=repoidglob     #临时启用此处指定的repo
    --noplugins                 #禁用所有插件
yum命令参数
复制代码
复制代码
yum查询模式、yum清理模式
============================================================
yum查询模式: 
    yum repolist [all|enabled|disabled]                         #显示本地repo文件中的yum仓库信息
    yum list {available|installed|updates} [glob_exp1] [...]    #根据状态查询相关程序包
    yum search string1 [string2] [...]                          #按关键字搜索程序包
    yum info [...]                                              #查看程序包信息
    yum provides | whatprovides feature1 [feature2] [...]       #查看指定的特性或文件由哪个程序包所提供
    yum deplist package1 [package2] [...]                       #查看指定包所依赖的capabilities
    示例:
        yum repolist            #查看本地的yum仓库信息,默认查看enabled的仓库。无缓存则依赖网络
        yum list                #列出yum仓库中可用的软件包;无缓存则依赖网络
        yum search httpd        #默认在本地yum仓库搜索;无缓存则依赖网络
        yum info httpd          #默认查看本地缓存信息;无缓存则依赖网络
        yum provides httpd      #查看一个命令or应用的安装包名称,默认根据本地缓存信息进行查看,无缓存则依赖网络
        yum provides tree       
        yum deplist tree        
-----------------------------------------------------------
yum清理模式:
    yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]    根据条件清理指定数据
    yum makecache                       #主动构建yum仓库缓存;一般不需要做此操作,因为下载时会自动构建缓存

    示例:
        yum clean all
        yum makecache           #主动构建yum仓库缓存;一般不需要做此操作,因为下载时会自动构建缓存
yum查询模式、yum清理模式
复制代码
复制代码
yum安装模式、yum升级模式、yum卸载模式、yum事务历史
============================================================
yum安装模式: 
    yum install package1 [package2] [...] 安装指定程序包
    yum reinstall package1 [package2] [...]  重新安装指定程序包

    示例:
        yum install httpd
-----------------------------------------------------------
yum升级模式:
    yum check-update    检查可用升级
    yum update [package1] [package2] [...] 升级指定程序包
    yum downgrade package1 [package2] [...] 降级指定程序包
-----------------------------------------------------------
yum卸载模式:
    yum remove | erase package1 [package2] [...]    卸载指定程序包
    示例:
        yum remove httpd        #卸载后想要再次安装,显示“Error: Nothing to do”,更换yum源后解决

-----------------------------------------------------------
yum事务历史:(安装卸载同一个软件,会发现往往安装时的包数量比卸载时多,是因为安装时会安装依赖包,卸载时不会卸载依赖包;此时可能需要事务进行回滚操作)
    yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
    yum history             #查看yum的安装历史记录
    yum history info 6      #查看id为6的安装步骤的详细安装信息
    yum history undo 6      #回滚id为6的安装,即撤销安装,达到删除安装包和依赖包的目的
                            #若回滚操作为撤销卸载,即安装软件,需要yum仓库oryum源中有该安装包
    yum history redo 6      #重做id为6的安装
yum安装模式、yum升级模式、yum卸载模式、yum事务历史
复制代码
复制代码
yum包组管理:(适合批量包的安装,例如安装图形化界面)
    yum grouplist [hidden] [groupwildcard] [...]    列出指定程序安装包组信息
    yum groupinfo group1 [...]    查看指定程序安装组信息
    yum groupinstall group1 [group2] [...]    安装指定的程序安装包组
    yum groupupdate group1 [group2] [...]    升级指定程序安装包组
    yum groupremove group1 [group2] [...]    卸载指定程序安装组

    yum groupinfo "Development Tools"
        没有带等号的是你原本就已经安装了的;等号表示包是随着包组装好的;加号减号都表示包还没有安装:但是加号将来会随着包组升级而一起安装、而减号表示你将来装包组也不会安装
yum包组管理
复制代码

 

复制代码
实验1:自定义本地yum仓库

1.自定义本地yum仓库
    [root@yefeng data]# ls
    httpd-2.4.6-95.el7.centos.x86_64.rpm
    [root@yefeng data]# createrepo /data            #创建yum仓库,即创建仓库的元数据metadata
    [root@yefeng data]# ls
    httpd-2.4.6-95.el7.centos.x86_64.rpm  repodata

2.自定义yum配置文件/etc/yum.repos.d/*.repo
    [base] 
    name=Description
    baseurl=file:///data
    gpgcheck=0
实验1:自定义本地yum仓库
复制代码
复制代码
实验2:搭建自定义基于网络的yum仓库
1.安装httpd,并开启httpd服务;同时关闭防火墙
    yum install httpd
    systemctl stop firewalld.service 
    systemctl disable firewalld.service
    systemctl start httpd
    systemctl enable httpd

    iptables -vnL
2./var/www/html/目录下的文件即可访问的网络资源
    echo 'hello world!' >  /var/www/html/index.html
    浏览器输入http://192.168.1.7访问

    将rpm安装包放入到/var/www/html/目录下,并创建yum仓库
        cp /data/httpd-2.4.6-95.el7.centos.x86_64.rpm /var/www/html/data/
        createrepo /var/www/html/data/
        浏览器输入http://192.168.1.7/data/,即访问yum仓库
实验2:搭建自定义基于网络的yum仓库
复制代码

 搭建一个yum仓库

  其实本质还是提供http服务,所以nginx、httpd都可以实现
  1.搭建http服务,使用nginx、httpd都可以
  2.使用createrepo命令制作yum仓库(yum源)
  3.测试

 

 

 

Linux程序包管理--rpm和yum的原理和基本用法 https://blog.51cto.com/pavel86/1690012

posted @   雲淡風輕333  阅读(173)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示