程序:指令+数据
指令:芯片
CPU:普通指令,特权指令
指令集
C语言:
Powerpc:二进制格式
x86:
x86: 汇编
powerpc: 汇编
高级语言:
C:
软件包管理器的核心功能:
1、制作软件包;
2、安装、卸载、升级、查询、校验;
Redhat, SUSE, Debian
Redhat, SUSE: RPM
RedhatPackage Manager
PRMis Package Manager
Debian: dpt
依赖关系:
X-->Y-->Z
X-->Y-->Z
前端工具:yum, apt-get
后端工具:RPM, dpt
yum: Yellowdog Update Modifier
yum
rpm命令:
rpm:
数据库:/var/lib/rpm
rpmbuild:
安装、查询、卸载、升级、校验、数据库的重建、验正数据包等工作;
rpm命名:
包:组成部分
主包:
bind-9.7.1-1.el5.i586.rpm
子包:
bind-libs-9.7.1-1.el5.i586.rpm
bind-utils-9.7.1-1.el5.i586.rpm
包名格式:
name-version-release.arch(平台架构).rpm
bind-major.minor.release-release.arch.rpm
主版本号:重大改进
次版本号:某个子功能发生重大变化
发行号:修正了部分bug,调整了一点功能
bind-9.7.1.tar.gz
rpm包:
二进制格式
rpm包作者下载源程序,编译配置完成后,制作成rpm包
bind-9.7.1-1.noarch.rpm
bind-9.7.1-1.ppc.rpm
rpm:
1、安装
rpm -i /PATH/TO/PACKAGE_FILE
-h:以#显示进度;每个#表示2%;
-v:显示详细过程
-vv:更详细的过程
rpm -ivh /PATH/TO/PACKAGE_FILE
--nodeps:忽略依赖关系;
--replacepkgs:重新安装,替换原有安装;
--force:强行安装,可以实现重装或降级;
2、查询
rpm -q PACKAGE_NAME: 查询指定的包是否已经安装
rpm -qa : 查询已经安装的所有包
rpm -qi PACKAGE_NAME: 查询指定包的说明信息;
rpm -ql PACKAGE_NAME: 查询指定包安装后生成的文件列表;
rpm -qc PACEAGE_NEME:查询指定包安装的配置文件;
rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件;
rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本
rpm -qf /path/to/somefile: 查询指定的文件是由哪个rpm包安装生成的;
如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpl
3、升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,则安装;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出;
--oldpackage:降级
4、卸载
rpm -e PACKAGE_NAME
--nodeps
5、校验
rpm-V PACKAGE_NAME
6、重建数据库
rpm
--rebuilddb:重建数据库,一定会重新建立;
--initdb:初始化数据库,没有才建立,有就不用建立;
7、检验来源合法性,及软件包完整性;
加密类型:
对称:加密解密使用同一个密钥
公钥:一对儿密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去;
单向:
# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-redhat-release
rpm -K /PAPT/TO/PACKAGE_FILE
dsa,gpg: 验正来源合法性,也即验正签名;可以使用--nosignature,略过此项
sha1,md5: 验正软件包完整性;可以使用--nodigest,略过此项
rpm --import/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 导入密钥文件
1、rpm -qf
2、rpm -qpl
l:List
i:软件包的信息;
3、--import/etc/pki/rpm-gpg/
4、--rebuilddb
rpm --> yum
HTML: HyperText Mark Language
XML: eXtended Mark Language
XML, JSON: 半结构化的数据
yum仓库中的元数据文件:
primary.xml.gz
所有RPM包的列表;
依赖关系;
每个RPM安装生成的文件列表;
filelists.xml.gz
当前仓库中所有RPM包的所有文件列表;
other.xml.gz
额外信息,RPM包的修改日志;
repomd.xml
记录的是上面三个文件的时间戳和校验和;
yum install zsh
comps*.xml: RPM包分组信息
ftp://172.16.0.1/pub/{Server,VT,Cluster,ClusterStorage}
如何为yum定义repo文件
[Repo_ID]
name=Description
baseurl=
ftp://
http://
file:///本地文件
enabled={1|0}
gpgcheck={1|0} 检查
gpgkey=
yum [options] [command] [package ...]
-y: 自动回答为yes
--nogpgcheck
list: 列表
支持glob
all
available:可用的,仓库中有但尚未安装的
installed:已经安装的
updates:可用的升级
clean: 清理缓存
[packages | headers | metadata | dbcache | all ]
repolist: 显示repo列表及其简要信息
all
enabled: 默认
disabled
install: 安装
yum install PACKAGE_NAME
update: 升级
update_to: 升级为指定版本
remove|erase:卸载
info:
provides| whatprovides: 查看指定的文件或特性是由哪个包安装生成的;
groupinfo
grouplist
groupinstall
groupremove
groupupdate
/media/cdrom/{Server,VT,Cluster,ClusterStorage}
如何创建yum仓库:
createrepo
http://172.16.0.1/yum/{Server,VT}
练习:
1、将系统安装光盘挂载至/media/yum目录,用其实现yum仓库;
2、配置使用http://172.16.0.1/yum/{Server,VT,Cluster,ClusterStorage}为可用yum仓库;
写一个脚本,完成以下功能:
说明:此脚本能于同一个repo文件中创建多个Yum源的指向;
1、接受一个文件名做为参数,此文件存放至/etc/yum.repos.d目录中,且文件名以.repo为后缀;要求,此文件不能事先存,否则,报错;
2、在脚本中,提醒用户输入repo id;如果为quit,则退出脚本;否则,继续完成下面的步骤;
3、repo name以及baseurl的路径,而后以repo文件的格式将其保存至指定的文件中;
4、enabled默认为1,而gpgcheck默认设定为0;
5、此脚本会循环执行多次,除非用户为repoid指定为quit;
if [ -e $1 ]; then
echo "$1 exist."
exit 5
fi
[repo id]
name=
baseurl=
enabled=
gpgcheck=