LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
 
主题工具
旧 08-11-20, 15:16 第 1 帖
bones7456
 
bones7456 的头像
 
 
注册会员  
  注册日期: Apr 2006
  我的住址: 杭州
  帖子: 112
  精华: 0
 

标题: e-file 根据文件名查询gentoo包的脚本


首发和以后更新都在我的blog: http://li2z.cn/category/e-file/


一直想在gentoo下实现一个类似ubuntu的apt-file的功能,幸好已经有 http://www.portagefilelist.de 这个网站了,就花了2小时写了个小脚本直接到这个站取数据了,感觉效果还可以,先发出来,算是预览版吧,以后会再完善的.
输出格式参考了 eix ,代码如下:
代码:
#!/bin/sh #AUTHOR: bones7456 (bones7456<at>gmail<dot>com) #VERSION: 20081120 ##License: GPL #e-file is like apt-file for gentoo, but data is online if [[ $# -ne 1 ]];then echo "Usage: `basename $0` filename" exit 1 fi URL="http://www.portagefilelist.de/index.php/Special:PFLQuery2?file=$1&searchfile=lookup&lookup=file#result" w3m -dump -cols 3000 $URL | awk ' BEGIN{ FLAG=0 FOUND=0 } { if($1=="dir" && $2=="package"){ FLAG=1 next } if($1=="Retrieved" && $2=="from"){ if(FOUND){ for(i in ver){ split(i,ii,/\//) printf("%c[%d;%d;%dm* ",27,2,0,32) printf("%c[0m%s/",27,ii[1]) printf("%c[%d;%d;%dm%s\n",27,2,1,29,ii[2]) printf("%c[%d;%d;%dm\t",27,2,0,32) printf("Available versions:\t%s\n",ver[i]) printf("\tMatched File:\t\t") printf("%c[0m",27) printf("%s\n\n",file[i]) } }else{ print "No matches found." } exit } if(FLAG==1 && NF!=0){ ver[$1 "/" $2]=$NF " " ver[$1 "/" $2] file[$1 "/" $2]=$3 "/" $4 FOUND=1 } }'
脚本下载地址: http://linuxfire.com.cn/~lily/e-file
截图如下:


=====20081125添加=====
ChangeLog:

20081125:
优化代码结构
增加本地已安装版本的显示
增加Homepage和Description的显示

http://li2z.cn/2008/11/25/e-file-20081125/
上传的图像
文件类型: png e-file.png (75.8 KB, 240 次查看)







__________________
[URL="http://li2z.cn/"]ε==3[/URL]

此帖于 08-11-25 14:06 被 bones7456 编辑.
  bones7456 当前离线   回复时引用此帖
旧 08-11-20, 15:35 第 2 帖
ak47wj
 
 
 
注册会员  
  注册日期: Nov 2005
  帖子: 143
  精华: 0
 

Good work! Thanks.
  ak47wj 当前离线   回复时引用此帖
旧 08-11-20, 16:24 第 3 帖
zhllg
 
zhllg 的头像
 
 
版主  
  注册日期: Nov 2002
  帖子: 8,459
  精华: 22
 

不错阿
发到forums.gentoo.org
说不定会有别人帮你改进,帮你提建议







__________________
Zhang Le (r0bertz)
http://zhangle.is-a-geek.org
  zhllg 当前离线   回复时引用此帖
旧 08-11-20, 16:51 第 4 帖
bones7456
 
bones7456 的头像
 
 
注册会员  
  注册日期: Apr 2006
  我的住址: 杭州
  帖子: 112
  精华: 0
 

呵呵,我先把自己想到的实现了,再发上去吧,这个发上去太简陋了点吧...
  bones7456 当前离线   回复时引用此帖
旧 08-11-20, 17:44 第 5 帖
junlovemin
 
junlovemin 的头像
 
 
注册会员  
  注册日期: Sep 2006
  帖子: 375
  精华: 0
 

cool!!这个找了好久了,谢谢楼主。打个包放到gentoo-china里,嘿嘿
  junlovemin 当前离线   回复时引用此帖
旧 08-11-20, 18:42 第 6 帖
flyinflash
 
flyinflash 的头像
 
 
注册会员  
  注册日期: Sep 2006
  我的住址: 自由同盟 | 广州
  帖子: 713
  精华: 0
 

赞~~~

现在还差一个
查中文USE的。。。期待大牛出手

查中文USE跟您这个有点类似。搭建一个人人可以编辑的WIKI,上面可以查USE对应的中文含义和作用。







__________________
Shuge Lee | Lee Li | 李蠡

http://lee.youxu.info/
http://shuge-lab.org
  flyinflash 当前离线   回复时引用此帖
旧 08-11-20, 18:49 第 7 帖
flyinflash
 
flyinflash 的头像
 
 
注册会员  
  注册日期: Sep 2006
  我的住址: 自由同盟 | 广州
  帖子: 713
  精华: 0
 

另外,建议起个好名字

比如 efile 或者 e_file


用 curl /lynx/links 代替 w3m,或者都兼容
  flyinflash 当前离线   回复时引用此帖
旧 08-11-20, 19:24 第 8 帖
Blahster
 
Blahster 的头像
 
 
注册会员  
  注册日期: Nov 2004
  帖子: 650
  精华: 0
 

ebuild,不知能不能用? e-file-0.1.ebuild (需要个版本号。)
代码:
# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ DESCRIPTION="e-file is like apt-file for gentoo, but data is online" HOMEPAGE="http://li2z.cn/2008/11/20/e-file" SRC_URI="http://linuxfire.com.cn/~lily/${PN}" LICENSE="GPL-2" SLOT="0" KEYWORDS="~x86" IUSE="" DEPEND="" RDEPEND="www-client/w3m" S=${WORKDIR} src_unpack() { cp "${DISTDIR}"/e-file . } src_install() { dobin ${PN} }







__________________
Thinkpad R60 9460LR1
Exherbo Linux

此帖于 08-11-20 20:40 被 Blahster 编辑. 原因: 修正。
  Blahster 当前离线   回复时引用此帖
旧 08-11-21, 00:59 第 9 帖
牙刷
 
 
 
注册会员  
  注册日期: Apr 2005
  帖子: 26
  精华: 0
 

bones兄,这个脚本在处理vsftpd这样的文件时似乎还有些问题
第一问题是在可用版本中会出现重复的版本号
第二问题是根据http://www.portagefilelist.de/index....up=file#result的搜索情况,vsftpd应该匹配net-ftp/vsftpd包中的
/etc/conf.d/vsftpd
/etc/init.d/vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/xinetd.d/vsftpd
/usr/sbin/vsftpd
但目前的脚本中只匹配最后一个

我对awk一知半解,没有什么好的主意,等其他兄弟发言。。。

此帖于 08-11-21 01:01 被 牙刷 编辑.
  牙刷 当前离线   回复时引用此帖
旧 08-11-25, 14:04 第 10 帖
bones7456
 
bones7456 的头像
 
 
注册会员  
  注册日期: Apr 2006
  我的住址: 杭州
  帖子: 112
  精华: 0
 

引用:
作者: 牙刷
bones兄,这个脚本在处理vsftpd这样的文件时似乎还有些问题
第一问题是在可用版本中会出现重复的版本号
第二问题是根据http://www.portagefilelist.de/index....up=file#result的搜索情况,vsftpd应该匹配net-ftp/vsftpd包中的
/etc/conf.d/vsftpd
/etc/init.d/vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/xinetd.d/vsftpd
/usr/sbin/vsftpd
但目前的脚本中只匹配最后一个

我对awk一知半解,没有什么好的主意,等其他兄弟发言。。。
谢谢牙刷,新版本的脚本已经解决了此问题~
见: http://li2z.cn/2008/11/25/e-file-20081125/
  bones7456 当前离线   回复时引用此帖
旧 08-12-02, 11:05 第 11 帖
bones7456
 
bones7456 的头像
 
 
注册会员  
  注册日期: Apr 2006
  我的住址: 杭州
  帖子: 112
  精华: 0
 

引用:
作者: flyinflash
另外,建议起个好名字

比如 efile 或者 e_file


用 curl /lynx/links 代替 w3m,或者都兼容
名字就是 e-file 了,现在已经去掉了对 w3m 的依赖了:
http://li2z.cn/2008/12/01/e-file-20081201/
  bones7456 当前离线   回复时引用此帖
旧 08-12-02, 20:36 第 12 帖
slackcode
 
slackcode 的头像
 
 
注册会员  
  注册日期: Oct 2007
  我的住址: 广东
  帖子: 327
  精华: 0
 

bingo
顶一个
今天也在Toy里看到这个东东了







__________________
做人要知足,做事要知不足,做学问要不知足
http://geekliu.com/
  slackcode 当前离线   回复时引用此帖
旧 08-12-03, 08:17 第 13 帖
sheep204
 
sheep204 的头像
 
 
注册会员  
  注册日期: Dec 2002
  我的住址: 浙江舟山
  帖子: 1,148
  精华: 1
 

和equery b相比有什么不同吗?







__________________
参与 分享 应用
不求从Gentoo起步,但求以Gentoo为归宿,当然Arch也不错。
  sheep204 当前离线   回复时引用此帖
旧 08-12-03, 09:22 第 14 帖
wd_afei 帅哥
 
wd_afei 的头像
 
 
注册会员  
  注册日期: Jul 2003
  我的住址: Beijing
  帖子: 2,200
  精华: 5
 

equry b 只能查已经安装的文件吧?







__________________
wd
irc.oftc.net/6667 #chat-cn, #openbox-cn
  wd_afei 当前离线   回复时引用此帖
旧 08-12-03, 11:36 第 15 帖
health_kxy
 
 
 
注册会员  
  注册日期: Sep 2006
  帖子: 304
  精华: 0
 

关注关注,谢谢谢谢。
  health_kxy 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 12:18


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org