Debian学习教程

上传人:仙*** 文档编号:156983976 上传时间:2022-09-28 格式:DOC 页数:74 大小:472.50KB
返回 下载 相关 举报
Debian学习教程_第1页
第1页 / 共74页
Debian学习教程_第2页
第2页 / 共74页
Debian学习教程_第3页
第3页 / 共74页
点击查看更多>>
资源描述
Debian学习笔记Chapter1.Linux文件系统Table of Contents1.1. 管理文件系统 1.2. 文件和目录的权限 1.3. 文件属性 1.4. 文件访问控制列表(Access Control Lists,ACL)文件系统是一个操作系统的重要组成部分,Linux支持各种常用的文件系统。Table1.1.Linux文件系统类型文件系统类型名称用途Second Extended filesystemext2最常用的Linux文件系统Three Extended filesystemext3ext2的升级版,带日志功能Minix filesystemminixMinix文件系统,很少用RAM filesystemramfs内存文件系统,速度超快Network File System(NFS)NFS网络文件系统,由SUN发明,主要用于远程文件共享DOS-FAT filesystemmsdosms-dos文件系统VFAT filesystemvfatWindows95/98采用的文件系统NT filesystemntfsWindows NT采用的文件系统HPFS filesystemhpfsOS/2采用的文件系统/proc filesystemproc虚拟的进程文件系统ISO 9660 filesystemiso9660大部份光盘所用的文件系统UFS filesystemufsSun OS所用的文件系统Apple Mac filesystemhfsMacintosh机采用的文件系统Novell filesystemncpfsNovell服务器所采用的文件系统SMB filesystemsmbfsSamba的共享文件系统XFS filesystemxfs由SGI开发的先进的日志文件系统,支持超大容量文件JFS filesystemjfsIBM的AIX使用的日志文件系统ReiserFS filesystemreiserfs基于平衡树结构的文件系统1.1.管理文件系统使用mount命令就可在Linux中挂载各种文件系统,如:debian:# mount -t vfat /dev/hda1 /mnt/hda1上面这条命令就把/dev/hda1这个fat分区挂载到了/mnt/hda1目录下。“-t”参数指定文件系统类型,常见的文件类型见上面“Linux文件系统类型”一表的内容。在挂载硬盘时,还有一个“-o”参数,它可指定挂载文件系统时的一些选项,如: codepage=xxx,指定代码页,如936(简体中文)、437(英文)等。 iocharset=xxx,指定字符集,如utf8、gb2312等。 ro,以只读方式挂载。 rw,以读写方式挂载。mount命令的参数选项是很丰富的,以上介绍的只是常用一些功能,详细介绍请参考man手册。使用mkfs命令可以创建文件系统,如:debian:# mkfs -t ext2 /dev/fd0 1400这条命令在软盘上创建一个容量为1.44M的ext2文件系统。使用fsck命令可以检查文件系统,如:debian:# fsck -t ext2 /dev/hda3使用mkswap命令可以创建swap空间,如:debian:# mkswap -c /dev/hda4debian:# swapon /dev/hda4 #启用新创建的swap空间,停用可使用swapoff命令设备文件是Linux中一种特殊的文件,它对应每种硬件设备,如硬盘、软驱等。它可以像文件一样对它进行读写操作。设备文件位于/dev目录下,/dev/hda代表第一个IDE硬盘,/dev/fd0代表第一个软驱。/dev/null是一个虚设的设备,它就像一个无底的黑洞,任何对/dev/null的写入都会成功,但数据会消失得无影无踪,没有任何反馈。所以我们经常把不想在屏幕显示的信息全部送到/dev/null中。下面是一个设备文件的信息:brw-rw- 1 root disk 3, 0 2005-07-07 05:29 /dev/hda大家注意文件的size列,它是由逗号分隔的两个数字(3,0),第一个值代表主设备号(major device number),第二个值代表次设备号(minor device number)。主设备号对应内核相应的功能,而次设备号对应由驱动程序管理的特定设备。所以同一类设备的主设备号都是相同的,次设备号则不同。内核根据主设备号将I/O的要求导向到适当的驱动程序上,而该驱动程序以次要编号来判断出指定要使用的设备。系统安装同,默认已安装了大部份的设备文件,在/dev目录下可查询到很多的设备文件。但有时我们也需新增一设备文件,这时我们可使用mknod命令,命令格式如下:mknod -m permissions name type major minor-m permissions参数可有可无,主要用于设置设备文件的权限name是所要创建的设备名,要有完整的路径,如/dev/rhdatype是设备文件的类型,c代表字符设备,b代表块设备major指定设备的主编号minor指定设备的次编号使用dumpe2fs device | more可显示文件系统的详细信息。如:debian:/var/log# dumpe2fs /dev/hdb1 |moredumpe2fs 1.37 (21-Mar-2005)Filesystem volume name: Last mounted on: Filesystem UUID: ef214b73-810a-4098-bf01-ab9a85d9c651Filesystem magic number: 0xEF53Filesystem revision #: 1 (dynamic)Filesystem features: filetype sparse_superDefault mount options: (none)Filesystem state: not cleanErrors behavior: ContinueFilesystem OS type: LinuxInode count: 3662848Block count: 7323624Reserved block count: 366181Free blocks: 428630Free inodes: 3470727First block: 0Block size: 4096Fragment size: 4096Blocks per group: 32768 #文件系统中每个块组的大小Fragments per group: 32768Inodes per group: 16352Inode blocks per group: 511Last mount time: Thu Jul 7 20:09:57 2005Last write time: Thu Jul 7 23:42:51 2005Mount count: 15Maximum mount count: 30Last checked: Fri Jun 17 05:31:36 2005Check interval: 2592000 (1 month)Next check after: Sun Jul 17 05:31:36 2005Reserved blocks uid: 0 (user root)Reserved blocks gid: 0 (group root)First inode: 11Inode size: 128superblock是每个分区中最重要的信息,如果分区的superblock信息被破坏,则分区就不能使用。所以每个分区的superblock都被备份了。如果ext2文件系统的块组大小是32768,则superblock备份就存放在以32769开始的块组中。使用e2fsck -f -b 32769 /dev/hdb1就可用superblock备份信息修复文件系统的superblock1.2.文件和目录的权限Linux系统以安全性高著称,它有完善的文件和目录权限控制机制。使用ls -l命令可查看系统中文件和目录的权限。如:debian:# ls -ldrwxr-xr-x 3 root root 4096 2005-05-05 02:01 SAPGUI-rw-r-r- 1 root root 66842 2005-03-27 17:20 Screenshot.png-rw-r-r- 1 root root 72 2005-03-03 20:24 setup.log-rwxr-xr-x 1 root root 268 2005-03-13 15:44 test.最左边的一串字符是文件和目录的权限控制字符串,权限字符串的第一个字母代表文件类型,不同字符代表不同的意思: -,一般文件 d,目录 l,符号连接 b,块特殊文件 c,字符特殊文件 s,socket套接字 p,命名管道后面9个字符分成三组,分别代表user(用户),group(组)和other(其它)的许可权限。每组有三个权限位,代表具体的权限: r,表示文件可读或目录可读,位于三位权限组的第一位置。 w,表示文件可修改或目录可修改,位于三位权限组的第二位置。 x,表示文件可执行或目录中的文件可执行,位于三位权限组的第三位置。 s,表示set UID或set GID。位于user或group权限组的第三位置。如果在user权限组中设置了s位,则当文件被执行时,该文件是以文件所有者UID而不是用户UID执行程序。如果在group权限组中设置了s位,当文件被执行时,该文件是以文件所有者GID而不是用户GID执行程序。s权限位是一个敏感的权限位,容易造成系统的安全问题。请在设置时小心,并注意系统中已有的SUID或SGID文件和目录。 t,表示粘着位(sticky)。位于other权限组的第三位置。具有该位的文件和目录只有创建者才能删除。 -,表示没有权限。该字符可出现在任何位置,表示没有许可权限。当我们在linux中创建一个文件或目录时,系统通过umask环境变量来控制默认的权限位设置。umask的值多为022,在profile文件里设置。设置格式如下:.umask 022.1.3.文件属性使用lsattr和chattr命令可以显示和改变文件属性。 s(secure deletion),当文件被删除时,分配在该文件中的所有块都会清零,并写入磁盘,保证文件的数据被彻底清除,不能被访问。 u(undelete),该属性可保存被删除的文件内容。 c(compress),当文件保存在磁盘时,内核会自动压缩该文件。 S(synchronous),当修改具有该属性的文件时,所有更改将同步写入磁盘。 i(immutable),设置了该属性的文件不允许更改。 a(append only),文件只能以追加模式打开,只有root才能设置或删除主该属性。 d(no dump),具有该属性的文件不能被dump工具备份。 A(no atime),不更新atime值,atime是文件文件的访问时间戳。1.4.文件访问控制列表(Access Control Lists,ACL)传统的Linux文件系统的权限控制是通过user、group、other与r(读)、w(写)、x(执行)的不同组合来实现的。随着应用的发展,这些权限组合已不能适应现时复杂的文件系统权限控制要求。例如,我们可能需把一个文件的读权限和写权限分别赋予两个不同的用户或一个用户和一个组这样的组合。传统的权限管理设置起来就力不从心了。为了解决这些问题,Linux开发出了一套新的文件系统权限管理方法,叫文件访问控制列表(Access Control Lists,ACL)。要启用ACL,需内核提供ACL支持和安装ACL管理工具。现在的2.6内核都提供ACL支持,在编译内核时只要在file systems分支下,把Ext2 POSIX Access Control Lists或Ext3 POSIX Access Control Lists选中就可以了。用以下命令挂接硬盘启用文件系统ACL。debian:# mount -t ext2 -o acl /dev/hda1 /mnt/hda1我们也可把选项写到/etc/fstab文件中,在需启用acl的分区选项包含acl参数。ACL有两种,一种是存取ACL(access ACLs),针对文件和目录设置访问控制列表。一种是默认ACL(default ACLs),只能针对目录设置。如果目录中的文件没有设置ACL,它就会使用该目录的默认ACL。要设置ACL,首先要安装管理工具,它们分别是getfacl和setfacl,在debian中只要安装acl软件包即可。debian:# apt-get install aclsetfacl工具可为文件和目录ACL,命令格式如下:setfacl -m rules的格式如下,多条规则间可用逗号分隔。u:uid:perms #为用户设置ACL,perms为r、w、x的组合g:gid:perms #为组设置ACLo:perms #为其它组设置ACLm:perms #设置有效权限屏蔽下面是setfacl的实例:debian:# setfacl -m u:jims:rw testfile.txt #-m选项表示添加或修改文件或目录的权限访问列表debian:# setfacl -x u:jims:rw testfile.txt#-x选项表示删除文件或目录的访问列表要设置默认的ACL,只在rules前加一个d:,以表示指定一个目录,如:debian:# setfacl -m d:o:rx /datagetfacl用以显示文件或目录的ACL,如:debian:getfacl debian.xml# file: debian.xml# owner: jims# group: jimsuser:rwxgroup:r-other:r-tar和dump工具不能备份ACL文件,如果我们要备份ACL文件系统,可以使用star工具。另外,samba可通过-with-acl-support编译选项支持ACL。Chapter2.软件包管理工具Table of Contents2.1. apt-get 2.2. apt-cache 2.3. 建立一个混合系统 2.4. 升级指定版本的软件包 2.5. 保持指定软件包的版本2.1.apt-get软件包管理是区分不同发行版的一大特征,如RedHat使用RPM软件包来管理软件,Debian使用Deb软件包来管理软件。apt-get是Debian的Deb软件包管理工具,它的最低底层还是调用dpkg包管理程序,通过apt-get工具可使我们很好地解决软件包的依赖关系,方便软件的安装和升级。它是Debian发行版的最大特色,一定要好好掌握。要使用好apt-get就要配置好一个名为sources.list的资源列表,资源列表指向Debian系统的软件库,apt-get会从该软件库安装各种软件包。sources.list文件位于/etc/apt目录下,下面是Sarge、Etch和Sid三个版本的写法,你可任选一种,最好不要多版本混用:#sources.list for Sarge(stable):deb http:/http.us.debian.org/debian stable main contrib non-freedeb http:/non-us.debian.org/debian-non-US stable/non-US main contrib non-freedeb http:/security.debian.org stable/updates main contrib non-free#Uncomment if you want the apt-get source function to work#deb-src http:/http.us.debian.org/debian stable main contrib non-free#deb-src http:/non-us.debian.org/debian-non-US stable/non-US main contrib non-free#sources.list for Etch(testing):deb http:/http.us.debian.org/debian testing main contrib non-freedeb http:/non-us.debian.org/debian-non-US testing/non-US main contrib non-freedeb http:/security.debian.org testing/updates main contrib non-free#Uncomment if you want the apt-get source function to work#deb-src http:/http.us.debian.org/debian testing main contrib non-free#deb-src http:/non-us.debian.org/debian-non-US testing/non-US main contrib non-free#sources.list for Sid(unstable):deb ftp:/ftp.us.debian.org/debian unstable main contrib non-freedeb ftp:/non-us.debian.org/debian-non-US unstable/non-US main contrib non-free#Uncomment if you want the apt-get source function to work#deb-src http:/http.us.debian.org/debian unstable main contrib non-free#deb-src http:/non-us.debian.org/debian-non-US unstable/non-US main contrib non-freesources.list文件的内容决定了Debian的版本。安全更新只存在于stable和testing版中,unstable没有安全更新。进入stable的软件都经过严格的依赖测试和安全测试,所以如果你想系统稳定,用于工作,最好使用stable,如果你想使用最新版的软件,就使用testing或unstable。Woody、Sarge和Sid是Debian 3.x三个版本中的代号,我们一般都是以代号来称呼debian不同版本。所有Debian发行版的代号全都取自电影Toy Story,Woody是那个牛仔,Sarge是绿色塑胶军队的领导,Sid是破坏玩具的小孩。 apt-get update更新软件包信息库。在Debian中,软件包是通过一个数据库来管理的,通过这个数据库中可跟踪你系统中已安装、没有安装和现在可安装的软件包信息。apt-get安装软件包时就是依靠这个数据库来解决软件包间的依赖关系,从而可自动安装相关软件。我们需定期运行该命令,从而保持数据库的信息为最新。 apt-get install package_name1 package_name2 package_name3 .安装软件包。如果软件包需其它软件包支持,apt-get会通过搜索软件包数据库找到这种依赖关系,一起下载相关软件。在一个命令行中可同时安装多个软件包,中间用空格隔开即可。安装的软件包默认会存放在/var/cache/apt/archives目录下,以便以后重新安装。如果已安装的软件包损坏了,你可通过-reinstall选项来重新安装。如:# apt-get -reinstall install package_name在需安装的软件包名后加一个减号会删除软件包,如:apt-get install package_name-。只是下载软件,不解包和安装使用-d选项,如:# apt-get -d install package_name使用-dry-run选项可使apt-get在安装软件包前进行测试,如:# apt-get install package_name -dry-runDebian软件包的名字和软件名不同,所以在安装前如不知道软件包的名字,可到Debian的官方软件库查询,网址是:http:/www.debian.org/distrib/packages/。或者用下面介绍的apt-cache search package_name命令来查询。 apt-get remove package_name1 package_name2 package_name3 .删除软件包。如果你想删除没用的软件包,只要使用该命令即可。如果你想把该软件的配置文件也删除,可以用-purge选项,如:# apt-get -purge remove package_name类似地,在删除软件包名后加一个加号会安装软件包,如:apt-get remove package_name+。 apt-get source package_name1 package_name2 package_name3下载软件包的的源码版本。 apt-get upgrade package_name1 package_name2 package_name3 .软件包升级功能是APT系统这么成功的主要原因。通过该命令,我们就可把软件升级到最版本。在使用该命令前,最好先运行apt-get update命令,以更新软件包数据库。但该方案不是更新系统最好的方法,一些包会因为包依赖问题而保留(kept back)一些旧的软件包。Debian提供了一个更好的升级方案,就是用dis-upgrade。下面一节会详细介绍。 apt-get dist-upgrade更新整个Debian系统。可从网络或本地更新整个系统。它会重新安排好包的依赖性。如果有些包由于一些原因实在不能更新,我们可通过以下命令查询原因:# apt-get -o Debug:pkgProblemResolver=yes dist-upgrade用apt-show-versions -u可获得可升级软件包的列表。该命令还有一些有用的选项,可用-h选项查看详细帮助,了解更多功能。 apt-get clean删除下载了的软件包,当我们通过apt-get安装软件包时,APT会把软件包下载到本地/var/cache/apt/archives/目录。该命令会删除该文件夹内的除锁住外的所有软件包。 apt-get autoclean删除已下载的旧版本的软件包。该命令类似于上面的命令,但它会有选择地删除旧版本的软件包。 apt-get dselect-upgrade通过dselect的“建议”和“推荐”功能更新系统。dselect是Debian中一个功能强大的包管理工具。它可帮助用户选择软件包来安装,其中一个有用功能是它会建议和推荐安装其它相关软件包。我们可在APT中使用它这个功能。 apt-get check检查系统中已安装软件包的依赖性。2.2.apt-cacheapt-cache是一个apt软件包管理工具,它可查询apt的二进制软件包缓存文件。通过它我们可查询软件包的状态信息。 apt-cache show package_name显示软件的信息,包括版本号,安装状态和包依赖关系等。 apt-cache search package_name搜索软件包,可用正则表达式。2.3.建立一个混合系统我们有时喜欢用一个Debian版本作为主系统,并使用其它版本的软件包,如我们用testing版为主系统,但有时又会用到unstable版里的新软件包。设置主系统你需编辑/etc/apt/apt.conf文件,在文件中加入以下内容:APT:Default-Release version;这里的version就是Debian的发行版本,包括stable,testing和unstable。要从Debian另外的版本中安装软件包,需用以下的APT命令:# apt-get -t version install package为使上面的命令正常工作,需要在sources.list包含有相应的version资源连接。你也可用以下命令指定安装软件包的版本。如:# apt-get install nautilus=2.2.4-1安装不同版本的软件包容易造成系统包依赖性出错,所以应尽量避免在工作环境中使用。2.4.升级指定版本的软件包apt-show-versions可显示已安装软件包的版本,它提供了一种安全的方法从混合版本环境中升级指定版本的软件包。如以下命令只升级unstable的软件包:# apt-get install apt-show-versions -u -b | grep unstable2.5.保持指定软件包的版本有时你或许不想升级某些软件包,这时我们可“pin”住这些软件包,使它们不能被升级。我们可很容易实现该功能,只要编辑/etc/apt/preferences配置文件。该文件的格式如下:Package: Pin: Pin-Priority: Chapter3.NautilusTable of Contents3.1. 使用Nautilus脚本扩展文件管理功能 3.2. 性能调整Nautilus是一个文件管理器,与Windows中的资源管理器类似。它是一个开源软件,是GNOME桌面环境默认的文件管理器,项目网址是:http:/www.gnome.org/projects/nautilus/。3.1.使用Nautilus脚本扩展文件管理功能Nautilus是GNOME桌面环境中一个优秀的图形化文件管理工具,通过该工具,我们能方便地管理和浏览我们的文件。它是为文件管理而设计的,但它也可作为ftp,smb,WebDAV等基于WEB的应用程序的客户端。除了固定的功能外,我们还可通过编写自已的脚本来扩展它的功能,下面介绍如何使用该功能。 建立一个shell或python、perl等的脚本,并设置可执行权限。 把脚本拷贝到/.gnome2/nautilus-scripts目录下。 用nautilus访问一次该目录,这样就可通过右击文件,选“脚本”来调用该脚本了。以后每新建一个脚本,都要使用nautilus访问一次/.gnome2/nautilus-scripts才能使新脚本生效。这种用户可随意添加脚本的功能使nautilus的功能可无限扩展。Nautilus官方网站上已有很多脚本可下载使用。网址是:http:/www.gnome.org/projects/nautilus/。3.2.性能调整Nautilus文件管理器是Gonme中使用频率最高的工具之一,下面介绍几个提高Nautilus性能的方法,使我们能有效地使用该工具。在Nautilus中,与性能相关的首选项通常都可有三个可选项值,通过调整这三个选项值可达到调整Nautilus性能的目的,这三个选项值分别是: 总是(always)-对本地文件和其它文件系统上的文件都有效。性能最差,占用CPU资源和网络带宽最多。 本地文件(local_only)-只对本地文件有效。性能较好,能减少对CPU资源的占用。 从不(never)-选项无效。性能最好,能大大减少CPU资源和网络带宽的占用。下面介绍使用这些选项的首选项,每一个首选项代表Nautilus的一个功能。你可用上面介绍的选项值进行配置,以达到性能最优。 图标中显示文字(show_icon_text)该选项的功能是控制是否在图标中显示文件中的内容片段。可通过以下命令设置为never:# gconftool-2 -type string -set /apps/nautilus/preferences/ show_icon_text never此外,还可通过Nautilus菜单的“编辑-首选项-预览-图标中显示文字”路径进行设置。 显示缩略图(show_image_thumbnails)该选项控制是否在文件管理器内显示图像的缩略图。可通过以下命令设置为never:# gconftool-2 -type string -set /apps/nautilus/preferences/ show_icon_text never此外,还可通过Nautilus菜单的“编辑-首选项-预览-显示缩略图”路径进行设置。 预听声音文件(preview_sound)该选项控制是否预听声音文件。可通过以下命令设置为never:# gconftool-2 -type string -set /apps/nautilus/preferences/preview_sound never此外,还可通过Nautilus菜单的“编辑-首选项-预览-预听声音文件“路径进行设置。 统计项目数量(show_directory_item_counts)该选项控制是否显示文件夹内项目的数量,如果文件夹内的文件很多,开启该选项将使文件夹的打开速度减慢。建议关闭该功能。设置方法如下:# gconftool-2 -type string -set /apps/nautilus/preferences/ show_directory_item_counts never此外,还可通过Nautilus菜单的“编辑-首选项-预览-统计项目数量“路径进行设置。Chapter4.GConf配置系统GConf是一个应用程序参数配置系统,它可集中存储和管理各种应用程序的配置参数,就象Windows平台的注册表。该系统对系统管理员来说是很有用的,系统管理员可通过该工具方便地管理他们的系统。GConf还有一个非常COOL的功能,就是“process transparent”(进程无关性),也就是说,如果我在一个应用程序中修改了一个参数,马上其它使用同一参数的应用程序同样会感受到参数的改变。下面我将会详细介绍GConf系统的配置和使用。网上资源:http:/www.gnome.org/projects/gconf/Chapter5.国际化(Internationalization,简写为I18N)国际化是指软件能用于多国语言环境的能力。在Linux中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为_.,如zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。在locale环境中,有一组变量,代表国际化环境中的不同设置:1. LC_COLLATE定义该环境的排序和比较规则2. LC_CTYPE用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。3. LC_MONETARY货币格式4. LC_NUMERIC非货币的数字显示格式5. LC_TIME时间和日期格式6. LC_MESSAGES提示信息的语言。另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。LANGUAGE参数可同时设置多种语言信息,如LANGUANE=zh_CN.GB18030:zh_CN.GB2312:zh_CN。7. LANGLC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。类似于 LC_ALL。8. LC_ALL它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响。一个例子:设置前,使用默认locale:debian:# localeLANG=POSIXLC_CTYPE=POSIXLC_NUMERIC=POSIXLC_TIME=POSIXLC_COLLATE=POSIXLC_MONETARY=POSIXLC_MESSAGES=POSIXLC_PAPER=POSIXLC_NAME=POSIXLC_ADDRESS=POSIXLC_TELEPHONE=POSIXLC_MEASUREMENT=POSIXLC_IDENTIFICATION=POSIXLC_ALL=设置后,使用zh_CN.GDK中文locale:debian:# export LC_ALL=zh_CN.GBKdebian:# localeLANG=zh_CN.UTF-8LC_CTYPE=zh_CN.GBKLC_NUMERIC=zh_CN.GBKLC_TIME=zh_CN.GBKLC_COLLATE=zh_CN.GBKLC_MONETARY=zh_CN.GBKLC_MESSAGES=zh_CN.GBKLC_PAPER=zh_CN.GBKLC_NAME=zh_CN.GBKLC_ADDRESS=zh_CN.GBKLC_TELEPHONE=zh_CN.GBKLC_MEASUREMENT=zh_CN.GBKLC_IDENTIFICATION=zh_CN.GBKLC_ALL=zh_CN.GBKC是系统默认的locale,POSIX是C的别名。所以当我们新安装完一个系统时,默认的locale就是C或POSIX。在Debian中安装locales的方法如下: 通过apt-get install locales命令安装locales包 安装完成locales包后,系统会自动进行locale配置,你只要选择所需的locale,可以多选。最后指定一个系统默认的locale。这样系统就会帮你自动生成相应的locale和配置好系统的locale。 增加新的locale也很简单,用dpkp-reconfigure locales重新配置locale即可。 我们也可手动增加locale,只要把新的locale增加到/etc/locale.gen文件中,再运行locale-gen命令即可生成新的locale。再通过设置上面介绍的LC_*变量就可设置系统的locale了。下是一个locale.gen文件的样例。 # This file lists locales that you wish to have built. You can find a list # of valid supported locales at /usr/share/i18n/SUPPORTED. Other # combinations are possible, but may not be well tested. If you change # this file, you need to rerun locale-gen. # zh_CN.GBK GBK zh_CN.UTF-8 UTF-8Chapter6.XFree86中的字体Table of Contents6.1. 两个字体系统 6.1.1. Xft 6.1.2. X11核心字体系统6.2. 参考资料字体设置在X系统中是一项较复杂而又非常重要的内容,字体是我们一进入X window就必须整天面对的,清晰、美观的字体会使我们工作起来赏心悦目,轻松愉快。XFree86是X系统在X86架构中的免费实现(现在好象不是GPL的了),也是现在Linux系统默认的X系统。为了设置好字体,我们需了解XFree86系统中的字体系统的原理和实现技术。只是照抄网上的设置可能也可配置出一套效果不错的字体,但这样我们只会知其然而不其所以然,不能融会贯通,灵活应用。请随我慢慢进入XFree86中的字体系统,一窥其中的奥秘。有关X系统和XFree86的资料可参考我整理的X window学习笔记,里面对这两个系统的历史渊源有详细介绍。6.1.两个字体系统XFree86系统有两套的字体系统,这也是为什么X window中字体设置较复杂的原因之一。这两套的字体系统分别是:核心X11字体系统和Xft字体系统。核心X11字体系统是应用最广泛的一套字体系统,所有的X系统都支持。Xft字体系统是一个新的字体技术,只能用在基于XFree86系统的X系统上,但该套字体系统配置简单,容易使用,将是未来发展的方向。6.1.1.XftXft是一个library,它没有自已的配置机制,它依靠fontconfig库来配置和定制字体,Xft负责字体的显示。也就是说,fontconfig是一种让X系统可以找到某种字体的库,而Xft是负责在X系统中把fontconfig库找到的字体如何显示出来的库。所以讨论Xft字体配置其实就是讨论fontconfig。fontconfig包含在XFree86发布版中。fontconfig的作用: 自动搜索字体路径,发现新拷贝的字体。 当需显示的字体不存在时,会自动选择其它字体代替显示。这也就是我们在美化字体时为什么要调整字体的排列顺序的原因。 配合Xft等X系统的渲染引擎,实现质量的字体输出。fontconfig的配置文件有三个,一个是系统级的配置文件,位于/etc/fonts/fonts.conf,该目录下还有一个local.conf,一般我们只修改local.conf文件,fonts.conf一般不建议去修改。第三个配置文件是用户主目录下的/.fonts.conf,它是用户级的字体配置文件,只对当前用户有效。这三个文件的格式是一样的,都是一个XML格式的文件。该XML文件的语法规则在fonts.dtd里定义。详细的配置介绍请参考中国Linux公社中的“Linux高质量字体研究”论坛。在Xft字体系统中安装新的字体是很简单的,只需把字体文件拷贝到fonts.conf中指定的字体文件目录即可,fontconfig会自动感知新字体。默认的字体目录有四个,分别是:1. /usr/share/fonts2. /usr/X11R6/lib/X11/fonts/Type13. /usr/local/share/fonts4. /.fonts把新字体文件拷贝到字体目录后,我们就可用fc-list命令列出新安装的字体,如果没有,可用fc-cache命令手动更新系统字体配置。这样,再运行fc-list就应该可以看到新安装的字体了。使用Xft字体系统是不用配置/etc/X11/XF86config-4的,也不用重启X服务器使配置生效。Xft字体系统比起传统的X11核心字体系统来说真的是方便很多。所以它是未来的发展方向。目前,并不是所有的应用程序都支持Xft字体系统。下面是各类程序对Xft字体系统的支持情况介绍: GTK+2.x和QT程序都可以使用Xft字体系统,但GTK+1.x程序是不支持Xft字体系统的,它只能使用X11核心字体系统。 GTK+2.2版本及以上的程序默认使用Xft字体系统,不用进行配置。GTK+2.0程序如果要使用Xft,则需设置环境变量GDK_USE_XFT=1。 GTK+2.x程序字体配置可通过gnome桌面系统提供的gnome-font-properties工具来配置,该工具可在GNOME桌面环境中的应用程序-桌面首选项-字体中找到。GTK+2.x程序还有一个全局配置文件/etc/gtk-2.0/gtkrc,里面可设置GTK+2.x程序所用字体,该文件的内容如下: style gtk-default-zh-cn font_name = Bitstream Vera Sans 10,SimSun 10 class GtkWidget style gtk-default-zh-cn这样GTK+2.x程序的英文会用10号的Bitstream Vera Sans字体显示,中文会用10号的SimSun字体显示。 QT程序的默认字体可在KDE的“控制中心”-“外观和主题”-“字体”中设置,也可运行qtconfig图形化配置工具设置。但好象控制中心的设置优先级高于qtconfig工具。6.1.2.X11核心字体系统配置X11核心字体有两步,第一步是建立字体目录,在该目录中包含字体文件。第二步是配置X服务器,使它能使用这些字体。下面我以配置simsun.ttc字体为例说明: X服务器的字体目录一般默认已建好,如/usr/X11R6/lib/X11/fonts/truetype。我们把simsun.ttc拷贝到该目录。 生成字体索引文件,如果是位图字体则只有一个fonts.dir索引文件,如果是像simsun.ttc这样的可缩放字体则还需要一个fonts.scale索引文件。索引文件可通过工具自动生成,如果是TrueType字体,可使用ttmkfdir工具。其它的字体可用mkfontdir和mkfontscale这两个工具来生成。simsun.ttc是TrueType字体,所以我用ttmkfdir工具生成fonts.scale: debian:/usr/X11R6/lib/X11/fonts/truetype# ttmkfdirfonts.dir文件和fonts.scale内容是一样的,所以可直接拷贝。如果不用拷贝的方式,用mkfontdir命令也可以,结果是一样的。 设置XF86config-4配置文件,确定包含上述字体路径和正确加载X字体模块。 Section Files # FontPath unix/:7110 # local font server # if the local font server has problems, we can fall back on these FontPath /usr/X11R6/lib/X11/fonts/truetype 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 FontPath /usr/lib/X11/fonts/CID FontPath /usr/lib/X11/fonts/Speedo FontPath /usr/lib/X11/fonts/100dpi FontPath /usr/lib/X11/fonts/75dpi EndSection Section Module # Load GLcore Load bitmap Load dbe Load ddc Load dri Load extmod # Load freetype Load glx Load int10 Load record Load speedo Load type1
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!