Debian参考手册读书摘要
Debian参考手册笔记
第1章 GNU/Linux教程
1.1.1 欢迎提示
/etc/motd中保存非GUI登录时的欢迎提示信息
Debian GNU/Linux jessie/sid foo tty1
foo login: penguin
Password:
Last login: Mon Sep 23 19:36:44 JST 2013 on tty3
Linux snoopy 3.11-1-amd64 #1 SMP Debian 3.11.6-2 (2013-11-01) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
foo:~$
1.1.6 虚拟控制台间切换
非GUI环境下,Alt键和F1—F6之一的键在虚拟控制台间切换。如果处于X Window系统中,你可以通过Ctrl+Alt+F1键前往字符控制台1,你可以按下Alt+F7回到X Window System,它一般运行在虚拟控制台7。
1.1.8 关机命令
在普通多用户模式模式下,可以使用命令行关闭系统。
shutdown -h now
在单用户模式下,可以使用命令行关闭系统。
poweroff -i -f
1.1.11 添加删除用户
adduser xiaozhiguo
deluser --remove-home xiaozhiguo
1.1.12 sudo配置
对于典型的单用户工作站,例如用户penguin只需输入用户密码而非root密码就能获得管理员权限。
# echo "penguin ALL=(ALL) ALL" >> /etc/sudoers
另外,可以使用下列命令使非特权用户(例如用户penguin)无需密码就获得管理员权限。
# echo "penguin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
1.2.1 UNIX文件基础
根目录意味着文件系统的根,简单的称为“/”,不要把它跟root用户的家目录“/root”混淆了。
1.2.3 文件系统权限
ls -l输出的第一个字符列表
字符 | 说明 |
---|---|
- | 普通文件 |
d | 目录 |
l | 符号链接 |
c | 字符设备节点 |
b | 块设备节点 |
p | 命名管道 |
s | 套接字 |
类Unix系统的文件系统权限被定义给三类受影响的用户。
- 拥有这个文件的用户(u)
- 这个文件所属组的其他用户(g)
- 所有其余的用户(o),同样称为“世界”和“所有人”
对文件来说,每个对应权限允许下列动作。
- 可读(r)权限允许所有者检查文件的内容。
- 可写(w)权限允许所有者修改文件内容。
- 可执行(x)权限允许所有者把文件当做一个命令运行。
对于目录来说,每个对应权限允许下列动作。
- 可读(r)权限允许所有者列出目录内的内容。
- 可写(w)权限允许所有者添加或删除目录里面的文件。
- 可执行(x)权限允许所有者访问目录里的文件。
chown用于root账户修改文件的所有者。
chgrp用于文件的所有者或root账户修改文件所属的组。
chmod用于文件的所有者或root账户修改文件和文件夹的访问权限。
操作一个foo文件的基本语法如下 。
# chown <newowner> foo
# chgrp <newgroup> foo
# chmod [ugoa][+-=][rwxXst][,...] foo
例如,你可以按照下面使一个目录树被用户foo所有,并共享给bar。
# cd /some/location/
# chown -R foo:bar .
# chmod -R ug+rwX,o=rX
有三个更加特殊的权限位。
- Set-User-ID(SUID)位( s或S替换用户的x)
- Set-Group-ID(SGID)位( s或S替换组的x)
- 粘滞位( t或T替代其他用户的x)
如果“ls -l”对这些位的输出是大写字母,则表示这些输出下面的执行位未设置。给一个可执行文件设置Set-User-ID位将允许一个用户以他自己的ID运行这个可执行文件(例如root用户)。类似的,给一个可执行文件设置了Set-Group-ID位将允许一个用户以文件所属组的ID运行该文件。(例如root组)。由于这些设置可能导致安全风险,设置它们为可用的时候需要格外留意。
在一个目录上设置“Set-Group-ID”将打开类 BSD 的文件创建计划,所有在目录里面创建的文件将属于目录所属的组。给一个目录设置“粘滞位”将保护该目录内的文件不被其所有者之外的一个用户删除。为了保护一个在像“/tmp”这样所有人可写或同组可写的目录下文件内容的安全,不仅要去除可写权限,还要给其所在目录设置粘滞位。否则,该文件可以被任意对其所在目录有写权限的用户删除并创建一个同名的新文件。
chmod命令文件权限的数字模式
数字 | 说明 |
---|---|
第一个可选数字 | Set-User-ID (=4), Set-Group-ID (=2) 和 粘滞位 (=1) 之和 |
第二个数字 | 用户的可读 (=4), 可写 (=2)和 可执行 (=1) 权限之和 |
第三个数字 | 组权限同上 |
第四个数字 | 其他用户权限同上 |
1.2.7 链接
有两种方法把一个文件“foo”链接到一个不同的文件名“bar”。
- 硬链接,对现有文件重复名称,如:ln foo bar
- 符号链接或软链接或symlink,通过名字指向另一个文件的特殊文件,如:ln -s foo bar
$ echo "Original Content" > foo
$ ls -li foo
1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 foo
$ ln foo bar # 硬链接
$ ln -s foo baz # 符号链接
$ ls -li foo bar baz
1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 bar
1450180 lrwxrwxrwx 1 penguin penguin 3 Oct 16 21:47 baz -> 2 foo
1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 foo
$ rm foo
$ echo "New Content" > foo
$ ls -li foo bar baz
1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 bar
1450180 lrwxrwxrwx 1 penguin penguin 3 Oct 16 21:47 baz -> 4 foo
1450183 -rw-rw-r-- 1 penguin penguin 12 Oct 16 21:48 foo
$ cat bar
Original Content
$ cat baz
New Content
- 硬链接可以在同一个文件系统内创建,并共用同一个inode号,由ls(1)带 “-i”选项显示的。
- 符号链接总是名义上具有“rwxrwxrwx”的文件访问权限,如上面例子所示,实际的有效访问权限由它所指向的文件确定。
- 通常使用符号链接比使用硬链接更合适,除非你有一个好理由使用硬链接。
- “.”目录链接到它所在的目录,因此任何新建目录的链接数从2开始。 “…”目录链接到父目录,因此目录的链接数随着新的子目录的创建而增加。
1.2.12. procfs 和 sysfs
procfs和sysfs两个伪文件系统,分别加载于"/proc"和"/sys"之上,将内核中的数据结构暴露给用户空间。或者说,这些条目是虚拟的,他们打开了深入了解操作系统运行的方便之门。
目录"/proc"为每个正在运行的进程提供了一个子目录,目录的名字就是进程标识符(PID)。需要读取进程信息的系统工具,如ps,可以从这个目录结构获得信息。"/proc/sys"之下的目录,包含了可以更改某些内核运行参数的接口。(你也可以使用专门的sysctl()命令修改,或者使用其预加载/配置文件"/etc/sysctl.conf"。)当人们看到这个特别大的文件"/proc/kcore"时,常常会惊慌失措。这个文件于你的的电脑内存大小相差不多。它被用来调试内核。它是一个虚拟文件,指向系统内存,所以不必担心它的大小。"/sys"以下的目录包含了内核输出的数据结构,它们的属性,以及它们之间的链接。它同时也包含了改变某些内核运行时参数的接口。
1.5.2. “$LANG”变量
“$LANG”变量的完整的语言环境值由3部分组成:“xx_YY.ZZZZ”。
语言环境值 | 说明 |
---|---|
xx | ISO639 语言代码(小写)例如“en” |
YY | ISO3166 国家代码(大写)例如“US” |
ZZZZ | 编码,总是设置为“UTF-8” |
1.5.3. "$PATH"变量
当你在Shell里输入命令的时候,Shell会在"$PATH"变量所包含的目录列表里进行搜索,"$PATH"变量的值也叫作Shell的搜索路径。
可以在Bash脚本文件"/.bash_profile"或"/.bashrc"中改变"$PATH"环境变量的值。
1.5.7. 命令的返回值
每个命令都会返回它的退出状态(变量:“$?”)作为返回值。
命令的退出状态 | 数字返回值 | 逻辑返回值 |
---|---|---|
success | zero, 0 | TRUE |
error | non-zero, -1 | FALSE |
1.5.8. 典型的顺序命令和shell重定向
命令常见用法 | 说明 |
---|---|
command & | 在子 shell 的后台 中执行 command |
command1 | command2 | 通过管道将command1的标准输出作为command2的标准输入( 并行执行) |
command1 2>&1 command2 | 通过管道将command1的标准输出和标准错误作command2 的标准输入( 并行执行) |
command1 ; command2 | 按顺序执行 command1 和 command2 |
command1 && command2 | 执行command1;如果成功,按顺序执行command2(如果 command1和command2 都执行成功了,返回 success ) |
command1 || command2 | 执行 command1;如果不成功,按顺序执行command2(如果command1或command2 执行成功,返回success) |
command > foo | 将command的标准输出重定向到文件foo(覆盖) |
command 2> foo | 将command的标准错误重定向到文件foo(覆盖) |
command >> foo | 将command的标准输出重定向到文件foo(附加) |
command 2>> foo | 将command的标准错误重定向到文件foo(附加) |
command > foo 2>&1 | 将command的标准输出和标准错误重定向到文件foo |
command < foo | 将command的标准输入重定向到文件foo |
预定义的文件描述符
设备 | 说明 | 文件描述符 |
---|---|---|
stdin | 标准输入 | 0 |
stdout | 标准输出 | 1 |
stderr | 标准错误 | 2 |
1.5.9. 命令别名
$ alias la='ls -la'
你可以使用 alias 来列出所有的别名。
可以使用 type 来确认命令的准确路径或类型。
1.6.2. 正则表达式
使用基础的正则表达式(BRE )
- grep(1) 匹配满足pattern的文本。
- ed(1) 是一个原始行编辑器。
- sed(1) 是一个流编辑器。
- vim(1) 是一个屏幕编辑器。
- emacs(1) 是一个屏幕编辑器。(有些扩展的BRE)
使用扩展的正则表达式(ERE)
- egrep(1) 匹配满足多个 pattern 的文本。
- awk(1) 进行简单的文本处理。
- tcl(3tcl) 可以进行任何你想得到的文本处理:参见 re_syntax(3) 。经常与tcl(3tk) 一起使用。
- perl(1) 可以进行任何你想得到的文本处理。参见 perlre(1) 。
- pcregrep 软件包中的 pcregrep(1) 可以匹配满足 Perl 兼容正则表达式(PCRE) 模式的文本。
BRE | ERE | 正则表达式的描述 |
---|---|---|
\ . [ ] ^ $ * | \ . [ ] ^ $ * | 通用的元字符 |
\+ ? ( ) { } | | BRE独有的“\”转义元字符 | |
+ ? ( ) { } | | ERE独有的不需要“\”转义的元字符 | |
c | c | 匹配非元字符 “c” |
\c | \c | 匹配一个字面意义上的字符“c”,即使“c”本身是元字符 |
. | . | 匹配任意字符,包括换行符 |
^ | ^ | 字符串的开始位置 |
$ | $ | 字符串的结束位置 |
< | < | 单词的开始位置 |
> | > | 单词的结束位置 |
[abc…] | [abc…] | 匹配在“abc…”中的任意字符 |
[^abc…] | [^abc…] | 匹配除了“abc…”中的任意字符 |
r* | r* | 匹配零个或多个“r” |
r\+ | r+ | 匹配一个或多个“r” |
r\? | r? | 匹配零个或一个“r” |
r1\ | r2 | r1|r2 |
\(r1\ | r2\) | (r1|r2) |
第2章 Debian软件包管理
2.5.8. Debian软件包文件名称
Debian软件包的名称结构
软件包类型 | 名称结构 |
---|---|
二进制软件包(亦称 deb) | <package-name>_<epoch>:<upstream-version>-<debian.version>-<architecture>.deb |
用于debian-installer的二进制软件包(亦称udeb) | <package-name>_<epoch>:<upstream-version>-<debian.version>-<architecture>.udeb |
源代码软件包(上游源代码) | <package-name>_<epoch>:<upstream-version>-<debian.version>.orig.tar.gz |
1.0源代码软件包(Debian 改变) | <package-name>_<epoch>:<upstream-version>-<debian.version>.diff.gz |
3.0 (quilt 补丁管理工具)源代码软件包(Debian 改变) | <package-name>_<epoch>:<upstream-version>-<debian.version>.debian.tar.gz |
源代码软件包(说明) | <package-name>_<epoch>:<upstream-version>-<debian.version>.dsc |
Debian软件包名称中每一个组件可以使用的字符
名称组件 | 可用的字符(正则表达式) | 存在状态 |
---|---|---|
<package-name> | [a-z,A-Z,0-9,.,+,-]+ | 必需 |
<epoch>: | [0-9]+: | 可选 |
<upstream-version> | [a-z,A-Z,0-9,.,+,-,:]+ | 必需 |
<debian.version> | [a-z,A-Z,0-9,.,+,~]+ | 可选 |
第3章 系统初始化
3.1 启动过程概述
典型的启动过程像是一个四级的火箭。每一级火箭将系统控制权交给下一级。
- 第一阶段: BIOS
- 第二阶段:引载加载程序
- 第三阶段:迷你 Debian 系统
- 第四阶段:常规 Debian 系统
3.1.1. 第一阶段: BIOS
BIOS 是启动过程的第一阶段,在上电事件后开始。 CPU 的程序计数器在上电事件后被初
始化为一个特定的内存地址,驻留在只读存储器( ROM) 中的 BIOS 就是从这个特定的内
存地址开始执行。
3.1.2. 第二阶段:引载加载程序
引导加载程序是启动过程的第二阶段,由 BIOS 启动。引导加载程序将系统内核映像和
initrd 映像加载到内存并将控制权交给它们。 initrd 映像是根文件系统映像,其支持程度
依赖于所使用的引导加载程序。
debian系统默认将PC平台的GRUB引导加载程序的第一阶段代码安装在MBR中。
传统 GRUB 的菜单配置文件位于/boot/grub/menu.lst。例如,文件中有如下的配置条目。
title Debian GNU/Linux
root (hd0,2)
kernel /vmlinuz root=/dev/hda3 ro
initrd /initrd.img
GRUB 第 2 版的菜单配置文件位于 /boot/grub/grub.cfg。此文件由/usr/sbin/updategrub 根据 "/etc/grub.d/*“中的模板及”/etc/default/grub"中的设置自动生成。例
如,文件中有如下的配置条目。
menuentry "Debian GNU/Linux" {set root=(hd0,3)
linux /vmlinuz root=/dev/hda3
initrd /initrd.img
}
GRBU参数 | 说明 |
---|---|
root | 使用主磁盘的第3个分区,在传统GRUB中将此参数设置为(hd0,2),在GRUB第2版中将此参数设置为(hd0,3) |
kernel | 使用位于/vmlinuz的内核,同时将root=/dev/hda3 ro作为参数传递给内核 |
initrd | 使用位于/initrd.img的initrd/initramfs 映像 |
传统 GRUB 使用的分区号为Linux内核及各种实用工具使用的分区号减1。GRUB第2版修复了这个问题。
如果使用了GRUB,内核的启动参数可以在/boot/grub/grub.cfg里面设置。在Debian系统里,你不应该直接编辑/boot/grub/grub.cfg。你可以通过编辑/etc/default/grub文件中GRUB_CMDLINE_LINUX_DEFAULT的值并运行update-grub(8)来更新/boot/grub/grub.cfg。
3.1.3. 第三阶段:迷你Debian系统
迷你Debian系统是启动流程的第三阶段,由引导加载程序启动。它会在内存中运行系统内核和根文件系统。这是启动流程的一个可选准备阶段。
“迷你Debian系统”是笔者自创的术语,用于在本文档中描述启动流程的第三个阶段。这个系统通常被称为initrd或initramfs系统。内存中类似的系统在Debian安装程序中使用。
/init程序是内存中的根文件系统上执行的第一个程序。这个程序在用户空间把内核初始化,并把控制权交给下一阶段。迷你Debian系统能够在主引导流程之前添加内核模块或以加密形式挂载根文件系统,使引导流程更加灵活。
- 如果initramfs是由initramfs-tools创建,则"/init"程序是一个shell脚本程序。
- 通过给内核添加“break=init"等启动参数,你可以中断这部分启动流程以获取root shell。更多中断条件请参见 ”/init“脚本。这个shell环境已足够成熟,你可通过它很好地检查机器的硬件。
- 迷你 Debian 系统中可用的命令是精简过的,且主要由一个称为busybox(1)的GNU工具提供。
- 如果initramfs是由dracut创建,则"/init"程序是一个二进制systemd程序。
3.1.4. 第四阶段:常规Debian系统
常规Debian系统是启动流程的第四阶段,由迷你Debian系统启动。迷你Debian系统的内核在此环境下继续运行。根文件系统将由内存切换到实际的硬盘文件系统上。
init程序是系统执行的第一个程序( PID=1),它启动其它各种程序以完成主引导流程。init程序的默认路径是”/sbin/init“,但可通过内核启动参数修改,例如”init=/path/to/init_program"。
你的系统中实际使用的init命令可以使用 “ps --pid 1 -f”命令确认。
在Debian jessie版本后,"/sbin/init"是一个到"/lib/systemd/systemd"的符号链接。
3.2. Systemd初始化
本节描述系统是怎样通过PID=1的systemd(1)程序来启动(即初始化进程)。
systemd初始化进程基于单元配置文件(参见systemd.unit(5))来并行派生进程,这些单元配置文件使用声明样式来书写,代替之前的类SysV的过程样式。 这些单元配置文件从下面的一系列路径来加载 (参见systemd-system.conf(5))
- “/lib/systemd/system”: OS 默认配置文件
- “/etc/systemd/system”: 系统管理员的配置文件,它将忽略操作系统默认的配置文件 "
- “/run/systemd/system”: 运行时产生的配置文件,它将忽略安装的配置文件
他们的相互依赖关系通过"Wants=", “Requires=”, “Before=”, "After=“等指示来配置, (参见systemd.unit(5)里的"MAPPING OF UNIT PROPERTIES TO THEIR INVERSES”)。资源控制也是被定义(参见 systemd.resource-control(5)).
- *.service 描述由 systemd 控制和监管的进程.参见 systemd.service(5).
- *.device 描述在 sysfs(5) 里面作为 udev(7) 设备树展示的设备。参见systemd.device(5).
- *.mount 描述由 systemd 控制和监管的文件系统挂载点。参见 systemd.mount(5).
- *.automount 描述由 systemd 控制和监管的文件系统自动挂载点。参见systemd.automount(5).
- *.swap 描述由 systemd 控制和监管的 swap 文件或设备。参见 systemd.swap(5).
- *.path 描述被 systemd 监控的路径,用于基于路径的活动。参见systemd.path(5).
- *.socket 描述被 systemd 控制和监管的套接字,用于基于套接字的活动。参见systemd.socket(5).
- *.timer 描述被 systemd 控制和监管的计时器,用于基于时间的活动。参见systemd.timer(5).
- *.slice 管理 cgroups(7) 的资源。参见 systemd.slice(5).
- *.scope 使用 systemd 的总线接口来程序化的创建,用以管理一系列系统进程。参见systemd.scope(5).
- *.target 把其它单元配置文件分组,在启动的时候,来创建同步点。参见systemd.target(5).
系统启动时(即,init),systemd进程会尝试启动"/lib/systemd/system/default.target(通常是到"graphical.target"的符号链接)。首先,一些特殊的target单元(参见 systemd.special(7)),比如 “localfs.target”、 "swap.target"和"cryptsetup.target"会被引入以挂载文件系统。之后,其它target 单元也会根据单元依赖关系而被引入。详细情况,请阅读 bootup(7)。
3.2.4 内核消息
在控制台上显示的内核错误信息,能够通过设置他们的阈值水平来配置。
# dmesg -n3
错误级别值 | 错误级别名称 | 说明 |
---|---|---|
0 | KERN_EMERG | 系统不可用 |
1 | KERN_ALERT | 行为必须被立即采取 |
2 | KERN_CRIT | 危险条件 |
3 | KERN_ERR | 错误条件 |
4 | KERN_WARNING | 警告条件 |
5 | KERN_NOTICE | 普通但重要的条件 |
6 | KERN_INFO | 信息提示 |
7 | KERN_DEBUG debug | 级别的信息 |
3.2.5. 系统消息
在systemd下, 内核和系统的信息都通过日志服务systemd-journald.service(又名journald)来记录,放在"/var/log/journal"下的不变的二进制数据,或放在"/run/log/journal/"下的变化的二进制数据.这些二进制日志数据,可以通过journalctl(1) 命令来访问。
3.2.6. systemd下的系统管理
systemd不仅仅提供系统初始化,还提供通用的系统管理功能。比如说日志记录,登录
管理,时间管理,网络管理等等。
- systemd(1) 通过几个命令来管理:
- systemctl(1) 命令控制 systemd 的系统和服务管理器(命令行) ,
- systemsdm(1) 命令控制 systemd 的系统和服务管理器(图形界面),
- journalctl(1) 命令查询 systemd 日志,
- loginctl(1) 命令控制 systemd 登录管理器,
- systemd-analyze(1) 分析系统启动性能。
第4章 一般的Unix认证
4.1. 一般的Unix认证
一般的Unix认证由PAM(Pluggable Authentication Modules,即可插入的验证模块)下的pam_unix(8)模块提供。它的3个重要文件如下,其内的条目使用 “:” 分隔。
文件 | 权限 | 用户 | 组 | 说明 |
---|---|---|---|---|
/etc/passwd | -rw-r–r-- | root | root | (明文的)用户账号信息 |
/etc/shadow | -rw-r----- | root | shadow | 安全加密的用户账号信息 |
/etc/group | -rw-r–r-- | root | root | 组信息 |
“/etc/passwd”包含下列内容。
...
user1:x:1000:1000:User1 Name,,,:/home/user1:/bin/bash
user2:x:1001:1001:User2 Name,,,:/home/user2:/bin/bash
...
如 passwd(5) 中所述,这个文件中被 “:” 分隔的每项含义如下。
- 登录名
- 密码形式说明
- 数字形式的用户 ID
- 数字形式的组 ID
- 用户名或注释字段
- 用户家目录
- 可选的用户命令解释器
“/etc/passwd” 的第二项曾经被用来保存加密后的密码。在引入了 “/etc/shadow” 后,该项被用来说明密码形式。
内容 | 说明 |
---|---|
(空) | 无需密码的账号 |
x | 加密后的密码保存在 “/etc/shadow” |
* | 无法登陆的账号 |
! | 无法登陆的账号 |
“/etc/shadow” 包含下列内容。
...
user1:$1$Xop0FYH9$IfxyQwBe9b8tiyIkt2P4F/:13262:0:99999:7:::
user2:$1$vXGZLVbS$ElyErNf/agUDsm1DehJMS/:13261:0:99999:7:::
...
如shadow(5)中所述,这个文件中被 “:” 分隔的每项含义如下。
- 登录名
- 加密后的密码(开头的 “111” 表示使用 MD5 加密。 “*” 表示无法登陆。)
- 最后一次修改密码的时间,其表示从 1970 年 1 月 1 日起的天数
- 允许用户再次修改密码的天数间隔
- 用户必须修改密码的天数间隔
- 密码失效前的天数,在此期间用户会被警告
- 密码失效后的天数,在次期间密码依旧会被接受
- 账号失效的时间,其表示从1970年1月1日起的天数
“/etc/group” 包含下列内容。
group1:x:20:user1,user2
如 group(5) 中所述,这个文件中被 “:” 分隔的每项含义如下。
- 组名称
- 加密后的密码(不会被真正使用)
- 数字形式的组 ID
- 使用“,”分隔的用户名列表
第7章 X窗口系统
7.2. 设置桌面环境
一个桌面环境通常是一个X窗口管理器、一个文件管理器和一套兼容的实用程序组合而成。
7.2.2. Freedesktop.org菜单
每个遵从Freedesktop.org xdg菜单的软件包都会将由“*.desktop”提供的菜单数据安装到 “/usr/share/applications/”下。
第8章 国际化和本地化
一个应用软件的多语言化(M17N)或本地语言支持,通过2个步骤完成。
- 国际化 (I18N): 使一个软件能够处理多个语言环境。
- 本地化 (L10N):使一个软件处理一个特定的语言环境
在multilingualization(多语言化)、internationalization(国际化)和localization(本地化)中,有17,18,或10等字母在"m"和"n",“i"和"n”,或"l"和"n"中间,它们相应表示为M17N,I18N和L10N.
理解:i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。
GNOME和KDE等现代软件是多语言的。他们通过处理 UTF-8 数据来实现国际化,并通过gettext(1) 架构提供翻译信息来本地化。翻译信息可以由独立的本地化软件包来提供。翻译信息易于选择使用,通过给相关的环境变量设置适当的语言环境即可。
8.1. 键盘输入
Debian系统可以使用keyboard-configuration和console-setup 软件包配置多个国际化键盘布局。
# dpkg-reconfigure keyboard-configuration
# dpkg-reconfigure console-setup
这将配置X窗口的键盘和Linux控制台,并更新“/etc/default/keyboard”和“/etc/default/console-setup”中的配置参数。这也可以用来配置Linux控制台的字体。
8.4.1. 编码的基础知识
环境变量“LANG=xx_YY.ZZZZ”将语言环境设置为语言代码“xx”、国家代码“YY”和编码“ZZZZ”。
现在的Debian系统一般将语言环境设置为 “LANG=xx_YY.UTF-8”。这将会使用带有Unicode字符集的UTF-8编码。
8.4.2. UTF-8语言环境的基本原理
Unicode字符集可以用从0到10FFFF(十六进制)范围的码点来显示几乎所有人类已知的字符。它的存储至少需要21位。
文本编码系统UTF-8将Unicode码点适配到一个合理的8位数据流,并兼容ASCII数据处理系统。
UTF表示Unicode转换格式(Unicode Transformation Format)。
Debian参考手册读书摘要相关推荐
- Star Schema完全参考手册读书笔记八
本博客主要对书中横向钻取进行归纳总结. 横向钻取: 与对数据的上钻或下钻操作无关,它描述的是跨越一个星型模式到另外一个星型模式的步骤.该术语意在描述跨多个过程. 尽管横向钻取操作通常被称为横向钻取查询 ...
- Star Schema完全参考手册读书笔记五
本博客就第三章缓慢变化维和多维数据集的有关知识进行总结. 缓慢变化维 采用维度设计方案时,确定数据源的变化情况在维度表中如何表示非常重要.这一现象称为缓慢变化的维度,简称缓慢变化维.该术语的名称反映了 ...
- Star Schema完全参考手册读书笔记四
本博客主要内容为对书中第三章事实表特性的知识的总结. 事实表特性主要包括粒度.可加性.稀疏性和退化维. 事实表特性 事实分为可加事实,半可加事实和非可加事实. 每个事实表通过获取描述业务过程的度量来表 ...
- Star Schema完全参考手册读书笔记三
本博客重点总结第三章基本原理中的维度表特性. 维度表特性 代理键 星型模式中,每个维度表都分配有一个代理键.代理键仅仅是为数据仓库和数据集市创建的.代理键通常表现为整数,在星型模式加载时的获取.转换. ...
- Star Schema完全参考手册读书笔记二
本博客继续就书中的一些术语和概念进行总结. 数据仓库体系结构 数据仓库描述任何包含分析型数据库的解决方案,包括独立型数据集市.该术语并不表示一个中心或集成仓库. 企业数据仓库指的是企业信息化工厂的中央 ...
- Star Schema完全参考手册读书笔记一
分析型数据库与维度设计 本章主要讲述星型模式中的一些基本概念,具体如下文. 为业务过程度量建模可以实现分析型数据库设计复杂的业务分析工作.业务过程的维度模型由两个组件构成:度量和度量环境.这些组件也称 ...
- Sphinx 0.9.9/Coreseek 3.2 参考手册
Sphinx 0.9.9/Coreseek 3.2 参考手册 Sphinx--强大的开源全文检索引擎,Coreseek--免费开源的中文全文检索引擎 Copyright © 2006-2010 (co ...
- 简明 XHTML 1.0 参考手册
http://lamp.linux.gov.cn/WebStandard/short_xhtml_10_ref.html 简明 XHTML 1.0 参考手册 作者:金步国 版权声明 本文作者是一位自由 ...
- 信息安全完全参考手册之本书框架(目录)
文章目录 背景 计划 背景 其实吧,自己蛮失败的,转行网络安全也有6年了,水平还是停留在安服仔的层面.(主要是年纪上来了)只能请教大神指点一二,得到启示之后开启了读书笔记之旅,加强自身对网络安全管理. ...
最新文章
- SQL应用中级指南 Part4:(数据字典)
- android自动化优化工具,一键自动优化系统大师下载
- 70. Leetcode 701. 二叉搜索树中的插入操作 (二叉搜索树-基本操作类)
- goland创建一个不限长度的字节切片_Go语言入门必知教程-切片
- 构造函数、原型、继承原来这么简单?来吧,深入浅出
- 开源影响发量?这届开源中的巾帼力量
- C语言爬虫程序,simspider
- python字符串描述错误的_Python字符串错误字符
- mysql 表的增删改查_MySQL数据表的增删改查
- 人工智能代码自动生成技术的一点思考
- 计算机仿真 是核心吗,《计算机仿真》北大核心
- CenterOs升级gcc
- 傲腾服务器硬盘,Intel P5800X傲腾硬盘实测:不愧是世界最强
- 解决Windows无法访问指定设备路径或文件,您可能没有合适的权限访问这个项目
- 2013年2月工作小结 -- 最美工作月
- 苹果充电慢是什么原因_成都苹果维修点告诉你为什么iPhone手机不能在关机状态下充电?...
- unity 制作拼图游戏
- python笔记:猜大小,随机数
- prim算法_数据结构与算法:图形结构
- oracle 11g安装过程中问题:移动bin\oralbac11.dll 到bin\oralbac11.dll.dbl出错