常见问题常见问题   搜索搜索   会员列表会员列表   团队团队   注册注册    个人资料个人资料   登录查看您的站内信件登录查看您的站内信件   登录登录 

portmaster和portupgrade一起使用会不会引起混乱?

 
发表新文章   回复文章    FreeBSD China -> 技术交流
阅读上一个主题 :: 阅读下一个主题  
作者 留言
bleakwind
老妖


注册时间: 2005-01-07
文章: 1345
来自: The Matrix

文章发表于: Tue 2015-04-21 15:36:38    发表主题: portmaster和portupgrade一起使用会不会引起混乱? 引用并回复

看样子portmaster比较先进.

而portupgrade的一些portsclean/pkgdb -F等功能又比较需要使用

portmaster和portupgrade一起使用会不会引起混乱?

portupgrade的pkgdb -F在portmaster中是否有替代的功能?

_________________
听不到你的声音,只有风声在想...
返回页首
阅览会员资料 发送站内信件 发送电子邮件 浏览发表者的主页 MSN Messenger
anonymouscoward
道士


注册时间: 2013-08-08
文章: 868

文章发表于: Tue 2015-04-21 17:10:57    发表主题: 引用并回复

难道我们现在看的不是同一个 portupgrade ……
https://github.com/freebsd/portupgrade/blob/master/bin/pkgdb#L359
还是说你在用去年 r368531 之前支持 pkg_install 的 ports

dougb@ 跑路以前我还会看看每次更新都修改了什么,后来我就彻底放弃 shell 了
现在觉得那些用 portmaster 肯定都是铁杆 shell 粉丝

我就知道下面一大波要吐槽「你不是也用 poudriere 的」正在输入密码登录中……

_________________
匿懦的邮件列表
订阅: bsd-talk-subscribe@anonymous744wjcx.onion
退订: bsd-talk-unsubscribe@anonymous744wjcx.onion
返回页首
阅览会员资料 发送站内信件
Gehaowu
老妖


注册时间: 2009-07-13
文章: 3189
来自: www

文章发表于: Tue 2015-04-21 22:23:39    发表主题: 引用并回复

Very Happy 我来看热闹的 Cool Cool Cool
_________________
https://www.daemon.xin from BITMOE.com
礼尚多有往来,意美人常在
Simplified Chinese Shell/csh,Traditional Chinese Shell/tcsh
返回页首
阅览会员资料 发送站内信件 发送电子邮件 浏览发表者的主页
anonymouscoward
道士


注册时间: 2013-08-08
文章: 868

文章发表于: Wed 2015-04-22 01:38:24    发表主题: 引用并回复

Gehaowu 写到:
Very Happy 我来看热闹的 Cool Cool Cool


千万不要告诉其他人,其实我只是没事上来试一试
不会有人发现我又贴错了版本号,因为根本就没人会去看的…… XD

_________________
匿懦的邮件列表
订阅: bsd-talk-subscribe@anonymous744wjcx.onion
退订: bsd-talk-unsubscribe@anonymous744wjcx.onion
返回页首
阅览会员资料 发送站内信件
bleakwind
老妖


注册时间: 2005-01-07
文章: 1345
来自: The Matrix

文章发表于: Wed 2015-04-22 05:13:09    发表主题: 引用并回复

anonymouscoward 写到:
难道我们现在看的不是同一个 portupgrade ……
https://github.com/freebsd/portupgrade/blob/master/bin/pkgdb#L359
还是说你在用去年 r368531 之前支持 pkg_install 的 ports

dougb@ 跑路以前我还会看看每次更新都修改了什么,后来我就彻底放弃 shell 了
现在觉得那些用 portmaster 肯定都是铁杆 shell 粉丝

我就知道下面一大波要吐槽「你不是也用 poudriere 的」正在输入密码登录中……


其实发完帖子没忍住装了portupgrade才发现pkgdb -F已经没了,用pkg check代替了.
话说pkg这东西不错,一统二进制包管理.

portmaster和portupgrade一起使用会不会引起混乱? 这个如何作答?
不装portupgrade仅用portmaster和pkg能否实现portsclean这种功能?

话说好久没装过新版本freebsd了,装的最后一个版本还是8.3,后来发现ports不被支持这才强迫我最近开始整理下安装笔记,准备更新生产环境版本.
我做PHP的,谅解.

btw: freebsdchina的人说话就是这么内涵,酸爽...

_________________
听不到你的声音,只有风声在想...
返回页首
阅览会员资料 发送站内信件 发送电子邮件 浏览发表者的主页 MSN Messenger
anonymouscoward
道士


注册时间: 2013-08-08
文章: 868

文章发表于: Wed 2015-04-22 16:13:42    发表主题: 引用并回复

bleakwind 写到:
anonymouscoward 写到:
难道我们现在看的不是同一个 portupgrade ……
https://github.com/freebsd/portupgrade/blob/master/bin/pkgdb#L359
还是说你在用去年 r368531 之前支持 pkg_install 的 ports

dougb@ 跑路以前我还会看看每次更新都修改了什么,后来我就彻底放弃 shell 了
现在觉得那些用 portmaster 肯定都是铁杆 shell 粉丝

我就知道下面一大波要吐槽「你不是也用 poudriere 的」正在输入密码登录中……


其实发完帖子没忍住装了portupgrade才发现pkgdb -F已经没了,用pkg check代替了.
话说pkg这东西不错,一统二进制包管理.

portmaster和portupgrade一起使用会不会引起混乱? 这个如何作答?


好吧,能混用。知道自己在做什么的混用是不会出问题的,
出了问题的基本上就是不知道自己在做什么,不知道工具在做什么, 也不关心工具在做什么的
比如前段时间看到过好几次的这个, 我觉得稍微会点 pmake 的都能很容易猜到
https://www.freebsdchina.org/forum/viewtopic.php?t=66898

第一次看到这贴的时候我的视角是酱紫的:
比如上面提到的 pkgdb -F 里 fix_db_phrase1() 有找重复的 origin 然后修改 pkg_install +CONTENTS 的功能,
pkgng 用的是 sqlite,看看 portupgrade 至今没有依赖 sqlite3 gem,
所以用尾巴想想也知道 portupgrade 目前不会像对 pkg_install 那样直接去修改数据库了

看一下 portmaster 目前也没有用 pkg shell 直接去读写 sqlite
用的是 pkg 命令提供的 info|query|... 之类的接口
那么就可以认为对于 pkgng 他们都没有 pkgdb -F 那种修改重复 origin 的功能

再去看看 pkgng 到底会不会造成重复的 origin 呢?
pkg add 的时候会先检查一下,所以相同 origin 的装不上
https://github.com/freebsd/pkg/blob/master/libpkg/pkg.c#L1830

而 pkg install 的话却没有做类似的检查,如果于已安装的包
再安装另外一个 origin 相同但内容不同的包依然会被装上,
那么就只好相信目前 repo 里还没有重复的 origin,
比如,可以数一下 packagesite.yaml 里的行数和 origin 的数量, 会发现是一样的:
代码:
% curl -s http://pkg.freebsd.org/freebsd:10:x86:64/release/0/packagesite.txz | tar xOf - packagesite.yaml | /Programs/perl5-5.18.4_11/bin/perl -MJSON -nE '$o{JSON->new->ascii->decode($_)->{origin}}++; END{say join qq|\n|, ($., scalar keys %o)}'
22263
22263

至少目前不用担心 FreeBSD port 会出现 OpenBSD 那种 MULTI_PACKAGES 的东西了 XD

bleakwind 写到:
不装portupgrade仅用portmaster和pkg能否实现portsclean这种功能?


portsclean 么,我觉得大部分功能自己加几个 shell alias 分分钟就好了啊
删 work/ 跑一下就好了
代码:
# perl -e 'print join(qq|\0|, glob q|/usr/ports/*/*/work|)' | xargs -0 rm -frv


删 distfiles 么,就先收集一下所有的 distinfo,存到个 distfiles.json 里
代码:
# /Programs/perl5-5.18.4_11/bin/perl -MJSON -E '$q=qr{SHA256\s+\((?<distfile>.*)\)\s+=}; map {$o=join(q|/|,(split(/\//,$_))[3,4]);open(F,q|<|,$_); while(<F>){push @{$d->{$o}}, $+{distfile} if /$q/;} close(F);} glob q|/usr/ports/*/*/distinfo|; say JSON->new->utf8->pretty->encode($d);' > distfiles.json

# stat -f '%z %N' distfiles.json
1744073 distfiles.json

# head -n 15 distfiles.json
{
   "math/dieharder" : [
      "dieharder-3.31.1.tgz"
   ],
   "biology/gperiodic" : [
      "gperiodic-2.0.10.tar.gz"
   ],
   "deskutils/conkyemail" : [
      "conkyemail_2.07.tar.gz"
   ],
   "databases/py-pyPgSQL" : [
      "pyPgSQL-2.5.1.tar.gz",
      "pyPgSQL-patch_byteaconn"
   ],
   "devel/psptoolchain-gdb" : [


然后对于 /usr/ports/distfiles 下的文件,没在 distfiles.json 里出现的删掉就好了
代码:
# cat distfiles.json | /Programs/perl5-5.18.4_11/bin/perl -MJSON -MFile::Find -E 'undef $/;$l=JSON->new->utf8->decode(<>);$portsdir=q|/usr/ports/distfiles/|;for $p (keys %$l){map {$d{$_}=1} @{$l->{$p}}}; find(sub{if (-f) { $_=$File::Find::name; s{$portsdir}{}; push @o, qq|$portsdir$_| if not exists $d{$_};}},$portsdir);print join qq|\0|, @o;' | xargs -0 rm -fv


如果已经安装的包的 distfiles 不删,那就改成照着 pkg query %o
代码:
# cat distfiles.json | /Programs/perl5-5.18.4_11/bin/perl -MJSON -MFile::Find -E 'undef $/;$l=JSON->new->utf8->decode(<>);$portsdir=q|/usr/ports/distfiles/|;for $p (split(/\n/,`pkg query %o`)){map {$d{$_}=1} @{$l->{$p}}}; find(sub{if (-f) { $_=$File::Find::name; s{$portsdir}{}; push @o, qq|$portsdir$_| if not exists $d{$_};}},$portsdir);print join qq|\0|, @o;' | xargs -0 rm -fv


bleakwind 写到:
话说好久没装过新版本freebsd了,装的最后一个版本还是8.3,后来发现ports不被支持这才强迫我最近开始整理下安装笔记,准备更新生产环境版本.
我做PHP的,谅解.

btw: freebsdchina的人说话就是这么内涵,酸爽...


做 PHP 怎么了, 你不要酱紫自黑世界上最好的语言啊……
应该像我这样,下面有谁要黑 Perl 的
至少先做到把自己机器上的 Perl 删掉并且以后永远不装的吧 XD

_________________
匿懦的邮件列表
订阅: bsd-talk-subscribe@anonymous744wjcx.onion
退订: bsd-talk-unsubscribe@anonymous744wjcx.onion
返回页首
阅览会员资料 发送站内信件
Gehaowu
老妖


注册时间: 2009-07-13
文章: 3189
来自: www

文章发表于: Wed 2015-04-22 22:30:29    发表主题: 引用并回复

Shocked Shocked Shocked
我是新来的。。。
我的freebsd坏了,求修 Very Happy Very Happy Very Happy

_________________
https://www.daemon.xin from BITMOE.com
礼尚多有往来,意美人常在
Simplified Chinese Shell/csh,Traditional Chinese Shell/tcsh
返回页首
阅览会员资料 发送站内信件 发送电子邮件 浏览发表者的主页
bleakwind
老妖


注册时间: 2005-01-07
文章: 1345
来自: The Matrix

文章发表于: Fri 2015-04-24 15:22:24    发表主题: 引用并回复

anonymouscoward 写到:
bleakwind 写到:
anonymouscoward 写到:
难道我们现在看的不是同一个 portupgrade ……
https://github.com/freebsd/portupgrade/blob/master/bin/pkgdb#L359
还是说你在用去年 r368531 之前支持 pkg_install 的 ports

dougb@ 跑路以前我还会看看每次更新都修改了什么,后来我就彻底放弃 shell 了
现在觉得那些用 portmaster 肯定都是铁杆 shell 粉丝

我就知道下面一大波要吐槽「你不是也用 poudriere 的」正在输入密码登录中……


其实发完帖子没忍住装了portupgrade才发现pkgdb -F已经没了,用pkg check代替了.
话说pkg这东西不错,一统二进制包管理.

portmaster和portupgrade一起使用会不会引起混乱? 这个如何作答?


好吧,能混用。知道自己在做什么的混用是不会出问题的,
出了问题的基本上就是不知道自己在做什么,不知道工具在做什么, 也不关心工具在做什么的
比如前段时间看到过好几次的这个, 我觉得稍微会点 pmake 的都能很容易猜到
https://www.freebsdchina.org/forum/viewtopic.php?t=66898

第一次看到这贴的时候我的视角是酱紫的:
比如上面提到的 pkgdb -F 里 fix_db_phrase1() 有找重复的 origin 然后修改 pkg_install +CONTENTS 的功能,
pkgng 用的是 sqlite,看看 portupgrade 至今没有依赖 sqlite3 gem,
所以用尾巴想想也知道 portupgrade 目前不会像对 pkg_install 那样直接去修改数据库了

看一下 portmaster 目前也没有用 pkg shell 直接去读写 sqlite
用的是 pkg 命令提供的 info|query|... 之类的接口
那么就可以认为对于 pkgng 他们都没有 pkgdb -F 那种修改重复 origin 的功能

再去看看 pkgng 到底会不会造成重复的 origin 呢?
pkg add 的时候会先检查一下,所以相同 origin 的装不上
https://github.com/freebsd/pkg/blob/master/libpkg/pkg.c#L1830

而 pkg install 的话却没有做类似的检查,如果于已安装的包
再安装另外一个 origin 相同但内容不同的包依然会被装上,
那么就只好相信目前 repo 里还没有重复的 origin,
比如,可以数一下 packagesite.yaml 里的行数和 origin 的数量, 会发现是一样的:
代码:
% curl -s http://pkg.freebsd.org/freebsd:10:x86:64/release/0/packagesite.txz | tar xOf - packagesite.yaml | /Programs/perl5-5.18.4_11/bin/perl -MJSON -nE '$o{JSON->new->ascii->decode($_)->{origin}}++; END{say join qq|\n|, ($., scalar keys %o)}'
22263
22263

至少目前不用担心 FreeBSD port 会出现 OpenBSD 那种 MULTI_PACKAGES 的东西了 XD

bleakwind 写到:
不装portupgrade仅用portmaster和pkg能否实现portsclean这种功能?


portsclean 么,我觉得大部分功能自己加几个 shell alias 分分钟就好了啊
删 work/ 跑一下就好了
代码:
# perl -e 'print join(qq|\0|, glob q|/usr/ports/*/*/work|)' | xargs -0 rm -frv


删 distfiles 么,就先收集一下所有的 distinfo,存到个 distfiles.json 里
代码:
# /Programs/perl5-5.18.4_11/bin/perl -MJSON -E '$q=qr{SHA256\s+\((?<distfile>.*)\)\s+=}; map {$o=join(q|/|,(split(/\//,$_))[3,4]);open(F,q|<|,$_); while(<F>){push @{$d->{$o}}, $+{distfile} if /$q/;} close(F);} glob q|/usr/ports/*/*/distinfo|; say JSON->new->utf8->pretty->encode($d);' > distfiles.json

# stat -f '%z %N' distfiles.json
1744073 distfiles.json

# head -n 15 distfiles.json
{
   "math/dieharder" : [
      "dieharder-3.31.1.tgz"
   ],
   "biology/gperiodic" : [
      "gperiodic-2.0.10.tar.gz"
   ],
   "deskutils/conkyemail" : [
      "conkyemail_2.07.tar.gz"
   ],
   "databases/py-pyPgSQL" : [
      "pyPgSQL-2.5.1.tar.gz",
      "pyPgSQL-patch_byteaconn"
   ],
   "devel/psptoolchain-gdb" : [


然后对于 /usr/ports/distfiles 下的文件,没在 distfiles.json 里出现的删掉就好了
代码:
# cat distfiles.json | /Programs/perl5-5.18.4_11/bin/perl -MJSON -MFile::Find -E 'undef $/;$l=JSON->new->utf8->decode(<portsdir>{$p}}}; find(sub{if (-f) { $_=$File::Find::name; s{$portsdir}{}; push @o, qq|$portsdir$_| if not exists $d{$_};}},$portsdir);print join qq|\0|, @o;' | xargs -0 rm -fv


如果已经安装的包的 distfiles 不删,那就改成照着 pkg query %o
代码:
# cat distfiles.json | /Programs/perl5-5.18.4_11/bin/perl -MJSON -MFile::Find -E 'undef $/;$l=JSON->new->utf8->decode(<portsdir>{$p}}}; find(sub{if (-f) { $_=$File::Find::name; s{$portsdir}{}; push @o, qq|$portsdir$_| if not exists $d{$_};}},$portsdir);print join qq|\0|, @o;' | xargs -0 rm -fv


bleakwind 写到:
话说好久没装过新版本freebsd了,装的最后一个版本还是8.3,后来发现ports不被支持这才强迫我最近开始整理下安装笔记,准备更新生产环境版本.
我做PHP的,谅解.

btw: freebsdchina的人说话就是这么内涵,酸爽...


做 PHP 怎么了, 你不要酱紫自黑世界上最好的语言啊……
应该像我这样,下面有谁要黑 Perl 的
至少先做到把自己机器上的 Perl 删掉并且以后永远不装的吧 XD




perl大师,我拜中.
解释的够详细...

话说portmaster和portupgrade能混用我就直接装portupgrade,用portsclean了.

我等小菜鸟其实顶多就是不修改系统的情况下最简单可靠的维护系统就可以了.
过多自己写系统维护代码之类没那能力...

好像看到Gehaowu乱入中... Laughing

_________________
听不到你的声音,只有风声在想...
返回页首
阅览会员资料 发送站内信件 发送电子邮件 浏览发表者的主页 MSN Messenger
anonymouscoward
道士


注册时间: 2013-08-08
文章: 868

文章发表于: Fri 2015-04-24 20:47:19    发表主题: 引用并回复

bleakwind 写到:
perl大师,我拜中.
解释的够详细...

话说portmaster和portupgrade能混用我就直接装portupgrade,用portsclean了.

我等小菜鸟其实顶多就是不修改系统的情况下最简单可靠的维护系统就可以了.
过多自己写系统维护代码之类没那能力...

好像看到Gehaowu乱入中... Laughing


我这种连文档都没读全的只能算是新手水平的 Perl 用户
因为平时基本上只用 *nix 系统所以一直拿来当 shell 用
现在要是让我去读 portmaster 那堆 shell 我直接就跪了……

要是让我在旧的机器上编译升级,我也真心没什么把握
所以一般都退到一个能确定的状态比如空的 $LOCALBASE 然后重新装
ports 事先在其他机器上编译,以前 pkg_install 时代用的是 ports-mgmt/tinderbox
虽然后来也支持 pkgng 了,不过那会 ports-mgmt/poudriere 好像已经开始流行了

_________________
匿懦的邮件列表
订阅: bsd-talk-subscribe@anonymous744wjcx.onion
退订: bsd-talk-unsubscribe@anonymous744wjcx.onion
返回页首
阅览会员资料 发送站内信件
从以前的文章开始显示:   
发表新文章   回复文章    FreeBSD China -> 技术交流 论坛时间为 北京时间
1页/共1

 
转跳到:  
不能发布新主题
不能在这个论坛回复主题
不能在这个论坛编辑自己的文章
不能在这个论坛删除自己的文章
不能在这个论坛发表投票


Powered by phpBB 2023cc © 2003 Opensource Steps; © 2003-2009 The FreeBSD Simplified Chinese Project
Powered by phpBB © 2001, 2005 phpBB Group
Protected by Project Honey Pot and phpBB.cc
silvery-trainer
The FreeBSD China Project 网站: 中文计划网站 社区网站
The FreeBSD China Project 版权所有 (C) 1999 - 2003 网页设计版权 著作权和商标