包管理器 程序包管理器: 功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而 方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作 包文件组成 (每个包独有) RPM包内的文件 RPM的元数据,如名称,版本,依赖性,描述等 安装或卸载时运行的脚本 数据库(公共):/var/lib/rpm 程序包名称及版本 依赖关系 功能说明 包安装后生成的各文件路径及校验码信息   程序包的来源 管理程序包的方式: 使用包管理器:rpm 使用前端工具:yum, dnf 获取程序包的途径: (1) 系统发版的光盘或官方的服务器; CentOS镜像: https://www.centos.org/download/ http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.com (2) 项目官方站点 (3) 第三方组织: Fedora-EPEL: Extra Packages for Enterprise Linux Rpmforge:RHEL推荐,包很全 搜索引擎: http://pkgs.org http://rpmfind.net http://rpm.pbone.net https://sourceforge.net/ (4) 自己制作 注意:第三方包建议要检查其合法性 来源合法性,程序包的完整性   rpm包管理 (1):CentOS系统上使用rpm命令管理程序包: 安装、卸载、升级、查询、校验、数据库维护 安装: rpm {-i|--install} [install-options] PACKAGE_FILE… -v: verbose -vv: -h: 以#显示程序包管理执行进度 rpm -ivh PACKAGE_FILE ..     rpm包安装 -i 安装 --test 仅测试,不安装 --nodeps 忽略依赖性 --replacepkgs 重复安装已安装过的包,文件覆盖 --replacefiles 将要安装包的部分文件与其他已安装的包文件冲突,可继续安装 --noscripts:不执行程序包脚本 %pre: 安装前脚本; --nopre %post: 安装后脚本; --nopost %preun: 卸载前脚本; --nopreun %postun: 卸载后脚本; --nopostun --oldpackage 已装新的,再装旧的 --force 等同于--replacepkgs --replacefiles --oldpackage -U 更新 如果装的有旧的,则升级,如果未装旧的,则安装新的。 -F 更新 如果装的有旧的,则升级,如果未装旧的,不安装新的。   -v 详细信息 -vv 更详细信息 * -h 显示进度 -ivh 安装并详细显示进度 *** -q 查询 -qa 查询安装的所有包 rpm -qa scr* rpm -qa |grep ^scr -qf 查询指定的文件由哪一个rpm包提供(文件用路径表示) -qp 指定未安装的rpm包 -q --provides 软件包名 查看指定的软件包提供了哪些能力 可以使用-a 显示当前系统中由已安装过的包提供的所有能力 -q --whatprovides webserver 查看指定的能力由哪一个软件包提供 -q --whatrequires CAPABILITY 查询指定的CAPABILITY被哪个包所依赖 -qR 软件包名 查看指定的软件包依赖哪些能力 -qc 软件包名 查看配置文件 -qd 软件包名 查看帮助文档 -ql 软件包名 查看该软件包所提供的所有文件 -qi 软件包名 查看软件包的信息 -q --scripts 软件包名 查看软件包的安装脚本 -V 查看指定包所提供的文件是否发生过改变 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   -K|checksig rpmfile 检查包的完整性和签名 --nosignature: 不检查来源合法性 --nodigest:不检查包完整性   rpm包升级 升级: rpm {-U|--upgrade} [install-options] PACKAGE_FILE... rpm {-F|--freshen} [install-options] PACKAGE_FILE... upgrade:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则“安装” freshen:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则不执行升级操作 rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... --oldpackage:降级 --force: 强制安装   rpm2cpio 包文件|cpio –itv 预览包内文件 rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件   实验:丢失文件恢复 /etc/inittab 1.rpm -qf /etc/inittab initscripts-9.03.58-1.el6.centos.x86_64   2.cp /media/Packages/initscripts-9.03.58-1.el6.centos.x86_64.rpm /app   3.cd /app; rpm2cpio initscripts-9.03.58-1.el6.centos.x86_64.rpm |cpio -id   4.cp etc/inittab /etc       yum vim /etc/yum.repos.d/dvd.repo [base] name=magedu centos 7 dvd baseurl=file:///media   yum CentOS: yum, dnf YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依 赖性,可在多个库之间定位软件包,up2date的替代工具 yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据 文件(放置于特定目录repodata下) 文件服务器: http:// https:// ftp:// file:/ yum仓库 yum的repo配置文件中可用的变量: $releasever: 当前OS的发行版的主版本号 $arch: 平台,i386,i486,i586,x86_64等 $basearch:基础平台;i386, x86_64 $YUM0-$YUM9:自定义变量 实例: http://server/centos/$releasever/$basearch/ http://server/centos/7/x86_64 http://server/centos/6/i384 yum源   yum源 阿里云repo文件: http://mirrors.aliyun.com/repo/ CentOS系统的yum源 阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/ 教学环境: http://172.20.0.1/cobbler/ks_mirror/$releasever/ EPEL的yum源: 阿里云: https://mirrors.aliyun.com/epel/$releasever/x86_64 教学环境: http://172.20.0.1/fedora-epel/$releasever/x86_64/     yum命令 yum命令的用法: yum [options] [command] [package ...] 显示仓库列表: yum repolist [all|enabled|disabled] 显示程序包: yum list yum list [all | glob_exp1] [glob_exp2] [...] yum list {available|installed|updates} [glob_exp1] [...] 安装程序包: yum install package1 [package2] [...] yum reinstall package1 [package2] [...] (重新安装) 升级程序包: yum update [package1] [package2] [...] yum downgrade package1 [package2] [...] (降级) 检查可用升级: yum check-update 卸载程序包: yum remove | erase package1 [package2] [...] 查看程序包information: yum info [...] 查看指定的特性(可以是某文件)是由哪个程序包所提供: yum provides | whatprovides feature1 [feature2] [...] 清理本地缓存: 清除/var/cache/yum/$basearch/$releasever缓存 yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 构建缓存: yum makecache 搜索:yum search string1 [string2] [...] 以指定的关键字搜索程序包名及summary信息 查看指定包所依赖的capabilities: yum deplist package1 [package2] [...] 查看yum事务历史: yum history [info|list|packages-list|packages-info| summary|addon-info|redo|undo| rollback|new|sync|stats] yum history yum history info 6 yum history undo 6 日志 :/var/log/yum.log   安装及升级本地程序包: yum localinstall rpmfile1 [rpmfile2] [...] (用install替代) yum localupdate rpmfile1 [rpmfile2] [...] (用update替代) 包组管理的相关命令: yum groupinstall group1 [group2] [...] yum groupupdate group1 [group2] [...] yum grouplist [hidden] [groupwildcard] [...] yum groupremove group1 [group2] [...] yum groupinfo group1 [...]     yum repolist enabled 仅显示激活的仓库,默认 all 显示所有的仓库 disabled 仅显示禁用的仓库 先挂载光盘 mount /dev/sr0 /media/ cd /etc/yum umount 卸载光盘 写配置文件vim yum.repos.d #!/bin/bash mkdir /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backupi cat > /etc/yum.repos.d/media.repo <<end yum源本地配置 vim yum.repo [base] name=base baseurl=file:///media gpgcheck=0   [epel] name=epel baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64/ gpgcheck=0 end   yum repolist 初始化文件 相当于刷新。看yum搭建成功了没 yum install +(要安装的东西)比如tree 安装 yum clean all 清除yum缓存,有存储安装   本地安装 [base] name=magedu centos $releasever dvd baseurl=http://172.18.0.1/centos/$releasever enabled=1 网络安装 [epel] name=magedu centos $releasever dvd baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/ enabled=1   yum-config-manager --add-repo=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64     yum list [all] @anaconda 表示操作系统安装时所安装的软件包 installed 表示操作系统安装后,手工通过rpm、yum、dnf所安装的软件包 除以上两种,其他的表示未安装的软件包,@name 显示包来源于哪个repo id   available 只显示未安装的包 installed 只显示已安装的,包括@anaconda和installed的 updates 只显示可更新包 yum update   yum install httpd yum reinstall httpd     lscpu命令 :查看cpu的详细信息 free:查看内存信息 cat /proc/meminfo :查看内存信息 unsit:删除变量 $$:查看当前进程 pstree -p 查看进程 name= set :查看变量 set|grep PS1,PS1:是命令提示符,改颜色 echo $_ :调用上一次参数的变量 !$:上一条命令的最后一个参数的调用     [root@feng ~]# name=test;(echo $name) test [root@feng ~]# name=test;(echo $name; name=222;echo $name);echo $name test 222 test     scp +脚本名+IP地址 :直接将脚本考到其他IP地址中     #!/bin/bash name=etc`date +%F` cp -a /etc/ /root/$name   cp -a /etc/ /root/etc$(date "+%Y-%m-%d")   #!/bin/bash scp $* wang@172.18.1.124   直接:bash scp.sh scp.sh yum info provides [whatprovides] 查看文件来自于哪个rpm包 provides "*bin/tree" clean all 清空缓存 makecache 构建缓存 search pkgname 以指定的关键字搜索程序包名及summary信息 deplist pkgname 查询指定的包依赖哪些能力及所提供的包 yum history yum history info 6 yum history undo 6 *** yum history redo 6   localinstall[install] rpm文件。使用yum安装指定的rpm文件,并利用yum安装所依赖 的文件。 locaupdate[update] rpm文件。使用yum更新指定的rpm文件,并利用yum更新所依赖的文件 包组 grouplist groupinfo 包组名 yum groupinstall "Development Tools" yum install --downloadonly --downloaddir=/app httpd-manual 仅下载不安装     使用本地光盘做为yum源 1.mount /dev/cdrom /media/ 2.vim /etc/yum.repos.d/dvd.repo [base] name=magedu centos $releasever dvd baseurl=file:///media enabled=1 gpgcheck=1 gpgkey=file:///media/RPM-GPG-KEY-CentOS-7   自建仓库 createrepo /app/rpm/   实验:在centos7上编译安装 httpd 2.4   1.下载源码包 lftpget ftp://172.18.0.1/pub/Sources/sources/httpd/httpd-2.4.25.tar.bz2 2.2.32   2.安装Development Tools yum -y groupinstall "Development Tools" 3.解压 tar xvf httpd-2.4.25.tar.bz2 一般情况下把源码解压的文件 cd/usrlocal/src 并查看README和INSTALL以及./configure --help 4.配置 ./configure --prefix=/app/apache24 --sysconfdir=/etc/apache24 dnf -y install apr-devel apr-util-devel pcre-devel 5.make   6.make install   7.将执行命令和帮助文档的路径写入PATH vim /etc/profile.d/env.sh export PATH=/app/apache24/bin/:$PATH source /etc/profile.d/env.sh [root@instructor_v7(nanyibo) ~]# vim /etc/man_db.conf MANDATORY_MANPATH /app/apache24/man   7.启动服务 并 关闭防火墙 apachectl start iptables -F       实验:在centos6上编译安装 httpd 2.2       vim /etc/yum 1yum install openssl-devel 安装 2在网上下载 。 heepd-2.4.34.tarbz2 传到/xia mkdir src mv 文件 src 3 解压缩包:tar xvf heepd-2.4.34.tar 在src下生成一个heepd-2.4.34.文件4 cd heepd-2.4.3 执行那三步必须进入heepd-2.4.3里 4 ,ls 下有一个绿色的configure脚本,如果没有需要用工具生成 enable 启用... disable 禁用... ./configure \ --prefix=/app \ 总文件夹 --sysconfdir=etc/httpd22 \duli 阿发起软件独立出来。用--sysconfdir,默认 就不会放到app下 配置文件夹 --enable-ssl 完了后直接粘贴到./configure \ 下     . /configure --prefix=/app --enable-http2(装第二个)     ./configure \ 这个脚本运行的时候,除了启用那些禁用那些功能,还会检查当前的环境是否把那些必要的依赖包都装好了,如果缺的话会报提示 5,把那些依赖包都安装下 yum install +包名 echo $? 0 就没有依赖的包了 7 命令:make -j +4(cpu的个数 ) 个数多速度就快 可以报警提示echo -e "\a"   make -j 4 && echo -e "\a" && sleep 1 && echo -e "\a" 如果执行,报警休眠1秒。。。。   8 make install 自动生成文件夹 9最后一步:bin/apachctl start 这个是不在变量里面 他是在cd /app/bin/apachctl 要运行这个要决定路劲也可以加到PATH变量里面 vim /etc/profile.d/env.sh PATH= /app/bin:$PATH 生效:. /etc/profile.d/env.sh echo $PATH 在任何目录下都可以跑这个程序了 apachectl start 启动起来 命令:ss -ntl   一键安装centos6 编译 httpd2.2 source +脚本 生效该脚本   加入安装一个ifstat [root@centos7 ~]#which ifstat /usr/sbin/ifstat [root@centos7~]#rpm -qf /usr/sbin/ifstat iproute-3.10.0-87.el7.x86_64 [root@centos7 ~]#cd Packages/ rpm -ivh iproute-3.10.0-87.el7.x86_64 直接安装  
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄