Gentoo另类FAQ集锦
内容简介:一些简短的Gentoo常见问题、文章、笔记等,方便大家的使用。- 作者:
- 来源:http://forums.gentoo.org/viewtopic.php?t=26640
- 译者:cabrio
Gentoo基本知识1:[ebuild N]代表什么意思?
Portage 2.0.48帮助页写到 :
当使用emerge并且加入pretend或verbose参数时,屏幕上的输出可能会有一点难以理解。 本文将解释那些缩写的文字所表示的意思。
[blocks B ] app-text/dos2unix (from pkg app-text/hd2u-0.8.0)
Dos2unix阻止了hd2u的安装(emerge)。互斥者(Blockers)被定义为两个软件包会破坏对方文件或是对您的系统造成损坏。事实上互斥者并不需要都被安装,它们通常提供了相同功能。
[ebuild N ] app-games/qstat-25c
Qstat对您的系统而言是一个新软件包,它将第一次被安装。
[ebuild R ] sys-apps/sed-4.0.5
sed 4.0.5已经被安装了,但是如果您运行这一命令则指定的软件包将会被重新安装(re-emerge)(在本例中是sed这个软件包)
[ebuild F ] media-video/realplayer-8-r6
realplayer软件包需要您手动下载。当您试图安装一个软件包但它的来源找不到时,portage将会停止并要您提供如何找到所需文件的指令。
[ebuild U ] net-fs/samba-2.2.8_pre1 [2.2.7a]
Samba 2.2.7a已经被安装了,且可升级到版本2.2.8_pre1。
[ebuild UD] media-libs/libgd-1.8.4 [2.0.11]
Libgd 2.0.11已经被安装了,但是如果您运行这一命令portage将会为您下载版本1.8.4。这可能是由于一个软件包的新版本在自身损坏或者会在您的系统上产生安全漏洞或者它的一个修补包还没有发布等情况下被屏蔽掉了(masked)。另外可能的原因是您正试图安装的软件包需要一个老版本的软件包来保证安装成功。在本例中,libgd 2.x与libgd 1.x不兼容。这意味着libgd 1.x创建的软件包不能与libgd 2.x一起编译,在它们可以安装之前libgd必须先降级(downgrade)。
[ebuild U-] x11-base/xfree-4.3.0 [4.2.99.902]
表示Xfree缺乏SLOT信息,这可能是由于前一个版本的安装被抛开了(injected)(请查看inject以获取更多信息),或是版本过时得厉害(太老了以致于SLOT信息根本不存在)。不管怎样还是有一个新版本的Xfree您可以愉快地升级。
[ebuild U ] net-易做图yzer/nmap-3.15_beta2 [3.15_beta1] -gtk -gnome
gtk和-gnome反应了nmap安装时USE变量的状态。这里我们看到nmap可以使用USE变量gtk和gnome,但是您目前的设定禁用了 gtk和gnome。因此当您安装时对gtk和gnome的可选支持将不会起作用。*注意:USE状态只会在您使用了--pretend和-- verbose选项时显示。
回到目录
3. 如何知道自己安装的软件
- 作者:
- 来源:http://forums.gentoo.org/viewtopic.php?t=30608
- 译者:小劲鸭
如何得到我安装软件包的清单?qpkg 工具简单的解决了这个工作。你可能需要先emerge gentoolkit。
步骤如下:
qpkg -I
这样可以列出已安装的软件包, 但不会表明它的版本。
代码 3.1: 范例 |
# qpkg -I glibdev-libs/glib *gnome-extra/glibwww *sys-libs/glibc * |
qpkg -I -v
这个命令会以文本格式列出已安装的软件包,并且列出一个软件包的多个版本。
代码 3.2: 范例 |
# qpkg -I -v glibsys-libs/glibc-2.2.5-r7 *dev-libs/glib-1.2.10-r4 *dev-libs/glib-2.0.7 *gnome-extra/glibwww-0.2-r2 * |
回到目录
4. 我不能执行emerge <package-name>, 提示xx config文件需要更新。我该怎么做?
- 作者:
- 来源:http://forums.gentoo.org/viewtopic.php?t=23475
- 译者:小劲鸭
我不能执行emerge <package-name>, 提示xx config文件需要更新。我该怎么做?
你看到如下的讯息:
代码 4.1 |
* Regenerating GNU info directory index...* Processed 70 info files.* IMPORTANT: 40 config files in /etc need updating.* Type emerge --help config to learn how to update config files. |
如果我们执行emerge --help config, 我们将看到:
代码 4.2 |
**Config file management support (preliminary)Portage has a special feature called "config file protection". The purpose ofthis feature is to prevent new package installs from clobbering existingconfiguration files. By default, config file protection is turned on for /etcand the KDE configuration dirs; more may be added in the future.When Portage installs a file into a protected directory tree like /etc, anyexisting files will not be overwritten. If a file of the same name alreadyexists, Portage will change the name of the to-be- installed file from 'foo' to'._cfg0000_foo'. If '._cfg0000_foo' already exists, this name becomes'._cfg0001_foo', etc. In this way, existing files are not overwritten,allowing the administrator to manually merge the new config files and avoid anyunexpected changes.In addition to protecting overwritten files, Portage will not delete any filesfrom a protected directory when a package is unmerged. While this may be alittle bit untidy, it does prevent potentially valuable config files from beingdeleted, which is of paramount importance.Protected directories are set using the CONFIG_PROTECT variable, normallydefined in /etc/make.globals. Directory exceptions to the CONFIG_PROTECTeddirectories can be specified using the CONFIG_PROTECT_MASK variable. To findfiles that need to be updated in /etc, type:# find /etc -iname '._cfg????_*'You can disable this feature by setting CONFIG_PROTECT="-*" in /etc/make.conf.Then, Portage will mercilessly auto-update your config files. Alternatively,you can leave Config File Protection on but tell Portage that it can overwritefiles in certain specific /etc subdirectories. For example, if you wantedPortage to automatically update your rc scripts and your wget configuration,but didn't want any other changes made without your explicit approval, you'dadd this to /etc/make.conf:CONFIG_PROTECT_MASK="/etc/wget /etc/rc.d" |
注释: 译者注:如上一段输出在本段后面有翻译。 |
以上解释了发生了什么事情。 我就不重复说明了。下一步, 我们将用find指令找寻我们需要更行的清单(find /etc/ -iname '/_cg????_*'). 比如以下的源码:
代码 4.3 |
# find /etc -iname '._cfg????_*'/etc/conf.d/._cfg0000_net/etc/init.d/._cfg0000_clock/etc/init.d/._cfg0000_bootmisc/etc/init.d/._cfg0000_checkfs/etc/skel/._cfg0000_.bash_profile/etc/skel/._cfg0000_.bashrc/etc/._cfg0000_fstab/etc/._cfg0000_hosts/etc/._cfg0000_modules.autoload |
注释: 输出文件是根据你的系统和你安装的软件包而不同的。作为参考, 以上的只是你安装完baselayout后的一部分清单。 |
如果你并没有修改任何文件, 那么更新将是安全进行的。两个更新配置文件(config)的办法:用“diff”指令或者用“etc-update”指令。
使用DIFF指令的解决办法:
/etc/init.d/bootmisc是一个你还没有修改的文件。如果我们用diff来执行这些文件,以下是他的输出样本
代码 4.4 |
# diff bootmisc ._cfg0000_bootmisc3,4c3,4< # Distributed under the terms of the GNU General Public License, v2 or later< # $Header: /home/cvsroot/gentoo-src/rc-scripts/init.d/bootmisc,v 1.22 2002/11/04 14:51:07 azarah Exp $-- |