一般来说,Linux下安装软件主要有以下三种方式:
一种是源码安装,需要用户手动编译
另一种是RPM包(Linux),可以通过RPM命令安装
还有一个*.bin文件,安装方法与下面的安装过程类似
通常Linux安装软件主要有以下两种方式
① 文件名形式为xxx.i386.rpm,软件包以二进制形式发布。
② 文件名的形式为xxx.tar.gz,大多数软件包以源代码的形式发布。
Linux包管理可以分为三类:二进制包管理、源代码包管理、脚本安装
另外值得注意的是,目前各个Linux发行版获取和安装软件的方式有很多种,比如
[]/yum安装(需有专门的镜像源)
【】// sudo apt-get 适用于deb包管理安装
【】有些软件是以刻录盘加密的形式安装的(举例)
【】对于系统运维管理人员来说,还有通过ssh、C/C++语言或者py执行的一些软件命令进行自动化管理的应用,这里就不详细介绍了。
下面有一张图可以清晰的表示Linux软件应用的架构关系:
当Linux启动时。 首先,()将会启动。 内核是直接管理和管理硬件的计算机程序,包括CPU、内存空间、硬盘接口、网络接口等。 所有计算机操作都通过内核传递到硬件。 我们可以看到Linux利用了硬件-软件对话。 通过系统调用这个重要的接口,Linux将上层应用程序与下层应用程序完全分离,为程序员隐藏了底层的复杂性(相应地,也提高了上层应用程序的可移植性)。 我们在升级的时候,也可以保持系统调用的语句不变,这样上层应用程序就不会感受到下层的变化。 库函数使用系统调用来创建模块化功能,而shell提供了用户界面并允许我们使用shell的语法编写脚本来集成程序。 有了这些思路,我们就能快速了解linux软件应用的安装和工作原理。 因此,为了方便和获得更多的企业应用,我们需要在linux系统上进行开发,通过源代码编译的方式制作各种软件包,提供现代化时代的信息服务。
本文主要介绍源码和RPM包的安装
源码包和商业软件包根据各公司或作者的实际情况而定(可以是tar等格式的压缩包,也可以是bin的源程序,也可以是经过编译的文件)编译后直接使用运行,也可以将光盘虚拟化文件等介质制作并发布iso文件等)打包成特定格式并发布,提供相应的软件服务。 其实通过yum或者make命令安装的软件都会在系统中自动生成rpm包(只是参数和功能模块不同,严谨而已)
介绍:
RPM(Red Hat )用于软件包的安装、查询、升级、验证和卸载,以及在使用RPM之前生成.rpm格式的软件包
挂载linux系统的安装光盘(以为例),当然也可以从网上下载免费的RPM包。
# mount/dev/cdrom --- 挂载CD
# cd /media/cdrom //RPMS ---进入光盘中RPM包的目录(可以使用#mount命令查看光盘的挂载点,一般会显示在最后一行)
# ls
1.源码包安装
1、源码包,格式为*.src.rpm
用法:
安装:rpm - *.src.rpm
cd /usr/src/dist/RPMS
rpm –ivh *.rpm
卸载:rpm -e
2、.tar.gz、*.tgz、*.bz2软件包的安装
首先解压,命令如下
tar zxvf *.tar.gz
焦油 xvfz *.tgz
tar xvfj *.tar.bz2
解压后进入解压目录,然后进行以下操作(一般情况看软件包的文件名)
配置: 。/
编译:制作
安装:制作
卸载:制作
源代码安装比较困难。 不同的软件可能有不同的安装方法。 一般情况下,解压后应先阅读文档,然后按照说明进行安装。 以上只是一般情况。
二、RPM包安装
RPM安装包格式是该公司提出的,大大简化了Linux下软件的安装。 首先,我们将介绍一般选项。
-v:显示附加信息
-vv:显示调试信息
--root :让RPM为根目录,这样预安装程序和后安装程序都会安装在这个目录下。
1、安装:rpm –i 文件.rpm
:
h:安装时输出的哈希标记
test:仅测试安装,不实际安装
--:以百分比显示安装进度
--: 不安装包中的文档
--: 强制重新安装
--:替换属于其他包的文件
--force:忽略包和文档冲突
--: 不验证包结构
--: 不检查程序包运行的操作系统
--: 不检查依赖关系
--:不运行安装前和安装后脚本
2.删除rpm –e
:
--test:只删除测试,不真正删除
--:不运行安装前和安装后脚本
--: 不检查依赖关系
注意:是包名,不是rpm包名,而是安装后的包名。 可以使用query命令查询包名。
3.升级rpm–U(或—)file.rpm
:
和安装基本一样,有几个特殊的:
--: 允许旧版本
4.查询rpm –q(或--query)
:
-p :查询包内的文件
-f FIEL:查询FILE属于哪个软件包
-a:查询所有已安装的包
-:查询属于group组的软件包
--TY:提供功能的查询包
--TY:查询所有需要某个功能的包
-i:显示包的摘要信息
-l:显示包内文件列表
-c:显示配置文件列表
-s:显示文件列表
-:显示安装、卸载、验证脚本
--qf:以用户指定的方式查询
--dump:显示每个文件的校验和信息
--:显示包提供的功能
-R:显示包所需的功能
5. 验证已安装的软件包 rpm –V(或 –,或 –y)
选项与其他命令类似
6、验证软件包中的rpm文件 –K(或-)file.rpm
:
-v:显示版本信息
-vv:显示调试信息
--:将rpmrc文件设置为
7. 其他 RPM 选项
--: 重建RPM数据库
--:创建一个新的RPM数据库
--quiet:尽可能减少输出
--help:显示帮助文件
--:显示当前RPM版本
以上只是常用选项的总结。 如果有具体问题,可以使用man rpm命令来检查。 官方档案永远是最好的老师。
3、安装*.bin格式的安装文件
只需双击或点击*.bin文件,根据提示即可安装,不再赘述。
制作RPM格式的包,需要编写包描述文件。 它的标准命名格式是:软件名称-版本号-发布号.spec(大多数情况下直接使用:软件名称.spec),这个文件详细描述了软件包的很多信息,例如,版本号,类别、描述摘要、创建时要执行什么指令、安装时要做什么以及包中要包含的文件等。有了这个文件,RPM 就可以创建相应的包文件。 当然,也有rpm等开源包制作辅助工具,只要需要一个程序源,就可以通过向导下一步进行制作。
一个简单的制作示例:
其实最好的办法就是做一个软件包。 我记得rpm和都有快速打包的开源软件,可以直接使用。
例如>>将nginx tar包制作为RPM包
1.下载nginx的源码包
2、将文件放到/usr/src///目录下
3. 写入SPEC文件
[root@mail 规格]# -0.8.35.spec
: 首先
名称:nginx
:0.8
:35
:
:分享
组:/文本
:nginx-0.8.35.tar.gz
%
我的测试nginx
%准备
tar -zxvf $/nginx-0.8.35.tar.gz
%建造
cd $/nginx-0.8.35
./
制作
%
cd $/nginx-0.8.35
制作
%干净的
rm -rf $/nginx-0.8.35
%个文件
%(-,根,根)
/usr/local/nginx/sbin/nginx
%doc $/nginx-0.8.35/
4.制作RPM包
[root@mail 规格]# -ba nginx-0.8.35.spec
如果运行没有错误,会生成两个文件 /usr/src//RPMS/i386/nginx-0.8-35.i386.rpm 和 /usr/src//SRPMS/nginx-0.8-35.src.rpm 。
总结:个人经验如何制作rpm包
RPM 简介
RPM是RPM的缩写,意思是红帽包管理。 顾名思义,它是Red Hat贡献的包管理; 现在应该是RPM的缩写。 用于 、 、 、 SuSE 等主流版本以及基于这些版本开发的其他版本; RPM包中不仅包括程序运行所需的文件,还包括其他文件; RPM包中的应用程序有时除了自身的附加文件外还需要其他特定版本文件来保证其正常运行,这就是软件包的依赖关系。
RPM允许用户以程序的形式直接安装软件包,并且可以为用户查询相关的库文件是否已经安装; 当使用RPM删除程序时,它会巧妙地询问用户是否删除相关程序。 如果使用RPM升级软件,RPM会保留原来的配置文件,这样用户不需要重新配置新的软件。 RPM维护一个数据库,包含所有软件包的信息,用户可以通过该数据库查询软件包。 尽管 RPM 是为 Linux 设计的,但它已经迁移到其他 UNIX 系统,例如 SunOS、AIX 和 Irix。 RPM遵循GPL版权协议,用户可以在GPL协议的条件下自由使用和传播RPM。
两种RPM包分类
我个人认为rpm分为两类,
1 二进制类包,包括rpm安装包(一般分为i386和x86等)和调试信息包等。
2 源代码包、源代码包和开发包应归入此类。
它们之间的关系是,首先我们根据rpm打包要求对软件项目的源代码进行改造,当满足要求时,我们可以使用命令生成不同的rpm包,生成的包的版本是直接对应的,比如同一个源码包会生成一模一样的二进制rpm包。 在网上查找rpm包时,一般可以在RPMS目录下找到预编译的二进制包,在SRPMS目录下找到源码包。
我们这里所说的RPM制作是指对软件源代码进行改造以满足RPM打包要求的过程。 这也可以相当于RPM源码包的制作过程,因为当你有了源码包后,可以直接编译得到二进制安装包。 和其他任意包。
三转包制作介绍
RPM包的制作就是RPM源码包的制作。
这里我想谈谈RPM包的工作原理,这将有助于充分理解RPM包管理系统的知识。
RPM是为了解决源代码包不易安装(需要编译)以及软件包之间相互依赖的问题(RPM包管理器可以在一定程度上解决依赖问题)。 它通过检测源码包在build和stage中的动作来获取最终生成的系统中需要安装的文件,并记录一些必要的操作(比如安装完成后执行的操作),然后把这个组变成一个整体,当用户安装这个包的时候,结合之前得到的所有问题和记录,所有操作都原样在实际系统上进行。
要创建普通源码的RPM包,需要进行以下操作。 首先,必须对项目进行必要的修改,以支持RPM打包操作(其实这个操作并不是绝对的,SPEC文档和它是协调统一的。只要它们的时机合适就没有关系)协调性很好,我们一般只是建议大家尽量按照行业标准来操作); 其次,为当前项目编写SPEC文档,SPEC文档包括RPM打包过程的操作内容以及新生成的RPM包的基本信息等,作用于打包者。
四转包制作流程
1 准备封装环境
系统下使用以下命令安装
#百胜
工作目录如下,
〜/
〜//
~//规格
~//构建
〜//转速管理系统
〜//RPMS/i386
〜//SRPMS
如果你的用户目录主目录下没有类似的目录结构,可以使用工具软件自动配置生成,如下。
#百胜
执行自动配置命令,自动生成上述目录,并配置一些必要的操作。
#-
-该命令默认会在当前用户的主目录下创建一个RPM构建根目录结构,
如果需要更改子默认位置,可以修改配置文件:~/.
一般情况下,会在当前用户的主目录下自动创建上述目录结构。 如果您对应的用户的build目录中没有自动创建上述目录,您可以手动创建。 上述目录的用途就是这样分配的,这里放置打包资源,包括源码打包文件和补丁文件等; SPECS目录用于放置SPEC文档; BUILD打包过程中的工作目录; RPMS目录存放生成的二进制包,根据硬件平台不同,RPM包也不同。 分类,i386表示生成i386结构的包会存放在这个目录下; SRPMS目录存放生成的源码包。
2 编写SPEC文档
SPEC编写是打包RPM的核心,也是最困难的一步。 幸运的是,我们可以从参考一个简单的模板文件开始,在实现基本功能的基础上逐步扩展文档内容,直到完全满足要求。 下面是一个简单的SPEC文档,其中包含一些解释信息(注:#后面的内容是解释信息)。 本 SPEC 文档是为经过测试的软件项目编写的。 软件包编译后只有一个执行文件、一个手册文件和一个工程说明文件。
.spec文件内容如下:
-------------------------------------------------- ----------------------------
# 包的简介
: 正在测试。
#包的名称
姓名:
# 包的主版本号
:2.2.6
# 包的次版本号
: 1
#源码包,默认会在上面提到的目录中找到
:%{名称}-%{}.tar.gz
#授权协议
:通用公共许可证
#定义一个临时构建目录,后面会引用这个地址作为临时安装目录
:%{}/%{名称}-%{}-%{}-根
#软件分类
组:/工具
# 包装内容
%
一个测试。
#表示预操作字段,下面的命令会在源码BUILD之前执行
%准备
#搭建BUILD环境,解压源码包到BUILD目录
%设置-q
#BUILD字段,将通过直接调用源码目录下的自动构建工具来完成源码编译操作
%建造
#在源码目录下调用命令
./
# 在源码目录下执行自动构建命令make
制作
# 安装字段
%
#调用源码安装并执行脚本
=$
#文件描述字段,如果声明多余或缺失,可能会出现错误
%个文件
#设置文件权限属性
%(-,根,根)
# 声明 /usr/local/bin/ 将出现在包中
/usr/local/bin/