Ubuntn系统自动检测和安装自己需要的软件包


Ubuntn系统自动检测和安装自己需要的软件包
 
记得第一次开始接触Linux玩的是Ubuntn9.04的系统,是10年那会,手上有一台二手的奔腾4的512M戴尔笔记本。当时很好奇,很有兴趣,在那20GB的硬盘空间中,在反复的折腾下,我硬是装了xp和Ubuntn9.04的双系统,虽然基本还不会用Linux系统。后来在上面又折腾装了9.10、10.04两个版本,纯粹是为了新鲜,基本都没用过。唯一的好处就是熟悉了Linux的环境和安装。之后开始自学Linux系统的知识、命令,在新电脑上又折腾过10.10,11.04,12.04这些版本,还有Fedora16、Fedora17的系统也玩过一会。
 
每一次装新系统,因为都是用的CD ISO版,所以都得把一些常用的工具、命令一个个重新下载安装一次。上次装12.04的服务器,为了安装和更新软件包,整了一个晚上也没有结束,因为不知道可以用国内的仓库源。而且我都是一个个的工具手动去安装、等待结果的。这次打算折腾一把Debian 7,也是希望以后能少折腾系统了。因此写了一个shell脚本来实现安装好系统后,自动检测和安装自己需要的软件包,实现自动化。
 
01
#! /bin/bash
02
 
03
# check whether some essential packages exist.
04
# if not installed, install them from software repos.
05
# essential packages:
06
# gcc g++ gdb make
07
# exuberant-ctags cscope
08
# ftp tree wget curl lynx
09
# openssh-server openssh-client
10
# mysql-server mysql-client
11
# vim git svn rcs sed gawk
12
# chromium-browser
13
 
14
MY_PROGRAM_PACKS="gcc g++ gdb make exuberant-ctags cscope vim git"
15
MY_UTILITY_PACKS="ftp tree wget curl lynx sed gawk chromium-browser"
16
MY_MANAGE_PACKS="openssh-server openssh-client mysql-server mysql-client"
17
 
18
MY_PACKS="$MY_PROGRAM_PACKS $MY_UTILITY_PACKS $MY_MANAGE_PACKS"
19
 
20
STATUS_1=" installed"
21
STATUS_2=" not installed"
22
 
23
# for statistics result
24
INIT_INS_PACKS=
25
NEW_INS_PACKS=
26
FAIL_INS_PACKS=
27
 
28
 
29
for pack in $MY_PACKS
30
do
31
        echo  "checking for $pack ..."
32
 
33
        status=`aptitude show $pack|grep State:|cut -d ":" -f 2`
34
        version=`aptitude show $pack|grep Version:|cut -d ":" -f 2-`
35
 
36
        if [ "$status" = "$STATUS_1" ]
37
        then
38
                INIT_INS_PACKS="$INIT_INS_PACKS $pack"
39
                echo "$pack is $status,version is $version"
40
        else
41
                echo "$pack is $status, start to install $version ..."
42
                aptitude install $pack
43
                if [ $? -eq 0 ]
44
                then
45
                        NEW_INS_PACKS="$NEW_INS_PACKS $pack"
46
                        echo "install $pack ($version) successfully."
47
                else
48
                        FAIL_INS_PACKS="$FAIL_INS_PACKS $pack"
49
                        echo "install $pack ($version) failed."
50
                fi
51
        fi
52
        echo "checking $pack done."
53
done
54
 
55
echo "the checking packages result:"
56
echo "    initial installed packages: $INIT_INS_PACKS "
57
echo "    new installed packages: $NEW_INS_PACKS "
58
echo "    failed installed packages: $FAIL_INS_PACKS "
59
 
60
exit 0
脚本是针对使用APT包管理系统的Linux发行版的,如 Debian和Ubuntn。对于RHEL、CentOS、Fedora这些使用其它包管理系统的Linux发行版,只需要把脚本中的包管理命令aptitude换成相应的命令就OK了,如CentOS中的yum命令,当然注意state和version信息的提取可能不一样。

相关内容

    暂无相关文章