LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: seufy

对Gentoo的包管理的问题

[复制链接]
 楼主| 发表于 2011-9-20 09:15:55 | 显示全部楼层
Post by timemars;2152431
说不定会反效果。见识了apt、yum的便利,再听说gentoo居然还要编译软件包,然后就心想“那岂不是装个软件都要打一大堆命令,还要自己解决依赖性?”


呵呵,我也不太喜欢用YUM,APT,其实一开始接触这个portage也是不很喜欢,因为它和yum,apt一样给用户带来了方便同时又隐藏了下面各个软件的详细,只是一个是用bin一个是用.c,之前我都是自己安装编译,依赖性问题如果不是很多的话,也可以自己解决再编译,总之对所装的软件“全面把握”。
对于你的解答想补充一下,可能我没表达清楚,请见谅

1.ebuild里是可以用的全部USE,在真正编译这个软件时应该不会全部用到这么多USE标记,那总要有一个默认使用的一组USE。我之前想说的是在package.use中增加默认USE以外的标记,但这标记仍是ebuild里定义的,不是自定义的。
从手动来看就是./configure  --xx(多加入一个参数xx而已)

2.
还是以你的mplayer为例
/etc/make.conf中USE=ABC -gstreamer
package.use中对mplayer gstreamer
请问ABC这个标记对mplayer起作用吗?如果起作用,那“覆盖”只对相同的USE标记起作用,是不是如此?

对4楼的看法有不同点:新手按官方安装一遍至少没能接触portage的真正怎样解决依赖性及开关一样的USE。

看来要多看看ebuild了,感谢大家的解答
回复 支持 反对

使用道具 举报

发表于 2011-9-20 09:36:22 | 显示全部楼层
楼主既然连手动编译系统的麻烦都不怕,又非常好奇gentoo的工作方式,应该没理由不去尝试亲手编译一下此系统的。gentoo的帮助文档也比较完善,应该可以解决编译中遇到的大部分问题。

同意mathfell和jsun的观点,不肯下田,怎会耕田呢。
Post by mathfeel;2152433
如果你沒兴趣学写ebuild。你就只有信任Gentoo的开发者把一切USE和依赖搞定。这就和用任何其它法行版沒区别了。

觉得这句话有点问题。gentoo开发者把USE参数都设定好,依赖也添加在了ebuild中,这就是和其他发行版最大的区别。

这么说可能比较好:

如果你信任Gentoo开发者设置的默认依赖,不愿意做自己的USE调整,那么只要简单选择好相应的profile(就是一组开发人员设置好的USE和依赖关系,有server/desktop/gnome/kde等,根据自己的需要选择)即可,这就和用其他任何发行版都没多大区别了。


============
一部分话已经转移到后贴。
回复 支持 反对

使用道具 举报

发表于 2011-9-20 09:48:20 | 显示全部楼层
1.首先USE的优先级
USE=".." emerge .. >/etc/portage/package.use > /etc/make.conf
你在make.conf定义了-ABC,但在package.use中定义了ABC,则优先package.use
同理,任何情况下,手动USE=".." emerge ..的优先级总是大于后面两者。
USE不仅是可以控制configure开关,实际上补丁、语言等其他功能也可以通过USE flag来开关...
实质上,用了段gentoo过后,大多数人都或多或少维护着自己的一个和几个ebuild

2.以mplayer为例
就如我上面所说,优先级。package.use中定义的标记大于/etc/make.conf中定义的....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-20 09:51:55 | 显示全部楼层
Post by zhou3345;2152435
楼主既然连手动编译系统的麻烦都不怕,又非常好奇gentoo的工作方式,应该没理由不去尝试亲手编译一下此系统的。gentoo的帮助文档也比较完善,应该可以解决编译中遇到的大部分问题。

同意mathfell和jsun的观点,不肯下田,怎会耕田呢。



觉得这句话有点问题。gentoo开发者把USE参数都设定好,依赖也添加在了ebuild中,这就是和其他发行版最大的区别。

这么说可能比较好:

如果你信任Gentoo开发者设置的默认依赖,不愿意做自己的USE调整,那么只要简单选择好相应的profile(就是一组开发人员设置好的USE和依赖关系,有server/desktop/gnome/kde等,根据自己的需要选择)即可,这就和用其他任何发行版都没多大区别了。
我觉得我快被吃了。昨天花了点时间装好了,那同样是源码编译自动帮我“搞定”才让我很好奇里面的实现内容。之前我是LFS的,再往上走,编译xorg就让我头大了,花了点时间。最后要装GNOME时,我到现在还没成功。所以转到gentoo来试试,现在都装好了。不是不肯下田,是很想下田
回复 支持 反对

使用道具 举报

发表于 2011-9-20 09:53:32 | 显示全部楼层
Post by seufy;2152434
呵呵,我也不太喜欢用YUM,APT,其实一开始接触这个portage也是不很喜欢,因为它和yum,apt一样给用户带来了方便同时又隐藏了下面各个软件的详细,只是一个是用bin一个是用.c,之前我都是自己安装编译,依赖性问题如果不是很多的话,也可以自己解决再编译,总之对所装的软件“全面把握”。
对于你的解答想补充一下,可能我没表达清楚,请见谅

1.ebuild里是可以用的全部USE,在真正编译这个软件时应该不会全部用到这么多USE标记,那总要有一个默认使用的一组USE。我之前想说的是在package.use中增加默认USE以外的标记,但这标记仍是ebuild里定义的,不是自定义的。
从手动来看就是./configure  --xx(多加入一个参数xx而已)

2.
还是以你的mplayer为例
/etc/make.conf中USE=ABC -gstreamer
package.use中对mplayer gstreamer
请问ABC这个标记对mplayer起作用吗?如果起作用,那“覆盖”只对相同的USE标记起作用,是不是如此?

对4楼的看法有不同点:新手按官方安装一遍至少没能接触portage的真正怎样解决依赖性及开关一样的USE。

看来要多看看ebuild了,感谢大家的解答


0、包管理器绝对是一个进步。你想完全掌控一个软件,那完全可以自己写ebuild,或者干脆自己动手去--configure;make;make install,自己去解决依赖关系。这样看起来,你去玩LFS会比较合适,反正我是被依赖性恶心死了。。。

1、咦,我不是说了吗?默认的USE写在make.defaults里面。针对不同的用途,gentoo提供了很多profile:
  1. ryan@timemars ~ $ eselect profile list
  2. Available profile symlink targets:
  3.   [1]   default/linux/amd64/10.0
  4.   [2]   default/linux/amd64/10.0/desktop
  5.   [3]   default/linux/amd64/10.0/desktop/gnome
  6.   [4]   default/linux/amd64/10.0/desktop/kde
  7.   [5]   default/linux/amd64/10.0/developer
  8.   [6]   default/linux/amd64/10.0/no-multilib *
  9.   [7]   default/linux/amd64/10.0/server
  10.   [8]   hardened/linux/amd64
  11.   [9]   hardened/linux/amd64/selinux
  12.   [10]  hardened/linux/amd64/no-multilib
  13.   [11]  hardened/linux/amd64/no-multilib/selinux
  14.   [12]  selinux/2007.0/amd64
  15.   [13]  selinux/2007.0/amd64/hardened
  16.   [14]  selinux/v2refpolicy/amd64
  17.   [15]  selinux/v2refpolicy/amd64/desktop
  18.   [16]  selinux/v2refpolicy/amd64/developer
  19.   [17]  selinux/v2refpolicy/amd64/hardened
  20.   [18]  selinux/v2refpolicy/amd64/server
复制代码

每个profile都有自己的make.defaults,里面也不仅仅定义USE这么简单,还有很多编译时的选项,都在/usr/portage/profile里面。

2、假如mplayer没有提供ABC这个USE给用户使用,你在全局设置ABC自然对mplayer不起作用。房间里压根没有装白炽灯,只有节能灯,你再怎么拨弄白炽灯的开关,房间里也不会亮起白炽灯。

“覆盖”只对相同的USE标记起作用,这是理所当然的吧,USE都不相同,怎么覆盖?正如只有同名字的两个文件才能互相覆盖一样。。。

3、看一下官方的手册吧:http://www.gentoo.org/doc/zh_cn/ ... ok-amd64.xml?full=1,在后面会有portage的简单介绍,基本上能解决你的问题了。
回复 支持 反对

使用道具 举报

发表于 2011-9-20 10:21:00 | 显示全部楼层
Post by seufy;2152437
我觉得我快被吃了。昨天花了点时间装好了,那同样是源码编译自动帮我“搞定”才让我很好奇里面的实现内容。之前我是LFS的,再往上走,编译xorg就让我头大了,花了点时间。最后要装GNOME时,我到现在还没成功。所以转到gentoo来试试,现在都装好了。不是不肯下田,是很想下田


还是那句话,你说的装好了,是到哪了?emerge之前有没有用-p参数现看看到底要安装哪些包?有没有在make.conf里添加一些USE再emerge -p 看看有哪些变化?

==================
上面的话转到本帖来:
==================
安装gentoo不用接触到portage和USE ?这样的观点我第一次听说,你是在说安装sabayon吧。
我说的装一遍,是按照你自己的需求装一遍。官方手册中并没有一个默认的“安装完成”标准,解压完stage3,编译好内核是装;安装好apache/mysql/php是装;安装好gnome/kde也是装。如果你自己都没有需求,要开发人员给你一个默认的系统,那就回到上面mathfeel的那句话上去了。

简单说gentoo开发者只给了我们一个比较好开始的完整系统stage3,之后要怎么装全看你自己了,在你折腾怎么装的时候,难道不去调整USE?难道不用理解make.conf怎么写?难道不用去理解portage的工作方式?

就拿上面的mplayer为例,你 USE="ABC gstreamer" emerge -pv mplayer 看看要依赖哪些软件,再 USE="-ABC -gstreamer" emerge -pv mplayer 对比一下有什么不同,ABC和gstreamer的作用不就很清楚了吗?
USE的层次关系在官方手册的portage那个章节里说的很详细了。另外还有 man emerge / man portage / man make.conf

几个有帮助的gentoo专用工具:eix gentoolkit portage-utils genlop


ps: 还是现好好用gentoo吧,好好想想,比如只安装 LAMP 要怎么装怎么设置USE才最简,要安装桌面,需要哪些软件不要哪些软件才合适自己用?

看ebuild应该是下一步的事,否则要理解的概念太多,思路会越来越乱的。
回复 支持 反对

使用道具 举报

发表于 2011-9-20 21:39:09 | 显示全部楼层
Post by zhou3345;2152443

几个有帮助的gentoo专用工具:eix gentoolkit portage-utils genlop


genlop到底是什么阿,怎么一堆perl的依赖?
回复 支持 反对

使用道具 举报

发表于 2011-9-21 11:52:07 | 显示全部楼层
Post by easior lars;2152483
genlop到底是什么阿,怎么一堆perl的依赖?
  1.        genlop is a portage utility for extracting information about emerged ebuilds.
  2.        Detailed features include:
  3.         - Nice colorful output.
  4.         - Full Portage merge and unmerge history.
  5.         - Display date, time and build time of every merge.
  6.         - Display total and average build time of selected ebuilds[s].
  7.         - Estimate upgrade time.
  8.         - Watching current merge progress.
  9.         - Use alternate portage logfile(s).
  10.         - Compressed logfiles (gzip, bzip2) are supported
  11.         - Match ebuild names using regular expressions.
  12.         - Log corruption detection.
  13.         - Display build specific USE and CFLAGS variables.
  14.         - GMT/UTC or localized time and date.
  15.         - Full portage rsync history.
复制代码
我一般用它来:

  • 查看目前正在emerge的包已经花费了多少时间,以及大约还需要多少时间。(genlop -c)
  • 查看一个包过去编译一次花费多少时间。(genlop -t XXX)
  • 查看某个包编译时使用的cflags。(genlop -i XXX)

注意一般它需要root权限。
回复 支持 反对

使用道具 举报

发表于 2011-9-23 12:22:03 | 显示全部楼层
genlop不错 收了 回家emerge去
回复 支持 反对

使用道具 举报

发表于 2011-9-24 21:39:23 | 显示全部楼层
Post by RichardGv;2152511

  1.        genlop is a portage utility for extracting information about emerged ebuilds.
复制代码



谢谢,也收藏了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表