码迷,mamicode.com
首页 > 其他好文 > 详细

程序包管理

时间:2015-07-03 23:10:56      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

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安装即可。

 

程序包管理

标签:

原文地址:http://www.cnblogs.com/Jc-zhu/p/4619773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!