软件包的分类
1.源码包(特殊的源码包:脚本安装包 一般是install.sh运行后就会进入和windows的setup.exe类似的安装界面)
2.二进制包(系统默认包,Redhat-RPM包,debian-deb包)
1.源码包就是网站上面下载下来的包,安装需要编译,比较耗费时间,但是可以查看源码。
2.二进制包不需要编译,安装速度快,但是不能查看源码。
兄弟们,注意以下,从这一课开始redhat和debian要分家了,参考这篇文章:debian与redhat的区别。
RPM命令管理(在ubuntu中是dpkg)
RPM包命名规则:
范例:httpd-2.1.2-13-el6.centos.l.i686.rpm
httpd:软件包的名字
2.1.2:版本号
13:发布次数
el6.centos:适合的linux平台
i686:适合的硬件平台
rpm:包的扩展名
依赖问题:
1.树形依赖:a->b->c这个好解决,先安装c,后b,最后a。
2.环形依赖:a->b->c->a 把a,b,c一条命令一起安装。
3.模块依赖
这个问题一般是在碰到so.数字结尾的依赖时出现
这种一般是库依赖,这种依赖他是某一个包中的一个软件,所以这种情况需要把这个包装上即可解决。
问题来了,我们怎么知道这个依赖是哪一个模块的,查询网站:www.rpmfind.net。(听说已经倒闭了,哦耶,但是我还是能用)
如果想要不天天被依赖的问题恶心,用yum(debian中是apt)
RPM命令
1.包全名:如果操作的是没有安装的RPM包,必须使用包全名,还要注意路径。
一般在:安装或者升级的时候使用。
2.包名:使用已经安装好的包时只要写包名。实际是搜索/var/lib/rpm数据库。
安装命令:rpm -ivh 包全名
-i 安装
-v 显示详细信息
-h显示进度
–nodeps不检测依赖项(一般不用)
升级命令:rpm -Uvh 包全名 -U(upgrade)升级
卸载命令:rpm -e 包名 -e卸载
安装等功能用rpm非常麻烦,一般用yum,但是查询命令一定要用rpm
查询:(ubuntu对应命令)
1.查询一个包是否安装:rpm -q 包名 -q(query):查询
2.查询所有包:rpm -qa -a:all所有
3.查询包信息:rpm -qi 包名 -q(query) #-i(information)
如果这个包没有安装选项中加个p,并且是输入包全名
4.查询包中文件安装位置:rpm -ql 包名 #-l:list
如果这个包没有安装选项中加个p,并且是输入包全名’
5.查询系统文件是属于包的:rpm -qf 路径/文件名 #-f:file
6.查询包的依赖性:rpm -qR 包名 #-R:requires
如果这个包没有安装选项中加个p,并且是输入包全名’
RPM包校验
校验:rpm -V 包名
具体验证信息参考:RPM包验证信息详解
从RPM包中提取文件:rpm2cpio 包全名 | cpio -idv .绝对路径
rpm2cpio:将RPM文件转换为cpio文件
cpio是一个工具,用于创建软件档案文件或从档案文件中提取文件
此处的.绝对路径是说把文件安装到当前目录,和之前碰到的./不是一个意思,要特别注意。
估计很多人看不懂这个,记住命令格式就好,记不住就每次要用来查询以下就好
范例:rpm2cpio 包全名 cpio -idf ./bin/ls
之后再将ls复制到 /bin/ls 即可。