在使用linux系统的过程中,软件包的安装是避免不了的,在linux下,软件安装程序的种类很多,安装方法也格式各样,论安装的舒适肯定比不上windows,windows安装软件基本就是用鼠标点击下一步,如果学习linux的软件包安装,还像windows那样点击鼠标下一步安装,那就太对不起linux的shell了,linux的shell比linux的图形化界面要强大太多了。好了废话不多说了,安装软件包,首先要了解软件包的组成。
软件包由二进制文件、库文件、配置文件、帮助文件、头文件等这重要的部分组成。他们分别存放在系统的那些路径里面?
二进制文件:/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),yum是RPM的前端工具,是基于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默认为1,1表示启用此仓库,0表示不启,
6)gpgcheck默认也是为1,1表示检查公钥,当检查公钥时要指定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仓库(sohu的yum仓库)的方法
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源码包安装的访问已经能够成功了。