内核功能:进程管理、内存管理、网络协议栈、驱动程序
应用程序:具体功能
2.包管理器:打包,包管理(安装、升级、卸载、查询及校验)
deb: debian
rpm: redhat package manager
3.程序包的组成部分:
二进制程序:/bin, /sbin,/ /usr/bin, /usr/sbin,
库文件:/lib64, /usr/lib64
配置文件:/etc
帮助文件:manual, info
4.rpm包:
4.1分包机制
源码包的命名格式:testapp-VERSION.tar.gz
核心包:testapp-VERSION 通常包含程序的主要功能
支包:testapp-devel-VERSION为主程序包提供特别功能;
例如: zsh-5.0.2-7.el7.x86_64.rpm 核心包 zsh-html-5.0.2-7.el7.x86_64.rpm 支包,提供html功能
VERSION:major(主版本号).minor(次版本号,小功能改进).release(发行号,修改了bug)
4.2 rpm包命名
格式: name-VERSION-RELEASE.ARCH.rpm
示例:
bash-4.2.46-12.el7.x86_64.rpm bash:软件名称; 4.2.46:软件版本(version) 2为主版本;后面的2为次版本号 ; 46为源码包的release 12为这个rpm包的release ; el6. x86_64:适用enterprise linux6 64位x86系统平台; rpm:包格式
4.3 包和包之间:有可能存在依赖关系
示例:
[root@localhost Packages]# rpm -ivh php-mysql-5.4.16-23.el7_0.3.x86_64.rpm error: Failed dependencies: 提示错误 php-pdo(x86-64) = 5.4.16-23.el7_0.3 is needed by php-mysql-5.4.16-23.el7_0.3.x86_64 需要先安装php-pdo
具体解决方法见6.2
5.rpm包的获取:
发行版提供的光盘
CentOS识别光盘用的设备文件:/dev/cdrom
获取光盘内容需要挂载光盘
示例:
[root@localhost ~]# mount -r /dev/cdrom /media/cdrom/ [root@localhost ~]# cd /media/cdrom/ [root@localhost cdrom]# ls CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL [root@localhost cdrom]# cd Packages/ 里面放着程序包 [root@localhost Packages]# ls | wc l统计程序包个数 8653
Fedora-EPEL
项目的官方站点
搜索引擎
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
6.基于rpm命令实现程序包管理
6.1安装: -i:(install)安装
-v:显示详细过程,还有更详细显示-vv, -vvv
-h:显示安装进度
示例:
Centos6.7下
Centos7.1中还有更多的详细过程
6.2忽略依赖关系安装
因为每个rpm包都提供一个或多个capabilities,若安装时依赖的包未安装则无法进行安装
--nodeps:忽略依赖关系安装
--replacepkgs:重装程序包
--test:仅做测试
示例:
[root@localhost Packages]# rpm -ivh php-mysql-5.4.16-23.el7_0.3.x86_64.rpm error: Failed dependencies: php-pdo(x86-64) = 5.4.16-23.el7_0.3 is needed by php-mysql-5.4.16-23.el7_0.3.x86_64 [root@localhost Packages]# rpm -ivh php-mysql-5.4.16-23.el7_0.3.x86_64.rpm --nodeps Preparing... ################################# [100%] Updating / installing... 1:php-mysql-5.4.16-23.el7_0.3 ################################# [100%]
6.3升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... 升级安装
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-Uvh: 如果有旧版程序包,就升级;如果没有,则安装;
-Fvh: 如果有旧版程序包,就升级;如果没有,则不安装;
--nodeps :忽略依赖关系
--oldpackage:降级;
--force :强制升级,旧的版本被其他程序依赖,普通升级会导致出粗
6.4卸载
rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
6.5查询
rpm {-q|--query} [select-options] [query-options]
查询选项:
-qa: 查询本机已经安装的所有程序包;
-qf /PATH/TO/SOMEFILE: 查询此处的文件由哪个程序包安装生成;
-qc: 查询指定程序包安装生成的配置文件
示例:
[root@localhost Packages]# rpm -qc zsh /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile /etc/zshenv /etc/zshrc
-qd: 查询指定的程序包安装生成的文档
示例:
-qi: 查询指定的程序包的相关信息;
示例:
-q --scripts:查询程序包相关的脚本:
preinstall:安装前脚本
postinstall:安装后脚本
preuninstall:卸载前脚本
postuninstall:卸载后脚本
-p: 查询针对是未安装的程序包文件,组合-q使用;
6.6校验
作用:检查安装包的文件是否被修改过
rpm {-V|--verify} [select-options][verify-options]
示例: 安装zsh软件后,列出生成的所有文件的列表 [root@localhost Packages]# rpm -ql zsh 选择其中一个文件,修改该文件,加入‘#’号 vim /usr/share/zsh/4.3.11/scripts/newuser 校验zsh:
显示的消息意义如下:
Sfile Size differs 文件大小是否被改变 MMode differs (includes permissions and file type) 文件的类型或文件的属性(rwx)是否被改变 5digest (formerly MD5 sum) differs MD5de指纹码的内容已经不同 DDevice major/minor number mismatch 设备的主/次代码已经改变 LreadLink(2) path mismatch Link路径已经被改变 UUser ownership differs 文件的所有者已被改变 GGroup ownership differs 文件的所属用户组已经被改变 TmTime differs 文件的创建时间已经被改变 PcaPabilities differ 文件的能力已经被改变 c :配置文件(config file) d :文件数据文件(documentation) g : ghost file,通常是该文件被某个软件所包含 l :许可证文件(license file) r :自述文件(read me
7 包校验
包校验:来源合法性验正:非对称加密;完整性验正:单向加密
导入密钥:rpm --import /PATH/TO/KEY_FILE
校验:rpm -K /PATH/TO/RPM_FILE
示例:
[root@localhost Packages]# ls/etc/pki/rpm-gpg/ RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Debug-7 RPM-GPG-KEY-CentOS-Testing-7 [root@localhostPackages]# cd .. [root@localhost cdrom]# rpm --importRPM-GPG-KEY-CentOS-7 [root@localhost cdrom]# cd Packages/ [root@localhost Packages]# rpm -Kzsh-5.0.2-7.el7.x86_64.rpm zsh-5.0.2-7.el7.x86_64.rpm: rsa sha1 (md5)pgp md5 OK
1.YUM: Yellowdog Updater Modified,是一种在线升级机制,解决RPM属性依赖的方式
yum repositories (yum 仓库):
文件服务器提供方式:
ftp://hostname/PATH/TO/REPO
http://hostname/PATH/TO/REPO
file:///PATH/TO/REPO
2.yum程序的配置文件
2.1/etc/yum.conf 定义全局配置:对所有仓库都适用的配置
2.2/etc/yum.repos.d/*.repo 一个文件通常用于一个或一组功能相近或相关的仓库
2.3定义一个仓库指向:
[REPO_ID] 代表仓库的名字,不能与其他仓库重名
name= 说明仓库的意义
baseurl= 后接仓库的实际网址
# mirrorlist= 列出该仓库可以使用的镜像站点
enabled= 1表示启用。0表示不启用 默认为启用
gpgcheck={1|0} 检验包的合法性,0为不启用
gpgkey= 公钥文件所在位置
cost=这个仓库的开销
示例:
[root@localhost yum.repos.d]# mvCentOS-Base.repo CentOS-Base.repo .bak mv: target `.bak' is not a directory [root@localhost yum.repos.d]# mvCentOS-Base.repo CentOS-Base.repo.bak [root@localhost yum.repos.d]# vimCentOS-Base-aliyun.repo [root@localhost yum.repos.d]# yum repolist
结果如下:
2.4定义仓库指向可用变量:
$releasever: 引用当前系统的主版本号;
$basearch: 当前系统的基本架构,例如:i386,i486, i586, i686: i386均为x86架构
例如:http://mirrors.163.com/CentOS/$releasever/os/$basearch
3. yum命令
1 .1 格式:yum [options][command] [package ...]
1.2安装:install CentOS6和7中,该命令可以安装仓库中的软件,也可以安装本地某路径的软件包install /PATH/TO/package_file
1.3卸载:remove
1.4升级:update
1.5查询:
info
searchKEYWORD
listall|installed|availiable
provides/PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成
1.6重新安装:reinstall
1.7降级:downgrade
1.8清理缓存:clean [ packages| metadata | expire-cache | rpmdb | plugins | all ]
1.9生动生成缓存:makecache
1.10包组:一次管理一组程序包
grouplist
groupinfo "GRP_NAME"
groupinstall "GRP_NAME"
groupremove "GRP_NAME"
1.11仓库:
repolist [all|enabled|disabled] 列出所有可用仓库,默认是all
repoinfo [all|enabled|disabled] 查看仓库相关信息
4 .使用光盘当做本地仓库
1)挂载光盘至某目录
mount -r /dev/cdrom /media/cdrom/
2)在baseurll栏使用file://指明其访问路径;
示例:
5.创建本地仓库:
1)安装 yum installcreaterepo
[root@localhost yum.repos.d]# yum installcreaterepo
2)在本地创建一个存放rpm包的目录
[root@localhost ~]#mkdir /yumload
3)将DVD中的Packages中的rpm包全部拷贝到本地rpm包的目录
4)使用createrepo指令创建本地仓库
[root@localhost ~]#createrepo/yumload/
5)配置repo文件
[CentOS6.7onLocal] name= a local repo baseurl=file:///yumload/ enabled=1 gpgcheck=1 cost=101