FreeBSD China Community FAQ --New

时间:2007-08-12 15:25:36   来源:freebsdchina.org  作者:  点击:次  出处:技术无忧
关键字:faq freebsd

Q:5.30. 这个错误讯息:``swap_pager: indefinite wait buffer:'' 是什么意思呢?
A:这个讯息是说有一个执行程序正在尝试将分页记忆体(page memory) 写入硬碟中,而这个动作尝试了 20 秒钟仍然无法成功。这个有可能是因为 硬碟有坏轨、电路或排线有问题、以及其他跟硬碟读出写入有关的硬体设备。 如果真的是硬碟坏轨的问题,您应该会在 /var/log/messages这个档案中,或是在执行 dmesg这个指令後,看到有关磁碟错误的讯息。 如果没有,那么请检查您的排线还有接头连接是否良好。

Q: 6.1. 在哪边找到给 FreeBSD 用的 Office 套件呢?
A: *

FreeBSD Mall 提供了 VistaSource 的 ApplixWare 5 的 FreeBSD 版本。

ApplixWare 是一套商业版本的 Office 套件,他提供了 文件处理、试算表、向量绘图等相关程式。

ApplixWare 同时也是 FreeBSD Mall's BSD Desktop Edition 的一部份。
*

Linux 版本的 StarOffice 可以很正常的在 FreeBSD 下执行,可以透过 FreeBSD Ports collection 来安装 Linux 版本的 StarOffice。而 open-source OpenOffice 很快得 也可以在 FreeBSD 上正常的执行。

Q:6.2. 在哪边找到给 FreeBSD 用的 Motif?
A:Open Group 释出了 Motif 2.1.30 的原始码,可以透过 open-motif package 安装,或是由 ports 自行 编译。相关的资讯,请参考 handbook 中的 ports 章节。

Note: Open Motif 只能在同样也是 open source 的作业系统或计划中使用。

另外,也是有商业版本的 Motif 存在。也许这种版本的 Motif 不是免费的,但是绝对允许用在 closed-source 的环境下。 Apps2go 提供了最便宜的 FreeBSD (包括 i386 跟 alpha)版本的 ELF Motif 2.1.20 套件。

目前提供两种不同环境的版本, ``发展用版本'' 及 ``runtime 版本'' 。这两种套件都包括:

*

OSF/Motif manager, xmbind, panner, wsm.
*

Development kit with uil, mrm, xm, xmcxx, include and Imake files.
*

Static and dynamic ELF libraries (for use with FreeBSD 3.0 and above).
*

Demonstration applets.

因为 Apps2go 也有提供 NetBSD 和 OpenBSD 的版本,所以在订购时请特别指定是要 FreeBSD 版本的 Motif! 他们目前只提供以 FTP 的方式取得这份套件。

更多资讯

Apps2go WWW page

<sales@apps2go.com> 或 <support@apps2go.com>

phone (817) 431 8775 or +1 817 431-8775

也可以联络 Metro Link 取得给 FreeBSD ELF或 a.out 版本的 Motif 2.1 套件。

这份套件包括:

*

OSF/Motif manager, xmbind, panner, wsm.
*

Development kit with uil, mrm, xm, xmcxx, include and Imake files.
*

Static and dynamic libraries (specify ELF for use with FreeBSD 3.0 and later; or a.out for use with FreeBSD 2.2.8 and earlier).
*

Demonstration applets.
*

Preformatted man pages.

由於 Metro Link 也有提供 Linux 的版本, 所以订购时要特别指明是 FreeBSD 版本的 Motif! 可以由光碟或从 FTP 来取得这个套件。

联络 Xi Graphics ,他们提供了一个 FreeBSD a.out 格式的 Motif 2.0 套件。

在这套件中包括了:

*

OSF/Motif manager, xmbind, panner, wsm.
*

Development kit with uil, mrm, xm, xmcxx, include and Imake files.
*

Static and dynamic libraries (for use with FreeBSD 2.2.8 and earlier).
*

Demonstration applets.
*

Preformatted man pages.

在你跟他们订购 Motif 时,请一定注明你要的是 FreeBSD 的版本! 因为 Xi Graphics 也同时提供了 BSDI 跟 Linux 版本的 Motif。目前发行的版本是放在四块磁片中,将来他们会将所有的 东西都放到光碟里,就像他们所发行的 CDE 一样。

Q: 6.3. 在哪边找到给 FreeBSD 用的 CDE?
A:

Xi Graphics 以前有卖 FreeBSD 用的 CDE,不过现在已经停止发售了。

KDE is an open source X11 desktop which is similar to CDE in many respects. You might also like the look and feel of xfce. KDE and xfce are both in the ports system.


Q:6.4. 有没有要钱,但是高效率的 X servers?
A:

有, Xi Graphics 和 Metro Link 都有提供给 FreeBSD(或其他 Intel 平台上)用的 X 视窗加速产品。

Metro Link 高效能 X Server 使用了 FreeBSD 内建的 package 包装方式, 因此设定十分容易,支援目前市面上各大厂牌的显示卡。 目前只提供 binary 格式档案,可以从 FTP 站相当方便地直接下载, 并且 Metro Link 这套产品的价格是非常合理的 $39。

Metro Link 同时提供 FreeBSD 上的 ELF 和 a.out 格式的 Motif (往上面看看)。

更多的资讯

Metro Link WWW page

<sales@metrolink.com> 或 <tech@metrolink.com>

phone (954) 938-0283 or +1 954 938-0283

Xi Graphics 所提供的高效能 X Server 有非常简单的设定方式, 并且支援了目前市面上当红的各大厂牌的显示卡。它只给你 Binary 档案, 是用磁片的方式发行,FreeBSD 跟 Linux 版本都相同。Xi Graphics 同时 也提供了专门给 laptop 用的高效能 X Server。

5.0 版有提供免费的 ``compatibility demo'' 版本

Xi Graphics 也有在卖 FreeBSD 用的 Motif 跟 CDE(往上面看看)。

更多的资讯

Xi Graphics WWW page

<sales@xig.com> 或 <support@xig.com>

phone (800) 946 7433 or +1 303 298-7478.


Q: 6.5. 在 FreeBSD 上有任何的资料库吗?
A:有! 请看 FreeBSD 网站上 商业软体公司 这一部份。

还有请参考 ports 中 Databases 相关的收集。


Q:6.6. 可以在 FreeBSD 上执行 Oracle 吗?
A:可以,下面这个网页会说明如何在 FreeBSD 上执行 Linux 版的 Oracle:

*

http://www.scc.nl/~marcel/howto-oracle.html
*

http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsd

Q: 7.1.我要在哪找到我要的程序呢?
A:请看看 ports 目录 吧。这边有份已经 port 到 FreeBSD 的软体列表。 目前有超过 8,500 个软体已经被port 到 FreeBSD 上,并且每天 都在增加中。所以有空就多看看这份列表,不然你也可以订阅 freebsd-announce 这份 mailing list,会有人将每个星期最新的软体列表贴在 上面。

大部份的 [url=http://freebsd.csie.nctu.edu.tw/ports/index.html ]ports[/url]应该都可以在 2.2,3.0 跟 4.0 的系统上使 用,并且还有部份的 ports 可以在 2.1.x 的系统上运作。每次 当 FreeBSD release 时,都会有一份 ports tree 被放在这一个 release cd 里面的 ports/ 目录里。

我们也支援一种叫 ``package'' 的概念,基本上 就是 gzip 压缩、可用来发行的 binary 档案,但是里面藏了一 些相当有用的资讯,可以给各种自订安装来使用。使用者不必知 道某个 package 里究竟有包括哪些档案,就可`以很方便地重复将 它安装/反安装。

你可以执行 /stand/sysinstall 後, 在 post-configuration 选单下选择 package 这个安装选项;或 是对某个有兴趣的 package 档案执行 pkg_add(1) 把它装起来。Package 档案通常以 .tgz 作为延伸档名,手上有 FreeBSD CDROM 的人可以在 packages/All 这个目录下找到这类档案。 对不同的 FreeBSD 版本,也可以从下列位址由网路上取得:

给 2.2.8-release/2.2.8-stable 用的

ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/
给 3.2-release/3.2-stable 用的

ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/
给 4.X-RELEASE/4-STABLE 用的

ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-current/
给 5.X-CURRENT 用的

ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current

或是离你最近的 mirror 站。

要注意的是,因为新的 port 一直在增加中,所以并不是所有 port 都有相对应的 package。最好定时检查ftp.FreeBSD.org ,看看有哪些 package 可以用。


Q:7.2. 我可以在哪边找到 libc.so.3.0?
A:你可能在一台 2.1.x 的机器上,跑著给 2.2/3.x/4.0 的软件。 请再往上面一个章节看,正确的取得给你机器用的 port/package。


Q:7.3. 为何我得到了这个讯息 ?``Error: can't find libc.so.4.0''?


A:你不小心抓了给 4.X 及 5.X 系统用的 package,并且尝试著 去装在你的 2.X 或 3.X 的系统上面。请下载正确版本的 package。

Q: 7.4. ghostscript 在我的 386/486SX 上有点问题呢!
A:你没有浮点运算器,对吧?你必须在你的 kernel 中加入数学 运算模拟器,你可以跟著下面的步骤做,并在更改过你的 kernel 设定 档後,重新编译过一次。

options GPL_MATH_EMULATE

Note: 当你加入上一行的同时,你必须将 MATH_EMULATE 移除掉。

Q: 7.5. 为什么当我执行 SCO/iBCS2 的程式时,它在 ``socksys'' 这个地方出了问题? (FreeBSD 3.0 以及更早的版本才有此问题。)
A:你必须先修改 /etc/sysconfig (或是 /etc/rc.conf, 请读 rc.conf(5)) 这档案最後一个章节,将下面所讲到的变数设成 YES:

# Set to YES if you want ibcs2 (SCO) emulation
loaded at startup ibcs2=NO

这会在开机时将 ibcs2 这一个 kernel 模组载入。

你还要将你的 /compat/ibcs2/dev 改成下面这样:

lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 X0R@ -> /dev/null
lrwxr-xr-x 1 root wheel 7 Oct 15 22:20 nfsd@ -> socksys
-rw-rw-r-- 1 root wheel 0 Oct 28 12:02 null
lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 socksys@ -> /dev/null
crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx

你只需要将 socksys 转向到 /dev/null (请读 null(4)) 去骗过 open & close 的动作。在 -current 里面的 ibcs2 相关程式码将会处理其余的部份,这种作法比以前的方式 乾净太多了。假如你想要使用 spx 方面的 程式,在你的核心设定档里面 加上SPX_HACK。

Q:7.6. 我要如何在我的机器上设定 INN (Internet News)?
A:
在你使用 package 或者是 port 安装完 inn 之後,Dave Barr's INN Page 是个非常好的开始,你可以在那边找到INN 的 FAQ。

Q: 7.7. 我该使用那个版本的 Microsoft FrontPage?
A:Use the Port, Luke!在 ports tree 中已经有一个包含 FrontPage 的 Apache 版本了。


Q: FreeBSD 支持 Java 吗?
A:有,请看 http://www.FreeBSD.org/java.


Q:7.9. 为什么我无法在 3.X-STABLE 机器上顺利编好这个 port?
A:如果你的 FreeBSD 版本相较 -CURRENT 或 -STABLE 之下是很古 早的话,或许你会需要一个升级 ports 的工具,在 http://www.FreeBSD.org/ports/。如果你以将其更新却仍无用, 那么一定是某人更动之後造成 -CURRENT 才能用,-STABLE 无法用的情况。 由於 ports 内所收集的软体在 -CURRENT 或是 -STABLE 上都要能用, 所以请尽速送出关於此问题的虫报告;请使用 send-pr(1) 这个指 令来送虫报告。


Q: 7.10. 那里可以找得到 ld.so?
A:有些 a.out 格式的应用程式会需要 a.out 格式的函式库, Netscape Navigator 就是一个例子。不过用 ELF 函式库编起来 的 FreeBSD 预设并不会安装旧的 a.out 函式库,所以您可能会得 到类似找不到 /usr/libexec/ld.so 的抱怨讯 息。如果说您的系统有这安装 a.out 函式库的必要,这些函式库 (compat22) 也能够利用 sysinstall(8) 来安装。或者利用 FreeBSD 原始码来安装:

# cd /usr/src/lib/compat/compat22# make install clean

如果你希望每次 make world 时会自动更新 compat22 函式库,那么修改 /etc/make.conf, 加入 COMPAT22=YES。这些相容於古老版本的函式库 已经没什么在更新了,所以一般说来是不需要这样的。

同时也请您看一下 3.1-RELEASE 和 3.2-RELEASE 的勘误表(ERRATA)。


Q: 7.11. 我更新了系统原始码,现在我要怎样升级某个已经安装上 的 ports ?


A:FreeBSD 本身并没有自动升级 ports 的工具,但有一些可以让升级 简化一些的小程式。你也可以自己装上额外的工具来处理。

pkg_version(1) 指令可以自动产生用来达到自动升级到 ports tree 最新版本的 script。

# pkg_version -c > /tmp/myscript

一定要在手动修改一下产生出来的 script。 目前的 pkg_version(1) 在 script 最前面加入 exit(1) 强 迫你去修改它。

你应将执行 script 所产生的输出记录下来,因为里面会有记载某些 尚未升级但已经更新的 ports。不过你不一定要去升级它们。通常是因为 有某个共用的函式库已经改变版本号了,才要去重编一次那些使用到该函 式库的 ports。

如果你的硬碟空间很够,那么可以用 portupgrade 这个工具来做全自动处里。portupgrade 里面也有 一些小程式来简化 package 升级,它在 sysutils/portupgrade。 这个工具是用 Ruby 这个语言写的,所以并不适合加入到 FreeBSD 的原 始码中,不过并不会因此让某些人不用它。

如果你的系统一直都处於开机状态,可利用 periodic(8) 系统, 每个星期产生一张需要升级的清单。只要在 /etc/periodic.conf 加入 weekly_status_pkg_enable="YES" 就可以了。


Q: 7.12. 为什么 /bin/sh这么的小?为什么 FreeBSD 不改用 bash 或者是其他比较强悍的 shell?
A:因为 POSIX 说,该要有这么样的一个 shell 在才行。

比较繁琐的答案:许多人需要写可以跨很多平台的 shell script 。 这也是为何 POSIX 将 shell 以及工具命称都定义的非常详细的缘故。 大部份的 script 都适用於 Bourne shell,又因为有几个重要的 写程式所用到的程式或者函式 ( make(1) , system(3), popen(3), 还有在 Perl 或者 Tcl 里面呼叫系统程式的地方) 都指定用 Bourne shell 。那么因为 Bourne Shell 如此的广泛常用, 那么它的执行效率便很重要,快速是它决定性的要点之一,还要不占太多 记忆体。

目前的 /bin/sh 已是我们呕心沥血之作,它已 经尽量地符合标准规定。为了让它非常小,我们拿掉了一些其他 shell 有的方便功能。这也是为什么 ports 里面还有很多强悍的 shell ,像是 bash, scsh, tcsh 以及 zsh 。 (你可以自己比较一下这些 shell 执行 时所占的记忆体大小,去看看 ps -u 列出来的 ``VSZ'' 和 ``RSS'' 这两个栏位就知道了。)


Q: 7.13. 为什么 Netscape 和 Opera 要花好久的时间才能启动?
A:通常是因为你的 DNS 没有设定好。 Netscape 跟 Opera 在启动的时候 都会去检查一下 DNS。直到 DNS 有回应,或者是断定网路目前是断线之後, 它们才会显示画面出来。


Q:8.1. 我想修改kernel,这会很困难吗?
A:不会!请查阅 使用手册中的核心设定一节。

Note: 我会建议你在你让核心能正常工作後,做一个 kernel.YYMMDD 日期形式的备份,同时也备份 /module这个目录至 /modules.YYMMDD。这样下次如果你很不幸的玩 坏了设定,至少可以不需要使用最原始的 kernel.GENERIC。如你正从一个 GENERIC kernel 里面不支援的控制器里启动时,这就显得特别重要。


Q: 8.2. 我的核心因为 _hw_float遗失而编译失败。 该怎么修正呢?
A:让我猜看看,你把 npx0 (详见 npx(4)) 从你的核心设定档移除了,因为你没有数学运算器, 对吗?错了!:-) 这个 npx0是 必须要有的。就算你没有数学运算器,你还是 必须 引入 npx0 装置。


Q: 8.3. 为什么造出来的 kernel 这么大 (10MB 以上) ?
A:这很有可能是因为,你把 kernel 编成 侦错模式 了。侦错模式之下的 kernel 里面会存著侦错用的许多符号,因此会大幅 增加 kernel 的大小。如果说你的 FreeBSD 是 3.0 以後的版本,这对於 效能来说影响并不大,几乎是没有。而在系统会因某些原因 panic 时, 有个侦错模式的 kernel 在也挺有用的。

不过呢,如果你的磁碟空间很小,或者你就是不想用侦错模式的 kernel 的话,请确认以下事情:

*

kernel 设定档里面没有这一行:

makeoptions DEBUGS=-g

*

执行 config(8) 时没有加上 -g 这个选项。

以上两件事情都会让你编出一个侦错模式的 kernel。但只要避免之, 就可以编出一个正常的 kernel,而你也会注意到,kernel 明显的变小了; 大部份的 kernel 都差不多在 1.5MB 到 2MB 之间。


Q: 8.4. 为何出现了 multi-port serial code 的中断冲突?
A:
当我编译一个 multi-port serial code 的核心时,它告诉我只有 第一个被侦测到,其他的则因中断冲突而跳过了,我该怎么修正它?

这个问题是因为 FreeBSD 使用内建程式码避免因为硬体或软体冲突 导致核心程式过於肥大或无用。要修正这种情形的方法是除了一个 port 外把其他所有的 IRQ 设定都做保留。这里有一个范例:

#
# Multiport high-speed serial line - 16550 UARTS
#
device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr


Q:8.5. 为什么我一个 kernel 都编不起来?甚至 GENERIC 也不行?
A:这有很多种可能的原因:

*

你没有用新的 make buildkernel 与 make installkernel 这两个方法来编,而正好 你的系统原始码的版本和正在执行的系统核心版本不一样 (像是, 在跑 4.0-RELEASE 的系统上尝试著编 4.3-RELEASE)。如果说你要升 级系统的话,请务必去看看 /usr/src/UPDATING 这个档案,特别注意最後面的 ``COMMON ITEMS'' 这个小节。
*

你已经用上 make buildkernel 以及 make installkernel 了,但是在 make buildworld 时失败了。可惜的是, make buildkernel 要成功,需要依赖 make buildworld 後造出来的一些档案。
*

就算是你在编 FreeBSD-STABLE, 还是有可能你抓到了正在修改中,或著因为某些缘故而根本还没改好 的原始码;虽然说 FreeBSD-STABLE 大部份的时候都是可以编的,但只有 RELEASE 才是保证可以编的。碰 到这个问题时,再次更新原始码并且再试试看。也有可能是放原始码的 伺服器出现某些问题,所以更新原始码时也试试从不同伺服器来更新看 看。
Q: 10.1. 系统起始设定在哪?
A:从 2.0.5R 到 2.2.1R,主要的设定档是 /etc/sysconfig。所有的选项都被指定在这个档, 而其他像 /etc/rc (参见 rc(8)) 和 /etc/netstart 只是引用它。

观察 /etc/sysconfig 这个档并修正其值以 适合你的系统。这个档用注解填满以表示何处该放置什么设定。

在 post-2.2.1 以後及 3.0,/etc/sysconfig 亦更名为一个更容易描述的档名叫 rc.conf(5) ,并且语法简化了些。 /etc/netstart 亦更名为 /etc/rc.network 因此所有的档案都可以用 cp /usr/src/etc/rc* /etc 来拷贝。

在 3.1 以及,/etc/rc.conf 被移到 /etc/defaults/rc.conf。 千万不要编辑这个档! 如果 /etc/defaults/rc.conf 内有想要更动的项目, 你应该将那一行的内容拷贝到 /etc/rc.conf, 然後再修改它。

例如 FreeBSD 3.1 及以後的版本内,有一个 DNS 伺服器 named, 而你想要启动它。你所需要作的事就是:

# echo named_enable="YES" >> /etc/rc.conf

想要在 FreeBSD 3.1 及以後的版本中,启动本地端服务的话,将 shell script 置於 /usr/local/etc/rc.d 目录 下。这些 shell script 应该设定成可执行,并且档名以 .sh 结束。 在 FreeBSD 3.0 及更早的版本中,你应该直接编辑 /etc/rc.local 档。

/etc/rc.serial用来初始化序列埠 (像是锁定埠的特性等)。

/etc/rc.i386 是 Intel 专用设定, 像是 iBCS2 模拟或是 PC 系统主控台设定。

Q:10.2. 我该如何简单地加入USER?
A:使用 adduser(8) 指令。如果需要更复杂的使用方式, 请用 pw(8) 这个指令。

要再次移除使用者,使用 rmuser(8) 指令。还有, pw(8) 也可以使用。

Q:10.3. 在我编辑 crontab 档案之後,为什么我老是收到这样的讯息: ``root: not found''?
A:通常都是因为编辑了系统的 crontab (/etc/crontab) 然後就用 crontab(1) 去安装它:

# crontab /etc/crontab

这样作是不对的。系统的 crontab 和 crontab(1) 所更新的使用者的 crontab 格式并不一样 ( crontab(5) 说明文件针对差异处有详细的说明)。

如果你已经用这种方法,额外多出的 crontab 只就是 /etc/crontab 的拷贝,只是格式是错误的。 可用以下的命令删除:

# crontab -r

下次你编辑 /etc/crontab 档案的时候, 你不用作任何动作去通知 cron(8) ,它自动会去侦测是否有更动。

如果你想要每天、每周、或是每月固定执行某些动作一次,也许加个 shell script 在 /usr/local/etc/periodic 目录下会更好,系统的 cron 会固定执行 periodic(8) 命令, 它可将你的程式和其它的系统周期性工作一起执行。

这个错误的真正原因,是因为系统的 crontab 有一个额外的栏位, 说明该命令要以什么使用者身份执行。在 FreeBSD 的预设系统 crontab 中,所有的项目都是 root。 当这个 crontab 被当作是 root 的使用者 crontab (它和系统的 crontab 是 不 一样的), cron(8) 会以为 root 字串是欲执行的命令的第一个字,但是实际上 并没有这样的命令存在。

Q: 10.4. 为什么我想要用 su 成为 root 时,会得到 ``you are not in the correct group to su root'' 的错误讯息?
A:这是一个安全特性。想要利用 su 成为 root (或其它有 superuser 权限的帐号),你一定要在 wheel 群组内。如果没有这个特性的话, 任何人只要在系统里有帐号,并且恰巧知道 root 的密码,就可以取得 superuser 等级的权限以存取系统。有了这个特性, 这样的情况就不会发生;如果使用者不在 wheel 群组内的话, su(1) 会让他们连试著键入密码的机会都没有。

要让某人可以利用 su 成为 root 的话, 只要把他们放入 wheel 群组内即可。

WWW.pC51.Net


相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

300x250广告位招租