Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

以非超级用户身份安装 mod_perl

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]
译者/作者:cactus
出处:中国Perl协会 nbsp;FPC(Foundation nbsp;of nbsp;Perlchina)
作者:Stas nbsp;Bekman nbsp;
原名:Installing nbsp;mod_perl nbsp;without nbsp;superuser nbsp;privileges nbsp;
原文:http://www.perl.com/pub/a/2002/04/10/mod_perl.html nbsp;
发表:April nbsp;10, nbsp;2002 nbsp;
请保护作者的著作权,维护作者劳动的结晶。
nbsp;


就像大家从以前的文章里看到的,mod_perl nbsp;使Apache由两个组件组成: nbsp;Perl nbsp;模块和 nbsp;Apache nbsp;本身。虽然以非超级用户权限安装Apache很简单,但是应该知道如何安装在非系统位置的Perl模块。本文我将论证几种方法来实现这个任务。
在这些例子里,我将用stas作为用户名,/home/stas作为该用户的私人目录。

安装Perl模块到选择的目录

既然不用超级用户权限,那么你就不允许安装到系统目录,象/usr/lib/perl5。你需要找到如何在你的私人目录安装这些模块的方法。这很容易。 nbsp;

首先,你需要决定安装这些模块到什么地方。最简单的途径就是在你的私人目录下模仿与Perl有关的根目录文件系统的移植。实际上,我们只需要两个目录: nbsp;

/home/stas/bin
/home/stas/lib

既然他们会在第一个模块被安装时自动创建,那么我们就不必创建它们。99%的文件将被拷贝到lib目录下。有时候,当一些模块随着Perl脚本发布的时候会被拷贝到bin目录。如果目录不存在会被创建。
让我们安装CGI.pm包,该包包含了一些其它CGI::*模块。通常,从CPAN库下载该包,解开该包并进入新建的目录里。

现在做一个标准的perl文件Makefile.PL去准备Makefile.但是这个时候让 nbsp;MakeMaker nbsp;用你的Perl安装目录,而不是缺省的。 nbsp;

% nbsp;perl nbsp;Makefile.PL nbsp;PREFIX=/home/stas

PREFIX=/home/stas nbsp;只是安装过程不同于通常的一部分。 nbsp;注意如果你不在意MakeMaker如何选择剩下的目录,或者如果你正在用一个需要显式指明所有目的目录的老版本,那么这样做: nbsp;
% nbsp;perl nbsp;Makefile.PL nbsp;PREFIX=/home/stas nbsp;
INSTALLPRIVLIB=/home/stas/lib/perl5 nbsp;
INSTALLSCRIPT=/home/stas/bin nbsp;
INSTALLSITELIB=/home/stas/lib/perl5/site_perl nbsp;
INSTALLBIN=/home/stas/bin nbsp;
INSTALLMAN1DIR=/home/stas/lib/perl5/man nbsp;
INSTALLMAN3DIR=/home/stas/lib/perl5/man3

剩下的跟通常一样: nbsp;
% nbsp;make
% nbsp;make nbsp;test
% nbsp;make nbsp;install

make nbsp;install nbsp;安装所有的文件到私人目录。注意所有丢失的目录会被自动创建,因此没有必要创建它们。
以下就是这么做的(稍微改动过): nbsp;

正在安装 nbsp;/home/stas/lib/perl5/CGI/Cookie.pm
正在安装 nbsp;/home/stas/lib/perl5/CGI.pm
正在安装 nbsp;/home/stas/lib/perl5/man3/CGI.3
正在安装 nbsp;/home/stas/lib/perl5/man3/CGI::Cookie.3
正在写入 nbsp;/home/stas/lib/perl5/auto/CGI/.packlist
正在追加安装信息到 nbsp;/home/stas/lib/perl5/perllocal.pod

如果你不得不用显式目的参数,那么不用单个PREFIX参数,你会发现建立一个被调用的文件很有用。
例如, nbsp;/.perl_dirs nbsp;(这里 nbsp;在我们的例子中是 nbsp;/home/stas) nbsp;的内容包含: nbsp;

PREFIX=/home/stas nbsp;
INSTALLPRIVLIB=/home/stas/lib/perl5 nbsp;
INSTALLSCRIPT=/home/stas/bin nbsp;
INSTALLSITELIB=/home/stas/lib/perl5/site_perl nbsp;
INSTALLBIN=/home/stas/bin nbsp;
INSTALLMAN1DIR=/home/stas/lib/perl5/man nbsp;
INSTALLMAN3DIR=/home/stas/lib/perl5/man3

从现在起,任何时候你想本地化安装Perl模块就可以这样执行: nbsp;
% nbsp;perl nbsp;Makefile.PL nbsp;`cat nbsp;/.perl_dirs`
% nbsp;make
% nbsp;make nbsp;test
% nbsp;make nbsp;install

用这个方法,你可以很容易地保持不同Perl模块的存储。例如,你可以一个用作production nbsp;Perl,另一个用作开发。 nbsp;
% nbsp;perl nbsp;Makefile.PL nbsp;`cat nbsp;/.perl_dirs.production`

或者 nbsp;
% nbsp;perl nbsp;Makefile.PL nbsp;`cat nbsp;~/.perl_dirs.develop`

编写你自己的脚本找到本地已安装模块
这些Perl模块通常都放在四个主要目录。为了找到这些目录,执行: nbsp;

% nbsp;perl nbsp;-V

输出包含重要的perl安装信息。最后你将看到: nbsp;
Characteristics nbsp;of nbsp;this nbsp;binary nbsp;(from nbsp;libperl):
Built nbsp;under nbsp;linux
Compiled nbsp;at nbsp;Apr nbsp;6 nbsp;1999 nbsp;23:34:07
@INC:
/usr/lib/perl5/5.00503/i386-linux
/usr/lib/perl5/5.00503
/usr/lib/perl5/site_perl/5.005/i386-linux
/usr/lib/perl5/site_perl/5.005
.

这向我们表明Perl特殊变量@INC的内容,这个特殊变量通常被Perl用来查找模块的。它等价于Unix nbsp;shells里的PATH环境变量,是用来查找可执行程序的。
注意Perl也在.目录(代表当前目录)查找模块,这是在以上输出目录里的最后的入口路径。当然,这个例子来自5.00503版本的perl, nbsp;它安装在我的x86结构PC的Linux中。这就是为什么你看到了i386-linux和5.00503. nbsp;如果你的系统运行着不同版本的perl、操作系统、处理器或者芯片结构,那么一些目录会有不同的名字。

我也安装了perl nbsp;5.6.1版本到 nbsp;/usr/local/lib/ nbsp;,所以当我这么做: nbsp;

% nbsp;/usr/local/bin/perl5.6.1 nbsp;-V

你会看到: nbsp;
@INC:

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:FC3中的JAVA安装及配置   下一篇:受限制环境安装Perl模块方法

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号