`
zixiaolan
  • 浏览: 51351 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

一般软件包的安装过程、configure参数

阅读更多
1、tar zxvf   *.tar.gz

2、./configure --prefix=指定的安装目录 --enable=dav --enable=so(开启以上两个模块的功能)。

不指定prefix,则可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr/local/share。你要卸载这个程序,要么在原来的make目录下用一次make uninstall(前提是make文件指定过uninstall),要么去上述目录里面把相关的文件一个个手工删掉。
指定prefix,直接删掉一个文件夹就够了。

该命令的功能检查程序运行的所依赖的环境(即检查程序编译时所依赖的环境以及对程序编译安装进行配置),生成makefile文件。该文件是个shell脚本。

3、make 对文件进行编译(有时也进行make test,对编译进行测试)

4、make install 安装软件包



标注一下:install 不是make的参数,而是在makefile(Makefile)中形如:install:的语句。如果用make install,那么就执行install:后面的语句。

Linux上装软件,最令人头痛的问题大概就是软件依赖性了,不少发行版都有自己的解决方式:
debian用apt+dpkg解决一个个deb包(别人打好包的软件)的依赖性。
fedora用yum+rpm解决一个个rpm包(同deb包,是另一种格式的包)的依赖性。
suse用yast+rpm解决一个个rpm包的依赖性。
而你尝试过gentoo后,会更清楚的认识到,通过源码编译软件是怎样的一回事。
gentoo的一个个ebuild文件里记录了软件的依赖关系,然后自动解决依赖关系,下载最底层的软件代码,自动编译安装。
LFS更极端,所有的一切都人工完成,自己解决依赖性,自己下载代码,自己安装,官方只提供安装步骤的参考手册。



-----------------------------------------------------------------------------------------------------------------------

其它参考内容;

configure/make/make install的命令,这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。

./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。

make是用来编译的,它从Makefile中读取指令,然后编译。

make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。如果你也写程序想使用AUTOMAKE和AUTOCONF,可以参考CNGNU.ORG上的相关文章。

1、configure,这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如
代码:./configure –prefix=/usr

    上面的意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定 –sys-config= 参数进行设定。有一些软件还可以加上 –with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。

    2、make ,这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。

    3、make insatll,这条命令来进行安装(当然有些软件需要先运行 make check 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。

----------------------------------------------------------------------------------------------------------

先遇到的是解压问题,用tar解压出来了
接着就是具体的安装了,,,我在home/下建立了apache文件夹,然后把解压出来的apache放到给目录下,,

使用该命令:./configure --prefix=/usr/local/apache --enable-module=so
先解释下configure的作用了:
Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。
  'configure'脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的.带上'--help'选项执行'configure'脚本可以看到可用的所有选项.尽管许多选项是很少用到的,但是当你为了特殊的需求而configure一个包时,知道他们的存在是很有益处的.下面对每一个选项进行简略的介绍:

--cache-file=FILE
  'configure'会在你的系统上测试存在的特性(或者bug!).为了加速随后进行的配置,测试的结果会存储在一个cache file里.当configure一个每个子树里都有'configure'脚本的复杂的源码树时,一个很好的cache file的存在会有很大帮助.

--help
  输出帮助信息.即使是有经验的用户也偶尔需要使用使用'--help'选项,因为一个复杂的项目会包含附加的选项.例如,GCC包里的'configure'脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项.

--no-create
  'configure'中的一个主要函数会制作输出文件.此选项阻止'configure'生成这个文件.你可以认为这是一种演习(dry run),尽管缓存(cache)仍然被改写了.

--quiet
--silent
  当'configure'进行他的测试时,会输出简要的信息来告诉用户正在作什么.这样作是因为'configure'可能会比较慢,没有这种输出的话用户将会被扔在一旁疑惑正在发生什么.使用这两个选项中的任何一个都会把你扔到一旁.(译注:这两句话比较有意思,原文是这样的:If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!)

--version
  打印用来产生'configure'脚本的Autoconf的版本号.

--prefix=PEWFIX
  '--prefix'是最常用的选项.制作出的'Makefile'会查看随此选项传递的参数,当一个包在安装时可以彻底的重新安置他的结构独立部分. 举一个例子,当安装一个包,例如说Emacs,下面的命令将会使Emacs Lisp file被安装到"/opt/gnu/share":
$ ./configure --prefix=/opt/gnu

--exec-prefix=EPREFIX
  与'--prefix'选项类似,但是他是用来设置结构倚赖的文件的安装位置.编译好的'emacs'二进制文件就是这样一个问件.如果没有设置这个选项的话,默认使用的选项值将被设为和'--prefix'选项值一样.

--bindir=DIR
  指定二进制文件的安装位置.这里的二进制文件定义为可以被用户直接执行的程序.

--sbindir=DIR
  指定超级二进制文件的安装位置.这是一些通常只能由超级用户执行的程序.

--libexecdir=DIR
  指定可执行支持文件的安装位置.与二进制文件相反,这些文件从来不直接由用户执行,但是可以被上面提到的二进制文件所执行.

--datadir=DIR
  指定通用数据文件的安装位置.

--sysconfdir=DIR
  指定在单个机器上使用的只读数据的安装位置.

--sharedstatedir=DIR
  指定可以在多个机器上共享的可写数据的安装位置.

--localstatedir=DIR
  指定只能单机使用的可写数据的安装位置.

--libdir=DIR
  指定库文件的安装位置.

--includedir=DIR
  指定C头文件的安装位置.其他语言如C++的头文件也可以使用此选项.

--oldincludedir=DIR
  指定为除GCC外编译器安装的C头文件的安装位置.

--infodir=DIR
  指定Info格式文档的安装位置.Info是被GNU工程所使用的文档格式.

--mandir=DIR
  指定手册页的安装位置.

--srcdir=DIR
  这个选项对安装没有作用.他会告诉'configure'源码的位置.一般来说不用指定此选项,因为'configure'脚本一般和源码文件在同一个目录下.

--program-prefix=PREFIX
  指定将被加到所安装程序的名字上的前缀.例如,使用'--program-prefix=g'来configure一个名为'tar'的程序将会使安装的程序被命名为'gtar'.当和其他的安装选项一起使用时,这个选项只有当他被`Makefile.in'文件使用时才会工作.

--program-suffix=SUFFIX
  指定将被加到所安装程序的名字上的后缀.

--program-transform-name=PROGRAM
  这里的PROGRAM是一个sed脚本.当一个程序被安装时,他的名字将经过`sed -e PROGRAM'来产生安装的名字.

--build=BUILD
  指定软件包安装的系统平台.如果没有指定,默认值将是'--host'选项的值.

--host=HOST
  指定软件运行的系统平台.如果没有指定,将会运行`config.guess'来检测.

--target=GARGET
  指定软件面向(target to)的系统平台.这主要在程序语言工具如编译器和汇编器上下文中起作用.如果没有指定,默认将使用'--host'选项的值.

--disable-FEATURE
  一些软件包可以选择这个选项来提供为大型选项的编译时配置,例如使用Kerberos认证系统或者一个实验性的编译器最优配置.如果默认是提供这些特性,可以使用'--disable-FEATURE'来禁用它,这里'FEATURE'是特性的名字.例如:
$ ./configure --disable-gui

-enable-FEATURE[=ARG]
  相反的,一些软件包可能提供了一些默认被禁止的特性,可以使用'--enable-FEATURE'来起用它.这里'FEATURE'是特性的名字.一个特性可能会接受一个可选的参数.例如:
$ ./configure --enable-buffers=128
`--enable-FEATURE=no'与上面提到的'--disable-FEATURE'是同义的.

--with-PACKAGE[=ARG]
  在自由软件社区里,有使用已有软件包和库的优秀传统.当用'configure'来配置一个源码树时,可以提供其他已经安装的软件包的信息.例如,倚赖于Tcl和Tk的BLT器件工具包.要配置BLT,可能需要给'configure'提供一些关于我们把Tcl和Tk装的何处的信息:
$ ./configure --with-tcl=/usr/local --with-tk=/usr/local
'--with-PACKAGE=no'与下面将提到的'--without-PACKAGE'是同义的.

--without-PACKAGE
  有时候你可能不想让你的软件包与系统已有的软件包交互.例如,你可能不想让你的新编译器使用GNU ld.通过使用这个选项可以做到这一点:
$ ./configure --without-gnu-ld

--x-includes=DIR
  这个选项是'--with-PACKAGE'选项的一个特例.在Autoconf最初被开发出来时,流行使用'configure'来作为Imake的一个变通方法来制作运行于X的软件.'--x-includes'选项提供了向'configure'脚本指明包含X11头文件的目录的方法.

--x-libraries=DIR
  类似的,'--x-libraries'选项提供了向'configure'脚本指明包含X11库的目录的方法.

  在源码树中运行'configure'是不必要的同时也是不好的.一个由'configure'产生的良好的'Makefile'可以构筑源码属于另一棵树的软件包.在一个独立于源码的树中构筑派生的文件的好处是很明显的:派生的文件,如目标文件,会凌乱的散布于源码树.这也使在另一个不同的系统或用不同的配置选项构筑同样的目标文件非常困难.建议使用三棵树:一棵源码树(source tree),一棵构筑树(build tree),一棵安装树(install tree).这里有一个很接近的例子,是使用这种方法来构筑GNU malloc包:
$ gtar zxf mmalloc-1.0.tar.gz
$ mkdir build && cd build
$ ../mmalloc-1.0/configure
creating cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for a BSD compatible install... /usr/bin/install -c
checking host system type... i586-pc-linux-gnu
checking build system type... i586-pc-linux-gnu
checking for ar... ar
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for unistd.h... yes
checking for getpagesize... yes
checking for working mmap... yes
checking for limits.h... yes
checking for stddef.h... yes
updating cache ../config.cache
creating ./config.status
这样这棵构筑树就被配置了,下面可以继续构筑和安装这个包到默认的位置'/usr/local':
$ make all && make install

======================

安装的时候被提示:no acceptableCcompilerfound in $PATH

原来C编译器没装。。。

确定一下,运行updatetdb,果然是不行!!于是安装gcc,,运行rpm -ivh gcc-xxx.rpm,其中xxx为一串数字,省略。却又遇到新问题,glibs没装,于是又装了glibs,最后运行./configure --PREFIX总算是成功了,接着make,接着make install,最后PREFIX/bin/apachectl -k start,在浏览器里敲入地址,出现了It Work!

ok总算搞定了!

分享到:
评论

相关推荐

    Linux操作系统的Configure参数解释说明

    Linux 操作系统的 Configure 参数解释说明 Linux 操作系统中的 Configure 参数解释说明是软件安装的基础知识之一...这些选项都是 Configure 参数中最基本和最常用的选项,对于软件安装过程的配置起着至关重要的作用。

    Linux的Configure参数解释

    ### Linux的Configure参数详解 #### 引言 在Linux环境下安装软件时,通常需要通过`configure`脚本来完成前期配置工作。这对于确保软件能够正确地适应当前系统环境至关重要。`configure`脚本作为Autoconf工具的基本...

    13-3-RHEL7-Linux软件包安装管理-源码编译

    在学习Linux系统的软件包安装和管理时,源码编译是一种非常重要的技能。这不仅涉及到Linux基础操作,还包括了对软件从获取、安装到配置的全周期管理。本知识点将详细介绍如何在RHEL7(Red Hat Enterprise Linux 7)...

    源码软件包的安装.docx

    【源码软件包的安装】在Linux系统中是一种常见的软件安装方式,虽然比RPM等预编译包安装更为复杂,但提供了更多的自定义选项,适用于特定需求的软件配置。源码安装允许用户根据自己的系统环境和需求选择安装组件,...

    OpenWrt 12.添加OpenWrt软件包概述.rar

    - **CONFIGURE_ARGS**:配置阶段的参数,用于传递给软件的configure脚本。 - **BUILD_DIR**:构建软件的临时目录。 - **PKG_BUILD_DEPENDS**:构建时依赖的软件包。 - **do_install**:定义安装步骤,将编译好的软件...

    linux软件包管理

    本文介绍了Linux中两种主要的软件包管理工具——RPM与YUM的基本使用方法,以及源码安装和二进制安装的过程。掌握这些技能对于系统管理员来说至关重要,可以帮助他们有效地管理和维护Linux系统的软件环境。

    源码安装openstack软件包

    在"源码安装openstack软件包"的过程中,我们需要对OpenStack的架构和组件有深入理解,并熟悉Linux操作系统、编译工具以及依赖管理。 首先,OpenStack的组件包括Nova(计算)、Glance(镜像服务)、Cinder(块存储)...

    configure配置参数[借鉴].pdf

    `configure` 文件是软件开发过程中一个非常重要的环节,它是一个自动化脚本,用于检测系统环境并生成合适的 `Makefile`,以便编译和安装软件。`configure` 脚本通常伴随着开源或自定义软件的源代码包。下面将详细...

    ROSEHA for Linux 培训课程ppt 安装与卸载软件包

    4. **编译与配置**:对于源代码安装,需要进入解压后的目录,执行`./configure`来配置软件,然后使用`make`进行编译,最后用`make install`安装到系统中。 5. **设置环境变量**:安装完成后,可能需要更新环境变量...

    Redhat6.5安装heartbeat2.1.4软件包

    标题提及的是在Redhat6.5系统上安装heartbeat-2.1.4的过程,这是一个用于确保服务连续性的工具,通过监控系统状态并在主节点失效时自动将服务切换到备用节点。描述中提到了源码编译安装的方法,以及包含了相关的文档...

    用GCC 编译环境所需要的软件包环境配置和安装

    使用`configure`脚本来设置编译参数,如安装路径等。 ```bash [root@localhost gcc-source]# ./configure --prefix=/usr/local/gcc ``` **第四步:编译安装** 执行`make && make install`命令进行编译和安装。 ```...

    linux系统基础强化:09软件包管理.ppt

    RPM命令提供了多种参数,如`-i`用于安装包,`-v`显示详细信息,`-h`显示安装进度,`-e`用于卸载软件,`-q`查询已安装的软件包,`-U`用于升级包,`--nodeps`表示强制删除,忽略依赖关系,`-ql`则可以列出软件包安装的...

    configure配置

    - 如果在`make install`时使用了`PREFIX`参数,但实际安装位置与预期不符,可能是由于在`./configure`阶段没有正确设置`--prefix`。 - 有时,某些项目的`Makefile`可能不支持在`make install`阶段更改`PREFIX`。 ...

    entos安装Oracle11g所需软件包compat-libstdc++-33-3.2.3-72.el7.x86-64、lib

    在EntOS系统上安装这两个软件包的过程通常如下: 1. **安装依赖管理工具**:首先,确保系统已经安装了`yum`或者`dnf`(根据EntOS的版本)这样的包管理工具,用于安装和管理RPM格式的软件包。 2. **添加第三方仓库*...

    rpm安装详解

    其中,your-package.rpm 是要安装的 rpm 软件包的文件名,一般置于当前目录下。在安装过程中可能出现警告或提示,例如: conflict with ... 表示要安装的包里有一些文件可能会覆盖现有的文件,缺省时这样的情况下...

    oracle_configure.rar_oracle

    "oracle_configure.sh"是一个shell脚本,用于自动执行安装过程中的各种配置任务,包括系统检查、依赖安装、环境变量设置、数据库实例创建等。 三、准备工作 在运行"oracle_configure.sh"之前,确保你的系统满足以下...

Global site tag (gtag.js) - Google Analytics