比pkgfile快N倍的脚本
时间:2010-02-23
来源:互联网
前几天用pkgfile来频繁查找哪些包提供XX文件。实在是觉得pkgfile的效率慢得可怕,很疑惑它为啥把files列表分散开来。于是写了一个脚本,把files列表整合在一起,能够快N倍地进行查找。
用法很简单,首先用原装正版的pkgfile下载文件列表,然后运行这个脚本更新,接着就可以查找了。
一个查找的花费时间的对比:
PHP 代码:
#!/bin/bash
#file: ~/pfile
config=/etc/pacman.conf
cache=/var/cache/pkgtools/lists
list=/var/tmp/pkgfilelists.gz
repos=$(sed -n 's/^\[\(.*\)\]/\1/p' $config | grep -v options)
help(){
echo "Usage:"
echo " $0 {--help|--update|FILE}"
echo
echo "This is a script to fast find a package contains FILE (regexp)."
echo "For first use, please run:"
echo " pkgfile --update"
echo "Then:"
echo " $0 --update"
}
update(){
mv -f "$list" "$list.old" &>/dev/null
for repo in $repos; do
cd "$cache/$repo" 2>/dev/null
[ $? -ne 0 ] && continue
echo "listing [$repo] ($(ls | wc -l) packages) ..."
for i in *; do
name="$repo/${i%-*-*}"
grep -v '%FILES%' "$i/files" | sed "s|^|$name: |" | gzip >> ${list}
done
done
}
if [ $# -eq 0 ]; then
help
exit 0
fi
case "$1" in
-u|--update)
update
;;
-h|--help)
help
;;
*)
zgrep "$1" "$list"
;;
esac
#file: ~/pfile
config=/etc/pacman.conf
cache=/var/cache/pkgtools/lists
list=/var/tmp/pkgfilelists.gz
repos=$(sed -n 's/^\[\(.*\)\]/\1/p' $config | grep -v options)
help(){
echo "Usage:"
echo " $0 {--help|--update|FILE}"
echo
echo "This is a script to fast find a package contains FILE (regexp)."
echo "For first use, please run:"
echo " pkgfile --update"
echo "Then:"
echo " $0 --update"
}
update(){
mv -f "$list" "$list.old" &>/dev/null
for repo in $repos; do
cd "$cache/$repo" 2>/dev/null
[ $? -ne 0 ] && continue
echo "listing [$repo] ($(ls | wc -l) packages) ..."
for i in *; do
name="$repo/${i%-*-*}"
grep -v '%FILES%' "$i/files" | sed "s|^|$name: |" | gzip >> ${list}
done
done
}
if [ $# -eq 0 ]; then
help
exit 0
fi
case "$1" in
-u|--update)
update
;;
-h|--help)
help
;;
*)
zgrep "$1" "$list"
;;
esac
PHP 代码:
20:42:06@laptop:~ $ sudo pkgfile --update
Updating [core] file list... Extracting [core] file list... Done
Updating [extra] file list... Extracting [extra] file list... Done
Updating [community] file list... Extracting [community] file list... Done
Updating [arch-games] file list... Extracting [arch-games] file list... Done
20:43:28@laptop:~ $ pfile --update
listing [core] (184 packages) ...
listing [extra] (2458 packages) ...
listing [community] (1915 packages) ...
listing [arch-games] (166 packages) ...
Updating [core] file list... Extracting [core] file list... Done
Updating [extra] file list... Extracting [extra] file list... Done
Updating [community] file list... Extracting [community] file list... Done
Updating [arch-games] file list... Extracting [arch-games] file list... Done
20:43:28@laptop:~ $ pfile --update
listing [core] (184 packages) ...
listing [extra] (2458 packages) ...
listing [community] (1915 packages) ...
listing [arch-games] (166 packages) ...
PHP 代码:
20:44:39@laptop:~ $ time pkgfile tunctl
extra/uml_utilities
real 0m8.741s
user 0m8.119s
sys 0m0.143s
20:45:33@laptop:~ $ time pfile tunctl
extra/uml_utilities: usr/bin/tunctl
extra/vde2: usr/share/man/man8/vde_tunctl.8.gz
extra/vde2: usr/sbin/vde_tunctl
extra/vde2: usr/bin/vde_tunctl
real 0m0.941s
user 0m0.853s
sys 0m0.020s
extra/uml_utilities
real 0m8.741s
user 0m8.119s
sys 0m0.143s
20:45:33@laptop:~ $ time pfile tunctl
extra/uml_utilities: usr/bin/tunctl
extra/vde2: usr/share/man/man8/vde_tunctl.8.gz
extra/vde2: usr/sbin/vde_tunctl
extra/vde2: usr/bin/vde_tunctl
real 0m0.941s
user 0m0.853s
sys 0m0.020s
作者: dickeny 发布时间: 2010-02-23
不错,但目前没这个需要,先Mark下。
作者: luyaotang 发布时间: 2010-02-23
pkgfile是干什么用的?
作者: wolfmei 发布时间: 2010-02-23
没有试过pkgfile(完全不需要...)
不过我猜测只有(开机后)第一次运行`pkgfile <file>` 会比较慢, 之后你再用它查找就不会那么慢了; 这个跟pacman的表现是一样的.
你的`pfile --update`花的时间大概跟这个第一次运行的时间差不多.
不过我猜测只有(开机后)第一次运行`pkgfile <file>` 会比较慢, 之后你再用它查找就不会那么慢了; 这个跟pacman的表现是一样的.
你的`pfile --update`花的时间大概跟这个第一次运行的时间差不多.
作者: lolilolicon 发布时间: 2010-02-23
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28