Living a Simple Life is a Happy Life

有饭吃,自由自在,就非常开心

为centos添加EPEL Repo

| Comments

centos默认的源软件不是很全,大部分时候需要添加EPEL源。

centos5.x

wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
sudo rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

centos6.x

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

添加完毕后可以到/etc/yum.repos.d里面看一下

$ ls -1 /etc/yum.repos.d/epel* /etc/yum.repos.d/remi.repo
/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/remi.repo

设置remi repository

remi repository更新很快,如果你很需要htopxxx最新版本这样的话最好打开

sudo vim /etc/yum.repos.d/remi.repo

编辑 [remi]段:

name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

开发工具套装

yum groupinstall "Development Tools"

SCL源

http://wiki.centos.org/AdditionalResources/Repositories/SCL

解决仓库安装失败的问题

有时候某个软件可以Search,但安装一直报错:

http://download.fedoraproject.org/pu...ry.sqlite.bz2: [Errno 12] Timeout: <urlopen error timed out>
Trying other mirror.

最简单的修复办法就是重建repos

yum clean all
rpm --rebuilddb
yum update

90%的情况会奏效

yum只下载安装包

[RHEL5]
yum -y install yum-downloadonly
yum install mongodb-org --downloadonly

[RHEL6]
yum install yum-plugin-downloadonly
yum install --downloadonly --downloaddir=. mongodb-org

yum提取已经安装的rpm包

yum install yum-utils
yumdownloader <package>
yumdownloader <package> --resolve

yum升级kernel

http://elrepo.org/tiki/kernel-ml

elrepo url

http://elrepo.org/tiki/tiki-index.php

http://elrepo.org/linux/kernel/

http://mirrors.sohu.com/centos/6.6/xen4/x86_64/Packages/

mongodb RPM repo

https://repo.mongodb.org/yum/redhat

163镜像源

http://mirrors.163.com/.help/centos.html

rpm 常用命令

  • 重装某个包
1
rpm -ivh --replacepkgs xxx.rpm
  • 修改prefix
1
2
rpm -qp --queryformat "%{defaultprefix}\n" <packagefile>
rpm -ivh --prefix <packagefile>
  • 查询某个包包含的文件
1
2
rpm -ql <packagefile>
rpm -qs <packagefile>
  • 查询某个包包含的配置文件
1
rpm -qc <packagefile>
  • 查询某个包安装时要执行的脚本文件
1
rpm -q --scripts <packagefile>
  • 查询某个文件属于哪个包
1
rpm -qf <filepath>
  • 查询某个可执行文件的配置文件和log文件
1
rpm -qcf <filepath>
  • 寻找最近安装的包
1
2
find /bin -type f -mtime -14 | rpm -qF
rpm -qa --queryformat '%{installtime} %{name}-%{version}-%{release} %{installtime:date}\n' | sort -nr +1 | sed -e 's/^[^ ]* //'
  • 寻找最大的安装包
1
rpm -qa --queryformat '%{name-%{version}-%{release} %{size}\n' | sort -nr +1}'
  • 解压一个rpm文件
1
rpm2cpio xxx.rpm | cpio -div

批量删除mongo Collections

| Comments

mongodb没有批量删除collecton的命令,平常建立了很多a1,a2,a3的表删除有些麻烦,写个小脚本方便些。

mongorm.sh -d database -c a*

就很方便删除了。

#!/bin/bash
# remove mongodb's collections with command "mongn rm app*"
# Usage `mongorm <-c collections*> <-d dababase>`

E_BADARGS=85
E_NOFILE=86

DATABASE=''
COLLECTIONS=''

while getopts "c:d:h" arg
do
        case $arg in
             c)
                echo "-c $OPTARG"
                COLLECTIONS=$OPTARG
                ;;
             d)
                echo "-d $OPTARG"
                DATABASE=$OPTARG
                ;;
             h)
                 echo "mongorm <-d database> <-c collections>"
                 echo "for exp:"
                 echo "        mongorm -d bpc -c app*"
                 ;;
             ?)
                echo "unkonw argument"
        exit 1
        ;;
        esac
done

if [[ -z "$DATABASE" ]]
    # Correct number of arguments passed to script?
then
    echo 'Usage: -d database'
    echo 'please do mongorm.sh -h to get more info'
    exit $E_BADARGS
fi

if [[ -z "$COLLECTIONS" ]]
    # Correct number of arguments passed to script?
then
    echo 'Usage: -c collections'
    echo 'please do mongorm.sh -h to get more info'
    exit $E_BADARGS
fi

mongojs_rm_function=`cat << EOF
db.getCollectionNames().forEach(function(c) {
    if(c.match("$COLLECTIONS")) {
                db.getCollection(c).drop();
                    }
                  });
EOF
`
echo $mongojs_rm_function>remove.js

mongo 127.0.0.1:27017/$DATABASE remove.js
rm -rf remove.js

解决tmux下vim Colorscheme失效的问题

| Comments

在tmux(v1.6)默认配置下,vim的主题solarized, molokai等颜色设置都会失效

这是由于tmux term设置的问题。

需要在~/.bashrc中添加: alias tmux="TERM=screen-256color-bce tmux"

再在~/.tmux.conf中添加: set -g default-terminal "xterm"

如果是osx,可能在~/.bashrc要添加: alias tmux="TERM=screen-256color-bce tmux"

在~/.tmux.conf中添加: set -g default-terminal "screen-256color"

最后执行 $ source ~/.bashrc

就OK了。

参考:

http://stackoverflow.com/questions/10158508/lose-vim-colorscheme-in-tmux-mode http://rhnh.net/2011/08/20/vim-and-tmux-on-osx

双梦记

| Comments

阿拉伯历史学家艾尔一伊萨基叙说了下面的故事:

“据可靠人士说(不过唯有真主才是无所不知、无所不能、慈悲为怀、明察秋毫的),开罗有个家资巨万的人,他仗义疏财,散尽家产,只剩下祖传的房屋,不得不干活糊口。他工作十分辛苦,一晚累得在他园子里的无花果树下睡着了,他梦见一个衣服湿透的人从嘴里掏出一枚金币,对他说:‘你的好运在波斯的伊斯法罕;去找吧。’他第二天清晨醒来后便踏上漫长的旅程,经受了沙漠、海洋、海盗、偶像崇拜者、河流、猛兽和人的磨难艰险。他终于到达伊斯法罕,刚进城天色已晚,便在一座清真寺的天井里躺着过夜。清真寺旁边有一家民宅,由于万能的神的安排,一伙强盗借道清真寺,闯进民宅,睡梦中的人被强盗的喧闹吵醒,高声呼救。邻舍也呼喊起来,该区巡夜士兵的队长赶来,强盗们便翻过屋顶逃跑。队长吩咐搜查寺院,发现了从开罗来的人,士兵们用竹杖把他打得死去活来。两天后,他在监狱里苏醒。队长把他提去审问:‘你是谁,从哪里来?’那人回道:‘我来自有名的城市开罗,我名叫穆罕默德一艾尔一马格莱比。’队长追问:‘你来波斯干什么?’那人如实说:‘有个人托梦给我,叫我来伊斯法罕,说我的好运在这里。如今我到了伊斯法罕,发现答应我的好运却是你劈头盖脸给我的一顿好打。’

“队长听了这番话,笑得大牙都露了出来,最后说:‘鲁莽轻信的人啊,我三次梦见开罗城的一所房子,房子后面有个日晷,日晷后面有棵无花果树,无花果树后面有个喷泉,喷泉底下埋着宝藏。我根本不信那个乱梦。而你这个骡子与魔鬼生的傻瓜啊,居然相信一个梦,跑了这么多城市。别让我在伊斯法罕再见到你了。拿几枚钱币走吧。’

“那人拿了钱,回到自己的国家,他在自家园子的喷泉底下(也就是队长梦见的地点)挖出了宝藏。神用这种方式保佑了他,给了他好报和祝福。在冥冥中主宰一切的神是慷慨的。”