LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 642|回复: 9

忽然想起个问题,如何升级系统中通过live ebuild安装的包

[复制链接]
发表于 2011-9-9 10:50:56 | 显示全部楼层 |阅读模式
svn git hg等直接克隆源代码的ebuild

似乎没有个参数来一次性的全部将这些9999.ebuild安装的包升级?

亦或者是我暂时还不知道?
 楼主| 发表于 2011-9-9 10:55:02 | 显示全部楼层
部分项目喜欢拆包,拆成N个,并且彼此间还依赖
这样要升级的话,就不得不将N个包重新emerge

有没有一次性的解决方案?
回复 支持 反对

使用道具 举报

发表于 2011-9-9 11:05:56 | 显示全部楼层
要么自己弄成一个set,要么用smart-live-rebuild试试
不过我遇到大部分拆包的,都有set的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-9 11:28:59 | 显示全部楼层
打个比方,fcitx-googlepinyin 与 libgooglepinyin
如何在重新clone fcitx-googlepin源代码的时候,先重新克隆编译libgooglepinyin呢?

关于set能否举个例子呢?man ebuild中我看不到详细的相关说明
回复 支持 反对

使用道具 举报

发表于 2011-9-9 12:45:49 | 显示全部楼层
同意三楼,可以用 smart-live-rebuild
还可以 emerge @live-rebuild (需要>=portage-2.2)
重编译有内核模块的软件:module-rebuild

另外三楼说的set是软件集的意思,和meta包差不多。
meta包有 gnome-light kdebase-startkde xfce4-meta lxde-meta等。
这些“软件”唯一的作用就是依赖安装其相关组件。所有的gentoo拆包都有相关meta包的,有些还通过USE设置来取舍依赖软件,方便用户自由选择安装。

sets是专为live ebuild准备的特性,@live-rebuilc就是一个系统的set,需要portage-2.2及以上的版本。
可以参考这里 http://en.gentoo-wiki.com/wiki/E17#Preparing_a_Set
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-9 13:25:46 | 显示全部楼层
thanks,smart-live-rebuild可以使用,但不太完善..

如果set只是软件集的话,貌似就不能解决  克隆编译一个live ebuild之前  先克隆编译其依赖的一个live ebuild....

就譬如在emerge -u =net-im/openfetion-9999时,先emerge -u =net-im/libofetion-9999

smart-live-rebuild是不管三七二十一,将全部的live ebuild通通编译一遍,且不管先后...
回复 支持 反对

使用道具 举报

发表于 2011-9-9 14:24:02 | 显示全部楼层
自己可以定义set啊,这样就会一起更新了,meta包好像更新的时候不会更新所有live的子包
定义set很方便啊,/etc/portage/sets里面创建一个文件,把你要一次行更新的软件包名字写进去就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-9 15:21:37 | 显示全部楼层
@jlj_babydragon

酱紫啊,谢谢,我回去试试
回复 支持 反对

使用道具 举报

发表于 2011-9-9 20:10:42 | 显示全部楼层
Post by Mishell;2151225
@jlj_babydragon

酱紫啊,谢谢,我回去试试


可以参考这个:
http://en.gentoo-wiki.com/wiki/E17#Preparing_a_Set
回复 支持 反对

使用道具 举报

发表于 2011-9-10 08:21:45 | 显示全部楼层
portage-9999里面已经有smart-live-rebuild、module-rebuild以及x11-module-rebuild了
回复 支持 反对

使用道具 举报

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

本版积分规则

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