1、程序包的组成:
由四部分组成:二进制格式文件、库文件、配置文件、及帮助文件。
2、程序包管理器作用:
将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载、查询、校验等管理操作。
2.1、程序包的组成清单:(每个程序包都单独实现)
文件清单
安装或卸载时运行的脚本
2.2程序包数据库(公共):数据库路径:/var/lib/rpm
存储程序包的名称和版本
各程序包之间的依赖关系
功能说明
安装生成的各文件的文件路径及校验码信息
3、项目构建工具:
用来解决哪些源文件先编译,哪些库文件先编译,源文件和库文件的依赖关系。
c、c++:程序包项目构建工具:make
java:程序包项目构建工具:maven
4、源代码程序名字格式:
name-version.tar.gz
version:major.minor.release //主版本号.次版本号.发行号
4.1、rpm程序包名字格式:
name-version-release.os.arch.rpm
version:源代码命名格式;version:major.minor.release //主版本号.次版本号.发行号
release.arch:打包后的命名格式,即rpm包的发行号,arch为适用的平台。
arch平台:i386、x64/amd64、ppc、noarch(平台无关,如java)
rpm包拆包:主包和分支包
主包命名:name-version-release.arch.rpm
分支包命名:name-function-version-release.arch.rpm //function为分支包功能说明。
如:
anaconda-21.48.22.121-1.el7.centos.x86_64.rpm anaconda-core-21.48.22.121-1.el7.centos.x86_64.rpm anaconda-dracut-21.48.22.121-1.el7.centos.x86_64.rpm
5、包依赖关系解决:
所谓包依赖就是安装a程序包时需要先安装b程序包,linux前端工具可以自动解决这种依赖关系。
centos前端工具:yum
debian前端工具:apt-get
suse前端工具:zypper
6、程序包获取途径:
①系统发行版光盘或官方的文件服务器(或镜像站点)
http://mirrors.aliyun.com/
②项目的官方站点
③第三方组织制作的rpm包
EPEL站点
搜索引擎:http://rpmfind.net/
④自己制作rpm包
建议:检查程序包来源合法性和完整性。
7、
centos上rpm命令 rpm格式: rpm [options] [package_file] options: -i,--install : 安装 -U,--upgrade:升级或安装,有没有老版本都可以,若安装则升级,若没安装则安装 -F,--freshen:升级,仅能升级,如果没有老版本,则不升级 -e,--erase:卸载, -q,--query:查询 -V,--verify:校验 --builddb,--initdb:数据库维护 通用options: -v:输出详细信息 -vv:输出更详细信息 |
7.1、rpm程序包安装 rpm {-i|--install} [install-options] PACKAGE_FILE ... [install-options] -h,--hash:hash marks输出进度条,每个#表示2%的进度 --test:只检测包的冲突性,但不安装,检测包依赖关系。 如: [root@localhost Packages]# rpm -ivh --test zziplib-utils-0.13.62-5.el7.x86_64.rpm error: Failed dependencies: libzzip-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64 libzzipfseeko-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64 libzzipmmapped-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64 zziplib(x86-64) = 0.13.62-5.el7 is needed by zziplib-utils-0.13.62-5.el7.x86_64 [root@localhost Packages]# --nodeps:忽略包依赖关系安装,但是不能保证安装后可以正常使用,不建议用此选项。 --replacepkgs:重新安装程序包,注意:此选项不能替换配置文件 --noscripts:安装不执行任何脚本 注意:rpm可以自带脚本,有四类,如下: preinstall:安装过程开始之前运行的脚本;%pre postinstall:安装过程完成之后运行的脚本;%post preuninstall:卸载过程真正开始执行之前运行的脚本;%preun postuninstall:卸载过程之后运行的脚本;%postum --nopre:不运行安装过程开始之前运行的脚本 --nopost:不运行安装完成后运行的脚本 --nopreun:不运行卸载过程开始之前运行的脚本 --nopstun:不运行卸载完成之后运行的脚本 --nosignature:不检查包签名信息,不检查来源合法性 --nodigest:不检查包完成性 |
7.2、rpm程序包升级 rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... -U和-F的区别: -U:不依赖是否安装老版本,若没安装,则进行安装,若安装,则对其进行升级 -F:依赖老版本升级,没有老版本则不升级 [install-options] --nodeps:忽略包依赖关系 --test:仅测试升级,不升级 --oldpackage:降级安装 --force:强制升级 注意:不要对内核版本做升级(不建议直接升级);linux支持多内核版本并存,因此,直接安装新版本内核 如果某原程序包的配置文件安装后曾做过修改,升级时新版本的程序同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名为FILENAME.rpmnew后提供。 |
7.3、rpm程序包卸载: rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... 注意:rpm包安装、升级时提供的都是包文件的具体路径名(PACKAGE_FILE),查询、卸载时只需要提供包名即可(PACKAGE_NAME)。 如: [root@localhost Packages]# rpm -ivh zsh-5.0.2-25.el7.x86_64.rpm Preparing... ################################# [100%] package zsh-5.0.2-25.el7.x86_64 is already installed [root@localhost Packages]# rpm -evh zsh Preparing... ################################# [100%] Cleaning up / removing... 1:zsh-5.0.2-25.el7 ################################# [100%] [root@localhost Packages]# --allmatches:卸载所有匹配指定名称的程序包的各版本 --nodeps:忽略包之间的依赖关系 --test:仅测试卸载,但不做真正意义上的卸载。 |
7.4、rpm程序包查询: rpm {-q|--query} [select-options] [query-options] 此处的[select-options]作用是挑选哪些包查询,[query-options]查询指定包的哪些特性 [select-options]: PACKAGE_NAME:查询指定的程序包是否已安装,以及安装的版本; -a或--all:查询所有已安装的包;可以和grep PATTERN一起组合使用 -f FILE_PATH:查询指定的文件由哪个程序包安装生成,注意由于是指定的文件,因此要给出文件具体路径信息 如: [root@localhost Packages]# rpm -qf /bin/zsh zsh-5.0.2-25.el7.x86_64 [root@localhost Packages]# -g或--group:查询包组中安装了哪些程序包 --whatprovides CAPABILITY: 查询指定的CAPBILITY由哪个程序包提供 --whatrequires CAPBILITY:查询指定的CAPBILITY被哪个包所依赖 -p或--package:对未安装的程序包执行查询操作,以上rpm -q的[select-options]可以和p组合使用 [query-options]: --changelog:查询rpm包的changelog(历史改变日志),注意是rpm包,不是源程序包 如:[root@localhost Packages]# rpm -q --changelog zsh -l或--list:查询程序包安装生成的所有文件列表,二进制文件、配置文件、库文件、帮助文件 -i或--info:查询程序包的相关信息,版本号、大小、所属的包组等 如:[root@localhost Packages]# rpm -qi zsh -c或--configfiles:查询指定程序提供的配置文件信息 如:[root@localhost Packages]# rpm -qc zsh -d或--docfiles:查询指定的程序包提供的文档信息 如:[root@localhost Packages]# rpm -qd zsh --provides:列出指定程序包提供的所有CAPBILITY 如: [root@localhost Packages]# rpm -q --provides zsh config(zsh) = 5.0.2-25.el7 zsh = 5.0.2-25.el7 zsh(x86-64) = 5.0.2-25.el7 [root@localhost Packages]# -R或--requires:查询指定的程序包的依赖关系 如:[root@localhost Packages]# rpm -q -R zsh |less --scripts:查询指定程序包自带的脚本片段 rpm -q常用用法小结: -qi PACKAGE、-qf PACKAGE、-qc PACKAGE、-ql PACKAGE、-qd PACKAGE //只需指定程序包名称即可 -qpl PACKAGE_FILE、-qpi PACKAGE_FILE、-qpc PACKAGE_FILE //需指定文件路径 |
7.5、rpm程序包校验: 校验的作用:检验安装的程序包是否发生了变化。 7.5.1、包来源合法性验证和完整性验证: 来源合法性验证: 数字签名:用自己的私钥去签名,用公钥去比对,是否一致。 签名实现方法:①、加密者使用单向加密算法去加密程序包提取的校验码(特征码),定长输出;②然后用私钥去加密特征码,此即为数字签名,并将特征码附加在程序包后面。 使用验证来源合法性:用加密者的公钥去解密特征码,若可以解密,则说明是加密者本人加密的,验证了来源合法。 完整性验证: 使用者和加密者使用相同的加密算法去解密、加密程序包,也得到一段特征码,将此特征码与公钥解密的特征码进行比较,如果一致,则说明程序包未改变,完整性得到了验证。 7.5.2、光盘中公钥的位置: 一般挂载光盘后,会在挂载点里看到:RPM-GPG-KEY-CentOS-7 注意:系统安装时,也会存储秘钥:存储位置:/etc/pki/rpm-gpg/ [root@localhost media]# cd /etc/pki/rpm-gpg/ [root@localhost rpm-gpg]# ls RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Debug-7 RPM-GPG-KEY-CentOS-Testing-7 [root@localhost rpm-gpg]# 7.5.3、导入秘钥 [root@localhost media]# rpm --import /media/RPM-GPG-KEY-CentOS-7 手动做公钥认证: [root@localhost Packages]# rpm -K zsh-5.0.2-25.el7.x86_64.rpm zsh-5.0.2-25.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK [root@localhost Packages]# 7.5.4、验证: ①安装此组织签名的程序时,会自动执行验证 ②手动验证:rpm -K PACKAGE_FILE 7.5.5、验证命令用法 rpm {-V|--verify} [select-options] [verify-options] |
7.6、rpm程序包数据库重建: rpm程序包数据库的位置:/var/lib/rpm [root@localhost rpm]# ls /var/lib/rpm Basenames __db.002 Group Obsoletename Requirename Triggername Conflictname __db.003 Installtid Packages Sha1header __db.001 Dirnames Name Providename Sigmd5 [root@localhost rpm]# 注意:rpm程序包的查询操作是基于此处的数据库(/var/lib/rpm目录下)进行的。 7.6.1、获取重建帮助 centos6:man rpm centos7:man rpmdb 7.6.1、centos7重建数据库 rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] [--root DIRECTORY] --initdb:初始化数据库,当前无任何数据库可实现初始化,创建一个新的,当前有时不执行任何操作 --rebuilddb:重新构建数据库,通过读取当前系统上所有已安装过的程序包进行重新创建。 |
8、rpm程序包管理(2)--程序包前端工具yum 前端管理工具实现介绍: 程序包前端管理是用来自动解决依赖关系,并自动安装有依赖关系的程序包。它有两部分组成:yum仓库和yum工具客户端。 所谓yum仓库就是将所有的文件放在一个共享文件夹或目录中,它可以是远程端的也可以是本地端的,然后对此文件夹或目录进行提取包相关简要信息--元文件信息(如名称、依赖等);客户端通过定义仓库的位置,下载元文件定义的软件信息,进行自动解决软件之间的依赖下载并进行安装。 centos前端管理工具:yum 可以将其看成一个c/s架构的程序 yum:yellow dog,yellowdog update modify yum repository:简写成yum repo,yum仓库,存储了众多的rpm包,以及包的相关元数据文件(放置于特定目录下:repodata) |
8.1、yum工具安装程序包的前提条件: ①本地主机有yum工具,可以通过rpm -q yum来进行查看 ②要有yum仓库的配置,yum仓库的作用就是定义到哪里去下载程序包软件 ③远方的yum仓库或者本地的yum仓库要存在,yum仓库的访问方式可以http、ftp、file三种方式中的一种。 注意:yum仓库不是用来替代rpm程序包管理工具的,它只是rpm包的前端管理工具,yum依赖于rpm工具。 |
8.2、yum仓库制作: 可以通过命令:createrepo来完成。 careaterepo分析指定的仓库下有哪些程序包,各程序包之间的依赖关系及元文件的特征码信息。 注意:createrepo不是完美的,下一个替代解决方案是dnf工具,createrepo创建高级仓库有限制,如创建一个yum仓库程序包组。 |
8.3、yum仓库类别: 远方yum仓库: nfs:// 本地yum仓库: |
8.4、查看yum工具是否安装 [root@localhost rpm]# rpm -q yum //查看是否安装yum工具 yum-3.4.3-150.el7.centos.noarch [root@localhost rpm]# rpm -qc yum //查看yum程序的配置文件 /etc/logrotate.d/yum /etc/yum.conf //yum的主配置文件,为所有yum仓库提供公共配置,/etc/yum.repos.d/*.repo为自定义仓库配置 /etc/yum/version-groups.conf [root@localhost rpm]# |
8.5、yum仓库配置文件帮助: [root@localhost rpm]# whatis yum.conf yum.conf (5) - Configuration file for yum(8). [root@localhost rpm]# whereis yum.conf yum: /usr/bin/yum /etc/yum /etc/yum.conf /usr/share/man/man8/yum.8 |
8.6、yum仓库的定义: 查看yum仓库: [root@localhost yum.repos.d]# yum repolist 8.6.1、yum仓库公共配置(/etc/yum.conf ),一般不需要更改此处配置 [main] //仓库ID,需要唯一标识 cachedir=/var/cache/yum/$basearch/$releasever //缓存元文件、程序包路径 keepcache=0 //不缓存 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 //gpg检查 plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release 8.6.2、自定义仓库配置 [RepositoryID] //仓库ID,不可以重复 name=CentOS-$releasever - Base //仓库名字信息 #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra //仓库baseusrl列表信息,和baseurl互斥 baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ //定义仓库的地址 http://mirror.aliyum.com/centos/x86_64/repoate //多个仓库地址时按此种方式书写 gpgcheck={1|0} //定义是否启用包来源合法性及完整性检查 enabled={1|0} //定义是否启动仓库,默认启用 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 //定义gpgkey秘钥文件路径 enablegroup={1|0} //是否启用组来批量管理程序包,默认启用 failovermethod={roundrobin |priority} //定义当多个url时怎么选路径,roundrobin为轮询 ,priority为优先级,默认为轮询方式 keeplive={1|0} cost=1000 //开销,默认为1000 注意:repodata所在路径,应是yum仓库的路径,即baseurl路径 8.6.3:yum配置文件中的可用变量介绍: $releasever:当前os的发行版的主版本号 &arch:平台版本,如i386,x86_64 $basearch:基础平台版本号,32位、64位 $YUM0-YUM9:10个自定义的变量,如果需要可以定义。 8.6.4、创建yum仓库----使用createrepo命令 (跳过此节,看完8.8节更易理解) 注意:首先要确定createrepo工具存在,如不存在,则需要安装(yum install -y createrepo) 命令格式 createrepo [options] <directory> |
8.7、yum命令使用: yum [options] [command] [package ...] [command] * install package1 [package2] [...] * update [package1] [package2] [...] * update-to [package1] [package2] [...] * update-minimal [package1] [package2] [...] * check-update * upgrade [package1] [package2] [...] * upgrade-to [package1] [package2] [...] * distribution-synchronization [package1] [package2] [...] * remove | erase package1 [package2] [...] * autoremove [package1] [...] * list [...] * info [...] * provides | whatprovides feature1 [feature2] [...] * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] * makecache [fast] * groups [...] * search string1 [string2] [...] * shell [filename] * resolvedep dep1 [dep2] [...] (maintained for legacy reasons only - use repoquery or yum provides) * localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) * localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) * reinstall package1 [package2] [...] * downgrade package1 [package2] [...] * deplist package1 [package2] [...] * repolist [all|enabled|disabled] * repoinfo [all|enabled|disabled] * repository-packages <enabled-repoid> <install|remove|remove-or-rein‐stall|remove-or-distribution-synchronization> [package2] [...] * version [ all | installed | available | group-* | nogroups* | grouplist |groupinfo ] * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] * load-transaction [txfile] * updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates |exclude-all | check-running-kernel] * fssnapshot [summary | list | have-space | create | delete] * fs [filters | refilter | refilter-cleanup | du] * check * help [command] |
8.7.1、显示仓库列表、仓库信息、仓库中的程序包 repolist [all|enabled|disabled] //显示有哪些仓库,可以显示所有的、启用的、禁用的;默认是enabled 如:[root@localhost Packages]# yum repolist repoinfo [all|enabled|disabled] //显示仓库的信息 list [...] //显示仓库中有哪些程序包 yum list [all | glob_exp1] [glob_exp2] [...] //列出已安装的所有包,或过滤指定的包 yum list available [glob_exp1] [...] //列出可用的程序包,尚未安装的包 yum list updates [glob_exp1] [...] //列出可用升级包 yum list installed [glob_exp1] [...] //列出已安装的程序包 yum list extras [glob_exp1] [...] //列出额外的程序包 如: [root@localhost yum.repos.d]# yum list | less Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn Installed Packages GeoIP.x86_64 1.5.0-11.el7 @anaconda //@anaconda表示安装系统时安装的包 389-ds-base-snmp.x86_64 1.3.5.10-21.el7_3 updates //可升级安装的包 ElectricFence.i686 2.2.2-39.el7 base //基础包 WALinuxAgent.noarch 2.2.14-1.el7 extras //额外的包 |
8.7.2、安装程序包:只需提供包名即可 ;rpm -i,需提供文件路径 install package1 [package2] [...] //安装程序包 reinstall package1 [package2] [...] //重新安装程序包 注意:如果一个程序包有多个版本,可以安装指定的版本。 |
8.7.3、升级程序包: rpm -U | -F update [package1] [package2] [...] //升级指定程序包 update-to [package1] [package2] [...] //当有多个版本时,可以指定升级到哪个版本 update-minimal [package1] [package2] [...] //升级到离当前版本最近的版本 降级程序包: downgrade package1 [package2] [...] |
8.7.4、检查有哪些升级包可用: check-update |
8.7.5、卸载程序包: rpm {-e | --erase} remove | erase package1 [package2] [...] 注意:下载程序包时,那么依赖于此程序的包也会被卸载。如:安装gcc时依赖cpp,那么卸载cpp,gcc也会被卸载掉。 |
8.7.6、查看程序包信息:类似rpm -qi info [...] |
8.7.7、查看程序由哪个程序包提供;类似 rpm -q --provides provides | whatprovides feature1 [feature2] [...] |
8.7.8、清空本地缓存:元数据和程序包会缓存到本地,但是安装后,只会删除程序包 clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] |
8.7.9、创建缓存 makecache [fast] 如: [root@localhost ~]# yum makecache Loaded plugins: fastestmirror, langpacks base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/2): extras/7/x86_64/prestodelta | 51 kB 00:00:00 (2/2): extras/7/x86_64/other_db | 87 kB 00:00:00 Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn Metadata Cache Created [root@localhost ~]# |
8.7.10、搜索仓库中的程序包(模糊匹配),以指定关键字搜索程序包及summary信息; search string1 [string2] [...] |
8.7.11、显示程序包的依赖关系:显示所依赖的程序包以及由哪个程序提供 deplist package1 [package2] [...] |
8.7.12、查看rpm程序包的db信息 version [ all | installed | available | group-* | nogroups* | grouplist |groupinfo ] |
8.7.13、查看yum事物历史信息(只会在安装、修改、卸载时产生,查询不会) history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] |
8.7.14、安装及升级本地程序包:当程序包不在仓库中时,可以使用此种方法 localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) |
8.7.15、包组管理的相关命令: group install group list group remove group info group update |
8.7.16、
每个发行版的软件包里都有repodata,因此可以定义本地光盘为yum安装源,步骤如下:
1、[root@localhost ~]# mount /dev/cdrom /media/
mount: /dev/sr0 is write-protected, mounting read-only
2、[root@localhost ~]# cd /media/ //进入cdrom光盘会看到一个repodata文件,此文件所在目录即为仓库所在目录
[root@localhost media]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@localhost media]#
3、[root@localhost media]# cd /etc/yum.repos.d/ //在此目录下创建一个仓库配置文件
[root@localhost yum.repos.d]# vim local.repo
[localrepo]
name="this is a local repo"
baseurl=file:///media/
enabled=1
gpgcheck=0
8.8、yum命令使用:
yum [options] [command] [package ...]
[options]:
--nogpgcheck //不做gpgcheck检查
-y:自动回复为yes
-q:静默模式执行
--disablerepo=repoidglob:临时禁用配置文件中此处指定的repo配置文件
--enablerepo=repoidglob
--noplugins:禁用所有插件
9、程序包的编译安装
源代码程序需要经过预处理--->编译--->汇编--->链接--->执行,完成二进制文件的制作。此时用rpm工具可以安装,如果是源代码的程序则需要对其进行编译安装。
步骤如下:(c、c++借助项目管理工具make进行编译安装)
项目管理工具的作用:
解决多文件之间的依赖关系。
自动解决从源代码--->预处理--->编译--->汇编--->链接--->执行。
项目管理工具make的作用:
make借助makefile文件(他是make的配置文件)来进行编译安装。
makefile文件是由makefile.in模板文件生成的
configure文件会指定编译的相关参数,然后结合makefile.in文件,生成makefile文件
9.1、编译安装的三步骤:
①、 ./configure //作用是:通过选项传递用户指定的参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile文件;检查依赖到的外部环境,注意如果./configure错误,则无法执行下一步make操作。
②、make //根据makefile文件,构建应用程序
③、make install //将程序的四种组成文件复制到./configure指定的路径参数下。
注意:项目构建工具可生成configure脚本和makefile.in文件,但是不是必须的,项目构建工具生成的上述两个文件依赖开发工具:autoconf和automake
autoconf:生成configure脚本文件
automake:生成makefile.in文件
建议:安装前查看INSTALL文件或README文件。
9.2、开源程序的获取途径:
官方自建站点:如maridb.org、apache.org
代码托管站点:
9.3、编译安装c、c++程序
编译安装c、c++源代码的前提条件:
开发工具:make、 gcc
开发环境:开发库、以及头文件要存在、glibc(c代码的标准库)
通过包组提供开发组件:
centos6:development tools、server platform development
centos7:development tools
9.4、编译安装源代码步骤:
①、configure脚本:
选项:指定安装位置,指定启用的特性(注意:不同源代码选项可能不一样)
--help:获取其支持的选项
选项分类:
安装路径设定:指定安装路径的好处是便于软件卸载。
--prefix=/PATH/TO/SOMEWHERE :指定默认安装位置,如果不指定路径,则在当前路径下(/usr/local)创建:创建etc目录放置配置文件、创建bin目录放置二进制文件、创建lib目录放置库文件;
--sysconfdir=/PATH/TO/SOMEWHERE :配置文件的安装位置
system types:指明编译时的平台是什么,交叉编译时会用到
optional feature:可选特性
--disable-FEATURE:禁用某特性
--enable-FEATURE[=ARG]:启用某特性
optional packages:可选包
--with-PACKAGE[=ARG]
--without-PACKAGE
②、make
③、make install
9.5、安装源代码程序后的后续配置
①、导出二进制程序目录至PATH环境中:
编译文件:/etc/profiled/NAME.sh 在里面输入如下语句:
export PATH=/PATH/TO/BIN:$PATH
然后重读下文件。
②、导出库文件路径:
编译/etc/ld.so.conf.d/NAME.conf在里面输入,如下:
/usr/local/apache/lib
添加新的库文件所在目录至此文件中。
③、导出头文件:
创建链接:可以导出整个目录为一个链接文件,也可以为每个文件单独导出链接。
基于符号链接文件实现:ln -sv
④、导出帮助文件:
编译:/etc/man.config 添加手册所在路径即可,如下:
MANPATH=....
10、编译安装示例:安装apache2.2
①、下载源码程序包:
[root@localhost tmp]# wget http://mirrors.sohu.com/apache/httpd-2.2.34.tar.bz2
②、解压文件
[root@localhost tmp]# tar -xjvf httpd-2.2.34.tar.bz2
并进入目录:
[root@localhost tmp]# cd httpd-2.2.34/
[root@localhost httpd-2.2.34]# ls
ABOUT_APACHE config.layout httpd.spec LICENSE README.platforms
acinclude.m4 configure include Makefile.in README-win32.txt
Apache.dsw configure.in INSTALL Makefile.win ROADMAP
build docs InstallBin.dsp modules server
BuildAll.dsp emacs-style LAYOUT NOTICE srclib
BuildBin.dsp httpd.dep libhttpd.dep NWGNUmakefile support
buildconf httpd.dsp libhttpd.dsp os test
CHANGES httpd.mak libhttpd.mak README VERSIONING
[root@localhost httpd-2.2.34]#
③、编译安装参数./configure
[root@localhost httpd-2.2.34]# ./configure --help //获取编译参数帮助
定义参数:为了便于卸载,建议指定安装目录
[root@localhost httpd-2.2.34]# ./configure --prefix=/usr/local/apache
④、构建应用程序
[root@localhost httpd-2.2.34]# make
⑤、安装应用程序,即将程序组成各文件复制至相应目录下
[root@localhost httpd-2.2.34]# make install