LinuxSir.cn,穿越时空的Linuxsir!

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

如何从指定存放binary pacakge的本地目录中更新?

[复制链接]
发表于 2011-11-29 11:40:16 | 显示全部楼层 |阅读模式
小弟目前有个需求,指定一个目录存放更新的binary package,emerge如何才会去此目录内检测是否存在更新?
假如不给.ebuild的情况下,emerge是否也能辨识要更新哪些package?
请大家指点。

描述清楚一些:
第一个问题:指定一个目录,假如有更新,更新的二进制包将存放在此目录里。之后emerge更新的时候只会检测此目录的内容并加以更新。如何处理?

第二个问题:系统希望以binary的方式发布。并且为了减小size,不打算提供ebuild文件。
那么由于ebuild通过FEATURES="buildpkg"产生binary package,这个binary package用作系统更新,这个里面其实已经包含了ebuild文件。
那么在不提供ebuild时可否会通过检测包来进行更新?
发表于 2011-11-29 11:55:51 | 显示全部楼层
请仔细阅读安装手册,特别是这一章:http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=2

不明白lz的需求。
1. 本地binary文件是什么文件?你指的是二进制包还是源代码包?
2. 更新的binary package又是指什么?你自己从网上下载的二进制包,还是 portage的源代码包?你的这个目录指的是distfiles目录吗?
3. emerge命令只会服从 portage,portage中的ebuild更新了才会自动更新,而不是通过检查源码包来判断是否需要更新,二进制包就更扯不上了。
4.如果你想自己维护 ebuild,请添加自己的overlay。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-29 14:01:59 | 显示全部楼层
没表示清楚。
第一个问题:指定一个目录,假设有更新,更新的二进制包将存放在此目录里。
emerge更新的时候只会检测此目录的内容并加以更新。如何处理?

第二个问题:ebuild通过FEATURES="buildpkg"产生binary package,这个binary package用作系统更新,这个里面其实已经包含了ebuild文件。所以在不提供ebuild时可否会通过检测包来进行更新?

Post by zhou3345;2156183
请仔细阅读安装手册,特别是这一章:http://www.gentoo.org/doc/zh_cn/handbook/handbook-x86.xml?part=2

不明白lz的需求。
1. 本地binary文件是什么文件?你指的是二进制包还是源代码包?
2. 更新的binary package又是指什么?你自己从网上下载的二进制包,还是 portage的源代码包?你的这个目录指的是distfiles目录吗?
3. emerge命令只会服从 portage,portage中的ebuild更新了才会自动更新,而不是通过检查源码包来判断是否需要更新,二进制包就更扯不上了。
4.如果你想自己维护 ebuild,请添加自己的overlay。
回复 支持 反对

使用道具 举报

发表于 2011-11-29 18:39:03 | 显示全部楼层
Post by walkiey;2156197
没表示清楚。
第一个问题:指定一个目录,假设有更新,更新的二进制包将存放在此目录里。
emerge更新的时候只会检测此目录的内容并加以更新。如何处理?

第二个问题:ebuild通过FEATURES="buildpkg"产生binary package,这个binary package用作系统更新,这个里面其实已经包含了ebuild文件。所以在不提供ebuild时可否会通过检测包来进行更新?
你的意思是你有一台机器做编译,其他机器通过访问此机器的二进制包来更新?
更新的二进制包是指你自己通过 buildpkg产生的包吗?

不知道你是否看了我提供给你的文档,在这里有比较详细的关于portage的二进制包支持:http://www.gentoo.org/doc/zh_cn/ ... mp;chap=3#doc_chap4
而且它提供了一个本应该先看的提示: man make.conf

通过buildpkg打包的package是不包含ebuild文件的。
没有ebuild文件(即没有portage)的gentoo是无法进行更新工作的。

你这种情况适合用 sabayon。
回复 支持 反对

使用道具 举报

发表于 2012-2-7 21:59:24 | 显示全部楼层
man emerge
...
       --usepkg [ y | n ] (-k short option)
              Tells  emerge  to use binary packages (from $PKGDIR) if they are
              available, thus possibly avoiding some time-consuming  compiles.
              This   option   is  useful  for  CD  installs;  you  can  export
              PKGDIR=/mnt/cdrom/packages and then  use  this  option  to  have
              emerge  "pull"  binary  packages from the CD in order to satisfy
              dependencies.

       --usepkgonly [ y | n ] (-K short option)
              Tells emerge to only use binary packages  (from  $PKGDIR).   All
              the  binary packages must be available at the time of dependency
              calculation or emerge will simply abort.  Portage does  not  use
              $PORTDIR  when calculating dependency information so all masking
              information is ignored.
...

有两台同配置的机器,就知道这样做的好处了。
在其中一台编译安装时,带上 --buildpkg 参数,就会在 /usr/portage/package 下生成tbz包。
把它拷到另一台上,就可以用 --usepkg 来安装了。
----甚至有人用 emerge -ave --buildpkg system(world?) 这样的方法来快速部署第二台机器---
回复 支持 反对

使用道具 举报

发表于 2012-2-8 09:52:22 | 显示全部楼层
两台配置相同的机器,直接cp不是更快?
回复 支持 反对

使用道具 举报

发表于 2012-2-9 11:41:55 | 显示全部楼层
Post by Havanna;2159772
两台配置相同的机器,直接cp不是更快?


用 dd 实在些吧?或者 tar ?

其实buildpkg主要用在双机或者多机的滚动升级上。
如果你有几台机器,可以研究一下。相关内容还有 distcc 和 ccache。
如果你只是一台,请直接无视它们。
回复 支持 反对

使用道具 举报

发表于 2012-2-9 14:14:24 | 显示全部楼层
当你同时维护n台gentoo机的时候就会发现buildpkg和usepkg的好处了

架设binhost是个好办法
回复 支持 反对

使用道具 举报

发表于 2012-2-9 14:18:32 | 显示全部楼层
tar 打包, cp, tar解压
绝对的没有cp 来的快,当然我说的是在普通的ext4文件系统中
回复 支持 反对

使用道具 举报

发表于 2012-2-9 21:46:31 | 显示全部楼层
Post by Havanna;2159824
tar 打包, cp, tar解压
绝对的没有cp 来的快,当然我说的是在普通的ext4文件系统中


呵呵,也许是 cp -rp 更快。
不过习惯上是用:
tar cvfp - | ( cd /any/where/; tar xvfp - )

而且 /usr/portage 是通过 nfs 共享出去的,基本不用拷。
回复 支持 反对

使用道具 举报

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

本版积分规则

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