源码包安装的选项(使用源码包安装服务程序的最大有点和缺点是什么?)

本篇文章给大家谈谈源码包安装的选项,以及使用源码包安装服务程序的最大有点和缺点是什么?对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何解决源码包安装时的依赖性问题

不管是初步跨入Linux殿堂的新手,还是具有多年经验的专家,在安装或编译软件包的过程中或多或少的都会遇到包的依赖问题,从而导致安装过程无法继续,比如管理员在安装LAMP时,包需要libgd.so文件,而这个文件属于GD软件包。但是在安装GD软件包时,可能这个软件包跟其他软件包又具有依赖关系,又需要安装其他软件包才行。这时有的管理员便失去耐心。在遇到这种Linux软件包依赖关系问题时,该如何解决呢?在谈这个具体的措施之前,先跟大家聊聊Linux系统里的软件依赖性问题。

一、什么是依赖性

程序依赖于程序代码的共享库,以便它们可以发出系统调用将输出发送到设备或打开文件等(共享库存在于许多方面,而不只局限于系统调用)。没有共享库,每次程序员开发一个新的程序,每个程序员都需要从头开始重写这些基本的系统操作。当编译程序时,程序员将他的代码链接到这些库。如果链接是静态的,编译后的共享库对象代码就添加到程序执行文件中;如果是动态的,编译后的共享库对象代码只在运行时需要它时由程序员加载。动态可执行文件依赖于正确的共享库或共享对象来进行操作。rpm依赖性尝试在安装时强制实施动态可执行文件的共享对象需求,以便在以后当程序运行时不会有与动态链接过程有关的任何问题。

注意:还有一种类型的依赖性,它基于显式的条目,rpm通过程序员将该依赖性强加到rpm配置文件中,但目前我们不关心这种类型的依赖性,这种依赖性比较容易解决。这里将重点放在rpm强制实施的更加复杂的共享对象依赖性。

二、动态可执行文件和共享对象

动态可执行文件使用最初编译和链接程序时使用的库文件的共享对象名称来查找共享对象。它们在少数的几个标准位置查找,比如在/lib和/usr/lib目录及在LD_LIBRARY_PATH环境变量(主要用于指定查找共享库,比如我们在安装Oracle时指定路径,exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib)指定的目录中。顺便提一下,在这些库目录中找到的共享对象可能不是真正的文件;它们可能是指向位于其他位置的真实库文件的符号链接(但通常仍旧在标准库目录的一个目录中)。至少从系统管理员的观点是在用于创建共享库文件的共享库软件包的名称和共享库文件的名称之间通常没有什么关系。例如,GLIBC2.3软件包用于创建libc.so.6共享库文件。也从本示例中注意到,添加到共享库文件名结束的版本号(.6)跟用于创建它的版本号(2.3)没有关系。这是由共享库软件包开发人员有意完成的,以便GLIBC的新版本可以重用相同的共享库文件名libc.so.6。这允许您在系统上加载新版本的GLIBC,而不用中断动态链接到lib.so.6共享库文件的所有程序,当然假定新版本的GLIBC向后与动态可执行文件最初所链接的老版本GLIBC兼容。因此,即使库文件或共享对象文件有与它们相关的版本号,这些版本号也不能帮助你确定他们来自哪个版本的共享软件包。

注意:当将whatprovides选项用于rpm查询命令时,可以获得有关使用rpm软件包加载到系统的现有共享对象的信息。这种混乱是由下面的事实造成的:单个共享库文件可能支持某个范围的共享库软件包版本。例如,要检查soname库文件/lib/libc.so.6支持的GLIBC共享库软件包,运行下面的命令:

#objdump--all-headers/lib/libc.so.6|less

向下滚动此报告,直到到达Versiondefinitions:部分,以便查看libc.so.6共享库文件支持哪些GLIBC版本:

Versiondefinitions:

10x010x0865f4e6libc.so.6

20x000x0d696910GLIBC_2.0

30x000x0d696911GLIBC_2.1

GLIBC_2.0

40x000x09691f71GLIBC_2.1.1

GLIBC_2.1

50x000x09691f72GLIBC_2.1.2

GLIBC_2.1.1

60x000x09691f73GLIBC_2.1.3

GLIBC_2.1.2

70x000x0d696912GLIBC_2.2

GLIBC_2.1.3

80x000x09691a71GLIBC_2.2.1

GLIBC_2.2

90x000x09691a72GLIBC_2.2.2

GLIBC_2.2.1

100x000x09691a73GLIBC_2.2.3

GLIBC_2.2.2

110x000x09691a74GLIBC_2.2.4

GLIBC_2.2.3

120x000x09691a76GLIBC_2.2.6

GLIBC_2.2.4

130x000x0d696913GLIBC_2.3

GLIBC_2.2.6

140x000x09691972GLIBC_2.3.2

GLIBC_2.3

150x000x09691973GLIBC_2.3.3

GLIBC_2.3.2

160x000x09691974GLIBC_2.3.4

GLIBC_2.3.3

170x000x0d696914GLIBC_2.4

GLIBC_2.3.4

180x000x0d696915GLIBC_2.5

GLIBC_2.4

190x000x0963cf85GLIBC_PRIVATE

GLIBC_2.5

200x000x0b792650GCC_3.0

在本示例中,1ibc.so.6共享库文件支持原先为GLIBC版本2.0到2.5而开发的所有动态执行文件。注意:也可以使用objdump命令来从共享库文件中提取soname,命令如下所示:

#objdump--all-headers/lib/libcrypto.so.0.9.8b|grepSONAME

SONAMElibcrypto.so.6

objdump:/lib/libcrypto.so.0.9.8b:norecognizeddebugginginformation

接下来,将讨论rpm软件包是如何生成的,以便在新系统上安装rpm软件包时,这些共库依赖性是己知的。

三、Rpm软件包和共享库依赖性

当程序员生成rpm软件包时,ldd命令用于报告动态可执行文件软件包中所有动态可执行文件使用的所有共享库。另一个混乱是由下面的事实带来的:相同软件包中的不同动态可执行文件可能与相同的共享库软件包的不同版本进行链接。例如,Heartbeat软件包中的不同程序可能已经进行了开发,并动态链接到libc.so.6sonmae共享库文件的不同GLIBC版本。对rpm命令使用-q和--requires参数,可以看到rpm软件包需要的共享库的完整清单。例如,要看到Heartbeatrpm软件包所有的所需依赖性,请使用命令:

#rpm-q--requires-pheartbeat-1.x.x.i386.rpm

这产生了下面的报告:

sysklogd

/bin/sh

/bin/sh

/usr/bin/python

ld-linux.so.2

libapphb.so.0

libc.so.6

libc.so.6(GLIBC_2.0)

libc.so.6(GLIBC_2.1)

libc.so.6(GLIBC_2.1.3)

libc.so.6(GLIBC_2.2)

libc.so.6(GLIBC_2.3)

libccmclient.so.0

libdl.so.2

libglib-1.2.so.0

libhbclient.so.0

libpils.so.0

libplumb.so.0

libpthread.so.0

librt.so.1

libstonith.so.0

注意,在此报告中,libc.so.6soname是所需要的,此共享库必须支持使用GLIBC共享软件包版本号2.0、2.1、2.1.3、2.2和2.3进行链接的动态可执行文件。这是由下面的事实决定的:Heartbeat软件包中的不同动态可执行文件是针对不同版本的libc.so.6库的每个版本进行链接的。在了解了动态可执行文件、共享对象、soname和共享库软件包彼此是如何相关的后,下面准备来看这样的一个例子:当尝试安装rpm软件包,并且它由于依赖性错误而失败时,会发生什么。yum能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

四、手工解决依赖性问题

通常,当尝试安装发行版中没有包括的软件包(及不能由像up2date、apt-get或Yum一样的更新工具自动解决其依赖性的软件包)时,将碰到rpm依赖性错误。例如,如果尝试在老的Linux发行版上使用rpm–ivh*rpm命令,例如所有的Heartbeatrpm包,那么在安装过程中就可能碰到下面的错误:

error:faileddependencies:

libc.so.6(GLIBC_2.3)isneededbyheartbeat-1.x.x

libc.so.6(GLIBC_2.3)isneededbyheartbeat-pils-1.x.x

libcrypto.so.0.9.6isneededbyheartbeat-stonith-1.x.x

libsnmp-0.4.2.6.soisneededbyheartbeat-stonith-1.x.x

注意,rpm命令没有干扰报告所需的每个GLIBC共享库软件包版本号——它只报告所需的最高编号的版本号(GLIBC_2.3)。(假定原来的软件包开发人员不会将相同软件包中的可执行文件链接到不兼容版本的共享库软件包)所有的这些故障都报告所需的共享库名称或soname(而不是文件名称,soname始终以“lib”开始)。但可以删除添加到rpm报告的soname结束的版本号,并快速检查以查看是否在系统中使用locate命令安装这些共享库(假设您的locate数据库是最新的,有关更多信息,请参阅locate或slocate的手册页)。例如,要查找libcrypto享库文件,要输入:

#locatelibcrypto

[root@localhost~]#locatelibcrypto

/lib/libcrypto.so.0.9.8b

/lib/libcrypto.so.6

/root/.Trash/vmware-tools-distrib/lib/lib32/libcrypto.so.0.9.8

/root/.Trash/vmware-tools-distrib/lib/lib32/libcrypto.so.0.9.8/libcrypto.so.0.9.8

/root/.Trash/vmware-tools-distrib/lib/lib64/libcrypto.so.0.9.8

/root/.Trash/vmware-tools-distrib/lib/lib64/libcrypto.so.0.9.8/libcrypto.so.0.9.8

/usr/lib/libcrypto.a

/usr/lib/libcrypto.so

/usr/lib/pkgconfig/libcrypto.pc

/usr/lib/vmware-tools/lib32/libcrypto.so.0.9.8

/usr/lib/vmware-tools/lib32/libcrypto.so.0.9.8/libcrypto.so.0.9.8

/usr/lib/vmware-tools/lib64/libcrypto.so.0.9.8

/usr/lib/vmware-tools/lib64/libcrypto.so.0.9.8/libcrypto.so.0.9.8

如果此命令没有在系统上找到一个libcrypto共享库文件,将需要转到Internet并找出哪个共享库软件包包含此共享库文件。完成此项工具的一个快速和简便方式是只要在上将共享库的名称输入到搜索栏中。如果将文本libcrypto.so输入到此搜索贞中,将很快知道此共享库是由openssl软件包提供的。

如果老版本的共享库数据包已经安装在系统上,可以用如下的命令确认此软件包含您需要的共享库文件:

#rpm-q--providesopenssl

[root@localhost~]#rpm-q--providesopenssl

config(openssl)=0.9.8b-10.el5

lib4758cca.so

libaep.so

libatalla.so

libchil.so

libcrypto.so.6

libcswift.so

libgmp.so

libnuron.so

libssl.so.6

libsureware.so

libubsec.so

openssl=0.9.8b-10.el5

此命令报告此rpm软件包中提供的所有内容(这包括软件包提供的共享库文件的soname)。注意:如前面指出的,共享库软件包版本号没有并且应该没有与共享库文件(soname)版本号的任何对应关系。这里不进行这方面的讨论,因为soname符号链接可能指向不同版本的共享库文件,这也是在尽量避免在安装新版本的共享软件包时中断现有动态可执行文件的情况下完成的。

五、自动解决依赖性故障

当您使用rpm软件包来生成、升级或添加新的特性到系统时,依赖性故障可能很快变成一场恶梦。只要通过使用您的发行版供应商的升级服务或工具,就可以避免这场恶梦。例如,当选择要安装的rpm软件包时,RedHat工具up2date自动从RedHat下载并安装所有rpm依赖性。下面就点上列出了几个完成相同事情的支持社区的免费方法:。下面将只进一步看到这些自动更新工具中的一种:Yum。

1.使用Yum来安装rpm软件包

Yum(YellowdogUpdater,Modified)程序可从下面网址下载:

在下载了此软件包后,可以使用下面的命令像任何其他rpm软件包那样安装它:

#rpm-ivhyum*

您可能需要更新想用于下载您的rpm软件包的存储库。有关Fedora的可用Yum存储库的清单在要切换到不同的存储库,下载这些文件中的一个文件,并将该文件作为/etc/yum.conf文件安装。现在可以用下面的命令告诉Yum报告存储在Yum存储库中、可用于安装所有软件包:

#yumlist

[root@localhost~]#yumlist|more

ThissystemisnotregisteredwithRHN.

RHNsupportwillbedisabled.

Loading"security"plugin

Loading"rhnplugin"plugin

InstalledPackages

Deployment_Guide-en-US.noarch5.2-9installed

Deployment_Guide-zh-CN.noarch5.2-9installed

Deployment_Guide-zh-TW.noarch5.2-9installed

GConf2.i3862.14.0-9.el5installed

GConf2-devel.i3862.14.0-9.el5installed

ImageMagick.i3866.2.8.0-4.el5_1.1installed

MAKEDEV.i3863.23-1.2installed

MySQL-python.i3861.2.1-1installed

NetworkManager.i3861:0.6.4-8.el5installed

NetworkManager-glib.i3861:0.6.4-8.el5installed

2.用Yum安装新的rpm软件包

在本示例中,将安装新的GLIBC软件包。用简单的命令安装最新的GLIBC及其所有依赖性:

#yumupdateglibc

如果一切正常,Yum程序将自动检测、下载并安装最新GLIBC软件包所需要的所有rpm软件包(这里的GLIBC软件包是为您的发行版而构建的,不一定是可用的最新版GLIBC软件包(使用发行版所批准的GLIBC共享库软件包版本号或冒险安装没有使用正常系统操作所需要的动态可执行文件的GLIBC软件包版本)。也可以将list参数用于Yum和grep命令来查找要安装的软件包。例如,要查找名称中有SNMP的软件包,请输入:

#yumlist|grepsnmp

此命令返回如下报告:

ThissystemisnotregisteredwithRHN.

RHNsupportwillbedisabled.

net-snmp.i3861:5.3.1-24.el5installed

net-snmp-libs.i3861:5.3.1-24.el5installed

net-snmp-perl.i3861:5.3.1-24.el5installed

net-snmp-utils.i3861:5.3.1-24.el5installed

现在可以容易地使用YUM下载并安装所有这些rpm软件包。

六、关于升级Gilbc的建议

Glibc库是Linux底层的运行库,其性能对于整个系统的运行有重要的意义。Glibc库包含了大量函数,其中的函数可大致分成两类,一类是与操作系统核心沟通的系统调用接口,它们作为功能型函数被调用,提供对Linux操作系统调用的包装与预处理。另外一类为一般的函数对象,它们提供了经常使用的功能的实现,作为工具型函数使用。在实践中,有不少软件就是依赖与Glibc版本才能安装并运行,说白了对于Glibc版本要求是版本高了不行,低了还不成。这些编译环境中的应用程序也和其它程序一样必须有运行的环境,我常遇到管理员在生产中给服务器装了最新的Linux发行版,结果应用软件装不上去,原因是Glibc的版本不对,有的是写在原发行版glibc上升级有的是降级,结果倒是整个系统的崩溃,实践经验告诉我,你只有选择相应Linux发行版里对应的glibc,例如我们单位的一个应用软件时在rhel3.0下开发的,那么就得要对应的发行版,换了别的就难说了,任何自己升级或降级Glibc来适应应用软件的做法都是不可取的,问题最后的解决方法是找到了RHEL3装上就解决了。在表一中,我把几个linux发行版原配的Glibc版本列出,供大家参考。

点击图片查看大图

Glibc库与核心功能组件

上图一说明:

GCC依赖于glibc

binutils依赖于glibc(binutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编)

make依赖于glibc

头文件是在编译时候gcc所需要的,但本身都是一些文本文件,因此没有需要的运行环境。

常用工具依赖于glibc和各种需要用到的动态库。

下表一列出了多个重要Linux发行版的Glibc的情况

Linux发行版Glibc版本

Redhat9glibc-2.3.2-5

Fedora1glibc-2.3.2

RedhatEnterpriseLinuxAs3glibc-2.3.2-95

RedhatEnterpriseLinuxAs4glibc-2.3.4

RedhatEnterpriselinux5glibc-2.5-24

RedhatEnterpriselinux6glibc-2.9

Centos5.xglibc-2.5

SuseLinuxEnterpriseServer9glibc-2.3.2-92

SuseLinuxenterpriseServer10glibc-2.4.31.54

SuseLinuxEnterpriseServer11glibc-2.9

点击图片查看大图

Linux发行版glibc(32)位

下面介绍几个查询glibc版本号的方法:

#ls–al/lib/libc*

或者是用下面的命令也可以实现

#rpm–qp|grepglibc

基于debian的系统通过dpkg–l|greplibc6也可以查到,总之一般都在/usr/share/doc目录下都能看到glibc的相关信息。

七、小结

大部分情况下,在遇到软件包依赖关系问题的时候,操作系统提供的文件名字与软件包名字都会有直接的联系。有可能文件的名字就是软件包的名字。但是有些时候文件的名字与软件包的名字会相差甚远。此时大部分系统管理员可能光凭文件名字无法找到对应的软件包。此时可以先在系统安装光盘里找,如果找到那时最佳选项,然后就需要借助笔者上面谈到的一些专业网站,去查询软件包的名字了。当系统管理员安装了某个软件之后,如果存在软件包之间的依赖关系,则最好能够拿本子或者通过其他手段记录下来。以便下次方便实用,注意工作中的积累,相信绝大部分的软件包依赖关系问题都会迎刃而解。

源码包安装的选项(使用源码包安装服务程序的最大有点和缺点是什么?),源码包安装的选项,信息,文章,源码,第1张

linux中源代码包安装的基本步骤是什么?

详解linux源码包安装过程

1. 解压缩包

可以通过下载或其他方式获得了一个软件包,通常它是一个压缩文件,大部分可能是存档的和压缩的,这些文件一般以 .tar .gz为扩展名。

首先拷贝它到一个目录,然后 untar 和 gunzip 解压它。 通常这个命令是

tar xzvf filename [filename 是软件文件名称]

解压后的文件一般会在当前目录下的创建子目录,并以这个包名来命名。 你也可以用用这个命令预先查看结果 tar tzvf filename,显示包里有那些解压文件。

源文件如果是新的 bzip2 (.bz2) 格式,可用

bzip2 -cd filename | tar xvf -,或更简单的 tar xyvf filename ,这很不错的tar命令被不断的完善。

说明:

A:有时候一些文件必须安装在用户的 home 目录下,或更多的是在一个固定的目录,比如 /, /usr/src, 或 /opt 。所以必须仔细阅读安装包的配置信息。当一个软件包里如果有config 和 Makefiles 文件则最好去编辑它,这里包括了安装指令和说明。提示:你改变 makefile 会导致不同的结果。大部分软件包允许用 make install 自动处理安置二进制文件在适当的系统位置。

B:你可能碰到过一些共享文件、shell 存档文件、尤其是 Internet 上的源码新闻组。它们保留的原因是具有人性化的可读性,并且允许新闻组缓冲并通过它们筛选和剔除出不合格的。它们可能用 unshar filename.shar 命令来解压。

C: 一些源码存档文件是用非标准的 DOS,Mac 或其他压缩的比如:

zip, arc, lha, arj, zoo, rar, and shk.

D: 有时候,你可能需要使用一个 patch 或显示改变了的 diff 文件来升级或修复存档的源码文件。这 doc 文件或者 README 文件将告诉你怎么去使用。一个很好的命令用标准语法来调用的命令是 patch patchfile.

2: 关于 rpm 安装包

一些 Linux 用户惧怕通过使用源码来手动安装软件包,不过现在有方便的 rpm 和 deb 或 新格式的 slp 包。例如:rpm 安装运行平稳又快,作为一个软件安装在某几个有名的操作系统。

作为方便的RPM包也存在很多不好的缺点,例如:

A: 要了解软件中更多更详细的内容你必须去在二进制中去了解,而不是rpm包。

B: 还有安装一个 rpm 包如果需要依赖关系那么安装就可能会导致失败。

C: 当 rpm 请求你系统中不同版本的库,那么安装将不能继续,除非你为错误的库位置创建连接符号到正确的位置。

说明:必须使用root 安装 rpm 和 deb 。因为它需要必须的写入权限。

最简单的,用命令 rpm -i packagename.rpm 和 dpkg --install packagename.deb 会自动解包和安装。

3:关于安装 Linux 包出现的一些问题及解决方案

假设 make 失败有个链接错误: -lX11: No such file or directory,正好在 xmkmf 之后已被调用,这可能意味着 Imake 不能被完全建立。检查第一部分 Makefile 文件的的行是这样:

· LIB= -L/usr/X11/lib

· INCLUDE= -I/usr/X11/include/X11

· LIBS= -lX11 -lc -lm

这个 -L 和 -I 开关告诉编译器和链接分别在哪里找到 library 和 include 文件。在这个例子里, X11 库应该在 /usr/X11/lib 目录,且 X11 包含文件应该在 /usr/X11/include/X11 目录里。假如对于你的机器上的这个错误,请处理修改 Makefile 并重新再 make。

没有声明涉及的数学库函数,像下列各项:

/tmp/cca011551.o(.text 0x11): undefined reference to `cos'

要修复它,需要明确链接到匹配的库,在 Makefile (看先前的例子) 里增加一个 -lm 到 LIB 或 LIBS 标记 。

用其他方法尝试

仍然失败 如果失败,参考下列脚本:

make -DUseInstalled -I/usr/X386/lib/X11/config

这个直接方式的类别相当于。

在少数例子里,用 root 运行 ldconfig 可能会解决:

# ldconfig 更新共享库链接符号。

一些 Makefiles 使用你系统里未被承认的库别名。一个例子,构建可能需要 libX11.so.6 ,但是在 /usr/X11R6/lib 不存在文件或链接。然而,在那里是 libX11.so.6.1。解决方法是用 root 运行ln -s /usr/X11R6/lib/libX11.so.6.1 /usr/X11R6/lib/libX11.so.6 ,接着需要运行 ldconfig 。

有一些包需要你安装一个或更多库的升级版本。需要拷贝一个或更多的库到适当的目录里,删除旧的库,重新设置动态链接库。

4:一些其他的问题处理

安装一个shell 脚本如果出现:No such file or directory 的错误消息。这是可以检查文件权限确定文件事可执行的,并检查文件头确定是否 shell 或程序是脚本在指定的位置被调用。一个例子,这个脚本可能是这样开始的:

#!/usr/local/bin/EDEN

如EDEN的实际安装位置是在你的 /usr/bin 目录,用一个 /usr/local/bin 替代

这个脚本不能运行有两个方法来纠正!!

A: 文件头改成 #!/usr/bin/EDEN

B: 或增加一个链接符, ln -s /usr/bin/EDEN

5:一个典型的例子 Xloadimage

首先说明下面的例子来源于国外网站的一个技术实例,这里我做了翻译和整理。

这个例子展现一个简单的问题。xloadimage 程序对我的图形工具的调整设置是有用的附加。从源码目录拷贝文件,用 tar xzvf 解压文件,可是在运行 make 的时候出现令人讨厌的错误并停止了。

gcc -c -O -fstrength-reduce -finline-functions -fforce-mem

-fforce-addr -DSYSV -I/usr/X11R6/include

-DSYSPATHFILE=\"/usr/lib/X11/Xloadimage\" mcidas.c

In file included from /usr/include/stdlib.h:32,

from image.h:23,

from xloadimage.h:15,

from mcidas.c:7:

/usr/lib/gcc-lib/i486-linux/2.6.3/include/stddef.h:215:

conflicting types for `wchar_t'

/usr/X11R6/include/X11/Xlib.h:74: previous declaration of

`wchar_t'

make[1]: *** [mcidas.o] Error 1

make[1]: Leaving directory

`/home/thegrendel/tst/xloadimage.4.1'

make: *** [default] Error 2

这个错误消息包含了实质的线索:

查看 image.h 文件的 23 行:

#include stdlib.h

在源码的某处对于 xloadimage, wchar_t 已经在指定标准 include 文件重新定义。 告诉我们首先在 image.h 的 23 行尝试注释它,或许 stdlib.h include 是不存在的,毕竟不是所有都是必需的。

在这点,构建中的收益来源于所有任何一个致命错误。xloadimage 现在功能正常。

6: 安装 Linux 包的一些总结

坚持自己动手处理所有的安装出现的问题,不断总结努力学习,从错误里去仔细研究,努力动手排错,从每个不足甚至失败的地方得到扩充和提升,可以增强安装构建软件的技巧。

关于Linux源码包安装的问题

Linux源包一般是以tar.gz为后缀的文件。这些软件需要编译安装的。一般来说,在解压缩后,会有readme之类的说明文件,里面会有安装说明。不过一般的安装步骤基本一致。以下以apache_1.3.20.tar.gz 为例:

1、解压:

#tar -zxvf apache_1.3.20.tar.gz

2、进入解压目录

#cd apache_1.3.20

3、配置

#./configure

4、编译

#make

5、安装

#make install

6、清理临时文件

#make clean

至于将下载的源码包放进虚拟机的Linux操作系统里,可以使用ftp工具连接到虚拟机系统(前提是虚拟机系统安装了ftp并设置了ftp账号),或者通过挂载windows磁盘后,直接在linux下复制过去(这个挂载对于不同类型的磁盘比较麻烦),或者安装一个xshell,连接上linux后,直接拖过去。

linux源码包安装php中的./configure选项详解

PREFIX是程序安装位置,前面那个没用过。

sbindir默认会放在PREFIX/bin目录,所以不需要特别指定。

这是我安装时的例子:

./configure --prefix=/usr/local/server/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-config-file-path=/usr/local/server/php/etc --with-config-file-scan-dir=/usr/local/server/php/etc/php.d --enable-mbstring --with-mysql=/usr/local/server/mysql --with-pgsql=/usr/local/server/postgresql --with-pdo-pgsql=/usr/local/server/postgresql --with-pdo-mysql=/usr/local/server/mysql --enable-sockets --enable-sqlite-utf8 --enable-zip --enable-zend-multibyte --with-mysql-sock --with-gd --with-mcrypt --with-mysqli=/usr/local/server/mysql/bin/mysql_config

安装结果是php被安装到了/usr/local/server/php 目录,sbin文件在/usr/local/server/php/sbin,php默认配置文件需要放到 /usr/local/server/php/etc 文件夹(etc默认不存在,新建一个,把php.ini放进去就可以了),配置文件扫描目录是 /usr/local/server/php/etc/php.d (php.d目录也需要手动建立)。

这样一来就可以和系统目录独立了,然后编译第二个php,指定prefix,例如 --prefix=/usr/local/server/php2 ,其他参数依样修改,就可以安装两套php,启动脚本自己建立一个就可以了,但是两个php-fpm配置需要改动其中一个默认监听端口,默认是9000 。其他服务软件道理是一样的,主要还是更改第二套服务软件默认监听端口,否则无法启动,会提示端口已被占用。

源码包安装的选项的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于使用源码包安装服务程序的最大有点和缺点是什么?、源码包安装的选项的信息别忘了在本站进行查找喔。

1、本网站名称:源码村资源网
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » 源码包安装的选项(使用源码包安装服务程序的最大有点和缺点是什么?)

1 评论

您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论