天天看点

Linux系统软件包安装

示例:

开源,如果有足够的能力,可以修改源代码

可以自由选择所需的功能

软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高

卸载方便

安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误

编译过程时间较长,安装比二进制安装时间长

因为是编译安装,安装过程中一旦报错新手很难解决

DPKG包:是由Debian Linux所开发出来的包管理机制,通过DPKG包,Debian Linux就可以进行软件包管理。主要应用在Debian和unbuntu中

RPM包:是由Red Hat公司所开发的包管理系统;功能强大,安装、升级、查询和卸载都非常简单和方便。目前很多Linux都在使用这种包管理方式,包括Fedora、CentOS、SuSE等。

包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

安装速度比源码包安装快的多

经过编译,不再可以看到源代码

功能选择不如源码包灵活

依赖性。

软件包a------------->软件包b-------------->软件包c

树形依赖 a--------->b--------->c

环形依赖 a--------->b--------->c--------->a

函数库依赖

<code>httpd-2.2.15-15.el6.centos.1.i686.rpm</code>

httpd

软件包名

2.2.15

软件版本

15

软件发布的次数

el6

软件发行商。el6是Redhat公司发布,适合RHEL6.x(RedHat Enterprise Linux)和CentOS6.x下使用

i686

适合的硬件平台。RPM包可以在不同的硬件平台安装,选择适合不同CPU的软件版本,可以最大化的发挥CPU性能,所以出现了所谓的i386(386以上计算机都可以安装)、i586(586以上的计算机都可以安装)、i686(奔腾II以上计算机都可以安装,目前所有的CPU都是奔腾II以上,所以这个软件版本居多)、x86_64(64位CPU可以安装)和noarch(没有硬件限制)等文件名。

rpm

rpm包的扩展名。Linux下文件不是靠扩展名区分文件类型,也就是Linux中扩展名没有任何含义。如果RPM包不用“.rpm”作为扩展名,系统可以正确识别没有问题,可是管理员很难识别这个是什么样的软件。

包全名:如果操作的是未安装软件包,则使用包全名,而且需要注意绝对路径

包名:如果操作的是已经安装的软件包,则使用包名即可,系统会生产RPM包的数据库(/var/lib/rpm/),而且可以在任意路径下操作

RPM包默认安装路径

释义

/etc/

配置文件安装目录

/usr/bin/

可执行的命令安装目录

/usr/lib

程序所使用的的函数库保存位置

/usr/share/doc

基本的软件使用手册保存位置

/usr/share/man

帮助文件保存位置

安装命令

--nodeps 不检测依赖性安装。软件安装时会检测依赖性,确定所需的底层软件是否安装;如果没有安装则会报错;如果不管依赖性,想强行安装,可以使用这个选项。

--replacefiles 替换文件安装。如果安装软件包,可是包中部分文件已经存在,那么正常安装时候,会报错“某个文件已经存在”从而导致软件无法安装,使用这个选项可以忽视这个报错,而覆盖安装。

--replacepkgs 替换软件包安装。如果软件包已经安装,此选项可以把软件包重复安装一遍。

--force 强制安装。不管是否已经安装,都重新安装。就是--replacefiles和--replacepkgs的综合

--test 测试安装。不会实际安装,只是检测一下依赖性。

--prefix 指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。注意:如果指定了安装路径,软件没有安装到系统默认路径中的话,系统会找不到这些安装的软件,需要进行手工配置才能被系统识别。所以rpm包我们一般都采用默认路径安装。

服务启动

rpm包升级

卸载

查询

查询软件包是否安装,命令格式如下:

查询系统中的所有安装软件包,命令格式如下:

查询软件包的详细信息,命令格式如下:

查询软件包中的文件列表

查询系统文件属于哪个RPM包

既然知道每个RPM包中的文件安装位置,那么也可以查询系统文件属于哪个RPM包;不过需要注意的是,手工建立的文件是不能查询的,因为这些文件不是通过RPM包安装的,当然不能反向查询它属于哪个RPM包。命令格式如下:

查询软件包所依赖的软件包

验证

基本命令

数字证书

如果RPM包本身被动过,那么校验就不能解决问题了。我们就必须使用数字证书验证。

数字证书有如下特点:

首先必须找到原厂的公钥文件,然后进行安装

再安装RPM包,会去提取RPM包中的证书信息,然后和本机安装的原厂证书进行验证

如果验证通过,则允许安装;如果验证没通过,则不允许安装并警告

​ yum源配置文件保存在/etc/yum.repos.d/目录中,文件的扩展名一定是“.repo”。也就是说,yum源配置文件只要扩展名是“\.repo”就会生效。

在CentOS-Base.repo文件中有5个yum源容器,这里只列出了base容器,其他容器和base容器类似。我们解释一下base容器

[base] 容器名称,一定要放在[]中

name 容器说明,也可以自己随便写

mirrorlist 镜像站点,这个可以注释掉

baseurl 我们的yum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的。如果你觉得慢,则可以改成你喜欢的yum源地址

enabled 此容器是否生效,如果不写或写成enabled=1,则表示此容器生效;写成enabled=0,则表示此容器不生效。

gpgcheck 如果为1则表示RPM的数字证书生效;如果为0,则表示RPM的数字证书不生效。

gpgkey 数字证书的公钥文件保存位置;不用修改。

第一步:放入CentOS安装光盘,并挂载光盘到指定位置;命令如下:

第二步:修改其它几个yum源配置文件的扩展名,让它们失效,因为只有扩展名是“*.repo”的文件才能作为yum源配置文件。当然也可以删除其它几个yum源配置文件,但是如果删除了,当你又想用网络作为yum源时,就没有了参考文件,所以最好还是修改扩展名。命令如下:

第三步:修改光盘yum源配置文件CentOS-Media.repo,参照以下方法修改:

查询yum源服务器上所有可安装的软件包列表

查询yum源服务器中是否包含某个软件包

搜索yum源服务器上所有和关键字相关的软件包。

yum search搜索可以用于确定某个软件在那个相关包当中。此例子可以确定“ifconfig”命令需要安装“net-tools”包

查询指定软件包的信息

安装

升级

​ 注意:在进行升级操作时,yum源服务器中软件包的版本比本地安装的软件包的版本高。

除非您确定卸载的软件依赖包不会对系统产生影响,否则不要执行yum的卸载,因为很有可能在卸载软件包的同时卸载的依赖包也是重要的系统文件,这就有可能导致系统崩溃。卸载命令如下:

查询可以安装的软件组

查询软件组内包含的软件

安装软件组

卸载软件组

1.1 应该选择哪种软件包

如果软件包是给大量客户提供访问,建议使用源码包安装,如LAMP环境搭建,因为源码包效率更高。

如果软件包是给Linux底层使用,或只给少量客户访问,建议使用rpm包安装,因为rpm包简单

1.2 源码包从哪儿来

rpm包是光盘中直接包含的,所以不需要用户单独下载。而源码包是通过官方网站下载的,如果需要使用,是需要单独下载的。

1.3 是否可以在系统中即安装rpm包的Apache,又安装源码包的Apache?

答案是可以,因为两种安装方法安装的Apache,安装位置是不一样的,例如:

RPM包:不建议指定安装位置的,建议安装在默认位置(RPM包安装的服务有标准卸载命令,不怕文件到处安装)

源码包:必须制定安装位置(源码包没有安装数据库,没有删除命令)

1) 下载软件包

2) 解压缩

3) 进入解压目录

4) ./configure 编译前准备

这一步主要有三个作用:

在安装之前需要检测系统环境是否符合安装要求。

定义需要的功能选项;“./configure”支持的功能选项较多,可以执行“./configure --help”;命令查询其支持的功能。一般都会通过“./configure --prefix=安装路径”指定安装路径。

把系统环境的检测结果和定义好的功能选项写入Makefile文件,后续的编译和安装需要依赖这个文件的内容。

需要注意的是,configure不是系统命令,而是源码包软件自带的一个脚本程序,所以必须采用"./configure"方式执行(“./”代表在当前目录下)

5). make 编译

make会调用gcc编译器,并读取Makefile文件中的信息进行系统软件编译。编译的目的就是把源码程序转变为能被Linux识别的可执行文件,这些可执行文件保存在当前目录下。编译过程较为耗时,需要有足够的耐心。

6). make clean 清空编译内容

如果在“./configure”或“make”编译中报错,那么我们在重新执行命令前一定要记得执行make clean命令,它会清空Makefile文件或编译产生的“.o”头文件。

7). make install 编译安装

这才是真正的安装过程,一般会写清楚程序的安装位置。如果忘记指定安装目录,则可以把命令的执行过程保存下来,以备将来删除使用。

​ 源码包没有删除命令,如果需要删除,直接删除安装目录即可。

例如:

继续阅读