在使用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
有冲突强制升级
忽略包依赖性关系
卸载
-e
rpm -e 包名
查询
-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
<a target="_blank" href="http://blog.51cto.com/attachment/201307/094646713.png"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201307/094717497.png"></a>
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仓库的方法:
1
2
3
4
5
6
7
8
<code>mount</code><code>/dev/cdrom</code> <code>/media</code>
<code>cat</code><code>>> </code><code>/etc/yum</code><code>.repos.d</code><code>/iso</code><code>.repo<<EOF</code>
<code>[iso]</code>
<code>name=centos6.4-x86_64</code>
<code>baseurl=</code><code>file</code><code>:</code><code>///media/</code>
<code>gpgcheck=0</code>
<code>enable</code><code>=1</code>
<code>EOF</code>
搭建外网的yum仓库(sohu的yum仓库)的方法
<code>cat</code><code>>> </code><code>/etc/yum</code><code>.repos.d</code><code>/sohu</code><code>.repo<<EOF</code>
<code>[sohu]</code>
<code>name=Internet-centos</code>
<code>baseurl=http:</code><code>//mirrors</code><code>.sohu.com</code><code>/centos/</code><code>$releasever</code><code>/os/</code><code>$basearch</code>
<code>gpgcheck=1</code>
<code>gpgkey=http:</code><code>//mirrors</code><code>.sohu.com</code><code>/centos/RPM-GPG-KEY-CentOS-6</code>
$releasever:表示你的系统的版本,变量会自动的检测你的版本
$basearch:表示CPU的架构,是x86_64,还是i386系列
如果自己在网上下载了很多rpm软件包,也想搭建一个yum仓库,则使用createrepo
createrepo会生成一个repodata的软件信息仓库文件,然后搭建该目录的yum仓库
rpm包可以在下面两个网站去搜索
<a href="http://rpm.phone.net/">http://rpm.phone.net</a>
<a href="http://www.rpmfind.net/">http://www.rpmfind.net</a>
<a href="http://pkgs.org/">http://pkgs.org/</a>
<a target="_blank" href="http://blog.51cto.com/attachment/201307/103521896.png"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201307/103641463.png"></a>
<a target="_blank" href="http://blog.51cto.com/attachment/201307/103553135.png"></a>
<code>cat</code><code>>> </code><code>/etc/yum</code><code>.repos.d</code><code>/xen</code><code>.repo << EOF</code>
<code>[xen]</code>
<code>name=centos-xen</code>
<code>baseurl=</code><code>file</code><code>:</code><code>///root/xen-4</code><code>.1 </code><code>#存放软件的路径且路径中有repodata这个文件</code>
搭建完xen的yum后,可以用yum安装xen了
<a target="_blank" href="http://blog.51cto.com/attachment/201307/104159653.png"></a>
yum常用的命令:
操作命令
命令解释
列表
yum list <package_name>
列出指定安装软件的清单
yum list installed
列出所有已安装的软件包
yum list extras
列出所有已安装但不在 Yum 仓库內的软件包
yum grouplist
列出所有的组
yum grouplist "Group1"
列出指定组的软件包列表
yum -y install <package_name>
安装指定的软件
yum -y groupinstall "Group1" "Group2"
安装指定的组
yum -y localinstall <package_name>
用yum安装下载到本地的rpm包
更新
yum check-update
列出所有可更新的软件清单
yum update
安装所有更新软件
yum update <package_name>
更新指定的软件
信息
yum info
显示所有包的信息
yum info <package_name>
显示指定包的信息
yum groupinfo "Group1" "Group2"
显示指定组的信息
清除
yum clean all
清除所有yum所保存的信息
yum clean metadata
只清空保存的数据信息
其它操作
yum repolist [all|enable|disable]
查看yum仓库的个数,默认显示启用的
yum makecache
手动生成缓存
yum search <package_name>
查询rpm包
yum reinstall <package_name>
重新安装一遍
yum provides <package_name>
列出软件包提供哪些文件
用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 编译安装
<a href="http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.25.tar.bz2">http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.25.tar.bz2</a>
下载apache的tar源码包地址
9
10
11
<code>#安装tar源码包可以先安装开发工具,可以减少安装相关的依赖性包</code>
<code>[root@Redhat6 ~]</code><code># yum -y groupinstall "DesktopPlatform Development" "Development tools" "Server Platform Development"</code>
<code>[root@Redhat6 ~]</code><code>#tar xf httpd-2.2.25.tar.bz2 #先解压</code>
<code>[root@Redhat6 ~]</code><code># cd httpd-2.2.25 #进入到解压后的目录</code>
<code>[root@Redhat6 httpd-2.2.25]</code><code># ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite #检查编译环境</code>
<code>[root@Redhat6 httpd-2.2.25]</code><code># make #编译</code>
<code>[root@Redhat6 httpd-2.2.25]</code><code># make install #编译安装</code>
<code>[root@Redhat6 httpd-2.2.25]</code><code># cd /usr/local/apache #进入到安装的目录下面</code>
<code>[root@Redhat6 apache]</code><code># ls #查看安装生成了那些文件</code>
<code>bin cgi-bin error icons lib </code><code>man</code> <code>modules</code>
<code>build conf htdocs include logs manual</code>
用tar安装包后需要修改几个地方,使得tar安装包后能与系统识别的路径相关联
1)、改PATH环境变量
写到/etc/profile.d/*.sh------>source /etc/profile 里面写安装软件后bin的路径
<code>echo</code><code>"PTAH=/usr/local/apache/bin:$PATH"</code><code>>></code><code>/etc/profile</code><code>.d</code><code>/apache</code><code>.sh</code>
<code>source</code><code>/etc/profile</code>
或者直接 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
<code>echo</code><code>"/usr/local/apache/lib"</code><code>>></code><code>/etc/ld</code><code>.so.conf.d</code><code>/apache</code><code>.conf</code>
<code>ldconfig -</code><code>v</code><code>| grepapache</code>
3)、帮助文档的使用 /etc/man.conf MANPATH
在/etc/man.config写 man手册的路径
<code>echo</code><code>"MANPATH /usr/local/apache/man "</code><code>>></code><code>/etc/man</code><code>.config</code>
然后就可以直接使用man httpd等命令了,不在配置文件中指定路径可以直接
man -M /usr/local/apache/man httpd
4)、关联系统所识别的头文件
把头文件的路径链接到系统头文件中, ln -sv 源 目的 /usr/include
<code>ln</code><code>-sv </code><code>/usr/local/apache/include//usr/include/apache</code>
做完这些操作后源码包安装的软件的使用方法可以和rpm安装的使用方法相似了
[root@Redhat6 ~]# apachectl start #开启服务
<a target="_blank" href="http://blog.51cto.com/attachment/201307/114007712.png"></a>
4、软件包安装之rpm源码包src安装
1)先用rpm安装rpm源码包生成spec文件,这个文件在用户家目录的rpmbuild目录下的SPECS里面
2)在用rpmbuild编译spec文件生成rpm文件
3)然后用rpm或者yum安装生成的rpm包
下载nginx的rpm源码包,通过此包来安装nginx,所需包的下载地址
<a href="http://mirrors.sohu.com/fedora-epel/6Server/SRPMS/nginx-1.0.15-5.el6.src.rpm">http://mirrors.sohu.com/fedora-epel/6Server/SRPMS/nginx-1.0.15-5.el6.src.rpm</a>
<a href="http://ftp//195.220.108.108/linux/epel/4/x86_64/GeoIP-devel-1.4.8-1.el4.x86_64.rpm">ftp://195.220.108.108/linux/epel/6/x86_64/GeoIP-devel-1.4.8-1.el6.x86_64.rpm</a>
<a href="http://ftp//195.220.108.108/linux/epel/6/x86_64/GeoIP-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</a>
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<code>[root@Redhat6 opt]</code><code>#yum -y install rpm-build</code>
<code>[root@Redhat6 opt]</code><code>#useradd -r mockbuild #先添加一个用于安装src包的系统用户</code>
<code>[root@Redhat6 opt]</code><code>#rpm -ivh nginx-1.0.15-5.el6.src.rpm #在安装src包,安装完成后会再用户的家目录生成一个rpmbuild的文件</code>
<code>[root@Redhat6 ~]</code><code># cd ~/rpmbuild/</code>
<code>[root@Redhat6 rpmbuild]</code><code># ls</code>
<code>SOURCES SPECS</code>
<code>[root@Redhat6 rpmbuild]</code><code># cd SPECS/</code>
<code>[root@Redhat6 SPECS]</code><code># ls</code>
<code>nginx.spec</code>
<code>[root@Redhat6 SPECS]</code><code># rpmbuild -ba nginx.spec #编译rpm源码包</code>
<code>error: Failed build dependencies: </code><code>#需要解决依赖性包,GeoIP-devel包可以在网上下载</code>
<code> </code><code>GeoIP-devel is needed by nginx-1.0.15-5.el6.x86_64</code>
<code> </code><code>gd-devel is needed by nginx-1.0.15-5.el6.x86_64</code>
<code> </code><code>libxslt-devel is needed by nginx-1.0.15-5.el6.x86_64</code>
<code> </code><code>pcre-devel is needed by nginx-1.0.15-5.el6.x86_64</code>
<code>#在网上下载这些包了之后用yum安装解决依赖性</code>
<code>[root@Redhat6 opt]</code><code>#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</code>
<code>[root@Redhat6 SPECS]</code><code># rpmbuild -ba nginx.spec #编译生成rpm包</code>
<code>[root@Redhat6 SPECS]</code><code># cd /root/rpmbuild/</code>
<code>BUILD BUILDROOT RPMS SOURCES SPECS SRPMS</code>
<code>[root@Redhat6 rpmbuild]</code><code># cd RPMS/</code>
<code>[root@Redhat6 RPMS]</code><code># ls</code>
<code>x86_64</code>
<code>[root@Redhat6 RPMS]</code><code># cd x86_64/</code>
<code>[root@Redhat6 x86_64]</code><code># ls</code>
<code>nginx-1.0.15-5.el6.x86_64.rpm nginx-debuginfo-1.0.15-5.el6.x86_64.rpm</code>
<code>[root@Redhat6 x86_64]</code><code># rpm -ivh nginx-1.0.15-5.el6.x86_64.rpm</code>
<code>Preparing... </code><code>########################################### [100%]</code>
<code> </code><code>1:nginx </code><code>########################################### [100%]</code>
<code>[root@Redhat6 x86_64]</code><code># service nginx start</code>
<code>Starting nginx: [ OK ]</code>
<a target="_blank" href="http://blog.51cto.com/attachment/201307/121821871.png"></a>
通过rpm源码包安装的访问已经能够成功了。
本文转自 jie783213507 51CTO博客,原文链接:http://blog.51cto.com/litaotao/1258450,如需转载请自行联系原作者