|
10 定制Debian GNU/Linux
--------------------------------------------------------------------------------
10.1 如何确定所有的程序使用的是相同的页面尺寸(paper size)
安装 libpaperg 软件包时,会询问整个系统的默认页面尺寸,设定会保存在/etc/papersize文件里。
用户可以不用理会使用PAPERSIZE 环境变量时的页面尺寸设置, 详见papersize(5)手册页.
--------------------------------------------------------------------------------
10.2 访问硬件设备的安全问题
/dev目录下的许多设备文件属于预先设定的组,例如/dev/fd0 属于floppy组,/dev/dsp 属于audio组.
如果要某个用户对设备有存取权限,只要将他加入设备所属组就可以了,即:
adduser user group
这样就不需要修改设备权限了。
--------------------------------------------------------------------------------
10.3 如何启动Debian时加载控制台字体
kbd 和 console-tools 软件包支持这种操作,编辑/etc/kbd/config 或 /etc/console-tools/config 文件.
--------------------------------------------------------------------------------
10.4 如何配置一个X11程序的默认值
Debian的X程序配置数据位于/etc/X11/app-defaults/目录下,如果你要定制一个X应用程序,把你的配置数据放在那些文件里,这样在升级时才不会被破坏。
--------------------------------------------------------------------------------
10.5 好像每个linux发行版都有不同的启动方式,告诉我Debian的方式
同所有的Unix一样,Debian启动时要执行init程序。init的配置文件(/etc/inittab)中指定的第一个执行脚本应该是/etc/init.d/rcS。该脚本执行/etc/rcS.d目录中各脚本的扩展名指定或衍生进程完成诸如检查并挂载文件系统、装载内核模块、启动网络服务、设定时钟等系统初始化工作。接着,为了兼容性考虑,它运行/etc/rc.boot目录下的文件(除了那些文件名中包含“.”的文件),目录中的脚本通常是供系统管理员使用的,用于有兼容性问题的软件包。
完成系统启动进程后,init执行默认运行级别(该运行级别由/etc/inittab中的id给出)指定的所有的启动脚本。同所有System V兼容Unix一样,Linux有7个运行级别:
·0(关闭系统),
·1(单用户模式 single-user mode),
·2到5(各种多用户模式 multi-user modes),
·6(重启系统)。
Debian系统运行id=2,它表示进入多用户模式时默认运行级别为2,所以将运行/etc/rc2.d中的脚本。
实际上,任意目录/etc/rcN.d中的脚本都是指向/etc/init.d/的符号链接。然而,每个/etc/rcN.d目录中文件的名称用来指定/etc/init.d相应脚本的运行方式。特别是,在进入任何运行级别之前,所有名称以“K”打头的脚本均被运行,这些脚本的工作是中止进程。然后,所有名称以“S”打头的脚本被运行,这些脚本的工作是启动进程。名称中跟在“K”或“S”后的两位数规定了脚本运行的先后次序,数字小的脚本先运行。 采用这种工作方式是因为/etc/init.d/中的脚本均有一个参数规定脚本“start”、“stop”、“reload”、“restart”或“force-reload”,脚本按各自参数的赋值执行任务。这些脚本甚至可以在系统启动后用来控制各种进程。
例如,使用带“reload”参数的命令:
/etc/init.d/sendmail reload
发给sendmail daemon进程一个信号,要它重读配置文件。
--------------------------------------------------------------------------------
10.6 好像Debian不使用rc.local定制启动过程;那么提供了什么工具?
假设系统要在启动时运行foo脚本,或进入指定的(System V)运行级别。那系统管理员可以这样:
·1.将foo脚本加入/etc/init.d/目录。
·2.使用合适的参数运行Debian命令update-rc.d,这样就在(命令行指定的)rc?.d目录和/etc/init.d/foo之间建立了链接,这里?是0到6中的一个数字,对应于System V的各个运行级别。
·3.重启系统。
update-rc.d命令会建立rc?.d目录中文件与/etc/init.d/目录中脚本的链接,每个链接名会以“S”或“K”打头,接下来是一个数字,再就是脚本名。/etc/rcN.d/中以“S”打头的脚本在系统进入运行级别N时被执行。以“K”打头的脚本在离开运行级别N时被执行。
还可以这样来做,将脚本放在/etc/init.d/下然后使用update-rc.d foo default 19建立链接,让foo脚本在系统启动期间执行。参数defaults指默认运行级别,它可以是2到5中某个值。参数19确保foo在其它参数大于20的脚本之前执行。
--------------------------------------------------------------------------------
10.7 软件包管理工具怎样处理非Debian格式的包
有些用户可能想建立一个由Debian格式的包和非Debian格式的包混合组成的服务器,通常这不是一个好主意,因为dpkg无法了解非Debian格式包的配置文件,因此在软件包升级时可能会出现冲突。
可以创建一个非Debian格式的包, 修改其配置文件所属组为Debian软件包所属组,这样dpkg和其它的软件包管理系统就能识别本地系统管理员对于这个文件所作的修改,并且在升级时不会覆盖调它们。
--------------------------------------------------------------------------------
10.8 不同版本软件包的文件的替代
假设系统管理员或本地用户想使用"login-local"而不是Debian提供的登录程序"login"
不要这样做:
·用login-local将/bin/login覆盖掉
包管理系统并不知道这个变化,当login(或其它依赖/bin/login的包)安装或升级时,你定制的/bin/login 就会被覆盖掉.
应该是:
·运行:
dpkg-divert --divert /bin/login.debian /bin/login
使将来Debian的login包安装时,写入 /bin/login.debian 而不是/bin/login
·然后:
cp login-local /bin/login
将你定制的程序移到相应位置.
Debian提供了 dpkg-divert(8)手册页.
--------------------------------------------------------------------------------
10.9 如何让Debian的包管理系统管理非Debian格式软件包
执行:
dpkg-scanpackages BIN_DIR OVERRIDE_FILE [PATHPREFIX] > my_Packages
其中:
·BIN-DIR指Debian格式软件包(通常扩展名为.deb)的存放路径。
·OVERRIDE_FILE 这个文件由发行版的维护者编辑,对于 "main" 发行版中的软件包,通常保存在 Debian Ftp 文档的 indices/override.main.gz中。对于非Debian 格式软件包,可以忽略这个文件。
·PATHPREFIX 是一个可选字符串,在制作?my_Packages 文件时可以预先考虑。
使用如下命令告诉软件包管理系统关于你的非Debian格式软件包的信息:
dpkg --merge-avail my_Packages
如果你使用APT,也可以把本地源加入你的sources.list文件.
--------------------------------------------------------------------------------
10.10 Debian对不同喜好的支持
有这样一些情况,两个不同的软件包提供了相同的基本功能,一些用户因为习惯问题,或者感觉界面比较友好选择其中一个,而使用同一系统的另一些用户却有不同的选择.
Debian使用虚拟软件包系统,当有两个或两个以上包提供相同的基本功能时, 而没有指定特殊依赖时,使得系统管理员(或用户)可以选择他们喜欢的工具。
例如,系统中可能存在两个不同版本的新闻阅读器.新闻服务器可能需要系统中新闻阅读器的支持,但是选tin还是trn就有用户决定了,因为tin和trn提供的news-reader虚拟包都能满足要求,通过指向所选文件(如/usr/bin/trn)的称作/etc/alternatives/news-reader 虚拟包的一个连接来调用该程序。
单个的连接并不能满足所有程序的要求,通常系统中提供同一虚拟包的软件了安装了多个,Perl脚本update-alternatives 提供了一个方法指定一个软件包作为系统的默认
例如检查可用的`x-window-manager':
update-alternatives --display x-window-manager
要更改,则:
update-alternatives --config x-window-manager
然后屏幕等待指令(敲入一个数字,选择你喜欢的).
如果以为自身的原因,没有注册为窗口管理器(比如存在一个错误),或你使用了/usr/locale目录下的窗口管理器,屏幕上可能没有你要的选择,可以使用如下命令:
update-alternatives --install /usr/bin/x-window-manager \
x-window-manager /usr/local/bin/wmaker-cvs 50
`--install' 选项的第一个参数是指向/etc/alternatives/NAME的一个符号连接,NAME是第二个参数,第三个参数是 /etc/alternatives/NAME 指向的程序,第四个参数是优先级(值越大运行的可能性越大).
运行:
update-alternatives --remove x-window-manager /usr/local/bin/wmaker-cvs
来删除你的添加.
-------------------------
The Debian GNU/Linux FAQ
version CVS, 14 February 2003
Authors, Section 15.1
中文翻译: eTony e-an@sohu.com
2003.05.1
2003.05.10校对 |
|