原文出自:1816个人主页技术论坛,具体见:http://www.1816.net/bbs/viewthread.php?tid=1726
正文如下:
ProFTPD 1.2.0 安装指南(中文版)
==============================
吴伟<jeffwu>; jeffwu_cn@hotmail.com 2004.4.11
--------------------------------------------------------------------------------
中文版声明:本文根据 proftpd 1.2.9 源代码中的同名英文原文翻译而来(英文原文所在
的原代码压缩包可以通过 http://www.proftpd.org/ 获得),遵循GPL协议。鼓励复制、
传播、分发和修改,不过请保留作者署名和本声明。
欢迎来信交流:jeffwu_cn@hotmail.com
--------------------------------------------------------------------------------
----
介绍
----
ProFTPD 被设计成了能在目标系统上,通过一个单一的名为'configure'的shell脚本来完
成编译的配置任务.该脚本文件位于源代码树的顶层.这个由GNU autoconf 工具创建的脚本
文件将会分析你的系统,创建一个'config.h'文件,使你可以清楚的编译ProFTPD。某些系
统可能需要指定某些选项给'configure'或手工修改由'configure'产生的config.h文件
和Makefile文件
ProFTPD被设计得十分灵活,导致的编译时和运行时的额外的配置复杂性也就是必要的了。
你可以基于命令行提供参数给'configure'脚本来设置编译时的选项,从而实现定制安装。
特别的,可选的编译进 ProFTPD 的软件模块也可以现在这种方式。
除了'configure'脚本的这些设置外,'include/options.h'文件中还包括了许多的可以很
容易调整的编译时选项,可以影响ProFTPD的x作。这些选项不会被'configure'脚本所修改
。每一个选项都在其自身的头文件中做了说明。这些选项几乎不需要修改,而且大部分在运行时
能被proftpd.conf配置文件中的配置指令所覆盖。
注意:一个RPM规格的示例文件已经包括在 contrib/dist/rpm/ 目录里了.
包维护者注意:
请不要去掉 ELF .comment 和 .note 部分.
如果你在一个有点不太常见的(新的或旧的)系统平台上安装ProFTPD,请考虑可以记录下你
的经验和大家分享。
--------
系统需求
--------
o ANSI/ISO C89/C90 C语言编译器, 例如:GNU gcc
o GNU make, 大部分系统应该都有
o ANSI C and POSIX run-time libraries
o BSD sockets API
o 磁盘空间: 约4.5 MB 用于解包, 6-8 MB 用于编译, 约2 MB 用于安装
--------
安装指南
--------
0. 计划你的安装。
请在开始以前读完整个安装的所有步骤。
有许多的编译定制项是你可能希望使用到的,尤其是关于用户认证的。请参考完整阅读完
README.modules 文件和其他的 README.* 文件和 contrib/README.* 文件。
注意,以下的模块是缺省包含了的,是不需要再明确添加了的: mod_auth, mod_core,
mod_log, mod_ls, mod_site, mod_unixpw and mod_xfer.还有,如果 PAM 被
检测到已经配置了的话,mod_pam 模块将会被自动包括进来。然而,有报告说某些系统
依然要求明确的添加该模块。另外请注意,contrib/mod_test 模块是仅做测试的不具
有任何实际的功能,请不要试图去使用它。
你需要指定你系统中的共享库的搜索路径。查询你的系统和编译器的文档。通常这个x作
是使用 -R 或 -rpath 选项的。在 AIX 系统上,需要特别小心的设置这个路径,请参
考README.AIX。
提示: 如果你的配置命令行变得长或复杂了,你可以试着把它变成为一个 sh 脚本文件,
比如,叫: '.configcmd'。
1. 配置软件。
运行源代码目录顶层的 GNU autoconf 'configure' 脚本文件来创建 config.h 文件和
所有的 Makefiles。除了配置 ProFTPD 使其能在你的系统上进行编译之外,你还可以
在这一步定制一些参数或给 ProFTPD 添加可选的特性。有许多配置选项可用。如果使用
默认值的话,你只须简单的运行:
$ ./configure
默认下,ProFTPD的文件会被作为 'root' 用户的身份来安装,用户组属性是 /etc/group
中的第一个组,gid为0,通常是 'root' 或 'wheel'。如果你希望采用不同的用户及用
户组身份来安装的话,请在运行 configure 脚本前设置环境变量 install_user 和
install_group。使用 Bourne-ish 风格的 shell (例如:sh, ksh, bash)的话,你可
以是用以下的命令来做:
$ install_user=root install_group=wheel ./configure
类似的,像典型的 GNU autoconf 脚本一样,可以用这种方法设置编译系统的其他的属
性,比如,设置编译器:
$ CC=gcc CFLAGS='-O -g' ./configure
其他的选项作为命令行参数传递给 configure 脚本。
通过执行 './configure --help' 可以列出所有有效的配置参数。
默认下, proftpd 和 ftpshut 安装在 /usr/local/sbin/,ftpcount 和 ftpwho 安装
在/usr/local/bin/,配置文件在/usr/local/etc/,man帮助页在/usr/local/man/man?/.
此外,/usr/local/var/proftpd/ 被用来存放运行时的 scoreboard 文件。参考
'./configure --help' 输出中的 "Directory and file names" 一节中的参数来改变这
些默认设置。 比如:把所有目录放置在 /usr/ 下而不是 /usr/local/ 下时,你可以
使用以下命令:
$ ./configure --prefix=/usr
或者, 把配置文件放在 /etc/ 下,而把运行时的状态文件放在 /var/proftpd/下,你
可以使用以下命令:
$ ./configure --sysconfdir=/etc --localstatedir=/var
可选的ProFTPD模块可以通过使用'--with-modules=LIST'参数包含进来,其中的'LIST'
是一个由冒号隔开的列表。这只适用于那些 contrib/ 目录下的可选模块( modules/
目录下的核心模块不是被强制包含了就是被默认包含了)。例如,如果你希望包括readme
和LDAP两个模块的话,你可以使用命令:
$ ./configure --with-modules=mod_readme:mod_ldap
如果你希望使用系统的 shadow 密码文件来进行用户认证的话,你在某些系统上就需要
添加上 '--enable-autoshadow' 或 '--enable-shadow'了。使用 autoshadow 的话就
使 proftpd 既能使用 shadow 密码文件也能使用传统的密码文件。
如果你希望使用 SQL 来进行用户认证的话,你必须指定 mod_sql 和一种 后台 SQL 模
块(SQL backend module), mod_sql_mysql 或 mod_sql_postgres 。此外,后台 SQL
模块(SQL backend module)必须紧跟在模块列表的后面给出,比如:
'--with-modules=mod_sql:mod_sql_postgres'. 否则,编译完后,SQL认证功能是不
能起作用。
确信在你重新执行 configure 配置脚本前,首先执行了 'make distclean' 命令。
2. 核实正确的配置x作。
观察 configure 脚本的输出。在 configure 脚本运行完后,你可以检查 config.h 文件,
确信 configure 脚本没有对你的系统做任何错误的假设。
3. 编译这个软件。
在源代码的顶层目录运行 'make'。在某些系统(比如:BSDI),你可能需要使用 GNU make
(也经常称作 'gmake' 或 'gnumake')来代替系统缺省的 make。观察编译过程的输出,
确认没有错误产生。在某些系统(特别是AIX 和 IRIX)你可能看到一些编译或连接警告。这
些一般都可以不理睬。
4. 测试软件。
从 ProFTPD 1.2.0 起,没有自动的回归(regression)测试了。
然而,鼓励去执行你自己的 ad-hoc,手工测试。
注意,你能够直接在命令行启动proftd,不过,记住,只有作为 root 运行时才能正确
获得所有的功能特性。虽然如此,很多x作能够在没有 root 权限的情况下实现。通过
使用命令行参数 '-c' 可以指定其他的配置文件。在配置文件中,可以改变默认的TCP
端口 ftp (21) 和 ftp-data (20) 为其他的值,也可以指定一个其他的 passwd文件。
既然作为守护进程不能更改它的uid,你也同样必须%D |