精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● FreeBSD>>安装与升级>>〖新手入门〗在FreeBSD下安装应用软件

主题:〖新手入门〗在FreeBSD下安装应用软件
发信人: sungang(笨刚)
整理人: zhcharles(2002-01-30 16:01:03), 站内信件
             〖新手入门〗在FreeBSD下安装应用软件
                                           笨刚([email protected])整理


一、) 在FreeBSD的ports(编译過的叫packages)里,已经拥有了大量的应用软件,安装ports里的软件,非常简单,首先保证你的计算机已经连上internet,然后进入相应的ports目录,如
su-2.05# cd /usr/ports/chinese/abiword/
su-2.05# make install
就会帮你把软件抓回来,打好补丁,编译安装好了。
如果是packages方式的软件包安装, 用pkg_add命令。如
su-2.05# pkg_add  ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-4-stable/chinese/zh-abiword-0.7.13.tgz
如果有需要安装相关的软件包,则应先安装相关的包。
详细的依赖关系(Requires)参照http://www.freebsd.org/ports/

二、如果不幸,ports和packages里都没有,那就只能自己去寻找源代码来编译安装了。

很多软件包提供给各种 UNIX, 包括 FreeBSD, 是将源代码文件压缩成文件而发行的. 相同的软件需要可以在不同对象的机器上执行, 并且这可节省软件成本而以免必须生产各种发行版本. 软件包的单一发行版本结果能执行在各式实体平台上, 像是在 Intel 机器, DEC Alpha, RISC 工作站, 甚至是大型机. 但不幸的是, 这将"建立安装"软件的工作推给了最终用户(end user), 就是你

2.1、取得软件

通过下载或其它方式取得一个软件包. 最常见情况是它被打包而压缩过的.tar.gz或.tgz 形式. 首先将它复制到一工作目录. 然后用 untar 和 gunzip 处理它. 处理它最适合的命令是 tar xzvf filename, 这里的 filename 当然是软件文件名. 这种解开程序常常会安装适当文件在它所开启的子目录中. 注意的是如果套件名称有 .Z 结尾, 那将要使用 
uncompress 软件包名字
然后再用 tar xvf PACKAGENAME。

读一下README和INSTALL文件,编辑配置文件和configure文件(如果需要的话),如果要使用 patch文件,该文件有列出原本的与新的源代码案的差异, 来升级或加入bugfix至未打包(unarchived)的源代码,doc文件或README 文件会告知你相关的信息。用法 patch < patchfile

2.2、编译安装

./configure 选项 (有些软件不用)
make
make test (有些软件没有这个选项)
make install (通常需要root身份)
有些软件的安装不是按这种惯例,比如sendmail,需要参照里面的INSTALL文件的说明。

如要重新编译时,要make clean或make distclean(把Makefile也清掉)。做了某些更改时,需要make depend
然后建一些初始配置(如果需要的话),软件就可以正常运行了。


2.3、Troubleshoot

如果make 很成功没有错误,那比较幸运,然而, 经常会遇到不能正常make,这时你需要耐心来排错。

2.3.1 连结错误

如果 make 失败而出现有 Link error: -lX11: No such file or directory, 这可能意味著 Imake 文件没有适当地装好. 检查 Makefile 的第一部分有没有像这样的几行:
LIB= -L/usr/X11/lib
INCLUDE= -I/usr/X11/include/X11
LIBS= -lX11 -lc -lm

-L 和 -I 开关会高诉编译器和链接程序分别去哪里寻找 library 和 include 文件. 在这个例子里, X11 libraries 应该是在 /usr/X11/lib 目录, 而 X11 include 文件 应该是在 /usr/X11/include/X11目录. 如果这在你的机器上是不对的, 必须改变 Makefile 而且再试试 make.

在非常少的情况, 以 root 身分跑一下 ldconfig 也许是个答案: # /etc/ldconfig -n /lib 将会更新共享式函数库符号连结 (shared library symbolic links). 这在正常的情形下不是需要的.

有时源代码需要使用旧版的 X11R5 libraries 来建立. 如果你有 R5 libs 在 /usr/X11R6/lib (当你首先在安装 Linux 时, 你是有选择是否安装它们的), 然后你只需要确定,你有连结到软件所需要建立的地方. R5 libs 是有 libX11.so.3.1.0, libXaw.so.3.1.0, 和 libXt.so.3.1.0. 一般你需要连结至, 像是 libX11.so.3 -> libX11.so.3.1.0. 大概软件也需要这个形式连结 libX11.so -> libX11.so.3.1.0. 当然, 要将这"断掉(missing)"的连结建好, 要以 root 身分使用这指令 ln -s libX11.so.3.1.0 libX11.so. 


某些软件会要求你去安装一个或以上的升级版本. 举例而言, StarDivision GmbH 的 StarOffice 组件(suite)要求 libc version 5.4.4 或更新. 以 root身分, 你需要复制一个或以上的函数库(libraries)至合适的目录, 删去旧的函数库(libraries),然后重设符号连结. 小心: 在这要格外注意, 因为如果你弄糟, 你可能会付出你的系统不能运作的代价. 一般在ports里会有相应的含书库。

2.3.2 其它问题 


在安装好的 Perl 或 shell script 给你一个 No such file or directory 错误讯息. 在这情况,检查文件权限来确定文件可执行以及检查文件标头是否含有使用 shell 或程序, 指明 script 所在地方. 举例而言, script 开始如: 
#!/usr/local/bin/perl

如果 Perl 实际装在你的 /usr/bin 目录, 而不是 /usr/local/bin 目录, 那么 script 无法执行. 有两个方法来修改. script 文件标头改成 #!/usr/bin/perl, 或用符号连结至正确的目录, ln -s /usr/bin/perl /usr/local/bin/perl. 

某些 X11 软件要求有 Motif 函数库(libraries)才能建立. 而目前 Motif 还要额外 $100-$200 的花费 (虽然免费软件 Lesstif 在某些场合也能够用). 如果你需要 Motif 来建立某一套件, 但缺少 Motif libraries, 那么也许可以取得 静态连结的二进制代码(statically linked binaries). 静态连结在二进制代码本身纳入函数库行程(library routines). 这造成二进制代码文件大了许多, 但是码可在缺少该函数库的系统上执行. 


执行 configure script 会创造奇怪的 Makefile, 那像是与你所要设法建立的套件亳不相干. 这表示跑著错误的 configure, 其找到你的 path 上某处其他的 configure. 所以要下 configure 指令应该要下成 ./configure 即目前目录下的. 


某些程序会要求有 setuid root, 为了要以有 root 权力 来执行. 要达成这目录的指令是 以root 下指令 chmod u+s filename. (注意的是这程序已经是 root 所拥有了). 这在设定文件权限中的 setuid bit 很有用. 这样用在当程序在存取系统硬件,像是 modem 或 CD ROM drive, 或当 SVGA libs 被使在於主控台模式(console mode), 像是在一个模拟器(emulation)套件. 如果程序正被 root 执行, 但给一般使用者一个 access denied 的错误讯息, 想像就是这样造成的. 


警告: 一个有 setuid 成 root 的程序可能提出对你的系统有安全上的风险. 对需要setuid root的软件包需要谨慎,搞不好,就很容易给hacker留下backdoor。这个程序可以 root 权力来跑而所以有破坏的潜在性. 在设定 setuid bit 前, 确定你知道该程序在做什么, 必要时看一下源代码. 


2.3.3 微调(优化) 

你可能希望检查 Makefile 来确定有选用对你系统最佳编译选项. 举例来说, 设定 -O2 标志来选最高层级的优化而 -fomit-frame-pointer 标志来生成最新的二进制代码 (虽然 debugging 会没有打开). 除非你知道你在做什么, 而且在任何情况下, 除非艰苦建立的工作已完成, 否则不要玩这些. 

2.3.4 去哪取得进一步的协助 
大概25%的应用程序建立"完全没有困难". 另外大约50%能"克服困难后"建立, 要付出努力的范围从无聊到极为困难.有某些套件无论如何都无法建立. 即使那样, 那些 Intel ELF 和/或 a.out 二进制代码, 也可能在 Sunsite, TSX-11 archive 或其它地方找到. 也许, 软件的开发者可以提供编译好的二进制代码给你的特别的机器使用. 


注意的是如果你取得预先编译好的二进制代码, 你会需要检查是否与你的系统兼容: 

这二进制代码必须在你的 硬件上跑 (i.e., Intel x86). 
这二进制代码必须与你的核心(kernel)兼容 (i.e., a.out 或 ELF). 
你的函数库(libraries)必须是最新的. 
如果全都失败, 你可以在合适的新闻组(newsgroup)寻求帮助。

2.3.5 其他问题
读一下软件套件的文件来决定是否有某些环境变量需要设 (在 .bashrc 或 .cshrc) 以及是否 .Xdefaults 和 .Xresources 文件需要调整. 

可能有个应用程序内定的文件, 通常叫做 Xfoo.ad 在原本的 Xfoo 发行软件库. 如果这样, 编辑 Xfoo.ad 文件适合你的机器, 然后重新命名 (mv) 成 Xfoo 而且 以 root 身分 安装它到 /usr/lib/X11/app-defaults 目录, 没这样做可能会造成软件行为很奇怪, 甚至拒绝执行. 

大多数的软件套件附有一个或以上的格式化 man pages. 以 root 身分, 复制 Xfoo.man 文件到合适的 /usr/man 目录 (man1 - man9), 而根据那再重新命名. 举例而言, 如果 Xfoo.man 结果是在 /usr/man/man4, 那应该命名为 Xfoo.4 (mv Xfoo.man Xfoo.4). 根据一般约定使用者的命令摆在 man1, 游戏是在 man6, 而管理的套件是在 man8 (看一下 man 文件 以取得更详细数据).

某些软件不会安装二进制代码到合适的系统目录(如qpopper), 换句话说, 他们没有 install 选项在 Makefile 中. 如果是这情况, 你可以用 root 身分复制二进制代码到 usr/local/bin 目录来手动安装二进制代码. 

注意的是某些或全部上述步骤,在大部分情形下,应该会由 make install 来自动操作. 如果是这样, README 或 INSTALL 文件会提到. 




----
Best Regards,
Sun Gang
            [email protected]
            icq: 2499593
            Don't Click me!       

[关闭][返回]