忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 10308 | 回复: 14

[FreeBSD] 如何让pkgng和ports更好的共存? [复制链接]

论坛徽章:
0
发表于 2013-11-13 00:32 |显示全部楼层
在make.conf里设置WITH_PKGNG=yes,让ports编译的包注册的pkgng数据库。
  1. root@:~ # cat /etc/make.conf
  2. FORCE_MAKE_JOBS=yes
  3. MAKE_JOBS_NUMBER=4
  4. MASTER_SITE_OVERRIDE=http://ftp.jaist.ac.jp/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}
  5. WITH_PKGNG=yes

  6. .if ${.CURDIR:M*/editors/vim}
  7. WITH_OPTIONS=YES
  8. .endif
复制代码
但是官方pkgng库里的有些包,不满足要求,比如ecore-x11不支持X11 composite,必须从ports中
编译ecore-x11,使其支持composite。下次使用pkg upgrade更新全部软件包时,出现问题了:
  1. root@:~ # pkg upgrade
  2. Updating repository catalogue
  3. Upgrades have been requested for the following 15 packages:

  4.         Reinstalling ecore-x11-1.7.8 (needed shared library changed)
  5.         Reinstalling evas-core-1.7.8 (needed shared library changed)
  6.         Installing gnome-icon-theme: 3.6.2
  7.         Reinstalling gnome-vfs-2.24.4_1 (options changed)
  8.         Reinstalling libgnome-2.32.0_1 (direct dependency changed)
  9.         Installing libXxf86dga: 1.1.4
  10.         Installing mplayer-skins: 1.1.3_1
  11.         Installing mplayer: 1.1.r20130308
  12.         Reinstalling vim-7.3.1314 (options changed)
  13.         Reinstalling elementary-1.7.8 (needed shared library changed)
  14.         Reinstalling enlightenment-0.17.4_1,2 (needed shared library changed)
  15.         Reinstalling libbonoboui-2.24.4_1 (direct dependency changed)
  16.         Reinstalling libgnomeui-2.24.4_2 (direct dependency changed)
  17.         Reinstalling smplayer-0.8.6 (direct dependency changed)
  18.         Reinstalling gnome-themes-extras-2.22.0_9 (direct dependency changed)

  19. The upgrade will require 19 MB more space

  20. 5 MB to be downloaded

  21. Proceed with upgrading packages [y/N]:
复制代码
PKGNG总是认为远端仓库的ecore-x11才是"正确"的包,提示重新安装。
Reinstalling ecore-x11-1.7.8 (needed shared library changed)

这种情况下,该如何处理?google了以下,目前好像没有好的解决方案。只能每次手动从Ports中更新
这几个软件包,很大的不方便就是以后无法运行pkg upgrade省级软件包了。所以,貌似以后升级软件包的话,
最省事的做法是使用portupgrade或portmaster了。

PS:为啥ports不能既保持原有的数据库,而pkgin在每次更新或者安装软件包时,从原有的ports包数据库注册到pkgng数据库?
        目前NetBSD的pkgin是这么处理的。

论坛徽章:
0
发表于 2013-11-13 18:59 |显示全部楼层
本帖最后由 zeissoctopus 于 2013-11-13 19:01 编辑

方法一:使用 pkg lock ecore-x11 命令,防止 pkg upgrade 時 重新安裝官方默認的 ecore-x11,然後 ecore-x11 獨立自行用 ports 升級。

方法二:運用 tinderbox 或 poudriere 工具,自行編譯 ecore-x11 並產生一個自家軟件倉,然後修改 pkg.conf 指向這個自家軟件倉為首選,把官方默認軟件倉為副選。

pkgng 和 ports 共存已經相同好,但需要時間學習新工具。

论坛徽章:
0
发表于 2013-11-13 23:40 |显示全部楼层
回复 2# zeissoctopus


   

方法一值得一试。
方法二暂时不打算使用

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
发表于 2013-11-16 22:29 |显示全部楼层
回复 1# wolf_london



    两者共存,真心大悲。
    前些日子看到官方宣布pkg repo好了,立马pkg upgrade -y了,结果,非常悲剧,很多东西运行的并不爽,最后话了好几个周末,给portmaster回来了。

论坛徽章:
0
发表于 2013-11-17 21:13 |显示全部楼层
回复 4# HonestQiao
深有同感。尤其像ecore这样的软件包,支持composite的支持是编译时加进去,ports并不提供这个option。花了好久时间定位出来。


   

论坛徽章:
0
发表于 2013-11-17 21:49 |显示全部楼层
本帖最后由 zeissoctopus 于 2013-11-17 21:52 编辑
wolf_london 发表于 2013-11-17 21:13
回复 4# HonestQiao
深有同感。尤其像ecore这样的软件包,支持composite的支持是编译时加进去,ports并不提 ...


換轉相反觀點角度,這正是 ports 彈性之處,容許你改動。
ports 維護者只著眼個人需要,他未必需要 composite 或他不懂如何加入 composite 選項。樓主不妨把你的改動內容以 PR 提供給維護者作進一步修改,這樣互動有效完善 ecore 功能。

我近日也鑽研如何修改 www/uwsgi 增加 pcre 和 apache24 module 選項。

官方 packages 只是 ports 默認選項的快照而已。

论坛徽章:
0
发表于 2013-11-17 23:00 |显示全部楼层
本帖最后由 wolf_london 于 2013-11-17 23:11 编辑

回复 2# zeissoctopus
准备采用pkg lock。
  1. #!/usr/local/bin/bash

  2. TMPFILE=/tmp/test.$  #make sure the test file the only one
  3. pkg upgrade -n > $TMPFILE  #hmm, "-n" works
  4. pkgs=$(cat $TMPFILE| grep Reinstall | awk '{print $2}')

  5. #rpkg stands for "raw pkg"
  6. for pkg in  $pkgs ; do
  7.                 rpkg=${pkg%-*};
  8.                 echo "lock $rpkg";
  9.                 pkg lock -y $rpkg
  10. done

  11. for pkgs in  $pkgs ; do  
  12.                 rpkg=${pkgs%-*};
  13.                 pos=$(whereis $rpkg| awk '{print $NF}') # AFAIK,whereis search ports position finally
  14.                 echo "&&&&&&&&&&&&&&&&&&&"$pos"&&&&&&&&&&&&&&&&&&&"
  15.                 pushd $pos && make reinstall  clean && popd
  16. done

  17. rm  -rf $TMPFILE
复制代码

pkg_co.sh.gz

347 Bytes, 下载次数: 5

论坛徽章:
29
技术图书徽章
日期:2013-09-02 19:59:502015元宵节徽章
日期:2015-03-06 15:51:332015小元宵徽章
日期:2015-03-06 15:57:20操作系统版块每日发帖之星
日期:2015-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17操作系统版块每日发帖之星
日期:2015-09-21 06:20:002015亚冠之水原三星
日期:2015-10-30 00:06:07数据库技术版块每日发帖之星
日期:2015-12-24 06:20:0015-16赛季CBA联赛之上海
日期:2016-01-07 10:32:07操作系统版块每日发帖之星
日期:2016-01-08 06:20:00操作系统版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-07-23 06:20:00
发表于 2013-11-17 23:25 |显示全部楼层
现在还不敢全部转到pkg去

论坛徽章:
0
发表于 2013-11-18 00:13 |显示全部楼层
本帖最后由 zeissoctopus 于 2013-11-18 00:16 编辑
wolf_london 发表于 2013-11-17 23:00
回复 2# zeissoctopus
准备采用pkg lock。


樓主你其實想 lock 多少個 packages ?!

  1. TMPFILE=/tmp/test.$  #make sure the test file the only one
  2. pkg upgrade -n > $TMPFILE  #hmm, "-n" works
  3. pkgs=$(cat $TMPFILE| grep Reinstall | awk '{print $2}')
复制代码
會把所有會 Reinstall 都加入 lock 中,其實樓主目的只是不想透過官方軟件倉升級 ecore-x11 一個包。
而且經過每週更新的官方軟件庫後,你每次 pkg upgrade -n 結果都不一樣。後果是樓主 lock 的 packages 只會有增無減。

只需要 pkg lock ecore-x11
然後用 pkg 到官方軟件倉,安裝編譯 ecore-x11 所需要的倚賴

  1. Required To Build:

  2.     devel/gmake
  3.     devel/pkgconf
  4.     x11/xextproto
  5.     x11/xineramaproto
  6.     x11/printproto
  7.     x11/libXcursor
  8.     x11/libXdamage
  9.     x11/libXfixes
  10.     x11/libXrandr
  11.     x11/libXrender
  12.     x11/libXScrnSaver

  13. Required To Run:

  14.     x11/libXcursor
  15.     x11/libXdamage
  16.     x11/libXfixes
  17.     x11/libXrandr
  18.     x11/libXrender
  19.     x11/libXScrnSaver

  20. Required Libraries:

  21.     x11/ecore-input
  22.     devel/ecore-main
复制代码
接著安置樓主已修改好的 x11/ecore-x11/Makefile 來啟動 composite

最後一步  make install clean 便完成。

论坛徽章:
0
发表于 2013-11-18 23:43 |显示全部楼层
回复 9# zeissoctopus

lock所有需要Reinstall的文件,其实ecore-x11只是举个例子而已。
是从pkg2ng转换而来,所以不需要再次安装ecore-x11的依赖。如果不unlock的话,pkg upgrade -n的中Reinstall的软件包应该不会有太大的变化吧。



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

本版积分规则

【重磅资料】多云网络实战的相关问题汇总!
云网融合的多云网络

本文介绍如何管理私有云数据中心,构建数据中心互联和混合云解决方案。对于OTT 网络架构的深入理解,基本上来源于SIGCOM 的白皮书和一些公开视频。

Overlay SDN 控制器详解

云计算为了适应业务/APP 的快速开发和部署,会把网络分为两层:Overlay 和 Underlay 网络。本文主要讲Overlay网络层面的问题。

超级核心路由器演进

2016 年,网络连接已经采用100G/200G/400G(虽然 400GE 接口技术还未成熟),互联网出口也已经增长到了 T 级别。

获得资料 >>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP