Chinaunix首页 | 论坛 | 博客
  • 博客访问: 690323
  • 博文数量: 156
  • 博客积分: 3402
  • 博客等级: 中校
  • 技术积分: 1639
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-13 14:06
个人简介

业余编程爱好者

文章分类

全部博文(156)

文章存档

2014年(1)

2013年(13)

2012年(46)

2011年(38)

2010年(58)

分类: LINUX

2010-11-22 12:37:17

Gentoo Linux FAQs中译本

1 初识Gentoo Linux 

a Gentoo是怎么发音的,还有它的词义是什么呢? 
Gentoo 呢,是一种很小,跑的很快的企鹅,它发这个音:“jen-two”(中文别名“健途”,:))(转者注():亲昵一点可以叫“贱兔”,实际一点我还是喜欢“健兔” :)) 

b Gentoo Linux有何过人之处呢? 
Gentoo Linux 是一种定制性很强,非常摩登,且运行速度飞快的发行版。因此,对于习惯了使用Slackware,Linux From Scratch(LFS) 或者是 BSD 的用户来说它也非常有吸引力。Gentoo 内建了类似 BSD 的包管理机制,你可以很方便的升级你的系统到最新版本。 


安装 Gentoo 

a .iso和 .tbz2 安装文件有何不同? 
.tbz2包含了安装 Gentoo Linux 所必需的系统文件。.iso 镜像包含了内核,许多主流硬件的驱动模块,以及有用的系统工具,像kfs 等,并对网络有着良好的支持。比起 .tbz2,用户更喜欢把 .iso 镜像刻录到 CD 上并启动到一个最小化的 Linux 环境来安装。如果用户要从一个已安装好的 Linux 系统上安装 Gentoo,.tbz2 包则是比较好的选择。我们只要下载 .tbz2 包,解压到安装 Gentoo 的分区(请确认解压包时没有遗漏 -p 参数),执行 chroot 命令并按一般的步骤开始安装。(注:硬盘安装方法请参考这里) 

b 为什么有时候 .iso 和 .tbz2 文件名称后会有不同的修订号? 
.tbz2 包只在 Gentoo Linux 系统有比较重要的升级时才修正版本号,而 .iso 镜像只在我们发现有用户无法用自己的硬件设备启动 BootCD 安装时,才会重新制作镜像和修订版本号。从新的内核驱动模块和补丁被加入并稳定下来后,在没有类似情况出现。 

c Gentoo Linux CD 在我的 Sony Super-Slim VAIO 笔记本上出了问题,它无法识别我的的 PCMCIA ATAPI CD-ROM。 
请先确认第二个 IDE 控制器已和 CDROM 连接好(如果不做额外的设置的话,设备不会自动启动。),然后按照在 boot: 提示符,输入以下命令:rescue ide2=0x180 0x386 
如果你正在使用 1.05rc5 或更旧一些的光盘的话,不妨考虑下载最新的iso文件,再执行上述命令,也可使用以下命令: gentooide2=0x180 0x386 

d 在我使用"-O9 -ffast-math -fomit-frame-pointer"优化参数编译安装软件后,发现系统很不稳定,怎么会这样呢? 
使用任何大于-03的优化参数编译软件是很危险的,它很有可能让你的安装软件崩溃。有时太过苛刻的优化系统反而会弄巧成拙。Loc-Dog(IRC上的网友)告诉我,他通常使用 -O3 -mcpu=i686 -march=i686 -fforce-addr -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop -frerun-loop-opt -malign-functions=4 优化参数编译包就可以达到很好的效果。如果还是想要为一些特别的软件包提升区区2%的性能的话(一般是些图行处理和多媒体软件包)最好是使用 ultra-high 参数,那样可以很方便的测试软件包以确定没有优化过头。 
当然了,在你系统出了这样那样的问题之前还是劝你使用 CFLAGS= -march=i686 -O2 为妥。 

e 完成系统安装后 root 的默认 passwd 是什么? 
默认的是空密码,打回车就行了。 

f 怎么修改我的 root passwd(或其他用户的)? 
你可以在登录后使用 passwd 命令来修改。更多有关他的参数选项,请参考 man passwd. 

g 我怎么增加一个用户呢? 
每个使用者似乎都知道不能总是使用 root 帐户操作系统,那怎么去增加一个用户呢? 
使用 adduser 命令可以达到目的,接着会提示给这个新增加的用户设置一个密码。 

h 为什么普通用户不能使用 su 命令取得 root 用户的权限? 
为了安全的原因,只有 wheeel 组的用户可以使用su命令取得root用户的权限。把一个用户加入 wheel 组可以这么做: 
代码: 
# usermod -G users,wheel uname 


i 我该如何做才能使用 devfs ? 
如果你使用 1.0rc_5 以上的 gentoo Linux 的话,不需要做什么特殊的设置就可以使用 devfs。系统会自动启动(不过你得在内核中加入对 devfs 的支持,没忘了吧:))。那如果你使用的版本低于1.0rc_5 的话,在你的GRUB配制文件里加入 devfs=mount 选项,像这样: 
代码: 
kernel /boot/boot/bzImage devfs=mount foo=bar 

以后每次启动时内核会自动挂载 /dev/devfs 文件系统。 

j 那该怎样禁止使用 devfs 呢? 
在 1.0rc_6 以上版本,你可以给内核加上 gentoo=nodevfs 参数。 

k 怎样做在重启时能保持 /dev/mouse 设备不丢失(使用devfs文件系统)? 
如果你使用 1.0_rc6 以上版本,那么你可以用 ln -s 命令为 /dev/mouse/ 设备做个符号连接,这样重启间 mouse 设备就不会再有丢失的问题了。 
所有其他的用户需要编辑 /etc/devfsd.conf 文件并加入以下几行: 
代码: 
REGISTER ^misc/psaux$ CFUNCTION GLOBAL symlink misc/psaux mouse 
UNREGISTER ^misc/psaux$ CFUNCTION GLOBAL unlink mouse 

如果你使用的不是PS/2鼠标, /dev/misc/psaux 设备,你需要调整 misc/psaux/ 为你使用的设备名,然后执行 killall -HUP devfsd 命令让devfsd重新读取 /etc/devfsd.conf 文件。 

l Grub找不到 stage x.y ? 
在安装过程中 grub 的有关配置文件会被拷贝到 /boot/grub/ 下(在Gentoo Linux 1.0rc_5 以及之前的版本是在/ boot/boot/grub 下)Grub启动时会在 /boot/grub/ 目录下自动搜寻启动分区。(我们强烈建议单独划分一个挂载于/boot的启动分区,这样做可以最大程度的保证内核启动的安全性。)标题错误的发生一般是因为
a 没有单独划分启动分区; 

b在解压缩.tbz2系统安装包或emerge ?usepkg system前忘了挂载/boot/启动分区; 

c当启动分区是reiserfs文件系统时忘了加notail选项。请阅读 IBM DeveloperWorks Grub tutorial.以便了解更多有关 grub 的命令行使用及相关信息。


m 我的ASUS CUV4X-D设备无法启动,在内核自检硬件设备时会僵死 

在BIOS里关闭MPS 1.4(multi-processor-system : 多处理器支持系统)或者转为1.1的版本试一下。Multi-Processor-System仍会很正常的工作。请确认启动Gentoo Linux使用了正确的启动选项。 


3软件包的管理 

a GentooLinux的软件包是以什么格式存储的? 
它们是以 ebuild 自动安装脚本的形式放在 Protage 树上。我们是基于 port 机制的系统,我们提供了自动安装脚本(ebuild文件)和一个特殊的包管理系统(Portage),所以你可以从源文件安装各种的程序。我们通常只做二进制的版本包。你可以从Development HOWTO 了解更多有关ebuild脚本的信息。在完整的ISO文件里,我们提供了一整套.tbz2格式的增强二进制包工具。(.tar.bz2格式在文件的末尾添加了合适的meta-information) 

b 为什么要写一个新的port系统(Portage)取代BSD的版本? 
当然是因为 Portage 有更多优点啦。ebuild语法其中的一个设计原理就是可以模拟你手动输入安装程序的过程,因此Portage更容易学习和被掌握,可定制性也很强。它也拥有像OpenBSD类型的“fake”安装,安全的反安装,系统配置,包屏蔽,以及一个真正解决包倚赖关系的系统等等非常好的特性。 

c 和debian的apt以及BSD的ports相比有何不同之处呢? 
Portage结合了apt和ports许多优秀的特性,比如说,USE选项,真正解决包倚赖关系的系统,安全地安装和卸载软件包,还有真正的软件包数据库。我想Portage是最棒的;它是一个带有人性化安全性极佳包管理机制的ports系统。 

d 那么改怎样安装和卸载软件包呢? 
Portage User Guide会详细的告诉你改怎样安装卸载软件包以及如何升级Portage。 
怎样设置编译软件包的一些相关属性呢? 
可以修改/etc/make.conf文件,来改变编译和emerge软件包的默认选项。以下列出的是主要的选项: 
标记 说明 
HOST 这里可以设置许多的编译选项,像i686-pc-linux-gnu. 
CFLAGS 一些有关语言编译软件包的gcc选项 
CXXFLAGS 有关用C++语言编译软件包的gcc属性 
USE 它允许你设置你喜欢的一些属性进行编译。比如说在USE字符串中加入了“gnome”,那当你在编译xchat时会加入对gnome的支持。所有的倚赖关系都受USE的控制。 
GENTOO_MIRRORS 存放Gentoo软件包下载地址的列表。Protage会试图首先在一个GENTOO_MIRROR下载软件包,然后才是正式的下载地址。强制让Portage跳过镜像检查,那就设置此属性为””。 

e /etc/make.defaults文件是派什么用场的? 
在portage 1.5之前,/etc/make.defaults就是过时的配置文件,如果你有了Portage 1.5-r1或以上版本,那么可以安全地删除此文件。这个文件已被/etc/make.profile/make.defaults所取代,它包含了系统特殊属性的一些默认设置。(实际上现在/etc/make.profile是/usr/portage/profiles/default的一个符号连接。)它规定了许多变量设置文件的优先权,如下所示(按最优先原则排列):

1环境变量 

2 /etc/make.conf,按你的设置 

3 /etc/make.profile/make.defaults,默认的特殊选项。 

4 /etc/make.globals,gobal的默认选项(其他配置文件没有的特殊选项可以到这里来设置。)


f 有什么方法可以像apt-get update或make World命令一样升级我安装过的所有软件包? 
当然可以咯!输入emerge ?update system命令去升级你所有的系统软件包,(请先带―pretend参数察看所要安装的软件包)。使用emerge ?update world命令完整的升级你的系统,包括所有安装过的软件包。(再次提醒一下,请先带―pretend参数察看所要安装的软件包。) 

g 当在用emerge或ebuild升级一个软件包时,怎样避免破坏我的设置文件? 
现在Portage默认包含了设置文件管理机制的支持。输入emerge ?help config命令来了解更多的信息。一般来说这个问题的答案是,如果一个软件包在/etc的某个地方安装了他的配置文件,而先前的配置文件已经存在的话,,新的配置文件会被更名为._cfgxxxx_????。一个很有用的工具etc-update可以测试和升级任何受保护的配置文件,你可以emerge app-admin/gentookit来获取此工具。 

h 我想自己手动执行./configure命令可以吗? 
当然能,但一般我们不这样做。首先按照man ebuild上的做,ebuild xxx-x.y.z ebuild unpack。接着 cd /var/portage/xxx-x.y.z/work,手动执行./configure和make步骤安装软件包(两个步骤都要做,因为Portage已不再管理这个软件包的编译。)待用Portage完成了安装,(这样以后你可以很方便的卸载它,你应该这样做,随后Portage会解决可能出现的倚赖关系。)第一步你需要touch /var/portage/xxx-x.y.z/.comiled,然后执行ebuild xxx-x.y.z ebuild merge(欺骗Portage ebuild foo-x.y.z.ebuild compile步骤已经结束。) 

i rsync怎么不能用呢? 
如果你的网络在防火墙的后面,无法使用rsync,可以从 下载每日的/usr/portage/ snapshot来代替它。只要执行tar xvjf portage-xxx.tbz2把它解压到/user目录就行了。 

j 在防火墙后怎么使用emerge呢? 
可以修改/etc/make.conf中的PROXY选项,如果还是不行的话,试着对/etc/wget/wgetrc中的http_proxy和ftp_proxy的选项做合适的修改。 
我可以在其他的操作系统上使用rsync吗? 
有一个叫“unsion”程序可以在UNIX和Win32下工作,详情请见 

k 家里用的是低速的modem上网的。我可不可以下载了源码包然后再把它们安装到系统上? 
绝对可以。你可以运行emerge ?pretend package来察看什么软件包需要被安装。下载源文件到任何你想放置的目录。然后拷贝他们到/usr/portage/distfiles并执行emerge package命令就会开始按你的要求编译安装程序。 

l /usr/portage/distfiles/里的.tar.gz源码包安装好后可不可以删除,它们占了很多的硬盘空间? 
没问题,你可以放心地删除这些包。不过你的网速如果很慢的话,比如说用modem上网,你还是原封不动的把它们都留着为好。一般情况下一些特殊块的软件会释放好几个相同的版本ebuild。如果你删除了那些源码包,下次再升级、安装它们时还会再次从Internet上下载。 

m 我可以不用(r)sync管理我的ebuilds吗? 
通常的作法是使用匿名的CVS来取代rsync,把下载的ebuilds保存在/usr/portage/local目录。以下是具体的方法: 
代码: 
# emerge cvs (如果需要的话) 
# cd /usr 
# cvs -d : pserver:anonymous@gentoo.org:/home/anoncvs login (按 回车) 
# cvs -d : pserver:anonymous@gentoo.org:/home/anoncvs get gentoo-x86 
# cp /usr/portage/distfiles/* gentoo-x86/distfiles/ 
# cp -a /usr/portage/packages/* gentoo-x86/packages/ 
# mv portage portage.old 
# ln -s gentoo-x86 portage 
# mkdir /usr/portage/local 
# echo local >> /usr/portage/profiles/categories 
# cp /etc/make.conf /etc/make.conf.orig 
# sed -e 's/#SYNC="cvs/SYNC="cvs/' /etc/make.conf.orig > /etc/make.conf 


n 我emerge了 blackdown-jdk和black-jre,然后用java-config ?list-available命令只列出了black-jre,OpenOffice也不能emerge了,我该怎么办呢? 
解决的方法: 
代码: 
# emerge unmerge blackdown-jre blackdown-jdk 
# CONFIG_PROTECT="" emerge blackdown-jdk 



4 Gentoo的使用方面 
a 我已经在系统里安装了openssh,但只能以root用户登录,其他的用户不行 
这通常可能是由于你的用户帐号没有指定合适的shell。察看/etc/passwd文件,看看它是不是以/bin/bash结尾(或者是以其他的shell结尾)。如果没有的话,你必需为这个帐号指定一个shell。可以用usermod命令,像这样: 
代码: 
# usermod -s /bin/bash myuser 


b 我只能以root帐户执行X程序 
你的/tmp目录权限不对,需要重新设置,以root权限执行下面的命令来改变权限: 
# chmod 1777 /tmp 

c 我怎么配置国际键盘呢? 
编辑/etc/rc.conf文件里的KEYMAP变量。然后重启或执行/etc/init.d/keymaps restart命令。 
只有root帐户能使用DNS域名解析 
/etc/resolv.conf权限不对,执行# chmod 0644 /etc/resolv.conf变更权限。 

d 为什么KDE不能读取/etc/profiles文件里的设置? 
你要在/opt/kde2.1/bin/startkde文件的第一行加上―login,就像这样: 
#!/bin/sh --login 
在最近的KDE版本中已经解决了这个问题。 


5 系统维护 

a Reiserfs文件系统崩溃了,怎么修复呢? 
如果你的ReiserFS系统分区出了问题,试着用Gentoo Linux启动光盘启动,执行reiserfsck ?rebuild-tree来修复它。它会重新核对文件系统的一致性,但无可避免的是你还是会丢失一些文件和目录。 

b 如何在Gentoo 1.0rc_5预览版本里察看/etc/log/syslod.d目录里的timestamps和其他记录信息? 
在gentoo Linux 1.0rc_5或之前的版本察看timestamps记录。需要用到管道传输最近的记录文件到tai64nlocal命令: 
代码: 
# cat /var/log/syslog.d/current | tai64nlocal | less 

或者,如果你想实时察看记录文件,可以这么做: 
代码: 
# tail -f /var/log/syslog.d/current | tai64nlocal 



6 有关Gentoo Linux的开发 

a 哪里可以上报bugs呢? 
指定的软件程序可以和它的开发者联系。也可以使用我们的  网页上 Bugzill bug 跟踪器来呈报bug。去访问我们的IRC(#gentoo) OpenProjects 频道也行。 

b 多少时间可以发行一个新版本呢? 
等主要软件的作者发布了新的源代码,并且我们对系统的软件包都做了必要的升级后就会制作发行新版本。新版本的消息我们会在gentoo-announce邮件列表上发布。等基础的源代码都有了更新或有了新的硬件驱动模块加入后,新的CD镜像会随之新鲜出炉。 
我想让一种软件加入Portage树该怎么做? 
去我们的  网站,输入“ebuild”,提出一个新的bug,并附上你 ebuild 的 bug 报告。 

c 怎样把提出的新问题和解答加入FAQ? 
在 上提出新的bug,并把它们加入“Docs-users”作品中。 
制作一个KDE程序,在执行make -f Makefile.cvs时出现了“invalid unused variable”的错误提示。 
在运行make -f makefile.cvs前要设置一个环境变量: 
export WANT_AUTOMAKE_1_4=1。同样的,对于KDE2的程序设置export WANT_AUTOCONF_2_1=1,KDE的程序则是export WANT_AUTOCONF_2_5=1。 

d 在编译Mozilla时扬声器会发出烦人的蜂鸣声,怎样在console里关闭它? 
可以使用setterm命令关闭它:# setterm -blength 0 
如果在启动时就想关闭它,你需要在/etc/conf.d/local.start里加入上述命令。然而,这样只能屏蔽你正在用的模拟终端,想关闭其他终端的蜂鸣声,用管道输出上述命令到终端,就像这样: 
代码: 
# setterm -blength 0 >/dev/vc/1 

你可以用其他想要屏蔽蜂鸣声的终端设备来代替/dev/vc/1。
阅读(1198) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~