jtlyzsq5039 jtlyzsq5039
人生不该就此沉沦
关注数: 1 粉丝数: 37 发帖数: 10,168 关注贴吧数: 50
关于 Gentoo 的 sets world word_sets 前天手贱把磁盘搞坏了,gentoo 也挂了。花了两天时间重新装了一遍。原来的文件全部丢失,幸好我把 portage vim emacs zsh 等配置都备份到了 Github,所以很快就恢复到了原来的环境。 正好看见有 Gentoo 新人说对 world 不太了解,于是发表一下个人的想法。证明我还活着。 1. sets 是一个拥有若干包的集合,相当于软件组。 1.1 系统预定义了一些 sets,可使用 --list-sets 查看所有 sets (包括自定义)1.2 可以自己定义 sets,将其定义在 /etc/portage/sets 下就行了 比如定义一个 media 的 sets安装一个 sets 就像普通包一样,不同的是需要使用 @sets 制定 sets。 比如要安装上面 media 这个 sets 中的所有包,就要使用 emerge -av @media 一些系统预定义的 sets 可以省略 @, 我不记得哪些可以省略了,但是 world 是可以省略的,其余的我使用的时候都没省略 @. 2 world 是一个预定义的 sets 2.1Required packages 就是 world 里面的包与其中的包的依赖包的集合。 Packages installed 就是系统实际安装的包 当 Installed 的包比 Required 包少的时候,使用 emerge -uD world 可以自动补全缺失的包 当 Installed 的包比 Required 包多的时候,使用 emerge --depclean 可以自动卸载多余的包 当安装一个包的时候,portage 会将它记录在 world 文件里。 比如安装 awesome: emerge -av awesome 由于 awesome 依赖 lua imagemagick 等包,因此这些包会被安装,但是只有 awesome 这一个包会被记录在 world 文件里。 而只想安装一个包而不想被记录在 world 文件里,可以使用 -1 / --oneshot 参数。 2.2 安全地删除一个包使用 emerge --depclean awesome 就行了 删除了之后,会从 world 文件里删除这个包。 因此也可以先手动修改 world 文件,删除这个包,然后再直接 emerge --depclean 就行了 3 world_sets 作用跟 world 一样,区别是 world_sets 里面记录的是 sets 3.1因此上面说的 Package in World 实际上是 world 中的包 + world_sets 里面的 sets 中定义的包的集合 而 Required Packages 就是 Package in World 与其依赖包组成的。 3.2 当 emerge -av @media 的时候,portage 会把 @media 记录在 world_sets 里。
1 下一页