[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一页 ]
本章讲述了基本的基于命令行界面的系统配置方法。在学习本章前,你需要先阅读 Debian 系统安装提示, 第 3 章.
如是你很关心安全方面的信息,你应该阅读 Securing Debian
Manual
,它在 harden-doc
软件包中。
Debian 使用 System V 的 init 脚本系统。参阅 init 程序, 第 2.4.1 节的介绍。
最简单的控制 init 脚本的方法是改变 /etc/default
目录下,与 init
脚本同名的文件里的环境变量设置。 [39] 例如,/etc/default/hotplug
可以控制
/etc/init.d/hotplug
的行为。文件 /etc/default/rcS
可以用来定制 motd
、sulogin
等为默认启动。
如果你不能通过设置这些变量来得到你所需要的行为,你可以去修改 init 脚本:它们都是配置文件。
可通过 /etc/syslog.conf
配置系统日志记录方式。如果想为日志文件上色可安装 colorize
软件包。参阅 syslogd(8)
和 syslog.conf(5)
。
有一部分硬件优化的配置工作 Debian 留给了系统管理员。
hdparm
硬盘存取优化。效果显著。
危险。务必先阅读 hdparm(8)
。
hdparm -tT /dev/hda 测试硬盘存取速度。
hdparm -q -c3 -d1 -u1 -m16 /dev/hda 加速新型 IDE 系统。(有一定风险。)
setcd
压缩磁盘存取优化。
setcd -x 2 减速至 2x speed。
参阅 setcd(1)
。
setserial
串行接口管理工具集。
scsitools
SCSI 硬件管理工具集。
memtest86
内存硬件管理工具集。
hwtools
低级硬件管理工具集。
irqtune
:修改设备的 IRQ
优先级,使那些需要高优先级和快速服务的硬件(例如,串行接口、调制解调器)获得它所要的资源。对串口/调制解调器加速后获得原来
3 倍的吞吐量。
scanport
:扫描 I/O 空间的 0x100 至 0x3ff 地址段,查找已安装的 ISA
设备。
inb:一个小巧的黑客工具,用来阅读 I/O 端口信息并将其值转换成十六进制和二进制。
schedutils
Linux 日程安排工具包。
包括 taskset
、irqset
、lsrt
和
rt
。
再加上 nice
和
renice
(不包括在工具包内),就可对进程的日程安排进行全面的管理。
使用 noatime 选项挂载文件系统可有效提高文件的读取速度。参阅
fstab(5)
和 mount(8)
。
通过 proc 文件系统,Linux 内核可直接调节某些硬件参数。参阅通过 proc 文件系统调整内核, 第 7.3 节。
Debian 中有许多专门的硬件配置工具包。其中有不少是针对笔记本电脑的。这儿有一些有趣的软件包:
tpconfig
- 一个配置触摸屏设备的程序
apmd
- 高级电源管理(APM)工具
acpi
- 显示 ACPI 设备信息
acpid
- ACPI 使用工具
lphdisk
- 识别 Phoenix NoteBIOS 下的隐藏分区。
sleepd
- 笔记本电脑处于非工作状态时进入休眠
noflushd
- 让空闲硬盘进入减速状态
big-cursor
- X 下的巨型鼠标指针
acme
- 激活笔记本电脑上的“多媒体按钮”
tpctl
- IBM ThinkPad 硬件配置工具
mwavem
- Mwave/ACP modem 支持
toshset
- 访问大部分 Toshiba 笔记本电脑的硬件接口
toshutils
- Toshiba 笔记本电脑工具集
sjog
- 激活 Sony Vaio 笔记本电脑上“Jog Dial”功能的程序
spicctrl
- Sony Vaio 控制器程序可增亮 LCD 背光
ACPI 是一种比 APM 更新的电源管理系统。
某些软件包需要专门的内核模块。它们已经包含在许多最新的内核源码中。如果遇此问题,则需要手动打上最新的内核补丁。
PAM(Pluggable Authentication Modules 可嵌入认证模块)允许你控制用户是如何登录的。
/etc/pam.d/* # PAM 管理文件 /etc/pam.d/login # PAM 登录管理文件 /etc/security/* # PAM 模块参数 /etc/securetty # 管理通过控制台进行的 root 登录(login) /etc/login.defs # 管理登录行为(login)
如果想在控制台终端不用密码直接登录系统,可按下面的方法修改
/etc/pam.d/login
文件的内容,风险自负。
#auth required pam_unix.so nullok auth required pam_permit.so
该方法亦可用于 xdm
、gdm
,实现无密码 X 控制台。
相反,如果你希望强化密码政策,可安装 cracklib2
并按下面的方法修改/etc/pam.d/passwd
:
password required pam_cracklib.so retry=3 minlen=6 difok=3
使用一次性登录密码激活帐户也很有用。要实现该功能,在 passwd 命令后加上
-e 参数,参阅 passwd(1)
。
要设置系统最大进程数,可在 Bash shell 中设定 ulimit -u 1000 或设置
PAM 的 /etc/security/limits.conf
文件。其它参数如
core 等的设置方法与之类似。PATH
的初始值可在
/etc/login.defs
中先于 shell 启动脚本设置。
PAM 的文档位于 libpam-doc
软件包内。其中 The Linux-PAM System
Administrator's Guide 一文涵盖了 PAM 配置、可用模块等内容,文档中还包括了
The Linux-PAM Application Developers' Guide 和 The Linux-PAM
Module Writers' Guide。
su
命令不支持 wheel group”
这是 Richard M. Stallman 的一句名言,位于旧版 info su
页面末尾。别担心:在 Debian 中,当前版本的 su
使用
PAM,因此你可以用 /etc/pam.d/su
下的 pam_wheel.so
来限制任何用户组使用 su
的能力。下面的操作将在 Debian 系统中赋予
adm 用户等同于 BSD wheel
用户组的权限,而且该组成员不需要密码就能使用 su
命令。
# anti-RMS configuration in /etc/pam.d/su auth required pam_wheel.so group=adm # Wheel members to be able to su without a password auth sufficient pam_wheel.so trust group=adm
一些有趣的用户组:
如果 pam_wheel.so
不带任何 group=
参数,root group 就是 su
默认的 wheel group。
adm group 可以阅读日志文件。
cdrom group 可在本地赋予一组用户访问 CD-ROM 驱动器的权限。
floppy group 可在本地赋予一组用户访问软盘驱动器的权限。
audio group 可在本地赋予一组用户访问声音设备的权限。
src group 拥有源代码以及 /usr/src
目录下的文件。它可以在本地赋予某个用户管理系统源代码的权限。
对于管理桌面或低级别的系统管理员,可设置他们为 staff
成员,该类成员可以在 /usr/local
下工作并且可以在
/home
下创建目录。
完整列表参阅 Securing Debian
Manual
的“FAQ”章节,亦见于 Woody 中的 harden-doc
软件包。新的 base-passwd
(>3.4.6)软件包亦包含了权威列表:/usr/share/doc/base-passwd/users-and-groups.html
。
sudo
使用 sudo
最主要的目的是保护自己少做蠢事,我认为使用系统时使用
sudo
比总是使用 root 帐号更好。
安装 sudo
然后编辑
中有关选项激活它。还可在
sudoers
/usr/share/doc/sudo/OPTIONS
中查看 sudo
的用户组特性。
样例中的配置,设定“staff”用户组成员可通过 sudo
执行任何 root
权限的命令而“src”用户组成员只可执行规定的一部分 root 权限的命令。
使用 sudo
的好处在于只需一个普通用户密码登录,并且所有的活动都受到监控。用它为低级别的系统管理员赋权是个好主意。例如:
$ sudo chown -R myself:mygrp .
当然,如果你知道 root 密码(绝大部分在家安装系统的用户都会知道),就可以在普通用户下执行任何 root 命令:
$ su -c "shutdown -h now" Password:
(我想我该严格限制 admin 帐号的 sudo
特权,但对于家中的服务器,就不用考虑那么多了。)
想了解其它允许普通用户执行 root 权限命令的程序,可以看看 super
软件包。
对于 Internet 超级服务器,inetd
会在系统启动时通过
/etc/rc2.d/S20inetd
(for RUNLEVEL=2)加载,S20inetd 是一个指向
/etc/init.d/inetd
的符号链接。本质上,inetd
允许一个运行中的守护进程(daemon)调用其它多个守护进程,以减轻系统的负载。
当某个服务请求到达,系统会查询 /etc/protocols
和
/etc/services
中的数据库,确定该请求所指定的相关协议和服务,接着
inetd
会在 /etc/inetd.conf
数据库中查找普通 Internet
服务或 /etc/rpc.conf
中查找基于 Sun-RPC 的服务。
为了系统安全,请在 /etc/inetd.conf
中关闭所有不用的服务。涉及到
NFS 和其它基于 RPC 的程序时需要激活 Sun-RPC 服务。
有时,inetd
并不直接打开请求的服务,而是在
/etc/inetd.conf
中将该服务名作为的参数,打开 tcpd
TCP/IP 守护进程包装程序。这时,tcpd
首先登记请求并使用
/etc/hosts.deny
和 /etc/hosts.allow
进行附加的检查,然后再运行相应的服务程序。
如果新版的 Debian 系统进行远程访问时出现问题,可以在
/etc/hosts.deny
中注释掉“ALL: PARANOID”,如果有该行的话。
更多信息参阅
inetd(8)
、inetd.conf(5)
、protocols(5)
、services(5)
、tcpd(8)
、hosts_access(5)
和 hosts_options(5)
。
有关 Sun-RPC 的更多信息参阅 rpcinfo(8)
、portmap(8)
和
/usr/share/doc/portmap/portmapper.txt.gz
。
使用轻形目录访问控制协议(LDAP) 参阅:
OpenLDAP 管理员指南在软将包 openldap-guide
中
LDP: LDAP Linux
HOWTO
ATAPI/IDE
接口的刻录机是时下非常流行的配件,它是极好的系统备份工具,特别是对于那些单个文件容量一般
< 640 MB 的家庭用户。更多权威的信息,请参阅 LDP CD-Writing-HOWTO
。
首先需要说明的是,在向刻录机发送数据过程中,任何数据中断都会对光盘造成无法挽回的损坏。所以应选购缓冲区尽可能大的刻录机。如果资金充裕,就别再考虑 ATAPI/IDE 型的,买台 SCSI 型的没错。如果可以连接 IDE 接口,就使用 PCI 总线(例如,在主板上)而别用 ISA 总线(SB16 声卡使用的就是它)。
当刻录机连接到 IDE,驱动它的通常是 IDE-SCSI 驱动而非旧式的 IDE CD 驱动,所以,需要激活 SCSI 通用驱动。有两种方法激活它,假设系统使用的是较新版本的内核(如 2001 年三月的版本)。
对于 Linux 2.6 的内核,你应该使用 IDE 驱动并直接使用
/dev/hdx
这些设备名称来访问。这种方式你可以使用 DMA。
lilo
如果使用的是 Debian 原装内核,将下面的内容添加到
/etc/lilo.conf
,如果有多个选项,列出时要将它们用空格分隔开:
append="hdx=ide-scsi ignore=hdx"
在此,刻录机使用 ide-scsi 驱动访问,hdx 就代表它,其中 x 代表下列任何一种设备:
hda 接第一个 IDE 接口作主盘 hdb 接第一个 IDE 接口作从盘 hdc 接第二个 IDE 接口作主盘 hdd 接第二个 IDE 接口作从盘 hde ... hdh 接扩展 IDE 接口或 ATA66/100 IDE 接口
完成上述配置工作后以 root 身份运行下列命令激活设备
# lilo # shutdown -h now
Debian 用 make-kpkg
创建新内核,使用 make-kpkg 时加上新的
--append_to_version 参数可创建多重内核镜像。参阅 Debian 下的 Linux 内核, 第 7 章。
make menuconfig 后执行下列步骤:
bzImage
包含 IDE CD driver(不是必须的,但这样更简单)
将 ide-scsi 和 sg 编译进内核,或编译成模块
下列步骤可让系统在启动时激活内核对刻录机的支持:
# echo ide-scsi >>/etc/modules # echo sg >>/etc/modules # cd /dev; ln -sf scd0 cdrom
手工激活可以这样做:
# modprobe ide-scsi # modprobe sg
重启以后,用下列方法检查安装情况:
$ dmesg|less # apt-get install cdrecord # cdrecord -scanbus
[Per Warren Dodge]如果机器上同时有 CD-ROM 和 CD-R/RW,这时
ide-scsi 和 ide-cd 可能会产生冲突,请试试在
/etc/modutils/aliases
中加上下面的内容,然后运行
update-modules
并重启系统。
pre-install ide-scsi modprobe ide-cd
上述指令指示系统在加载 ide-scsi 前先加载 IDE 驱动。IDE 驱动 ide-cd 接管所有 ATAPI CD-ROM——对指明忽略的设备除外。剩下的设备才由 ide-scsi 来管理。
将 target-directory/
下的文件制作成光盘镜像文件
cd-image.raw
(可引导系统、Joliet TRANS.TBL-enabled
格式的光盘;如果不需要引导系统功能,可去掉 -b 和 -c
选项),在第一个软驱中插入启动软盘然后执行:
# dd if=/dev/fd0 target-directory/boot.img # mkisofs -r -V volume_id -b boot.img -c bootcatalog -J -T \ -o cd-image.raw target_directory/
一个有趣的黑客尝试是制作一盘 DOS 引导光盘。如果上述的
boot.img
文件中包含了通用 DOS
引导软盘镜像,光盘就可以象插在软驱(A:)中的 DOS 软盘一样引导 DOS
系统。如果再加上 freeDOS 就更有趣。
想检查该光盘镜像文件,可以在回送设备(loop device)上加载它。
# mount -t iso9660 -o ro,loop cd-image.raw /cdrom # cd /cdrom # mc # umount /cdrom
首先进行设备测试(假设是双倍数刻录)
# nice --10 cdrecord -dummy speed=2 dev=0,0 disk.img
如果测试通过,执行下面的命令刻录 CD-R
# nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img
或执行下面命令刻录 CD-RW
# nice --10 cdrecord -v -eject blank=fast speed=2 dev=0,0 disk.img
某些型号的 CD-RW 刻录机用下面的命令更好
# nice --10 cdrecord -v blank=all speed=2 dev=0,0 disk.img
接下来执行
# nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img
分两步做是必要,这可以防止在刻录时遇到数据空白产生 SCSI
超时错误。nice
参数可时也要做一些调整。
某些 CD-R 和商业光盘在数据末尾追加了空白扇区(junk sectors),使用
dd
无法拷贝这些光盘(Windows98 CD
就是其中之一)。cdrecord
软件包中有一个 readcd
命令,用它可以将任何光盘内容拷贝成镜像文件。对于数据盘,先挂载,运行
df
查看它的实际大小,再将显示的数字(in blocks, = 1024 bytes)除以 2
得到实际光盘扇区数(2048 bytes),带参数运行 readcd
用该硬盘镜像文件烧制 CD-R/RW。
# readcd dev=target,lun,scsibusno # select function 11
其中,大部分情况下命令行中三个参数都为 0。有时 readcd
给出的扇区数会偏多!此时使用前面用挂载镜像的方法得出的大小值来对上述参数赋值效果更好。
应该提醒的是,如果你对 CD-ROM 使用 dd
的话,会有不少问题。第一次执行 dd
时可能会产生错误信息并丢失光盘镜像末端的一些数据。再次执行 dd
时,如果没有指定镜像的大小的话,在一些系统上会产生一个过大光盘镜像,其末端都是垃圾。只有第二次运行
dd
时,使用正确的镜像大小并在看到错误信息之后不弹出光盘,才能避免这些问题。例如,假设用
df
得到镜像的大小为 46301184
blocks,则执行两次下面的命令可以得到正确的镜像(这是我的经验):
# dd if=/dev/cdrom of=cd.img bs=2048 count=$((46301184/2))
有关 Debian CDs 的最新信息,请浏览 Debian CD site
。
如果有较快的 Internet 连接,可考虑用下面的引导方法从网络安装系统:
如果没有较快的 Internet 连接,可考虑从光盘出售商
处购买安装光盘。
请不要浪费带宽来下载标准光盘镜像(即使是使用新的 jigdo 方式),除非你是光盘镜像测试员。
有一个很有名的光盘镜像 KNOPPIX - Live Linux
Filesystem On CD
。该光盘可以启动一个全功能的 Debian
系统而且不需要在硬盘上安装。
想要将重要的配置文件和数据备份到 CD-R,可使用
中的“backup”脚本。亦可参阅差量备份与数据同步, 第 8.4 节。
backup
我没测试过:
# apt-get install cdrecord cdparanoia # cdparanoia -s -B # cdrecord dev=0,0,0 speed=2 -v -dao -eject defpregap=1 -audio *.wav
或
# apt-get install cdrdao #disk at once # cdrdao read-cd --device /dev/cdrom --paranoia-mode 3 my_cd # read cd # cdrdao write --device /dev/cdrom --speed 8 my_cd # write a new CD
cdrdao
与拷贝不同(如没有数据间隙,等...)。
刻录 DVD 光盘有两种方式:
使用 growisofs
并搭配 mkisofs
。
按照 /usr/share/doc/cdrecord/README.DVD.Debian
的说明重新编译
cdrecord
,并创建加入了 dvd 支持的本地软件包。
X 窗口系统由 XFree86
提供。Debian 系统中 X 服务器有两个主要版本:XFree86 Version 3.3 (XF3)和 XFree86
Version 4.x series (XF4),它们都是基于 X.Org
制定的 X11R6 标准。
想了解 X 的基础知识,可参阅 X(7)
,LDP XWindow-User-HOWTO
和 Remote X
Apps mini-HOWTO
。对 Debian 用户专门的指南,可阅读
xfree86-common
软件包中提供的
/usr/share/doc/xfree86-common/FAQ.gz
,其中 Branden Robinson
有一些关于 key binding 的有趣且权威的讨论。
该程序存在于那些需要在用户显示器(CRT,LCD)上显示 X 窗口和桌面并接收键盘和鼠标输入的本地主机上。
该程序存在于那些需要运行与 X 兼容的应用程序的(本地或远程)主机上。
这正好将常规的“服务器”和“客户机”关系倒转过来。
有几种途径让“X server”(显示端)接收远程“X client”(应用端)的连接请求:
xhost
方式
主机列表机制(很不安全)。
协议不加密(易受到网络监听攻击)
尽量不要使用该方式。
参阅联接远程的 X 服务器 – xhost
, 第 9.4.7
节 和 xhost(1x)
。
xauth
方式
MIT magic cookie 机制(不安全但比 xhost
强点)。
协议不加密(易受到网络监听攻击)
仅用于本地连接,它所需的 CPU 消耗比 ssh -X
低。
参阅 X 下获取 root 权限, 第 9.4.12 节 和
xauth(1x)
。
xdm
, wdm
, gdm
, kdm
, ...
方式
MIT magic cookie 机制(和 xauth
一样不安全)
参阅 xdm(1x)
和 Xsecurity(7)
获得更多有关 X
显示访问控制的基础知识
参阅 wdm(1x)
、gdm(8)
和 kdm.options(5)
获得更多信息,当然先得装上它们。
参阅自定义运行级别, 第 2.4.3
节了解如何在不删除 xdm
包的情况下禁用它,使系统启动到控制台。
ssh -X
方式
基于安全 shell 的端口发送机制(安全)。
加密协议(在本地使用很耗系统资源)。
使用它进行远程连接。
除了 ssh
,所有的远程连接方式,都需要X服务器开启 TCP/IP
连接。参阅在 TCP/IP 中使用 X, 第 9.4.6 节。
在 Woody 中提供了下列几个(meta)软件包来简化 X 的安装。
x-window-system-core
该综合包提供一些基本组件,用于在单一工作站上运行 X Window 系统,其中包括 X
函数库、一个 X 服务器(xserver-xfree86
)、一套字体、一组基本的 X
客户端及工具。
x-window-system
该综合包提供 XFree86 项目开发的所有 X Window
系统的组件,以及一套经久不衰的辅助程序。(注意,它包含了
x-window-system-core
、twm
和 xdm
等组件,故安装了它就不用再安装 x-window-system-core
了。)
xserver-common-v3
XFree86 3.x X服务器(X3)相关的程序和工具。
xserver-*
XF3 服务器软件包的补充包,包含了对那些新的 XF4
服务器(xserver-xfree86
)不支持的硬件的支持。如 XF4 不支持某些老式的
ATI mach64 卡,某些视频卡在 Woody 版的 XF4
中无法工作等等。(要获得可用软件包,可执行apt-cache search
xserver-|less。所有这些 XF3 服务器均是基于
xserver-common-v3
的。)
大多数情况下,应该安装
x-window-system
(如果要通过控制台登录,需禁用
xdm
,具体方法参阅“我不想直接启动到 X!”, 第 8.1.4
节。)
在安装 X 系统之前安装下列软件包,就能在 X 配置阶段实现硬件侦测:
discover
– 硬件识别系统。
mdetect
– 鼠标自动侦测工具。
read-edid
– VESA PnP 监视器硬件信息收集工具。
有关 X 服务器的信息,参阅 XFree86(1x)
。
从本地控制台调用 X 服务器:
$ startx -- :<display> vtXX e.g.: $ startx -- :1 vt8 -bpp 16 ... start on vt8 connected to localhost:1 with 16 bpp mode
--后面的参数用于设置 X 服务器。
注意,在使用 ~/.xserverrc
脚本定制 X 服务器启动进程时,请确保
exec 调用的是真正的 X 服务器。如果没这么做会导致 X
服务器启动缓慢及退出。例如:
#!/bin/sh exec /usr/bin/X11/X -dpi 100 -nolisten tcp
(重新)配置 XF4 服务器,
# dpkg-reconfigure --priority=low xserver-common # dpkg-reconfigure --priority=low xserver-xfree86
该命令会生成 /etc/X11/XF86Config-4
文件并调用 dexconf
脚本来配置X。
(重新)配置 XF3 服务器。例如,针对 ATI mach64,
# dpkg-reconfigure --priority=low xserver-common-v3 # dpkg-reconfigure --priority=low xserver-mach64
该命令会生成 /etc/X11/XF86Config
文件并调用
xf86config-v3
脚本来配置X。
在 Woody 系统上,往文件 /etc/X11/XF86Config-4
中添加用户自定义内容时,不要在配置文件的定义段落中进行编辑:
### BEGIN DEBCONF SECTION [snip] ### END DEBCONF SECTION
正确是做法是将用户定义内容加在定义段落之前。例如,要添加自定义视频卡,可在文件开头添加类似下面的内容:
Section "Device" Identifier "Custom Device" Driver "ati" Option "NoAccel" EndSection Section "Screen" Identifier "Custom Screen" Device "Custom Device" Monitor "Generic Monitor" DefaultDepth 24 Subsection "Display" Depth 8 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection Subsection "Display" Depth 16 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection Subsection "Display" Depth 24 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection EndSection Section "ServerLayout" Identifier "Custom" Screen "Custom Screen" InputDevice "Generic Keyboard" "CoreKeyboard" InputDevice "Configured Mouse" "CorePointer" EndSection
对于 Sarge(撰写本文时是
testing),如果你希望在升级的时候保留用户的自定义的
/etc/X11/XF86Config
设置,请用 root 运行下列命令:
# cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.custom # md5sum /etc/X11/XF86Config-4 > /var/lib/xfree86/XF86Config-4.md5sum # dpkg-reconfigure xserver-xfree86
如果想美化字体,请按照 X 下的 TrueType 字体, 第 9.4.13
节中的说明来修改 /etc/X11/XF86Config-4
。
请同时检查 X 设置中的其他部分。不良的显示器设置甚至比难看的字体更让人头痛,所以请确保你设置的刷新率是你显示器能处理的最高刷新率(85 Hz 很好,75 Hz 还可以,60 Hz 就很糟糕了)。
绝大多数 X 客户端程序都可以用类似下面的命令启动:
client $ xterm -geometry 80x24+30+200 -fn 6x10 -display hostname:0 &
命令行中各参数的含义如下:
-geometry WIDTHxHEIGHT+XOFF+YOFF:窗口初始尺寸和位置。
-fn FONTNAME:显示文本的字体。FONTNAME 的赋值有如下几个:
a14: 普通字体
a24: 大号字体
... (使用 xlsfont 检查可用字体。)
-display displayname:X 服务器名称。 displayname 的赋值有如下几个:
hostname:D.S 表示在名为 hostname 的主机的显示器 D 上显示的屏幕 S;工作于该显示器的X服务器监听 TCP 端口 6000+D。
host/unix:D.S 表示在
host 主机的显示器 D 上显示的屏幕
S;工作于该显示器的 X 服务器监听 UNIX domain socket
/tmp/.X11-unix/XD
(故只能从主机访问它)。
:D.S 等价于 host/unix:D.S,其中 host 代表本地主机名。
默认的 X 客户端程序(应用端)的 displayname 可通过 DISPLAY 环境变量来设置。例如:在运行某 X 客户端程序之前,执行下列命令之一就可以完成设置工作:
$ export DISPLAY=:0 # 默认情况下,本地机器使用第一个 X 屏幕 $ export DISPLAY=hostname.fulldomain.name:0.2 $ export DISPLAY=localhost:0
程序启动方式可以在~/.xinitrc
中进行自定义。例如:
xrdb -load $HOME/.Xresources xsetroot -solid gray & xclock -g 50x50-0+0 -bw 0 & xload -g 50x50-50+0 -bw 0 & xterm -g 80x24+0+0 & xterm -g 80x24+0-0 & twm
正如自定义 X 会话, 第 9.4.5.1 节中所描述的,当使用
startx
启动 X 时,该脚本将重载 Xsession
所做的所有常规操作,通常用 ~/.xsession
来代替,而该方法仅作为最后的手段使用。参阅
xsetroot(1x)
、xset(1x)
和 X
资源, 第 9.4.10 节。
X 会话(X 服务器 + X 客户端)可使用下列方法启动:
startx
:xinit
的脚本化命令(wrapper script
command),负责从 Linux 字符型控制台启动 X 服务器和客户端。如果
~/.xinitrc
文件不存在,/etc/X11/xinit/xinitrc
会调用并执行 /etc/X11/Xsession
。
xdm
、gdm
、kdm
或 wdm
:X
显示管理器守护进程,负责启动 X 服务器和客户端,并管理来自 GUI
屏幕的登录行为。直接执行 /etc/X11/Xsession
。
想使用控制台参阅“我不想直接启动到 X!”, 第 8.1.4 节。
默认的启动脚本 /etc/X11/Xsession
是
/etc/X11/Xsession.d/50xfree86-common_determine-startup
和
/etc/X11/Xsession.d/99xfree86-common_start
的高效的结合体。
/etc/X11/Xsession
的执行会受
/etc/X11/Xsession.options
的影响,从本质上讲,它使用
exec
命令执行系统中按下面的次序排序,排在第一位的程序:
~/.xsession
or ~/.Xsession
,如果它被定义。
/usr/bin/x-session-manager
,如果它被定义。
/usr/bin/x-window-manager
,如果它被定义。
/usr/bin/x-terminal-emulator
,如果它被定义。
Debian 选择系统(Debian alternative system )对这些命令的确切定义进行了描述,参阅Alternative 命令, 第 6.5.3 节。例如:
# update-alternatives --config x-session-manager ... 或 # update-alternatives --config x-window-manager
如果想定义某 X 窗口管理器为默认窗口管理器,同时保留已安装的 GNOME 和 KDE
会话管理器,可用 http://bugs.debian.org/168347
中第二个错误报告所附的文件替换
/etc/X11/Xsession.d/50xfree86-common_determine-startup
文件(我希望它能早日加到发行版中),然后按下面的方法编辑
/etc/X11/Xsession.options
来禁用 X 会话管理器:
# /etc/X11/Xsession.options # # configuration options for /etc/X11/Xsession # See Xsession.options(5) for an explanation of the available options. # Default enabled allow-failsafe allow-user-resources allow-user-xsession use-ssh-agent # Default disabled (enable them by uncommenting) do-not-use-x-session-manager #do-not-use-x-window-manager
如果不想按上述方法修改系统,由于 gnome-session
和
kdebase
软件包包含了那些 X 会话管理器。所以删除它们,X
窗口管理器就成了默认窗口管理器了。(废话,还更好的主意吗?)
对于那些 /etc/X11/Xsession.options
中仅包含一行
allow-user-xsession 的系统,任何定义了 ~/.xsession
或
~/.Xsession
的用户,均可以自定义 /etc/X11/Xsession
的行为。
~/.xsession
文件中排在最后的命令,其格式应该为 exec
some-window/session-manager,用来启动你喜欢的 X
窗口/会话管理器。
/usr/share/doc/xfree86-common/examples/xsession.gz
给出了一个不错的 ~/.xsession
脚本样例。
我使用它来为每个用户设置窗口管理器、屏幕访问和语言支持。参阅针对用户启动 X 会话, 第 9.4.5.2 节、X 下获取 root 权限, 第 9.4.12 节、多语言的 X 窗口系统范例, 第 9.7.9 节。
如果你希望一些 X 客户端程序能自动启动,参阅 X 客户端, 第
9.4.4 节 的范例并将其写在 ~/.xsession
而不是
~/.xinitrc
。
用户自己添加的 X 资源保存在 ~/.Xresources
,而系统级的 X
资源保存于/etc/X11/Xresources/*
。参阅 xrdb(1x)
。
用户可以在 ~/.xmodmaprc
中自定义键盘布局和鼠标按键布局,参阅
xmodmap(1x)
。
遵循自定义 X 会话, 第 9.4.5.1
节中描述的原则,要激活用户特定的 X
会话/窗口管理器,需要安装相应的软件包并在 ~/.xsession
文件末尾添加如下内容(我爱用
blackbox
/fluxbox
,它简单快捷。):
默认 X 会话管理器
exec /usr/bin/x-session-manager
默认 X 窗口管理器
exec /usr/bin/x-window-manager
GNOME 会话管理器(loaded)
需安装软件包:gnome-session
exec /usr/bin/gnome-session
KDE 会话管理器(loaded)
需安装软件包:kdebase
(or kdebase3
for KDE3)
exec /usr/bin/kde2
Blackbox 窗口管理器(lightweight, slick).
需安装软件包:blackbox
exec /usr/bin/blackbox
Fluxbox 窗口管理器(lightweight, new blackbox).
需安装软件包:fluxbox
exec /usr/bin/fluxbox
Xfce 窗口管理器(Mac OS-X, SUN CDE like).
需安装软件包:xfce
exec /usr/bin/xfwm
IceWM 窗口管理器(lightweight, GNOME alternative)
需安装软件包:icewm
exec /usr/bin/X11/icewm
FVWM2 虚拟窗口管理器(lightweight, Win95 like)
需安装软件包:fvwm
exec /usr/bin/fvwm2
Windowmaker 窗口管理器(somewhat NexT like)
需安装软件包:wmaker
exec /usr/bin/wmaker
Enlightenment 窗口管理器(loaded).
需安装软件包:enlightenment
exec /usr/bin/enlightenment
要配置完整的 KDE 或 GNOME 环境,下列的综合包很有用:
KDE:安装 kde
软件包
GNOME:安装 gnome
软件包
请使用能操作 Recommends 类软件包的安装工具安装这些软件包,如
dselect
和 aptitude
,比起 apt-get
它们能提供更丰富的软件供你选择。
如果想从控制台登录,必须禁用 X 显示管理器,例如
kdm
、gdm
和 wdm
这会牵扯到一些关联问题,有关信息参阅“我不想直接启动到 X!”, 第 8.1.4
节。
如果想将系统的默认环境由 KDE 换成 GNOME,请用 Alternative 命令, 第 6.5.3
节中所述的方法配置 x-session-manager
。
由于不加密的远程 TCP/IP 套接字连接易受到窃听攻击,新版的 Debian 安装 X
时默认是禁用 TCP/IP 套接字口的。建议使用 ssh
进行远程 X
连接(参阅联接远程的 X 服务器 – ssh
, 第
9.4.8 节)。
通常不推荐使用本节所述的方法,除非系统处于防火墙之后且所处网络中全是绝对可信任的用户。使用下面的命令检查当前X服务器的 TCP/IP 套接字口的设置:
# find /etc/X11 -type f -print0 | xargs -0 grep nolisten /etc/X11/xinit/xserverrc:exec /usr/bin/X11/X -dpi 100 -nolisten tcp
删除 -nolisten 就可以恢复X服务器对 TCP/IP 的监听。
xhost
xhost
允许通过主机名访问。该方式极不安全。下面的方法将关闭主机验证功能,只要 TCP/IP
套接字连接功能是打开的(参阅在 TCP/IP 中使用 X, 第 9.4.6
节)本机就会接收来自任何地方的连接请求。
$ xhost +
要重新打开主机验证功能可执行:
$ xhost -
xhost
无法区分远程主机上不同的用户,而且远程连接的主机名(实际上是地址)也可以是伪造的。
如果处于一个不可信的网络环境(例如通过 PPP 拔号连接到
Internet),即使在网络中成为主机受到一定标准的限制,也应尽量避免使用该连接方式。参阅
xhost(1x)
。
ssh
使用 ssh
可以在本地主机和远程应用服务器之间建立一个安全的连接通道。
如果不想每次执行相同的命令行选项,可在远程主机的
/etc/ssh/sshd_config
文件中,打开 X11Forwarding 和
AllowTcpForwarding 选项。
启动本地主机的 X 服务器。
在本地主机上开一个 xterm
进程。
运行 ssh
建立与远程站点的连接。
localname @ localhost $ ssh -q -X -l loginname remotehost.domain Password: .....
在远程站点上运行 X 应用程序命令。
loginname @ remotehost $ gimp &
该连接方式使得远程 X 客户机上的屏幕输出,看上去就好象是通过本地 UNIX 域套接字的方式连接到服务器的客户机输出。
xterm
学习 xterm
可以去 http://dickey.his.com/xterm/xterm.faq.html
。
许多老式的 X 程序,如 xterm
,使用 X
资源数据库配置它们的外观。~/.Xresources
文件用于保存用户资源定义。登录后该文件自动合并到默认的 X
资源中。系统范围的缺省配置存储在 /etc/X11/Xresources/*
中,应用程序缺省的配置存储在
/etc/X11/app-defaults/*
。使用这些设置作为学习的起点。
这儿是一些有用的设置,可加到~/.Xresources
文件中:
! Set the font to a more readable 9x15 XTerm*font: 9x15 ! Display a scrollbar XTerm*scrollBar: true ! Set the size of the buffer to 1000 lines XTerm*saveLines: 1000 ! Large kterm screen KTerm*VT100*fontList: -*-fixed-medium-r-normal--24-*,\ -*-gothic-medium-r-normal--24-*,\ -*-mincho-medium-r-normal--24-*
要使上述设置立即生效,可用下面的命令将它们合并到数据库:
xrdb -merge ~/.Xresources
参阅 xrdb(1x)
。
xmodmap
程序用来编辑和显示键盘修订表和按键映射表的,客户端程序用它们来把按键代码事件(event
keycodes)转换成 X 中的 keysyms。
$ xmodmap -pm ... 显示当前按键修订表 $ xmodmap -pk | pager ... 显示当前按键映射表 $ xmodmap -e "pointer = 3 2 1" # 设置为惯用左手鼠标 $ xmodmap ~/.xmodmaprc # 用 ~/.xmodmaprc 中的描述设置键盘
通常从用户的会话中启动脚本,从 ~/.xsession
中执行。
要获得按键代码(keycode),请在 X 中运行 xev
并按键。要想获得 keysym 的含义,请从宏定义文件
/usr/include/X11/keysymdef.h
中查找。该文件中所有的
#define 声明都用 XK_ 命名,伪装成 keysym
的名字。
参阅 xmodmap(1x)
。
如果运行 GUI 程序时需要 root 权限,请用下面的步骤在用户的 X 服务器上显示程序输出。千万不要直接使用 root 帐号启动 X 服务器以避免承担不必要的安全风险。
以普通用户身份启动 X 服务器,开一个 xterm
控制台窗口,执行:
$ XAUTHORITY=$HOME/.Xauthority $ export XAUTHORITY $ su root Password:***** # printtool &
非 root 用户以 su
方式运用该技巧时,要确保该非 root
用户所在用户组对 ~/.Xauthority
文件有读权限。
想要系统自动执行该命令序列,请在用户帐号下创建 ~/.xsession
文件,编辑文件如下:
# This makes X work when I su to the root account. if [ -z "$XAUTHORITY" ]; then XAUTHORITY=$HOME/.Xauthority export XAUTHORITY fi unset XSTARTUP # If a particular window/session manager is desired, uncomment following # and edit it to fit your needs. #XSTARTUP=/usr/bin/blackbox # This starts x-window/session-manager program if [ -z "$XSTARTUP" ]; then if [ -x /usr/bin/x-session-manager ]; then XSTARTUP=x-session-manager elif [ -x /usr/bin/x-window-manager ]; then XSTARTUP=x-window-manager elif [ -x /usr/bin/x-terminal-emulator ]; then XSTARTUP=x-terminal-emulator fi fi # execute auto selected X window/session manager exec $XSTARTUP
接着在用户的 xterm
窗口中运行 su
(不是su
-)。现在从该 xterm
启动的 GUI 程序就可以在该用户的 X window
环境中显示以 root 权限运行的程序输出。只要执行了默认的
/etc/X11/Xsession
,就可以使用该方法。如果用户使用
~/.xinitrc
或 ~/.xsession
来配置自定义环境,需要将上面提到的环境变量 XAUTHORITY
加到这些脚本中去。
还有一种方法,sudo
可用于自动执行上面的命令序列:
$ sudo xterm ... 或 $ sudo -H -s
这时 /root/.bashrc
中应包含:
if [ $SUDO_USER ]; then sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge - fi
即使对那些 home 目录位于 NFS 上的用户,它也能正常工作。因为 root 不用读
.Xauthority
文件。
还有一些用于该目的的专用软件包:kdesu
、gksu
、gksudo
、gnome-sudo
和 xsu
。其它方法也可以达到同样的目的:如在
/root/.Xauthority
和相应用户文件之间创建一个符号链接;使用
sux
脚本;或对 root 初始化脚本执行“xauth merge
~USER_RUNNING_X/.Xauthority”。
更多方法参阅 debian-devel
mailing list
。
XFree86-4 中标准的 xfs
能完美地驱动 TrueType 字体,如果你使用的是
XFree86-3,就得安装第三方字体服务器如 xfs-xtt
。
不论什么应用程序,如果要使用 TrueType 字体,就要与 libXft 或 libfreetype 建立链接(如果你使用的是已编译好的 .deb 包,就不用在这方面操心了)。
首先进行字体支持的基础设置:
安装软件包 x-ttcidfont-conf
和
defoma
。它们能自动生成文件 fonts.scale
和
fonts.dir
。
# apt-get install x-ttcidfont-conf
编辑 /etc/X11/XF86Config-4
的 Section
"Files" 部分,如下显示:
Section "Files" FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" FontPath "/usr/share/fonts/truetype" FontPath "/usr/lib/X11/fonts/CID" FontPath "/usr/lib/X11/fonts/Speedo" FontPath "/usr/lib/X11/fonts/misc" FontPath "/usr/lib/X11/fonts/cyrillic" FontPath "/usr/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/lib/X11/fonts/Type1" EndSection
第一行使 XFree86 使用任何你从 Debian 软将包安装的 TrueType 字体。因为 XFree86 渲染 Type1 字体的效果很差,Type1 字体的目录就放在后面了。点阵字体的小技巧 :unscaled 对于新的 XF4 来说是不需要的,我把它包含在内是为了确保万无一失。
为了保留手工修改的 /etc/X11/XF86Config-4
文件,请按照手工配置 X 服务器, 第 9.4.3.3 节的说明操作。
然后安装 DFSG 字体软件包:
西方 TrueType 字体:
ttf-bitstream-vera
:一套由 Bitstream, Inc 创造的高质量的 TrueType
字体。 [40]
ttf-freefont
:一套高质量的 TrueType 字体,包含了 UCS 字符集。
ttf-thryomanes
:一套包括了 Latin、Greek、Cyrillic 和 IPA 的Unicode
TrueType 字体。
亚洲字体:
tfm-arphic-bsmi00lp
: Chinese Arphic "AR PL Mingti2L
Big5" TrueType font TeX font metric data
tfm-arphic-bkai00mp
: Chinese Arphic "AR PL KaitiM Big5"
TrueType font TeX font metric data
tfm-arphic-gbsn00lp
: Chinese Arphic "AR PL SungtiL GB"
TrueType font TeX font metric data
tfm-arphic-gkai00mp
: Chinese Arphic "AR PL KaitiM GB"
TrueType font TeX font metric data
ttf-baekmuk
: Korean Baekmuk series TrueType fonts
hbf-jfs56
: Chinese Jianti Fangsong 56x56 bitmap font (GB2312) for
CJK
hbf-cns40-b5
: Chinese Fanti Song 40x40 bitmap font (Big5) for CJK
hbf-kanji48
: Japanese Kanji 48x48 bitmap font (JIS X-0208) for CJK
由于供自由使用的字体有时很有限,Debian 用户也可以安装或共享某些商业 TrueType 字体。为了简化安装这类字体的工序,于是产生了一些方便的软件包:
ttf-commercial
msttcorefonts (>1.1.0)
[41]
请慎重选择 TT 字体,以免自由系统受到不自由字体的污染。
所有这些 Debian 字体软件包不用设置就能工作,并且对于使用“core”字体系统的 X 程序来说,它都是可用的。包括 Xterm、Emacs 和其他一些非 KDE 和 gnome 的程序。
现在运行 xfontsel
,在 fndry 菜单中选中任何一个 TrueType
字体,你可以在 “fmly”菜单中看到很多项目。
对于 KDE2.2 和 GNOME1.4(搭配 libgdkxft0 使 GTK 1.2
能对字体进行反锯齿的渲染),同样的你需要配置 Xft1。Xft1 非常的过时了,基本上只有
GNOME1.4 和 KDE2.2 在使用。编辑 /etc/X11/XftConfig
文件,在其他“dir”之前加入下面这一行东西。
dir "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
[42]
对于 GNOME2 和 KDE3(Sarge 之后的版本),你需要设置 fontconfig
,Xft2
用它来查找字体。 [43]
你不必为此再安装其他额外的软件包,因为所有用到 fontconfig
的软件包都会依赖与它的。
首先,查看
/etc/fonts/fonts.conf
。里面应该有如下的一行内容。如果没有,就打开
/etc/fonts/local.conf
,在 <fontconfig> 行后面添加这些内容。
<dir>/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType</dir>
Fontconfig
应该能直接获得字体信息,“fc-list”能列出你的新字体。另外一个
fontconfig
的特色是,你能把字体放在 ~/.fonts/
中,而所有字体可设置的程序都能立即访问它们。
如果你在 X 中手动安装了新的一个 TrueTyep 字体,而没有使用 Debian的软件包,运行
# xset fp rehash
让 XFree86 重新检查目录下面的内容并找到新的字体。
Sarge 发行版中包含了下面这些拥有图形处理能力的网页浏览器:
mozilla
Mozilla 浏览器
mozilla-firefox
Mozilla 浏览器变体(独立的)
epiphany-browser
Mozilla 浏览器变体(Gnome)
galeon
基于 Mozilla 的使用 Gnome UI 的浏览器(新增)
konqueror
KDE 浏览器
amaya
W3C 参考浏览器
...
在 testing 或 unstable 中,将会遇到
mozilla
变体浏览器的版本匹配问题,因为这些变体浏览器需要匹配共享库的版本。
安装诸如 mozilla
浏览器的插件,可手工将“*.so”装到
plug-in 目录下,然后重启浏览器。
Plug-in 资源:
Java plug-in: 从 http://java.sun.com
安装二进制的“J2SE”。
Flash plug-in: 从 http://www.macromedia.com/software/flashplayer/
安装二进制的“Macromedia Flash Player 5”
freewrl
: VRML 浏览器和 Netscape plug-in
...
在 Sarge 发行版下,有几个客户端软件包有图形显示界面:
mozilla-thunderbird
独立的邮件客户端
kmail
KDE 邮件客户端
evolution
Novell 里面的 groupware 套件
...
SSH(Secure SHell)是在 Internet 中建立连接的安全途径。OpenSSH 是一个自由的 SSH 实现软件,它包含 在Debian 的 ssh 软件包中。
首次安装 OpenSSH 服务器和客户机。
# apt-get update && apt-get install ssh
要运行 OpenSSH 服务器,还得屏蔽掉 /etc/ssh/sshd_not_to_be_run
。
SSH 有两个验证协议:
SSH 协议 第 1 版:
Potato 发布版仅支持该版协议
可用的验证方法:
RSA 验证:基于 RSA 密钥的用户验证
Rhosts 验证:基于 .rhosts 的主机验证(不安全,有缺陷)
RhostsRSA 验证:.rhosts 验证与 RSA 主机密钥相结合(有缺陷)
ChallengeResponse 验证:RSA Challenge-response 验证
Password 验证:基于 password 的验证
SSH 协议 第 2 版
Woody 后继版本将以该版协议为主
可用的验证方式:
Pubkey 验证:基于公共密钥的用户验证
Hostbase 验证:.rhosts
或 /etc/hosts.equiv
验证与公共密钥客户端主机验证相结合(有缺陷)
ChallengeResponse 验证:challenge-response 验证
Password 验证:基于 password 的验证
如果系统正迁移到 Woody 或使用非 Debian 系统,请注意版本差异。
更多信息请参阅
/usr/share/doc/ssh/README.Debian.gz
、ssh(1)
、sshd(8)
、ssh-agent(1)
和 ssh-keygen(1)
。
下面是一些关键的配置文件:
/etc/ssh/ssh_config
:默认的 SSH 客户机。参阅
ssh(1)
。其中重要的项目有:
Host:作用于所有与该关键字后所列出的主机相匹配的主机,它们须遵守下面(处于本host 关键字之后下一个 host 关键字之前的内容)所列的各项条款。
Protocol:规定所使用的 SSH协议的版本。默认为“2,1”。
PreferredAuthentications:规定 SSH2 客户端验证方式。默认为“hostbased,publickey,keyboard-interactive,password”。
PasswordAuthentication:如果想使用密码登录,须确认该选项没有设置成 no。
ForwardX11:默认为关闭状态。可使用命令行选项“-X”重载它。
/etc/ssh/sshd_config
:默认的 SSH 服务器。参阅
sshd(8)
。其中重要的项目有:
ListenAddress:规定 sshd
监听的本地地址。允许多重指定。
AllowTcpForwarding:默认为关闭状态。
X11Forwarding:默认为关闭状态。
$HOME/.ssh/authorized_keys
:默认公共密钥列表,客户机可使用这些密钥连接本主机的该用户帐号。参阅
ssh-keygen(1)
。
$HOME/.ssh/identity
:参阅 ssh-add(1)
和
ssh-agent(1)
。
下面的操作将从客户机建立一个 ssh
连接。
$ ssh username@hostname.domain.ext $ ssh -1 username@hostname.domain.ext # Force SSH version 1 $ ssh -1 -o RSAAuthentication=no -l username foo.host # force password on SSH1 $ ssh -o PreferredAuthentications=password -l username foo.host # force password on SSH2
在用户眼里,ssh
的功能相当于一个更灵巧更安全的
telnet
(will not bomb with ^])。
在本地机器上执行下面的命令,可以建立一个连接本地主机 4025
端口和远程服务器 25 端口的管道,以及一个连接本地主机 4110
端口和远程服务器 110 端口的 ssh
连接。
# ssh -q -L 4025:remote-server:25 4110:remote-server:110 \ username@remote-server
在 Internet 上可使用该方法建立与 SMTP/POP3 服务器的安全连接。记得在远程主机的
/etc/ssh/sshd_config
中设置 AllowTcpForwarding 值为
yes。
使用 RSAAuthentication(SSH1协议)或 PubkeyAuthentication(SSH2协议)可不必记住每个远程系统的连接密码。
在远程系统上,在 /etc/ssh/sshd_config
中分别设置“RSAAuthentication yes”或“PubkeyAuthentication yes”。
然后在本地生成验证密匙,在远程系统上安装公共密钥:
$ ssh-keygen # RSAAuthentication: RSA1 key for SSH1 $ cat .ssh/identity.pub | ssh user1@remote \ "cat - >>.ssh/authorized_keys" ... $ ssh-keygen -t rsa # PubkeyAuthentication: RSA key for SSH2 $ cat .ssh/id_rsa.pub | ssh user1@remote \ "cat - >>.ssh/authorized_keys" ... $ ssh-keygen -t dsa # PubkeyAuthentication: DSA key for SSH2 $ cat .ssh/id_dsa.pub | ssh user1@remote \ "cat - >>.ssh/authorized_keys"
今后可用“ssh-keygen -p”来改密码。最后记得检查一下设置,可做个连接测试,如遇问题,执行“ssh -v”。
你可以通过在 authorized_keys
里添加选项来限制主机及运行指定的命令。详情参阅 sshd(8)
。
注意 SSH2 有
HostbasedAuthentication,要使它工作,必须同时在服务器端的
/etc/ssh/sshd_config
文件中和客户机端的
/etc/ssh/ssh_config
或 $HOME/.ssh/config
文件中设置
HostbasedAuthentication 为 yes。
下面是其它一些非类 Unix 平台的免费 SSH 客户端。
puTTY
(GPL)
SSH in cygwin
(GPL)
macSSH
(GPL) [注意 Mac OS X
包含 OpenSSH;在终端应用程序中使用 ssh]
参阅 SourceForge.net的站点文档
,“6.
CVS Instructions”。
ssh-agent
使用 passphrase 来保护 SSH 认证密匙会更安全,如果还没有设置,可使用 ssh-keygen -p 来设置。
用更少的密码建立连接 – RSA, 第 9.5.3
节中描述了如何使用一个基于密码的远程主机连接,将公共密钥(例如~/.ssh/id_rsa.pub
)放入远程主机的
~/.ssh/authorized_keys
。
$ ssh-agent bash # 或者用 zsh/tcsh/pdksh 这些程序代替。 $ ssh-add ~/.ssh/id_rsa Enter passphrase for /home/osamu/.ssh/id_rsa: Identity added: /home/osamu/.ssh/id_rsa (/home/osamu/.ssh/id_rsa) $ scp foo user@remote.host:foo ... no passphrase needed from here on :-) $^D ... terminating ssh-agent session
对于 X 服务器,普通 Debian 启动脚本会将 ssh-agent
作为一个父进程执行。所以只需执行一次 ssh-add
即可。
详情参阅 ssh-agent(1)
和 ssh-add(1)
。
如果遇到问题,检查一下配置文件的访问权限,并使用“-v”选项运行
ssh
。
如果是 root 身份,遇到连接防火墙出错的情况,可使用“-P”选项;它规定 ssh 使用服务器的1 – 1023 以外的端口。
如果与远程站点的 ssh
连接突然停止工作,很可能是因为系统管理员修补系统造成的,host_key
在系统维护过程中被更改。在查明了事情真象并确定并不是有人试图冒充远程主机非法入侵之后,从本地机器的
$HOME/.ssh/known_hosts
中删除 host_key
项目就可以恢复连接了。
邮件系统配置分为三类:
邮件传输代理(MTA):exim4
, exim
, postfix
,
sendmail
, qmail
, ssmtp
,
nullmailer
, ...
邮件工具:procmail
, fetchmail
, mailx
,
crm114
, ...
邮件用户代理(MUA):mutt
, emacs
+gnus
,
对于全功能的 MTA 来说,请在 Woody 中使用 exim
,在 Sarge 中使用
exim4
。 [44]
参考资料:
针对软件包 exim
的 exim-doc
和
exim-doc-html
。
针对软件包 exim4
的 exim4-doc
和
exim4-doc-html
。
如果你对安全性有高要求的话,唯一一个可替代的 MTA 是
postfix
。Debian 软件包还提供了 sendmail
和
qmail
,但并不推荐你使用它们。
有时并不需要 MTA 的所有功能,如在一个卫星系统中的一台笔记本电脑,可以考虑下列几种轻量级软件包:
ssmtp
:需要 SMTP 连接并支持别名功能,或者
nullmailer
:可以存信但不支持别名。
此刻,我发现 exim
对于我作为个人工作站的笔记本电脑再合适不过了。
如果要安装这些软件包必须先删除 exim
,它们有冲突:
# dpkg -P --force-depends exim # apt-get install nullmailer # or ssmtp
如果你在一台通过用户级别的服务连接的机器上运行 exim4
或
exim
,请确保在发信的时候通过 ISP 或者其他人提供的 smarthost。 [45] 这样做有许多好处:
ISP 的 smarthost 通常有更可靠的连接,可以确保 SMTP 重发。
避免使用动态 IP 发送信件,这类信件会被 dial-up spam 列表过滤的。
节省寄出多个收信人的邮件的带宽。
唯一可能的坏处是:
你 ISP 的 SMTP 出问题时的紧急处理。
用于学习目的的实验。
你的主机是专业的主机服务器。
为了将 exim
作为 MTA,可按下列步骤进行配置:
/etc/exim/exim.conf 使用“eximconfig”创建及编辑(exim) /etc/exim4/* 使用“dpkg-reconfigure exim4-config”创建及编辑(exim4) /etc/inetd.conf 注释掉 smtp,将 exim 作为 daemon 运行 /etc/email-addresses 添加伪来源地址列表
检查邮件过滤器可使用 exim4
或 exim
搭配 -brw, -bf,
-bF, -bV, ... 等等
在 /etc/exim/exim.conf
文件(Woody 或后继版本)的 DIRECTORS
部分的末尾(localuser:director 之后)添加一个 catch-all director,将所有前面的
director 无法解析的地址收集到一起(per Miquel van Smoorenburg):
catchall: driver = smartuser new_address = webmaster@mydomain.com
如果要为每个虚拟域指定更精细的处理方法或其它什么的,可在/etc/exim/exim.conf
末尾添加(我没仔细测试过):
*@yourdomain.com ${lookup{$1}lsearch*{/etc/email-addresses} \ {$value}fail} T
接着在/etc/email-addresses
中加上一行“*”。
可用 exim
为发出的邮件指定特定的“From:”信头,在
/etc/exim/exim.conf
文件的末尾编辑:
*@host1.something.dyndns.org \ "${if eq {${lookup{$1}lsearch{/etc/passwd}{1}{0}}} {1} \ {$0}{$1@something.dyndns.org}}" frFs
该语句将作用于所有符合*@host1.something.dyndns.org的邮件。
在 /etc/password
中搜索,以确定 local part($1)是否为本地用户。
如果是本地用户,它将用第一个域($0)中的内容重写地址
如果不是本地用户,重写域部分。
某些 SMTP 服务如 yahoo.com 需要 SMTP 认证。可用下面的方法配置
/etc/exim/exim.conf
:
remote_smtp: driver = smtp authenticate_hosts = smtp.mail.yahoo.com ... smarthost: driver = domainlist transport = remote_smtp route_list = "* smtp.mail.yahoo.com bydns_a" ... plain: driver = plaintext public_name = PLAIN client_send = "^cmatheson3^this_is_my_password"
别忘了最后一行的双引号。
fetchmail
以 daemon 方式运行,用 ISP 提供的 POP3
帐号将邮件收到本地邮件系统。配置:
/etc/init.d/fetchmail /etc/rc?.d/???fetchmail run update-rc.d fetchmail default priority 30 /etc/fetchmailrc configuration file (chown 600, owned by fetchmail)
在 Potato 中,有关如何在 init.d
脚本中配置 fetchmail
以 daemon 方式运行的信息,十分混乱,Woody 解决了这个问题。参阅 example scripts
中
/etc/init.d/fetchmail
和 /etc/fetchmailrc
样例文件。
如果你的邮件信头被 ISP 的邮件工具以^M污染,可在 $HOME/.fetchmailrc
中添加“stripcr”选项:
options fetchall no keep stripcr
procmail
是一个本地邮件分发过滤程序。使用时,需要为每个使用它的用户创建$HOME/.procmailrc
,样例:_procmailrc
。
crm114
处理垃圾邮件
crm114
软件包提供了 /usr/share/crm114/mailfilter.crm
脚本。该脚本是用 CRM114
撰写的,提供了非常有效的垃圾信件过滤器,并可以通过喂食垃圾邮件来调节它的处理能力。
CRM114 是一种专门为写过滤器设计的小语言,可以把它当做拥有超能力的 grep
版本。参阅 crm(1)
。
用 mutt
做用户邮件代理(MUA)与 vim
结合使用。使用
~/.muttrc
进行自定义;例如:
# use visual mode and "gq" to reformat quotes set editor="vim -c 'set tw=72 et ft=mail'" # # header weeding taken from the manual (Sven's Draconian header weeding) # ignore * unignore from: date subject to cc unignore user-agent x-mailer hdr_order from subject to cc date user-agent x-mailer auto_view application/msword ....
在 /etc/mailcap
或 $HOME/.mailcap
中添加下列内容,就能显示 HTML 邮件和内嵌的 MS Word 附件:
text/html; lynx -force_html %s; needsterminal; application/msword; /usr/bin/antiword '%s'; copiousoutput; description="Microsoft Word Text"; nametemplate=%s.doc
Debian 是国际化的操作系统,它所支持的语言和地区惯例的数目正在不断增加。接下来的部分列出了当前 Debian 对各种差异形式的支持,接着再讨论本地化,该过程负责定制你的工作环境,根据你所选的语言确定当前系统的输入输出方式,并按照你所在地区的惯例转化日期、数字、货币格式以及系统中其它相关方面。
定制系统的本地化和国家语言支持包括以下几个方面。
Debian 发布版中包含了二十多种键盘布局方案。在 Woody 中重新配置键盘可使用:
dpkg-reconfigure --priority=low console-data # console
dpkg-reconfigure --priority=low xserver-xfree86 # XF4
dpkg-reconfigure --priority=low xserver-common-v3 # XF3
绝大多数 Debian 软件包都能使用 non-US-ASCII 字符,它们通过 glibc 中的 locale 技术,用 LC_CTYPE 环境变量来操作这些字符。
纯 8-bit 字符:应用于所有程序中
其它拉丁字符集(例如:ISO-8859-1 或 ISO-8859-2):应用于绝大多数程序中
多字节语言如中文、日文或韩文:应用于较新的应用程序中
X 可以显示包括 UTF-8 在内的许多编码并支持所有的字体。列表中包含了所有的 8-bit 字体和 16-bit 字体诸如中文、日文或韩文。其他 X 输入法, 第 9.7.10 节 机制支持多字节输入法。参阅多语言的 X 窗口系统范例, 第 9.7.9 节和支持 UTF-8 的 X 终端机, 第 9.7.12 节。
kon2
软件包可实现在 (S)VGA 图形化控制台中显示日文 EUC
编码。另一个替代品是 jfbterm
,它也使用 FB
控制台。在控制台环境里,必须由应用程序来提供对日文输入的支持。所以要为 Emacs
加装 egg
软件包,可使用日文化的 jvim
软件包作为 Vim
环境。
安装非 Unicode 字体到 X 就能在 X 下显示任何编码的文件。所以不用太担心字体的编码问题。
许多在 Debian 系统中显示的文本信息和文档被翻译成了各种译本,如出错信息、标准程序输出、菜单以及帮助页面。当前 Debian 支持德语、西班牙语、芬兰语、法语、匈牙利语、意大利语、日语、韩语、波兰语、葡萄牙语、汉语以及俄语帮助页面,可通过安装 manpages-LANG 软件包实现这些支持(此处 LANG 代表双位的 ISO 国家代码。使用 apt-cache search manpages-|less 获得可用的 Unix 帮助页面列表。)
要访问 NLS 帮助页面,用户必须将环境变量 LC_MESSAGES
设置成相应的字串。例如,要访问意大利语的帮助页面,需要将 LC_MESSAGES 设置成
it,这时 man
程序会在/usr/share/man/it/
目录下搜索帮助页面。
Debian 支持 locale 技术。locale 机制允许程序按照该地区惯例来提供输出和其它特殊功能如字符集、日期时间显示格式,货币符号等等。该机制使用环境变量来确定其相关的行为。例如,假设你同时在系统上安装了美式英语和法语 locales,许多程序的出错信息都以双语显示:
$ LANG="en_US" cat foo cat: foo: No such file or directory $ LANG="de_DE" cat foo cat: foo: Datei oder Verzeichnis nicht gefunden
Glibc 以函数库的形式向程序提供该功能的支持。参阅 locale(7)
。
完整的 locale 描述包括三个部分:xx_YY.ZZZZ。
xx: ISO 639 个语言代码(小写)
YY: ISO 3166 个国家代码(大写)
ZZZZ: 编码集,例如,字符集或编码标志。
关于语言代码和国家代码,请参阅 info gettext 中的相关描述。
请注意,为了完成跨平台的兼容性,这个编码集部分可能被“内部标准化”。移除了所有 -,把所有字符都转化成小写的。典型的编码集:
UTF-8: 适合所有区域的 Unicode 码,通常是 1-3 个八进制数(新的事实上的标准)
ISO-8859-1: western Europe (de facto old standard)
ISO-8859-2: eastern Europe (Bosnian, Croatian, Czech, Hungarian, Polish, Romanian, Serbian, Slovak, Slovenian)
ISO-8859-3: Maltese
ISO-8859-5: Macedonian, Serbian
ISO-8859-6: Arabic
ISO-8859-7: Greek
ISO-8859-8: Hebrew
ISO-8859-9: Turkish
ISO-8859-11: Thai (=TIS-620)
ISO-8859-13: Latvian, Lithuanian, Maori
ISO-8859-14: Welsh
ISO-8859-15: western Europe with euro
KOI8-R: Russian
KOI8-U: Ukrainian
CP1250: Czech, Hungarian, Polish (MS Windows origin)
CP1251: Bulgarian, Byelorussian (MS Windows origin)
eucJP: Unix style Japanese (=ujis)
eucKR: Unix style Korean
GB2312: Unix style Simplified Chinese (=GB, =eucCN) for zh_CN
Big5: Traditional Chinese for zh_TW
sjis: Microsoft style Japanese (Shift-JIS)
询问基本编码系统术语的意思:
ASCII: 7 bits (0-0x7f)
ISO-8859-?: 8 bits (0-0xff)
ISO-10646-1: Universal Character Set (UCS) (31 bits, 0-0x7fffffff)
UCS-2: First 16 bit of UCS as straight 2 Octets (Unicode: 0-0xffff)
UCS-4: UCS as straight 4 Octets (UCS: 0-0x7fffffff)
UTF-8: UCS encoded in 1-6 Octets (mostly in 3 Octets)
ISO-2022: 7 bits (0-0xff) with the escape sequence. ISO-2022-JP is the most popular encoding for the Japanese e-mail.
EUC: 8 bits + 16 bits combination (0-0xff), Unix style
Shift-JIS: 8 bits + 16 bits combination (0-0xff), Microsoft style.
ISO-8859-?、EUC、ISO-10646-1、UCS-2、UCS-4 和 UTF-8 对于 7 位的字符使用和 ASCII 相同的编码。 EUC or Shift-JIS uses high-bit characters (0x80-0xff) to indicate that part of encoding is 16 bit. UTF-8 also uses high-bit characters (0x80-0xff) to indicate non 7 bit character sequence bytes and this is the most sane encoding system to handle non-ASCII characters.
Please note the byte order difference of Unicode implementation:
Standard UCS-2, UCS-4: big endian
Microsoft UCS-2, UCS-4: little endian for ix86 (machine-dependent)
See 使用 recode
转化文本文件, 第 8.6.12 节 for conversion between various character sets.
For more see Introduction to
i18n
.
Debian 并不在系统中编译所有可用的 locales,检查
/usr/lib/locale
确定哪个
locales(除了默认的“C”)已在系统上编译安装。如果所需的 locale
并不在其中,有两个解决办法:
编辑 /etc/locale.gen
添加需要的 locale,然后以 root 身份运行
locale-gen
编译它。参阅
locale-gen(8)
以及该帮助页面中“SEE ALSO”一节所列的命令。
运行 dpkg-reconfigure locales 可以重新配置 locales
软件包。如果还没有安装 locales,locales 安装程序会调出 debconf
界面让你选择所需的 locales 并编译相关数据库。
相关的环境变量按如下次序将特定 locale 值赋给程序:
LANGUAGE:该环境变量由一个用冒号分隔、以优先级排序的地区名称列表组成。仅当 POSIX 地区值与“C”地区值相异时才使用到它[在 Woody 中;在 Potato 版本中通常其优先级高于 POSIX locale]。(GNU 扩展名)
LC_ALL:如果为非空值,其值将作用于所有 locale 项目。(POSIX.1)通常为“”(空值)。
LC_*:如果为非空值,其值将作用于相应的 locale 项目。(POSIX.1)通常为“C”。
LC_*变量有:
LC_CTYPE:字符分类和环境转换
LC_COLLATE:校正命令
LC_TIME:时间显示格式
LC_NUMERIC:非货币型数字格式
LC_MONETARY:货币符号
LC_MESSAGES:常规信息、诊断消息和交互响应信息的格式
LC_PAPER:纸张尺寸
LC_NAME:姓名格式
LC_ADDRESS:地址格式和地区信息
LC_TELEPHONE:电话号码格式
LC_MEASUREMENT:度量单位(公制或其它)
LC_IDENTIFICATION:有关地区信息的元数据
LANG:如果为非空值且 LC_ALL 也没有定义,则该值作用于所有没有定义的 LC_*地区项目。(POSIX.1)通常为“C”。
注意,有些应用程序(例如Netscape 4)忽略LC_*设置。
locale
程序可显示当前激活的地区设置和可用的 locale;参阅
locale(1)
。(注意:locale -a 将列出系统已知的所有的
locales;这并不代表它们都已在系统中编译了!参阅激活 locale 支持, 第 9.7.4 节。)
名为 en_DK “丹麦英语的” locale 提供了对国际标准日期格式
yyyy-mm-dd(ISO 8601日期格式)的支持(听起来有点搞笑:-))。它仅工作于
ls
的控制台屏幕。
将下列语句添加到 ~/.bash_profile
:
LC_CTYPE=en_US.ISO-8859-1 export LC_CTYPE
将下列语句添加到 ~/.bash_profile
:
LANG=fr_FR@euro export LANG LC_CTYPE=fr_FR@euro export LC_CTYPE
按键盘本地化, 第 9.7.1.1 节中描述的方法,将键盘设置成
French "AZERTY"。安装 manpages-fr
包添加法语帮助页面。US
中的 Right-Alt 键在 Europe
中称为Alt-Gr,它与其它键组成的组合键可用于输出大量特殊字符,例如 Alt-Gr+E
可以输出欧元符号。
可使用类似的方法配置绝大多数西欧语言环境。
参阅 Debian Euro
HOWTO
了解有关对新欧洲货币方面的支持,有关对法语环境的支持请参阅
Utiliser
et configurer Debian pour le français
。
让我们来创建一个多语言 X 窗口系统,能在不同的控制台中搭配 EUC、UTF-8 和 ISO-8859-1 来同时支持日语、英语、德语和法语。
我会向你展示用 Debian menu 系统进行的自定义设置。Debian menu 系统的详细信息参阅
/usr/share/doc/menu/html/index.html
。在例子中,我也创建了
mozilla
网络浏览器的快捷键。 [46]
使用本地化(localization), 第 9.7 节中描述的方法添加对日文 ja_JP.eucJP locale 和其他需要的 locale 的支持。
安装 Kana-to-Kanji 转换系统和字典(针对日语):
canna
– 本地服务器 (free bear license),或
freewnn-jserver
– 加入网络功能的服务器 (Public Domain)
安装日文输入系统(针对日语):
kinput2-canna
– X 下或
kinput2-canna-wnn
– X 下和
egg
– 在控制台下能搭配 Emacsen 直接输入日文(额外)
安装日文兼容终端机:
xterm
– X(支持 ISO-8859-1 和 UTF-8),
kterm
— X (支持日文 EUC),和
mlterm
— X (支持多语言)
添加全部日文字库包。(针对所有语言)
创建~/.xsession
,用户可通过配置它来指定X环境,如自定义 X 会话, 第 9.4.5.1 节中描述的(针对所有语言):
#!/bin/sh # This makes X work when I su to root. if [ -z "$XAUTHORITY" ]; then XAUTHORITY=$HOME/.Xauthority export XAUTHORITY fi # Set specific environment through debian menu system. # Reset locale unset LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES unset LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT unset LC_IDENTIFICATION LC_ALL LANG LANGUAGE PAGER # set locale default in X LANG=C # export locale export LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES export LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT export LC_IDENTIFICATION LC_ALL LANG LANGUAGE PAGER ### # activate input method for Japanese with kinput2 kinput2 & XMODIFIERS="@im=kinput2" export XMODIFIERS # How about blackbox window manager (lightweight) exec blackbox #exec xfwm #exec wmaker
在 ~/.bash_profile
中为 Linux 控制台设置 locale(针对所有语言)。
删除 ~/.bashrc
中的 locale 设置,如果其存在的话(针对所有语言)。
在 /etc/menu/
中建立新文件(针对所有语言)。
/etc/menu/xterm-local
:(在菜单中加入新项目) [47]
?package(xterm):\ needs=x11\ section=XShells\ longtitle="XTerm: terminal emulator (en_US.ISO-8859-1)"\ title="XTerm (en_US.ISO-8859-1)"\ command="sh -c 'LC_ALL=en_US.ISO-8859-1 xterm'" ?package(xterm):\ needs=x11\ section=XShells\ longtitle="XTerm: terminal emulator (de_DE.ISO-8859-1)"\ title="XTerm (de_DE.ISO-8859-1)"\ command="sh -c 'LC_ALL=de_DE.ISO-8859-1 xterm -T xterm-de'" ?package(xterm):\ needs=x11\ section=XShells\ longtitle="XTerm: terminal emulator for X with Unicode support (Japanese)"\ title="UXTerm (ja_JP.UTF-8)"\ command="sh -c 'LC_ALL=ja_JP.UTF-8 uxterm'"
/etc/menu/kterm
:(覆盖系统默认的) [48]
?package(kterm):\ needs="x11"\ section="XShells"\ command="sh -c 'LC_ALL=ja_JP.eucJP PAGER=w3m /usr/X11R6/bin/kterm -xim'" \ title="Kanji Terminal" ?package(kterm):\ needs="x11"\ section="XShells"\ command="sh -c 'LANG=ja_JP.eucJP \ LC_MESSAGES=en_US.ISO-8859-1 PAGER=w3m /usr/X11R6/bin/kterm -xim'" \ title="Kanji Terminal (bilingal)"
/etc/menu/mozilla-local
:(添加新的快捷键) [49]
?package(mozilla-browser):needs="x11" section="/" \ title=" Mozilla Navigator" command="mozilla-1.5" hints="Web browsers" \ icon=/usr/share/pixmaps/mozilla.xpm
以 root 帐号运行 update-menus
。
在 ~/.muttrc
中加入下列内容(针对日语):
# UTF-8 support is not popular in popular Japanese EMACS environment # 7 bit encoding of iso-2022-jp is easier for everyone # default encoding order = us-ascii --> iso-8859-1 --> iso-2022-jp set send_charset="us-ascii:iso-8859-1:iso-2022-jp" set allow_8bit=no
为 X 应用程序激活 XIM kinput2
(针对日语):
在 X 资源文件 ~/.Xresources
(不知何故,看上去 Debian
好象在自动配置它)添加 *inputMethod: kinput2 和
KTerm*VT100*OpenIm:true。
某些应用程序(如 mlterm
)也允许设置 *inputMethod:
和其它运行时的动态信息(在 mlterm
中按下
Ctrl-MouseButton-3)。
用 startx 或任何显示管理器(xdm、gdm、kdm、wdm...)启动 X(针对所有语言)
打开日文兼容应用程序:VIM6、(x)emacs21、mc-4.5、mutt-1.4...(针对日语)。 (通常 Emacs 是最流行的平台,尽管我不怎么用它。)
按“Shift+Space”可切换日文输入法。(针对日语)。
在本地化了的控制台中阅读本地化手册(针对所有语言)。
关于其他 CJK 语言的支持,参阅下面的章节和 SuSE pages for
CJK
。
还有许多其他可用的 X 输入法支援软件包:
Language LC_CTYPE XIM server XMODIFIERS Start key Japanese ja_JP* kinput2 "@im=kinput2" Shift-Space Korean ko_KR* ami "@im=Ami" Shift-Space Chinese(T) zh_TW.Big5 xcin "@im=xcin-zh_TW.big5" Ctrl-Space Chinese(S) zh_CN.GB2312 xcin "@im=xcin-zh_CN.GB2312" Ctrl-Space
日语输入法 kinput2
由软件包
kinput2-canna-wnn
、kinput2-canna
和
kinput2-wnn
提供。输入法还需要例如 canna
和
freewnn-jserver
这样的字典服务器才能使用。
还有许多 X 终端机支持 8-bit 编码,安装相应的字体就能正常显示:
xterm
– X 终端机
gnome-terminal
– Gnome 的 xterm
konsole
– KDE 的 xterm
rxvt
– VT102 终端 (lighter)
aterm
– Afterstep WM 的 VT102 终端
eterm
– Enlightment WM 的 VT102 终端
wterm
– WindowMaker WM 的 VT102 终端
在 UTF-8 编码的情况下,xterm
提供多编码的 X 终端的支持(支持 UTF-8 的 X 终端机, 第 9.7.12
节)。其他传统编码的支持还在开发中(2003
年时)。下面的软件包都提供了传统编码的支持:
aterm-ml
– Multi-lingual
kterm
– Multi-lingual (Japanese, ...)
rxvt-ml
– Multi-lingual
wterm-ml
– Multi-lingual
cxterm-big5
– Chinese (Trad., Big5)
cxterm-gb
– Chinese (Simp., GB)
cxterm-ks
– Chinese (KS)
cxterm-jis
– Japanese
hanterm-classic
– Korean (Hangul)
hanterm-xf
– Korean (Hangul)
hztty
– Chinese (GB, Big5, zW/HZ)
对于 kterm
(和其他终端),你可以通过在菜单上按下 Ctrl+鼠标中键来激活
XIM。
XFree86 4.x 的软件包 xterm
中的 X 终端机 uxterm
提供了对 UTF-8 的支持。它支持所有语言。它是 xterm(1)
程序的一个
wrapper,使得启动的 xterm 使用了“UXTerm”的 X 资源集。
例如,为了提供英文、俄文、日文、中文和韩文大字体的完美显示,需要在安装相应的字体后在
~/.Xresources
中添加下列内容:
! set large font UXTerm*font: -misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1 ! Use XIM for Japanese *inputMethod: kinput2
然后按照 X 资源, 第 9.4.10 节 中描述的,运行 xrdb -merge ~/.Xresources 来更新 X 资源。
虽然大部分的终端程序,例如 vim
、mutt
和
emacs
都已经能兼容 UTF-8 了(Woody-Sarge)。但是还有不少
mc
这样的程序不兼容 UTF-8,只支持 8-bit
编码。如果你编辑未知或者混合编码文件的 7-bit ASCII 部分,使用 locale
不敏感的支持 8-bit 的编辑器比较安全。
在 debian-installer
中 bterm
提供了在 FB 控制台对
UTF-8 的支持。
当你第一次在系统上安装“国家语言环境”(national language
environment)时,请注意使用 tasksel
或 aptitude
查看一下,在选择相关语言环境任务项时都有哪些软件包被选上了,这些选择信息非常有用特别是进行多语言设置时。如果遇到某些关联包与运行良好的系统上的某些软件发生冲突,就不要安装那些引起冲突的包。由于新装的软件比原来的软件具有更高的优先级,所以必须用
update-alternative
结合有关命令让系统恢复到原来状态。
大部分较新的使用 glibc2.2 的程序都已支持国际化了。所以不必再为诸如基于 VIM 的
jvim
等程序指定 loclae,因为 X 下的 vim
6.0
版已提供了该功能。事实上,比起另一个版本它显得有点粗糙,jvim
有个版本直接将日文输入法(canna
)支持编译进去了,而且还集成了大量成熟的日文特性,很值得你期待:-)
有时为了获得更好的工作环境,仅通过 locale
来配置程序是不够的。language-env
软件包和
set-language-env
命令可以大大简化你的工作。
亦可参阅有关国际化的文档Introduction to
i18n
,虽然其目标读者为开发人员但对系统管理员也十分有用。
由 language-env
等软件包所实现的本地化(localization), 第 9.7
节是以单一语言的本地化为目标的。这些软件包使用传统的文本编码(encoding)方式。你在这样的环境下不能在文本中混合使用法语和日语,因为它们分别使用
ISO-8859-1 和 EUC-JP 的编码方式,而这两种编码是不兼容的。
如果你选择在一个可用的 UTF-8 区域设置(locale)下启动 GNOME 或 KDE,你就可以得到一个多语言化的 UTF-8 桌面环境。在这样的环境下,只要你用的软件是符合 UTF-8 标准的,你就可以自由地混合使用英语,汉语,俄语,日语等各种文字。 [50]
在这样的环境下,最好使用基于 scim
的多语言化输入法。scim
所提供的各种输入法可以一起用 Ctrl-Space
开启或关闭。具体的输入法引擎可以通过点击 SCIM 面板来选择和切换。
vim
offers the multilingualized environment and can handle both
UTF-8 and conventionally encoded files (EUC-JP, ISO-8859-1, ...) when it is run
under the UTF-8 console such as gnome-teminal
. See vim help
message with pressing [Esc] and typing :help mbyte.txt.
[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一页 ]
Debian 参考手册
CVS, 星期四 一月 18 11:53:48 UTC 2007osamu#at#debian.org
iamlyoo#at#163.net
minghua#at#rice.edu
atzlinux#at#163.com
optical.dlz#at#gmail.com
xieyanbo#at#gmail.com
easthero#at#gmail.com