|
|
第 1 帖 | |
|
|
标题: Slackware官方文档翻译 第八章结果
我的linux,英语和语文都不是很牛,所以有错误的地方大家来一起修改,有些地方也没有翻译过来,大家一起翻译一下吧 第八章.Shell 目录 用户 命令行 Bourne Again Shell(bash) 虚拟终端 小节 在一个图形界面环境下,接口是由一个可以创建窗口,滚动条,菜单等的程序提供的.而在一个命令行的环境下,用户接口是"shell"提供的,shell解释命令且通常使电脑上的东西可以运行.在登陆(本章将做说明)之后,用户会被立即放置到shell程序中,并通过shell来做他们想做的事情.本章将对shell--Bourne Again Shell(bash),Linux用户普遍使用的一种shell--做以介绍.如果想得到关于本章的更多详细的信息,请查阅帮助页bash(1). 用户 登陆 当你的电脑启动之后,你会看到类似如下的字符提示: Welcome to Linux 2.2.14 darkstar login: ##这一段有关什么四维通道的翻译不是很准确 ##Hmm.. nobody said anything about a login. And what's a darkstar? Don't worry; you probably didn't accidentally fire up a hyperspace comm-link to the Empire's artificial moon. (I'm afraid the hyperspace comm-link protocol isn't currently supported by the Linux kernel.) No, darkstar is just the name of one of our computers, and its name gets stamped on as the default. If you specified a name for your computer during setup, you should see it instead of darkstar. 恩..没有人提起过关于登陆的任何事情.那么这里的darkstar是什么意思?不必担心,你根本没有偶然的打开一个通向帝国人造月球的四维通道.(恐怕目前linux的内核还不支持多位空间连接协议),darkstart只是你的计算机名字而已,而且他是默认的计算机名字,如果在安装过程中你给你计算机起了一个名字,那么darkstart将被你起的名字替代掉. 对于登陆么...如果这是你的第一次登陆,你将会以root用户的身份登陆,然后系统会提示你输入密码.密码一般在安装时候设定,如果你没有设定密码那么只要按enter键就可以了.好了--你已经登陆成功了! Root:超级用户 root是什么,又在你的系统上做些什么? 恩,在Unix和类Unix(如linux)的操作系统里,有很多使用者所以有了用户的概念.本章的后面部分将对此做详细的介绍,你现在仅仅需要知道的是root是高于其他用户的一个用户,root是无所不能,无所不知的,没有人可以不服从root.所以我们不得不正确的称root用户为"超级用户".更好的是你现在就是root. 是不是很酷? 如果你不确定:是的,那样的确很酷.但是我们忽略了一些问题,root可以随心所欲的破坏任何东西.你可以先跳到12章去看看如何添加一个用户,然后我们以一个普通用户登陆,回到这里,继续我们的学习.为了减小root的破坏力,只有在必要的时候才使用root用户是一个明智的办法. 顺便一提,你可以很轻易的从任何一个用户变为root用户,只需使用su(1)命令.输入密码后你将获得root身份,直到你使用命令exit或者logout.只要你知道其他用户的密码你也可以使用su命令变成其他用户的身份,比如:su logan,你将使用我的帐号登陆. 命令行 运行程序 ##这一段实在翻译不出来 ##It's hard to get much accomplished without running a program; you might be able to prop something up with your computer or hold a door open, and some will make the most lovely humming noise when running, but that's really about it. And I think we can all agree that its use as a humming doorstop isn't what brought the personal computer the popularity it now enjoys. 还记得linux下所有东西都是文件么?程序也是如此.你运行(不是shell的内部程序)的每一个程序都是你电脑上某个地方的一个文件.你可以通过指明程序的详细路径来运行它. 举个例子,还记得上一节我们使用过的su命令么?实际上它位于目录/bin下:/bin/su也可以让su运行起来.你可能会问为什么只输入su也可以运行?我并没有指明su是在/bin这个目录下啊?su也有可能在/usr/local/bin这个目录下,不是么?shell是怎么知道su到底在哪里的呢?答案是"PATH环境变量".大多数shell都会有PATH这个变量,或与之类似的变量.PATH主要由一系列包含可执行文件的路径组成,当你运行run的时候,shell会自动到PATH的目录去寻找那些名字为su的可执行文件,而且只运行它第一个查找的文件.如果你不表明路径,程序就会按如上的方法运行,如果你的到了一个"Command not found error(无法找到该命令)"的错误提示,就意味着你的命令不再PATH的目录列表里.(当然了,也可能那个程序根本就不存在).我们将在Bourne Again Shell(bash)一节中更深的讨论有关环境变量的问题. 你要记住,符号"."是一个你所在目录的缩略表示方法,如果你在/bin下,./su也就是一个完整的路径:/bin/su 通配符匹配 几乎任何一种shell都存在这样一种替代或缩写用的字符,这些字符表示他们所在的位置可以是任何东西字符串.这样的字符被称为通配符,最长使用的是'*'和'?'.一般来说,'?'通常匹配任何单个字符.举个例子,假如你所在的文件夹里面有这样三个文件:ex1.txt,ex2.txt,和ex3.txt.你想同时把这三个文件(使用cp命令,第十章将做介绍)拷贝到另外一个文件夹,如,/tmp文件夹.如说使用:cp ex1.txt ex2.txt ex3.txt /tmp 这样拷贝的话好像有些太麻烦.如果这样的话:cp ex?.txt /tmp就简单多了,这里的'?'匹配所有字符,如'1','2','3'或其他的字符. 什么?你还是觉的这样很麻烦?你是对的.那样太骇人听闻了,我们有劳动法保护我们免做那样的事情.幸运的是,我们还有'*'.就像我们上面提过的,'*'可以匹配任意数量的字符,包括没有任何字符的情况.所以像上面的例子,如果你的文件下面只有那三个文件,那么可以使用cp * /tmp,一步到位!假如文件下面还有一个叫example.txt和hejaz.txt的文件.我们想拷贝example.txt文件,但是不想拷贝hejaz.txt文件,这样可以使用cp example* /tmp. cp example?.txt /tmp这个命令将只能得到原来的三个文件,因为文件下面没有匹配'?',所以example.txt将不会被拷贝. 输入输出重定向和管道 (下面要讲的东西很酷了!) $ ps > blargh 你知道上面的命令是什么意思么?我使用ps命令来查看当前运行的程序,ps命令在第十一章介绍.这个命令没有什么酷的地方,酷的是后面的部分" > blargh",这个部分的意思是将ps命令的输出写到一个名字为blargh的文件中.但是等等,下面的更酷 $ ps | less 这个命令将ps的输出通过"管道"传给less命令,这样我就可以使用滚屏来看. $ ps > > blargh 这是第三个最常使用的重定向命令,这个命令中的>>和>基本相同,不同点是>>会检测并报告blargh文件是否存在,如果存在就在原文件追加新的内容,如果不存在>>会像>一样创建一个文件.(使用'>'会覆盖原来的文件) 还有一个'<'操作符,用来从文件中读入输入的数据,但是这个符号不经常使用. $ fromdos < dosfile.txt > unixfile.txt 如果你把他们叠起来的话会更有趣 $ ps | tac > > blargh 这个命令将运行ps,颠倒输出的每一行然后将结果写入blargh文件中.你可以叠加更多的命令,但要记住他们的解释顺序是从左到右的. 你可以通过帮助页bash(1)得到更多的有关重定向的信息. Bourne Again Shell (bash) 环境变量 Linux系统是一个复杂的怪物,有很多东西你需要明白,这些细节的东西在你和不同程序交互过程中起到作用(一些你可能根本不需要知道的东西).没有人希望在运行每个程序时都传递一些基本的参数,如终端如何使用,计算机名,提示符风格... 所以我们有了一个拷贝机制的环境.环境定义了程序运行的条件,这些条件中有些是可以改变的变量 ##这一句也翻译不好 ##The environment defines the conditions in which programs run, and some of this definition is variable; the user can alter and play with it, as is only right in a Linux system. 几乎所有的shell都有环境变量(如果没有,那么那种shell可能不太好用).我们下面将给出一个在命令行下操作环境变量的命令概述. $ set 只是用set命令时,系统将返回所有的变量和他们的值.像其他的大多数的bash内置,他也可以做一些其它的事情(加参数);你可以查看bash(1)去看更详细的介绍.下面是我的电脑上set命令的部分输出. PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin PIPESTATUS=([0]="0") PPID=4978 PS1='\h:\w\$ ' PS2='> ' PS4='+ ' PWD=/home/logan QTDIR=/usr/local/lib/qt REMOTEHOST=ninja.tdn SHELL=/bin/bash 我们可以看到先前提过的PATH变量,我可以直接用文件名运行任何包含在PATH变量的路径下的文件. $ unset VARIABLE unset将删除一个变量,包括变量值和变量名,而且是永久性删除.(不必担心.除非你那个部分明确的定义,变量可能被其他程序重新定义<Don't worry. Unless it's something you explicitly defined in that shell session, it'll probably get redefined in any other session>) $ export VARIABLE=some_value export很简单,你可以使用他来把环境变量 VARIABLE 的值设为 "some_value";如果VARIABLE不存在则创建,存在将覆盖以前的值.这样有些时候并不是很好,比如你想增加一个路径PATH变量中,你可能要按下面的方法来完成 $ export PATH=$PATH:/some/new/directory 注意到我们使用了$PATH,把一个$放到PATH前面来解释PATH的值.例如,echo $PATH将返回PATH的值,我的电脑上就应该显示: $ echo $PATH /usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin tab键补全 (这里又有一些很酷的东西了) 1.命令行意味着要打很多字. 2.打字是一种工作. 3.没有人喜欢工作. 从2,3中我们可以推断4:没有人喜欢打字,幸运的是,bash把我们从结论5(没有人喜欢命令行)中解救出来. 你可能会问bash何德何能?bash除了通配符扩展外,还有一个tab键补全的功能. 我们来看看tab键补全是如何工作的:比如你想打一个文件的名字,可能他在你的PATH变量的路径中,你可能将名字完整的打出来,其实你只需要打出文件名不同于其他的文件名的部分然后按tab键,bash将自动补全整个文件名. 我们来检测一下./usr/src 下面有两个子目录:/usr/src/linux和 /usr/src/sendmail,我想看看/usr/src/linux目录下面的东西,我输入 ls /usr/src/l,然后按tab键,bash将把命令补全为ls /usr/src/linux 如果现在有这样两个子目录/usr/src/linux 和 /usr/src/linux-old,如果我输入/usr/src/l后按tab键的话,bash将补全尽可能多的字符,所以我们将的得到这样的结果:/usr/src/linux.我们可以在这里停下来,或者我们在按一下tab键得到符合目前的字符串的所有路径, 因此,大大减少输入的内容(而且因此,人们喜欢命令行终端).所以我说他很酷的! 虚拟终端 当你正在执行某个程序的时候,你发现你又需要做一些别的事情,你可能中断当前的程序,去做你要做的事情,但是linux不是一个多用户系统么?你不是可以同时等录n次么?那么为什么你只能同时做一个事情那? 你可以同时做多件事情的.我们一台机器不可能有多个键盘,多个鼠标和多个显示器;幸运的是,也没有必要有.我们不是通过硬件来解决这个问题,那么这个问题只能由软件来解决.Linux通过"虚拟终端"简称"VTs"来解决这个问题. 你可以通过按Alt和一个功能键在虚拟终端之间切换;每一个功能键对应一个控制台.Slackware默认有6个虚拟控制台.如,Alt+F2你将切换到第二个终端,Alt+F3是第三个等等. 其余的功能键被X sessions占用.每一个X session用户拥有自己VT(虚拟终端),从第七个(Alt+F7)到最后.当你在X中时,由于Alt+功能键可能会冲突,因此我们用Alt+Ctrl+功能键来替换,所以你要从X切换回一个字符登陆界面而不退出X session的话,Ctrl+Alt+F3将切换到第三个控制台.(如果你使用第一个X session的话,可以用Alt+F7将切换回X) 小节 这一章我们讨论了用户,shell,命令行和虚拟终端.你可能可以很顺利的使用命令行工作了:运行程序,使用重定向来组合命令等.最后,你应该对root这个超级用户有一些了解并牢记一直使用root不是一件好事情. |
|
|
|
||
|
|
第 2 帖 | |
|
|
标题: 第五章翻译结果,有错误大家指正 第五章 网络配置
内容 网络硬件 网络工具 /etc目录的文件 rc.inet1 rc.inet2 NFS(Network File System 网络文件系统) tcp_wrappers 总结 一、网络硬件 就像用计算机做其他大多数有趣的事情一样,要让计算机连接到网络上,你就必须使用一些特殊的硬件。 你需要一个NIC(Network Interface Card 网卡)来连接到一个LAN上,或者一个Modem来连接到Internet供应商那里,或者你两者都需要(也可能每种都要几个,甚至都不需要)。 为了配置的目的,我们将这些硬件分成两类:PCMCIA(本本族专用的)和非PCMCIA。使用这样不对称的分类的是有原因的,因为目前发布的内核都不支持PCMCIA,你只能通过一个另外的包(比如内核模块)来支持它,其中包含必要驱动程序和一些配置管理软件。而其他的硬件则可以由发布的内核来直接支持。 1. netmods 内核支持的网络设备的驱动在netmods包中(slackware/n3/netmods.tgz)。如果你没有安装这个包,那你现在就应该把它装上。(关于包的安装请参见第十六章) 开机时要装载的内核模块保存在/etc/rc.d目录下的rc.modules中。默认的rc.modules文件包含有一个“Network device support”的部分。如果你打开这个文件察看这一部分内容,你就会发现代码首先检查/etc/rc.d下的rc.netdevice文件。如果setup在安装过程中成功的检测到了你的网络设备,这个文件就会被创建。一般如果它存在,那么你很可能不会来读这不分内容(呵呵,有没有悖论的感觉?);反之,继续读吧。 在那个“if”块下面是一系列的网络设备和modprobe命令,但是每个都被注释掉了。找到你的设备,然后去掉相应的modprobe的注释,最后保存文件。现在用root运行rc.modules就会装载你的网络设备的驱动程序了(当然同时也会加载其他没有被注释掉的模块)。注意有些模块(比如ne2000的驱动)需要参数,你必须选择好有正确参数的那行。 2. PCMCIA网络设备 PCMCIA网络设备应该比其他设备更加简单。首先你必须确保安装了pcmcia包(slackware/all/pcmcia.tgz)。(关于安装可以参见第十六章。)安装过程中,pcmcia包会在/etc/rc.d下创建一个rc.pcmcia文件,同时创建一个/etc/pcmcia目录,并且把驱动安装到/lib/modules/<kernel version>/pcmcia目录。pcmcia包Cool的地方在于它会自动检测设备的插入和卸载。你应该可以在插入设备的时候听到系统发出“滴”的一声,这表明需要的模块被载入了。如果你卸载了这个设备,则相应的模块也会被自动的释放。 不幸的是,如果你编译了一个新版本的内核,你很可能需要重新编译pcmcia-cs来更新这些驱动。当然,源代码是包含了的;在source/a/pcmcia目录下有源代码,脚本以及相关的帮助文档。 二、网络工具 1. ifconfig 现在你的内核总算可以和你的网络硬件对话了,剩下的就是软件需要一种方法告诉内核把信息传过来,如此等等。我们需要对接口进行配置。我们需要ifconfig(8)。 学习ifconfig的最好方法恐怕莫过于实例。你可以看看rc.inet1文件(在rc.inet1节中有介绍)来学习一下。下面举个最简单的例子: # ifconfig eth0 192.168.1.10 broadcast 192.168.1.255 \ netmask 255.255.255.0 该行命令启动了eth0(第一个网卡,对于令牌网使用tr0,ppp使用ppp0,……),并设置其IP为192.168.1.10,其广播地址为192.168.1.255(整个192.168.1子网),其网络掩码为255.255.255.0(表示IP前面三个部分用来标识网络,最后一个部分,即.10,用来标识主机)。除非你要做一些特别的事情,你通常都可以使用IP的前三个部分加上一个255来表示广播地址。通常掩码设置成255.255.255.0都是没错的。其实如果你要做一些特别的事情,你基本上在这方面已经有足够的知识了,于是这些话就基本上成了废话 。ifconfig也可以用来查看当前的网络配置。当你不带参数的运行这个程序,你就能得到你当前所有的网络接口及其配置。 2. route 内核通过维护一个路由表来决定网络数据该发向哪里。这里我不打算仔细探讨细节方面的内容,只是告诉你可以使用/sbin/route(8)来查看当前的路由表。route -n将会用IP地址代替所有的主机名称,这在DNS服务器出故障或者你对主机名不感兴趣的时候很有用。幸运的是,如果你进行了一个简单的网络安装过程(大多数人都做过),那么2.2的内核自动帮你创建一个必要的路由表项。 3. netconfig netconfig是Slackware安装程序的一部分,但就像大多数安装程序的组件一样,它可以单独运行。netconfig很直观,它会引导你建立一个基本的网络连接。当你对网络配置的那些rc文件不熟悉的时候,这个工具非常有用。运行netconfig的时候,你会看到下面的屏幕提示: netconfig.gif 下一步,netconfig会提示你输入计算机的主机名和域名。一般你可以随便设置这两个名字,除非你设置的机器是一台服务器或者是一台很多人都会访问的机器。然后,netconfig会问你如何分配IP:使用静态IP(static IP),DHCP或者仅仅环路(loopback)就可以了。 netconfig.setupip.gif 如果你的机器不与网络连接,那么直接选择环路就可以了。如果你的计算机要和一个大学或者一个大的办公网络相连,一般你应当选择DHCP。其他情况则选择静态IP。如果你没有选择静态IP,那么设置工作到现在已经完成了。否则你还要接着输入计算机的IP地址、网络掩码、广播地址以及DNS服务器地址。netconfig会告诉你如何得到所有的这些数字的。 4. pppsetup Slackware包含了配置拨号连接用的pppsetup。该软件包位于N软件系列中的ppp.tgz中。pppsetup使用的界面和setup程序相同。如果你不记得怎么使用这个界面,你可以参考前面第三章的“setup程序”一节。pppsetup通过一系列的问题来为你配置好/etc/ppp目录下的几个配置文件。以root运行pppsetup,我们来看一下这些问题: pppsetup.gif 电话号码 第一个问题是ISP电话号码,你同时应该将拨号方式写在前面。大多数人使用音频拨号(tone)。如果你ISP的号码是555-1013并且使用音频拨号,那么你就应该在对话框输入atdt5551013。 pppsetup.phonenumber.gif 如果你的电话线需要接电话,而你希望在上网的时候屏蔽掉外来的电话,那就应该输入类似atdt*70,5551013的东西。 注意逗号不可省略,它会在*70后维持一个1.5秒的停顿,然后再拨号。没有逗号是不行的。(译注:不知道在国内到底有没有用) 调制解调器(Modem) 下一步,选择Modem的位置。如果你知道在Windows下使用的是哪个COM接口,你在这里选择同样的就可以了。否则你可能要做些尝试。推荐的办法是从ttyS0开始往下逐个尝试。 pppsetup.modem.gif Modem的波特率(baud rate) 下一步,选择最与你的Modem最接近波特率。如果你不知道,你可以在Modem的盒子或者所带的文档中找到它。每个选项都有几个例子,所以应该不难找出正确的那个。 pppsetup.baudrate.gif 回拨 现在你应该用上你的ISP给你的信息了。其实很少有ISP使用回拨,所以你一般都可以选择“NO”。回拨是指你拨了ISP以后,他们拨你的号码让你登陆。(译注:电信就不指望了,真这样的话电话费可以省了:P) pppsetup.callback.gif 如果你确实要使用回拨,那你就应该选择“YES”。然后配置程序会提示你输入你的电话号码、登陆的用户名以及密码。你可以先不输入用户名和密码。最后,你还要输入你的ISP使用的认证方式。如果他们使用CHAP或者PAP,那么选择“YES”。你以后还会需要配置他们,这个一会再说。如果ISP不用这两个,那么选择“NO”,然后参考下面的“Chat脚本”那个部分。 Modem的初始串 除非你使用的是一个很另类的Modem,你一般都可以直接按回车来选择默认的初始串(“AT&FH0”)。不然你就得翻出你的Modem的说明书了。 pppsetup.initstring.gif 域名 现在你需要输入你的ISP的域名了。这部分内容一般类似于“example.net”,“slackware.com”等等。(好吧,肯定不是slackware.com )pppsetup.domain.gif DNS的IP地址 你的ISP应该会给你提供他们的DNS服务器的地址。你如果已经有了的话直接填到方框里就行了,否则你应该去ISP那里问一下。 pppsetup.dns.gif 认证方式 这个问题可能也需要一些尝试才能完全搞定。你需要搞清楚你的ISP到底使用的是哪种认证方式:CHAP?PAP?还是其他?最简单的办法就是直接给他们打电话。然而如果你连接以后出现了login和password的提示,一般你应当选择“SCRIPT”,否则还得去问ISP。 pppsetup.authentication.gif PAP或者CHAP 如果你的认证方式选择了“PAP”或者“CHAP”,程序会提示你输入用户名。你的ISP应该已经给了你一个用户名,如果还没有,那赶快去找他们,肯定是什么地方出问题了。 然后你应该在接着的一个对话框输入ISP给你的密码。 Chat脚本 如果你选择的是“SCRIPT”,你将会看到一个相当长的关于chat脚本的说明。仔细阅读,因为它把所有的东西都说的很清楚了。基本上来说,脚本要求你描述的是ISP将会发给你的信息内容以及你的计算机应当回应的信息内容。 然后你会进入一个循环,你将不断的输入ISP将会传过来的信息以及你的计算机应该发回的信息。一旦你完成了,只要在一个空的输入框直接按回车,程序就会结束输入。 结束 终于,你将看到最终生成的ppp配置文件了。其实现在你并不能对这些文件做什么修改,但是你至少可以大致察看一下是不是所有的内容都对了。最后按回车保存配置并退出pppsetup。 这个屏幕其实也包含了很多关于如何建立和断开连接的信息。最基本的原则是这样的:在root下运行ppp-go是建立连接,一旦你看到了一个本地IP和一个远程IP,那么连接就已经建立了。而ppp-off则会断开连接。 pppsetup.done.gif 三、/etc目录的文件 1. /etc/inetd.conf 在网络中心的一个操作系统上,同时运行许多服务是不明智的。一般来说对于每个服务,都要有一个对应的程序在某处监听外来的连接,这对一个支持很多服务的服务器来说是一个沉重的负担。而inetd正是为了减少这种负载而创造出来的。inetd其实就是一个“互联网超级服务器(internet superserver)”,它同时监听多个服务,每当收到某个服务的连接请求,inetd就运行相应的服务程序来处理。这样,本来的很多等待连接的服务程序就减少到了一个。 /etc/inetd.conf是inetd的配置文件。其中指定了连接和服务程序的对应关系。inetd(8)的man文档对此做了详细的描述,但我们还是要来看一下基本的内容: ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd -l -i -a 这行指定了ftp服务器的配置。注意行的开头是协议名称(“ftp”),行末则是要响应这个连接而运行的命令。在这里,这个对应的服务程序是/usr/sbin/tcpd。这是一个“包装”程序,用来为被包装的程序提供一些基本的安全措施。wu.ftpd则是我们真正的ftp服务程序,只不过被tcpd包装过了,真正的调用由tcpd来进行。关于tcpd的更多信息可以在“tcp包装器”一节中找到。 就像许多其他系统文件一样,inetd.conf中的注释行以#字符开头。你可以简单的以此来加入或者取消某些服务,然后重新运行inetd就可以了。 2. /etc/resolv.conf 这个文件用来告诉系统到哪里进行DNS查询。机器用到的所有的DNS服务器都在这里列了出来,同时主机的域名也是在这里指定的。下面是resolv.conf的一个例子(这是从我正在用的笔记本上弄下来的,主机名和域名是ninja.tdn): domain tdn nameserver 192.168.1.1 search tdn. slackware.com 第一行指定了ninja的域名,这是紧跟在主机名后面的东西。第二行就是我们局域网的DNS服务器。在这里你可以同时指定多个DNS服务器,需要域名解析的时候系统会逐个尝试。 最后一行比较有趣。它假设了我的系统中默认的域名。举个例子,我有两台机器分别叫做zuul.tdn和hejaz.slackware.com,那么我可以直接ping zuul和ping hejaz来ping这两台机器。对于“zuul”,ping程序会首先尝试在后面加一个域名“.tdn”,然后就找到了这台机器。而对于“hejaz”,ping程序在尝试“hejaz.tdn”失败后,就会继续尝试“hejaz.slackware.com”。注意在search这一行上,所有的域名(除了最后一个)都要以一个“.”结尾。如果只有一个,因为它是最后一个,所以不必加“.”。 3. /etc/hosts hosts文件是一种简单的域名解析机制。该文件列出了主机名和它们对应的IP。这在小型网络(没有必要使用DNS)或者DNS出问题的时候都很有用。在系统启动的时候,由于DNS不可用,系统对域名解析采用的就是这种机制。我机器上的hosts文件是这样的: 127.0.0.1 localhost 192.168.1.32 ninja.tdn ninja 第一行是本机地址(译注:这就是为什么localhost可以用来代表本机的原因)。实际上你可以给一个IP地址对应多个名称,用空格隔开它们就可以了。因此,在第二行,我就把“ninja.tdn”对应成了192.168.1.32,同时我还把“ninja”也写上了,这样在我偷懒直接输入“ninja”的时候该条就会被用到。 四、rc.inet1 /etc/rc.d/rc.inet1文件用于设置网络的一些底层方面的内容——初始化设备、设置地址和路又表。Slackware中的rc.inet1有很详细的注释,这里不在赘述。 五、rc.inet2 /etc/rc.d/rc.inet2用于设置网络的其他内容:运行服务和守护进程,并处理所感兴趣的网络选项。下面列出一块代码作例子: # Start the NAMED/BIND name server: if [ -f ${NET}/named ]; then echo -n " named" ${NET}/named -u daemon -g daemon fi 这里重要的一行是第四行,用于运行named(8)程序。其余部分格式基本是固定的:“if”语句检查named程序是否存在,echo那一行在系统启动的时候把要运行named程序的这个消息打印到屏幕上。你会发现rc.inet2中的大多数服务都是以这样的语句块运行的:检查是否有明显的不该运行该程序的原因,然后显示一个运行该程序的消息,最后是运行该程序的实际命令。rc.inet2也被详细的注释过,你可以马上打开看一会。 六、NFS(网络文件系统) 网络文件系统的目的显然是要在网络上共享不同机器上的文件。NFS最酷的部分在于它能够使用户在一台机器上直接mount另一台机器的共享文件夹,然后用户可以直接把它看作本地的文件。 这种透明性的实现建立在以下两个基础上。第一,服务器上必须有相关的服务运行:portmap(8)、nfsd(8)和mountd(8)。第二,服务器必须显式的指出准备把哪些文件共享,这一步通过/etc目录下的exports(5)文件完成。 对于第一个部分,只要安装好tcpip1.tgz,rc.inet2就会帮你搞定剩下的事情。/etc/exports则比较有趣。 假设在battlecat.tdn上有一个图片目录,而我想把它mount到ninja.tdn。在battlecat上,我们需要在/etc/exports里加上类似这样的一行: /var/media/images ninja.tdn(ro) 于是在ninja上,我只要输入如下命令就可以把这个图片目录mount到本地的/mnt了: # mount -t nfs battlecat.tdn:/var/media/images /mnt 不幸的是,这样一来我就没有了对这个共享目录的写权限——battlecat的/etc/exports中有“(ro)”选项,表示只读。所有类似的选项都应该放在客户端的名称后面,并且放置在一个括号里,不同选项间用逗号隔开。比如: /var/media/images ninja.tdn(rw,no_root_squash) “rw”显然是可读可写的意思——根据用户和组的映射(详细解释见exports(5)相应的man页面),ninja上的用户可以得到写权限。我不喜欢squash,所以留到man里面解释吧。如果你想用NFS做很多事情,exports(5)会给你带来很大的方便。 七、tcp_wrapper(TCP包装器) tcp_wrapper是这样一套基本系统,它可以用来禁止(或者显式的允许)特定的主机对某些服务的访问。简单的说,它的工作原理是这样的: inetd(internet super-server)运行很多的服务,其中很多都是由tcpd包装好的。换句话说,tcpd是真正运行这些服务的程序,但是inetd不知道这些(其实它根本不关心)。tcpd根据/etc/hosts.allow和/etc/hosts.deny来判断是否允许传来的连接请求。 这些文件中的规则可以很复杂,我们假设pyramid.tdn确实很讨厌,根本不让我们可怜的mojo.tdn安静一下。于是mojo.tdn可以这样设置/etc/hosts.deny: ALL: pyramid.tdn 这行的意思很清楚:通过tcpd的保护阻止pyramid使用mojo上的所有服务。除此之外,如果你还想禁止某个域名的所有主机,那么应该这样写: ALL: pyramid.tdn, .annoying.domain 但是等等!我哥们儿Hobbes的机器域名也是.annoying.domain,我不想让他被阻止(我只是不想他之外的那些烦人的人来访问)。这也很简单,我们不动前面的hosts.deny,而是把Hobbes加到hosts.allow中: ALL: hobbes.annoying.domain 更多的细节可以察看tcpd(8)、hosts_access(5)和hosts_options(5)。实际上tcp_wrapper系统比上面所说的更加灵活,并且很值得进一步的研究。 八、总结 在本章中,你学到了如何配置你的系统,使之连接到网络上,如何配置文件,以及一些基本的安全原则。除此之外,你知道了什么是NFS以及如何配置它。一旦你的系统成为了网络的一部分,你就可以访问网络上的各种资源:邮件、新闻和网页。如果你想知道基本网络程序的更多知识,请参见第十三章。 |
|
|
|
||
|
|
第 3 帖 | |
|
|
题目:Preface——前言
作者:chendy 创建日期:2004年12月27日 最后更新:2004年12月27日 版权:GPL 正文: 【前言】 Slackware Linux操作系统是一个基于Intel构架计算机上的强大平台。它的设计目标是稳定、安全,同时可作为高端服务器和强大的 工作站。 这本书的目的是指导如何你开始使用Slackware Linux操作系统。这并不意味着简单面面具到地覆盖该发行版的所有细节,而是显示 它能作什么并告诉你操作该系统的基本知识。 在你有了Slackware Linux的使用经历后,我们希望你能将本书作为手边的参考。我们同样希望当你的朋友们问到“你所运行着的酷 毙了的Slackware Linux操作系统”时你会将本书借给他们。 然而这部书也许不是符合你口味的小说,我们依然会试着尽量使它有趣。运气好的话,我们也许会理出一个电影主题,当然我们也希 望你能从中学到东西并觉得它有用。 好了,请看下文。 【书中使用的约定】 这本书是用SGML用DocBook 4.0 DTD写成的。因此,我们使用内建DocBook元素来表示文件参考,命令参考,以及文件内容参考。这为 书中的所有方面提供了统一的形式。在你继续以前你需要熟悉一下一些我们的约定。 任何时候我们提到你要运行一条命令时,它将看起来像这样: command 在很少见的场合,一条命令可能会超过本书一行的长度。当那种情况发生时,我们将该命令换行到下一行并使用一个反斜杠标明命令 继续。这是一个例子,来自书中稍后的内容: ifconfig eth0 192.168.1.10 broadast 192.168.1.255 \ netmask 255.255.255.0 文件名和目录将被提及贯穿于全书。它们将看起来像这样: filename directory 许多屏幕的命令输出和配置文件的内容也同样在书中使用到。它们将以这样的形式出现: command output 许多时候当我们列出你将运行的命令时,我们会以一个示例命令符来显示它们。当一个命令需要以普通用户的身份来运行,我们将显 示美元符($)为命令提示符。当一个命令需要以根用户的身份来运行,我们将显示井号(#)为命令提示符。 (正文完)
__________________
Just for fun. |
|
|
|
||
|
|
第 4 帖 | |||||||||||||
|
|
题目:第七章.引导
作者:chendy 创建日期:2005年4月19日 最后修改:2005年4月20日 正文: 第七章 引导 目录: LILO LOADLIN 双重引导 小结 引导你的Linux系统的过程有时候简单,有时候复杂。很多用户在他们的计算机上安装Linux仅此而已。他们只需打开电源,系统就准备好并开始使用。然而,对于其他人会因为特定的任务而使用另外的操作系统,因此他们需要机器上两个操作系统均可访问。 这一节包含了使用LILO和Loadlin,Slackware包含的两个引导器。同时也说明了某些典型双系统引导情况和如何开始设置。 LILO Linux Loader或LILO,是在Linux系统中使用的最流行的引导器。它易于配置并很容易地用于引导其他操作系统。 Slackware Linux自带了一个称为liloconfig的菜单驱动配置工具。这个程序在安装过程中首次运行,但你可以随后通过在命令提示符下输入liloconfig来调用它。 LILO从/etc/lilo.conf文件读取它的设置。不是每次启动都会读取它,而是每回在你安装LILO的时候读取。每次你对配置做了修改都必须重新安装LILO到引导区块。liloconfig将帮助你生成配置文件这样你就可以为你的系统安装LILO。如果你偏好手动编辑/etc/lilo.conf,那重新安装LILO只需在命令提示符下输入/sbin/lilo。 你首次调用liloconfig时,他看起来将会像是这样: 插图 7-1.liloconfig初始屏幕 如果这是你第一次设置LILO,你最好选择“simple”。另外或许你会发现“expert”会更快如果你熟悉LILO和Linux的话。选择“simple”将开始LILO的配置。 如果内核帧缓冲支持已编译到你的内核中,liloconfig将询问你想使用哪一种视频解析度。该解析度也会被XFree86帧缓冲服务器使用。如果你不想让控制台运行于一个特定的视频模式,选择normal将继续使用标准的 80x25 文本模式。 插图 7-2.Liloconfig询问使用哪种视频模式的帧缓冲 LILO的配置的下一部分是选择它的安装位置。这或许是最重要的步骤。下面的列表说明了安装位置: Root 这个选项安装LILO到你Linux根分区的开始。这是最安全的选项如果你在你的计算机上安装了其他操作系统。它确保任何其他引导器不被覆盖。缺点是如果你的Linux驱动器是你系统里的第一个驱动器的话LILO将只能从这里引导。 Floppy 该方法甚至比前面的更安全。它创建一个引导软盘用于引导你的Linux系统。这将使引导器完全与硬盘隔离,所以当你想使用Slackware时你只需从这个软盘引导。 MBR 你可以使用这种方式如果Slackware是你计算机上唯一的操作系统,或者如果你想用LILO选择在你的计算机上的多个操作系统。 注意:该选项将覆盖任何在MBR上其他的引导器。 在选择安装位置后,liloconfig将写入配置文件并安装LILO。就是这样。如果你选择了"expert"模式你会看到一个特别的菜单。这个菜单允许你改变/etc/lilo.conf文件,添加其他操作系统到你的引导菜单。expert菜单看起来像这样: 插图 7-3.liloconfig "expert"模式 无论你的系统(软件)配置如何,安装一个可工作的引导器是简单的。liloconfig让它的安装简单易行。可是,仍然有LILO无法在系统上工作的实例。幸运的是,还有其他选择。 Loadlin 由Slackware Linux自带的另一个引导选择是LOADLIN。LOADLIN是一个 DOS可执行程序可以用来从一个正在运行中的DOS系统启动Linux。它要求Linux内 核存在于DOS分区这样LOADLIN就可以装载它并正确引导系统。 在安装过程中,LOADLIN将以一个.ZIP文件的形式拷贝到root的家目录 。没有LOADLIN的自动安装过程。你将需要拷贝Linux内核(/vmlinuz)和root的家 目录的LOADLIN文件到DOS分区。 LOADLIN很有用如果你希望在你的DOS分区创建一个引导菜单。一个菜单 会被添加到你的AUTOEXEC.BAT文件那将允许你在Linux和DOS中做选择。选择 Linux将运行LOADLIN,从而引导你的Slackware系统。Windows 95下的 AUTOEXEC.BAT文件将提供一个足够(满足需要)的引导菜单: 引用:
始终都可以在命令行使用LOADLIN。你可以以上述例子中相同的形式简单地使用 它。LOADLIN文档包含了很多关于如何使用它的例子。 双重引导 许多使用者设定他们的计算机来引导Slackware Linux和其他操作系统。我们 描述了个别典型双重引导情况如下,以免在你设定你的系统时遇到困难。 Windows 9x/DOS 设定计算机同时有Windows 9x和Linux或许是最常见的双重引导情况。有许许 多多方法你可以设置引导,但本小节仅提及两种。 许多时候当设定一个双重引导系统时,人们总会制定一个完美的计划决定所有 的东西应该位于哪里却胡乱安排安装顺序。理解操作系统需要以一种确定的顺序以设定 双重启动工作非常重要。Linux总是提供任何需要重写主引导记录(的系统)之上的控 制。因此,总是建议最后安装Linux。Windows应该最先安装,因为他总是回把他的引导 器写到主引导记录。 使用LILO 多数人希望使用LILO在Linux和Windows间做出选择。依上所述,你最好先安装 Windows然后Linux。 让我们假设你有一个47GB的IDE硬盘作为你系统中唯一的驱动器。我们再假设 你想分配一半的空间个Windows另一半给Linux。这将在试图引导Linux引发一个问题。 我不知道驱动器空间映射的细节,但猜想碰巧那驱动器余下的23.5GB刚好会超过1024柱 面。一个给这个驱动器好点的布局会是: 引用:
定是在你的磁盘空间里使用两倍RAM大小的容量。一个64MB系统应该有128MB的交换空间 ,依此类推。 依照你的分区布局,你会开始安装Windows。然后设定好并生效,你该安装 Linux。LILO的安装需要特别注意。你要选择“expert”模式来安装LILO。 开始一个新的LILO配置。你要把它安装到主引导记录以使它用于在两个操作系 统做出选择。从菜单中,添加你的Linux分区和你的Windows(或DOS)分区。完成后,你 就可以安装LILO了。 重新启动计算机。加载好LILO并等待用户的动作。你可以按下"Alt"键来获得 boot:提示符。输入你想加载的分区的名字(你设好LILO后这些名字就可以选择)。如 果你忘记了名字,按下Tab键以获取一个可供你引导的操作系统列表。 你还可以通过编辑在你Linux分区上的/etc/lilo.conf文件来配置LILO。你可 以设定它显示一个文本菜单,并总是提供提示符。例如,如果我让我的LILO像这样来显 示: 引用:
引用:
引用:
任何系统。lilo(8)和lilo.conf(5)的联机帮助页提供了更多细节信息。 如果LILO不起作用又如何?有些实例是LILO无法在一个特别的机器上起作用。 幸运的是有另外一种办法来双重引导Linux和Windows。 使用LOADLIN 如果LILO在你系统上不起作用可以用这种方法,或者仅仅是你不想安装LILO。 这种方法同样适用于那些经常重新安装Windows的用户。有了LOADLIN,你无须受限于那 些问题。最大的缺点是你用LOADLIN只能引导Linux。 有了LOADLIN,你可以以任何想要的顺序安装操作系统。注意不要安装东西到 主引导记录,你不想那么做。LOADLIN relies on the Windows partition being bootable.所以在安装Slackware过程中,确定你跳过了安装LILO。 系统安装完之后,从root用户的家目录拷贝lodlinX.zip(这里的"X"是版本号 ,比如"16a")文件到你的Windows分区。同样拷贝你的内核镜像到Windows分区。要使用 Linux你要按照这些步骤来做。这个例子演示如何做: 引用:
贝LOADLIN所必要的材料。做完这些后,你需要重启进入Windows来设置一个启动菜单。 一但进入Windows,进入DOS提示。首先,我们需要确定系统被设为不引导进入 图形界面。 引用:
引用:
个引导菜单。接下来提供了一个例子AUTOEXEC.BAT中一个引导菜单块看起来将像这样: 引用:
们想让它初始化时以只读方式挂载。 Slackware Linux提供了用于这两种方法的工具。市场上还有许许多多其他引 导器,但这些对大多数双重引导设置都能起效。 Windows NT 这是第二种最为常见的双重引导情况。Windows NT会比Windows 9x和Linux的 双重启动多些麻烦。其中之一我们最为关切的是如果主引导记录被LILO覆盖,NT将不能 成功引导。因此,我们必须使用Windows NT自带的OS加载器。下列步骤演示了你如何设 置一个Windows NT和Linux的双重引导系统。
分区最开始的512字节要比说起来更简单。你将需要在Linux中以完成这些。假设你的 Linux分区是/dev/hda2,执行这个命令: 引用:
个问题。Linux没有对NTFS文件系统稳定的写支持。如果你安装了Windows NT并把你的 驱动器格式化为NTFS,你将需要拷贝这些文件到一张FAT软盘随后在Windows NT下读取它 。如果你将(安装)Windows NT的驱动器格式化为FAT,你需要简单的在Linux下挂载它 并拷贝文件过去。无论如何,你将把/tmp/bootsect.lnx从Linux驱动器弄到Windows NT 驱动器上的C:\BOOTSECT.LNX 最后一步是添加一个菜单选项到Windows NT引导菜单。在Windows NT下打开一 个命令提示符。 引用:
引用:
选项。选择它将引导进入Linux。 Linux 是的,大家确实这么做。这的确是最简单的双重系统引导情况。你需要简单地 使用LILO并添加入口到/etc/lilo.conf里。就这些。 小结 本章讨论了使用LILO和Loadlin引导你的系统。同时也讨论了在Linux和其他操 作系统间引导。你应该能够正确配置你的引导方法并双重引导其它操作系统,should you choose to. #本章结束 此帖于 05-04-22 10:07 被 chendy 编辑. |
|||||||||||||
|
|
||||||||||||||
|
|
第 5 帖 | |
|
|
第四章 系统配置
目录 系统纵览 选择内核 概要 在你可以配置系统更高级的部分之前,最好先学习一下系统是如何组织起来的,以及我们可以使用什么命令来搜寻文件和程序。学习一下如何编译一个定制的内核以及有哪些步骤。这一章将使你熟悉系统组织结构和配置文件。然后你可以继续配置系统更高级的部分。 系统纵览 在钻研各方面的配置之前,理解一个Linux系统是如何整合起来的是很重要的事情。Linux系统与Dos或者Windows系统(乃至Macintosh)有着很大的区别,但是这些部分将可以帮助你了解布局以便你可以更轻松的根据你自己的需要配置系统。 文件系统布局 首先在Slackware Linux和Dos或者Windows系统之间,最值得注意的不同点是-文件系统。我们不需要使用驱动器号表示不同的分区。在Linux下,只有一个主目录。你可以联想成Dos下的C盘。你系统上的每一个分区都被挂载成主目录下的一个目录。这有点像一个不断扩容的硬盘。 我们把主目录称作根目录,将它表示成一个斜线(/)。这个概念可能看起来很奇怪,但事实上它使你增加更多的空间时更简单。例如, 我们假设你已经把/home分区的空间使用完了。很多用户安装Slackware时使用一个大的根分区。那么,当一个分区可以挂载到任何目录上时,你可以很简单的接上一块新硬盘,挂载到/home下。现在你可以给你的系统“移植”更多的空间。并且不必移动任何数据。 下面,你可以看到Slackware下主要的目录描述: /bin 必要的用户程序都储存在这儿。这是一个用户使用系统所必须的最小化的程序。像shell和文件系统命令(ls,cp等等)都存储在这。/bin目录在安装后一般不会改变。修改时,常以我们提供的包升级的形式。 /boot Linux装入程序(LILO)使用的文件。此目录安装后可以进行小部分改动。 /cdrom 还记得所有的驱动器都被挂载到一个根目录下的目录么?好,/cdrom为你的光驱提供了一个挂载点。 /dev 在Linux中每样东西都被看作文件,甚至硬件设备,如串口,硬盘和扫描仪。为了访问这些设备,给出了一个叫设备节点的特殊文件。所有的设备节点文件都被储存在/dev目录下。你将会在很多类UNIX系统中发现这个目录。 /etc 这个目录存储着系统配置文件。X Window的配置文件,用户数据库,系统启动脚本的所有文件。系统管理员将会很熟悉这个目录。 /home Linux是一个多用户操作系统。系统中的每个用户都为其个人文件被给予一个帐户和单独的目录,用以储存个人文件。这个目录被称为用户的“home”目录。/home目录是系统为用户主目录提供的缺省的位置。 /lib 基本操作所需要的库文件储存在这。C库,动态装入程序,ncurses库和内核模块就在其中。 /lost+found 当系统启动时,文件系统查找错误。如果发现错误,fsck程序运行查看是否可以修复。修复的文件系统部分将写入/lost+found目录下。 /mnt 这个目录为硬盘或可移动磁盘提供临时挂载点。 /opt 可选择的软件包。每个软件包安装到/opt/<软件包名称>,使以后移除更方便。Slackware发行版本有很多东西在/opt目录下(如KDE在/opt/kde目录下),你同样可以增加软件到/opt目录下。 /proc 这是一个独特的目录,它不是文件系统真正的一部分,而是一个虚拟的文件系统提供访问内核信息。内核想要你知道的各种信息通过/proc目录下的文件传送给你。你同样可以通过这些文件发送信息给内核。试试使用命令 cat /proc/cpuinfo。 /root 系统管理员被称为"root"。root的主目录在/root而不是/home/root。原因很简单。如果/home与/不在同一分区,就无法被挂载?root自然应该进入系统修复错误。如果它的主目录在被损坏的文件系统上,就很难进入系统。 /sbin root所运行的和在系统启动过程所用到的核心程序都在这儿。普通用户不能执行这个目录下的程序。 /tmp 临时储存单元。所有的用户对这个目录都有读写的权力。 /usr 这是Linux系统中的一个大目录。别的任何东西几乎都在这,程序,文档,内核源代码和X Window系统。你所安装的程序很有可能都在这个目录里。 /var 系统日志文件,缓冲数据和程序锁定文件储存在这儿。这是一个经常变换数据的目录。 你现在应该对文件系统中哪一个目录包含什么有了很好的认识。下一章节将帮助你更容易查找特殊文件,这样以来你可以不必手工查找了。
__________________
————————————————————————————— 我的linux在现实中 是孤独的 只有指望兄弟们多多帮忙了! ^_^ ————————————————————————————— Linux ibm390e 2.4.33.3 #1 Fri Sep 1 01:48:52 CDT 2006 i686 pentium2 i386 GNU/Linux ————————————————————————————— 此帖于 05-04-23 11:25 被 kobe0208 编辑. |
|
|
|
||
|
|
第 6 帖 | |||||||
|
|
题目:第九章.文件系统结构
作者:chendy 创建日期:2005年4月22日 最后修改:2005年4月23日 正文: 第九章.文件系统结构 目录 所有权 权限 连接 挂载设备 挂载NFS 小结 我们已经讨论了Slackware Linux中的目录结构。你已经可以找到你需要的文 件和目录。但对文件系统而言不仅仅只有目录结构。 Linux是个多用户操作系统。系统的每一方面都是多用户的,包括文件系统。 系统存储了诸如谁拥有文件和谁可以读取它等这类信息。还有关于文件系统其他独特的 部分,例如连接和NFS挂载。这一节说明了这些,以及文件系统的多用户特性。 所有权 文件系统为系统中每个文件和目录存储所有权信息。这包含了哪个所有者和组 拥有这个文件。查看这些信息的最简单的办法就是使用ls命令: 引用:
到用户“root”和组“bin”拥有这个文件。 我们可以简单地用chown(1)命令(意即“CHange OWNer”)和chgrp(1)(意即 “CHange GRouP”)命令改变文件所有者。要把文件的所有者改为“daemon”,我们可 以使用chown: 引用:
引用:
引用:
你需要修正文件或设备节点的所有权。 权限 权限是文件系统多用户特性的另外一个重要部分。利用它们,你可以改变谁可 以读、写、和执行文件。 权限信息是以四位八进制数字方式存储,每一位指定了一组不同的权限。依次 是所有者权限,组权限,和全局其他用户权限。第四位八进制数用来存储诸如设置user ID,设置group ID,和“粘滞”位等特定信息。八进制数值对应的权限模式是(它们同 样有对应的字母可以由ls来显示并可被chmod所使用): 引用:
你可以将“6”用在权限信息的组部分。 bash的默认权限是: 引用:
所有者,组和全局)。我们看到所有着拥有读,写和执行的权限(rwx)。组只有读和 执行(r-x)。 (未完待续) |
|||||||
|
|
||||||||
|
|
第 7 帖 | |
|
|
其实翻译一章并不占用大家很多的时间,比如我就用了我睡午觉的时间翻译了一章(最近杭州天气太热了,睡不着)
ZipSlack 和 BigSlack 目录 什么是 ZipSlack/BigSlack? 获得 ZipSlack/BigSlack 安装 启动 ZipSlack/BigSlack 增加、删除和更新软件 一般性问题 获得帮助 总结 什么是 ZipSlack/BigSlack? ZipSlack 是一个特殊版本的 Slackware Linux。它设计安装在你的 DOS/Windows 分区 上面。然而,这是一个最基本的安装,并没有安装 Slackware 所提供的所有安装包;如 果你想让 ZipSlack 同时运行所有的软件包的话,你可以试试 BigSlack。 ZipSlack 你可以从它所发布的名字就可以知道,它是以一个大的 ZIP 文件发布的。DOS 和 Windows 用户对于这些文件可能非常的熟悉。它们是一种压缩文件格式。ZipSlack 安装 包已经包含了所有你启动和运行 Slackware 的东西。 要注明一点的是,ZipSlack 和 BigSlack 相对于普通的安装模式有很大的不同。虽然它们 使用同样的函数,包含了同样的程序,但是它们的调用是不同的。下面列出了 ZipSlack 和 BigSlack 的有点和缺点。 最后一点,你必需仔细阅读在 ZipSlack 和 BigSlack 目录里的文档。它包含了有关安装、 引导、等一般性使用问题方面的最新信息。 优点: × 不需要重新分区 × 一个跳过安装步骤直接学习 Slackware Linux 的好方法 缺点: × 使用 DOS 文件系统,系统效率没有普通 Linux 文件系统高 × 不能在 Windows NT 下运行 获得 ZipSlack/BigSlack 获得 ZipSlack 或者 BigSlack 非常的容易。如果你拥有了官方发布的 Slackware CD 套件,ZipSlack 或者是 BigSlack 就已经包含在里面了。你需要做的仅仅就是 将它塞进你的 CD-ROM 驱动其里面。它可能在第三张或者是第四张光盘上,或许查 看光盘上的标签仍然是一个非常好的方法。 如果你想下载 ZipSlack 或者是 BigSlack,你可以先到我们的 Slack web 页查看 最新的消息: http://www.slackware.com/getslack/ ZipSlack 和 BigSlack 是每一个 Slackware 发行版本的一部分。你可以从 FTP 站点 下的目录里查看最新的发行版本。最新的发行版本目力可以从这个地址找到: ftp://ftp.slackware.com/pub/slackware/slackware/ 你可以找到 ZipSlack 在 /zipslack 子目录下,BigSlack 在 /bigslack 子目录下。 ZipSlack 提供了一个大的 .ZIP 压缩文件,或者是一张磁盘大小的磁盘境象。磁盘镜 像在 /zipslack/split 目录里。BigSlack 仅仅发布的是一个大的文件。 不要仅仅停留在那个 .ZIP 文件上。你仍然需要下载同目录下的文档和启动引导镜像。 安装 当你下载好文件以后,你必需解压缩 .ZIP 文件。同时你必需确定你使用的是 32 位 的解压缩程序。因为压缩包里的文件名对于一个 16 位的解压缩程序来说过长。在 Windows 下的 32 位解压缩程序有很多,比如 WinZip 和 PKZIP。 ZipSlack 和 BigSlack 都设计成解压缩在每个驱动器的根目录上(比如 C:或者 D:)。 在 Slackware 安装好以后,会建立一个 \LINUX 目录。你可以在目录下找到启动系统所 需的文件。 当你解压缩完毕以后,在你所选择的驱动器下的根目录中应该就会有一个 \LINUX 目录 (我们下面假设已经解压缩文件到驱动器 C:下)。 引导 ZipSlack/BigSlack 有很多手段引导 ZipSlack 和 BigSlack。最通用的作法就是使用目录下的 LINUX.BAT 文件 从 DOS 下(或者是 Windows 9X 的 DOS 模式)启动系统。这个文件必需重新编辑,以适合你 自身的系统。 使用你喜欢的编辑器编辑 C:\LINUX\LINUX.BAT 文件。在文件的顶部会有一大段的注释,它 会告诉你需要在什么地方修改配置(并且会告诉你怎样在一个额外的 ZIP 驱动器上引导系统)。 不要对于例如 root= 这样的参数感到害怕。这里有几个例子,你可以挑选一个尝试一下。如 果不行,你可以重新在此编辑这个文件,注释掉不能工作的语句,并且尝试下别的。 当你注释掉你所要的行以后,保存文件并退出编辑器。启动你的系统到 DOS 模式下。 注意:在 Windows 9x 的窗口模式下的 DOS 仍然不能工作。 键入 C:\LINUX\LINUX.BAT 引导系统。如果一切顺利,系统会提供给你一个登陆符登陆系统。 使用 root 帐号登陆,没有密码。你可能会给 root 设置一个密码,为你自己增加一个帐户。对 于这点你可以参考本书其他的章节。 如果使用 LINUX.BAT 文件无法引导你的系统,你需要参考 C:\LINUX\README.1ST 文件使用其 他的方法引导系统。 增加、删除和更新软件 ZipSlack 和 BigSlack 可以使用和普通模式安装的 Slackware 系统一样的包。这样意味着你 可以使用标准的 Slackware 软件包工具增加、删除和更新软件。你仍然可以从 Slackware 光 盘上安装所需要的软件。 一般性问题 这里列出里 ZipSlack 和 BigSlack 运行时最常见的问题。如果你的问题没有在这里列出,我们 仍然有其他的方法解决它。下一个章节我们将详细介绍获取它的方法。 Unable to open initial console 这个问题可是你时在 LINUX.BAT 文件里的 root= 指定了无效的设备。重新编辑 LINUX.BAT 文件, 并为 root= 指定一个有效的设备。如果你对于这个意思实在是没有办法,你可以尝试下每一行例 子,直到它正确运行为止。 这个问题仍然可能是你在解压缩在非根目录下造成的。文档必需解压缩在驱动器上,而非一个子目 录中。 Kernel panic: VFS : Unable to mount root fs 这个信息意味着你在 LINUX.BAT 中的 root= 指定了一个错误的设备。你必需重新编辑 LINUX.BAT 文件,重新选择一个其他的 root= 设备。如果你不知道怎么做,尝试一下里面所有的选项,总有一 个适合你的系统的。 获得帮助 在你提问之前,你必需阅读 C:\LINUX 下的文档,查看一下是否有你提出的问题。 如果你阅读了文档以后仍然没有解决此问题,有几个很好的途径去寻找解决它们的方法: ZipSlack FAQ 那里有一份清单列出了最常见的问题和它们的解答,同时在 C:\LINUX 目录下的 FAQ.TXT 也是这个 清单的内容。你还可以访问我们的 web 网站获取: http://www.slackware.com/faq/ ZipSlack 论坛 这里有一个在线的论坛和其他 ZipSlack 和 BigSlack 讨论。你可以在这里发送你的问题,其他 的用户会努力帮助你。这是一个非常好的方法和其他用户相互交流相互学习。 http://www.slackware.com/forum/ 电子邮件支持 Slackware 客户小组会努力的帮助您在 ZipSlack 或者是 BigSlack 方面的问题。但是您必需尽 可能的写清楚问题的所在和出现的信息,这样我们才可能解决您提出的问题。 <support@slackware.com> 总结 你必需明白什么是 ZipSack 和 BigSlack。如果你决定使用它们其中一个,你必需知道如何去 安装、引导、解决问题和获取帮助。ZipSlack 和 BigSlack 非常适合在您不想删除你现有的 Windows 分区的前提下,尝试 Slackware。
__________________
* Mail/Gtalk: i.feelinglucky[at]gmail.com * My Blog: http://www.gracecode.com * Old homepage: http://slack.linuxsir.org/amdk6/ |
|
|
|
||
|
|
第 8 帖 | |
|
|
标题: Slackware Linux Essentials的部分翻译, Slackware Linux Essentials
(translated by kill_ads) 一, 1)软件系列 A 最基本的系统,包含一些必要的程序,一个文本编辑器和基本的通信工具 AP 不需要x-window环境的各种程序 D 程序开发工具,编译器,调试器,解释器和帮助文档 DES 包含一些GNU libc crypt() 函数 E GNU emacs F FAQs, HOWTOs和各种文档 GTK GNOME桌面环境,GTK库和GIMP K Linux内核源代码 KDE K桌面环境,和MacOS,windows很像的一个x环境,KDE需要Qt库的也包含了 N 网络程序,Daemons,邮件程序,telnet,新闻阅读器等等 T teTeX文档格式系统 TCL 工具支配语言,Tk, TclX, TkDesk. X 基本的x-window系统 XAP x应用程序,不属于主要的x-window桌面环境,例如:Ghostscript和Netscape XD X11程序开发,库,服务器连接包和PEX支持 XV XView库,开放的虚拟的和非虚拟的window管理器,还有其他的Xview应用程序 Y 游戏 2)几种安装模式的选择:(SELECT PROMPTING MODE) FULL 此选项将安装"PACKAGE SERIES SELECTION"中选择的所有软件包.没有任何提示.这是最简单的安装方法,此过程中你不需要做任何选择.当然,这个选项会占用大量硬盘空间. NEWBIE 此选项将安装所有你选择的系列中的必须的包.对于其他包,它会在提示你选择YES NO或者SKIP,YES和NO是显而易见的,SKIP将继续下一个软件包.此外,你还会看到每一个软件包的描述和大小,帮助你作出选择.我们推荐新用户使用此选项,因为它可以确保所有必须的包都被安装.但是,由于有提示的原因速度会比较慢. MENU 这是一个更快更高级的NEWBIE的版本.对于每一个系列都会有显示,你可以选择你想安装的不必要的包.必要的包将不会被显示. EXPERT 对于很多高级用户,可使用此选项.它允许你自由选择安装包.如果取消必要的包,会导致系统瘫痪.换句话说,你可以完全控制.从每个系列中选择你要安装的包.这个选项不推荐新手使用,因为它太容易给自己找麻烦了. CUSTOM & TAG PATH 此选项也是面向高级用户,它允许你安装基于custom tag文件.这对于批量安装很有用,很快捷.更多的信息参考第16章 二,主要目录 /sbin 用户的一些基本的应用程序都存放在这里,包括了一个用户使用系统时最基本的程序,例如:shell,文件 系统命令(ls,cp等)。/sbin目录在系统安装后一般就不再会被修改,如果修改了,通常是我们在进行包 升级 /boot 系统加载器LILO的文件,这个目录在系统安装好后一般也不会被修改 /cdrom 记住,每个驱动器都将被挂载为一个目录放在根目录下,/cdrom就是你的光驱的一个挂载点 /dev linux中所有东西都将被认为是一个个文件,甚至是串口,硬盘,扫描仪这样的硬件。为了访问这些设备 ,要使用一个特殊的被称为device node的文件,所有的device node都存储在/dev目录中,当接触许多 UNIX类的系统后,你就会发现这是真的。 /etc 这个目录存放着系统配置文件,x-window配置文件,用户数据库,启动脚本。系统管理员对这个目录十分 熟悉。 /home linux是一个多用户的操作系统,每一个用户都会被给予一个账户和唯一个存放个人文件的目录,这个目 录被称为是用户的家。 /lib 这里存放着基本的系统需要的库文件,C库,dynamic loader,ncurses库,还有内核模块 /lost+found 系统启动的时候会检查错误,如果发现错误,fsck程序将会查看是否有错误被修正,修正的部分将会被写 入/lost+found目录里 /mnt 这个目录被临时提供给挂载硬盘或者移动存储器 /opt 可选择的软件包,建立/opt的想法是把每一个软件包都安装到/opt/<软件包>, 这将有利于以后删除,slackware分发了一些东西到/opt/(例如kde安装到/opt/kde)不过你也可以把任何 东西放到里边 /proc 这是一个特殊的目录,他不属于真正的文件系统,是一个虚拟的用来访问linux内核信息的文件系统,你可 以在/proc里输入files来获取内核的很多信息;你也可以通过他来向内核发送信息,可以尝试一下 cat /proc/cpuinfo /root 系统管理员对这个目录很熟悉,/root替代了/home/root,原因很简单:如果/home和/在不同的分区,并且 没有被加载,root会很自然的登陆并修复问题,那如果/home在损坏的文件系统上,那root就无法登陆了 /sbin 这里存放着系统启动过程中root使用的一些基本程序,正常情况下用户不能在这个目录中运行程序 /tmp 临时存储单元,任何用户都可以读写此目录 /usr 这是linux系统中很大的一个目录,几乎大多数东西都在这里,程序,文档,内核源代码,x-window系统, 这是你安装程序的目录 /var 系统日志,缓存数据,程序锁文件都存放在这里,这里的数据会经常改变 三,系统启动 slackware在内核被加载后第一个运行的程序是init,此程序会读/etc/inittab文件,然后执行/etc/rc.d/rc.S脚本在进入runlevel前准备系统.rc.S会激活你的虚拟内存,挂载文件系统,清空某些日志目录,初始化即插即用设备,加载内核,配置PCMCIA设备,设置串口,然后运行System V init脚本.rc.S还会调用/etc/rc.d中部分脚本来完成任务. rc.S 系统初始化脚本 rc.modules 加载内核模块,例如:网卡,ppp支持等,如果此脚本找到了rc.netdevice,就会执行它 rc.pcmcia 用户pcmcia设备,例如:笔记本用户的pcmcia调制解调器,网卡 rc.serial 使用setserial命令来配置你的串口设备 rc.sysvinit 用户运行期望的runlevel,下面有详细介绍 四,Runlevel初始化脚本 rc.0 关闭系统(runlevel 0) rc.4 多用户启动(runlevel 4),但是在X11中使用KDM, GDM, 或 XDM作为登陆管理器 rc.6 重启系统(runlevel 6) rc.K 以单用户模式启动(runlevel 1) rc.M 多用户模式(runlevel 2和3),使用标准文本登陆方式,在slackware中这是默认的runlevel 五,网络初始化 rc.inet1 由netconfig生成,这个文件用户配置网络 rc.inet2 在rc.inet1之后运行,启动基本网络服务 rc.atalk 启动AppleTalk服务 rc.httpd 启动Apache服务器 rc.samba 启动windows文件和打印共享服务 rc.news 启动新闻服务器 六,其他文件 rc.cdrom 开启后,这个脚本会扫描光盘驱动器并且挂载为/cdrom rc.gpm 开启鼠标服务,允许你在linux控制台里拷贝和粘贴 rc.ibcs2 开启Intel Binary Compatibility支持,如果你要运行从SCO UNIX或其他商业UNIX上编译来的程序,可以使用此功能,但这不是运行Linux程序所必须的 rc.fonts 为控制台加载自定义字体 rc.local 含有很多特殊的启动命令,这个文件本来是空的,留给系统管理员使用。这个脚本将在最后运行 七,/etc里的文件 /etc/inetd.conf inetd的配置文件 /etc/resolv.conf DNS配置信息 /etc/hosts 本机域名解析host文件 |
|
|
|
||
|
|
第 9 帖 | |
|
|
第十五章 文件归档
15.1 gzip gzip(1) 是GNU的压缩程序。它只对单个文件进行压缩。基本用法如下: $ gzip filename 程序执行以后,文件名会变成filename.gz,而且一般情况下大小会比原文件要小。注意,程序并不新建一个新的文件filename.gz, 而是将filename变成filename.gz。一般来说,文本文件压缩率会比较高。而那些jpeg图像,mp3等类似文件的压缩率就没有那么好了,因为它们本来就已经被压缩过了的。这个基本用法考虑了压缩时间和压缩后文件尺寸的平衡问题(译者注:如果要使压缩后的文件更小,就需要用到更多的时间)。要得到最小文件大小(最大压缩),可以使用如下用法: $ gzip -9 filename 这样就可以得到gzip能够压缩的最小文件尺寸,但是需要更长的压缩时间。上面的数字越小,压缩就越快,相反压缩率也就越小。 将gzip压缩的文件解压缩,有两个命令可以使用,但实际上它们是同一个程序。只要压缩文件的后缀名被gzip程序认到,它就可以解压缩。后缀名可以是:.gz, -gz, .z, -z, .Z 和 –Z。可以使用的第一个命令是: $ gunzip filename.gz 使用上面的命令后,filename.gz会被解压缩并去掉后缀名.gz变成filename。gunzip 实际上是gzip程序的一部分,它跟gzip –d 这个命令有等同效果。但是我们使用的时候,经常使用gunzip, 因为这个用法似乎更酷些。: ^ ) 15.2 bzip2 bzip2(1)是 Slackware Linux里面压缩程序的另一个选择。它的压缩算法不同于gzip。与gzip 相比有其优点,也有一些缺点。bzip2的主要优点在于它压缩后文件的尺寸,对于相同文件,bzip2 压缩后的尺寸几乎总是小于gzip的压缩结果。有些时候,这个差距会相当大。这个优点对于使用小猫下载文件的用户来说表现得尤为突出。需要提醒的是,当在一些公共ftp 服务器上下载文件时,在.gz和.bz2文件中尽量选择.bz2文件是一种基本的网络礼节,因为这样可以减少服务器的负担以给更多人服务。 bzip2的缺点在于,它占用的CPU的使用率会比gzip更多。这就是说,压缩同一个文件,bzip2要比gzip使用更长的时间,占用更多的CPU资源。所以,当你在两者之中考虑选用哪种压缩程序的时候,需要衡量的是速度和压缩后的文件尺寸哪个对你来说更重要些。 bzip2的使用方法和gzip是一样的,所以我们不再花时间讨论了。像gunzip一样,bunzip2的效果等同于bzip2 –d。与gzip最大的不同是bzip2使用后缀名.bz2. $ bzip2 filename $ bunzip2 filename.bz2 $ gunzip -9 filename 15.3 tar tar(1)是一个GNU的磁带归档程序。它可以将几个文件或者目录打包压缩成一个文件。这个特点让我们可以压缩整个目录树,而单使用gzip和bzip2是无法做到的。tar有很多命令行参数,你可以在手册页找到它们。在这一节里,我们只是讨论一下那些经常用到的tar的用法。 tar 最常用的用法是将我们从网站或者ftp上下载的文件解压缩然后在解包。a.tar.gz是我们经常看到的文件名格式,这就是我们通常说的"tarball",它是先把一些文件用tar打包,然后在用gzip压缩。你也有可能会看到名为a.tar.Z的文件,这也是同样的做法,但是你一般只会在比较老的Unix 系统里面遇到。 另外,你也会在另外一些地方看到如a.tar.bz2这样文件。Kernel源文件就是用这种格式发布的,为的是可以让文件更小,便于下载。你可能已经猜到,它就是先将一些文件用tar打包,然后再用bzip2压缩。 我们可以将上述格式的文件用tar加一些命令行参数进行解包。-z参数表示在首先运行gunzip将文件解压缩。将一个tarball解包的最常用的用法是: $ tar -xvzf filename.tar.gz 这里有不少的参数,那么它们各自有什么意思呢? -x表示提取文件。这是一个非常重要的参数,因为它告诉tar对输入的文件具体怎么处理。在这里,我们要将打包的文件分离还原成打包前的状态。 -v表示详述。加入这个参数让程序将解包出来的每一个文件列出来。如果觉得列出来太烦了,你完全可以把这个参数去掉来关闭这个功能。相反,如果你需要每个解包文件更详细的信息,则可以使用-vv参数。 -z是告诉tar先运行gunzip将文件解压缩。 -f是告诉tar在命令行输入的下一个串字符是需要处理的文件。 上面这个命令也可以用一些其他形式的写法。在比较老的系统里面由于缺少新版本的GNU tar程序,你可能会看到它是写成这样的: $ gunzip filename.tar.gz | tar -xvf - 这行命令先把文件解压缩,然后把解压的文件对输出到tar程序。gzip可以把其处理完的数据输到标准输出。这里就是把gzip解压缩的文件作为标准输出,然后由管道把文件送到tar程序进行解包。最后的 “-”表示处理标准输入。它将解包后的文件写入磁盘。 还有一种写法是将第一种命令格式的短划线去掉,像这样: $ tar xvzf filename.tar.gz 你也可能会碰到bzip2压缩的打包文件。在Slackware Linux所带的tar程序版本 可以像gzip压缩的打包文件一样,只是要把参数-z用-j代替: $ tar -xvjf filename.tar.bz2 这里需要注意的是,tar会把解包的文件放到当前目录。所以如果要把一个放在/tmp目录文件解压缩到你的家目录的话,这里有一些做法可供选择: 选择一,把文件拷贝到家目录,然后解包 选择二,指定需要解包文件的路径 选择三,用-C 参数指定解包后存放文件的路径 $ cd $HOME $ cp /tmp/filename.tar.gz $ tar -xvzf filename.tar.gz $ cd $HOME $ tar -xvzf /tmp/finename.tar.gz $ cd / $ tar -xvzf /tmp/filename.tar.gz -C $HOME 上面所有的命令都是等效的。每一种做法都是把文件解包到你的家目录,源文件则留在原来的地方。 上面讲了那么多用tar解包的命令,现在让我们来看看tar是如何来打包的吧。 在大多数情况下,只需要用参数“-c”代替参数“-x”就可以了: $ tar -cvzf filename.tar.gz . 在这行命令里面,参数-c是告诉tar来建立一个打包文件;而参数-z是将打包的文件通过gzip程序进行压缩。filename.tar.gz 是你将要建立的文件名。(译者添加:命令行最后的“.”是告诉tar将当前目录下的所有文件/文件夹打包) 参数“-f”不是必需的,但是通常来说加上会是一个好主意。如果不加,tar会将数据写到标准输出,这就需要管道将tar输出到另外一个程序,像这样: $ tar -cv filename.tar . | gpg --encrypt 这行命令把当前目录下的所有文件打包建立一个没有被压缩的tar归档文件,通过管道输出到gpg程序进行加密,让不知道密钥的人无法读到文件内容。 15.4 zip 最后,讨论一下处理zip文件的两个程序。zip文件在Windows世界里面是极为常用的,所以Linux也有相应的程序来处理它们。zip文件的压缩程序叫做zip(1),解压缩程序叫做unzip(1). $ zip foo * 这行命令会建立一个包涵当前目录所有文件的的zip文件 foo.zip。zip会自动将 .zip后缀名加上,所以我们不需要在命令中加上。你也可以加上一个参数-r使zip将当前目录下的所有文件夹目录也加在zip文件中: $ zip -r foo * 解压缩文件很简单,像这样: $ unzip foo.zip 这样会解压缩foo.zip里面的所有文件和文件夹 zip程序还有一些高级应用参数,包括建立自解压包,压缩是保留源文件,调节压缩文件的尺寸等等,在这里就不一一赘述了。如果想了解更多,请查看手册页。
__________________
Archlinux |
|
|
|
||
|
|
第 10 帖 | |
|
|
蛮喜爱 Emacs 的,翻译了第 17 章,Emacs。有些地方搞不太懂,翻译得马马虎虎,
![]() 建议 chendy 到 http://www.slackbook.org/translations.html 去申请一个中文的翻译链接。 译者注:“[”和“]”内的部分是我为了易于理解而加上去的, (”和“)”内的部分为原文所有。 第17章 Emacs 17.1 启动 Emacs 17.1.1 命令按键 17.2 缓冲区 17.3 模式 17.3.1 打开文件 17.4 基本编辑 17.5 保存文件 17.5.1 离开 Emacs 当 vi (还有它的克隆)毫无疑问地成为类 Unix 系统里普遍存在的编辑器时, Emacs 来得正好。与 vi 使用各种"模式"不同,它使用 Control 和 Alt 键的组 合来输入命令,和你在字处理程序和其他应用程序里使用 Control 和 Alt 键的 组合去执行相应的功能方式相同。(然而[Emacs 的]命令相当一致应该值得赞扬; 因此当许多现代的应用程序使用 Ctrl-C/ X/ V 来复制,剪切和粘贴时,Emacs 使用不同的按键或者事实上一个稍微有点不同的机制来完成这些。) 同样的跟一个(优秀的)编辑器同时除此以外什么都不是的 vi 不同,Emacs 是一 个有着近乎无穷可扩展能力的程序。Emacs(绝大部分)用 Lisp 写成,那是一 种强大的具有奇异性能的编程语言,每种用它写成的的程序自动拥有自己的 Lisp 解释器。这意味着用户可以扩展 Emacs,或者实际上“在 Emacs 里”写一个完整 的新程序。 因此,Emacs 不仅仅只是一个编辑器而已。存在着很多可获得的 Emacs 附加程 序包(许多结合进了[Emacs]程序的源码),来提供各种各样的功能。许多程 序包和文本编辑有关,提供除在 Emacs 基本作业之外,但不仅仅停留在此的 功能。比如那几个电子制表软件,还有数据库,游戏,电子邮件和新闻组客户端 (最棒的是 Gnus),等等。 Emacs 有两个主要的分支:GNU Emacs(这就是 Slackware 里的那个)和 XEmacs。后者不是 Emacs 运行在 X 下的版本。事实上,Emacs 和 XEmacs 两者 运行于 X 和运行于控制台一样的好。XEmacs 曾作为整理 Emacs 代码的一个工 程启动。当前,两个分支都处于积极的开发中,而且事实上两个开发团队有着很 多相互的影响。在当前的章节里,无论你使用 Emacs 还是 XEmacs 都不重要, 它们的区别与普通用户无关。 17.1 启动 Emacs Emacs 能从 shell 启动只需简单地键入 emacs。当你运行 X 时,Emacs 会 (通常)启动它的 X 窗口,通常还有一个 menu bar[目录条]在顶部,在那儿你可以 找到一些最为重要的功能。在启动时,Emacs 会首先显示一个欢迎信息,几秒钟后 会将你放到 *scratch* [草稿]缓冲区里。(看 17.2 节.) ![]() 你还可以用编辑存在的文件的方式启动 Emacs,只需键入 代码:
17.1.1 命令按键 和上面提到的一样,Emacs 使用 Control 和 Alt 键的组合作为命令。通常的惯 例是把这些分别写成 C-letter[C-字母]和 M-letter。所以 C-x 意味着 Control+x,M-x 意味着 Alt+x。(字母 M 用来代替 A 是因为原来的按键不是 Alt 键而是 Meta 键,Meta 键已经几乎从计算机键盘里消失了,因此在 Emacs 里 Alt 键代替了它的作用。) 许多 Emacs 命令由按键们的组合和它们的序列组成。举个例子,C-x C-x(就 是 Control+x 紧接着 Control-c)离开 Emacs,C-x C-s 保存当前文件。牢记 C-x C-b 和 C-x b 是不同的。前者意味着 Control-x 紧接着 Control-b,而后 者意味着 Control-x 接着仅仅只是 'b'。 17.2 缓冲区 在 Emacs 里,*buffers* 的概念是要点。你打开的每一个文件都被加载进它自 己的缓冲区。除此外,Emacs 拥有一些特殊的缓冲区,不是用来装载文件而是别 的东西。这些特殊的缓冲区通常有着用星号打头和结尾的名字。比如,Emacs 第一次启动时显示的缓冲区,是叫做 *scratch* 的缓冲区。在 *scratch* 缓 冲区里,你可以像平常那样写入文字,但是当 Emacs 关闭的时候写入那里的东西不 会被保存。 还有另外一个你需要知道的特殊的缓冲区,叫做 minibuffer。这个缓冲区仅有 一行组成,同时一直在屏幕上:恰好在 Emacs 窗口里的最下一行,在当前缓冲 区状态条下面。minibuffer 是 Emacs 向用户显示消息的地方,同时也是一些需 要用户输入的命令执行的地方。比如,当你打开一个文件,Emacs 会在 minibuffer 询问它的名字。 从一个缓冲区切换到另一个缓冲区可以用命令 C-x b 来完成。它会提示你缓冲 区的名字(一个缓冲区的名字通常是你正在编辑的文件的名字),然后它会给一 个缺省的选择,通常是你切换或创建当前缓冲区之前呆过的缓冲区。只要敲击回 车就会切换到那个缺省的缓冲区。 如果你想切换到另外一个缓冲区而不是 Emacs 提供的缺省,只需敲击它的名字。 注意你可以在这里使用 Tab 补全: 输入缓冲区名字的前几个字母然后敲击 Tab; 接着 Emacs 会补全缓冲区的名字。Tab 补全在 Emacs 任何可行的地方都可以使用。 你可以通过敲击 C-x C-b 来得到一份打开的缓冲区清单。这个命令通常会将屏 幕一分为二,在上半部分显示你正在工作的缓冲区,而下半部分显示一个叫做 *Buffer List* 的新缓冲区。这个缓冲区包含了一分所有缓冲区的清单,它们的 容量和模式,还有文件,如果有的话,还显示那些正在访问的缓冲区(在 Emacs 里就是这样叫的)。你可以通过敲击 C-x 1 来去掉这个分屏。 注意 在 X 下,缓冲区清单同样可以在目录栏中的缓冲区目录里得到。 17.3 模式 Emacs 里的每一个缓冲区都有一个相应的模式。这个模式和 vi 里的模式思想很 不相同:一个模式告诉你处于一个什么样的缓冲区中。比如,text-mode 用于平 常的文本文件,但是还有像给编辑 C 程序的 c-mode 模式,给编辑 shell 脚本 的 sh-mode,给编辑 LaTex 文件的 latex-mode,给编辑 email 和新闻组消息 的 mail-mode,等等。一个模式提供实用的特别的定制和功能给你当前编辑的此 种文件。甚至为一种模式重新定义按键和按键命令也是可以的。比如,在文本模 式里,Tab 键只是简单的跳到紧靠着的一个 tab 长度的地方,但在许多编程语 言环境中,Tab 键缩进当前行取决于当前行所处块的深度。 上面提到的模式都叫主模式。每个缓冲区拥有一个确切的主模式。另外,一个缓 冲区可以有一个或多个副模式。一个副模式给当前一定的编辑工作提供有用的额 外的特性。比如,如果你敲击插入键,就像你希望的那样唤起了 overwrite-mode,。同样还有 auto-fill-mode,它被结合进了 text-mode 还有 latex-mode: 它使得你打的每一行字在达到某个字数后起用新行。没有 auto-fill-mode,你得敲击 M-q 去划齐一个段落。(你还可以在编辑一些发现没 有被很好的划齐文字后,使用这个命令来重新划齐。) 17.3.1 打开文件 在 Emacs 里打开一个文件,敲击 代码:
文件名(你可以使用 Tab 补全)敲击回车后,Emacs 会在新的缓冲区里打开文 件并在屏幕上显示其内容。 注意 如果 Emacs 没有将文件载入当前的缓冲区,它会自动创建一个新的缓冲区。 为了在 emacs 里创建一个新文件,你不能马上就进行打字。你首先得为此创建 一个新缓冲区,接着给出一个文件名。用 C-x C-f 并输入一个文件名来完成, 就像你打开一个存在的文件那样。Emacs 会注意到你打开的是不存在的文件,然 后创建一个新的缓冲区同时在 minibuffer 里提示 "(New file)"。 当你敲击 C-x C-f 然后输入一个目录名而不是一个文件名时,Emacs 会创建一 个新的缓冲区来显示那个目录下所有文件的清单。将光标移动到你寻找的文件并 回车,Emacs 会打开它。(事实上在这你还可以做得更多,比如删除、重命名和 移动文件,等等。Emacs 现在处于 dired-mode 模式,基本上就是一个简单的文 件管理器。) 当你敲击了 C-x C-f 后突然改变了主意,可以敲击 C-g 去撤销刚才的行动。 C-g 几乎在任何你想撤销的,已经执行但不想结束的行动或命令的地方都有用。 17.4 基本编辑 当你已经打开了一个文件,自然可以利用光标在里面移动。光标的按键 PgUp, PgDn 就像你希望的那样工作。Home 和 End 跳转到行的开头和结尾。(在旧一点 的版本里,它们实际上跳转到缓冲区的开头和结尾。)无论如何,还有 Control 和 Meta(Alt)键的组合去移动光标[原文将按键的组合比喻成小型爵士乐团]。 因为你不需要为此将手臂移动到键盘的另一部分,当你习惯后将很快捷。像这些 最为重要的命令在表格 17-1 里列出来了。 表格 17-1。Emacs 基本编辑命令 命令 结果 C-b 往后移动一个字符 C-f 往前移动一个字符 C-n 往下移动一行 C-p 往上移动一行 C-a 移动到行的开头 C-e 移动到行的结尾 M-b 往后移动一个词 M-f 往前移动一个词 M-} 往前移动一个段落 M-{ 往后移动一个段落 M-a 往后移动一句 M-e 往前移动一句 C-d 删除光标下的字符 M-d 删除当前光标后的字符 C-v 往下移动一屏(也就是,PgDn) M-v 往上移动一屏(也就是,PgUp) M-< 移动到缓冲区的开头 M-> 移动到缓冲区的结尾 C-_ 撤销最后的改变(可以被重复);注意实际上你得使用 Shift+Control+hyphen 来完成这个命令。 C-k 删除到行末 C-s 往前搜索 C-r 往后搜索 注意许多的 Meta 命令和 Control 命令是相似的除非是操作一些巨大的单元: C-f 往前移动一个字符,M-f 往前移动一整个词,等等。 同样还要注意 M-< 和 M-> 需要你分别按下 Shift+Alt+comma 和 Shift+Alt+dot ,就像 < 和 > 用 Shift+comma 和 Shift+dot 操作一样。(除 非你使用一个非标准的 US 键盘设计。) 注意 C-k 删除 (kills,通常都这么说的[在 Emacs 里])光标下直到行末的所 有字符,除了这一行它本身(也就是,没有删除最后[删除完后剩下的]新的一 行)。它仅仅删除这一行直到光标之后没有文字。换句话话说,为了删除一整行, 你得将光标移到行的开头,然后敲击 C-k 两次:一次用来删除当前行的文字, 一次用来删除行本身。 17.5 保存文件 为了保存文件,敲击 代码:
如果你想将文本保存到其他的文件,敲击 代码:
保存成备份文件,就是同样的名字后边加了个符号:若你正编辑一个文件 “cars.txt”,Emacs 会创建一个备份"cars.txt~"。 这个备份文件是你打开的这个文件[未操作前]的一个拷贝。当你工作时, Emacs 也会有规律地为你正在操作的文件创建一个 auto-save [自动保存的] 拷贝,文件名加上散列符号:#cars.txt#。这个文件会在你使用 C-x C-s 保存 后被删除。 当你已经编辑好了一个文件,需要关闭缓冲区保存它只需敲击 代码:
择后敲击回车。如果你还不没保存文件,Emacs 会询问你是否真的想要关闭缓冲 区。 17.5.1 离开 Emacs 当你已经用 Emacs 完成了工作,敲击 代码:
是否许想要保存。如果你对其中的任何一个回答不,Emacs 会询问作为最后的证 实然后退出。
__________________
Home: http://suchang.net Slackware-current ~ FVWM 此帖于 05-09-09 17:37 被 lalawu 编辑. 原因: 修改版面 |
|
|
|
||
|
|
第 11 帖 | |
|
|
第16章 Vi
vi(1) 是标准 Unix 系统的文本编辑程序,虽然如今掌握它已不像从前那样必要 了,但是仍然是一个很有益的目标。vi 有好几个版本(或者说是克隆),包括 vi,elvis,vile,和 vim。它们中的任何一个都可以在各种版本的 Unix 上获得, 在 Linux 上也一样。所有的这些版本包括同样的基本特性设置和命令,所以学好 一个版本后将很容易学会其他。如今各种 Linux 发行版和类 Unix 系统拥有多种 多样的文本编辑器,许多人已经不再使用 vi。但 vi 仍然是 Unix 和类 Unix 系 统最普遍的文本编辑器。掌握 vi 意味着(当你)只有一个强大的文本编辑器时 处于 Unix 环境不会感到不适。 vi 拥有包括语法高亮,格式代码,强大的搜索代换工具,宏,等等一系列强大 的功能。这些功能使得它对编程者,网站开发者,等等相似工作的人们具有 特殊的吸引力。系统管理员会欣赏(vi)与 shell 完美的集成和自动化作业。 在 Slackware Linux 里,缺省的 vi 版本是 elivis。其他的版本 —— 包括 vim 和 gvim —— 在你装了相应的包后都可以得到。gvim 是 vim 在 X 窗口下的版本, 包括工具栏,*出菜单,和对话框。 16.1 启动 vi vi 可以以多种方式从命令行启动。最简单的格式就是: 代码:
![]() 这样会使 vi 以一个空的缓冲区启动。此时,你会看到一个屏幕的空格。现在正 处于命令模式,等待你去做什么东西。16.2 节将讨论 vi 的各种模式。为了退 出 vi,如下输入: 代码:
它会警告你已经做了改动同时告诉你如何忽视它们。放弃改动意味着在"q"的后面 加个感叹号就像这样: 代码:
节。 你还可以用打开一个已经存在文件的方式打开 vi。比如,如下打开 /etc/resolv.conf 文件: 代码:
示他们程序的某一行发生了错误时。比如,你可以如下启动 vi 定位于 /usr/src/linux/init/main.c 第 47 行: 代码:
的行数,vi 会将光标置于最后一行。这对编程人员特别有用,他们可以直接跳 到文件出错的地方而不用搜索它。 16.2 模式 vi 运转于用来完成各式任务的多种模式中。当你第一次打开 vi,将处于命令模 式。从这里开始,你可以输入各种命令来控制文本,在文件里移动,保存,退出, 和变换模式。在插入模式中编辑文本。你可以用大量按键在模式间快速移动,这 会在稍后介绍。 16.2.1 命令模式 你首先被置于命令模式。在这个模式中,你不能直接输入或编辑已经存在的文本。 尽管如此,你可以处理文本,搜索,离开,保存,加载新文件,等等。这里仅仅 希望对命令模式做一个介绍。对各种模式的描述,在第 16.7 节。 或许在命令模式中最为常用的命令就是变换到插入模式。这可以由敲击 i 键来 完成。光标改变了形状,然后在屏幕底部出现 -- 插入 --(注意并不是所有的 vi 克隆都会这样)。从那儿开始,你所有的按键都被输入到当前缓冲区并在屏 幕上显示。为了回到命令模式,按一下 ESCAPE 键。 命令模式还是你在文件里移动时所处的模式。在一些系统里,你可以使用方向键 去移动。在其他的系统里,你需要使用更传统的按键"hjkl"。这有一份如何使用 按键移动的清单: h 向左移动一个字符 j 向下移动一个字符 k 向上移动一个字符 l 向右移动一个字符 简单按下一个键可以移动。就像你待会儿将看到的,这些按键可以和数字结合起 来使移动更为快捷。 你在命令模式里使用的许多命令都以一个冒号开头。比如,退出就是 :q,就像前 面讨论过的一样。冒号简单地指出那是一个命令,如"q"告诉 vi 去退出。其他的 命令是一个字母后加一个可选择的数字。这些命令前面并没有冒号,且通常用于 处理文本。 比如,从文本里完全删除一行只需敲击 dd。这会移除光标所在的一行。给出命令 4dd 将告诉 vi 移除光标所在行和其下三行。一般来说,数字告诉 vi 将命令重 复多少次。 你可以将数字和控制移动的按键组合使得一次可以移动多个字符。比如,10k 会 在屏幕里向上移动十行。 命令模式同样可以用于剪切和粘贴,插入文本,同时在当前缓冲区读入其他的文 件。复制文本由 y 键完成(y 代表拉回[yank])。复制当前行由敲击 yy 完成, 同时可以在前面甜数字拉回多行。然后,移动到要复制的地方敲击 p。文本将被 粘贴在当前行的下面。 剪切文本由 dd 完成,然后 p 被用于将剪切的文本粘贴回文件。从其他的文件载 入文本是一个简单的步骤。只需敲击 :r,紧跟一个空格和包含被插入文本的文件 名。文件的内容将被粘贴进当前缓冲区光标下一行。更棒的 vi 克隆甚至包含和 shell 差不多的文件名补全。 最后将谈到的搜索也使用它(命令模式)。命令模式允许简单的搜索,而复杂的 搜索-替换命令将使用一种强大的正则表达式。对正则表达式完整的讨论在本章 范围之外,所以这样将仅仅提到搜索的简单方式。 简单的搜索由敲击 / 键完成,接着输入需要搜索的文字。vi 会从光标处向文件 尾做匹配,找到后就停止。注意不正确的匹配同样会让 vi 停止。比如,对 "the"的搜索会使得 vi 在"then","therefore",等等地方停止。这是因为这些 词都匹配"the"。 vi 找到第一个匹配后,你可以通过简单敲击 / 键接着回车继续下一个匹配。同 样可以通过用 ? 替代斜杠在文件中向后做匹配,在文件中向后做"the"的匹配可 通过敲击 ?the 完成。 16.2.2 插入模式 插入和替换文本在插入模式里完成。就如前面讨论过的,你可以通过敲击 i 从命 令模式进入到插入模式。接着,所有你打的文字都被输入到当前缓冲区中。敲击 ESCAPE 键将回到命令模式。 替换文本可通过几种方式完成。在命令模式里,敲击 r 就可以替换在光标下的一 个字符。只需输入新的字符然后它将替换光标下面的那个。接着立刻回到命令模 式。敲击 R 将让你替换如你所需的字符。只要敲击 ESCAPE 就可以离开替换模式 回到命令模式。 还有另外一个将插入和替换结合在一起的方式。在命令模式中敲击 INSERT 键会 将你带进插入模式。当你在插入模式中时,键盘上的 INSERT 键将插入和替换结 合在了一起。一旦敲击它将让你实现替换。再次敲击它将让你插入文本。 16.3 打开文件 vi 允许你从命令模式里打开文件有如在命令行里指定打开的文件。如下打开 /etc/lilo.conf 文件: 代码:
缓冲区就打开文件,只需敲击 :e!,后接一个空格然后是文件名。通常,命令后 紧跟叹号可以禁止 vi 的警告。 如果你希望重打开当前的文件,你可以通过简单的敲击 e! 来完成。当你将文件 搞得一团糟并希望重新打开它时特别有用。 一些 vi 的克隆(比如,vim)允许同时打开多个缓冲区。比如,当另一个文件已 经打开了时,打开主目录下的文件 09-vi.sgml,我会输入: 代码:
处理分屏,其中某些来自 Emacs,man page 里有相应的介绍。注意许多 vi 克隆 并不支持分屏,所以并不是什么地方都可以使用。 16.4 保存文件 在 vi 里有许多方式来保存文件。如果你想将当前的缓冲区保存到一个随机文件, 可以输入: 代码:
当你保存了文件后,又将回到命令模式。如果你想保存文件然后离开vi(一个很 平常的操作),只需敲击 :wq。那会告诉 vi 保存当前文件同时退出回到 shell。 有时,你想保存一个只读文件。只需在写入命令后加叹号,如下: 代码:
当这种事情发生时,vi 会告诉你无法保存文件。如果你真的想要编辑这个文件, 你不得不以 root 或(更好的是)文件拥有者的身份来编辑它。 16.5 退出 vi 退出 vi 的一个方式是通过(敲击) :wq,这会在退出前保存当前缓冲区。你也 可以用 :q 或(更常用) :q! 不保存退出。后者当你对文件做了改动却不想保 存时将用到。 有时,你的机器会当掉或 vi 会崩溃。不管怎样,elvis 和 vim 都会采取措施将 对缓冲区的破坏减至最小。两个编辑器都会在必要时将打开的缓冲区保存到一个 一个临时文件。文件通常与打开的文件名字相似,前面多加一个点。这样会使文 件隐藏。 一旦在编辑器正常退出,临时文件将被移除。这意味着某些东西崩溃后临时的拷 贝仍在。当你回过头来再次编辑文件,会得到做相应行动的提示。大多数情况下, 大部分未保存的东西都可以被恢复。elvis 同样会给你发一封电子邮件(来自 Graceland,够古怪的了 :)告诉你一个备份的拷贝仍在。 16.6 配置 vi 你那特别的 vi 克隆可用多种方式配置。 在命令模式中,大量命令可用来输入配置 vi,依你的喜好输入。取决于你的编辑 器,你可以打开特性让编程更容易些(像语法高亮,自动缩进,等等),建立宏 自动完成任务,打开文本置换,等等。 这些命令的绝大部分都可以放进你主目录的一个配置文件里。elvis 读取 .exrc 文件,而 vi 读取 .vimrc 文件。大多数在命令模式里输入的配置命令都可以放 到配置文件里。包括设置信息,置换文本,宏,等等。 讨论所有的选项及对于不同编辑器的区别是一个复杂的主题。更多的信息,为你 首选的 vi 编辑器查看 man page 或网页。一些编辑器(像 vim)在编辑器内部 有多方面的帮助文件,或者一些相似的东西,可以通过 :help 命令得到。你还可 以查看 O'Reilly 出版,由 Lamb 和 Robbins 写的书 《Learning the vi Editor》。 Linux 下一般的程序缺省使用 vi 打开文本文件。比如,编辑你的 crontabs 会 缺省使用 vi 打开。如果你不喜欢 vi 并希望用另外一个编辑器去代替,只需设 置 VISUAL 环境变量成你希望的编辑器。关于环境变量的更多信息,看《第八章 环境变量》。如果你希望确保每次登录后自己喜欢的编辑器成为缺省值,将VISUAL 的设定加到 .bash_profile 或 .bashrc 文件里。 16.7 Vi 按键 这个章节是许多 vi 常用命令的快速参考。一些命令已在前面的章节讨论过,而 许多是新的。 表 16-1。移动 操作 按键 向左,向下,向上,向右 h, j, k, l 移动到行末 $ 移动到行首 ^ 移动到文件尾 G 移动到文件头 :1 移动到第 47 行 :47 表 16-2。编辑 操作 按键 移去一行 dd 移去 5 行 5dd 替换一个字符 r 移去一个字符 x 移去 10 个字符 10x 撤销最后一次操作 u 连接当前行和下一行 J 新文本替换旧文本,全局性 %s'old'new'g(?) 表 16-3。查找 操作 按键 向前查找"asdf" /asdf 向后查找"asdf" ?asdf 重复向前查找 / 重复向后查找 ? 重复同个方向的查找 n 重复相反方向的查找 N 表 16-4。保存和退出 退出 :q 退出但不保存 :q! 写入然后退出 :wq 写入,但不退出 :w 重新打开当前文件 :e! 打开文件 hejaz :e hejaz 将文件 asdf 读入缓冲区 :r asdf 将 ls 的输出读入缓冲区 :r !ls 此帖于 05-09-17 20:58 被 lalawu 编辑. |
|
|
|
||
|
|
第 12 帖 | |||
|
|
标题: 第18章 Slackware 包管理 第18章 Slackware 包管理
一个软件包就是对准备好可以安装的相关程序所打的包。当你下载一个源代码存 档,你得手动配置,编译,然后安装。而有了软件包,这些都已经为你做好了。 你所需要做的一切就是安装这个包。软件包另一个易于使用的特性就是可以很容 易的移除和升级它们,如果你希望的话。Slackware 里的程序可以满足你对包管 理的所有需求。你可以很容易地安装,移除,升级,制作,和检查这些包。 流传着这样的谬论,自从 RedHat 开创了 RedHat 包管理器,Slackware 还没有 包管理工具。这简直不能偏离事实更远了。Slackware 一直包含着包管理器,甚 至在 RedHat 存在前。虽然不如 rpm (或者是 deb)般拥有大量特性或到处存在, pkgtool 及其相关程序的任何一点有如 rpm 般易于安装。关于 pkgtool 的事实 并不是它并不存在,而是它根本不做依赖性检查。 似乎许多 Linux 社区里的人认为一个包管理器按照定义必须要包含依赖性检查。 喔,那根本不是事实,就好像 Slackware 必定不做那样。这并不是说Slackware 的包没有依赖性,倒不如说它的包管理器没有检查它们。依赖性管理留给了系统 管理员,而那正是我们喜欢的方式。 18.1 包格式总览 在学习实用程序前,你应该先熟悉 Slackware 包格式。在 Slackware 里,一个 包就是简单的用 gzip 压缩过的 tar 存档文件。包建立在会从 root 目录里解压 之上。 这是一个虚构的程序和它的包例子: 引用:
的内容的条目,以便之后能够升级或移除。 注意 install/ 子目录。这是一个特别的目录,包含一个叫做 doinst.sh 的安装 后脚本。如果包系统找到这个文件,它会在安装完包后执行它。 其他的脚本会被嵌入到这个包中,不过这会在之后的第 18.3.2 节做更多的介绍。 18.2 包实用程序 包管理系统拥有 4 个主要的程序。它们执行安装,移除,和升级包。 18.2.1 pkgtool pkgtool(8) 是一个菜单驱动的程序,允许安装和移除包。它的主要菜单会在图 18-1 显示。 图 18-1。Pkgtool 的主菜单。 ![]() 安装可在当前目录,其他的目录或从软盘执行。简单地选择你想要的安装方式然 后 pkgtool 会搜索那个位置合法的包来安装。 你也会看到一个已经安装的包的清单,就像图 18-2 显示的。 图 18-2。Pkgtool 显示模式 ![]() 如果你想移除包,选择移除选项然后一个已经安装的包的清单会呈现在你面前。 标上你想要移除的那些然后选择 OK。pkgtool 会移除它们。 一些用户更喜欢这个程序而不是命令行下的那些。尽管如此,必须注意命令行下 的程序提供更多的选项。同样,升级包只在命令行下的程序集里提供。 18.2.2 installpkg installpkg(8) 处理系统里新包的安装。语法如下: 代码:
表 18-1。安装选项 选项 效果 -m 在当前目录执行一个 makepkg 操作。 -warn 显示如果你安装这个特别的包将发生什么。这在生产系统很有用,你将 会在安装前精确地看到发生了什么。 -r 在当前目录及其下递归地安装所有的包。包名可以使用通配符,在递归 安装时有如搜索时的屏蔽。 如果在 installpkg 前你改变了 ROOT 环境变量,路径会被用于 root 目录。这在 为你的 root 目录建立新驱动将很有用。它们将典型地安装于 /mnt 或其他目录而不 是 /。 已经安装的包数据信息存放于 /var/log/packages。那仅仅只是一个平常的文本 文件,一个包一个。如果包拥有安装后脚本,它会被写入/var/logscripts/。 你可以对包名特别指定或使用通配符。小心 installpkg 不会告诉你将覆盖一个 已经安装的包。它将简单恰好的安装在那个旧的上面。如果你想要确保旧包被安 全地移除,使用 upgradepkg。 18.2.3 removepkg removepkg(8) 处理从系统移除已经安装过的包。语法就像下面这样: # removepkg option package_name removepkg 拥有四个选项。一次只能用一个。 表 18-2。removepkg 选项 选项 效果 -copy 包被复制到了保留包目录。这会创建一个包原来的目录结 构但并不移除它。 -keep 保留移动过程中创建的临时文件。仅在调试中有用。 -preserve 包被移除,但同时被复制到了保留包目录。 -warn 显示如果移除包将发生什么。 如果在 removepkg 前你改变了 ROOT 环境变量,路径会被用于 root 目录。这在 为你的 root 目录建立新驱动将很有用。它们将典型地安装于 /mnt 或其他目录 而不是 /。 removepkg 检查其他已经安装了的包但仅仅移除你唯一指定的包文件。它同时还 为特别的包检查安装后脚本同时移除它创建的符号链接。 在移除过程中,将显示状态报告。移除后,包数据信息被移动到了 /var/log/removed_packages 同时安装后脚本被移除到了 /var/log/removed_scripts。 就像 installpkg 一样,你可以为包名特别指定或使用通配符。 18.2.4 upgradepkg upgradepkg(8) 将升级一个已经安装的 Slackware 包。语法如下: 代码:
代码:
级后的包名已经改变,使用百分号语法指定旧包(已经安装的包)和新包(你升 级后的包)。 如果在 upgradepkg 前你改变了 ROOT 环境变量,路径会被用于 root 目录。这在 为你的 root 目录建立新驱动将很有用。它们将典型地安装于 /mnt 或其他目录而不 是 /。 upgradepkg 不是没有缺点的。你应该随时为你的配置文件做备份。如果它们被 移除或覆盖了,你将会为修复工作寻求一个原来文件的拷贝。 有如 installpkg 和 removepkg,你可以为包名特别指定会使用通配符。 18.2.5 rpm2tgz/rpm2targz Red Hat 包管理器是当今流行的包管理系统。许多发行版提供 RPM 格式的产品。 因为这不是我们自己的格式,所以不推荐大家依靠它们。尽管如此,有些东 西只能依靠 RPM 格式得到(甚至源代码)。 我们提供一个可以将 RPM 包转换成本地 .tgz 格式的程序。它允许你解压包(可 能将和 explodepkg 一起)到一个临时目录然后检查它的内容。 rpm2tgz 程序将创建一个以 .tgz 为扩展名的 Slackware 包,而 rpm2targz 创 建一个以 .tar.gz 为扩展名的存档。 18.3 制作包 制作 Slackware 包要么容易要么困难。制作包没有特别的方法。唯一的必要条件 是包必须是一个 gzip 压缩过的 tar 文档同时如果有一个安装后脚本,它必须是 /install/doinst.sh。 如果你对为自己管理的系统或网络制作包感兴趣,你应该看一下在 Slackware 源 码目录树里面的各种制作脚本。那有几种我们制作包的方法。 18.3.1 explodepkg explodepkg(8) 将以 installpkg 同样的方式解包,但并不安装同时也不在包数 据库里记录。它仅仅在当前目录里面解包。 如果你查看一下 Slackware 的源码目录树,将会看到我们如何使用这个命令来“ 组织”包。这些包都含有一个与最终包相似的骨骼。他们拥有所有必要的文件名 (大小为零),权限,所有权。安装脚本将从源码目录输出(cat)包的内容到包 安装目录。 18.3.2 makepkg makepkg(8) 可以将当前目录打包成一个合法的 Slackware 包。它会去搜寻目录 树里所有的符号连接,并为了在包安装过程中创建它们向安装后脚本加上一个创 建块。它同样会警告在包目录树里任何零大小的文件。 这个命令典型地运用于你创建了的包目录树。 18.3.3 SlackBuild 脚本 Slackware 包按需要通过不同的方式制作。不是所有由编程人员编写的软件包都 用同样的方式编译。许多的编译选项并不包含在 Slackware 使用的包里。也许你 需要其中的一些功能;因此有必要编译自己的包。幸运的是在许多的 Slackware 源码包里,你可以找到 SlackBuild 脚本。 那么什么是 SlackBuild 脚本?SlackBuild 脚本就是以 root 身份来配置,编译, 然后创建 Slackware 包的可执行的 shell 脚本。你可以在源码目录里自由修改 这些脚本然后运行它们来为缺省的 Slackware 包创建你自己的的版本。 18.4 制作 Tags 和 Tagfiles(用于安装) Slackware 安装程序处理系统里软件包的安装。有一些文件可以告诉安装程序哪 些包必须安装,哪些可供选择,而哪些缺省由安装程序自己选择。 一个 tagfile 就是在软件系列目录里的第一层名叫 tagfile 的文件。它列出特定磁 盘设备里的包和它们的状态。这些状态可以是: 表 18-3。Tagfile 状态选项 选项 含义 ADD 这个包为特殊的系统操作所必须 SKP 这个包会被自动忽略 REC 这个包不是必须的,但建议使用 OPT 这个包可供选择 格式很简单: 引用:
搞乱了你自己的,可以恢复原来的那个。 许多管理人员更喜欢编写他们自己的 tagfiles 然后启动安装程序选择“完全”。 安装程序会读取 tagfiles 然后依据内容来安装。如果你使用 REC 或者 OPT, (程序)会向用户出现对话框询问是否想要那个包。所以,建议你为自动安装写 tagfiles 时仅使用 ADD 和 SKP。 确保你的 tagfiles 被写入到和原来那个同样的位置。或者如果你有定制的 tagfiles可以特别指定一个定制的 tagfile 路径。 |
|||
|
|
||||
|
|
第 13 帖 | |
|
|
标题: Slackware 的 FAQ(非官方中译本) 欢迎转载,转载请保留译者信息,谢谢!
================================================= 这些都是人们经常问我的问题。希望它们在这里得到解答后不会再次被问到。 很多问题是很老的而且过时,但是我把它们留在这里是因为他们可能会给一些人提供解决相似问题的思路。同时,你也会发现其中的一些从其措辞来看不像是问题,而更像是尖叫着抱怨。嘿,我想要准确的描述。:^) Q1:装完之后,我的以太网卡、CD-ROM 驱动器和/或其它我认为 Linux 能够支持的硬件不能工作。为什么? Q2:无软驱安装本操作系统是否可能? Q3:现在软盘上的 N 系列不合适,我该如何为我的膝上型电脑取得网络支持? Q4:为什么我的索尼 CDU-31/33a 不再能被 Linux 检测到了?以前可以的! Q5:内核不能识别一个与 Soundblaster 16 IDE 相连的 CD-ROM! Q6:我用 RAWRITE 做的磁盘无法启动! Q7:我能够很好的安装,但是装完的系统不能启动! Q8:为什么我在 Slackware 下被告知“网络不可达”? Q9:$%#@! 为什么我的 UltraStor SCSI 不能被检测到?在 DOS 下可以的! Q10:如果 NFS 安装的安装菜单不能工作,我如何在开始安装之前动手设置网络? Q11:我的 IBM Thinkpad 不能正确地把跟磁盘加载到 ramdisk,所以我不能安装 Linux。我该怎么办? Q12:我的大(> 1/2 G) IDE 驱动器报告说多于16个头,因此 Linux 无法在上面安装。我该怎么办? Q13:我怎么用我新采用的内核作一张 Slackware 引导盘? Q14:我的退格键在X 下表现怪异?我如何修复它? Q15:我构建了一个新内核。现在我该如何用这个新的 bzImage 文件替换已存在的内核? Q16:为什么我不能从 elvis (vi) 中剪切粘贴到一个 xterm? Q17:为什么我的总线鼠标不工作?内核、选择、X 服务器以及 text-mouse 都说“没有该设备。” Q18:我看到我的 SoundBlaster/松下 CD-ROM 在引导时被检测到,但我不能从中安装或加载它。怎么办? Q19:我用的是 UMSDOS 并且想让 Windows 与 Linux 使用同一个交换空间。应该怎么做? Q20:安装盘上的 root 密码是什么? Q21:Slackware Linux 发行版在我的机上装好后我怎么添加和删除软件? Q22:我不知道 setup/pkgtool/installpkg 把哪些文件放到那里? Q23:我把我的分区设置成为 "Linux native" 但是 Slackware 仍然无法检测到它们!我该怎么办? Q24:我有一台 (PS/1 || Valuepoint || Thinkpad),由于 fdisk 不能认出我的硬盘而无法安装。我该怎么办? Q25:为什么我的 /etc/issue 和 /etc/motd 总是在开机是重设置它们自身? Q26:Emacs 卸载核心,提示说缺少库,或者没有 X 支持! Q27:为什么我编译东西时提示 'signal 11: internal compiler error' 就死了? Q28:我该如何改变(处理) ls 的颜色? Q29:我用 "startx" 启动 X 而且它也工作了,但是我无法切换到虚拟终端。为什么? Q30:为什么我无法在 X 里用新的 ghostscript? Q31:所有东西都不能工作了!该怎么办? Q32:我如何用一个自制的内核做一张引导盘? Q33:当我刚刚装完 Slackware 的时候,系统可以发现我的 CD-ROM。但是但我尝试用 LILO或引导盘引导后系统就不再能找到 CD-ROM 驱动器了!怎么修复它? Q34:我能用一个串口上的终端来安装吗? Q35:“总线错误”是什么意思? Q1:装完之后,我的以太网卡、CD-ROM 驱动器和/或其它我认为 Linux 能够支持的硬件不能工作。为什么? A:也许你正在运行的内核不包含这些支持。为解决这个问题,你得安装一个包含这些支持的内核。那可能是 CD-ROM 上 /kernel 目录下的某个合适的内核,或者你可以自己为你的机器编译一个内核。这并不会很难──请看下面关于编译新内核的说明。 Q2:无软驱安装本操作系统是否可能? A:是的!而且它一点儿也不难。 (注:第一次接触本方法的时候请看 rootdisks/install.zip) 首先,你将需要一个 DOS 分区。安装 Loadlin 到某个目录,比如 C:\LOADLIN (一个可用的ZIP 格式的 Loadlin 包位于 kernels/ 目录下)。你把 Loadlin 装上之后,需要复制一个 Linux 内核及一个 Slackware 安装器映像到 C:\LOADLIN 目录下。我们接下来就来描述这个过程: 你可以在 CD 上的 kernels/ 目录下找到许多内核。那些子目录有着和 Slackware 引导盘一样的名称,并包含了用于制作引导盘的内核。你可能需要参考 bootdisks 目录下的 README 文件来决定哪个内核将会在你的系统上运行得最好。一旦你选中了某个内核(zImage 或者 bzImage),把它复制到 C:\LOCALIN 目录下。然后,从 isolinux 目录下抓取安装器映像(叫做 “initrd.img”)并将该文件复制到你的 Loadlin 目录下。 现在,为了启动安装进程你得启动 DOS。如果你在运行 Windows95,在开始菜单里有个重新启动电脑进入到 MS-DOS 模式的选项。(注:如果你错过了以前你开机后可以自动进入 DOS 而要进 Windows 则需要键入 “win” 的好日子,很容易就可以把 Windows95 修正过来,让它再次那样子工作。编辑 C:\MSDOS.SYS 文件,把 BootGUI=1 改成 BootGUI=0) 启动了 DOS 之后,转到 Loadlin 目录并使用一个如下的命令来开始安装根磁盘: loadlin zimage rw root=/dev/ram initrd=initrd.img loadramdisk=1 通常安装程序会从引导盘复制内核,因此当你使用这个方法的时候,你必须略过那个菜单,同样,也要略过制作引导盘的菜单。同时,略过 LILO 菜单也是明智的。因为 /vmlinuz 未必是你想要的。你最好的赌注是使用 Loadlin,因为是它把你带到这里来。编辑 LINUX.BAT 文件指向你的 Linux 根分区。 Q3:现在软盘上的 N 系列不合适,我该如何为我的膝上型电脑取得网络支持? A:首先把 A 系列装上。然后,把 N 系列中的 tcpip.tgz 包放到一张软盘上。如果你的内核不包括网络支持,则把 netmods.tgz (网络内核模块)包放到另一张软盘上。如果你需要 PPP,则把 PPP包也放上。然后,(重启之后,不是从安装软盘重启)运行 “pkgtool”。选择 “install packages from floppy disks” 这一选项,安装 tcpip.tgz netmods.tgz 及 ppp.tgz 包。然后运行 netconfig 来设置你的网络,运行 pppsetup 来设置 PPP,编辑 /etc/rc.d/rc.modules 来为你的以太网卡加载支持。当你重启后,机器就有了网络能力了,而你则可以开始从网络上添加更多的软件。 Q4:为什么我的索尼 CDU-31/33a 不再能被 Linux 检测到了?以前可以的! A:以下摘自源代码: ******************************************************* 警告 - 所有的自动检测已经被从驱动中移除。你必须通过在启动时或者在lilo.conf 里设定 LILO 来配置 CDU31A。在我的 lilo.conf 里有如下一行: append=”cdu31a=0x1f88,0,PAS” 第一个数字是这块卡的输入/输出基本地址。第二个数字是中断(0表示没有)。如果* * 在 Pro-Audio spectrum 上则第三个应该是 “PAS”,否则就没有。 ******************************************************* 你也可以在 Loadlin 中使用以下选项: C:\LOADLIN\LOADLIN C:\LINUX\VMLINUZ root=/dev/hda1 cdu31a=0x1f88,0,PAS 或者,在引导盘 LILO: 提示符后使用以下选项,例如: LILO: ramdisk cdu31a=0x1f88,0,PAS LILO: mount root=/dev/sda1 cdu31a=0x1f88,0,PAS ro Q5:内核不能识别一个与 Soundblaster 16 IDE 相连的 CD-ROM! A:首先,确认你正在使用适当的内核──这种情况下需要的是 IDE/ATAPI CD-ROM 类型,而非 SBPCD 类型。然后,如果问题还是没有解决,那么使用第二个 IDE 通道(IRQ 15 0x170),并且确认驱动器被设置为主驱动器(背后的跳线)而非从属驱动器(通常这是默认选项)。 Q6:我用 RAWRITE 做的磁盘无法启动! A:首先,检查你是否使用了大小正确的映像。如果你在1.2 MB 的软盘上使用1.44 MB 软盘的映像(或者反之亦然),你可能会看到“LI” 的信息,同时引导程序会挂起。 另一个可能是 BIOS 的问题──一位用户曾经向我报告 RAWRITE 在他的机器上失败除非他先在一张 MS-DOS 软盘上做“dir a:“。很明显这是由于 BIOS 不恰当地把地址 0000:0526 (扇区数)初始化做11 h 而不是12 h。在设备上用“dir” 可以修正该值。在本案中受影响的机器使用 Unicore Software 的“Mr. BIOS”。 Q7:我能够很好的安装,但是装完的系统不能启动! A:Slackware 使用精简的内核来进行安装──换句话说,这些内核仅包含控制完成安装所需设备的驱动。如果你没有安装引导盘的内核,也许应该安装(比如说) bare.i IDE 引导盘,但是却从 A 系列中装了 SCSI 内核到硬盘。由于这个内核内建了许多 SCSI 驱动,如果有一块不常见的硬件或一个非标准的端口/IRQ 不能被内核正确识别的话,这将会导致引导时挂起。如果发生此事,你得尝试一个不同的内核。首先,使用在安装过程中正常工作的引导盘来启动你的系统。为了做到这一点,引导这张盘并在 LILO 提示符处输入如下命令: mount root=/dev/sda2 (以上假设 /dev/sda2 是你的 Linux 根分区,否则使用你系统上适当的设备名) 一旦你的系统运行起来之后,安装或者编译一个不同的内核。 编译内核的说明可以在你的内核源代码目录下找到(如果你安装了内核源代码就会有的)。内核源代码通常可以在 /usr/src/linux 下找到。 简单说来,构建一个新内核的方法如下: cd /usr/src/linux make config (然而回答你所需要回答的问题) make dep ; make clean ; make zImage 如果 zImage 构建成功,请看关于如何通过 LILO 或者 Loadlin 安装它的说明,或者做一张引导盘。 一旦你完成之后,你可以希望通过 cd'ing 到 /usr/src/linux 来整理它并再次做 'make clean'。 祝你好运!如果你能解决这个问题,那么你在你向一个 Linux 高手转变的道路上表现得非常好。 Q8:为什么我在 Slackware 下被告知“网络不可达”? A:这有几种可能性。对大多数用户而言,在机箱外面的一切都运作良好。但是,如果你遇到了这个问题,这里有两个办法你可以尝试: 1、把 /etc/rc.d/rc.inet/ 里的 ifconfig 调用中的广播地址和子网掩码的参数(及其变量)对调。确认你没有尝试设定你自己的 IP 地址──你不该那么做。 2、确认 /etc/networks 被恰当地设置。 3、你也许想尝试 'netconfig' 脚本。 它并不完美,但工作却干得漂亮。 4、确认你所用的内核支持你的硬件。Slackware 提供的大多数内核包括一个 /boot/config 文件,你可以查看编译选项。 Q9:$%#@! 为什么我的 UltraStor SCSI 不能被检测到?在 DOS 下可以的! A:把输入/输出地址设置成 0x340 而非 0x330。 遇到有硬件不能工作,一个好的规则就是在器上玩弄 IRQ 和输入/输出设置并观察有什么发生。比如你的系统启动了并能运行,而 CD-ROM 或者磁带或者其它类似东西,你总是可以在 /usr/src/linux/drivers... 下驱动程序源代码里找一找。真的,这不会令你上当的!通常,源代码里包含了重要的文档,比如该类设备默认的 IRQ 设置,以及在 /dev 里主要的入口数目。你也可以尝试另一张引导盘看看是否有效。 Q10:如果 NFS 安装的安装菜单不能工作,我如何在开始安装之前动手设置网络? A:如果你的 Linux 及其在 /etc/exports 里的 hosts 中被列出(但并非整个网络),在开始安装之前,你可能需要做下列事情。通常只是当 NFS 服务器与你的 Linux 机器处于不同的子网掩码时才需要这么做: # Setup the loopback device: ifconfig lo 127.0.0.1 route add -net 127.0.0.0 # Setup the network: ifconfig eth0 1.2.3.4 # 1.2.3.4 是我的机器的 IP 地址。 route add -net 1.2.3.0 route add default gw 1.2.3.1 # 在这个例子中,我们的 NFS 服务器 ip 地址为 # 1.2.31.4 且属于不同的网络。 Q11:我的 IBM Thinkpad 不能正确地把跟磁盘加载到 ramdisk,所以我不能安装 Linux。我该怎么办? A:某些旧的 Thinkpad 的磁盘转换扇区的工作有点不同。这可以通过在引导时指定 "floppy=thinkpad" 来解决: boot: ramdisk floppy=thinkpad ……在引导盘的 LILO 提示符处。 Q12:我的大(> 1/2 G) IDE 驱动器报告说多于16个头,因此 Linux 无法在上面安装。我该怎么办? A:查看 /docs/mini/Large-IDE 文件,有关于如何解决这个问题的说明。(感谢 Bob DiMarco 把此问题报告给我,也感谢 Prtrick LoPresti 第一个编译信息) 注:较新的内核 (> 1.1.40) 将会自动为你完成此一翻译,因此多余的工作是不必要的。 Q13:我怎么用我新采用的内核作一张 Slackware 引导盘? A:好,你选中一个已存在的内核(宁可找个大点的如 "scsinet.s"),把它放到一张软盘上,然后这么做: mount /dev/fd0 /mnt (加载它) cat zImage > /mnt/vmlinuz (令新内核就位) rdev -R /mnt/vmlinuz 0 (加载为可读写) rdev /mnt/vmlinuz /dev/fd0u1440 (使用这个驱动器,或者 /dev/fd0h1200) rdev -r /mnt/vmlinuz 49152 (令 ramdisk 可用) lilo -r /mnt (重装 lilo) umount /mnt (好了!你成功了!:^) Q14:我的退格键在X 下表现怪异?我如何修复它? A:我尚未真正见过此一问题。但我偶尔听到它。你也许可以尝试在 /usr/X11/lib/X11/xinit 下或者 $HOME 下的 .Xmodmap 里加入: keycode 22=BackSpace Q15:我构建了一个新内核。现在我该如何用这个新的 bzImage 文件替换已存在的内核? A:首先,你必须准备新的内核。如果你正在使用 UMSDOS,你会希望你的系统引导成可读写。否则,你将希望它被引导成只读以便你的文件系统得到安全的检查。所以,这么做: rdev -R bzImage 0 对于其它文件系统: rdev -R bzImage 1 然后,你需要设置根分区。比如说,如果你的 Linux 根分区是 /dev/hda2,你需要这么做: rdev bzImage /dev/hda2 然后,如果你喜欢可以设置显示模式。以下例子是设置成80x25普通终端模式: rdev bzImage -1 其它模式包括:-3 = 提示符,-2 = 扩展 VGA。如果你使用 LILO 而且想试试扩展图象模式,那么你就要把 /etc/lilo.conf 里强制成为普通模式的那一行删去。接下来,你要安装内核。如果你从软盘引导,你可以简单地把一张格式化过的软盘插入软驱,然后这样写入 bzImage: cat bzImage > /dev/fd0 如果你使用 lilo,你得把 bzImage 复制到你的 lilo.conf 希望它所在的位置(也许是 /vmlinuz)并重装 lilo。如果你用 Slackware 的 liloconf 脚本这同样会奏效的。(这是 setup 使用的脚本) cp bzImage /vmlinuz ; lilo 你得先备份你原来的 /vmlinuz。 如果你使用 Loadlin,把内核复制到 Loadlin 可见的 DOS 分区(如过你使用 UMSDOS,就不必这么做)。然后像这样从 DOS 启动 Linux: c:\loadlin\loadlin.exe c:\linux\vmlinuz root=/dev/hda2 那会有效的。 Q16:为什么我不能从 elvis (vi) 中剪切粘贴到一个 xterm? A:最近的 elvis 用鼠标来代替游标位置。如果你想剪切粘贴,那么请在你使用鼠标的同时按住左 shift 键。 Q17:为什么我的总线鼠标不工作?内核、选择、X 服务器以及 text-mouse 都说“没有该设备。” A:伴随 Slackware 一起发布的内核都没有包含总线鼠标的驱动。近来我尝试把它们包括进来但是却有严重的驱动程序冲突──所以如果它们无法与其它驱动共存的话最好还是把它们留在外面。要我提供包括全部总线鼠标驱动的各个版本的预编译内核显然是不合理的。我只有一台386。;^) (我开玩笑的,在1999年3月份的时候,我正用着一台 P2-450) 解决方案是从内核模块中加载你的鼠标支持。编译 /etc/rc.d/rc.modules,取消你的鼠标行前面的注释: # Mouse support: # /sbin/modprobe atixlmouse # /sbin/modprobe busmouse # /sbin/modprobe msbusmouse (为了取消一个 shell 脚本的注释行,你可以用一个文本编辑器删掉该行开始处的 '#') Q18:我看到我的 SoundBlaster/松下 CD-ROM 在引导时被检测到,但我不能从中安装或加载它。怎么办? A:尝试把驱动器号设置为0.安装盘希望这样。在驱动器的背后应该会有用来设置它的跳线──把它移到 leftmost 的位置。 Q19:我用的是 UMSDOS 并且想让 Windows 与 Linux 使用同一个交换空间。应该怎么做? A:如果你想让 Linux-UMSDOS 与 Windows 共享交换文件,你可以这么做: 1、创建一个 NNNN 千字节的永久交换文件。 2、在 /etc/rc.d/rc.local 里加入如下行: rm -f /DOS/windows/spart.par <---用来镇压下次启动时 Windows 的抱怨! mkswap /DOS/386spart.par NNNN sync swapon /DOS/386spart.par 3、在 /etc/rc.d/rc.0 文件里加入 "swapof"。 Q20:安装盘上的 root 密码是什么? A:没有 root 密码。如果你被要求输入,通常是因为你用来安装的内存不够。 为了解决这个问题,查看你的 CMOS 设置并确认没有打开 ROM 屏蔽。ROM 屏蔽浪费内存且不会提高 Linux 的性能。同时确保你所用的是能够使用的最小的引导盘。比如说,你不是从 NFS 安装到 SCSI 驱动器你不必使用 "scsinet"。使用小一点的东西── 如果可以的话就用 "bare" 磁盘。有人误以为如果它们想在安装完成后使用网络的话就要使用带网络驱动的引导盘。不是这样的!引导盘上包含的东西与你在安装后所能使用的东西没有任何冲突──几乎在所有的情况下你都不需要在安装后的系统上运行与你进行安装时相同的内核。 Q21:Slackware Linux 发行版在我的机上装好后我怎么添加和删除软件? A:为了删除软件包,输入 "pkgtool" 然后根据提示来做。 pkgtool 也可以让你从当前目录中添加软件包。 更好的安装软件方法是用 "setup" 脚本。当你完成了初次安装之后,setup 把它自己的一个副本放到你的 /sbin 目录下以便将来再用。如果你确实愿意的话,你也可以通过引导盘或者安装盘来添加软件。 如果是通过 NFS 来给一个运行中的系统添加软件的话,你最好手动加载分区并使用 setup 的 'install from a mounted directory' 的功能。还有一些命令行工具可以让你创建、添加和删除软件包。你可以看 manpages: installpkg(8), removepkg(8), makepkg(8), explodepkg(8)。下面是如何用 installpkg 来安装软件包的一个简单例子: instalpkg package.tgz Q22:我不知道 setup/pkgtool/installpkg 把哪些文件放到那里? A:查看 /var/adm/packages。 类似的,你可以在 /var/adm/scripts 里找到每个包的安装脚本。 Q23:我把我的分区设置成为 "Linux native" 但是 Slackware 仍然无法检测到它们!我该怎么办? A:这个问题比较少见,我还不清楚是什么引起的。 [ 我发现这与 IBM PS/1, Thinkpad 及类似机器上的检测不到硬盘的问题不同。如果你有这些机器的话,fdisk 会产生问题,在下面会提到 :^) ] 通过以下方法你仍然可以进行安装: 1、通过一张引导盘启动 text.gz。 2、为 Linux 创建并格式化分区。 3、把目标分区挂载到 /mnt 下。 4、键入 "setup -target_mounted" 5、参照安装说明的余下部分进行安装。 6、键入 "vi /mnt/etc/fstab" 并输入一个适当的 fstab。 以我的 fstab 文件内容为例: /dev/hdb2 swap swap defaults /dev/hda2 / ext2 defaults /dev/hda3 /usr xiafs defaults /dev/hda1 /dos msdos defaults /dev/hdb1 /os2 msdos defaults none /proc proc defaults 下面略做说明:第一部分是所需要挂载的分区,第二部分是指定它应被挂载到哪里,第三部分是文件系统,最后一个部分是使用选项。除非你是 Linux 专家,否则把它设置为 "defaults"。 其它需要知道的事情: 确认你在把其它分区挂到根分区下之前已列出根分区。 加入 /proc 这样一行,否则 "ps", "w" 等将无效。 在最后插入一个空行是个好主意,因为曾经有人向我报告说最后一行列出的分区不能被加载。 7、当你创建并保存此文件后,你就可以按 ctrl-alt-delet 来重启了。 Q24:我有一台 (PS/1 || Valuepoint || Thinkpad),由于 fdisk 不能认出我的硬盘而无法安装。我该怎么办? A:你需要在引导盘的提示符处输入你的硬盘参数。你也可以通过在第一个参数后使用第二个 hd= 参数来指定第二个 IDE 驱动器的几何性质。 在你启动了引导盘之后,你会发现有更多的在 LILO 提示符出传递你的硬盘参数到内核使之能够被识别的格式信息。 如果你希望 LILO 能工作,你得编辑 lilo.conf 文件,加入一行类似于 hd= flag。把如下一行加入到该文件的开头处: append="hd=cyl,hds,secs" "cyl", "hds",及 "secs" 分别是该驱动器上 cylinders,sectors,及 heads 的数值。 如果你有两个 IDE 驱动器,(像这样)指定它们: append="hd=967,13,31 hd=944,14,40" Q25:为什么我的 /etc/issue 和 /etc/motd 总是在开机是重设置它们自身? A:是 /etc/rc.d/rc.S 在你开机后测得你当前正在运行的内核后设置它们──除非在登入处显示的内核版本不再是当前版本了。 如果你想自己来写 /etc/issue 和 /etc/motd,你可以注释掉 /etc/rc.d/rc.S 中的这部分。 Q26:Emacs 卸载核心,提示说缺少库,或者没有 X 支持! A:GNU Emacs 系列包括一个你可以选择的带 X11 支持的或不带 X11 支持的版本。确认你的机器上有一个正确的二进制文件。 包含 X11 的二进制文件将被作为第一张光盘上某个软件包的一部分被安装,它是否会被安装取决于你是否需要 X11 支持。如果你不需要 X11 支持,安装最后一张盘上 Emacs 系列中的 "emac_nox.tgz" 就可以了。 Q27:为什么我编译东西时提示 'signal 11: internal compiler error' 就死了? A:这有99%的可能是暗示了硬件问题。这通常可以通过在 CMOS 设置中加大等第状态的数值来解决。这几乎总是可以通过关闭 RAM 缓存来解决,虽然这也许是当它导致明显减慢时你最后的依靠。 另一个常见的原因是过热,尤其是在 CPU 超频的情况下。我已有几台机有这毛病好多年了,特别是在重负之下。如果 signal 11 的问题通常发生在机器运行了一阵之后,它应该就是跟温度有关。试一下打开机箱运行机器。如果这不起作用,就瞄准主板上的某个风扇。(我曾经用这个方法在一些使用 hot-running SCSI 硬盘的机器上,在其整个生命周期中如此运行)一个高质量的 CPU 风扇也会帮大忙的。如果你只有一个低功率的风扇/散热器的话,考虑把它换成 TennMax (www.TennMax.com)。在我这里使用这种风扇的效果效果非常棒。(一个双风扇模式使我的 P2-450 变得非常稳定) 想了解更多关于 signal 11 问题的原因及对策,请参看 http://www.bitwizard.nl/sig11/ 上 Signal 11 FAQ 的最新版本。 其法文译本可在如下地址找到:http://www.linux-france.com/article/sig11fr Q28:我该如何改变(处理) ls 的颜色? A:阅读 man 页,及 /etc/DIR_COLORS 文档。你可以通过任何你喜欢的方法来设置颜色,或者把它们全部都关闭。同时,你也可以复制 /etc/DIR_COLORS 到你的家目录,命名为 '.dir_colors' 通过逐个设定用户从而覆盖全局默认设置。 Q29:我用 "startx" 启动 X 而且它也工作了,但是我无法切换到虚拟终端。为什么? A:在 Linux 文件模式下,你可以用 Alt-F1 到 Alt-F8 来切换虚拟终端。在 X 下,你得用 Ctrl-Alt-F1 到 Ctrl-Alt-F8。 另一组有用的秘密组合键是RightShift-PgUp/PgDown 来切换。(从零到若干几页是一个随机数字,取决于你的显示文本缓冲内存状态) Q30:为什么我无法在 X 里用新的 ghostscript? A:请确认 XAP1 盘上的 gs_x11.tgz 已被正确安装。 Q31:所有东西都不能工作了!该怎么办? A:如果你看上去遇到了灾难性的失败(!),请检查 ftp.slackware.com 上 /pub/slackware 下的 FILE_LIST 文件与你硬盘内容的不同之处并确认你没有漏掉什么文件。 我也注意到了大多数关于 kernel panics 和系统挂起的问题报告来自只有4 MB 内存的人。如果你正属于这种情况,那么我建议你花点钱再加上4 MB。我用8 MB 的内存从来没有崩溃过。(除非我真的非常倒霉) 如果你不想那么做,浏览你的 /etc/rc.d/rc.* 文件并去除所有你不用的守护进程,像 crond, lpd 或者 selection。 如果你加了4 MB之后被警告说 "virtual memory exceeded in new',确认在运行 setup 前设置并激活了一个交换分区。如果你实在很难增加内存,你可以用 'editroot' 引导一张根磁盘来代替某个常用的引导内核。这会把软盘加载到根驱动器,你得从其它驱动器或者硬盘启动器进行安装。你或许也无法创建任何类型的引导盘,所以你必须安装 LILO 并冒一个险。我只建议不能用交换文件的人用此方法。 Q32:我如何用一个自制的内核做一张引导盘? A:查看 ./kernels 子目录。你会在哪里发现关于如何做的全部说明。 Q33:当我刚刚装完 Slackware 的时候,系统可以发现我的 CD-ROM。但是但我尝试用 LILO或引导盘引导后系统就不再能找到 CD-ROM 驱动器了!怎么修复它? A:问题的原因可能是你使用了包含你的 CD-ROM 驱动器支持的引导盘,但是你没有安装一个包含该支持的内核。 如果你准备尝试编译一个内核,你可以通过编译一个自制的内核(参看关于编译 Linux 内核的段落)从而很容易地解决问题,或者你也可以把 CD-ROM 的驱动作为内核模块来加载。你可以通过编辑 /etc/rc.d/rc.modules 文件在下次启动时为你的 CD-ROM 驱动器装载模块。 以下是该文件中装载 CD-ROM 驱动器模块的段落: # These modules add CD-ROM drive support. Most of these drivers will probe # for the I/O address and IRQ of the drive automatically if the parameters # to configure them are omitted. Typically the I/O address will be specified # in hexadecimal, e.g.: cm206=0x300,11 # #/sbin/modprobe aztcd aztcd=<I/O address> #/sbin/modprobe cdu31a cdu31a_port=<I/O address> cdu31a_irq=<interrupt> #/sbin/modprobe cm206 cm206=<I/O address>,<IRQ> #/sbin/modprobe gscd gscd=<I/O address> #/sbin/modprobe mcd mcd=<I/O address>,<IRQ> #/sbin/modprobe mcdx mcdx=<I/O address>,<IRQ> #/sbin/modprobe optcd optcd=<I/O address> # Below, this last number is "1" for SoundBlaster Pro, or "0" for a clone. #/sbin/modprobe sbpcd sbpcd=<I/O address>,1 #/sbin/modprobe sonycd535 sonycd535=<I/O address> #/sbin/modprobe sjcd sjcd=<I/O address> 如果你要使用其中某一项,删去你的 CD-ROM 驱动器那一行前面的 '#' 即可。如果你知道输入/输出地址和/或主板的 IRQ,把它填入该行。比如,假设你的 SoundBlaster CD-ROM 在 0x300 处,那么你可以把 sbpcd 那行改成这样: /sbin/modprobe sbpcd sbpcd=0x300,1 如果你需要读取 CD-ROM 驱动器来安装模块软件包,用你安装系统时使用的引导盘进入系统。在 LILO 提示符处使用如下命令,但是把根设备名替换成你机器上使用的名称: mount root=/dev/hda1 在你登入后,这样安装模块软件包: installpkg /cdrom/slackware/a*/modules.tgz Q34:我能用一个串口上的终端来安装吗? A:是的,Slackware 引导盘包含了把系统终端放在一个串口上的支持。为了做到这一点,你得在引导盘的引导提示符处使用 console=ttyS0 或者 console=ttyS1(这是 COM1: 和 COM2: 的两个例子)作为额外参数。 比如说,为了在一个串口终端上进行安装,你要启动如 bare.i 的引导盘并等它到引导提示符处停下来。接下来输入如下命令来用 COM1 上的终端引导内核: ramdisk console=ttyS0 为了从一个可引导并使用串口终端的 CD-ROM 来安装,在 "boot" 提示符处输入内核及串口的名称: bare.i console=ttyS0 Q35:“总线错误”是什么意思? A:这通常意味着你机器上的内存不够。看看你是否能设置一些交换空间或者一个交换文件──这样就能解决问题。 另外,LDP 的成员已经发布了一批极好的 Linux 手册。你可以在 metalab.unc.edu 上的 /pub/Linux/docs/LDP 下找到它们。 Patrick Volkerding volkerdi@slackware.com 翻译:shadkong shadkong@163.com
__________________
S.K. 此帖于 05-10-25 16:12 被 shadkong 编辑. |
|
|
|
||