Ubuntn系统自动检测和安装自己需要的软件包
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信息的提取可能不一样。
评论暂时关闭