rpm(Redhat Package Manager)RPM软件包管理器,是以一种数据库记录的方式来将咱们所须要的套件安装到Linux主机的一套管理程序。rpm包是预先在Linux机器上编译好并打包好的文件,安装起来很是快捷。可是有一个缺点:安装环境必须与编译时的一致或至关;包与包之间存在着相互依赖的状况,安装或卸载包时须要先把依赖的包安装/卸载,若是依赖的包时系统所必须的,那就不能卸载这个包。html
yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可使系统管理人员交互和自动化地更细与管理RPM软件包,可以从指定的服务器自动下载RPM包而且安装,能够自动处理依赖性关系,而且一次安装全部依赖的软体包,无须繁琐地一次次下载、安装。node
Linux软件的源代码分发是指提供了该软件全部程序源代码的发布形式,须要用户本身编译成可执行的二进制码并进行安装。其优势是配置灵活,能够随意去掉或保留某些功能/模块,适应多种硬件/操做系统平台及编译环境;缺点是难度较大。linux
挂载系统安装盘镜像(挂载到一个空目录,此处/mnt/目录未使用,因此直接挂载到/mnt/目录下)git
[root@3 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda3 28G 1.3G 27G 5% / devtmpfs 483M 0 483M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 6.8M 486M 2% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/sda1 197M 109M 88M 56% /boot tmpfs 99M 0 99M 0% /run/user/0 [root@3 ~]# mount /dev/cdrom /mnt/ mount: /dev/sr0 写保护,将以只读方式挂载 [root@3 mnt]# ls CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL [root@3 Packages]# ls yum-plugin-changelog-1.1.31-40.el7.noarch.rpm yum-plugin-fastestmirror-1.1.31-40.el7.noarch.rpm yum-plugin-tmprepo-1.1.31-40.el7.noarch.rpm yum-plugin-verify-1.1.31-40.el7.noarch.rpm yum-plugin-versionlock-1.1.31-40.el7.noarch.rpm …… (rpm包格式:包名、版本号、发布版本号、平台)
rpm包存放在Packages该文件下!golang
语法: rpm [options] [参数]
Options:
-i:=install,安装
-v:可视化
-h:显示安装进度
在安装一个rpm包时经常使用附带选项:
--force:强制安装
--nodeps:=no dependent 无依赖安装(忽视与其余包之间的依赖关系)数据库
[root@3 Packages]# rpm -ivh x86info-1.30-6.el7.x86_64.rpm 准备中... ################################# [100%] 正在升级/安装... 1:x86info-1:1.30-6.el7 ################################# [100%]
[root@3 Packages]# rpm -ivh yp-tools-2.14-3.el7.x86_64.rpm 错误:依赖检测失败: ypbind 被 yp-tools-2.14-3.el7.x86_64 须要 ## 即,两个包之间存在依赖关系 ## 解决办法: ①: [root@3 Packages]# rpm -iv hyp-tools-2.14-3.el7.x86_64.rpm yp-tools-2.14-3.el7.x86_64 ②: [root@3 Packages]# rpm -ivh --force yp-tools-2.14-3.el7.x86_64.rpm (添加--force或--nodeps选项便可安装)
说明: 安装有依赖关系的包时,能够先安装其所依赖的包再安装目标包(同时安装存在依赖关系的包),或者使用--force或--nodeps选项进行强行安装(不建议使用)。vim
语法: rpm [-U] [包名]centos
[root@3 Packages]# rpm -Uvh x86info-1.30-6.el7.x86_64.rpm Preparing... ################################# [100%] package x86info-1:1.30-6.el7.x86_64 is already installed
说明: 若是升级一个已经安装的最新版本的包,执行该命令后无任何操做。缓存
语法: rpm [-e] [包名]bash
[root@3 Packages]# rpm -e x86info-1.30-6.el7.x86_64.rpm error: package x86info-1.30-6.el7.x86_64.rpm is not installed [root@3 Packages]# rpm -e x86info
注: 卸载时直接跟报名,无需跟该包的信息;当包之间存在依赖关系时也须要先卸载其依赖包。
查询已安装的包
语法:
rpm [-q] [包名] 查询指定包
rpm [-qa] 查询全部已安装包
eg:
[root@3 Packages]# rpm -q kmod kmod-20-9.el7.x86_64 ######################################### [root@3 Packages]# rpm -qa |head -5 trousers-0.3.13-1.el7.x86_64 filesystem-3.2-21.el7.x86_64 net-tools-2.0-0.17.20131004git.el7.x86_64 bind-license-9.9.4-37.el7.noarch fxload-2002_04_11-16.el7.x86_64
查询已安装包的相关信息
语法: rpm [-qi] [包名]
i=information
[root@3 Packages]# rpm -qi filesystem Name : filesystem Version : 3.2 Release : 21.el7 Architecture: x86_64 Install Date: Mon May 22 01:19:49 2017 Group : System Environment/Base Size : 0 ……
查询某包所安装的文件
语法: rpm [-ql] [包名]
l=list
[root@3 Packages]# rpm -ql vim-enhanced /etc/profile.d/vim.csh /etc/profile.d/vim.sh /usr/bin/rvim /usr/bin/vim /usr/bin/vimdiff /usr/bin/vimtutor
查看某文件的安装包
语法: rpm [-qf] [文件绝对路径]
[root@3 Packages]# rpm -qf /usr/bin/vim vim-enhanced-7.4.160-1.el7_3.1.x86_64
即,经过其绝对路径查询到其安装包,当不知道其绝对路径时,使用which命令查询。
反引号命令
反引号的做用就是将反引号内的Linux命令先执行,而后将执行结果赋予变量。即,在命令行上把Linux命令放在反引号中,这个命令会首先被执行,而后将其结果做为为该命令行的一个参数。
eg:
[root@3 Packages]# rpm -qf `which cd` bash-4.2.46-20.el7_2.x86_64
说明: 先执行“which cd”命令,其次将“which cd”的结果做为“rpm -qf”的参数执行该命令。
语法: yum list
[root@3 Packages]# yum list Failed to set locale, defaulting to C Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.aliyun.com * updates: mirrors.tuna.tsinghua.edu.cn Installed Packages NetworkManager-libnm.x86_64 1:1.4.0-12.el7 @anaconda NetworkManager-team.x86_64 1:1.4.0-12.el7 @anaconda zsh.x86_64 5.0.2-25.el7_3.1 updates zsh-html.x86_64 5.0.2-25.el7_3.1 updates zziplib.i686 0.13.62-5.el7 base zziplib.x86_64 0.13.62-5.el7 base …… Exiting on Broken Pipe 注: 第一列是包名,第二列是版本号,第三列是库
说明: 库所在位置有“@”表示已安装;“updates”表示已安装,有新版本,须要升级;其余的表示可安装但还未安装的rpm包。
[root@3 Packages]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-fasttrack.repo CentOS-CR.repo CentOS-Media.repo CentOS-Vault.repo
[root@3 Packages]# cat /etc/yum.repos.d/CentOS-Base.repo # CentOS-Base.repo # …… [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 ……
说明: 该文件下有rpm包所在库base的镜像地址信息!
语法: yum search [关键词]
[root@3 Packages]# yum search vim Failed to set locale, defaulting to C Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.aliyun.com * updates: mirrors.tuna.tsinghua.edu.cn ====================================== N/S matched: vim ======================================= golang-vim.noarch : Vim plugins for Go protobuf-vim.x86_64 : Vim syntax highlighting vim-minimal.x86_64 : A minimal version of the VIM editor Name and summary matches only, use "search all" for everything.
说明: 使用该命令搜索时会列出全部包含‘vim’(关键词)的信息,不精确,为了只搜索相关rpm包,可用以下方法:
[root@3 Packages]# yum list |grep vim Failed to set locale, defaulting to C vim-common.x86_64 2:7.4.160-1.el7_3.1 @updates vim-enhanced.x86_64 2:7.4.160-1.el7_3.1 @updates vim-filesystem.x86_64 2:7.4.160-1.el7_3.1 @updates vim-minimal.x86_64 2:7.4.160-1.el7 @anaconda
说明: grep表示过滤。
语法: yum grouplist
[root@3 Packages]# yum grouplist Failed to set locale, defaulting to C Loaded plugins: fastestmirror There is no installed groups file. Maybe run: yum groups mark convert (see man yum) Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.aliyun.com * updates: mirrors.tuna.tsinghua.edu.cn Available Environment Groups: Minimal Install Compute Node …… Available Groups: Compatibility Libraries Console Internet Tools …… Done
语法: yum install [-y] [包名]
说明: 若是不加‘-y’选项,则会以与用户交互的方式安装。首先是列出须要安装的rpm包,而后会问用户是否须要安装,输入‘y’则安装,输入‘n’则不安装,这样太麻烦,因此直接加上‘-y’选项,省略与用户之间的交互。
语法: yum groupinstall [-y] [包的组名]
若是不知道组名,可用yum grouplist查看(注:进行安装时只能用英文名)。
语法: yum remove [-y] [包名]
说明: ‘-y’选项同install的用法,须要注意的是,在使用该命令进行卸载时会将目标文件所依赖的全部包同时删除,因此要谨慎使用!
语法: yum update [-y] [包名]
说明: 若是不加包名,则会升级系统内全部包以及系统自己(慎用,通常只在刚安装完系统时使用)。
该命令的做用是经过已知命令名称来搜索其rpm包名。
用法:
[root@3 Packages]# yum provides “/*/vim”
说明: 由于该命令位置不肯定,因此进行搜索时使用‘*’(通配符)来表明其路径。
有时候Linux系统没法联网,此时没法使用网上的yum源,须要咱们利用Linux系统光盘制做一个yum源。
挂载光盘——删除/etc/yum.repos.d/目录全部repo文件——建立新文件dvd.repo——清除原有缓存‘yum clean all’。
[root@3 ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak 备份原.repo文件 [root@3 ~]# cd /etc/yum.repos.d 切换目录 [root@3 yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-fasttrack.repo CentOS-CR.repo CentOS-Media.repo CentOS-Vault.repo [root@3 yum.repos.d]# rm -rf ./* 删除原有repo文件 [root@3 yum.repos.d]# vim dvd.repo “ [dvd] name=install dvd baseurl=file:///mnt enable=1 gpgcheck=0 ” 此部份内容除baseurl目录根据我的实际操做更改外,其他内容固定。 [root@3 yum.repos.d]# yum clean all 清除系统原有缓存 Failed to set locale, defaulting to C Loaded plugins: fastestmirror Cleaning repos: dvd Cleaning up everything Cleaning up list of fastest mirrors [root@3 ~]# yum list …… Available Packages 还未安装的可安装rpm包的库都变成dvd ypserv.x86_64 2.31-8.el7 dvd yum-langpacks.noarch 0.4.2-7.el7 dvd yum-plugin-aliases.noarch 1.1.31-40.el7 dvd yum-plugin-changelog.noarch 1.1.31-40.el7 dvd yum-plugin-tmprepo.noarch 1.1.31-40.el7 dvd ……
配置完成后即可直接使用yum安装所须要的rpm包。若是不想使用本地yum源,须要删除/etc/yum.repos.d/dvd.repo文件,而后恢复原来的配置文件。
能够设置使yum保留已经下载的rpm包,供之后升级或从新安装时使用。
修改/etc/yum/conf便可:
[main] cachedir=/home/soft1/yumcache keepcache=1 debuglevel=2
cachedir是放置下载的包的地方,能够修改为本身想放置的位置。
keepcache为1时表示保存已经下载的rpm包。
yum安装或二进制包安装.
把CentOS的DVD1和DVD2.iso都下载下来,把DVD1.iso里的全部内容解压出来,放到/var/www/html/centos-6目录下,而后把DVD2.iso解压出来的Packages目录下的rpm包复制到/var/html/centos-6/Packages目录下,这样/var/html/centos-6/Packages里面就有了6000多个rpm包。
准备createrepo:yum -y install createrepo
建立repository:createrepo /var/www/html/centos-6/
建立完成以后,会在/var/www/html/centos-6/repodata下生成一些文件。
在其余centos机器上试试软件源能不能用。
# cd /etc/yum.repos.d/ # mkdir bk # mv *.repo bk/ # cp bk/CentOS-Base.repo ./ # vi CentOS-Base.repo
[base] name=CentOS-$releasever - Base baseurl=http://*.*.*.*/centos-6/ gpgcheck=1(改为0下面那行就不用设置了) gpgkey=http:///*.*.*.*/centos-6/RPM-GPG-KEY-CentOS-6 enabled=1 #released updates #[updates] #name=CentOS-$releasever - Updates #baseurl=http:///*.*.*.*/centos-6/ #gpgcheck=1 #gpgkey=http:///*.*.*.*/centos-6/RPM-GPG-KEY-CentOS-6 #enabled = 1
保存以后,就可使用局域网的软件源了:
# yum update