7.1 安装软件包的三种方法
- RPM工具
RPM(Redhat Package Manager)软件包管理器,是以一种数据库记录的方式将用户所需要的套件安装到Linux主机的一套管理程序。RPM包是预先在Linux机器上编译好并打包好的文件,安装快捷。缺点是安装环境必须与编译环境一致或相当;包与包之间存在着相互依赖的情况,卸载包时需要先把依赖的包卸载,如果依赖的包是系统所必须的,就不能卸载这个包,否则系统会崩溃。
- yum工具
yum(Yellow dog Updater Modified)的宗旨是自动化地升级、安装和删除RPM软件包,收集RPM软件包的相关信息,检查依赖性并且一次安装所有依赖的软件包,无须繁琐地一次次安装。
- 源码包
在Linux下安装源码包是最常用的。安装源码包,需要把源代码编译成可执行的二进制文件。用户可以修改这些源代码的自定义功能,然后再根据需求编译。
7.2 rpm包介绍
设置光驱并挂载
如果你的虚拟机光驱中还有系统安装盘镜像,可以通过执行如下命令把光驱挂载到/mnt目录下。先检查一下VMware右下角的小光驱图标是否点亮,如果没有,点击一下,再点击“连接”就可以点亮它。当挂载光驱后,会在/mnt/Packages目录下看到很多后缀为.rpm的文件,这些文件就是RPM包。
[root@greenfinch Packages]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 22G 1.3G 21G 6% /
devtmpfs 2.4G 0 2.4G 0% /dev
tmpfs 2.4G 0 2.4G 0% /dev/shm
tmpfs 2.4G 8.6M 2.4G 1% /run
tmpfs 2.4G 0 2.4G 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 480M 0 480M 0% /run/user/0
[root@greenfinch Packages]# mount /dev/cdrom /mnt/ ## 挂载光驱
mount: /dev/sr0 写保护,将以只读方式挂载
[root@greenfinch Packages]# ls /mnt/
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@greenfinch Packages]# ls ## 查看 Packages 目录的内容
yum-3.4.3-150.el7.centos.noarch.rpm
yum-langpacks-0.4.2-7.el7.noarch.rpm
yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
yum-plugin-aliases-1.1.31-40.el7.noarch.rpm
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.noar
…… ## 文件很多,不再一一列出。
rpm包格式:包名、版本号、发布版本号、平台
7.3 rpm工具用法
- rpm命令中常用组合选项的含义:
- [ ] rpm -ivh 包名:-i表示安装, -v表示可视化, -h显示安装进度
- [ ] rpm -U 包名:Upgrade,升级软件包
- [ ] rpm -e 包名:卸载软件包
- [ ] rpm -qa:查询所有已安装的软件包
- [ ] rpm -q 包名:查询指定的“包名”是否安装
- [ ] rpm -qi 包名:查询指定包的信息
- [ ] rpm -ql 包名:列出包安装的文件
- [ ] rpm -qf 文件绝对路径:查看一个文件是由哪些包安装的。
见下面的例子:当不知道其绝对路径时,使用which命令查询。
[root@greenfinch Packages]# rpm -qf `which cd`
bash-4.2.46-20.el7_2.x86_64
[root@greenfinch mnt]# which cd ## which命令用于查找并显示给定命令的绝对路径
/usr/bin/cd
[root@greenfinch mnt]# rpm -qf /usr/bin/cd ## 通过其绝对路径查询到其安装包
bash-4.2.46-20.el7_2.x86_64
上例中使用了反引号`。先执行“which cd”命令,其次将“which cd”的结果作为“rpm -qf”的参数执行该命令。
反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。即,在命令行上把Linux命令放在反引号中,这个命令会首先被执行,然后将其结果作为为该命令行的一个参数。
7.4 yum工具用法
- 列出所有rpm包:yum list
从左向右:第一列是包名,第二列是版本号,第三列是库信息。如果已安装,最右侧的库信息将显示@base、@updates或者@anaconda。如果未安装,则显示base或者anaconda;如果RPM包已安装但需要升级,则显示updates。
yum的配置文件:/etc/yum.repos.d/CentOS-Base.repo。该文件里有rpm包所在库base的镜像地址信息。
- 搜索rpm包:yum search。使用该命令搜索时会列出所有包含关键词的信息,不精确,为了只搜索相关rpm包,可用如下方法(其中的grep意为过滤):
[root@greenfinch mnt]# yum list |grep 'vim'
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
golang-vim.noarch 1.3.3-2.el7_0 extras
protobuf-vim.x86_64 2.5.0-8.el7 base
vim-X11.x86_64 2:7.4.160-1.el7_3.1 updates
vim-minimal.x86_64 2:7.4.160-1.el7_3.1 updates
- 安装rpm包:yum install [-y] [RPM包名]
如果不加-y选项,则会以与用户交互的方式安装。首先是列出需要安装的RPM包,然后会问用户是否需要安装,输入Y则安装,输入N则不安装。
- 卸载rpm包:yum remove [-y] [包名]
说明:-y选项将活力与用户的交互,直接操作。该命令卸载时会将目标文件所依赖的所有包同时删除,所以要看清楚,不要加-y选项。
- 升级rpm包:yum update [-y] [包名]
说明: 不加包名,会升级系统内所有包以及系统本身。慎用!
- 列出rpm包组:yum grouplist
- 安装rpm包组:yum groupinstall [-y] [包的组名]
- yum provides:通过已知命令名称来搜索其rpm包名。
示例:[root@greenfinch mnt]# yum provides "/*/vim"
说明:该命令位置不确定,所以进行搜索时使用*这个通配符来代表其路径。
7.5 yum搭建本地仓库
当Linux系统不能联网,无法搜索网络上的yum源时,可以通过创建本地仓库,用Linux系统光盘的镜像文件,制作一个本地的yum源。关键步骤如下:
- 挂载镜像 mount /dev/cdrom /mnt
- cp -r /etc/yum.repos.d /etc/yum.repos.d.bak ## 备份yum的原repos.d文件
- rm -rf /etc/yum.repos.d/* ## 删除.repo文件
- vim /etc/yum.repos.d/dvd.repo ## 创建一个本地源文件
- 在dvd.repo文件下增加如下内容:
- [dvd]
- name=install dvd
- baseurl=file:///mnt ## 本地仓库地址
- enable=1
- gpgcheck=0
- yum clean all 清除缓存
配置完成后便可直接使用yum安装所需要的rpm包。如果不想使用本地yum源,需要删除/etc/yum.repos.d/dvd.repo文件,并恢复原来的配置文件。