Linux下的软件安装对于初学者来说非常糊涂和混乱,并不像windows操作系统一样简单易懂,要想灵活的使用Linux系统,掌握软件安装方法必不可少。
软件安装的方法:(redhat系列,如果的debian则使用dpkg和apt-get)
1.rpm安装 2.yum在线安装3.源码包安装4.脚本安装。
安装的软件包,也就是安装包分为下面两类:
1.源码包(tar.gz) 2.二进制包rpm包
源码包
优点:1.开源 2.可以自由选择其中功能 3.编译安装,系统效率更高4.卸载方便
缺点:1.安装较为麻烦 2.编译时间长3.出问题不容易解决。
二进制包(rpm包)
优点:1.简单 2.安装速度快,因为是二进制文件。
缺点:1.看不到源码 2.功能选择不多 3.软件依赖性麻烦。
接下来我们先了解rpm包。
首先要了解rpm包的命名规则:
我们随便找一个rpm包:
mysql-connector-odbc-5.2.5-6.el7.x86_64.rpm
mysql-connector-odbc是包名,5.2.5为版本号,6为升级次数,el7表明这是linux平台使用,x86_64说明硬件体系为64位机。
rpm包是怎么来的呢?
1.网上下载 2.安装的光盘中的/Packet目录
挂载光盘使用mount就可以了,进入查看Packet目录就可以看到所有的rpm包了。
接下来我们需要知道,rpm包存在依赖关系,也就是说,当前这个rpm包安装的软件需要在其他软件的支持下才能运行,这就需要依赖关系了。
依赖关系可以简单的分成以下几种:
1.树形依赖 a->b->c这个时候,想要装a软件,依赖于b,b又依赖于c,所以安装顺序为c,b,a。
2.环形依赖 a->b->c->a这个时候,我们想要安装好其中一个软件的话,就需要三个软件同时安装,也就是在同一条命令下安装。否则不能成功。
3.模块依赖 依赖于某个模块,而不是某个包。具体的就是依赖某个.so.2文件。
模块依赖比较麻烦,因为我们并不知道这个模块到底属于哪个包的,要安装的包包含了这个模块,依赖就完成了。
那么我们怎么知道哪个模块在哪个包中呢?
linux给我们提供了一个网站去查询:www.rpmfind.net。当我们需要某个模块的时候,上去搜索就能知道对应的包是哪个了。
那么如何使用命令安装呢?
安装命令:
rpm -ivh 包全名
i:
install
v:
verbose详细信息
h:
hash进度
升级:
rpm -Uvh 包全名
卸载:
rpm -e 包名
我们也可以通过rpm查询有关的东西。
例如
查询包是否安装:
rpm -q 包名
查看所有已经安装的rpm软件:
rpm -qa
查看已安装包的详细信息:
rpm -qi 包名
查看某个文件对应的安装rpm包:
rpm -qip 文件
查看这个包安装软件的位置:
rpm -ql 包名
查看未安装包的详细信息:
rpm -qip 包全名
等等。
对于rpm安装的文件,我们不能设定安装文件的路径。
那么文件到底安装在哪里呢?安装文件的路径由rpm包的编写者来决定。
不过一般会默认保存在以下目录:
/etc/ 配置文件
/usr/bin/ 可执行文件
/usr/lib/ 函数库
/usr/share/doc 使用手册
/usr/share/man 帮助文件
当然这个只是默认的,没有强制性规定,一些命令执行文件如果是比较重要的也可能会放在/sbin目录下,只允许root调用。
rpm也提供一些校验功能。
rpm -V 包名
如果这个包对应的安装文件如果被修改,可以查到一些信息,让我们做出判断。
一般安装rpm都是所有文件安装,如果我们只需要其中一部分呢?
也可以做到,使用rpm2cpio:
rpm2cpio 绝对路径包全名 | cpio -idv 提取的文件
即可得到文件。
rpm安装非常麻烦,安装a,需要依赖b,b可能又依赖c,d。c,d又依赖别的...这样就弄的很烦。
所以linux提供了一个成为yum的软件管理工具。
通过yum我们可以不需要考虑这些繁琐的依赖关系,让安装变得非常简单,一条命令全自动完成!
yum在red Hat中是需要付费才能使用的。。。所以我们使用centOs。
对于yum,我们首先需要知道yum源文件在哪里,是如何生效的。
yum源文件存放在/etc/yum.repos.d/中。
[root@localhost Packages]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
默认是CentOS-Base文件起作用。
以下是CentOS-Base.repo文件中其中一部分。
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
简单的了解一下,就是说yum的源rpm包会在mirrorlist中的url中获取,大致就是这个意思。下面的gpg..的是为了安装着想的ssh。
我们联网的时候就可以自动到这个url上面访问得到rpm包了。
yum命令
yum list
查询所有可以用的软件包
yum search
查询对应的软件包。其实更习惯于使用yum list | grep ...
yum -y install 包名
安装
yum -y update 包名
升级
yum -y remove 包名
卸载
yum也提供一种组包的形式让我们安装。
直接安装一组rpm包,我们就不需要去了解实现这个功能需要哪些包,省去了大麻烦。
yum grouplist
列出组列表
yum groupinstall 组名
安装组包
yum groupremove 组名
卸载组包
rpm包研究的差不多了,那么源码包呢?源码包是怎么安装的?
源码包和rpm包在安装了之后的区别在于,安装文件的路径不同。
rpm包安装的路径是由rpm包作者决定的,所以会安装的到处都是,幸好我们有rpm -e可以完全删除。
源码包安装文件的路径则是完全由我们来决定的。
源码包的安装文件一般安装在/usr/local/目录下。
源码包一般会放在/usr/local/src下,当然你安装完删除掉也没有问题。
要安装源码包,因为要经过编译的步骤,所以linux操作系统中起码需要gcc编译器,否则不能安装。
可以使用rpm安装gcc编译器。
源码包安装方法如下:
1.下载源码包,一般是tar.gz
2.解压源码包。
3.进入解压之后的文件目录。
4.使用./configure进行软件配置和检查。一般会加上安装文件的位置:--prefix=/usr/local/文件名
./configure有什么作用呢?
1.定义软件的功能,软件可选的功能都在这里定义,比rpm灵活。
2.检测环境是否符合软件安装要求。
执行了./configure之后,会在当前目录中生成一个Makefile文件,这个Makefile文件是安装文件,通过它我们就可以编译并生成可执行文件。
使用Makefile非常简单,make编译,make install安装即可。
对于使用源码包安装的文件,只需要删除对应的目录即可删除这个软件。非常干净。
对于源码包的安装过程,在源码的INSTALL文件中有详细的介绍,可以通过这个文件去明白安装的方法。
最后我们需要讨论一下脚本安装包:
脚本安装包的意思就是别人写好了一个脚本,我们只需要执行这个脚本就可以达到一键安装的效果,非常简单快捷。
好处就是快,安装速度快。坏处同样也是显而易见的,就是我们没办法自己控制安装的过程。
脚本安装包一般都是安装rpm。
如果需要脚本安装包,可以去这个链接中查看:https://lnmp.org/
非常简单,只需要下载其中的脚本,执行就可以安装了。
其实质不过也是调用命令安装,不过确实非常方便。