软件包管理
GPL 源码
POSIX 可移植操作系统
API 兼容意味着开发库兼容,源代码可以跨平台
ABI
编译后的程序可以跨平台
库 :可执行程序,不能作为程序入口。但可以被调用,是编译好的二进制格
库级别的虚拟化:
linux:wine
windows:cywin
系统级开发: c/c++ :httpd,nginx,vsftpd,go
应用级开发:java python perl php
c/c++程序格式:
源代码:文本格式的程序代码;
编译开发环境:编译器,头文件,开发库
二进制格式:文本格式的程序代码–>编译器–>二进制格式
开发环境:编译器,开发库
程序包管理器:
源代码–>目标二进制格式–>组织成为一个或有限几个“包”文件;
包管理器的基本功能
打包
安装
查询
升级
卸载
校验
数据库管理
程序包管理器
debian: dpt,dpkg “.deb”
rehat : rpm “.rpm”
suse : rpm,
前段工具:自动解决依赖关系:
yum:rpm包管理的前段工具
apt-get:deb包管理器的前段工具
zypper:suse的rpm管理器前端工具
dnf:也是一种rpm包管理器的前端工具
查看二进制程序所依赖的库文件 ldd /PATH/TO/BINARY_FILE
获取程序包的途径:
系统发行版的光盘或官方的文件服务器(或镜像站点)
http://mirrors.aliyun.com
http://mirror.sohu.com
http://mirror.163.com
项目的官方站点
第三方组织:EPEL
搜索引擎:http://pkgs.org
http://rpmfind.net
http://rpm.phone.net
自己动手,丰衣足食
建议:检查其合法性
来源合法性
程序包的完整性
centos系统上rpm命令管理程序包:
安装,升级,卸载,查询和校验,数据库维护
rpm命令:
-i :安装
-u :升级
-e :卸载
-q :查询
-v :校验
–builddb:数据库维护
–test:测试安装,检查并报告依赖关系及冲突消息等
–nodeps:忽略依赖关系,不建议
–replacepkgs:重新安装
升级:
rpm -u :升级或安装
-f :只升级
rpm -uvh
–oldpackage: 降级
–force : 强制升级
注意:(1)不要对内核做升级操作,linux支持多内核版本并存,因此,直接安装新版本
(2)如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原版本的配 置文件,而是把新版本的配置文件重命名后提供;
卸载: 直接给包名即可
rpm -e :卸载
–allmatches:卸载所有匹配指定名称的程序包的各版本
–nodeps :忽略依赖关系
–test : 测试卸载
查询: rpm -qa -qc -ql 等
rpm -q :查询
-a :查询所有已经安装过的包
-f file :查询指定的文件由哪个程序包安装生成
-l :程序包安装生成的所有文件列表
-i : 程序包相关信息,版本号,大小,所属的包组等
-c : 查询指定的程序包提供的配置文件
-d : 查询指定的程序包提供的文档
-p : 指定未安装的包文件做查询操作
校验: rpm -v filenam
包来源合法性验证和完整性验证:
获取并导入信任的包制作者的秘钥
验证:
安装此组织签名的程序时,会自动执行验证;
手动验证:rpm -k packagefile
数据库重建:
rpm管理器数据库路径:/var/lib/rpm rpm –initdb 初始化 如果 事先不存在数据库,则新建之否则
查询操作:通过此处的数据库进行; rpm –rebuliddb 重建已安装的包的数据库索索引
获取帮助:
man rpm centos6
man rpmdb centos7
YUM: Yellowdog Update Modifier ,rpm 的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date
的替代工具
yum repository: yum repo ,存储了众多rpm 包,以及包的相关的元数据文件(放置于特定目录repodata 下)
文件服务器:
客户端配置文件
ftp ftp://server/path/to/repo
http http://server/path/to/repo
nfs nfs://server/path/to/repo
file file:///path/to/repository
/etc/yum.conf :为所有仓库提供公共配置
/etc/yum.repos.d/*.repo :为仓库的指向提供配置
配置格式: [repositoryID]
baseurl=ftp:// 或者http:// file://
gpgcheck=0 不检查签名
yum repolist 检查是否成功 ,会显示具体信息
总结
1 安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1
2 更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1
3 查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包
4 删除程序
yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
5 清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
1.列出所有可更新的软件清单
命令:yum check-update
2.安装所有更新软件
命令:yum update
3.仅安装指定的软件
命令:yum install
4.仅更新指定的软件
命令:yum update
5.列出所有可安裝的软件清单
命令:yum list
3.使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的。
安装的命令是,yum install xxx,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断
删除的命令是,yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。
1.用YUM安装软件包
命令:yum install
2.用YUM删除软件包
命令:yum remove
4.用yum查询想安装的软件
我们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询功能就起作用了。你可以用 yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,于是我们可能得到 gaim,kopete等等,并从中选择。
有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。
1.使用YUM查找软件包
命令:yum search
2.列出所有可安装的软件包
命令:yum list
3.列出所有可更新的软件包
命令:yum list updates
4.列出所有已安装的软件包
命令:yum list installed
5.列出所有已安装但不在 Yum Repository 內的软件包
命令:yum list extras
6.列出所指定的软件包
命令:yum list 7.使用YUM获取软件包信息
命令:yum info 8.列出所有软件包的信息
命令:yum info
9.列出所有可更新的软件包信息
命令:yum info updates
10.列出所有已安裝的软件包信息
命令:yum info installed
11.列出所有已安裝但不在 Yum Repository 內的软件包信息
命令:yum info extras
12.列出软件包提供哪些文件
命令:yum provides
。。。
。。