1、问linux中的程序由哪些内容组合?
答:linux程序的组成部分:二进制程序、库文件、配置文件、帮助文件。
2、什么是程序包管理器?程序包管理器为什么会诞生?
答:程序包管理器就是将编译好的程序、库文件、配置文件、帮助文件打包成一个文件或有限的几个文件的一种工具。程序包管理器的诞生是因为由于一个程序的文件数众多,安装一个程序的操作过于复制和繁琐。所以有包管理器的产生,将一个程序的众多文件按一种特定的格式进行打包成一个或有限的几个文件,可以让一个程序便捷、简单的安装、卸载、升级、查询、校验等程序管理。由于不同的linux发行版的厂商打包的特定格式不一样,所以导致linux中有多种程序包管理器。主要有deb程序包管理器,rpm程序包管理器,其中rpm是主流的程序包管理器。
3、使用rpm程序包管理器打包完的程序包的命名规范是什么?
答:rpm包的命名:name-Major.Minor.Release-release.arch.rpm
字段解析:name:程序的名称
Major:程序的主版本号
minor:程序的次版本号
Release:发行号,修订号
release:rpm包自己的发行号,与源代码的发行号无关;仅用于对标识对rpm自身的修订;有时候,此release可能还会包含适用的OS
arch:适用的硬件平台(就是cpu架构)
实例:bash-4.3.2-1.centos6.x86_64.rpm
4、rpm程序包管理器对程序打包有分包机制吗?为什么会有分包机制?
答:rpm程序包管理器对程序打包有分包机制,之所以会有分包机制是为了应对一种场景,就是一个程序有些功能主要针对普通用户用的,有些功能主要针对给开发人员设计的。所以这时就采用分包机制,就是将针对普通用户的常用功能打包成核心包,核心包的命名一般和源程序包名一致。将正对开发人员的功能打包成子包(支包),支包的命名一般是在主包程序名的后面添加“-devel-”
实例:核心包:bash-4.3.2-1.centos6.x86_64.rpm
支包:bash-devel-4.3.2-1.centos6.x86_64.rpm
5、怎么获得rpm程序包,是不是随便获取到的rpm程序包,你都能安装?
答:rpm程序包管理器只能管理rpm程序包,所以你想简单、方便的安装的你想要的某种功能的程序,而你的包管理器又是rpm包管理器,是不是你只能找一个具有该功能的程序的rpm包,那怎么才能获取到rpm包?
获取包的途径:(1)系统原发行光盘或者官方站点服务器(或镜像,如:http://mirrors.sohu.com)
(2)程序项目官方站点
(3)第三方组织
(4)自己制作
注意不是随便获取到的rpm程序包,你都能安装,应为有些包可能被人加入了后门程序。一般系统发行版官方网站的是安全的、程序项目官方项目是安全的,记住,但也不能保证100%安全。自己制作的rpm包是最安全的。
6、rpm程序包管理器是怎么管理程序包的?
答:程序包管理器对程序包的管理主要分为:安装、升级、卸载、查询、检验。
安装:使用rpm工具
使用格式:rpm{-i|--install} {install-options} 程序包路径名
常用格式:rpm-ivh 程序包完整路径名。
选项解析:-i 安装程序包
-v 输出安装信息
-h 答应hash标记,一般的-v选项联合使用
实例:安装/media/cdrom/Packages目录下的zsh-4.3.10-7.el6.x86_64.rpm
注意:有些rpm包存在依赖关系,就是一个程序在开发时调用了另外一些程序的的功能,所以安装这个包之前应该先将被调用的那个程序安装,你才能在安装这个程序包。
实例:安装/media/cdrom/Packages目录下的php-mysql-5.3.3-38.el6.x86_64.rpm
实例解析:安装php-mysql程序包依赖于:php-common、php-pdo两个程序包,安装php-mysql之前你要先将php-commob、php-pdo两个程序包安装。
答:程序包升级:用较高版本包替换安装原有较老的程序包的过程,设计有两种方法。
方法一:rpm {-U|--upgrade} {install-options} 程序路径名。
方法特性:如果有较旧版本程序包,则升级安装;否则,则执行安装操作。
常用格式:rpm -Uvh 程序包完整路径名
选项解析:-U 升级程序包
实例:升级/media/cdrom/Packages目录下的zsh-4.3.10-7.el6.x86_64.rpm
方法二:rpm {-F|freshen} [install-options] 程序路径名。
方法特性:如果有较旧版本程序包,则升级安装;否则,中止。
常用格式:rpm -Fvh 程序包完整路径名
实例:升级/media/cdrom/Packages目录下的zsh-4.3.10-7.el6.x86_64.rpm
实例解析:zsh包开始没有安装用第二种方式升级,会不做安装操作,如图所示。
答:程序包卸载:移除已经安装的包
常用格式:rpm -e 程序名
实例:卸载已经安装的zsh程序
答:程序包查询:检查某包是否已经安装,或检查安装的所有包
1、查询某包是否安装:rpm -q 包名
2、查询已经安装的所有包:rpm -qa
3、查询某文件是由哪个包安装生成的:rpm -qf 文件的完整路径名
4、查询尚未安装包的相关信息:rpm -qpl 程序包的完整路径名
rpm -qpi 程序包的完整路径名
实例:查看zsh程序包是否安装、查看/etc/fstab由哪个包安装生成的、查询所有安装包
答:程序包的校验:一是检查包安装之后生成的文件是否发生了改变、另外是检查包的来源合法性及完整性校验。
常用格式:rpm -V 程序名 作用是检查包安装之后生成的文件是否发生了改变
实例:检查zsh程序安装之后生成的文件是否发生改变
常用格式:rpm --import 官网的公钥 导入要安装程序包下载官网的公钥
rpm -K 程序包的完整路径名 对包做来源合法性和完整性校验、
实例:检查zsh程序包的来源合法性和完整性校验
7、怎么解决安装rpm程序包时那烦人的依赖关系?
答:使用rpm程序包管理器安装程序包时,大多数情况下都会遇到那烦人的依赖关系,这样的话,那安装一个程序就有点麻烦了,所以Redhat就要发了一种rpm程序包管理器的前端工具yum,yum主要作用就是创建包的元数据,主要存储的是包之间的依赖关系。
8、yum服务是由哪些部分组成的、分别怎么设置?
答:yum服务由:yum仓库和yum客户端组成,yum仓库的创建主要是将所有的rpm程序包放置在一个目录下,然后创建包的元数据,就是计算依赖关系,这样一个yum仓库就完成了。yum仓库可以只给本机提供服务,也可以给网络上的其他主机提供服务,因为yum仓库其实就是一个文件服务器,主要提供程序包给其他主机安装。但是要给网络上的其他主机提供服务,需要借助网络文件服务协议如:http、ftp、nfs,给本机提供服务可以借助文件系统:file
yum客户端的配置:配置文件有两部分组成,主配置文件:/etc/yum.conf /etc/yum.repos.d/*.repo,主配置文件对所有yum仓库生效, yum客户端配置文件的编写主要是写yum仓库的定义,一般的含义就是指明向那个yum仓库获取服务。
实例:yum客户端配置文件示例
实例:yum仓库的创建
案例解析:创建yun仓库目录/YUM,将rpm程序包复制到这个目录下,使用createrepo工具创建程序包元数据,生成程序包依赖关系,查看元数据是否创建成功,yum仓库创建完成
答:yum仓库的相关命令
1、列出所有可用仓库:yum repolist
2、列出所有的程序包:yum list {all | installed |available }
3、列出所有包组:yum grouplist
4、安装包组:yum groupinstall “包组名”
5、卸载包组:yum groupremove “包组名”
6、升级包组:yum groupupdate “包组名”
7、创建缓存:yum makecache
8、清空缓存:yum clean {all | packsges}
9、安装程序包:yum install 程序报名 [-y]
10、重装指定的程序包:yum reinstall 程序包名
11、升级程序:yum update 程序包名
12、降级程序:yum downgrade 程序包名
13、检查可用升级:yum check-update