一、软件包组成:
软件包组成:(二进制程序、库文件、配置文件、帮助文件)
二进制程序文件:
存放路径:/bin;/sbin;/usr/bin;/usr/sbin;/usr/local/bin;/usr/local/sbin;
/bin;/sbin:系统自身启动需要的二进制文件;
/usr/sbin;/usr/local/bin:系统启动后完成基本管理需要的二进制文件;
/usr/local/bin;/usr/local/sbin:第三方管理需要的二进制文件;
库文件:(也是可执行文件,但不能独立执行,需要调用执行)在程序中通常称为函数;
存放路径:/lib;/usr/lib;/usr/local/lib;
库文件分类:静态库(以.a结尾的文件)、动态库(以.so结尾的文件)
库文件配置路径:/etc/ld.so.conf;/etc/ld.so.conf.d/*.conf
配置文件:
存放路径:/etc
帮助文件:
帮助文件分类:手册(/usr/share/man);README;INSTALL;通常后两个都放在/usr/share/doc,
man的配置文件在/etc/man_db.conf(定义man去哪里找帮助文件)
二、linux程序包管理工具:
包管理工具应包含:文件清单、文件存放位置、软件功能说明、依赖关系(依赖其他程序包)
程序包管理工具数据库:追踪软件安装位置,便于卸载操作
软件包前端管理工具会自动查找、解决软件包之间的依赖关系,然后安装需要的软件包。
Debian :dpt;apt-get(软件包前端管理工具)
Redhat:rpm;yum(软件包前端管理工具)
suse:rpm
软件包安装方法:包管理工具安装、源代码编译安装、软件包管理器前端工具、通用二进制格式;
包管理工具安装:rpm实现的功能:打包、安装、查询、升级、校验、卸载等;
编译安装:将源代码编译成二进制格式文件;需提供环境(如:编译器:gcc,g++;库文件),
由于编译安装只能手动进行安装,为了方便管理(卸载、升级),一般安装到特定的文中,带来的问题:如找不到二进制文件执行(因为在环境变量中没有定义)、找不到库文件、找不到帮助手册(可以通过修改配置文件或使用命令:man -M /path来指定帮助文件路径)、头文件路径(/usr/include)。
三、软件包及源程序命名:
1、源程序命名:
name-version.tar.{gz | bz2 | xz} (包名-版本号.后缀名)
其中的版本号组成:major.minor.release (主版本号.次版本号.发行号);主版本号一般是程序的重大改变,次版本号一般是程序部分功能发生改变,发型号一般是是bug修复,一次升级时要查看相应版本号。
如:bash-4.3.1.tar.xz
2、rpm包命名:
name-version-release.arch.rpm (包名-源程序版本号-打包版本号.平台.rpm;平台指主机架构如:i686,x86_64,amd64,ppc,noarch(表示与平台无关)) 此处的release是发行者打包的管理号,可能还包括所适用的操作系统(如:centos6);
而version也包含major.minor.release (主版本号.次版本号.发行号),解释同源程序的release;
如:bash-4.3.2-5.e16.x86_64.rpm 包名.源程序版本号.打包版本号及适用操作系统.平台.rpm
3、rpm分包命名:将某些功能做成独立的包,需要此功能才安装。
主包包名-分包包名--version-release.arch.rpm 一般分包会依赖于主包,也就是说安装分包必须安装主包;
主包:核心包;bind
分包:支包;bind-chroot
如:bind-chroot
4、程序包位置:
一般放在packet下
四、软件包获取及验证软件包:
红帽软件包第三方平台:epel,现在由fedora来维护;因此又叫fedroa-epel:
rpm包验证机制:来源合法性、包的完整性;
gpg pgp:
redhat系列官方公钥存放位置:
[[email protected] ~]# ls /etc/pki/rpm-gpg/ //显示公钥文件
RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Debug-7 RPM-GPG-KEY-CentOS-Testing-7
[[email protected] ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 //导入公钥
[[email protected] ~]# rpm -K zziplib-utils-0.13.62-5.el7.x86_64.rpm //验证包来源合法
zziplib-utils-0.13.62-5.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
五、rpm安装、卸载、
INSTALLING, UPGRADING, AND REMOVING PACKAGES:
1、rpm安装: 要指定安装文件的路径(从哪个文件安装)
rpm {-i|--install} [install-options] PACKAGE_FILE ...
install-options:
-v:显示详细信息;
-vv:显示更详细信息;
-h:以#号显示安装进度,一个#表示2%的进度
--nodeps:忽略依赖关系;注意:忽略依赖关系可能能安装软件包,但安装后不一定能正常使用;
--test:仅测试安装,但不安装
--replacepkgs:重新安装软件包,替换已安装包的所有文件;
常用组合:-ivh
如:
[[email protected] ~]# rpm -ivh /cdrom/Packages/zsh-5.0.2-14.el7.x86_64.rpm
[[email protected] ~]# rpm -ivh 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
[[email protected] ~]# rpm -ivh /cdrom/Packages/
注意:rpm安装包不会自动安装依赖的包;
[[email protected] ~]# rpm -ivh --replacepkgs /cdrom/Packages/zsh-5.0.2-14.el7.x86_64.rpm
2、rpm卸载:卸载只需要指包名;
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
--nodeps:忽略依赖关系;
--test:测试卸载
如:
注意:在安装或卸载的时候,如果有写文件做了改动,rpm会将修改的文件cp一份作为备份,可以在警告信息中看到;waring。。。。。
3、rpm查询:
rpm {-q|--query} [select-options] [query-options]
rpm -qa:查询所有的包 //不支持golbing
rpm -qa | grep ‘包名’ :查询特定的包
rpm -qi ‘包名’:查询软件包的摘要信息;
rpm -ql ‘包名’ :查询软件包安装产生的文件清单;
rpm -qc ‘包名’: 查询软件包安装后的配置文件清单;
rpm -qd ‘包名’:查询软件包安装后产生的帮助文档信息清单;
如:
package zsh is not installed
[[email protected] ~]# rpm -qa | grep zsh
zsh-5.0.2-14.el7.x86_64
[[email protected] ~]# rpm -qi zsh //查询软件包的相关摘要信息
[[email protected] ~]# rpm -ql zsh | less//查询zsh安装产生的文件清单,并分页显示;
QUERYING AND VERIFYING PACKAGES:
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
[--notriggers] [--test] PACKAGE_NAME ...