Linux的程序包管理
软件包管理工具:rpm、yum
POSIX:Portable Openratin System 跨平台调用
|
库为函数,function
是编译好的二进制格式 |
程序的过程:预编译、编译、汇编、链接
|
编译:源代码翻译成cpu指令集的过程
注意:
|
软件包的组成部分
开发时调用API,运行时调用ABI
man文件,info文件,README,INSTALL,ChangeLog man COMMAND 到某路径下查找与命令名同名的通常以。gz结尾的压缩文件的名字 /usr/share/man |
总结:
|
ldd命令:
|
[root@bogon ~]# ldd /bin/cat
linux-vdso.so.1 => (0x00007fffc47ff000)
libc.so.6 => /lib64/libc.so.6 (0x0000003a04800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003a04000000)
|
[root@bogon ~]# ls /usr/include/
aio.h features.h ifaddrs.h netax25 QtMultimedia
aliases.h fenv.h inttypes.h netdb.h QtNetwork
alloca.h fmtmsg.h jconfig.h neteconet QtOpenGL
应用程序管理器:
名称和版本, 安装生成的各文件路径,校验码, 依赖关系 提供功能性的说明 |
文件清单 安装卸载时运行的脚本 |
包管理器的基本功能
|
总结:
|
rpm包的使用:
rpm包命名格式:
version:major.minor.release |
release:通常包含rpm的只做发行号,还包含使用的OS bash-4.3.3-2.el6.x86_64.rpm |
el6:redhat enterprise linux 6 el5:redhat enterprise linux 5 CentOS5 CentOS6 suse11 |
x86_64 i386,i586,i686 ppc noarch nginx-1.4.16-5.noarch.rpm |
主包:bash-4.3.3-2.el6.x86_64.rpm 支包:bash-hello-4.3.3-2.el6.x86_64.rpm bash-world-4.3.3-2.el6.x86_64.rpm |
源程序:通过md5或sha1校验码验证; rpm包:发行商提供的是合法性是可信的 验证包完整性:校验码 验证来源合法:公钥加密算法 |
1、发行商的光盘或站点服务器 CentOS: http://mirrors.163.com http://mirrors.sohu.com 2、rpmfind http://rpmfind.net 3、rpmpbone http://rpm.pbone.net |
注意:
|
安装程序包:
-v:显示安装信息 -vv:二级详细 -vvv:三级详细 -h:hash 以#的个数显示安装进度,一个#表示2%的进度 --test:仅测试,不真正执行安装过程 |
[root@bogon Packages]# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm
warning: zsh-4.3.10-7.el6.x86_64.rpm:Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]准备进度
1:zsh ########################################### [100%]安装进度
重新安装:
|
[root@bogon Packages]# rpm -ivh --replacepkgs zsh-4.3.10-7.el6.x86_64.rpm
warning: zsh-4.3.10-7.el6.x86_64.rpm:Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
1:zsh ########################################### [100%]
如果存在依赖:
|
[root@bogon Packages]# rpm -ivh --nodeps php-mysql-5.3.3-26.el6.x86_64.rpm
warning: php-mysql-5.3.3-26.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
1:php-mysql ########################################### [100%]
卸载程序包:
|
[root@bogon Packages]# rpm -e zsh
[root@bogon Packages]# rpm -e php-mysql
如果卸载被其他程序所依赖的包
|
rpm包管理:查询
|
preinstall:安装前脚本 postinstall:安装后脚本 preuninstall:卸载前脚本 postuninstall:卸载后脚本 |
查询某单个包是否安装:rpm -q package_name
[root@bogon Packages]# rpm -q zsh
zsh-4.3.10-7.el6.x86_64
查询包安装之后在当前系统生成的文件列表:rpm -ql package_name
[root@bogon Packages]# rpm -ql zsh
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
...
查询某个文件是哪个包安装生成的:rpm -qf /path/to/somefile
[root@bogon Packages]# rpm -qf /etc/passwd
setup-2.8.14-20.el6_4.1.noarch
[root@bogon Packages]# rpm -qf /bin/bash
bash-4.1.2-15.el6_4.x86_64
查询包安装后生成的帮助文档:rpm -qd package_name
[root@bogon Packages]# rpm -qd zsh
/usr/share/doc/zsh-4.3.10/BUGS
/usr/share/doc/zsh-4.3.10/CONTRIBUTORS
/usr/share/doc/zsh-4.3.10/FAQ
/usr/share/doc/zsh-4.3.10/FEATURES
...
查询包安装后生成的配置文件:rpm -qc package_name
[root@bogon Packages]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
查询包相关的脚本:rpm -q --scripts package_name
[root@bogon Packages]# rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; then
echo "/bin/zsh" > /etc/shells
else
...
查询尚未安装的rpm包文件的相关信息:
查询安装后会生成的文件列表:rpm -qpl /path/to/package_file
[root@bogon Packages]# rpm -qpl zsh-4.3.10-7.el6.x86_64.rpm
查询其简单描述信息:rpm -qpi /path/to/package_file
Name(名称) : bash Relocations(重定位): (not relocatable)
Version版本 : 4.1.2 Vendor提供商: CentOS
Release : 15.el6_4 Build Date制作时间: Thu 18 Jul 2013 09:21:24 PM CST
Install Date: Thu 13 Feb 2014 Build Host:在那个系统制作的 c6b10.bsys.dev.centos.org
Group : System Environment/Shells Source RPM(源码的rpm包): bash-4.1.2-15.el6_4.src.rpm
Size : 3139291 License许可证: GPLv3+
Signature数字签名 : RSA/SHA1, Thu 18 Jul 2013 09:46:10 PM CST, Key ID 0946fca2c105b9de
Packager 制作者 : CentOS BuildSystem <http://bugs.centos.org>
URL: http://www.gnu.org/software/bash
Summary 简要: The GNU Bourne Again shell Description :详细信息
The GNU Bourne Again shell (Bash) is a shell or command language
interpreter that is compatible with the Bourne shell (sh). Bash
incorporates useful features from the Korn shell (ksh) and the C shell
(csh). Most sh scripts can be run by bash without modification.
rpm包升级:
|
注意:
|
rpm包管理:校验
|
[root@bogon Packages]# rpm -V zsh [root@bogon Packages]# rpm -V zsh S.5....T. /usr/share/zsh/4.3.10/functions/zfls
. 为发生改变 S file Size differs 大小发生改变 M Mode differs (includes permissions and file type) 权限改变 5 digest (formerly MD5 sum) differs 完整性改变 D Device major/minor number mismatch 主、次设备号发生改变 L readLink(2) path mismatch 路径不匹配 U User ownership differs 属主改变 G Group ownership differs 属组改变 T mTime differs 修改时间改变 P caPabilities differ 能力改变
校验来源合法性和软件完整性
|
命令:gpg
|
导入密钥:
|
数据库
如果事先不存在一个数据库,则新建之 rpm --rebuilddb 重建 直接新建数据库,会覆盖原有库 |
依赖关系:
|
文件服务器(共享rpm包):通过yum所支持的文件共享机制将各rpm包通过文件服务共享
1.需要的各rpm包 2、依赖关系、程序包安装后所能够生成的列表等元数据文件
|
yum客户端
|
执行具体操作
ftp ftp://server/path/to/repo http http://server/path/to/repo nfs nfs://servr/nfs_path file file:///path/to/path |
yum [install] command
check Check for problems in the rpmdb check-update Check for available package updates clean Remove cached data deplist List a package's dependencies downgrade downgrade a package erase Remove a package or packages from your system groupinfo Display details about a package group groupinstall Install the packages in a group on your system grouplist List available package groups groupremove Remove the packages in a group from your system help Display a helpful usage message history Display, or use, the transaction history info Display details about a package or group of packages install Install a package or packages on your system list List a package or groups of packages load-transaction load a saved transaction from filename makecache Generate the metadata cache provides Find what package provides the given value reinstall reinstall a package repolist Display the configured software repositories 显示各可用的仓库列表 resolvedep Determine which package provides the given dependency search Search package details for the given string shell Run an interactive yum sh ell update Update a package or packages on your system update-minimal Works like update, but goes to the 'newest' package match which fixes a problem that affects your system updateinfo Acts on repository update information upgrade Update packages taking obsoletes into account version Display a version for the machine and/or available repos.
要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中
|
配置文件格式:由两段组成。类似window的ini配置文件
|
配置repo
[repo_ID] name=String baseurl=仓库的访问路径 enabled={1|0}1,表示启用。0表示不启用 gpgcheck={1|0}1,验证gpg。0表示不验证 gpgkey=公钥地址(可以是本地,也可以是服务器端路径) cost=定义此仓库开销,默认为1000 [base] name=Centos 6.5 X86_64 release baseurl= enabled= gpgcheck=