在使用linux系统的过程中,软件包的安装是避免不了的,在linux下,软件安装程序的种类很多,安装方法也格式各样,论安装的舒适肯定比不上windowswindows安装软件基本就是用鼠标点击下一步,如果学习linux的软件包安装,还像windows那样点击鼠标下一步安装,那就太对不起linuxshell了,linuxshelllinux的图形化界面要强大太多了。好了废话不多说了,安装软件包,首先要了解软件包的组成

      软件包由二进制文件、库文件、配置文件、帮助文件、头文件等这重要的部分组成。他们分别存放在系统的那些路径里面?

二进制文件:/bin,  /sbin,  /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

库文件:/lib,  /usr/lib, /usr/local/lib

配置文件:/etc

帮助文件:/usr/share/man,  /usr/local/share/man,  {像README, INSTALL文件主   要存放在 /usr/share/doc}

头文件:/usr/include/


1、软件包的安装方法之rpm安装的相关操作

rpm包的组成:name-version-release.arch.rpm

      name:表示包的名称,包括主包名和分包名

      version:表示包的版本信息

      release:用于标识rpm包本身的发行号,可还包含适应的操作系统

      arch:表示主机平台,noarch表示此包能安装到所以平台上面

gd-devel-2.0.35-11.el6.x86_64.rpm

      gd是这个包的主包名,devel是这个包的分包名,

      2.0.35是表示版本信息,2为主版本,0为此版本,35为修订号,

      11.el6中的11是表示发行号,el6表示是RHEL6

      x86_64是表示包适合的平台,如果是noarch这表示与平台无关




option

参数解释

Example

安装

-i

安装



-v|-vv|-vvv

显示详细信息



-h

#显示安装进度一个#表示2%的进度

rpm -ivh zsh-4.3.10-5.el6.x86_64.rpm


--nodeps

忽略依赖关系



--test

测试安装



--replacepkgs

重新安装(安装的包已经安装了)


升级

-U   -Uvh

升级+安装



-F    -Fvh

升级(此包已经安装了)



--force

有冲突强制升级



--nodeps

忽略包依赖性关系


卸载

-e

卸载

rpm  -e  包名


--nodeps

忽略包依赖性关系


查询

-q  |--query


rpm -q|--query  包名


-qa

查看所有已经安装的包

rpm -qa  查看所有包名

rpm -qa |  grep 包名查看某个包名


-qi

查看包的摘要信息



-qf

查看文件是有那个包安装的

rpm  -qf  /path/to/file


-ql

查看包安装生成的文件清单



-qc

查看包安装生成的配置文件



-qd

查看包安装生成的帮助文档



-q  --scripts

查看相关的脚本

rpm -q--script   包名


-qp[i|l|d|c]

查看尚未安装包的详细信息

rpm -qpi /path/to/rpm_file

校验

-V


rpm -V   包名

数据库管理

--initdb

新建

rpm  --initdb


--rebuilddb

重建

rpm  --rebuilddb



2、软件包的安装方法之yum安装的相关操作

    yum(Yellowdog Update  Manager),yumRPM的前端工具,是基于RPM的一个管理工具,他能自动的解决安装rpm包产生的依赖关系。

    yum的配置文件    /etc/yum.conf

    yum  repository仓库的配置文件/etc/yum.repos.d/*.repo


yum仓库的搭建是使用yum安装的前提,如何搭建一个好的yum仓库?

     1)首先要在yum仓库的文件(/etc/yum.repos.d/)中建立一个以.repo结尾的文件;

     2)[  ]方括号里面是写仓库的ID(repository_ID),名称可以随便取,但必须唯一;

     3)name是yum的名称也可以随便取,也必须唯一;

     4)baseurl指定你可以能通过本机、http或者ftp访问到那些rpm包的所在路径,该路径下必须有一个    

        repodata的文件,比如/media下面有那个repodata的文件,那你的baseurl指向/media/,如果  

是/media/Server下面有那个repodata的文件,那你的baseurl指向 /media/Server/目录;

     5)enabled默认为11表示启用此仓库,0表示不启,

     6)gpgcheck默认也是为11表示检查公钥,当检查公钥时要指定gpgkey的地址,0表示不检查,不

        检查公钥就不用指gpgkey的地址,如果是本地光盘搭建yum仓库,则可以设置gpgcheck=0

     7)当gpgcheck=1时,gpgkey指向包含RPM-GPG-KEY-CentOS-6这个文件的路径

     8)cost是表示花费代价,cost默认是2000,越小越先访问

用光盘搭建本地yum仓库的方法:

mount/dev/cdrom   /media
cat>> /etc/yum.repos.d/iso.repo< 
    


搭建外网的yum仓库(sohuyum仓库)的方法

cat>> /etc/yum.repos.d/sohu.repo< 
    

$releasever:表示你的系统的版本,变量会自动的检测你的版本


$basearch:表示CPU的架构,是x86_64,还是i386系列



如果自己在网上下载了很多rpm软件包,也想搭建一个yum仓库,则使用createrepo

createrepo会生成一个repodata的软件信息仓库文件,然后搭建该目录的yum仓库

rpm包可以在下面两个网站去搜索

http://rpm.phone.net

http://www.rpmfind.net

http://pkgs.org/



cat>> /etc/yum.repos.d/xen.repo << EOF
[xen]
name=centos-xen
baseurl=file:///root/xen-4.1  #存放软件的路径且路径中有repodata这个文件
gpgcheck=0
EOF

搭建完xen的yum后,可以用yum安装xen了

yum常用的命令:


操作命令

命令解释

列表

yum list  

列出指定安装软件的清单


yum list installed

列出所有已安装的软件包


yum list extras

列出所有已安装但不在 Yum  仓库內的软件包


yum grouplist

列出所有的组


yum grouplist "Group1"

列出指定组的软件包列表

安装

yum -y install  

安装指定的软件


yum  -y groupinstall   "Group1"  "Group2"  

安装指定的组


yum -y localinstall

yum安装下载到本地的rpm

更新

yum check-update

列出所有可更新的软件清单


yum update

安装所有更新软件


yum update  

更新指定的软件

信息

yum  info

显示所有包的信息


yum  info

显示指定包的信息


yum  groupinfo "Group1"   "Group2"

显示指定组的信息

清除

yum clean all

清除所有yum所保存的信息


yum clean metadata

只清空保存的数据信息

其它操作

yum  repolist [all|enable|disable]

查看yum仓库的个数,默认显示启用的


yum   makecache

手动生成缓存


yum search  

查询rpm包


yum reinstall  

重新安装一遍


yum provides  

列出软件包提供哪些文件


yum安装开发组

(RHEL6.x)

yum  -y groupinstall        "DesktopPlatform Development"     "Development  tools"  "Server Platform Development"

(RHEL5.x)

yum  -y  groupinstall       "Development  tools " "Development  Libraries"


3、软件包安装之tar源码包编译安装

tar编译安装的三部曲:

     在安装三部曲之前,建议先看看解压之后目录里面的包含README, INSTALL文件,这里面的文件会告诉你详细安装步骤。

    1)configure        检测编译环境

     2)make               进行编译

     3)make install     编译安装

http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.25.tar.bz2

下载apache的tar源码包地址

#安装tar源码包可以先安装开发工具,可以减少安装相关的依赖性包
[root@Redhat6 ~]# yum  -y groupinstall   "DesktopPlatform Development"     "Development tools"  "Server Platform Development"
[root@Redhat6 ~]#tar xf httpd-2.2.25.tar.bz2    #先解压
[root@Redhat6 ~]# cd httpd-2.2.25  #进入到解压后的目录
[root@Redhat6 httpd-2.2.25]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite   #检查编译环境
[root@Redhat6 httpd-2.2.25]# make  #编译
[root@Redhat6 httpd-2.2.25]# make install  #编译安装
[root@Redhat6 httpd-2.2.25]# cd /usr/local/apache  #进入到安装的目录下面
[root@Redhat6 apache]# ls    #查看安装生成了那些文件
bin    cgi-bin  error   icons    lib   man     modules
build  conf     htdocs  include  logs  manual

tar安装包后需要修改几个地方,使得tar安装包后能与系统识别的路径相关联

1)、改PATH环境变量

写到/etc/profile.d/*.sh------>source /etc/profile 里面写安装软件后bin的路径

echo"PTAH=/usr/local/apache/bin:$PATH">>/etc/profile.d/apache.sh
source/etc/profile

或者直接 export PATH=/usr/local/apache/bin:$PATH


2)、添加库文件的搜索  /etc/ld.so.conf/    etc/ld.so.conf.d/*.conf

在/etc/ld.so.conf.d/*.conf   lib的路径  ldconfig -v    

echo"/usr/local/apache/lib">>/etc/ld.so.conf.d/apache.conf
ldconfig -v| grepapache


3)、帮助文档的使用  /etc/man.conf    MANPATH

/etc/man.config man手册的路径

echo"MANPATH /usr/local/apache/man ">>/etc/man.config

然后就可以直接使用man httpd等命令了,不在配置文件中指定路径可以直接

man -M /usr/local/apache/man httpd


4)、关联系统所识别的头文件

把头文件的路径链接到系统头文件中, ln  -sv 源  目的  /usr/include

ln-sv /usr/local/apache/include//usr/include/apache

做完这些操作后源码包安装的软件的使用方法可以和rpm安装的使用方法相似了

[root@Redhat6 ~]# apachectl start    #开启服务


4、软件包安装之rpm源码包src安装

1)先用rpm安装rpm源码包生成spec文件,这个文件在用户家目录的rpmbuild目录下的SPECS里面

      2)在用rpmbuild编译spec文件生成rpm文件

      3)然后用rpm或者yum安装生成的rpm包


下载nginx的rpm源码包,通过此包来安装nginx,所需包的下载地址

http://mirrors.sohu.com/fedora-epel/6Server/SRPMS/nginx-1.0.15-5.el6.src.rpm

ftp://195.220.108.108/linux/epel/6/x86_64/GeoIP-devel-1.4.8-1.el6.x86_64.rpm

ftp://195.220.108.108/linux/epel/6/x86_64/GeoIP-1.4.8-1.el6.x86_64.rpm


[root@Redhat6 opt]#yum -y install rpm-build
[root@Redhat6 opt]#useradd -r mockbuild  #先添加一个用于安装src包的系统用户
[root@Redhat6 opt]#rpm -ivh nginx-1.0.15-5.el6.src.rpm  #在安装src包,安装完成后会再用户的家目录生成一个rpmbuild的文件
[root@Redhat6 ~]# cd ~/rpmbuild/
[root@Redhat6 rpmbuild]# ls
SOURCES  SPECS
[root@Redhat6 rpmbuild]# cd SPECS/
[root@Redhat6 SPECS]# ls
nginx.spec
[root@Redhat6 SPECS]# rpmbuild -ba nginx.spec  #编译rpm源码包
error: Failed build dependencies:  #需要解决依赖性包,GeoIP-devel包可以在网上下载
    GeoIP-devel is needed by nginx-1.0.15-5.el6.x86_64
    gd-devel is needed by nginx-1.0.15-5.el6.x86_64
    libxslt-devel is needed by nginx-1.0.15-5.el6.x86_64
    pcre-devel is needed by nginx-1.0.15-5.el6.x86_64
#在网上下载这些包了之后用yum安装解决依赖性
[root@Redhat6 opt]#yum -y install  GeoIP-1.4.8-1.el6.x86_64.rpm GeoIP-devel-1.4.8-1.el6.x86_64.rpm  libxslt-devel pcre-devel gd-devel
[root@Redhat6 rpmbuild]# cd SPECS/
[root@Redhat6 SPECS]# rpmbuild -ba nginx.spec   #编译生成rpm包
[root@Redhat6 SPECS]# cd /root/rpmbuild/
[root@Redhat6 rpmbuild]# ls
BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS
[root@Redhat6 rpmbuild]# cd RPMS/
[root@Redhat6 RPMS]# ls
x86_64
[root@Redhat6 RPMS]# cd x86_64/
[root@Redhat6 x86_64]# ls
nginx-1.0.15-5.el6.x86_64.rpm  nginx-debuginfo-1.0.15-5.el6.x86_64.rpm
[root@Redhat6 x86_64]# rpm -ivh nginx-1.0.15-5.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:nginx                  ########################################### [100%]
[root@Redhat6 x86_64]# service nginx start
Starting nginx:                                            [  OK  ]



通过rpm源码包安装的访问已经能够成功了。