您的位置:首页 > 产品设计

马哥预习课13_软件包管理rpm和yum

2019-05-07 10:27 381 查看
4000 版权声明:本文为博主原创文章,转载请声明出处! https://blog.csdn.net/weixin_42758707/article/details/89885120

本章内容

  • ▼程序包的来源
  • ▼rpm [OPTION] *PACKAGE_FILE*`包管理`
  • ▼yum仓库
  • ▼软件运行和编译

    1. ABI : Application Binary Interface
    2. API : Application Programming Interface

    程序源代码预处理编译汇编链接*编译静态编译.a动态编译.so

    ▼静态和动态链接

    1. 静态链接
      把程序对应的依赖库复制一份到包
    lib*.a嵌入程序包升级难,需重新编译把程序对应的依赖库复制一份到包占用空间多,迁移容易
    1. 动态链接
    lib*.so连接指向只把依赖做一个动态链接占用空间小,升级方便

    ▼包和包管理器

    1. 包的组成:二进制文件、库文件、配置文件、帮助文件
    2. 程序包管理器:
      debian:deb文件,dpkg包管理器
      redhat:rpm文件,rpm包管理器

    库文件

    1. 查看二进制程序所依赖的库文件
      /ldd /PATH/TO/BINARY_FILE
    2. 管理及查看本机装载的库文件
      lsconfig
      加载配置文件中指定的库文件
      /sbin/ldconfig -p
      显示本机已经缓存的所有可用库文件名及文件路径
    3. 映射关系
      /etc/ld.so.conf , /etc/ld.so.conf.d/*conf
      配置文件
      /etc/ls.so.cache
      缓存文件

    ▼程序包的来源

    CentOS镜像
    https://www.centod.org/download/
    http://miirors.aliyun.com
    http://mirrors.sohu.com
    http://mirrors.163.com

    Fedora-EPEL
    http://pkgs.org
    http://rpmfind.net
    http://rpm.pbone.net
    https://sourceforge.net/

    ▼rpm [OPTION] PACKAGE_FILE
    包管理

    [OPTION] 用途
    -i
    安装
    -v
    显示过程
    -vv
    -h
    以####显示进度
    示例
    rpm -ivh PACKAGE_FILE

    rpm 包安装

    [install-options] 用途
    --test
    测试安装
    --nodeps
    忽略依赖关系
    --replacepkgs
    不检查来源
    --nodigest
    不检查完整性
    --noscripts
    不执行程序包脚本
    %pre
    安装前脚本 --nopre
    %post
    安装后脚本 --nopost
    %preun
    卸载前脚本 --nopreun
    %postun
    卸载后脚本 --nopostun

    rpm 包升级

    有旧版,升级

    rpm -U [install-option] PACKAGE_FILE

    没有旧版,不升级

    rpm -F [install-option] PACKAGE_FILE

    示例

    rpm -Uvh PACKAGE_FILE

    [install-options]

    --oldpackage
    降级
    --force
    强制安装

    rpm 包查询

    命令

    rpm -q [select-options] [query-options]

    [select-options] 用途
    -a
    所有包
    -f
    指定的文件由哪个程序包生成
    -p
    RPMFILE
    对未安装的程序包查询
    --whatprovides CAPABILITY
    查询指定CAPABILITY包由哪个包提供
    --whatrequires CAPABILITY
    查询指定CAPABILITY包由哪个包依赖
    [query-options] 用途
    --changelog
    查询rpm包的changelog
    -c
    查询程序的配置文件
    -d
    查询程序的文档
    -i
    查询程序的详情
    -I
    查看指定的包安装后生成的所有文件
    --scripts
    程序包自带的脚本
    --provides
    列出指定程序包所提供的CAPABILITY
    -R
    查询指定的程序包所依赖的CAPABILITY
    `查看指定的包安装后生成的所有文件`
    rpm -ql httpd

    rpm 包卸载

    rpm -e [OPTIONS] PACKAGE_FILE

    rpm 包校验

    rpm -V [select-option] [verify-options]

    rpm 数据库

    1. 数据库重建
      /var/lib/rpm
    2. rpm {--initdb| --rebuiddb}

      initdb
      初始化
      rebuilddb
      重建

    rpm示例

    rpm -ql httpd

    ▼yum仓库

    ▷yum 仓库

    1. 所有仓库公共配置
      /etc/yum.conf
    2. 仓库指向提供配置
      /etc/yum.repos.d/*.repo
    3. 日志文件
      /var/log/yum.log

    .repo 文件定义

    [repositoryID]
    name= STRING
    baseurl =	http://
    https://
    ftp://
    file://
    enabled={1|0}
    gpgcheck={1|0}
    gpgkey=url://              `当gpgcheck=1`
    enablegroups={1|0}
    failovermethod={roudrobin|priority}
    roundrobin : 随机(默认)
    priority : 按顺序
    cost=1000(默认)

    ▷yum [OPTION] [COMMAND] [PACKAGE]

    yum的选项

    [OPTION] 用途
    --nogpgcheck
    禁用gpg check
    -y
    自动回答
    -q
    静默安装
    --disablerepo = REPO
    临时禁用指定repo
    --enablerepo = REPO
    临时启用指定repo
    --noplugins
    禁用插件

    查看yum仓库列表

    yum repolist {all|enabled|disabled}

    yum的程序包

    1. 显示安装好的程序包

    yum list [all | golb_exp1]

    yum list {available | installen | updates} [globj_exp1]

    2. 安装/升级程序包

    yum install PACKAGE1 [PACKAGE2]

    yum reinstall PACKAGE1 [PACKAGE2]
    重装
    yum update rpmfile1
    升级

    3. 查看yum安装历史

    yum history

    yum history info NUM

    yum history undo NUM

    yum history redo NUM

    4. 查看程序包

    yum info PACKAGE

    5. 查看指定的文件/特性是谁提供的

    yum {provides | whatprovides} feature

    6. 清理本地缓存/var/cache/yum/$ basearch/$releasever

    yum clean [packages | metadata | expire-cache | rpmdb | plugins | all]

    7. 构建缓存

    yum makecache

    8. 搜索包

    yum search string1

    9. 查看指定包所依赖的CAPABILITIES

    yum deplist package1

    10. 包组命令

    1. yum groupinstall group1
    2. yum groupdate group1
    3. yum grouplist [HIDDEN] [groupwildcard]
    4. yum groupremove group1
    5. yum groupinfo group1

    11. 创建yum仓库

    createrepo [OPTION] DIR

    yum源

    1. 阿里云repo文件
      阿里云
    2. CentOS系统的yum源
      阿里云
      清华大学
    3. EPEL的yum源
      阿里云
    4. 阿里巴巴开源软件
      阿里巴巴

    搭建http的yum仓库

    1. `安装httpd服务`
    [root@CentOS7 cd]$yum install httpd.x86_64
    
    2. `查询httpd安装后生成的文件`
    [root@CentOS7 cd]$rpm -ql httpd
    
    3. `启用httpd服务`
    [root@CentOS7 cd]$systemctl enable httpd.service
    [root@CentOS7 cd]$systemctl start httpd.service
    
    4. `创建文件夹`
    [root@CentOS7 html]$cd /var/www/html/
    [root@CentOS7 html]$mkdir centos/{6,7}/os/x86_64 -pv
    mkdir: created directory ‘centos’
    mkdir: created directory ‘centos/6’
    mkdir: created directory ‘centos/6/os’
    mkdir: created directory ‘centos/6/os/x86_64’
    mkdir: created directory ‘centos/7’
    mkdir: created directory ‘centos/7/os’
    mkdir: created directory ‘centos/7/os/x86_64’
    
    5. `挂载`
    [root@CentOS7 html]$mount /dev/sr0  centos/7/os/x86_64/
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@CentOS7 html]$mount /dev/sr1  centos/6/os/x86_64/
    mount: /dev/sr1 is write-protected, mounting read-only
    
    6. `配置repo并使用`
    1 [cdrom]
    2 name=cdrom
    3 baseurl=http://192.168.88.132/centos/7/os/x86_64/
    4 gpgcheck=0
    5 enable=1
    
    7. `生成repodata`
    [root@CentOS7 app]$ls
    tree-1.6.0-10.el7.x86_64.rpm
    [root@CentOS7 app]$createrepo .
    Spawning worker 0 with 1 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    
    8. `查看repodata`
    [root@CentOS7 app]$cd repodata/
    [root@CentOS7 repodata]$ls
    126a4254b443d131331b4b0690e9c0b6d21a2086439cafc91c06cef05a4d4d80-filelists.sqlite.bz2
    13fdc6b363cf52e0a85e9c14a3c7542ff8aa1414059ed3e60e921abe39b608ca-filelists.xml.gz
    7a3b13e0c3442e911847404ebcb6949af1631a3be1d30b65bc6e5af70e018b20-primary.sqlite.bz2
    b466b726e2bed2fb4186bdcb74332cec08c47ab09dda9e910bd438c4e79d06f2-primary.xml.gz
    bf7893674c749b8e5bb4688498d02e729c2ab4839cd6e3baeeeaa0c9d8aa24c7-other.xml.gz
    de5be08c023c4647355eb21db734c14e07f61ddce7b3802e6a42867e4a46d45f-other.sqlite.bz2
    repomd.xml
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: