LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: 沙漠之子

使用pacman-cage给pacman本地数据库提速

[复制链接]
发表于 2008-11-18 09:15:11 | 显示全部楼层
用了以后怎么好像没法进行本地查询了。
pacman -Qs查什么都没有。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-18 10:01:18 | 显示全部楼层
Post by zlowly;1910131
用了以后怎么好像没法进行本地查询了。
pacman -Qs查什么都没有。


你看一下有/var/lib/pacman.db吗?

然后运行
sudo mount -o loop -t ext2 /var/lib/pacman.db /var/lib/pacman

看一下输出啥
回复 支持 反对

使用道具 举报

发表于 2008-11-18 10:29:18 | 显示全部楼层
运行完
sudo mount -o loop -t ext2 /var/lib/pacman.db /var/lib/pacman
以后就可以查询了。

原来没看仔细,做漏了
将pacmandb添加到rc.conf的DAEMONS中
这一步。
回复 支持 反对

使用道具 举报

发表于 2008-11-18 17:33:19 | 显示全部楼层
既然可以这样,那我考虑是不是可以挂到内存里面去呢?反正又不大。应该更会快,最小能否设置成10m。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-18 18:16:53 | 显示全部楼层
Post by jarryson;1910339
既然可以这样,那我考虑是不是可以挂到内存里面去呢?反正又不大。应该更会快,最小能否设置成10m。

那大大不妨试试看呀

我这设成30mb都不行
回复 支持 反对

使用道具 举报

发表于 2008-11-18 18:38:56 | 显示全部楼层
real        0m1.658s
user        0m0.403s
sys        0m0.390s
回复 支持 反对

使用道具 举报

发表于 2008-11-19 09:13:25 | 显示全部楼层
Post by 沙漠之子;1910360
那大大不妨试试看呀

我这设成30mb都不行


10M肯定不够,我这里光core、extra和community就有12M了,还有local也用了11M,再加上其他的总共都用了37M了。
回复 支持 反对

使用道具 举报

发表于 2008-11-19 10:27:39 | 显示全部楼层
没必要,只要你的var是独立分区的,定期做碎片整理/pacman-optimize,速度肯定快。
我var是jfs的,很舒服,用reiserfs反而磁盘读写频繁,该优化的也都优化了。
我可不愿意多开一个daemon。
回复 支持 反对

使用道具 举报

发表于 2008-11-19 14:38:21 | 显示全部楼层
[raven@linuxboy ~]$ time pacman -Ss pacman
real        0m0.469s
user        0m0.217s
sys        0m0.223s

啥都没用,就pacman -optimize一下
回复 支持 反对

使用道具 举报

发表于 2008-11-19 14:52:59 | 显示全部楼层
不知道为何,我看整个/var/lib/pacman的大小才2m多,在虚拟盘里面是22m,但是必须大于70m才行。

还有pacman-cage有bug,比如失败,会默认把pacman.bak还原到/var/lib/pacman文件夹下去,然后多运行失败几次,就会又n层目录。

所以建议使用这个命令之前备份一下/var/lib/pacman这个目录比较好。万一操作失误,就等着哭吧。

修改启动脚本,启动的时候拷贝挂载到内存,关机的时候复制到磁盘。看看有什么需要修改的。貌似没有问题吧

[color="Red"]不推荐使用。。。不稳定

[php]#!/bin/bash

. /etc/rc.conf
. /etc/rc.d/functions

case "$1" in
start)
# Check and mount pacman database
stat_busy "Mounting the pacman database"
/sbin/e2fsck -p /var/lib/pacman.db >/dev/null
if [ $? -gt 1 ]; then
   stat_fail
   echo
   echo "WARNING: PACMAN DATABASE FILESYSTEM CHECK FAILED, NOT MOUNTED"
   echo
else                                                                                    # <--------------------这里开始
   if [ ! -d /dev/shm ]; then
      echo "NOTE: Faild to use memdisk"
      mount -o loop -t ext2 /var/lib/pacman.db /var/lib/pacman
   else
      cp /var/lib/pacman.db /dev/shm/pacman.db
      mount -o loop -t ext2 /dev/shm/pacman.db /var/lib/pacman
   fi                                                                          #<--------------------这里结束
   if [ $? -gt 0 ]; then
      stat_fail
      echo
      echo "WARNING: MOUNTING PACMAN DATABASE FAILED"
      echo
   else
      stat_done
      add_daemon pacmandb
   fi
fi
;;

stop)
stat_busy "Unmounting the pacman database"
umount /var/lib/pacman >/dev/null 2>&1
####need contribuild####                                            #<-------------还有这里开始,怎么样能判断这个文件是否被修改过呢,否则只好每次关机复制一次了
#if [ -e /dev/shm/pacmandb ];then
   cp /dev/shm/pacman.db /var/lib/pacman.db
#fi
########################
                                                                         #  < ----------------这里结束
if [ $? -ne 0 ]; then
stat_fail
else
stat_done
rm_daemon pacmandb
fi
;;

restart)
$0 stop
sleep 2
$0 start
;;

*)
echo "usage: $0 {start|stop|restart}"  
esac[/php]
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表