1第四章安装及管理应用程序2本章结构Linux应用程序基础从源代码编译安装程序`Linux命令与应用程序的关系源代码编译概述Linux应用程序的组成RPM概述软件包的封装类型安装及管理应用程序使用rpm包管理工具使用RPM包管理命令在图形界面中管理RPM包从源代码编译安装程序的基本过程3Linux应用程序基础应用程序与系统命令的关系文件位置系统命令:一般在/bin和/sbin目录中,或为Shell内部指令应用程序:通常在/usr/bin和/usr/sbin目录中主要用途系统命令:完成对系统的基本管理工作,例如IP配置工具应用程序:完成相对独立的其他辅助任务,例如网页浏览器适用环境系统命令:一般只在字符操作界面中运行应用程序:根据实际需要,有些程序可在图形界面中运行运行格式系统命令:一般包括命令字、命令选项和命令参数应用程序:通常没有固定的执行格式4Linux应用程序基础典型应用程序的目录结构文件类型保存目录普通执行程序文件/usr/bin服务器执行程序文件和管理程序文件/usr/sbin应用程序配置文件/etc日志文件/var/log应用程序文档文件/usr/share/doc应用程序手册页文件/usr/share/man5软件包的封装类型常见的软件包封装类型封装类型说明rpm软件包扩展名为“.rpm”deb软件包扩展名为“.deb”源代码软件包一般为“.tar.gz”、“.tar.bz2”等格式的压缩包包含程序的原始代码提供安装程序的软件包在压缩包内提供install.sh、setup等安装程序或以“.bin”格式的单个执行文件提供绿色免安装的软件包在压缩包内提供已编译好的执行程序文件解开压缩包后的文件即可直接使用6RPM软件包软件素材参考:一般命名格式:bash-3.1-16.1.i386.rpmRPM包管理机制RPMPackageManager由RedHat公司提出,被众多Linux发行版所采用建立统一的数据库文件,详细记录软件包安装、卸载等变化信息,能够自动分析软件包依赖关系软件名称版本号硬件平台扩展名发布次数7RPM包管理命令——rpm主要功能1.查询RPM软件、包文件的相关信息2.安装、升级、卸载RPM软件包3.维护RPM数据库信息8查询RPM软件信息查询已安装的RPM软件信息格式:rpm-q[子选项][软件名]用法:结合不同的子选项完成不同查询-qa:查看系统中已安装的所有RPM软件包列表-qi:查看指定软件的详细信息-ql:查询指定软件包所安装的目录、文件列表-qc:仅显示指定软件包安装的配置文件-qd:仅显示指定软件包安装的文档文件查询文件/目录属于哪个RPM软件格式:rpm-qf文件或目录名9查询RPM软件信息[root@localhost~]#rpm-qbashbash-3.1-16.1[root@localhost~]#rpm-qa|grepbashbash-3.1-16.1[root@localhost~]#rpm-qf/usr/bin/vimvim-enhanced-7.0.109-3[root@localhost~]#rpm-qldhcp/etc/dhcpd.conf/etc/rc.d/init.d/dhcpd……查询是否已安装有bash软件包查询vim是由哪个软件包安装的查询dhcp软件包安装的文件列表10查询RPM软件信息查询未安装的RPM包文件格式:rpm-qp[子选项]RPM包文件用法:结合不同的子选项完成不同查询-qpi:通过.rpm包文件查看该软件的详细信息-qpl:查看.rpm安装包内所包含的目录、文件列表-qpc:查看.rpm安装包内包含的配置文件列表-qpd:查看.rpm安装包内包含的文档文件列表11查询RPM软件信息[root@localhost~]#rpm-qpilynx-2.8.5-28.1.i386.rpmwarning:lynx-2.8.5-28.1.i386.rpm:HeaderV3DSAsignature:NOKEY,keyID37017186Name:lynxRelocations:(notrelocatable)Version:2.8.5Vendor:RedHat,Inc.Release:28.1BuildDate:2006年07月13日星期四14时10分20秒……[root@localhostServer]#rpm-qpllynx-2.8.5-28.1.i386.rpm/etc/lynx-site.cfg/etc/lynx.cfg……查询lynx软件安装包的摘要信息查询lynx安装包中的文件列表12安装、升级、卸载RPM软件包安装或升级RPM软件格式:rpm[选项]RPM包文件...用法:不同选项适用于不同情况-i:安装一个新的rpm软件包-U:升级某个rpm软件,若原本未装,则进行安装-F:更新某个rpm软件,若原本未装,则放弃安装卸载指定的RPM软件格式:rpm-e软件名13安装、升级、卸载RPM软件包辅助选项--force:强制安装所指定的rpm软件包--nodeps:安装、升级或卸载软件时,忽略依赖关系-h:以“#”号显示安装的进度-v:显示安装过程中的详细信息14[root@localhost~]#rpm-qlynxlynx-2.8.5-28.1[root@localhost~]#rpm-elynx[root@localhost~]#rpm-qlynxpackagelynxisnotinstalled安装、升级、卸载RPM软件包[root@localhost~]#rpm-ivhlynx-2.8.5-28.1.i386.rpmwarning:lynx-2.8.5-28.1.i386.rpm:HeaderV3DSAsignature:NOKEY,keyID37017186Preparing...###########################################[100%]1:lynx###########################################[100%]安装lynx软件包同时显示安装进度卸载lynx软件包15安装、升级、卸载RPM软件包[root@localhost~]#rpm-iwget-1.10.2-3.2.1.i386.rpm[root@localhost~]#rpm-qwgetwget-1.10.2-3.2.1[root@mail~]#rpm-Uvh/media/cdrom/wget-1.10.2-7.el5.i386.rpmwarning:/media/cdrom/wget-1.10.2-7.el5.i386.rpm:HeaderV3DSAsignature:NOKEY,keyID37017186Preparing...###########################################[100%]1:wget###########################################[100%][root@localhost~]#rpm-qwgetwget-1.10.2-7.el5升级wget软件包16解决软件包依赖关系安装有依赖关系的多个软件时被依赖的软件包需要先安装同时指定多个.rpm包文件进行安装卸载有依赖关系的多个软件时依赖其他程序的软件包需要先卸载同时指定多个软件名进行卸载vim-commonvim-enhanced依赖于忽略依赖关系结合“--nodeps”选项,但可能导致软件异常17小结请思考:如何查询util-linux软件包安装了哪些文件?如何查询mkdir命令是由哪个RPM软件包安装的?安装.rpm软件包时,-i、-U、-F选项有何区别?如何强制卸载被其他程序依赖的软件?安装、卸载软件时忽略依赖关系有什么坏处?18维护RPM数据库当RPM数据库损坏时,需要进行数据库重建格式:rpm--rebuilddb或者rpm--initdb19在图形界面中管理RPM包图形界面中的“添加/删除软件”依赖于YUM(YellowdogUpdater,Modified)机制调用yum命令工具进行软件更新使用“添加/删除软件”工具的条件能够访问互联网中的YUM源服务器若使用默认源,需有合法的安装序列号和服务订阅号在局域网内构建本地的YUM源服务器参考《Linux实用技术阅读手册》第一章20源代码编译概述使用源代码安装软件的优点获得最新的软件版本,及时修复bug根据用户需要,灵活定制软件功能应用场合举例安装较新版本的应用程序时自由软件的最新版本大都以源码的形式最先发布当前安装的程序无法满足需要时编译安装可由用户自行修改、定制功能需要为应用程序添加新的功能时用户可以重新配置、自由修改源代码,加入新的功能21源代码编译概述Tarball封包:.tar.gz和.tar.bz2格式居多软件素材参考:校验工具计算MD5校验和,并与官方提供的值相比较,判断是否一致[root@localhost~]#md5sumaxel-1.0a.tar.gz2d94c0b36b374834567f1fcec5f89119axel-1.0a.tar.gzMD5校验和22源代码编译概述确认源代码编译环境需安装支持C/C++程序语言的编译器gcc-4.1.1-52.el5、gcc-c++-4.1.1-52.el5make-3.81-1.1.i386……[root@localhost~]#gcc--versiongcc(GCC)4.1.120070105(RedHat4.1.1-52)Copyright(C)2006FreeSoftwareFoundation,Inc.本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;包括没有适销性和某一专用目的下的适用性担保。[root@localhost~]#g++--versiong++(GCC)4.1.120070105(RedHat4.1.1-52)……23源码编译安装的基本过程解包——tar解包、释放出源代码文件配置——./configure针对当前系统、软件环境,配置好安装参数编译——make将源代码文件变为二进制的可执行程序安装——makeinstall将编译好的程序文件复制到系统中24源码编译安装的基本过程1.解包习惯上将软件包释放到/usr/src/目录解包后的源代码文件位置:/usr/src/软件名-版本号/[root@localhost~]#tarzxvfaxel-1.0a.tar.gz-C/usr/src/[root@localhost~]#ls/usr/src/axel-1.0a/APIaxelrc.exampleconfigureCREDITSguinl.potcp.caxel.1CHANGESconn.cde.pohttp.cREADMEtcp.haxel.cconf.cconn.hftp.chttp.hsearch.ctext.caxel.hconf.hCOPYINGftp.hMakefilesearch.hconfigure执行脚本用于下一步的配置README或INSTALL文件可提供安装方法25源码编译安装的基本过程2.配置需将工作目录切换到软件源码所在目录使用源码目录中的configure脚本执行“./configure--help”可以查看帮助典型的配置选项:--prefix=软件安装目录[root@localhost~]#cd/usr/src/axel-1.0a[root@localhostaxel-1.0a]#./configure--prefix=/usr/local/axel若不指定任何配置选项,将采用默认值26源码编译安装的基本过程3.编译执行make命令4.安装执行makeinstall命令[root@localhostaxel-1.0