Linux系统程序包的安装–RPM

       我们知道在操作系统上使用的程序都是有程序员通过开发工具得来的,程序员直接编写的纯文本的文件,我们称之为源代码,由于计算机识别的是二进制程序,因此在完成源代码编写之后,就必须要经过编译,使之成为操作系统可以“看得懂”的二进制程序,这里的编译是通过编译器来进行的操作,编译器的功能就是将源代码程序“转换”为二进制程序,然后再通过一定的安装步骤将其安装到操作系统上来,进而被系统及用户来使用。

        程序源代码–> 预处理–> 编译 –> 汇编 –> 链接

        编译包括:静态编译:以.a为后缀的文件 (复制一份出来打包到本地)

                       动态编译:以.so为后缀的文件(无需复制打包,直接调用库文件,可多个调用一个)

这里讲一下如果不小心删除了库文件,如何挽救:

    例如,不小心删除了/lib64/libc.so.6

CentOS6中:

1、进入光盘救援模式

Linux系统程序包的安装--RPM    

在进度条没读完的时候按ESC  ,然后如图

Linux系统程序包的安装--RPM

Linux系统程序包的安装--RPM

强调一下,不用选择网络调试

Linux系统程序包的安装--RPM

Linux系统程序包的安装--RPM

2、之后全部选择ok即可,进入shell,注意此时我们处在光盘的根下,使用chroot /mnt/sysimage 可切换到系统根下

Linux系统程序包的安装--RPM

3、将光盘中libc.so.6文件复制到系统/etc/lib64/目录下,即可恢复

Linux系统程序包的安装--RPM

4、重启系统

在CentOS7中,救援模式的进入基本和6相同,相对简便一些;进入救援模式后操作与6相同。

7中进入救援模式

Linux系统程序包的安装--RPM

Linux系统程序包的安装--RPM

包的安装有:rpm 、yum 、编译安装;我先来讲一下CentOS中RPM包的管理。

安装:

       rpm {-i | –install} [install-options] PACKAGE_FILE…

                                   -h : hash ,以#来表示安装的进度; 

                                   -v : –verbose : 显示安装过程中的详细信息;(-vv ; -vvv 更加详细)

                                   –test : 不执行真正的安装过程,仅仅报告依赖关系以及冲突信息等;

                                   –nodeps : 忽略依赖关系,但是存在副作用-能安装成功,但是不一定能运行成功;

                                   –replacepkgs : 覆盖安装――重新安装并覆盖原有的文件;

                                   –force : 强制安装

       安装时经常使用的组合是:-ivh  , -ivvh

rpm安装的过程中会经常遇见,包的依赖性问题,使安装变得繁琐

升级:

       rpm {-U | –upgrade} [install-ortions] PACKAGE_FILE… 升级或安装

rpm {-F | –freshen} [install-ortions] PACKAGE_FILE…  升级

在这里要注意

1、一定不要对内核进行升级,在linux中允许多内核存在,可以直接安装多个不同版本的内核;

2、如果程序包的配置文件安装后曾被修改,升级时,新版本的文件不会覆盖老版本的配置文件,而是把新版本的配置文件重命名(加后缀.rpmnew)后保存。

卸载:

rpm {-e | –erase} [options] PACKAGE_FILE…

                            –nodeps : 忽略依赖关系,直接卸载

                            –test : 测试卸载,dry-run模式

                            –allmatches : 如果一个程序包同时安装多个版本,则此选项一次全部卸载

注意:如果配置文件安装后被修改,卸载时,此配置文件不会被删除,而是重命名(加后缀.rpmsave)后保存。

查询:

       查询某安装包是否已经安装,以及检查安装的所有包,还可以查看某包的详细信息。

                rpm –q PACKAGE_NAME… : 查询某包是否已经安装

                rpm –qa PACKAGE_NAME… :查询已经安装的包

                rpm –qi PACKAGE_NAME… :查询包的information

                rpm –qpi PACKAGE_NAME… :查询尚未安装的某包的文件的相关信息

                rpm –qf /PATH/TO/SOMFILE : 查看某文件是有哪个包提供的

                rpm –ql PACKAGE_NAME… :查询包安装生成的文件列表

                rpm –qc PACKAGE_NAME… :查询包安装完成后生成的所有配置文件

                rpm –qd PACKAGE_NAME… :查看包安装完成后生成的所有帮助文件

                rpm –q –changelog PACKAGE_NAME… :查看某包制作时随版本变化的信息

                rpm –q –provides PACKAGE_NAME… :查看包提供capabilities

                rpm –q –requires PACKAGE_NAME… :查看某包所依赖的capabilities

                rpm –q –scripts PACKAGE_NAME… :查看某包安装或卸载时执行的脚本

校验:

       查询包安装后生成文件是否发生了变化

rpm –V PACKAGE_NAME… 当没有结果输出时表示软件包完整,当有如下的相应结果输出则发生了改变:

              S :(file Size differs) 文件的大小改变

              M :(Mode differs) 文件的类型或属性(rwx)改变

              5 :(MD5 sum differs) MD5 这一哈希值发生改变

              D :(Device major/minor number mis-match) 装置的主次代码改变

              L :Link路径发生改变

              U :文件的属主改变

              G :文件的属组改变

              T :文件的mtime时间改变

              P :capabilities改变

关于合法性,我们要验证其光盘中程序包的来源及完整性:

       先导入合法的密钥文件:rpm –import /path/to/RPM-GPG-KEY-FILE (一般在/etc/pki/rpg-gpg/目录下)

       验证:rpm {K | –checksig} PACKAGE_FILE

                                           –nosignature :不检查来源合法性

                                           –nodigest : 不检查完整性

rpm数据库:(/var/lib/rpm)

        数据库重建:

                    rpm {–initdb | –rebuilddb}

                            initdb : 初始化,如果事先不存在数据库,则新建;否则,不执行任何操作

                            rebuilddb : 重建已安装的包头的数据库索引目录

原创文章,作者:Immortals、zcy,如若转载,请注明出处:http://www.178linux.com/73960

(0)
Immortals、zcyImmortals、zcy
上一篇 2017-04-23 17:19
下一篇 2017-04-23 19:46

相关推荐

  • shell三剑客之grep

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”); 2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。 正…

    Linux干货 2016-08-08
  • vim简单操作

    vim第一讲 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。 h (左移) j (下行) k (上行) l (右移) 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车> 欲退出 Vim 编辑器,请输入 <ESC> :q! <回车> 放弃所有改动。 或者输入 <ESC&gt…

    Linux干货 2017-07-29
  • sed的模式匹配用法探讨

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1405753 [root@sunsky Desktop]# cat sunsky a b c d e f [root@sunsk…

    Linux干货 2016-08-15
  • Recycled和Recycler的故事

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/156012      首先说明一下,这里不是英语课堂,本文也不是来辨析Recycled和Recycler这两个单词的含义。Recy…

    Linux干货 2015-03-25
  • 马哥教育网络20期+第8周练习博客

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:链接层设备,基于MAC地址过滤。 集线器:物理层设备,基本都属于半双工模式。集线器与网桥在现在的局域网中基本都不用了。 二层交换机:基本MAC转发数据,功能齐全的可支持VLAN等功能。常见的有100/1000M、16口/24口/48口。 三层交换机:功能齐全的交换机,具备都…

    Linux干货 2016-08-01
  • 管道和用户管理权限

           一周的时间又过去了,感觉过得太快了,但是过得很充实,这就够啦!把在平时的学习中觉得重要有意义的地方记录下来,希望可以对自己以后的学习有所帮助! 1.把/etc/issue转化为大写,并重定向到issue.out. 管道的作用很强大,|将正确的结果重定向给下一条命令;连接命令;一页一页地…

    2017-07-22

评论列表(1条)

  • renjin
    renjin 2017-04-28 11:29

    文章对rpm包进行了详细的介绍,内容很的很精细,排版也很好,可以把博客数量再往上增加一下了。