Linux入门之软件安装

411 阅读10分钟

前言

最近自己在搞怎么编译安软件,发现软件的安装五花八门,网上搜索到的方法也有所不同,索性要不要仔细了解一下Linux系统到底如何安装软件的,这样对以后的学习有所帮助,不会看到这些知识就一脸黑人问号。

软件安装有哪些方式

Linux系统的软件安装有两种方案,第一种方案就是使用源码安装,也就是所谓的编译安装,这种方案对新手来说确实不要入门,安装比较复杂,有的软件安装依赖的软件众多,这就更复杂了,可能一个软件安装就需要一下午的时间。

另外外有一种方案就是使用rpm软件包安装,也就是二进制安装,通过下载rpm软件包,然后使用rpm命令进行安装,不过这种方法安装还是需要手动解决软件依赖问题。

rpm软件包

rpm包安装起来比较复杂,为了解决rpm包安装复杂的问题,采用yum在线安装,直接下载rpm包,自动解决包依赖的系统环境,一个命令就可以解决软件安装,可以像Windows一样傻瓜式安装,对新手来说非常友好。

本篇文章主要是介绍RPM命令安装如何使用,我们尽量挑重要的说,开始。

rpm命令有点难用

rpm软件包的安装方式有两种方式,一种是使用rpm命令安装,一种是采用yum在线安装,这种我们简单的介绍rpm命令安装

rpm命令安装方式比较麻烦,而且不太适用,如果好用的话,也就不会有yum在线安装了。

rpm命令安装到底怎么不好用了呢,我们以安装PHP软件举例,到底怎么个麻烦法。我们知道PHP是采用C语言编写的,那么执行C语言需要有编译环境,这就需要安装C语言编译器gcc,这还不算完,PHP还需要其他依赖的软件,除了软件外还需要类库,这里的类库又是包含在软件包里面的,所以你又的去查找这个类库在哪里软件包里。

上面我还没有具体的执行命令,估计你看到上面一大堆文字,估计都不想看了,这都还不算麻烦的,有的时候你安装的依赖软件,它又需要其他的依赖软件,这就像俄罗斯套娃一样,不停的套,套多少层只有你试了以后就知道了。

在21世纪,用上面的方式安装命令就显得太慢了,效率不高,这怎么可以,所以发明了yum在线安装,帮助你解决依赖性的问题,是你工作中的好帮手。

难用还要学习吗?

说到这里,并不是说rpm命令安装rpm软件包就一无是处,还是有用的,比如rpm包查询命令,rpm包校验命令,这是都是很中重要的命令。

本篇文章从rpm包安装升级卸载查询校验,5个方向来介绍rpm命令

相对来说比较多,其实也不用每个都学会,简单的了解就可以了,等用到的时候再来看也不迟,学习最忌讳学了没有用起来,没有用就没有输出,没有输出就没用深入理解,自然能力也不会提升。

学了就用起来,哪怕是敲一下命令也是值得的,或者我总结的不好,用你自己的话总结一遍是最好的方式。

让自己勤快起来,学完就写下笔记,做总结,切记光说不练。

rpm安装命令

rpm安装命令还是比较简单的,直接执行命令就可以,在执行安装命令前需要把目录切换到rpm软件包所在的目录。

如果我们安装的rpm软件包没有怎么办,可以到软件官网下载,一般软件都提供rpm软件包,并附代码有软件包安装方法。万一你说的这些都没有怎么办,可以用源码安装,后面的文章我们会介绍。

在安装rpm软件包时也可以通过--prefix选项指定安装路径,我这里不建议这么做,这是因为rpm软件包安装在哪个路径下是软件作者提前规划好了的,如果按照你设置的路径安装后,会导致一些功能无法使用,比如man redis-cli 命令执行后无法查看redis-cli应用的使用手册。

如果不指定安装路径,会导致软件的文件在系统的各个路径下都有,我们可以通过rpm -ql xxx 查询已经安装的rpm包的安装目录,可以看到文件在各个目录下都存在。这会导致一个问题,我们该如何卸载应用呢,是不是要手动删除软件的所有文件。不用这么麻烦,可以使用卸载命令来卸载已经安装的rpm软件包

说了那么多,现在介绍如何使用rpm安装命令

格式:
rpm  -ivh  包全名
选项介绍:
-i (install)  安装
-v(verbose) 显示安装详细信息
-h  显示安装进度

使用安装命令执行后,软件不一定会安装成功,这是因为需要的系统环境没有搭建好,你可以根据返回的错误信息,得知需要安装哪个依赖软件。

这是rpm命令安装的一个痛点,必须要手动的解决依赖问题。不过这个问题现在可以用yumapt在线安装工具解决掉,实现一键傻瓜式安装,轻松搞定软件安装问题。

rpm升级命令

安装了软件,就有升级的需求,可以使用升级命令对软件进行升级。

在使用rpm升级命令时,需要这个软件是通过rpm命令安装,如果不是那不可以用这种方式对软件进行升级。

格式:
rpm  -Uvh  包全名
-U  升级
-v  显示安装信息
-h 显示安装进度

说下这里的包全名,什么是包全名,以安装gcc为例,包全名是gcc-4.8.5-39.el7.x86_64,包名gcc,可以看到全名的信息更加完整,升级和安装使用的都是包全名

rpm卸载命令

在卸载rpm软件包时,使用的是包名,rpm命令会从我们的本地rpm数据库中查找对应的软件包,如果包确实已经安装过,那么会卸载该软件包。

但是在使用rpm命令安装和升级rpm软件包时,需要指定软件包的完整名称,这时需要注意的地方。

格式:
rpm -e   包名

rpm -e卸载rpm包,需要先卸载依赖的软件包,一个个依赖卸载完后才可以rpm软件包。

为什么会提供一个rpm包卸载的命令呢,这是因为我们安装的rpm软件包的安装目录是不同的,卸载要跑到安装目录,一个个卸载,所以很麻烦,所以通过卸载命令就可以轻松完成。

rpm查询命令

rpm查询命令非常的强大,涉及到的命令选项有很多,可以根据下面的提示,一个个的在shell终端执行一下,看下各自的区别。

由于命令中有注释,简介各自命令如何使用,这里就不再说明命令的使用情况了。

# 涉及的命令参数很多,可以敲一敲代码

RPM包查询命令

查询指定的rpm包是否已经安装
# -q(query) 查询
rpm  -q  包名

查询所有已经安装的rpm包
# a(all)
rpm  -qa

比如查询是否安装了gcc rpm包
rpm  -aq | grep gcc

查询已安装的软件包详细信息
# -i(information) 详细信息
rpm  -qi   包名

查询已经安装的rpm包的安装目录
# -l(list)
rpm  -ql gcc

查询未安装的软件的软件信息
# 前提是这个软件包压缩文件在当前目录下,才可以查看。
# -p 命令是查看未安装的软件包,它可以和-i, -l参数一起使用
-p (package)
rpm  -pi  c++

# 在安装一个rpm包之前,我们也可以知道软件会安装到哪些目录下,可以使用命令查看
rpm -qlp  gcc

查询文件属于哪个软件包
# -f(file) 文件
# 注意这里命令后面跟的是文件名,不是软件包名,需要注意以下
# 如果文件不是rpm命令方式安装的,那么查询不出内容出来,因为它不属于任何软件包
rpm -qf  yum.conf

查询已经安装了的软件包的依赖关系
# -R
rpm -qR  yum

查询未安装的软件包的依赖关系
# 在安装软件前,我们可以用这个命令查看软件的依赖情况
rpm -pR  yum

这些命令比较多,不要求一开始就记住,用到的时候再看,好记性不如烂笔头,在终端上试试这么命令,比记住它们要好很多

rpm校验命令

最后一个是rpm校验命令,平常也在用,不过我的工作用到的很少,我也没有搞懂怎么用这个命令,这里先记录一下。

什么是rpm校验命令呢? 比如我从网络中下载了一个rpm软件包,我们怎么知道这个rpm软件包是官网的软件,没有被注入木马病毒,我们就可以用校验命令,通过这些命令查看包有没有修改过,可以看到rpm命令在安全方面做的工作挺到位的。

rpm -V 包名

上面这个命令可以校验指定的rpm软件,我们举例yum rpm包,来说明这个校验命令如何使用。

rpm -V yum
# 执行后的结果:S.5....T.  c /etc/yum.conf

上面的执行结果有点看不懂,我们可以这么看,这个地方有三部分,第一部分是S.5....T.表示验证内容,验证码内容是什么,请看下图。

通过这个图我们分析S.5....T.是什么,S表示文件大小变化了,如果该位是.表示没有改变,那这个是哪个文件大小改变了呢,是/etc/yum.conf,也就是上面命令执行结果的第三部分。

5表示MD5校验也改变了,T表示文件的修改时间也变了,其余都为.的表示没有变化,由此可知yum软件包,它的/etc/yum.conf被修改过,确实如此,我们这里手动改动了下yum.conf文件。

上面还有一个c我们没有说,这里的c表示是文件类型是配置文件,具体由哪些文件类型呢,请看图。

除了这些,rpm命令后还可以修复rpm软件包文件丢失的问题,由于这块直接没有怎么学,也没有怎么用过,就一笔带过,感兴趣的可以了解下。

总结

rpm命令就草草的讲到这里了,其实rpm命令还不止这些,具体可以用rpm --help命令查看,不懂的参数可以看提示信息。

有些命令我说的比较简单,如果不明白可以google一下,找些资料来看看,敲一敲,学习就是这么枯燥,你不麻烦一点,忘的真的很快。学习是比较反人性的,你越轻松没有压力的学习,你就越没有什么收获,你越痛苦,不断研究,看资料对这么知识进行总结,提出自己的看法。

还有更好的做法就是交被人使用,用现在的话来说就是输出,不输出怎么知道你学的扎实,看到叫别人说的都吞吞吐吐的,看你学习的也不咋样,还得加油!!!