Linux下的程序包管理之源码形式

 Linux下程序包管理之源码形式
程序包的前世今生:

说到程序包管理,不得不提到是就是程序包是由什么组成的?也就是怎么形成的?程序是由源代码程序经过预处理、编译、然后汇编形成二进制的程序,这是针对特定硬件而形成的程序。有计算机编程基础的同学都应该知道源代码编译的时候是要调用特定的库(库文件),而这些库,在不同的系统上是不同的,比如Linux和window上的就不同,不同发行版的Linux上的库也不尽相同,所以这就导致了在不同种类系统上编译生成的二进制程序的运行环境也不尽相同,那么这些程序是不能在不同种类上的系统上运行,也就是说只能针对某一特定版本的系统运行(这点一定要记住,在后面的RPM程序包管理器上还会提到)。

既然是Linux下的程序包管理,那我这里就以Linux为基础说明了,后面的内容默认在centos发行版上说明。在centos上,二进制程序是生成了,但是要想让它在上面运行,还需要其他的东西?

  • 库文件是必须要有的,在前面已经说过了,程序运行需要对应的库文件,所以这个必须要有。
  • 程序要以某种配置运行,那它的配置要放在哪里呢?在Linux中一切皆文件的思想就在这里显现出来了,配置是放在文件中的,叫配置文件,所以配置文件是必不可少的。
  • 程序是有了,但是怎么用?对了,帮助文档也必须要有,通常是doc或者man,有了这些帮助文档,之后就算是以前没有用过这个程序的小白用户也能看着这些帮助文档去使用它。
  • 再加上上面生成的二进制程序

以上四点加起来就组成了程序包

源代码程序包版本:

程序的源代码会被归档压缩成.tar.gz或者.tar.bz2或者.tar.xz种类的文档,形如bash-4.3.2.tar.gz类型的文件,其中

  • bash叫源代码程序包名
  • 4是主版本号
  • 3是次版本号
  • 2就是发型号也叫做修订号
关于开源软件:
   现在开源很流行,比如Java、MySQL、PHP等等,这些开源软件在开发的时候会依赖很多其他的开源软件的功能,它们之间会有很多依赖关系,所以好多开源软件向外面发布的时候通常会以源代码的格式向外发布,这样的话,用户想用这个软件的话直接获取到软件的源代码,然后在自己的环境上通过预处理、编译、汇编等形成二进制软件,然后再通过一些设置,库文件的设置、头文件的设置帮助文档的设置等,这个程序就能正常使用了,下面要说的就是这种通过源码方式获取程序的过程。
源码程序形式的特点:
  • 兼容性很好,可控制性很好,可以定制:因为最后的二进制程序是在自己的环境中编译生成的,库文件肯定没有问题,那么程序运行不会有问题的
  • 操作很复杂,编译时间很长,非常容易出错(这也是为什么会有程序包管理器RPM):步骤多、不同源代码所需要的库不同,所以非常容易出错,不是缺这个库文件,就是缺那个库文件;
下面就以源码形式安装nginx来给大家演示源码安装的步骤:
实验环境:
  • CentOS 6.6(64bit)内核是2.6.32-504.el6.x86_64
  • nginx-1.6.1.tar.gz
编译安装C源程序的步骤:
  1. ./configure: 检查编译环境,并根据指定的选项确定编译的特性、安装路径等;
  2. make : 调用所需要的编译器根据makefile配置文件定义执行编译过程;
  3. make install: 安装程序
操作步骤:

# 解压压缩包

[[email protected] ~]# tar xf nginx-1.6.1.tar.gz

# 进入到解压后的目录中

[[email protected] ~]# cd nginx-1.6.1

# 执行如下命令,查看执行./configure 所需要的参数

# --prefix==PATH 设定安装位置

# --user=USER 设定可以启动这个程序的用户

# --group=GROUP 设定可以启动这个程序的用户的属组

# 也可以看看其他的需要注意的参数,看看有没有需要设定的

[[email protected] nginx-1.6.1]# ./configure --help

--help                             print this message

--prefix=PATH                      set installation prefix

--sbin-path=PATH                   set nginx binary pathname

--conf-path=PATH                   set nginx.conf pathname

--error-log-path=PATH              set error log pathname

--pid-path=PATH                    set nginx.pid pathname

--lock-path=PATH                   set nginx.lock pathname

--user=USER                        set non-privileged user for

worker processes

--group=GROUP                      set non-privileged group for

worker processes

--builddir=DIR                     set build directory

--with-rtsig_module                enable rtsig module

--with-select_module               enable select module

--without-select_module            disable select module

--with-poll_module                 enable poll module

--without-poll_module              disable poll module

时间: 2024-12-25 20:20:20

Linux下的程序包管理之源码形式的相关文章

linux下yum程序包管理及源码安装

1.yum仓库中的repodata目录中元数据文件: primary.xml.gz:代表所有RPM包的列表和依赖关系以及每个RPM安装生成的文件列表: filelists.xml.gz:代表当前仓库中所有RPM包的所有文件列表: other.xml.gz:代表额外信息,RPM包的修改日志: repomd.xml记录的是上面三个文件的时间戳和校验和: comps*.xml: RPM包分组信息 2.yum定义repo文件 [Repo_ID] name=Description baseurl= ftp

linux程序包管理之源码编译安装

一.linux程序包基础概念 1.1.linux程序开发遵循开源协定:GPL, BSE, Apache等 1.2.源程序常用的开发语言:C, C++, perl, python等 1.3.应用程序的开发.编译和运行 就像面包师直接使用的材料是面粉而非麦种一样,我们大部分应用程序员在开发程序时也并非直接接触硬件层,因为底层硬件太过抽象和"丑陋",如果应用程序开发都从底层开始,无疑工作量巨大.于是,有些系统级程序员在"裸机"上抹上了一层操作系统,用于管理硬件资源,这个系

linux程序包管理与源码安装

一.RPM包简介: linux之所以那么强大,除了linux强大的内核,还有很大一部分取决于linux的软件包,假想没有软件包,就一个内核在运行,人类需要和内核打交道是多么痛苦,但是聪明的人类发明了bash,通过bash,人就可以使用高级语言,和机器沟通,这其中的bash起始也是一个软件包,当然linux除了bash还有各式各样的包,帮助我们完成各种任务,这其中便涉及到程序的包管理. rpm包管理器(原名redhat package manager,后成为行业标准,命名为rpm package

linux基础之程序包管理(二)

Linux程序包管理(2) CentOS: yum, dnf URL: ftp://172.16.0.1/pub/ YUM: yellow dog, Yellowdog Update Modifier yum repository: yum repo 存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata): 文件服务器: ftp:// http:// nfs:// file:/// yum客户端: 配置文件: /etc/yum.conf:为所有仓库提供公共配置 /et

Linux的系统程序包管理

RPM 我们知道在操作系统之上使用的程序是由程序员通过开发工具开发出来的,而程序员编写的纯文本我们 称为源代码.由于计算机只认识二进制,程序员写好的源代码要经过一定的编译成计算机认识的二进制程序.而编译就是将源代码转成二进制,再通过一定的步骤来安装到时操作系统之上被我们使用. 虽然原始码进行软件编译, 毕竟不是每个人都会进行原始码编译的.如果我位的 Linux系统与发行厂商一模一样,那么在厂商系统上编译出来的程序,自然也可以在我们的系统上来运行.由于我们本来就是使用厂商的发行版,那么使用厂商系统

Linux学习笔记——程序包管理之rpm命令

RPM rpm是Linux上一个很好用的程序包管理管理器,它具有安装.卸载.升级.查询.校验.数据库维护等功能. 下面分别介绍一下rpm的各个功能: 安装: rpm {-i|--install} [install-options] PACKAGE_FILE ... -v:详细显示安装过程 -vv:相对-v更加详细 -h: 以#显示程序包管理执行进度:每个#表示2%的进度 安装过程如图 另外还有一些其他选项 [install-options] --test: 测试安装,但不真正执行安装过程:dry

Linux学习笔记——程序包管理之yum

YUM yum 是rpm程序包管理器的前段管理器.yum 主要功能是更方便的添加/删除/更新RPM 包,自动解决包的倚赖性问题,便于管理大量系统的更新问题. yum 的操作是基于yum 仓库进行的 yum repository: yum repo  yum仓库 存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata): 文件服务器: ftp:// http:// nfs:// file:/// yum 的配置 配置文件 /etc/yum.conf:为所有仓库提供公共配置

Linux 下 rpm程序包命令介绍及使用方法

rpm程序包及其管理 一.RPM 介绍: RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了. RPM的命名规范: 例如:zip-3.0-1.el6.x86_64.rpm 其中zip就是我们的软件名字,3.0-1是该软件的版本号,el6.x86_64这两个部分是指该rpm

Linux下MySQL、Apache、PHP源码安装全程实录(CentOS 6.4)

本文记录了我自己配置LAMP的全过程,借此记录一下,同时希望能够帮助一下需要帮助的LINUX新人,跟我一起学习,一起进步. MySQL安装全过程 源码包来自:http://distfiles.macports.org/mysql5/ $cd ~/Download $wget http://distfiles.macports.org/mysql5/mysql-5.1.60.tar.gz $chmod +x mysql-5.1.60.tar.gz $tar zxvf mysql-5.1.60.ta