一个操作系统没有软件做支持能实现的功能非常少,Linux中的大多软件主要是给服务器来用的,不管是稳定性还是多样性还是安全性都不比Windows差甚至更好。windows的所有安装包都不能在Linux中使用,好处是Windows中大量的病毒和木马都对Linux无用,坏处是所有的软件包都必须针对Linux再做单独的开发。
Linux能够识别的软件包主要有两大类:源码包和二进制包
源码包优点:
源码包缺点:
二进制包优点:
二进制包缺点:
RPM包命名规则
包全名:httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd 软件包名
2.2.15 软件版本
15 软件发布的次数
el6. centos 适合的 Linux平台(不写表示任何Linux版本都可以安装)
i686 适合的硬件平台(i386/i486/i586/i686
都可以在我们的普通计算机上安装,x64
则只能在64位的CPU上安装,noarch
指任何硬件平台都可以安装)
rpm rpm包扩展名
(Linux中没有文件扩展名这个概念,也就是说,文件名和扩展名可以随意命名,比如可以叫a.exe
,Linux只是认为它是一个普通文件。但是所有的rpm包的扩展名必须写成.rpm
,方便管理员查看)
RPM包依赖性:
树形依赖:a->b->c
。装软件包a要先装b,装软件包b要先装c。卸载的时候要先卸载a再卸载b最后卸载c。
环形依赖:a->b->c->a
。软件包a、b、c用一条命令同时装即可解决。
模块依赖:当想要安装mysql-connector-odbc
这个包的时候发现缺少依赖libodbcinst.so.2
这个包,但是并没有这个依赖包,这是一个库依赖,.so.number
结尾的都是库依赖,库依赖不是单独独立的一个包,它是某一个软件包中的一个软件,所以我们要安装的是这个软件所在的包。
问题是我们怎么知道这个软件属于哪个包,解决方案是前往模块依赖查询网站:www.rpmfind.net,搜索之后就会找到我们要安装的依赖包。
包全名与包名
RPM安装:
#rpm -ivh 包全名
选项: -i(install) 安装
? -v(verbose) 显示详细信息
? -h(hash) 显示进度
? --nodeps 不检测依赖性(实际不使用)
RPM包升级:
#rpm -Uvh 包全名
选项: -U(upgrade) 升级
卸载:
#rpm -e 包名
选项: -e(erase) 卸载
? --nodeps 不检查依赖性
查询是否安装
#rpm -q 包名
#查询是否安装
选项: -q(query) 查询
#rpm -qa
#查询所有已安装的RPM包
选项: -a(all) 所有
#rpm -qa | grep 包名
#查询所有与包相关的RPM包
查询软件包详细信息
#rpm -qi 包名
#rpm -qip 包全名
选项: -i(information) 查询软件信息
? -p(package) 查询未安装包信息
查询包中文件安装位置
#rpm -ql 包名
#rpm -qlp 包全名
选项: -l(list) 列表
? -p(package) 查询未安装包信息(该包的计划安装位置)
查询系统文件属于哪个RPM包
#rpm -qf 系统文件名
选项: -f(file) 查询系统文件属于哪个软件包
查询软件包的依赖性
#rpm -qR 包名
#rpm -qRp 包全名
选项: -R(requires) 查询软件包的依赖性
? -p(package) 查询未安装包信息
RPM包校验:判断系统文件是否被人更改
#rpm -V 已安装的包名
#没有任何提示信息证明包没有做过修改
选项: -V(verify) 校验制定RPM包中的文件
执行结果示例:S.5....T. c /etc/httpd/conf/httpd.conf
,S.5....T.
表示验证内容信息,c
表示配置文件。
验证内容中的8个信息的具体内容如下:(命令执行结果为8个字符,.
表示相应类型没有修改)
文件类型:
RPM包中文件提取:提取RPM包中指定文件(误操作删除系统文件后修复)
#rpm2cpio 包全名 | cpio -idv .文件绝对路径
//“.”代表把指定文件提取到当前目录下
rpm2cpio
:将rpm包转换为cpio格式的命令
cpio
:是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
#cpio 选项<[文件|设备]
选项: -i copy-in模式,还原
? -d 还原时自动新建目录
? -v 显示还原过程
举个栗子:假设做了误操作把系统中的ls
命令删掉了,执行下列命令。不知道ls命令属于哪个包可以到网上查找,这里我们查找到是coreutils-8.4-19.el6.i686.rpm
这个包。
rpm2cpio /Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
#提取RPM包中ls命令到当前目录的/bin/ls下
cp /root/bin/ls /bin/
#把ls命令复制回/bin/目录,修复文件丢失
? CentOS只要能联网,就可以直接利用CentOS官方网站的yum源进行下载安装和升级。只是CentOS的官方网站在国外,连起来有时候可能比较慢,这时候我们可以换成国内一些公开的免费的yum源地址。
? 网络yum源保存在/etc
下的yum.repos.d
目录当中,在这个目录中后缀名是.repo
的都是合法的yum源,默认是CentOS-Base
yum源生效。
#vi /etc/yum.repos.d/CentOS-Base.repo
查询
#yum list
#查询所有可用软件包列表
#yum search 关键字
#搜索服务器上所有和关键字相关的包
安装
#yum -y install 包名
选项:install 安装
? -y 自动回答yes
升级
#yum -y update 包名
#update后如果不加包名则会升级所有的软件包包括Linux内核
选项:update 升级
? -y 自动回答yes
卸载
#yum -y remove 包名
#remove会卸载掉该包所依赖的所有包,有可能会造成系统出现一定问题。
选项:remove 卸载
? -y 自动回答yes
Linux使用原则:安装的时候最小化安装,不安装多余软件;用什么软件装什么软件,尽量不卸载。
YUM软件组管理命令
#yum grouplist
#列出所有可用的软件组列表
#yum groupinstall 软件组名
#安装指定软件组,组名可以由grouplist
查询出来,如果组名有空格,则用“软件组名”这样的格式。
#yum groupremove 软件组名
#卸载指定软件组
区别:
RPM包安装位置(安装在默认位置)
RPM包默认安装路径 | |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
usr/share/man/ | 帮助文件保存位置 |
源码包安装位置:安装在指定位置中,一般是/usr/local/软件名
安装位置不同的影响:
/etc/rc.d/init.d
下),例如RPM包安#/etc/rc.d/init.d/httpd start
#service httpd start
(Redhat专有)/usr/local/apache2/bin/apachectl start
/usr/local/src/
/usr/local/
#make
编译;#make clean
清空编译产生的临时文件即可;#make install
安装。原文:https://www.cnblogs.com/yangyu-IoT/p/12770505.html