总的情况下Linux下软件安装主要有三种形式:
一种是源码安装,须要用户自己自动编译
另一种是RPM包(RedHatLinuxPacketManager),通过RPM命令就可以实现安装
还有一种为*.bin文件,安装方式与Windows下的安装过程类似
一般情况下Linux安装软件主要通过以下两种方法
①文件名形如xxx.i386.rpm,软件包以二补码方式发布.
②文件名形如xxx.tar.gz,软件包多以源码的方式发布.
Linux软件包管理可以分为三类:二补码包的管理,源代码包的管理,脚本安装
另外值得注意的是目前存在各类Linux的发行版获取和安装软件的形式也有好多诸如
【】redhat/centos的yum安装(有专门的镜像源)
【】Ubuntu/Fedora/Debian的sudoapt-get适用于deb包进行管理安装
【】也有的软件是通过刻盘加密的方式之后进行安装的(比如cnyunwei)
【】在系统运维管理人员方面也有通过ssh、C/C++语言或则py执行的一些软件命令进行手动化管理的应用,这儿就不做详尽介绍了。
下边有一张图可以清晰地表示linux软件应用的构架关系:
在Linux启动的时侯。首先会启动内核(kernel),内核是一段计算机程序,这个程序直接管理管理硬件,包括CPU、内存空间、硬盘插口、网络插口等等。所有的计算机操作都要通过内核传递给硬件。我们可以看见linux 安装bin文件,Linux借助kernel实现软硬件的对话。通过系统调用的这个重要的插口,Linux将下层的应用与上层的kernel完全分离开,为程序员隐藏了底层的复杂性(相应的,也提升了下层应用的可移植性)。当我们在升级kernel的时侯,也可以保持系统调用的句子不变,因而让下层应用不感遭到上层的改变。库函数借助系统调用创造出模块化的功能,而shell则提供了一个用户界面,并让我们可以借助shell的句型编撰脚本,以整合程序。有了这种思想我们可以快速地了解linux的软件应用的安装和工作原理,也因而为了便捷和获取更多企业应用我们须要在linux系统上开发而且通过源码编译的形式制做各类软件包进而为信息化时代服务。
本文主要介绍源码安装与RPM包的安装
源码包和商业软件包按照各个公司或作者的实际情况出发(可以是tar等格式的压缩包,也可以是bin的源程序,可以是早已编译好了的直接用来运行的文件,也可以是光碟虚拟化文件等其他介质来制做发布的iso文件等)封装成一种特定的格式发布因而进行相应的软件服务。虽然通过yum或则makeinstall命令安装的软件在系统就会手动生成rpm包(只是参数和功能模块差别和严谨的)
简介:
RPM(RedHatPackageManager,红围巾软件包管理器)用于软件包的安装、查询、升级、校验、卸载,以及生成.rpm格式的软件包RPM的使用前
挂载linux系统(centos4为例)的安装光碟,其实也可在网上下载免费的RPM包.
#mount/dev/cdrom---挂载光碟
#cd/media/cdrom/CentOS/RPMS---步入光碟中RPM包的目录(可以通过#mount命令来查看光碟的挂载点通常会在最后一行显示)
#ls
一、源码包安装
1、*.src.rpm方式的源代码软件包
用法:
安装:rpm–rebuild*.src.rpm
cd/usr/src/dist/RPMS
Rpm–ivh*.rpm
卸载:rpm–epackagename
2、.tar.gz,*.tgz,*.bz2方式软件包的安装
首先进行解压,命令如下
tarzxvf*.tar.gz
tarxvfz*.tgz
tarxvfj*.tar.bz2
解压以后步入解压目录,之后进行以下操作(通常情况,具体看软件包的文件名)
配置:./configure
编译:make
安装:makeinstall
卸载:makeuninstall
源码安装有一定的难度,不同的软件可能有不同的安装,通常在解压以后应当先阅读说明文档,根据说明进行安装,里面说的只是通常情况。
二、RPM包安装
RPM安装包格式是由Redhat公司提出的,大大的简化了Linux下软件的安装,首先介绍一下通用选项。
-v:显示附加信息
-vv:显示调试信息
--rootdirectory:让RPM以directory作为根目录,这样预安装程序和后安装程序就会安装到这个目录下。
1、安装:rpm–ifile.rpm
Options:
h:安装时输出hash记号
test:只对安装进行测试,不真正安装
--persent:以比率方式显示安装进度
--excludedocs:不安装软件包中的文档
--replacepkgs:强制重新安装
--replacefiles:替换属于其它软件包的文件
--force:忽视软件包及文档冲突
--ignorearch:不校准软件包结构
--ignoreos:不检测软件包运行的操作系统
--nodeps:不检测依赖性关系
--noscripts:不运行预安装和后安装脚本程序
2、删除rpm–epkgname
Option:
--test:只做删掉测试,不真正删掉
--noscripts:不运行预安装和后安装脚本程序
--nodeps:不检测依赖性
注意:pkgname是软件包的名子,不是rpm包名子,而是安装后软件包的名子,可以用查询命令来查询软件包名。
3、升级rpm–U(或则—upgrade)file.rpm
Option:
基本与安装时的option一样,有几个特殊的:
--oldpackage:容许一蒙自版本
4、查询rpm–q(或则--query)
Option:
-pPACKAGE_FILE:查询软件包的文件
-fFIEL:查询FILE属于那个软件包
-a:查询所有安装的软件包
-ggroup:查询属于group组的软件包
--whatproVidesCAPABILITY:查询提供了CAPABILITY功能的软件包
--whatrequiresCAPABILITY:查询所有须要CAPABILITY功能的软件包
-i:显示软件包的概要信息
-l:显示软件包中的文件列表
-c:显示配置文件列表
-s:显示文件列表
-scripts:显示安装、卸载,校准脚本
--qf:以用户指定的方法查询
--dump:显示每位文件的校准信息
--proVides:显示软件包提供的功能
-R:显示软件包须要的功能
5、校验早已安装的软件包rpm–V(or–verify,or–y)
Option选项与其它命令的类似
6、校验软件包中的文件rpm–K(or–checksig)file.rpm
Option:
-v:显示版本信息
-vv:显示调试信息
--rcfileFILELIST:设置rpmrc文件为FILELIST
7、其它RPM选项
--rebuilddb:重建RPM资料库
--initdb:创建一个新的RPM资料库
--quiet:尽可能地降低输出
--help:显示帮助文件
--version:显示RPM当前版本
里面只是对常用选项的总结,具体还有哪些问题,可以用manrpm命令进行查看,官方文件永远最好的老师。
三、*.bin格式安装文件的安装
只需双击或单击*.bin文件就可以按照提示安装了,不再敷述。
要想制做一个RPM格式的软件包,须要编撰软件包描述文件。其标准命名格式为:软件名-版本号-释出号.spec(现今大多情况下都是直接用:软件名.spec),这个文件,详尽描述了有关该软件包的众多信息,如软件名,版本,类别,说明摘要,创建时要执行哪些指令,安装时要执行哪些操作,以及软件包所要包含的文件等等。有了这个文件,RPM就可以制做出相应的包裹文件来。其实现今也有诸如Sourcerpm这样开源的包制做辅助工具只要一个程序源即可通过向导下一步即可制做。
简单的一个制做事例:
虽然最好的办法是做个软件包。我记得rpm和debian都有快速打包的开源软件可以直接用来使用即可。
eg>>将nginx的tar包制作为RPM包
1.下载nginx的源码包
2.将文件放在/usr/src/redhat/SOURCES/目录下
3.编撰SPEC文件
[root@mailSPECS]#vinginx-0.8.35.spec
Summary:thefirstrpmpackage
Name:nginx
Version:0.8
Release:35
Vendor:
License:Share
Group:Applications/Text
Source0:nginx-0.8.35.tar.gz
%description
mytestnginx
%prep
tar-zxvf$RPM_SOURCES_DIR/nginx-0.8.35.tar.gz
%build
cd$RPM_BUILD_DIR/nginx-0.8.35
./configure
make
%install
cd$RPM_BUILD_DIR/nginx-0.8.35
makeinstall
%clean
rm-rf$RPM_BUILD_DIR/nginx-0.8.35
%files
%defattr(-,root,root)
/usr/local/nginx/sbin/nginx
%doc$RPM_BUILD_DIR/nginx-0.8.35/README
4.制做RPM包
[root@mailSPECS]#rpmbuild-banginx-0.8.35.spec
若运行没有错误,则形成/usr/src/redhat/RPMS/i386/nginx-0.8-35.i386.rpm和/usr/src/redhat/SRPMS/nginx-0.8-35.src.rpm两个文件。
总结:rpm包怎么制做之个人经验
一RPM介绍
RPM前是RedHatPackageManager的简写,原意是RedHat软件包管理,顾名思义是RedHat贡献下来的软件包管理;现今应为RPMPackageManager的简写。在Fedora、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这种版本基础上二次开发下来的发行版采用;RPM包中不仅包括程序运行时所须要的文件,也有其它的文件;一个RPM包中的应用程序,有时不仅自身所带的附加文件保证其正常以外,还须要其它特定版本文件,这就是软件包的依赖关系。
RPM可以让用户直接以binary形式安装软件包,而且可替用户查询是否早已安装了有关的库文件;在用RPM删掉程序时,它又会聪明地寻问用户是否要删掉有关的程序。假如使用RPM来升级软件,RPM会保留原来的配置文件,这样用户就不用重新配置新的软件了。RPM保留一个数据库,这个数据库中包含了所有的软件包的资料,通过这个数据库linux下载工具,用户可以进行软件包的查询。RPM其实是为Linux而设计的,并且它早已移值到SunOS、Solaris、AIX、Irix等其它UNIX系统上了。RPM遵守GPL版权合同,用户可以在符合GPL合同的条件下自由使用及传播RPM。
二RPM包分类
我个人觉得rpm分为两大类,
1二补码类包,包括rpm安装包(通常分为i386和x86等几种)和音阶信息包等。
2源码类包,源码包和开发包应当归位这种。
它们之间的关系是,最先我们按rpm打包要求改建软件项目源码,当符合要求以后就可以使用rpmbuild命令来世成不同的rpm包,同时生成的包之间版本是直接对应的,例如相同的源码包将生成完全相同的二补码rpm包。当你在网上查找rpm包时,通常你可以在RPMS目录中找到预编译的二补码包,而源码包则会在SRPMS目录内。
我们这儿提及的RPM制做就是指改建软件源代码使之符合RPM打包要求的过程,这也可以等价为RPM源码包的制做过程,由于当你有了源码包就可以直接编译得到二补码安装包和其他任意包。
三RPM包制做介绍
RPM包的制做,即是RPM源码包的制做。
这儿我想谈谈RPM包工作的原理,这将有助于全面的了解RPM包管理系统的知识。
RPM是为解决源码包不易安装(须要编译)和软件包互相之间依赖(是RPM包管理器可以一定程度解决依赖问题)问题,它通过在侦测源码包在build和install阶段的动作获得最终生成的须要安装的系统里的文件,并记录下一些必要的操作(例如安装完成后执行某项操作),之后把此组成为一个整体,当在用户安装此包时把上面获得的所有问题和记录的所有操作原原先本的作用的实际系统上。
为一个普通的源码打RPM包,须要下边一些操作,首先须要对项目的Makefile作必要的整修以支持RPM打包操作(实际上此操作不是绝对的,SPEC文档和Makefile的是协调统一工作的,只要她们之间配合好了其他都无所谓,我们通常只是推荐你们尽量按行业标准规范操作而已);其次是针对当前项目撰写SPEC文档,SPEC文档包括了RPM打包过程的操作内容和新生成的RPM包的基本信息等,它的作用对象是打包程序rpmbuild。
四RPM包制做过程
1打算打包环境
fedora系统下使用如下命令安装rpmbuild
#yuminstallrpmbuild
rpmbuild的工作目录如下,
~/rpmbuild
~/rpmbuild/SOURCES
~/rpmbuild/SPECS
~/rpmbuild/BUILD
~/rpmbuild/RPMS
~/rpmbuild/RPMS/i386
~/rpmbuild/SRPMS
假如你的用户目录主目录下没有类似目录结构,你可以通过一个工具软件来手动配置和生成,如下。
#yuminstallrpmdevtools
下了运行手动配置命令手动生成如上目录,并配置一些必要操作。
#rpmdev-setuptree
rpmdev-setuptree命令默认将再当前用房主目录下创建一个RPM建立根目录结构,
假如须要改变次默认位置,可以更改配置文件:~/.rpmmacros中变量_topdir对应的值即可。
通常rpmbuild会在当前用户的主目录下手动构建如上目录结构linux命令tar,假如在你对应用户的建立目录中没有手动构建如上目录,你可以通过自动方法构建。里面目录的使用是这样分配的,SOURCES放置打包资源,包括源码打包文件和补丁文件等;SPECS目录放置SPEC文档;BUILD打包过程中的工作目录;RPMS目录储存生成的二补码包,RPM包按照硬件平台不同分类,i386表示生成i386结构的包将储存在该目录下;SRPMS目录储存生成的源码包。
2撰写SPEC文档
SPEC撰写是打包RPM的核心,也算是最难的一步,好在我们可以从参照一个简单的模板文件开始,在可以实现基本功能的基础上再一步一步的扩展文档内容,直到完全达到要求。下边是一个简单的SPEC文档,其中包括了一些说明信息(注:#前面的内容为说明信息),该SPEC文档是对一个测试的软件项目hellorpm写的,hellorpm软件包编译后仅有一个执行文件、一个指南文件和一个项目说文件。
hellorpm.spec文档的内容如下:
-----------------------------------------------------------------------------
#软件包简略介绍
Summary:hellorpmisatestprogram。
#软件包的名子
Name:hellorpm
#软件包的主版本号
Version:2.2.6
#软件包的次版本号
Release:1
#源代码包,默认将在前面提及的SOURCES目录中找寻
Source0:%{name}-%{version}.tar.gz
#授权合同
License:GPL
#定义临时建立目录,这个地址将作为临时安装目录在前面引用
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
#软件分类
Group:Development/Tools
#软件包的内容介绍
%description
Thehellorpmprogramisatest.
#表示预操作数组,旁边的命令将在源码代码BUILD前执行
%prep
#建立BUILD环境linux 安装bin文件,将解压源码压缩包到BUILD目录
%setup-q
#BUILD数组,将通过直接调用源码目录中手动建立工具完成源码编译操作
%build
#调用源码目录中的configure命令
./configure
#在源码目录中执行手动建立命令make
make
#安装数组
%install
#调用源码中安装执行脚本
makeDESTDIR=$RPM_BUILD_ROOTinstall
#文件说明数组,申明多余或则缺乏都将可能出错
%files
#设置文件权限属性
%defattr(-,root,root)
#申明/usr/local/bin/hellorpm将出现在软件包中
/usr/local/bin/hellorpm