上一页
键盘和显示控制
OpenBSD FAQ 第八章:常见问题
下一页
从Linux迁移过来

8.1-我忘记了root密码,该怎么办?

简单几步就可以恢复:
1.启动进入单用户模式,在i386体系下,在boot提示符下输入boot -s.
2.mount drivers:# fsck -p / && mount -uw /
3.如果/usr和/不属于同一分区(不应该这样),你就要mount上它:# fsck -p /usr && mount /usr
4.运行passwd.
5.启动进入多用户模式。。。记住你的密码。

8.2-不能启动X,得到很多错误信息。

如果X完全设置好了且你使用的XF86Config没问题,那么你的问题很可能在machdep.allowaperture上,你需要确定如下项:
option APERTURE
在你的内核配置里面[GENERIC内核里有关有]。
接下来,你需要编辑文件/etc/sysctl.conf,设置machdep.allowaperture=2.以此允许X访问aperture driver.如果你在安装时回答了运行X,那么此项就已设定。OpenBSD requires for all X servers that the aperture driver be set, because it controls access to the I/O ports on video boards.
i386上的X问题,还可以参考XFree86是在线文档:http://www.xfree86.org/support.html.

8.3- 什么是CVS?我怎么使用它?

CVS是OpenBSD Project用来控制对源代码进行修改的工具。CVS是Cocurrent Version System的简称。你可以在http://www.cvshome.org/上了解到CVS的更多信息。CVS可以被用户用来跟踪源代码和ports树的修改。CVS使得从OpenBSD Project的任何一个CVS镜像站下载源代码非常的容易。

8.3.1-如何初始化设置你的CVS环境?

你可以从OpenBSD的某个AnonCVS服务器上下载源代码。这些服务器列于http://www.openbsd.org/anoncvs.html.选择好了服务器后你还要选择你要下载的模块。主要有三大模块用于校核CVS树。它们是:
*src-src模块含有OpenBSD的所有源代码,它包括用户岛(userland)和内核源码。
*ports-包含OpenBSD的完整ports树。想了解OpenBSD Ports tree的更多信息,请看OpenBSD FAQ8,Ports.
*XF4-包含编译XFree4的源代码。
现在你需要决定下载哪个模块,在你下载之前还有一步不可少。你必须决定用哪种方法。CVS默认使用ssh下载文件,但是一些AnonCVS服务器允许用户使用rsh.对于在防火墙后面的用户来说,同样有pserver选项,并且一些AnonCVS服务器将ssh运行在2022端口。你可以查看http://www.openbsd.org/anoncvs.html来知道那些服务器支持此协议。接下来我将告诉你如何做个简单你源代码校核(source checkout).在这里,我将使用位于美国的一个AnonCVS服务器,但是要记住,如果你不在美国,你有关使用一个你附近的服务器。有遍布全球的很多的AnonCVS服务器,所以选择一个离你最近的。我还将使用ssh来下载文件。
$ export CVSROOT=anoncvs@anoncvs.usa.openbsd.org:/cvs
$ cvs get src
Warning: Remote host denied X11 forwarding, perhaps xauth program could not be run on the server side.
cvs checkout: in directory src:
cvs checkout: cannot open CVS/Entries for reading: No such file or directory
cvs server: Updating src
U src/Makefile
[snip]


注意这里我还设置了CVSROOT环境变量。此变量告诉cvs使用哪个AnonCVS服务器。这也可以通过-d选项制定。例如:
$ cvs -d anoncvs@anoncvs.usa.openbsd.org:/cvs get src
这些命令应该在/usr下运行,因为它将建立/usr/src,/usr/ports和/usr/www目录,这当然取决于你要校核的模块。你可以将这些模块下载到任何地方,但是如果你要使用它们(比如make build),你应该将它们放到上面的目录里。

8.3.2保持你的CVS树为最新

一旦你已初始化设置好了CVS Tree,保持它最新就非常容易了。你可以选择任何时候更新你的CVS Tree,一些AnonCVS服务器比其他一些升级得快,所以再次察看http://www.openbsd.org/anoncvs.html.在此例中,我将从from anoncvs.usa.openbsd.org.升级我的www模块。主意我用的-q参数,这使得来自服务器的输出没有那么详细。
$ echo $CVSROOT anoncvs@anoncvs.usa.openbsd.org:/cvs
$ cvs -q up -Pd www
Warning: Remote host denied X11 forwarding, perhaps xauth program could not be run on the server side.
U www/want.html
M www/faq/faq8.html
ericj@oshibana:~>


8.3.2-其他的cvs参数
对有些人来说,带宽和时间是升级类似这些的严重问题。所以CVS有-z[1-9]参数,它使用gzip压缩数据。要使用它,要用z[压缩级别],比如-z3为压缩级别3.
8.4-什么是ports树?

Ports树是download,patch,configure,install用户(userland)程序的一系列Makefile,这样你就可以在OpenBSD环境下运行它们而不需要手工运行每一个命令。你可以从OpenBSD FTP站点的/pub/OpenBSD/3.5/ports.tar.gz获得ports树。最新的ports树可以通过"ports" cvs tree获得,或者下载FTP 站点的/pub/OpenBSD/snapshots/ports.tar.gz。但是对你来说,大多数情况下,package可能为最佳的选择。package是从ports树中建立的,已经编译好了准备使用。察看FAQ8,Packages获得更多信息。

同步你的系统和ports的注意点:
OpenBSD在任何时候都有三个“活动的”版本:
*Release:在CD上的。
*Stable:Release,加上安全及可靠性补丁。
*Current:OpenBSD的开发版。

不要搞混了Ports和OpenBSD的版本!

如果你的系统是Release,Ports树就应该使用Release版。不要在一个-Release或者-Stable版的系统上使用-Current版的Ports树。这样不仅可能不能工作,当你问人们“nothing seems to work”以求帮助时,还会激怒人们。注意也有一个-Stable分支的Ports树,它也是Release Ports经过了重要修正的。

还有,这也意味着一个崭新的port可能不能运行于你的“老”系统----尽管你的系统是不久前的 -Current.

如果还没安装好Ports树,你可以在OpenBSD的FTP站点上下载到它,当然,也可以从CD-ROM得到。该文件是ports.tar.gz,你应该将其解压至/usr目录下,它会建立/sur/ports和其下的任何目录,例如:
$ ftp ftp://ftp.openbsd.org/pub/OpenBSD/3.5/ports.tar.gz
$ sudo cp ports.tar.gz /usr
$ cd /usr; sudo tar xzf ports.tar.gz

每天都有生成新的Snapshot Ports树,可以在OpenBSD FTP站点的/pub/OpenBSD/snapshots/ports.tar.gz下载。如果你安装的是Snapshot 版的OpenBSD,你就应该使用一个匹配的snapshot ports。再次强调,你应该保持你的 OpenBSD 系统和ports 树同步!

有哪些Ports可用?我怎么查找它们?

使用Ports树搜索关键字。为此,要使用make search key="searchkey".下面是查找"samba"的例子:

$ make search key="samba"
[...snip...]
Port: amanda-client-2.4.2.2
Path: misc/amanda,-client
Info: network-capable tape backup (client only)
Maint: Tom Schutter
Index: misc
L-deps:
B-deps: :devel/gmake gnuplot-*:math/gnuplot gtar-*:archivers/gtar samba-*:net/samba/stable
R-deps:
Archs: any
Port: samba-2.2.8a
Path: net/samba/stable
Info: SMB and CIFS client and server for UNIX
Maint: The OpenBSD ports mailing-list
Index: net
L-deps: popt::devel/popt
B-deps: :devel/autoconf/2.13 :devel/metaauto
R-deps:
Archs: any
[...snip...]

安装Ports

Ports的安装被设置成简单的make和make install了。下面就是怎么安装X11 程序xfig 的例子。你会注意到依赖包被自动发现并完成下载安装。
首先你需要cd到你安装的程序的目录。如果你查找某程序,你也可以更新你的locate database或者使用上面提到的search功能。一旦你进入了安装程序所在的目录,你只要输入make install,如:
$ sudo make install
===> Checking files for xfig-3.2.4
>> xfig.3.2.4.full.tar.gz doesn't seem to exist on this system.
>> Attempting to fetch /usr/ports/distfiles/xfig.3.2.4.full.tar.gz from http://w
ww.xfig.org/xfigdist/.
100% |**************************************************| 5042 KB 00:31
>> Checksum OK for xfig.3.2.4.full.tar.gz. (sha1)
===> xfig-3.2.4 depends on: jpeg.62 - jpeg.62 missing...
===> Verifying install for jpeg.62 in graphics/jpeg
===> Checking files for jpeg-6b
>> jpegsrc.v6b.tar.gz doesn't seem to exist on this system.
>> Attempting to fetch /usr/ports/distfiles/jpegsrc.v6b.tar.gz from ftp://ftp.uu
.net/graphics/jpeg/.
'EPSV': command not understood.
100% |**************************************************| 598 KB 00:06
>> Checksum OK for jpegsrc.v6b.tar.gz. (sha1)
===> Extracting for jpeg-6b
===> Patching for jpeg-6b
===> Configuring for jpeg-6b
checking for gcc... cc
checking whether the C compiler (cc -O2 ) works... yes
checking whether the C compiler (cc -O2 ) is a cross-compiler... no
checking whether we are using GNU C... yes
[...snip...]

$ pwd
/usr/ports/net/mtr
$ make show=FLAVORS
no_x11
$ env FLAVOR="no_x11" make
===> mtr-0.49-no_x11 depends on: gmake-3.80 - not found
===> Verifying install for gmake-3.80 in devel/gmake
===> Checking files for gmake-3.80
>> make-3.80.tar.gz doesn't seem to exist on this system.
>> Attempting to fetch /usr/ports/distfiles/make-3.80.tar.gz from ftp://ftp.gnu.
org/gnu/make/.
Unknown command.
100% |**************************************************| 1183 KB 00:07
>> Checksum OK for make-3.80.tar.gz. (sha1)
[...snip...]


使用Flavors:
ports树中的许多应用程序支持不同的安装选项,叫做Flavors.假如某port有多个flavors,在编译该port前,你可以通过简单的设置环境变量来使用这些选项。假如需要多个选项,FLAVOR可以设置成空格隔开的一些想要的flavors。目前,许多ports有支持数据库、支持没有X 的系统
或者附加的网络属性,比如SSL和IPv6的选项。
$ sudo env FLAVOR="no_x11" make install
===> Faking installation for mtr-0.49-no_x11
[...snip...]
===> Building package for mtr-0.49-no_x11
Creating package /usr/ports/packages/i386/All/mtr-0.49-no_x11.tgz
Using SrcDir value of /usr/ports/net/mtr/w-mtr-0.49-no_x11/fake-i386-no_x11/usr/
local
Creating gzip'd tar ball in '/usr/ports/packages/i386/All/mtr-0.49-no_x11.tgz'
===> Installing mtr-0.49-no_x11 from /usr/ports/packages/i386/All/mtr-0.49-no_a
x11.tgz


列出已安装的ports/packages

你可以使用pkg_info得到已安装的ports和packages的列表:
$ /usr/sbin/pkg_info
zsh-4.1.1 The Z shell.
screen-3.9.15 A multi-screen window manager.
emacs-21.3 GNU editing macros.
tcsh-6.12.00 An extended C-shell with many useful features.
bash-2.05b The GNU Borne Again Shell.
zip-2.3 Create/update ZIP files compatible with pkzip.
ircII-20030314 An enhanced version of ircII, the Internet Relay Chat client
ispell-3.2.06 An interactive spelling checker.
tin-1.6.1 TIN newsreader (termcap based)
procmail-3.22 A local mail delivery agent.
strobe-1.06 Fast scatter/gather TCP port scanner
lsof-4.68 Lists information about open files.
ntp-4.1.74 Network Time Protocol Implementation.
ncftp-3.1.5p0 ftp replacement with advanced user interface
nmh-1.0.4p1 The New MH mail handling program
bzip2-1.0.2 A block-sorting file compressor


其他信息


更多信息见ports(7)的man页和FAQ ports页。
8.5-什么是Packages?

Package是一些常用程序的预编译好的二进制包。在OpenBSD系统上等待使用。再者,象Ports一样,package非常的维护和升级非常的容易。Package总是不断的在增加,所以有必要确定每个附加package的版本。

下面是用来管理package的一些工具:
*pkg_add---安装软件包的工具>
*pkg_create---制作软件包的工具>
*pkg_delete----删除已安装的软件包的工具>
*pkg_info----显示软件包信息的工具>

在哪里可以找到packages?


如果你购买了OpenBSD CD 套件,那么packages 就位于这其中一张CD上,这取决于你的体系。如果你没有OpenBSD CD,你也可以从任何一个FTP镜像下载到。你可以在http://www.openbsd.org/ftp.html上得到FTP镜像的列表。package位于/pub/OpenBSD/3.5/packages下。

安装Package:

安装package,要用到pkg_add工具。pkg_add是一个使用起来非常简单的工具,在下例中,将用pkg_add 来安装一个package。第一个例子使用pkg_add来安装一个位于本地磁盘上的package,第二个将通过FTP来安装。两个例子都是安装screen-3.9.15.

通过本地磁盘安装:
$ sudo pkg_add -v screen-3.9.15.tgz
Requested space: 749864 bytes, free space: 2239117312 bytes in /var/tmp/instmp.cpsHA27596
Running install with PRE-INSTALL for `screen-3.9.15'
extract: Package name is screen-3.9.15
extract: CWD to /usr/local
extract: /usr/local/bin/screen-3.9.15
extract: execute 'ln -sf screen-3.9.15 /usr/local/bin/screen'
extract: /usr/local/man/man1/screen.1
extract: /usr/local/info/screen.info
extract: execute '[ -f /usr/local/info/dir ] || sed -ne '1,/Menu:/p' /usr/share/info/di
/usr/local/info/dir'
extract: execute 'install-info /usr/local/info/screen.info /usr/local/info/dir'
extract: /usr/local/lib/screen/screencap
extract: /usr/local/lib/screen/screenrc
extract: CWD to .
Running mtree for `screen-3.9.15'
mtree -q -U -f +MTREE_DIRS -d -e -p /usr/local
Running install with POST-INSTALL for `screen-3.9.15'
+---------------
| The file /etc/screenrc has been created on your system.
| You may want to verify/edit its contents

| | The file /usr/local/lib/screen/screencap contains a
| termcap like description of the screen virtual terminal.
| You may use it to update your terminal database.
| See termcap(5).
+---------------
Attempting to record package into `/var/db/pkg/screen
Package `screen-3.9.15' registered in `/var/db/pkg/screen-3.9.15'

此例中,-v用来显示详细的输出信息。此选项并非必要的。但是对于调试很有帮助,也用于深入的了解pkg_add实际上做了些什么。但是要注意,会显示一些关于/etc/screenrc的信息,这样的信息不管你是否使用-v都会显示。

通过FTP安装:
$ sudo pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/3.5/packages/i386/screen-3.9.15.tgz
>>> ftp -o - ftp://ftp.openbsd.org/pub/OpenBSD/3.5/packages/i386/screen-3.9.15.tgz
+---------------
| The file /etc/screenrc has been created on your system.
| You may want to verify/edit its contents

| | The file /usr/local/lib/screen/screencap contains a
| termcap like description of the screen virtual terminal.
| You may use it to update your terminal database.
| See termcap(5).
+---------------

此例你可以看到,我使用了i386package。你需要将将上面的i386换成你的体系。注意:并非所有的体系都有这个同样的package.一些ports在某些体系下无法使用。此例没有使用-v,所以只显示了必要的一些信息。

查看和删除已安装的packages.

pkg_info用来查看你系统上的已安装package的列表。在你删除某package前,也用它来得到package的正确名字。查看系统上已安装的packages,只需简单
$ pkg_info
mpg123-0.59rp1 mpeg audio 1/2 layer 1, 2 and 3 player
nmap-3.00 port scanning large networks
ircII-20030314 enhanced version of ircII (internet relay chat)
screen-3.9.15 multi-screen window manager
unzip-5.50r2 extract, list & test files in a ZIP archive
ntp-4.1.74 Network Time Protocol implementation
icb-5.0.9p1 Internet CB - mostly-defunct chat client


删除已安装的package.使用pkg_info中显示的正确的package名字,用pkg_delete将其删除。下面的例子将删除screen package。注意,有时有额外的说明告诉你pkg_delete没有删除,而需要你自己去删除的东西。你也可以使用-v来得到详细的输出:
$ sudo pkg_delete screen-3.9.15
+---------------
| To completely deinstall the screen-3.9.15 package you need to perform
| this step as root:

| | rm -f /etc/screenrc

| | Do not do this if you plan on re-installing screen-3.9.15
| at some future time.
+----------



8.6-我该使用Ports还是Packages呢?

一般来说,强烈建议你使用经过从Ports编译而得到的Packages.OpenBSD Ports Team是把packages而非ports本身作为他们porting work的最终目的。

从源代码编译一个复杂程序并非一件小事。不仅程序本身得到编译,而且用来build的工具也必须built.不幸的是,OpenBSD、那些工具还有应用程序它们都是在不断的发展的。所以,要让所以这些工作良好常常是件难事。一旦一切完好,第二天它们中的某个可能就已出问题了。每6个月,就有一个新的Release发布,虽然每个port都会在每个平台上进行测试,但是在此开发过程中,某些port可能无法使用。

但是对大多数人来说,使用package是最简单的,并且我们建议使用此法来安装OpenBSD的应用程序。


上一页
键盘和显示控制
目录
下一页
从Linux迁移过来