您的位置:首页 > 运维架构 > Linux

linux学习之-linux软件包管理

2016-05-29 22:32 453 查看
linux程序包管理(rpm、yum、及源码编译安装)

       首先源码程序命名规范ame-version.tar.{gz|bz2|xz} ,如nginx-1.11.0.tar.gz,其中:nginx为程序名称,主版本号(major)为1.次版本号(minor)为11.发行号(release)为0。

       rpm版本号命名规范name-version-release.arch.rpm,如:httpd-2.4.6-17.el7.x86_64,其中httpd为程序名,2.4.6版本号,17为发行号(release),el7(Redhat Enterprise linux 7),x86_64为平台架构(noarch,通用平台软件)。

        软件包管理所需功能,打包、安装、查询、升级、卸载、校验、数据管理。

       软件包如果很大,有很多功能,比如有10个功能,在很多时候常用的只有6个功能,则需要对包进行分解,即主包和支包(不是很确切),那么我们就可以选择性的安装,避免浪费系统资源,如:

httpd.x86_64                主包               

httpd-tools.x86_64      支包            

httpd-devel.x86_64     支包                 

httpd-manual.noarch   支包

 一、rpm (Red Hat Package Manager)软件包安装管理器:

1,安装时常用options   -i |--install 安装应用程序,-V | --verify验证程序包,-h|--hash 以#显示安装进度, -ivh  --replacepkgs 重新安装,同时原来的配置文件不会被删除(但在生产环境请注意备份),新的配置文件以.confnew生成。

2,移除RPM包或卸载软件,常用options   -e |erase 清除软件。

3,测试安装常用options    --test 测试安装。

4,在安装过程中有些软件包安装需要依赖其他软件包,如果忽略其他依赖关系使用 --nodeps 选项

5,在升级软件时需要使用 -U | --upgrade(升级或安装软件) 或 -F |--freshen (只能升级使用),如果在升级过程中报错可使用--force强行升级。

6,查询软件包的信息,使用-q (query),-qa 显示所有与之匹配的安装包,如查询 httpd是否被安装,则使用rpm -qa http* 或rpm -qa | grep “^http*”

7,查询软件包信息可以使用 -qi ,如:

[root@localhost ~]# rpm -qi httpd

Name        : httpd     名称

Version     : 2.4.6     版本号

Release     : 17.el7  次版本号

Architecture: x86_64  平台架构

Install Date: Sun 29 May 2016 07:59:36 AM EDT 安装时间

Group       : System Environment/Daemons

Size        : 3863865

License     : ASL 2.0

Signature   : RSA/SHA256, Tue 01 Apr 2014 01:54:28 PM EDT, Key ID 199e2f91fd431d51  数字签名

Source RPM  : httpd-2.4.6-17.el7.src.rpm   RMP源码包

Build Date  : Thu 20 Mar 2014 07:17:12 AM EDT 编译日期

Build Host  : x86-024.build.eng.bos.redhat.com  编译主机名

Relocations : (not relocatable)

Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>  打包人

Vendor      : Red Hat, Inc. 

URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server

Description :

The Apache HTTP Server is a powerful, efficient, and extensible

web server

8,由文件查询由哪个安装包生成的使用options  -f  如:rpm -qf  /etc/yum.conf   ,同时使用-l 可以查询软件包所有生成的目录,如:rpm -ql httpd。

9,在实际的生成环境中,不要安装来路不明的软件包,如果觉得哪个软件包被修改过,可使用-V来查看校验的信息,如果无返回信息则没有被修改,如果有返回信息,格式如下:rpm -V package_Name ,  S file Size differs  大小, M Mode differs (includes permissions and file type) 头文件,5 digest (formerly MD5 sum) differs MD5,D
Device major/minor number mismatch   ,L readLink(2) path mismatch, U User ownership differs 属主, G Group ownership differs 属组,T mTime differs 修改时间, P caPabilities differ 能力改变了。

10,rpm数据库,主要记录了很多信息,数据库位置在/var/lib/rpm/* ,如果数据出现损坏,有以下两个 optios     -initdb (如果没有则初始化一个数据库),-rebuilddb(重建现有数据),如下图:



11,导入公钥验证文件:--import    /path/to/gpg-key-file,验证-K  ,--checksig,--nosigeature:不检查来源合法性,--nodigest:不检查包完整性。

二、yum 软件包管理

yum(Yellow dog Updater, Modified),主要是是解决软件包在安装过程中出现的依赖关系。
yum的主配置文件是/etc/yum.conf,yum仓库的配置文件在/etc/yum.repo.d/*所有以*.repo的文件。
yum配置文件的格式如下:
[repo_id]
name=string
baseurl=仓库访问路径(http:// | ftp://  | file:// )
enable=[0,1]1表示启用,0表示不启用。
gpgcheck=[0,1]1表示启用,0表示不启用。
gpgkey=公钥地址,(也可以是本地key文件,服务器路径)
cost=1000(默认)仓库开销,主要是多个repo仓库时优先选择值越小的仓库
yum常用命令如下:
repolist 仓库列表,{all | enabled | disabled}  默认列出启用的的仓库。
list 列出yum软件包{ all  | installed(已安装的) |available(可用的) }
grouplist 列出所有软件包组
clean 清理缓存{all 清理所有信息| packages(清理包)|metadata(清理元数据)|expire-cahce(清理过期缓存)|rpmdb(清理rpm数据)|plugins}
install 安装软件包-y(安装过程中使用yes),如安装httpd:yum install httpd -y
reinstall 重新安装包,check-update检查包更新,update 更新软件,downgrade降级软件,erase |remove 删除软件,history 查看yum命令历史纪录
groupinstall 安装包组 -y (安装过程中使用yes)如安装图形界面:yum groupinstall “Server with GUI” -y
info 查看包信息,如查看python-dateutil包信息 yum info python-dateutil
--nogpgcheck 手动禁止检查包的完整性,whatprovides |provides 查看报提供者信息
三、yum仓库创建。
服务端配置:首先要搭建FTP或http文件服务器,将包放在文件服务器上,使用createrepo  + 软件包所在路径,在文件服务器上创建yum仓库repodata,启动httpd服务。
客户端配置,参照《yum配置文件的格式》进行配置,测试yum
repolist | list 是否能够发现软包列表。
四、程序包之编译安装。
首先下载程序源代码,一般以name-version-tar.[gz|
xz|bz2],用tar xf filename 解压,cd到解压目录执行 ./configure  (可先使用--help或查看安装文档),之后使用make命令进行编译,使用make install 进行安装。
configure 通用参数,--prefix=安装路径
 --sysconfigdir=配置文件路径,制定启用或禁用某些特性,--enable-feature  如:--enable-fpm --disable-feature如:--disable-socket,指定某些依赖的工程、程序、文件,--with-function  --without-function
二进制程序访问方法,创建/etc/profile.d/filename.sh ,编辑filename.sh,增加 :
  PATH=二进制程序路径:$PATH  
  export  PATH
保存后退出,并重新读取环境变量, source  /etc/profile.d/filename.sh

二进制lib库调用路径增加,创建 /etc/ld.so.conf.d/filename.so
,编辑filename.so 增加软件lib库绝对路径,使用ldconfig 重新生成库文件软件路径。
二进制程序头文件调用,ln  -sv /软件绝对路径/include
  /usr/include/filename
添加man文档,编辑/etc/man.conf 添加 “ MAN 软件文档绝对路径” ,保存退出即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: