《Linux系统管理》
(1)磁盘和文件系统管理;
(2)RAID, LVM; btrfs;
(3)程序包管理:rpm, yum(dnf)
(4)Linux的网络管理;
(5)进程和作业管理:htop, glances, tsar;
(6)sed和awk;
(7)Linux系统的开机启动流程;
(8)内核基础知识,内核定制编译;
(9)系统安装:kickstart, pxe
一、作业(练习)内容:
1、总结rpm和yum实现程序包的管理功能.
要求:作业要图文并茂
二、完成时间:
2015年9月15日之前。
三、完成步骤:
《程序包管理:rpm,yum》
目录:
1.程序包的组成部分
2.包管理器
3.rpm软件管理
1)rpm包说明
2)如何获取rpm包
3)rpm命令:实现对程序包管理
(1)安装
(2)升级
(3)卸载
(4)查询
(5)校验
4.YUM软件管理
1)YUM程序的配置文件
2)yum命令:
(1)安装
(2)卸载
(3)升级
(4)查询
3)创建自己的本地yum仓库
1.程序包的组成部分
二进程序:/bin,/sbin,/usr/bin,/usr/sbin
库文件:/lib64,/usr/lib64
配置文件:/etc
帮助文件:manual,info,INSTALL,
2.包管理器
Debian的软件包管理工具命令:dpkg,apt-get
CentOS/Redhat常用软件包管理工具命令:rpm,yum
3.rpm包
1)rpm包说明
RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。与 RPM 进行竞争的是基于 Debian 操作系统 (UBUNTU) 的 DEB 软件包管理工具- DPKG,全称为 Debian Package,功能方面与 RPM 相似。二者之具体比较不在本文范围之内。
2)如何获取rpm包
(1)发行版提提供的程序包
(2)Fedora-EPEL
(3)项目的官方站点
(4)搜索引擎
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
3)rpm命令:实现对程序包管理
RPM软件包常用的命令规范如下:
lrzsz-0.12.20-36.el7.x86_64.rpm
说明:
lrzsz :软件名字
0.12.20-36:软件版本号,
el7:针对于RHEL7的发现版本,
x86_64:表示运行在64位上的系统。
(1)安装
rpm -ivh PACKAGE_FILE
-i 安装rpm包
-v:显示详细信息
-h:显示文本进度条
--nodeps:忽略依赖关系安装
--relacepkgs:重装程序包
示例:安装
[root@localhost ~]# mount /dev/cdrom /mnt mount: /dev/sr0 is write-protected, mounting read-only [root@localhost ~]# cd /mnt/Packages/ [root@localhost Packages]# rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:lrzsz-0.12.20-36.el7 ################################# [100%]
(2)升级
rpm-[Uvh|Fvh_ PACKAGE_FILE
-Uvh:如果有旧版程序包,则升级之,如果没有,则安装之;
-Fvh:如果有旧版程序包,则升级之,如果没有,则不安装;
--oldpackage:降级;
--force:强制安装。
(3)卸载
rpm-e RACKAGE_NAME
示例:
[root@localhost Packages]# rpm -e lrzsz [root@localhost Packages]# rpm -qa lrzsz
(4)查询
rpm-q PACKAGE_NAME
查询选项:
-qa:查询本机已经安装的所有程序包;
-qf /PATH/TO/SOMEFILE:查询此处的文件由哪个程序包安装生成;
-qc:查询指定程序包安装生成的配置文件
-qd:查询指定的程序包安装生成的文档
-qi:查询指事实上的程序包的相关信息;
-ql:查询程序包安装生成的所有文件的列表;
-q --scripts:查询程序包相关的脚本;
preinstall:安装前脚本
postinstall:安装后脚本
preuninstall:卸载前脚本
postiuninstall:卸载后脚本
-p:查询针对是未安装的程序外文件
RPM常用查询命令:
rpm -qa 列出所有已安装的rpm软件
rpm -qf filename 查询指定文件属于哪个rpm包
rpm -qi packagename 查询已软件包的信息
rpm -ql packagename 查询指定软件包包含的文件
rpm -qip software.rpm 查询rpm文件的信息
rpm -qilp software.rpm 查询rpm文件包含的文件
示例:
[root@LiuHui Packages]# rpm -qa lrzsz lrzsz-0.12.20-36.el7.x86_64 [root@LiuHui ~]# rpm -qa tuned-2.4.1-1.el7.noarch centos-release-7-1.1503.el7.centos.2.8.x86_64 aic94xx-firmware-30-6.el7.noarch filesystem-3.2-18.el7.x86_64 openssh-server-6.6.1p1-11.el7.x86_64 ncurses-base-5.9-13.20130511.el7.noarch openssh-clients-6.6.1p1-11.el7.x86_64 linux-firmware-20140911-0.1.git365e80c.el7.noarch selinux-policy-targeted-3.13.1-23.el7.noarch [root@LiuHui Packages]# rpm -qip lrzsz-0.12.20-36.el7.x86_64.rpm Name : lrzsz Version : 0.12.20 Release : 36.el7 Architecture: x86_64 Install Date: (not installed) Group : Applications/Communications Size : 184846 License : GPLv2+ Signature : RSA/SHA256, Thu 03 Jul 2014 11:35:32 PM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : lrzsz-0.12.20-36.el7.src.rpm Build Date : Mon 09 Jun 2014 07:29:11 PM EDT Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.ohse.de/uwe/software/lrzsz.html Summary : The lrz and lsz modem communications programs Description : Lrzsz (consisting of lrz and lsz) is a cosmetically modified zmodem/ymodem/xmodem package built from the public-domain version of the rzsz package. Lrzsz was created to provide a working GNU copylefted Zmodem solution for Linux systems. [root@LiuHui ~]# rpm -ql lrzsz /usr/bin/rb /usr/bin/rx /usr/bin/rz /usr/bin/sb /usr/bin/sx /usr/bin/sz /usr/share/locale/de/LC_MESSAGES/lrzsz.mo /usr/share/man/man1/rz.1.gz /usr/share/man/man1/sz.1.gz
(5)校验
rpm -K software.rpm #验证rpm文件
rpm -V softname #验证已安装的软件
验证通常是使用非对称的加密算法,所以就需要一个密钥。一般的RPM软件包里面都加入了密钥,如果没有加入我们可以通过 rpm --import RPM-GPG-KEY-CentOS-6 命令手动加入即可。
示例:
[root@LiuHui Packages]# rpm -K lrzsz-0.12.20-36.el7.x86_64.rpm lrzsz-0.12.20-36.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK [root@LiuHui Packages]# rpm -V audit [root@LiuHui Packages]#
如果没有出现任何错误,就表示该软件是完整的,没有被修改。
4.YUM软件管理
使用YUM的特点:
(1)自动解决依赖性问题
(2)可以对RPM进行分组,并基于组来进行安装操作
(3)引入了仓库的概念,支持多个仓库
(4)配置简单
仓库可以是本地的,也可是互联网上的,可以通过http、ftp或者nfs等形式使用集中的、统一的网络仓库
1)yum程序的配置文件
(1)/etc/yum.conf
定义全局配置:对所有创库都适用的配置
(2)/etc/yum.repos.d/*.repo
定义一个以.repo结尾的文件常用于一个或一组功能相近或相关的仓库
(3)定义一个仓库指向
示例:
[root@LiuHui yum.repos.d]# cat CentOS-bendi.repo [bendi] #仓库名字 name=This is beidi cdrom's rpm soft repo #仓库描述 baseurl=file:///mnt/ #仓库地址,可以是http,ftp,nfs等网络仓库地址,这是里本地仓库地址 enabled=1 #1表示使用这个仓库,默认就是1 gpgcheck=1 #是否启用软件校验,
2)yum命令:
(1)安装 install
(2)卸载 remove
(3)升级 update
(4)查询
yum search 关键字
yum list (all|installed|recent|updates) #列出全部的、安装的、最近的、更新的软件
yum info packagename #显示软件信息
-y #自动安装,不用确认
示例:
[root@LiuHui ~]# yum install lrzsz Loaded plugins: fastestmirror base | 3.6 kB 00:00 epel/x86_64/metalink | 4.9 kB 00:00 epel | 4.3 kB 00:01 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 (1/2): epel/x86_64/primary_db | 3.5 MB 00:40 epel/x86_64/updateinfo FAILED http://mirrors.isu.net.sa/pub/fedora/fedora-epel/7/x86_64/repodata/6822870af83ae6bcdbfeded540fb33c3c5f8a5dcd3c16d283f3d7dc4ad351b32-updateinfo.xml.bz2: [Errno 12] Timeout on http://mirrors.isu.net.sa/pub/fedora/fedora-epel/7/x86_64/repodata/6822870af83ae6bcdbfeded540fb33c3c5f8a5dcd3c16d283f3d7dc4ad351b32-updateinfo.xml.bz2: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds') Trying other mirror. (2/2): epel/x86_64/updateinfo | 355 kB 00:04 Loading mirror speeds from cached hostfile * base: mirrors.163.com * epel: ftp.cuhk.edu.hk * extras: mirrors.aliyun.com * updates: mirrors.sina.cn Resolving Dependencies --> Running transaction check ---> Package lrzsz.x86_64 0:0.12.20-36.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================== Package Arch Version Repository Size ============================================================== Installing: lrzsz x86_64 0.12.20-36.el7 base 78 k Transaction Summary ============================================================== Install 1 Package Total download size: 78 k Installed size: 181 k Is this ok [y/d/N]: y Downloading packages: lrzsz-0.12.20-36.el7.x86_64.rpm | 78 kB 00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : lrzsz-0.12.20-36.el7.x86_64 1/1 Verifying : lrzsz-0.12.20-36.el7.x86_64 1/1 Installed: lrzsz.x86_64 0:0.12.20-36.el7 Complete! [root@LiuHui ~]# yum remove lrzsz Loaded plugins: fastestmirror Resolving Dependencies --> Running transaction check ---> Package lrzsz.x86_64 0:0.12.20-36.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ============================================================== Package Arch Version Repository Size ============================================================== Removing: lrzsz x86_64 0.12.20-36.el7 @base 181 k Transaction Summary ============================================================== Remove 1 Package Installed size: 181 k Is this ok [y/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Erasing : lrzsz-0.12.20-36.el7.x86_64 1/1 Verifying : lrzsz-0.12.20-36.el7.x86_64 1/1 Removed: lrzsz.x86_64 0:0.12.20-36.el7 Complete! [root@LiuHui ~]# [root@LiuHui ~]# yum clean all #清除yum缓存 Loaded plugins: fastestmirror Cleaning repos: base bendi epel extras updates Cleaning up everything Cleaning up list of fastest mirrors [root@LiuHui ~]# yum list #列出仓库 Loaded plugins: fastestmirror base | 3.6 kB 00:00 bendi | 3.6 kB 00:00 epel/x86_64/metalink | 5.3 kB 00:00 epel | 4.3 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00
3)创建自己的本地yum仓库
(1)创建本地yum仓库
[root@LiuHui ~]#mount /dev/cdrom /mnt [root@LiuHui yum.repos.d]# mkdir /bendi.yum [root@LiuHui yum.repos.d]# cd /bendi.yum/ [root@LiuHui bendi.yum]# cp -rv /mnt/Packages/* .
(2)创建repo文件
[root@LiuHui yum.repos.d]# cat bendi.repo [bendi] name=This is bendi's yum repo baseurl=file:///bendi.yum/
(3)安装createrepo
[root@LiuHui Packages]# rpm -ivh createrepo-0.9.9-23.el7.noarch.rpm Preparing... ################################# [100%] Updating / installing... 1:createrepo-0.9.9-23.el7 ################################# [100%]
(4)创建索引
[root@LiuHui bendi.yum]# createrepo -v .
注:需要将网络yum源移动到备份文件夹下。再清空缓存,列出仓库下的包
[root@LiuHui yum.repos.d]# mkdir back [root@LiuHui yum.repos.d]# mv CentOS-* epel* back/ [root@LiuHui yum.repos.d]# ls back bendi.repo [root@LiuHui repodata]# yum clean all Loaded plugins: fastestmirror Cleaning repos: bendi Cleaning up everything [root@LiuHui repodata]# yum list Loaded plugins: fastestmirror bendi | 2.9 kB 00:00 bendi/primary_db | 2.7 MB 00:00 Determining fastest mirrors Installed Packages