日期:2014-05-16 浏览次数:20773 次
http://club.topsage.com/thread-331980-1-1.html
?
1. 简介
本文档将突出介绍 FreeBSD 与 Linux 的差别,以使得那些 Linux 高级用户能自己快速熟悉 FreeBSD 的基础内容。这只是份技术上的快速入门,并非是试图描绘这两种操作系统之间的"哲学"上的差异。
2. Shell程序:没有Bash吗?
那些从 Linux? 转过来的用户经常会惊讶于 Bash 不是 FreeBSD 的默认 Shell。 事实上,Bash 甚至没有包括在 FreeBSD 的默认安装中。代替的是,FreeBSD 使用 tcsh(1)
作为自己的默认 Shell,尽管如此,Bash 和其他你喜爱的 Shell 程序在 FreeBSD 的 Packages 和 Ports 套件 里都可以找到。
如果你安装了其他的 Shell 你可以使用 chsh(1)
来
设置一个用户的默认 Shell。通常情况下, 强烈建议不要去更改 root 用户的默认 Shell。原因是这些 Shell
没有包括在基本系统中,正常情况下它们会被安装到 /usr/local/bin 和 /usr/bin 目录下。万一某天
/usr/local/bin 和 /usr/bin 的文件系统不能被挂载, 这样情况下 root 将不能进入自己默认的 Shell,从而
root 将不能够登录进去。鉴于这个原因,第二个系统管理员帐户 toor 创建时使用的是非默认的 Shell。
3. Packages和Ports:在 FreeBSD 中添加软件
除了经典的 UNIX?安装软件的方法(下载源码包,解压,编辑源码,编译)外,FreeBSD 还提供了另外两种方法来安装应用程序:packages 和 ports。 你可以在 这里 到一份完整可用的 ports 和 packages 的软件清单。
3.1 Packages
Packages 是预编译好的应用程序,在 FreeBSD 中等价于基于 Debian/Ubuntu 的系统中的 .deb 软件包以及基于
Red Hat/Fedora 的系统中的 .rpm 软件包。 Packages使用 pkg_add(1) 来进行安装。
例如,下面的命令将用来安装 Apache 2.2:
# pkg_add /tmp/apache-2.2.6_2.tbz
使用 -r 操作将告诉 pkg_add(1) 来自动获取并安装一个软件包,以及解决所有的依赖关系:
注
意: 如果你正运行着 release 版本的 FreeBSD (6.2,6.3,7.0等, 通常从 CD-ROM 被安装的)pkg_add -r
会为其下载专门为这些特定版本构建好的软件包。 这些软件包 可能 不是当前最新的程序。 你可以使用 PACKAGESITE
变量来覆盖默认的动作。 例如,把 PACHAGESITE 设置成 ftp://ftp.freebsd.org/pub/FreeBS ... es-6-stable/Latest/
来下载 6.X 系列最新的包。
你可以阅读这篇文章 选择最适合自己的 FreeBSD 版本号 来获取更多关于 FreeBSD 版本号的东西。
3.2 Ports
FreeBSD 的第二种安装应用程序的方法就是使用 Ports 了。 Ports 系统是 FreeBSD 上的一个利用 Makefile
和一些补丁文件来特定从源码定制安装各种软件程序的框架。 当安装一个 port 时系统会获取程序源码,
应用任何所需要的补丁,编译源码,并安装应用程序(并针对依赖关系以同样的方式安装解决)。
Ports 套件,常被称作 ports 树,可以在 /usr/ports 下找到。 假设Ports套件已经在安装 FreeBSD
时安装过了。 如果 Ports 套件还没有被安装可以通过 sysinstall(8) 来进行安装,或者使用 csup(1) 或
portsnap(8) 来从 FreeBSD 的服务器上面拉下来。在手册的 4.5.1 小节 可以找到安装 Ports 套件的详细介绍。
安装一个 port 就像进入 port 的目录并开始构建过程一样简单(通常情况下), 下面是从 Ports 套件安装 Apache 2.2 的例子:
# cd /usr/ports/www/apache22
# make install clean
使用 ports 安装软件的最大好处就是能够自定义安装选项。 例如,从 ports 安装 Apache 2.2 时你可以通过设置 WITH_LDAP make(1) 变量来启用 mod_ldap:
# cd /usr/ports/www/apache22
# make WITH_LDAP="YES" install clean
3.3 Ports还是packages,我应该使用哪个?
Packages 就是预编译好的 ports, 所以从源码(ports)安装与从二进制 packages 安装这两者间确实有很大关联。每种方法各有自己的优点:
Packages(二进制)
Ports(源码)
如果你没有一些特别的需求, packages 可能刚好最适合你的情况。如果你需要进一步定制, ports 是最适合的方法了。(请记得,
如果你需要定制而自己又更倾向于使用 packages,你可以使用 make package 从 ports 构建一个定制的
package,然后复制到其他的服务器。)
4. 系统启动:运行级别在哪里?
Linux 使用 Sysv init 初始化系统,而 FreeBSD 使用的是传统的 BSD 风格的 init(8)。在 BSD 风格的 init(8)
中没有运行级别和 /etc/inittab, 代替控制启动的是 rc(8)
实用程序。 /etc/rc 脚本读取 /etc/defaults/rc.conf 和 /etc/rc.conf 文件来决定哪个服务将被启动。
特殊服务