如何让pkgng和ports更好的共存?
在make.conf里设置WITH_PKGNG=yes,让ports编译的包注册的pkgng数据库。root@:~ # cat /etc/make.confFORCE_MAKE_JOBS=yes
MAKE_JOBS_NUMBER=4
MASTER_SITE_OVERRIDE=http://ftp.jaist.ac.jp/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}
WITH_PKGNG=yes
.if ${.CURDIR:M*/editors/vim}
WITH_OPTIONS=YES
.endif
但是官方pkgng库里的有些包,不满足要求,比如ecore-x11不支持X11 composite,必须从ports中
编译ecore-x11,使其支持composite。下次使用pkg upgrade更新全部软件包时,出现问题了:root@:~ # pkg upgrade
Updating repository catalogue
Upgrades have been requested for the following 15 packages:
Reinstalling ecore-x11-1.7.8 (needed shared library changed)
Reinstalling evas-core-1.7.8 (needed shared library changed)
Installing gnome-icon-theme: 3.6.2
Reinstalling gnome-vfs-2.24.4_1 (options changed)
Reinstalling libgnome-2.32.0_1 (direct dependency changed)
Installing libXxf86dga: 1.1.4
Installing mplayer-skins: 1.1.3_1
Installing mplayer: 1.1.r20130308
Reinstalling vim-7.3.1314 (options changed)
Reinstalling elementary-1.7.8 (needed shared library changed)
Reinstalling enlightenment-0.17.4_1,2 (needed shared library changed)
Reinstalling libbonoboui-2.24.4_1 (direct dependency changed)
Reinstalling libgnomeui-2.24.4_2 (direct dependency changed)
Reinstalling smplayer-0.8.6 (direct dependency changed)
Reinstalling gnome-themes-extras-2.22.0_9 (direct dependency changed)
The upgrade will require 19 MB more space
5 MB to be downloaded
Proceed with upgrading packages : 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是这么处理的。 本帖最后由 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 共存已經相同好,但需要時間學習新工具。 回复 2# zeissoctopus
方法一值得一试。
方法二暂时不打算使用 回复 1# wolf_london
两者共存,真心大悲。
前些日子看到官方宣布pkg repo好了,立马pkg upgrade -y了,结果,非常悲剧,很多东西运行的并不爽,最后话了好几个周末,给portmaster回来了。 回复 4# HonestQiao
深有同感。尤其像ecore这样的软件包,支持composite的支持是编译时加进去,ports并不提供这个option。花了好久时间定位出来。
本帖最后由 zeissoctopus 于 2013-11-17 21:52 编辑
wolf_london 发表于 2013-11-17 21:13 static/image/common/back.gif
回复 4# HonestQiao
深有同感。尤其像ecore这样的软件包,支持composite的支持是编译时加进去,ports并不提 ...
換轉相反觀點角度,這正是 ports 彈性之處,容許你改動。
ports 維護者只著眼個人需要,他未必需要 composite 或他不懂如何加入 composite 選項。樓主不妨把你的改動內容以 PR 提供給維護者作進一步修改,這樣互動有效完善 ecore 功能。
我近日也鑽研如何修改 www/uwsgi 增加 pcre 和 apache24 module 選項。
官方 packages 只是 ports 默認選項的快照而已。 本帖最后由 wolf_london 于 2013-11-17 23:11 编辑
回复 2# zeissoctopus
准备采用pkg lock。#!/usr/local/bin/bash
TMPFILE=/tmp/test.$#make sure the test file the only one
pkg upgrade -n > $TMPFILE#hmm, "-n" works
pkgs=$(cat $TMPFILE| grep Reinstall | awk '{print $2}')
#rpkg stands for "raw pkg"
for pkg in$pkgs ; do
rpkg=${pkg%-*};
echo "lock $rpkg";
pkg lock -y $rpkg
done
for pkgs in$pkgs ; do
rpkg=${pkgs%-*};
pos=$(whereis $rpkg| awk '{print $NF}') # AFAIK,whereis search ports position finally
echo "&&&&&&&&&&&&&&&&&&&"$pos"&&&&&&&&&&&&&&&&&&&"
pushd $pos && make reinstallclean && popd
done
rm-rf $TMPFILE 本帖最后由 zeissoctopus 于 2013-11-18 00:16 编辑
wolf_london 发表于 2013-11-17 23:00 static/image/common/back.gif
回复 2# zeissoctopus
准备采用pkg lock。
樓主你其實想 lock 多少個 packages ?!
TMPFILE=/tmp/test.$#make sure the test file the only one
pkg upgrade -n > $TMPFILE#hmm, "-n" works
pkgs=$(cat $TMPFILE| grep Reinstall | awk '{print $2}')
會把所有會 Reinstall 都加入 lock 中,其實樓主目的只是不想透過官方軟件倉升級 ecore-x11 一個包。
而且經過每週更新的官方軟件庫後,你每次 pkg upgrade -n 結果都不一樣。後果是樓主 lock 的 packages 只會有增無減。
只需要 pkg lock ecore-x11
然後用 pkg 到官方軟件倉,安裝編譯 ecore-x11 所需要的倚賴
Required To Build:
devel/gmake
devel/pkgconf
x11/xextproto
x11/xineramaproto
x11/printproto
x11/libXcursor
x11/libXdamage
x11/libXfixes
x11/libXrandr
x11/libXrender
x11/libXScrnSaver
Required To Run:
x11/libXcursor
x11/libXdamage
x11/libXfixes
x11/libXrandr
x11/libXrender
x11/libXScrnSaver
Required Libraries:
x11/ecore-input
devel/ecore-main
接著安置樓主已修改好的 x11/ecore-x11/Makefile 來啟動 composite
最後一步make install clean 便完成。 回复 9# zeissoctopus
lock所有需要Reinstall的文件,其实ecore-x11只是举个例子而已。
是从pkg2ng转换而来,所以不需要再次安装ecore-x11的依赖。如果不unlock的话,pkg upgrade -n的中Reinstall的软件包应该不会有太大的变化吧。
页:
[1]
2