yum管理及源码安装
一、配置YUM库及更新操作
yum概述
- 基于RPM包构建的软件更新机制,自动解决软件依赖关系
YUM仓库格式
- 本地:file://
- 网络:ftp://或http://
yum源里面包含的内容
- 、rpm包
- 、元数据文件
mount /dev/cdrom /media
cd /media/Server
ls re*
在每个yum仓库中,都有repodata目录(存放的是仓库数据)
#baseurl代表yum在互联网上所查找的链接地址。这里需要解释一下
#$basearch代表了系统的构架格式如i386和repodata存放repomd.xml文件的文件夹位置。
Linux yum配置文件详解
yum的配置一般有两种方式: 一种是直接配置/etc目录下的yum.conf文件, 另外一种是在/etc/yum.repos.d目录下增加.repo文件。
yum的配置文件yum.conf详解
- $ cat /etc/yum.conf
- [main]
- cachedir=/var/cache/yum #yum下载的RPM包的缓存目录
- keepcache= #缓存是否保存,1保存,0不保存。
- debuglevel= #调试级别(-),默认为2(具体调试级别的应用,我也不了解)。
- logfile=/var/log/yum.log #yum的日志文件所在的位置
- exactarch= #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。
- obsoletes= #这是一个update的参数,具体请参阅yum(),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
- gpgcheck= #是否检查GPG(GNU Private Guard),一种密钥方式签名。
- plugins= #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。
- installonly_limit= #允许保留多少个内核包。
- exclude=selinux* #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。
配置YUM客户端
1、yum的配置文件
- -基本配置:/etc/yum.conf
- -仓库配置:/etc/yum.repos.d/*.repo
- -日志文件:/var/log/yum.log
2、yum缓存目录
-
- 存放下载软件包、仓库记录等数据
- -/var/cache/yum/$basearch/$releasever
yum缓存:
- /var/cache/yum:存放服务器的软件信息
- 当执行yum install 软件包 时,首先查看/var/lib/rpm数据库下有没有下载的软件包,如果没有则从/etc/yum.repos.d/下的.repo配置文件把软件信息下载到本地,
并缓存在/var/cache/yum,然后在/var/cache/yum里面找到某一软件的下载地址,然后把软件安装上。- .先备份
- .wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
- .yum makecache #生成缓存
- .yum install 软件包 -y
- cat /etc/yum.conf
- 复制代码
- [main]
- cachedir=/var/cache/yum #yum下载的RPM包的缓存目录
- keepcache= #缓存是否保存,1保存,0不保存。
- debuglevel= #调试级别(-),默认为2(具体调试级别的应用,我也不了解)。
- logfile=/var/log/yum.log #yum的日志文件所在的位置
- exactarch= #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。
- obsoletes= #这是一个update的参数,具体请参阅yum(),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
- gpgcheck= #是否检查GPG(GNU Private Guard),一种密钥方式签名。
- plugins= #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。
- installonly_limit= #允许保留多少个内核包。
- exclude=selinux* #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。
- # This is the default, if you make this bigger yum won't see if the metadata
- # is newer on the remote and so you'll "gain" the bandwidth of not having to
- # download the new metadata and "pay" for it by yum not having correct
- # information.
- # It is esp. important, to have correct metadata, for distributions like
- # Fedora which don't keep old packages around. If you don't like this checking
- # interupting your command line usage, it's much better to have something
- # manually check the metadata once an hour (yum-updatesd will do this).
- metadata_expire=90m #设定保存时长
- # PUT YOUR REPOS HERE or IN separate files named file.repo
- # in /etc/yum.repos.d
- keepcache=0修改成keepcacche=
- 保存,退出。
- 以后安装、更新的包,都会保存在/var/cache/yum/DT60SP3_Repository/packages目录下面
3、.repo基本配置项
- [源名称]:自定义名称,具有惟一性
- name:本软件源的描述字串
- baseurl:指定YUM服务端的URL地址
- enabled:是否启用此频道
- gpgcheck:是否验证待安装的RPM包
- gpgkey:用于RPM验证的密钥文件
- [fedora] #方括号里面的是软件源的名称,将被yum取得并识别
- name=Fedora $releasever - $basearch #这里也定义了软件 仓库的名称,通常是为了方便阅读配置文件,一般没什么作用,$releasever变量定义了发行版本,
- 通常是8,9,10等数字,$basearch变 量定义了系统的架构,可以是i386、x86_64、ppc等值,这两个变量根据当前系统的版本架构不同而有不同的取值,
这可以方便yum升级的时候选择 适合当前系统的软件包,以下同……- failovermethod=priority #failovermethod 有两个值可以选择,priority是默认值,表示从列出的baseurl中顺序选择镜像服务器地址,
roundrobin表示在列出的服务器中随机选择- exclude=compiz* *compiz* fusion-icon* #exclude这个选项是后来我自己加上去的,用来禁止这个软件仓库中的某些软件包的安装和更新,
可以使用通配符,并以空格分隔,可以视情况需要自行添加- #baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
#上面的一行baseurl第一个字符是'#'表示该行已经被注释,将不会被读取,这一行的意思是指定一个baseurl(源的镜像服务器地址)- #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
#上面的这一行是指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,
将$releasever和$basearch替换成自己对应的版本和架构,
例如10和i386,在<a href="http://www.it165.net/edu/ewl/" target="_blank" class="keylink">浏览器</a>中打开,
我们就能看到一长串镜可用的镜像服务器地址列表。- 选择自己访问速度较快的镜像服务器地址复制并粘贴到repo文件中,我们就能获得较快的更新速度了,格式如下baseurl所示:
baseurl=
ftp://ftp.sfc.wide.ad.jp/pub/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>/Fedora/releases/10/Everything/i386/os
http://ftp.chg.ru/pub/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>/fedora/linux/releases/10/Everything/i386/os
http://ftp.yz.yamagata-u.ac.jp/pub/linux/fedora/linux/releases/10/Everything/i386/os
http://mirror.nus.edu.sg/fedora/releases/10/Everything/i386/os
http://mirror.yandex.ru/fedora/linux/releases/10/Everything/i386/os
http://ftp.twaren.net/Linux/Fedora/linux/releases/10/Everything/i386/os
http://ftp.itu.edu.tr/Mirror/Fedora/linux/releases/10/Everything/i386/os
- enabled=1 #这个选项表示这个repo中定义的源是启用的,0为禁用21.
gpgcheck=1 #这个选项表示这个repo中下载的rpm将进行gpg的校验,已确定rpm包的来源是有效和安全的
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch #定义用于校验的gpg密钥,就是数位签章的公钥档所在位置!23.
4、创建server.repo配置,添加本地仓库
- vim /etc/yum.repos.d/server.repo
- baseurl=file:///media/RHEL_5.9%20x86_64%20DVD/Server //空格用%20代替
yum仓库中的元数据文件:
- 、primary.xml.gz
- a、所有RPM包的列表;
- b、依赖关系;
- c、每个RPM安装生成的文件列表;
- 、filelists.xml.gz
- a、当前仓库中所有RPM包的所有文件列表;
- 、other.xml.gz
- a、额外信息,RPM包的修改日志;
- 、repomd.xml
- a、记录的是上面三个文件的时间戳和校验和;
- 、comps*.xml: RPM包分组信息
注意:
- 、红帽6把yum仓库的所有rpm放到一个目录下,但是把repodata放到另外一个目录下,所以repodata并不在挂载的目录下;
- 、使用yum仓库时,一定要指向repodata所在的目录
- 、红帽5的rpm包和repodata都放到同一个目录;而红帽6的rpm包和repodata不在同一个目录下
yum客户端操作
- 格式:yum [-y] 指令 [软件名]
- list 查看软件包列表及安装状态
- search 查看软件包名称或者描述重要关键字
- info 查看软件包的说明信息,类似于rpm -qi
- install 安装指定软件包,类似于rpm -i
- update 升级指定软件包,类似于rpm -F
- remove 卸载指定软件包,类似于rpm -e
- provides 查看文件由那个包产生,类似于rpm -qf
- --nogpgcheck 不验证gpg签名
yum clean all
yum -y localinstall 本地安装 [-y=yes]- 本地无gpg公钥签名的安装
yum -y localinstall [安装包] --nogpgcheck- list: 列表
支持glob
all
available:可用的,仓库中有但尚未安装的
installed: 已经安装的
updates: 可用的升级- repolist: 显示repo列表及其简要信息
all
enabled: 默认
disabled
软件组基本操作
- yum
- grouplist 查看软件组列表
- groupinfo 查看软件组说明信息
- groupinstall 安装指定软件组
- groupupdate 升级软件组
- groupremove 卸载软件组
清空本地yum缓存
1、适用于yum缓存存在错误时
- -再次查询或更新时,会自动重建缓存
- yum clean all //清空所有缓存
- yum list //再次查询时更新
clean: 清理缓存
[ packages | headers | metadata | dbcache | all ]
搭建自定义yum源
- .先安装createrepo软件包
- yum -y install createrepo
- .将搜集的*.rpm包文件集中到自定义的文件夹,例如:
- mkdir /mydata
- cp *.rpm /mydata
- .使用createrepo生成仓库定义数据
- createrepo /mydata
- .配置/etc/yum.repos.d目录下的repo文件,注意把gpgcheck改为0,因为不是红帽认证的。
例子:
- YUM高级配置
- . 将rhel6. iso里面的软件全部拷贝到/data/rhel6
- . mkdir /data/rhel6/nsd1409,把相应的rpm包拷贝进去
- . 安装createrepo软件包
- . createrepo /data/rhel6/nsd1409
- . 修改yum客户端配置文件
- [root@localhost ~]# cat /etc/yum.repos.d/rhel6..repo
- [rhel-6.5]
- name=Red Hat Enterprise Linux Server
- baseurl=file:///data/rhel6/
- enabled=
- gpgcheck=
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
- [rhel-nsd1409]
- name=Red Hat Enterprise Linux Nsd1409
- baseurl=file:///data/rhel6/nsd1409
- enabled=
- gpgcheck=
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
- . yum clean all
- . yum list linuxqq
YUM 源优先级插件
Linux 发行版比较多,同时还有很多个人或组织维护了某些特定用途的安装/升级源。Yum Priorities 插件可以用来强制保护源。它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如 Linux 发行版的官方源)设定为最高优先级,从而保证系统的稳定性(同时也可能无法更新到其它源上提供的软件最新版本)。
在控制台运行 Yum Priorities 安装指令
- yum install yum-priorities
配置使用 Yum Priorities
1.使用熟悉的文本编辑器(如 vim)打开 Yum Priorities 配置文件 /etc/yum/pluginconf.d/priorities.conf
- vim /etc/yum/pluginconf.d/priorities.conf
2.确保配置文件中包含下面的行
- [main]
- enabled=
保存并关闭该文件
3.打开 CentOS base 源配置文件 /etc/yum.repos.d/CentOS-Base.repo
将下面的文本分别添加到 Base, Updates, Addons, 和 Extras 这几个源记录的后面*
- priority=
将下面的文本添加到 CentOSPlus 源记录的后面*
- priority=
注意:
- * 源记录(repository entry)是由 [ 和 ] 括起来的源名称。例如,Base 源记录就标记为 [base] 。
- ** 优先级由 ~ 的 个数表示, 的优先级最高。优先级小的源即使有某软件的较新版本,如果优先级高的源中没有,
在启用该插件的情况下,系统也无法安装/升级到该较新版本。图形界面的 YUM 工具一般默认就已经包含了优先级插件。- *** 要禁用 YUM 优先级功能,只需要在(.A.) /etc/yum/pluginconf.d/priorities.conf 中将 enable= 改为 enable= 即可。不建议!
本地yum源优先级比官网base源高,因此在yum安装包时,首先会在本地查找,没有找到才会去官网查找
- 备注:
- 、要使priority参数有效,必须安装yum-plugin-priorities插件
- 、N为整型数.默认优先级为99.数值越小优先级越高;
二、源码包的编译安装
1. 准备开发环境gcc、g++、make
2. 源码安装基本过程
- tar 一般解包到/usr/src
- ./configure 配置,使用--prefix=/usr/local/软件名 指定安装位置
- make 编译
- make install 安装
三 源码包编译安装
深入研究编译
语言进行编译,一般进行如下步骤:
- ) 先检查程序代码中的语法是否正确
- ) 将程序代码转换为机器码
- ) 程序代码中如果使用其它的链接库的机器码,则链接之
- ) 产生操作系统相关信息
- ) 存储为可执行文件
链接
是把存储在链接库中的机器码存储到程序中,这样开发人员就不需要重复编写相同的程序代码,加快程序的开发速度。
链接分为:静态链接和动态链接
静态链接:
静态链接是包含给用户调用函数的集合,通常这些函数被其它程序调用的方法是,在程序编译时,把函数的执行代码写入到应用程序中。
使用ar工具生成,一般以.a作为库的文件名。
特点:
l
- 产生执行文件的体积较大
- 执行时需要较多内存空间
- 可独立使用
动态链接
编译程序时不会把链接库的机器码复制到程序中,而是存储执行文件执行时需要的哪个链接库、链接库版本等信息;当程序执行时,可根据文件中记载链接库信息,加载所需的链接库的机器码。
以“.so”作为库的文件名
特点:
- 体积较小
- 内存空间少
- 无法独立使用
查询执行文件的链接方法
- [root@noc hello]# file /bin/ls
- /bin/ls: ELF -bit LSB executable, Intel , version (SYSV), for GNU/Linux 2.6., dynamically linked (uses shared libs), for GNU/Linux 2.6., stripped
看到:
- dynamically linked:动态链接
- static linked:静态链接
查询连接到的链接库
- [root@noc hello]# ldd /usr/sbin/setup
- linux-gate.so. => (0x00323000)
- libnewt.so.0.52 => /usr/lib/libnewt.so.0.52 (0x001a4000)
- libc.so. => /lib/libc.so. (0x00686000)
- libslang.so. => /usr/lib/libslang.so. (0x001bf000)
- libm.so. => /lib/libm.so. (0x003a8000)
- /lib/ld-linux.so. (0x00178000)
- libdl.so. => /lib/libdl.so. (0x00d37000)
准备源代码编译环境
1、开源软件多使用C/C++语言开发
- 需要gcc、make等编译工具
- #gcc --version
- #g++ --version
- #make --version
- 通过yum安装“开发工具”、“开发库”包组,可解决编译环境
前提:准备开发环境(编译环境)
- 编译安装的三步骤:
- 前提:准备开发环境(编译环境)
- 安装"Development Tools"和"Development Libraries"
- RHEL5:"Development Tools"和"Development Libraries"
- RHEL6::"Development Tools"和"Compatibility Libraries "
- # tar
- # cd
- # ./configure
- --help :获取脚本的使用格式
- --prefix=/path/to/somewhere
- --sysconfdir=/PATH/TO/CONFFILE_PATH
- configure的功能:、让用户选定编译特性;、检查编译环境;
- # make
- # make install
- # tar xf tengine-1.4..tar.gz
- # cd tegnine-1.4.
- ./configure -- help | less
- # ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
- # make
- # make install
- # /usr/local/tengine/sbin/nginx
- 加入出现要依赖PCRE库的解决方法:
- a、在configure的过程中加上--without-http-rewrite_module
- b、yum install pcre-devel
- 安装软件包的时候,如果把它安装在非默认路径,要注意:
- 、修改PATH环境变量,以能够识别此程序的二进制文件路径;
- 修改/etc/profile文件
- 在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
- 、默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径:
- 在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;
- # ldconfig 通知系统重新搜寻库文件
- -v: 显示重新搜寻库的过程
- 要使用一个程序调用其它库时,都要使用include来包含这些
- 、头文件:输出给系统
- 默认:/usr/include
- 增添头文件搜寻路径,使用链接进行:
- /usr/local/tengine/include/ /usr/include/
- 两种方式:
- ln -s /usr/local/tengine/include/* /usr/include/ 或
- ln -s /usr/local/tengine/include /usr/include/tengine
- 4、man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man
- 1、man -M /PATH/TO/MAN_DIR COMMAND
- 2、在/etc/man.config中添加一条MANPATH
编译安装的基本过程
- make: 项目管理工具,能够把C程序的多个不同文件做成一个项目,并且把这个项目的编译过程通过一个配置文件来启动,这个配置文件叫makefile;
- makefile: 定义了make(gcc,g++)按何种次序去编译这些源程序文件中的源程序
- automake, --> makefile.in(半成品) --> makefile
- autoconf, --> configure
- makefile的生成
- automake:让程序的作者对自己的源程序做一个简单的定义,然后生成一个makefile的半成品(makefile.in),makefile无法跟用户交互;此时makefile.in还可以接受另外一个工具所生产的脚本(autoconf)做配置
- autoconf:给项目生成一个脚本(configure)
- configure:配置脚本如何定义
编译安装的基本过程
- 下载源码包后的安装步骤:
- 、tar解包,释放源代码至指定目录
- 、./configure配置,指定安装目录/功能模块等选项
- 、make编译,生成可执行的二进制程序文件
- 、make install安装,将编译好的文件复制到安装目录
解包
- -使用tar解包,建议释放到/usr/src目录
- -解包后位置:/usr/src软件名-版本号/
配置
-
- 使用源码目录下的configure脚本
- 执行“./configure --help”可以查看帮助
./configure --prefix=/usr/local/apache2【 --prefix安装指定路径命令】 【查看软件包里多一个Makefile文件就说明执行成功】
编译
- 执行make命令,如果编译出错,需要执行make clean再执行make
安装
- 执行 make install命令
参考:http://cnzhx.net/blog/yum-priorities/
http://www.it165.net/os/html/201409/9273.html
yum管理及源码安装的更多相关文章
- 06 swap命令,进程管理,rmp命令与yum命令,源码安装python
作业一: 1)开启Linux系统前添加一块大小为15G的SCSI硬盘 2)开启系统,右击桌面,打开终端 3)为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区,大 ...
- Linux基础--------监控系统、进程管理、软件包管理-------free、dd、kill、 rpm、yum、源码安装python
作业一:1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区 ...
- Linux基础(4)-硬盘分区、格式化及文件系统的管理、软件包的管理、yum管理RPM包和python的源码安装
一: 1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑 ...
- salt源码安装软件和yum安装软件
上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添 ...
- 源码安装Nginx以及用systemctl管理
一.源码安装Nginx: 先安装gcc编译器(安装过的可以忽略) [root@localhost ~]# yum -y install gcc gcc-c++ wget 进入src目录 [root@l ...
- [svc]salt源码安装软件和yum安装软件
上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添 ...
- linux 软件管理--yum工具及源码包
目录 linux 软件管理--yum工具及源码包 一.yum基本概述 二.yum源的配置 三.yum实践案例 四.yum全局配置文件 五.yum签名检查机制 五.制作本地yum仓库 六.构建企业级yu ...
- NFS, web,负载均衡,Nginx yum 源码安装
作业一:nginx服务1.二进制安装nginx 2.作为web服务修改配置文件 3.让配置生效,验证配置 [root@localhost ~]# systemctl stop firewalld.s ...
- 源码安装和yum安装的区别。
yum是将yum源中别人已经编译好的rpm包下载到本地,然后安装,不需要考虑依赖,主要是方便.源码安装没法人为的控制,安装的版本也很低. 源码安装需要自己编译,安装,编译过程中可以设置参数.可安装的版 ...
随机推荐
- 机器学习之路--Matplotlib
1.绘制折线图 在pandas里面有一种数据类型为datatime ,可以将不规范的日期改为:xxxx-xx-xx import pandas as pd import numpy as np a = ...
- Cent OS防火墙配置端口开放
CentOS 6内置的防火墙为iptables,Cent OS7,内置的防火墙则是firewalld iptables 防火墙设置 1.打开/关闭/重启防火墙 #开启防火墙(重启后永久生效): chk ...
- npm install 不更改 package-lock.json 文件的解决方法
package-lock.json 文件是版本锁定文件 package-lock.json 是在 `npm install` 时候生成的一份文件,用以记录当前状态下实际安装的各个 npm packag ...
- Theia APIs——命令和快捷键
上一篇:使用Theia——创建语言支持 命令和快捷键 Theia可以通过多种不同的方式进行扩展.命令允许packages提供可以被其它包调用的唯一命令,还可以向这些命令添加快捷键和上下文,使得它们只能 ...
- 基于GPS北斗卫星授时系统和NTP网络授时服务器的设计与开发
基于GPS北斗卫星授时系统和NTP网络授时服务器的设计与开发 安徽京准科技提供@请勿转载@@ 更多资料请参考——ahjzsz.com 天文观测设备对于控制系统的时间准确度有严格要求.为此,采用搭建高精 ...
- spring-boot序章:打造博客系统
blog 使用spring-boot打造一个博客系统,在项目中学习! 项目功能 文章 游览 创建 编辑 删除 评论 用户 游客 注册用户 关注 被关注 后台统计 注册用户数 在线人数 文章总数 评论总 ...
- spring boot中使用freemarker
在做Java web开发领域,web模板引擎主要有jsp.freemarker.velocity,其中freemarker是我们常用的一种,在spring boot中使用的freemarker的方法可 ...
- C# DataTable数据类型判断
当我们从数据中获取到数据,一般会使用 DataTable 接收,然后会遍历每行数据.由于从数据库中读取的数据可能为空,比如我们的编译代码如下: foreach (DataRow datarow in ...
- 《C++Primer》第五版习题详细答案--目录
作者:cosefy ps: 答案是个人学习过程的记录,仅作参考. <C++Primer>第五版习题答案目录 第一章:引用 第二章:变量和基本类型 第三章:字符串,向量和数组 第四章:表达式
- asp.net core 3.x 模块化开发之HostingStartup
我们希望将一个项目(dll)看做一个模块/插件,一个模块往往需要在应用启动时做一些初始化工作,比如向IOC容器添加一些服务,为应用配置对象添加自己的数据源:也希望在应用关闭时做一些收尾工作,asp.n ...