通常的linux软件格式包括:node
源码包:linux
linux刚开始的时候,软件都是这种形式。如今有不少的开源软件依然采用这种格式,好比Apache安装包httpd-2.2.9.tar.gz
就是一个源码包。apache
源码包具备提供修改源码,自由选择所需功能,编译安装更加适合本身系统,更稳定高效的特色。固然在linux,若是想卸载源码包安装的软件,只须要删除它所在的目录就行。vim
可是在安装一些大型软件集合时,容易出现编译错误。而且因为须要编译的过程,因此安装时间较长。安全
二进制包:服务器
通过编译后的代码包。网络
它具备安装、查询、更新、卸载等操做简单快速等特色。函数
也所以丧失了查看源代码的能力,而且在定制功能方面不如源码包。网站
rpm包每每不是独立的,一个rpm包可能与另一个或者多个rpm包依赖。也就是说,在没有安装另外的rpm包以前,这个rpm包是没法安装或者没法正常运行,这称为依赖。url
依赖分为:
对于树形依赖,是比较好解决的,咱们只须要按照依赖顺序,先安装c,再安装b,再安装a就行。可是对于环形依赖,从逻辑上看咱们是没有办法解决,但只要咱们将a,b,c这三个rpm包写在一条安装命令中即可以解决。
模块依赖通常是在安装某个rpm时,系统提示如libodbcinst.so.2 is needed by ...
,这时候咱们只有知道libodbcinst.so.2
库函数所在的rpm包,并安装该rpm包后,才能继续安装。RedHat给咱们提供了一个网站,www.rpmfind.net,经过这个网站输入库函数的名称,便能查询出所在的rpm包。
对于rpm包的获取,咱们能够在linux的安装光盘的packages文件夹中找到rpm包,也多是在网络上下载到一个rpm包。
安装前须要申明的是,对于包含版本号等信息的包名,咱们称之为包全名,如httpd-2.2.9.tar.gz
.对于没有版本号,只有软件名称的,咱们称之为包名,如httpd
。
安装命令:
rpm -ivh 包全名
选项:
安装命令:
rpm -Uvh 全包名
选项:
卸载软件:
rpm -e 包名
选项:
若是你实操过用rpm -ivh httpd-2.2.9.tar.gz
安装apache,你会以为安装软件是一件特别头疼的事,由于各类依赖须要咱们去解决。所以RatHat为咱们提供了yum在线安装的方法(后续会讲到,而且咱们平时可能更愿意去使用yum在线安装),可是yum安装软件通常只用来安装、升级和卸载,对于RPM包的查询主要仍是依赖于rpm命令,所以这部份内容仍是比较关键的。
查询包是否安装:
rpm -q 包名
查询全部安装的包(很是经常使用):
rpm -qa 包名
,rpm -qa | grep 包名
等同于rpm -q 包名
查询软件包的安装位置(经常使用):
rpm -ql 包名
查询已安装包的位置 或者 rpm -qlp 包全名
查询未安装包安装后的位置
通常的RPM包默认安装路径
路径 | 存放信息 |
---|---|
/etc/ | 配置文件安装目录 |
/urs/bin | 可执行的命令安装目录 |
/usr/lib | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man | 帮助文件保存位置 |
查询系统文件属于哪一个RPM包:
rpm -qf 系统文件名
查询软件包的依赖性:
rpm -qR 包名
查看已安装的包的依赖关系 或者 rpm -qRp 包全名
查询未安装的包的依赖关系,由于它的命令中会出现好多基础或者已经安装过的rpm包很难分辨,所以不太经常使用。
查询软件包的详细信息:
rpm -qi 包名
查看已安装的包信息 或者 rpm -qip 包全名
查询未安装的包信息
rpm -V 已安装的包名
选项:
用于文件完整性的检验。检测已安装文件和包安装后的初始文件是否有变更,或者未安装的包是否为指定md5码的包文件。
验证内容中的8个信息的具体内容以下:
如:5....T.
5表示MD5改变,T表示修改时间改变
文件类型
如:5....T. c
c表示修改的这个文件是一个配置文件
若是不当心删除了系统中某个软件的信息,一般咱们会从别的地方拷贝一份到咱们的电脑上。固然它可选的有不少个途径,其中之一就是咱们经过它的安装rpm包中获取该文件,并拷贝。
rpm2cpio
cpio -idv
如:rpm2cpio /media/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv /usr/bin/ls
为了解决rpm的超强依赖性带来的安装麻烦,RedHat为咱们提供了yum在线安装,固然其余Linux系统也提供了其余命令。RadHat用本身的服务器搭建了包资源库,并经过yum命令让咱们不用关心依赖,自动解决依赖性安装一些软件。
通俗的讲,经过yum安装时,yum源在什么地方?
一般在/etc/yum.repos.d/CentOS-Base.repo
中
第一步:将原有的yum复制一份,好比cp CentOS-Base.repo CentOS-Base.repo.bak
第二步:修改CentOS-Base.repo文件中的baseurl为file:///media/...
,表示你光盘的挂载点
查询指定包名的包列表:
yum search 包名
查询yum源中全部能够安装的包列表:
yum list
,yum list | grep 包名
至关于yum search
安装,自动回答yes:
yum -y install 包名
在安装过程当中,会不断询问是否要安装某个rpm包,-y
表示
全部都选yes
升级,自动回答yes:
yum -y update 包名
,请勿在不使用包名的状况下使用该命令
卸载(就当这里没有讲这个命令,工做中千万别使用这个命令):
yum -y remove 包名
,服务器使用最小化安装,尽可能不要卸载。由于卸载的依赖包可能会被系统依赖。
列出全部可用的软件组:
yum grouplist
安装指定软件组:
yum groupinstall 软件组名
卸载软件组名:
yum groupremove 软件组名
咱们在第一部分就已经讲过二进制包和RPM包的区别,对于这些区别就再也不赘述。下面再说一个区别:源码包和RPM包安装后的安装位置不一样。
一般咱们安装rpm包的时候,不会去指定它的安装位置,安装结束后的位置通常在通常的RPM包默认安装路径表格中给出的位置(该位置由软件开发者设定,不全是如此)。
而对于源码包的安装,必定要手工指定,通常能够放在/urs/local/软件名/
下。
这就致使了:
rpm -e
命令卸载,而源码包只要删除安装目录便可。在平时的使用过程当中,咱们应该注意区分。
安装前的准备
全部的源码包都使用c语言编写,所以在安装源码包以前咱们须要检测系统中是否有c语言环境,输入rpm -qa | grep gcc
即可查看。
若是没有安装gcc,使用yum在线安装一个gcc(不要去gcc官网下载源码包安装,由于gcc的源码包也是须要c语言环境)。
下载源码包
通常的源码包以.tar.gz
结尾,这里就不介绍下载源码包了。
解压缩源码包
通常建议,源码包保存在:/usr/local/src/
,软件安装在:/usr/local/
在适当的目录(你以为合适就行),使用命令tar -zxvf 源码包全名
解压缩源码包。
进入解压缩目录
使用cd命令进入到源码包解压缩以后的目录中,这步是必须作。
进入目录后,咱们甚至可使用vim INSTALL
来查看软件须要的安装步骤
执行./configure
完成软件配置与检查
该命令能够设置安装参数,检测安装环境是否具有等,而且他能把一些信息写入到Makefile文件中。你可使用./configure --help
来查看有哪些配置项
咱们使用./configure --prefix=/usr/local/软件名
指定安装路径,其余选项能够经过帮助查看。若是没有出现error、warning、no提示,则表示成功。
执行make
命令编译软件
使用make
编译软件,在过程当中若是出现错误,可使用make clean
清理以前的make文件,从新make
.
执行make install
安装软件
输入make install
后,等待一段时间,没有报错并顺利中止则表示安装成功。
软件的启动
启动文件通常在安装目录的bin/
目录下,切换到bin/
目录下后使用./启动程序 start
即可以启动。
至此,源码包就安装完成了。
值得注意的是,.tar.gz
是一种打包压缩格式,并不是以该后缀名下载的软件包都是源码包,有的是已经安装好的二进制包,解压后即可以使用。其最根本的区别是源码包包含src/
目录和configure
文件,二进制包通常包含bin/
目录