zoukankan      html  css  js  c++  java
  • Linux软件管理


    获取程序包途径

    • 系统发行版的光盘或官方的服务器
      • http://mirrors.aliyun.com
      • http://mirrors.sohu.com
      • http://mirrors.163.com
    • 第三方组织
      • http://pkgs.org
      • http://rpmfind.net
      • http://rpm.pbone.net

    软件包分类

    • 二进制格式
    • 源码格式

    软件包管理工具

    • 前端工具
      • yum
      • apt-get
      • zypper (suse上的rpm前端管理工具)
      • dnf(Fedora 22+ rpm前端管理工具)

    现在考红帽的认证使用的是RHEL8.0,不再使用yum,而是dnf。总体没有太大变化。想要了解的可以去官网看相关的资料

    • 后端工具
      • rpm
      • dpt
    • rpm是RHCSA中的需要使用到的一个工具,在升级内核时,需要使用rpm
    • rpm也是我们用到的比较多的一个工具,可以查看是否安装了某个程序。学Linux的时候,就在想能不能在Linux中装个QQ。下载的rpm的包,就是使用rpm安装的。

    RPM包命名规范

    在这里插入图片描述

    这里的版本号跟我们很多的软件的版本号相同,偶数为稳定版,奇数为开发版。在我们使用的时候,建议使用偶数版

    RPM包管理

    RPM包安装

    • 语法: rpm -ivh 包所在的绝对路径
    • 常用选项:
      • -i 安装
      • -v 显示详细信息
      • -h 显示安装进度条
      • --test 测试安装,但不真正执行安装过程
      • --nodeps 忽略依赖关系
      • --replacepkgs 重新安装,替换原有安装
      • --oldpackage 降级
      • --force 强行安装,可以实现重装或降级
      • --nodigest 不检查包的完整性
      • --nosignature 不检查包的来源合法性
      • --noscripts 不执行程序包脚本片断

    RPM包查询

    • 常用选项:
      • rpm -qa 查询已经安装的所有包。(我们用到比较多的命令)
      • rpm -q package_name 查询指定的包是否已安装
    • 较少用的选项:
      • rpm -qi package_name 查询指定包的说明信息
      • rpm -ql package_name 查询指定软件包安装后生成的文件列表
      • rpm -qf /path/to/somefile 查询指定的文件是由哪个rpm包安装生成的
      • rpm -qc package_name 查询指定包安装的配置文件
      • rpm -qd package_name 查询指定包安装的帮助文件
      • rpm -q --scripts package_name 查询指定包中包含的脚本
      • rpm -q --whatrequires CAPABILITY 查询指定的CAPABILITY被哪个包所依赖
      • rpm -q --changelog COMMAND 查询COMMAND的制作日志
      • rpm -q --scripts package_name 查询指定软件包包含的所有脚本文件
      • rpm -qR package_name 查询指定的软件包所依赖的CAPABILITY
      • rpm -q --provides package_name 列出指定软件包所提供的CAPABILITY
      • rpm -qpi /PATH/TO/PACKAGE_FILE 查询指定未安装包的说明信息
      • rpm -qpl /PATH/TO/PACKAGE_FILE 查询未安装的软件包会产生哪些文件

    RPM包升级

    • rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE 如果装有老版本的,则升级;否则,则安装
    • rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE 如果装有老版本的,则升级;否则,退出
      • --oldpackage 降级

    这里是RHCSA中的移一道考题,升级系统内核。因为Linux是支持多内核的,所以用-ivh而不要使用-Uvh

    升级注意事项

    • 不要对内核做升级操作
    • Linux支持多内核版本并存,因此,可直接安装新版本内核。直接使用rpm -ivh安装新版本
    • 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

    RPM包卸载

    • 用法:
      • rpm -e [package_name]
    [root@bad ~]# rpm -qa |grep vsftpd  //查询是否安装
    [root@bad ~]# rpm -e vsftpd  //卸载
    

    RPM包校验

    如果执行以下命令无内容输出说明此包未被修改过
    [root@badt ~]# rpm -V vsftpd
    
    S  //文件的容量大小是否被改变
    M  //文件的类型或者文件的属性是否被修改
    5  //MD5这一种指纹加密的内容已经不同
    D  //装置的主/次代码已经改变
    L  //路径已经被改变
    U  //文件的所属主已被修改
    G  //文件的所属组已被修改
    T  //文件的创建时间已被改变
    

    RPM重建数据库

    • 数据库信息再/var/lib/rpm目录中
    • rpm --rebuilddb 重建数据库,一定会重新建立
    • rpm --initdb 初始化数据库,没有才建立,有就不用建立

    检查软件包来源合法性和完整性

    • 加密类型:
      • 对称加密,加密解密使用同一个密钥
      • 公钥加密,一对密钥,公钥和私钥。公钥隐含于私钥中,可以提取出来并公布出去
      • 单向加密,只能加密不能解密
    • /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release红帽官方公钥
    • rpm -K PACKAGE_FILE 检查指定包有无密钥信息
      • dsa,gpg //验证来源合法性,也即验证签名。可以使用–nosignatrue略过此项
      • sha1,md5 //验证软件包完整性。可以使用–nodigest略过此项
    • rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 导入密钥文件
    • CentOS 7发行版光盘提供的密钥文件 //RPM-GPG-KEY-CentOS-7

    配置本地仓库

    我们在学习Linux时,会需要装很多的程序,以及很多的依赖包,那么我们就使用yum来安装。但是在使用yum之前,我们需要先在指定目录下搭建好我们的仓库,指明软件包放在哪里,是否需要检查,是否启用等信息。

    • 注意,使用yum前,iso文件要已经连接虚拟机,才可以使用iso中的软件包
    [root@bad ~]# cd etc/yum.repos.d  //进入到仓库配置的目录中
    //先看一下是否有其他的仓库,有的话需要全部删除,或全部禁用。不然将会报错
    [root@bad ~]# ls
    [root@bad ~]# vi yum.repo  //编辑本地仓库,必须以.repo结尾,然后将以下内容写入文件
    [base]  //仓库标识
    name=Redhat  //仓库名
    baseurl=file:///mnt  //指定软件包的位置
    gpgcheck=0  //是否检查许可,0标识不检查,一般不检查
    enabled=1  //是否启用此仓库
    [root@bad ~]# mount /dev/cdrom /mnt/  //挂载光驱
    [root@bad ~]# yum clean all  //清理yum缓存
    [root@bad ~]# yum list all  //列出所有包
    [root@bad ~]# yum repolist  //刷新仓库源
    
    • 在进入仓库配置目录中之后,一定要看是否有其他的仓库源,有要删除,否则配置的yum仓库源可能无法使用
    • 仓库标识和名称可以随便取,但是之后的内容,不要写错
    • baseurl是指你软件包的url,file://是协议,就像是我们访问网址前的http://一样。后面的/mnt标识根下的这个目录。在考RHCSA的时,配置路径时,是给定的网页地址,不要再习惯性的写file://
    • 检查许可信息一定要设置0,不允许。不然在装软件的时候会很慢
    • 挂载时,/dev/cdrom是光驱的默认位置,挂载到/mnt下,中间有空格
    • 使用yum list all时,如果没有红色报错,就表示yum仓库配置好了,可以用。报错了就检查自己的仓库是否写错,光盘是否挂载。
    • 使用yum repolist时,可以看到仓库的信息,有具体的数字不是0就可以使用了

     

    以上内容均属原创,如有不详或错误,敬请指出。
    
    本文作者: 坏坏
  • 相关阅读:
    游戏类型
    cocos2d-x lua 一些语法
    lua中ipairs和pairs
    lua的一些语法
    误删jre怎么办
    右键android工程的包名选择Build Path后怎么还原
    播放Armature动画
    接入第三方sdk出现了一些问题总结
    gettimeofday() 获取系统时间,精确到微秒 这个似乎只能在linux 下用,不能在windows 下用
    windows timeGetTime() 函数 获取系统从开机到现在的毫秒时间值
  • 原文地址:https://www.cnblogs.com/bad5/p/12424281.html
Copyright © 2011-2022 走看看