1、程序包对平台的适用性:任何应用程序都不能直接和硬件打交道,其功能的实现需要通过内核的系统调用完成,系统调用是一个个功能单一的函数。因为要对别人进行调用,拿人手短,因此需要遵守别人的规范,这一规范有API和ABI,他们定义了编写应用程序的规范,其中API是在语言层面上,ABI是在字节码层面。也就是说你编写的应用程序遵守这一主机的API规范就可以在此主机上运行,在linux机上,为了方便应用程序的迁移,因此制定了POSIX这一规范,就是源码级别的规范。而ABI是在字节码层面,它是在编译好的字节码级别的可跨平台性。
2、程序包的组成:一个程序包由二进制程序、库、配置文件和帮助手册这几部分组成。在centos中这几部分的存储路径如下:
二进制程序:/bin, /sbin , /usr/bin, /usr/sbin, /usr/local/bin ,/usr/local/sbin
库:/lib, lib64 ,/usr/lib ,/usr/lib64 /usr/local/lib ,/usr/local/lib64
配置文件:/etc
帮助手册:此部分包括man文件,info文件,README,INSTALL,changelog。
上面是安装时文件的位置,但是在运行时怎么让系统识别呢?比如二进制程序,我们不想每次运行时都cd到安装路径去启动程序,因此需要倒入环境变量,步骤如下:在/etc/profile.d的路径下新建一个以.sh结尾的文件,编辑文件:
PATH=/bin路径:/sbin路径:$PATH
export PATH
对于库文件也需要做同样的处理,只不过这次是在/etc/ld.so.conf.d下新建一个以.conf结尾的文件,在文件中写如库文件的路径。但是系统并不会马上识别,因为所有的库文件都被系统缓存在/etc/ld.so.cache中,要想让系统马上识别需要用ldconfig命令。
man文件也是一样,需要编辑/etc/man.config,在MANPATH下添加man文件的路径。
除此之外,还有头文件,需要在/usr/include下新建一个目录dir,然后执行如下命令,ln -sv /程序头文件路径 /usr/include/dir
3、rpm包:
rpm包的命名格式:name-version-release-arch.rpm ,其中version又分为major-minor-release,如nginx-1.8.0-9.fc23.armv7hl.rpm。
rpm包的验证:对包的验证包括完整性验证和合法性验证,其中完整性验证用校验码,合法性验证用公钥。
rpm包管理:
安装:rpm -ivh 包路径 其中i代表安装,v表示现实安装信息,h现实安装进度,如果只是想测试是否可以安装,也用--test,如果安装过程中发现存在依赖关系,而此依赖又是不重要的,可以用--nodeps忽略依赖关系。
卸载:rpm -e 包名,如果其他包依赖此包,将会把其他包一同卸载,如果不想卸载其他包,可用--nodeps忽略依赖关系。
重安装:rpm --replacepkgs 包路径,重新安装不会覆盖原配置文件,新的配置文件会以.rpmnew为后缀。
更新:rpm -U 包路径 (升级或安装),rpm -F 包路径 (升级)。
查询:rpm -q 包名,如果想查询其他附加信息,可用如下选项与-q一起连用:
-i查询某包的详细信息;-a查询所有安装的rpm包 ;-l查询某rpm包安装后生成的文件;-f查看某文件是哪个rpm包生成的;-d查询某包安装后的帮助文档;-c查询生成的配置文件;--scripts查询相关的脚本。
4、yum的使用:
yum原理:yum是基于c/s模式的,服务器端存储rpm包以及各rpm包相互依赖关系等原数据,在客户端通过本的配置查找所有可用的yum服务器。其执行步骤如下:首先根据本地配置查找yum源,将yum源中的原数据信息下载到本地,进而分析此原数据找到依赖关系,最后就执行yum相关的操作。
yum配置中的四个宏:$realeaserver redhat/centos的版本;$arch系统cpu架构;$basearch系统基本架构 ;$YUM0-9系统中定义的环境变量,可以在yum中使用
yum命令的使用:yum命令使用的格式如下yum [option] command
查询:查询中常用的命令有:
repolist:列出所有的yum仓库
list[install | all | available]列出制定的yum包。
info 包名 列出包的详细信息。
grouplist 列出所有组
groupinfo 列出组的信息
deplist 列出包的依赖信息
provides 查询某文件是由哪个包生成
安装:install
卸载:erase
更新:update
5、程序的编译安装:
编译三部曲:./configure ; make ; make install 。对于configure主要是检查安装环境,以及指定安装选项和启用的功能,对于configure我们需要查询程序包的帮助文件以明确具体选项,常用的有--prefix=安装路径 --sysconfdir=配置文件路径 enable=启用特性 disable=不启用特性 with=启用功能 without=不启用功能。对于编译中出现的依赖关系有时候是因为缺少依赖包的开发环境,此时可以用yum list 依赖包* 来查看依赖包的开发环境,再执行yum install安装即可。