16.RPM包简说并利用rpm -qf 找回系统命令

简要概括

centos的软件包分为源码包和二进制包(RPM包,系统默认包)

源码包的优点是开源,可以修改源代码,可以自由选择所需的功能。源码包的软件是编译安装,所以更加适合自己的系统,更加稳定效率也更高。重点是卸载非常方便,直接删除该软件的安装目录即可。

相对来说,二进制包的安装与卸载都较为麻烦,因为软件包的依赖性。而且功能选择不如源码包灵活。

RPM包依赖性——1.树形依赖:a->b->c

2.环形依赖:a->b->c->a

3.模块依赖:模块依赖查询网站:www.rpmfind.net

rpm包用法

    -i --install

    -v print verbose information

     -h --hash print 50 hash marks

     -U --upgrade 升级软件包 

rpm -ivh+包全名   安装

rpm -Uvh+包全名   升级

    -e --erase 删除软件包

rpm -e+包名  卸载

     -q --query -qa --all 查询所有已安装软件包 

rpm -q+包名  查询是否安装

     -qc --configfiles 查询软件包的配置文件

    -qd docfiles 查询软件包帮助

    -qf --file 查询某个文件属于哪个软件包

    -qi --info 查询软件包详细信息

    --scripts 查询安装软件包后执行哪些脚本 

    -R --requires 查询软件的依赖 

rpm -qR+包名  查询软件包的依赖性  

    -p可查询为安装包的信息


用ls命令做测试,尝试命如果令丢失利用安装包进行找回。

16.RPM包简说并利用rpm -qf 找回系统命令_第1张图片

首先通过找到ls的安装包

mv /bin/ls /tmp   //将/bin/ls移动到/tmp下,假装ls命令丢失

rpm2cpio /mnt/cdrom/Packages/coreutils-8.4.46.el6.i686.rpm | cpio -idv ./bin/ls  //找到ls的安装包并提取/bin/ls

16.RPM包简说并利用rpm -qf 找回系统命令_第2张图片

啊哦,失败,并且找不到ls命令了==

于是重新安装coreutils软件包,还好找回来了==

16.RPM包简说并利用rpm -qf 找回系统命令_第3张图片

但是,刚刚为什么会失败呢,分析错误,原来是刚刚命令执行的目录不对,./bin表示在当前目录下创建bin/ls,但是当前目录是Packages,Packages是刚刚挂载的只读文件系统,不可创建目录。

16.RPM包简说并利用rpm -qf 找回系统命令_第4张图片

重新执行刚刚的步骤,在root的家目录下执行命令,成功

16.RPM包简说并利用rpm -qf 找回系统命令_第5张图片

用dir命令查看,可以看到确实在root的家目录下新建了bin


将/root/bin/ls复制到/bin下,成为真正的/bin/ls

16.RPM包简说并利用rpm -qf 找回系统命令_第6张图片

你可能感兴趣的:(16.RPM包简说并利用rpm -qf 找回系统命令)