1.linux管理分类
内核功能管理:进程管理,内存管理,网络协议栈管理,驱动程序管理。
外部功能管理:应用程序管理,包管理,文件管理。
2.linux包管理工具
常用的包管理器工具:
deb:debian
rpm:redhat package manager
包管理器工具的作用:
打包:一个单一的归档文件中;
安装:新安装一个程序包;
卸载:移除系统上安装的程序包;
升级:对已安装的程序进行更新;
查询:对已安装或者未安装的程序包的详细信息进行查询;
校验:检查文件的来源合法性和文件的完整性。
3.程序包的组成部分:
二进制可执行程序目录:/bin /sbin /usr/bin /usr/sbin
库文件:/lib64 /usr/lib64
配置文件:/etc
帮助文件:manual,info
4.rpm包
rpmbuild: rpm打包
分包机制:
testapp-version.tar.gz
核心包:testapp-version
支包:testapp-devel-version
version:majorminor.release
命名机制:
Name-version-release.arch.rpm
例如: Bash-4.2.4-1.el7.x86_64.rpm
bash-devel-4.2.4-1.el7.x86_64.rpm
包和包之间可能会有依赖关系
X---> Y
rpm程序的数据库:/var/lib/rpm
获取rpm包的方法:
1)发行版提供的程序包;
2)fedora-EPEL
3)项目的官方站点
4)搜索引擎
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
5)使用yum下载rpm包
5.基于rpm命令实现程序包管理
安装类:
rpm 选项 程序包名
--I 安装程序包,相当于 �Cinstall
-v 详细显示程序包安装过程
-h 以前#显示程序包安装进度
--nodeps 忽略依赖关系安装
--replacepkgs 重装程序包
--force 强制安装
--test 测试程序包
[root@localhost~]# mount /dev/cdrom /mnt/ mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost~]# cd /mnt/Packages/ [root@localhostPackages]# ls | grep zsh zsh-5.0.2-7.el7.x86_64.rpm [root@localhostPackages]# rpm -ivh zsh-5.0.2-7.el7.x86_64.rpm 警告:zsh-5.0.2-7.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:zsh-5.0.2-7.el7 #################################[100%]
升级类:
rpm 选项 程序包名
-Uvh:如果有旧版程序包,则升级,如果没有,则安装;
-Fvh:如果有旧版程序包,则升级,如果没有,则不安装;
--nodeps 忽略依赖关系安装
--force 强制升级
--oldpackage降级
[root@localhostPackages]# rpm -Uvh zsh-5.0.2-7.el7.x86_64.rpm
警告:zsh-5.0.2-7.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
软件包 zsh-5.0.2-7.el7.x86_64 已经安装
卸载:
rpm 选项 程序包名
-e 卸载
--nodeps 忽略
--noscripts
--notriggers
[root@localhostPackages]# rpm -e zsh-5.0.2 忽略依赖安装 [root@localhostPackages]# rpm -ivh php-mysql-5.4.16-23.el7_0.3.x86_64.rpm 警告:php-mysql-5.4.16-23.el7_0.3.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 错误:依赖检测失败: php-pdo(x86-64) = 5.4.16-23.el7_0.3 被 php-mysql-5.4.16-23.el7_0.3.x86_64 需要 [root@localhostPackages]# [root@localhostPackages]# rpm -ivh php-mysql-5.4.16-23.el7_0.3.x86_64.rpm --nodeps 警告:php-mysql-5.4.16-23.el7_0.3.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 准备中... #################################[100%] 正在升级/安装... 1:php-mysql-5.4.16-23.el7_0.3 ################################# [100%]
查询:
rpm 选项 程序包名
-qa 查询本已安装的所有程序包
-qf /path/to/somefile 查询此处的文件由哪个程序包安装后生成
-qc 查询指定程序安装生成的配置文件
-qd 查询指定程序包安装生成的文档
-qi 查询指定程序包的相关信息
-ql 查询程序安装生成的所有文件列表
-q --scripts 查询程序包相关的脚本
preinstall: 安装前脚本
postinstall:安装后脚本
preuninstall:卸载前脚本
postuninstall:卸载后脚本
-p 查询针对未安装的程序包文件
[root@localhostPackages]# rpm -qa | grep php php-mysql-5.4.16-23.el7_0.3.x86_64 [root@localhostPackages]# [root@localhostPackages]# rpm -qf /etc/fstab setup-2.8.71-5.el7.noarch [root@localhostPackages]# rpm -qc php-mysql-5.4.16-23.el7_0.3.x86_64 /etc/php.d/mysql.ini /etc/php.d/mysqli.ini /etc/php.d/pdo_mysql.ini [root@localhostPackages]# [root@localhostPackages]# rpm -qd setup-2.8.71-5.el7.noarch /usr/share/doc/setup-2.8.71/COPYING /usr/share/doc/setup-2.8.71/uidgid [root@localhostPackages]# [root@localhostPackages]# rpm -ql php-mysql-5.4.16-23.el7_0.3.x86_64 /etc/php.d/mysql.ini /etc/php.d/mysqli.ini /etc/php.d/pdo_mysql.ini /usr/lib64/php/modules/mysql.so /usr/lib64/php/modules/mysqli.so /usr/lib64/php/modules/pdo_mysql.so [root@localhostPackages]#
校验:
rpm{-V|--verify} [select-options] [verify-options]
S file Size differs
M Mode differs (includes permissions andfile 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
包校验:
来源合法性验证:非对称加密
完整性验证:单向加密
导入秘钥:rpm --import /path/to/key_file
校验:rpm �CK /PATH/TO/RPM_FILE
6.yum的使用
YUM: YellowdogUpdater Modified
yum repositories:
ftp://hostname/path/to/repo
http://hostname/path/to/repo
file:///path/to/repo
yum配置文件:
/etc/yum.conf 此次文件定义全局配置,对所有的仓库都有效果
cachedir=/PATH/TO/ 这个选项定义程序包的缓存路径
keepcache={0|1} 这个选项定义是否缓存程序包
/etc/yum.repos.d/*.repo仓库路径,仓库可以有多个
定义一个仓库的指向
[REPO ID]
name=
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
#mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE
enabled={1|0}
gpgcheck={1|0}
gpgkey=/PATH/TO/FILE
cost=
例如:
[base] name=CentOS-$releasever- Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
定义仓库指向可用变量:
$releasever: 引用当前系统的主版本号;
$basearch: 当前系统的基本架构;
i386, i486,i586, i686: i386
例如:http://mirrors.aliyun.com/centos/7/os/x86_64/
yum命令:
yum [options] [command] [package...]
命令:
install 安装
remove 卸载
update 升级
info 查询
search KEYWORD 通过相关字符查询程序包名
listall|installed|availiable
provides/PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成
reinstall 重新安装
downgrade 降级
清理缓存:clean [ packages | metadata | expire-cache| rpmdb | plugins | all ]
生动生成缓存:makecache
包组:
grouplist
groupinfo"GRP_NAME"
groupinstall"GRP_NAME"
groupremove"GRP_NAME"
仓库:
repolist[all|enabled|disabled]
repoinfo[all|enabled|disabled]