一、Linux下安装软件的三种方式
在Linux下安装软件有三种方式:rpm安装,yum安装,源码包安装。接下来,我们对这三种安装方式一一进行讲解。
二、rpm安装
rpm安装类似于windows自带的“安装/卸载”,通过rpm命令我们可以安装一些现成的二进制包。rpm安装的包的安装路径是固定的。
安装好光盘后,将它挂载到/mnt/,然后进到光盘中的Packages目录中,发现这里有很多包:
[root@ruanwenwu02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.4G 17G 8% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sr0 4.1G 4.1G 0 100% /mnt
[root@ruanwenwu02 ~]# cd /mnt/
[root@ruanwenwu02 mnt]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@ruanwenwu02 mnt]# cd Packages/
[root@ruanwenwu02 Packages]# ls
389-ds-base-1.3.5.10-11.el7.x86_64.rpm
389-ds-base-libs-1.3.5.10-11.el7.x86_64.rpm
abattis-cantarell-fonts-0.0.16-3.el7.noarch.rpm
abrt-2.1.11-45.el7.centos.x86_64.rpm
我们就拿这些包来做实验。在操作之前我们需要先了解一下包的结构。拿这个包abrt-2.1.11-45.el7.Centos.x86_64.rpm举例:
它被“-”分割开,abrt是包名;2.1.11的意思是主版本为2,次版本为1,修正号为11;centos是平台;x86_64是架构;rpm是文件后缀。
安装:
[root@ruanwenwu02 Packages]# rpm -ivh zlib-devdl
错误:打开 zlib-devdl 失败: 没有那个文件或目录
[root@ruanwenwu02 Packages]# rpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:zlib-devel-1.2.7-17.el7 ################################# [100%]
实验说明使用rpm安装包必须跟包的全名。
升级:
[root@ruanwenwu02 Packages]# rpm -Uvh zlib-devel-1.2.7-17.el7.x86_64.rpm
准备中... ################################# [100%]
软件包 zlib-devel-1.2.7-17.el7.x86_64 已经安装
我这里找不到升级包,就不再演示了。方法见代码。
卸载:
[root@ruanwenwu02 Packages]# rpm -e zlib-devel
[root@ruanwenwu02 Packages]# rpm -q zlib-devel
未安装软件包 zlib-devel
[root@ruanwenwu02 Packages]# rpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:zlib-devel-1.2.7-17.el7 ################################# [100%]
[root@ruanwenwu02 Packages]# rpm -q zlib-devel
zlib-devel-1.2.7-17.el7.x86_64
卸载的命令是rpm -e。实验发现下载之后就查询(rpm -q)不到了。再次安装就能查询到了。
查询所有已经安装的包:
[root@ruanwenwu02 Packages]# rpm -qa "vim*"
vim-minimal-7.4.160-1.el7.x86_64
vim-filesystem-7.4.160-2.el7.x86_64
vim-enhanced-7.4.160-2.el7.x86_64
vim-common-7.4.160-2.el7.x86_64
发现我们已经安装了这么多包了。
查询是否安装:
[root@ruanwenwu02 Packages]# rpm -qa "ls"
[root@ruanwenwu02 Packages]# rpm -qf "ls"
错误:文件 /mnt/Packages/ls:没有那个文件或目录
[root@ruanwenwu02 Packages]# rpm -qf /usr/bin/ls
coreutils-8.22-18.el7.x86_64
[root@ruanwenwu02 Packages]# rpm -qa "coreutils"
coreutils-8.22-18.el7.x86_64
[root@ruanwenwu02 Packages]# rpm -qa coreut
[root@ruanwenwu02 Packages]# rpm -qa coreutils
coreutils-8.22-18.el7.x86_64
[root@ruanwenwu02 Packages]# rpm -qa coreutil
实验发现,rpm -qa命令必须接包名或者模糊包名,引号可加可不加,但是如果是模糊查找的话,必须加引号:
[root@ruanwenwu02 Packages]# rpm -qa vim*
[root@ruanwenwu02 Packages]# rpm -qa "vim*"
vim-minimal-7.4.160-1.el7.x86_64
vim-filesystem-7.4.160-2.el7.x86_64
vim-enhanced-7.4.160-2.el7.x86_64
vim-common-7.4.160-2.el7.x86_64
[root@ruanwenwu02 Packages]# rpm -qa 'vim*'
vim-minimal-7.4.160-1.el7.x86_64
vim-filesystem-7.4.160-2.el7.x86_64
vim-enhanced-7.4.160-2.el7.x86_64
查询包信息:
[root@ruanwenwu02 Packages]# rpm -qi vim-enhanced
Name : vim-enhanced
Epoch : 2
Version : 7.4.160
Release : 2.el7
Architecture: x86_64
Install Date: 2017年10月18日 星期三 19时16分34秒
Group : Applications/Editors
Size : 2292098
License : Vim
查询包安装的文件:
[root@ruanwenwu02 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
查询命令是哪个包的:
[root@ruanwenwu02 Packages]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-2.el7.x86_64
三、yum常用命令
yum常用命令有安装,升级,卸载,重新安装,groupinstall,groupremove,下载rpm包,清除yum源缓存。
yum安装的优点是它能自动解决包的依赖问题。
安装:
[root@ruanwenwu02 etc]# yum -y install zziplib
已加载插件:fastestmirror, priorities
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
rpmforge | 1.9 kB 00:00:00
updates | 3.4 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* rpmforge: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
197 packages excluded due to repository priority protections
软件包 zziplib-0.13.62-5.el7.x86_64 已安装并且是最新版本
无须任何处理
yum -y install后面写包名就好了。-y参数的作用就是不要再询问是否安装了,默认进行安装。
重新安装:
[root@ruanwenwu02 etc]# yum -y reinstall zziplib
已加载插件:fastestmirror, priorities
Loading mirror speeds from cached hostfile
* base: mirrors.sohu.com
* extras: mirrors.sohu.com
* rpmforge: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.sohu.com
197 packages excluded due to repository priority protections
正在解决依赖关系
--> 正在检查事务
---> 软件包 zziplib.x86_64.0.0.13.62-5.el7 将被 已重新安装
--> 解决依赖关系完成
依赖关系解决
===============================================================================================================
Package 架构 版本 源 大小
===============================================================================================================
重新安装:
zziplib x86_64 0.13.62-5.el7 base 81 k
事务概要
===============================================================================================================
重新安装 1 软件包
总下载量:81 k
安装大小:211 k
Downloading packages:
zziplib-0.13.62-5.el7.x86_64.rpm | 81 kB 00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
正在安装 : zziplib-0.13.62-5.el7.x86_64 1/1
验证中 : zziplib-0.13.62-5.el7.x86_64 1/1
已安装:
zziplib.x86_64 0:0.13.62-5.el7
完毕!
对于已经安装过的包,如果我们还想安装,就可以用这个yum -y reinstall命令。
yum list命令列出所有的包(安装的和未安装的):
zsync.x86_64 0.6.2-1.el6.rf rpmforge
zvbi.x86_64 0.2.33-2.el6.rf rpmforge
zvbi-devel.x86_64 0.2.33-2.el6.rf rpmforge
zziplib.i686 0.13.62-5.el7 base
zziplib-devel.i686 0.13.62-5.el7 base
zziplib-devel.x86_64 0.13.62-5.el7 base
zziplib-utils.x86_64 0.13.62-5.el7 base
最后一列代表是哪个yum源。
搜索:
[root@ruanwenwu02 etc]# yum search vim
已加载插件:fastestmirror, priorities
Loading mirror speeds from cached hostfile
* base: mirrors.sohu.com
* extras: mirrors.sohu.com
* rpmforge: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.sohu.com
197 packages excluded due to repository priority protections
============================================== N/S matched: vim ===============================================
perl-Vim-Tag.noarch : Generate Perl tags for Vim
protobuf-vim.x86_64 : Vim syntax highlighting for Google Protocol Buffers descriptions
vim-X11.x86_64 : The VIM version of the vi editor for the X Window System
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements
vim-filesystem.x86_64 : VIM filesystem layout
vim-minimal.x86_64 : A minimal version of the VIM editor
vim-puppet.noarch : Vim mode for Puppet
vim-task.x86_64 : Vim support for TaskWarrior
名称和简介匹配 only,使用“search all”试试。
另一个搜索:
[root@ruanwenwu02 etc]# yum provides '/*/vim'
已加载插件:fastestmirror, priorities
Loading mirror speeds from cached hostfile
* base: mirrors.sohu.com
* extras: mirrors.sohu.com
* rpmforge: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.sohu.com
197 packages excluded due to repository priority protections
rpmforge/filelists_db | 2.3 MB 00:00:01
cmake-2.8.12.2-2.el7.x86_64 : Cross-platform make system
源 :base
匹配来源:
文件名 :/usr/share/cmake/editors/vim
2:docker-unit-test-1.12.6-48.git0fdc778.el7.centos.x86_64 : Automates deployment of containerized applications
: - for running unit tests
源 :extras
匹配来源:
文件名 :/var/lib/docker-unit-test/docker-novolume-plugin-385ec70baac3ef356f868f391c8d7818140fbd44/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
文件名 :/var/lib/docker-unit-test/contrib/syntax/vim
文件名 :/var/lib/docker-unit-test/v1.10-migrator-c417a6a022c5023c111662e8280f885f6ac259be/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
文件名 :/var/lib/docker-unit-test/runc-79c3939053c870fbb4de5484d98640d5ba028ef4/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
文件名 :/var/lib/docker-unit-test/containerd-fa8fb3d455e1baf716f3131581f0ed8b07c573a6/vendor/src/github.com/docker/docker/contrib/syntax/vim
实验发现,通过yum provides命令可以查看到是哪个源的哪个包包含了这个vim命令。
删除包:
[root@ruanwenwu02 etc]# yum remove zziplib
已加载插件:fastestmirror, priorities
正在解决依赖关系
--> 正在检查事务
---> 软件包 zziplib.x86_64.0.0.13.62-5.el7 将被 删除
--> 解决依赖关系完成
依赖关系解决
===============================================================================================================
Package 架构 版本 源 大小
===============================================================================================================
正在删除:
zziplib x86_64 0.13.62-5.el7 @base 211 k
事务概要
===============================================================================================================
移除 1 软件包
安装大小:211 k
是否继续?[y/N]:y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在删除 : zziplib-0.13.62-5.el7.x86_64 1/1
验证中 : zziplib-0.13.62-5.el7.x86_64 1/1
删除:
zziplib.x86_64 0:0.13.62-5.el7
完毕!
可以加上-y参数,这样就不会询问了。
升级包:
[root@ruanwenwu02 etc]# yum update zziplib
已加载插件:fastestmirror, priorities
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* rpmforge: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
197 packages excluded due to repository priority protections
软件包 zziplib 可用,但尚未安装。
No packages marked for update
注意,如果yum update后面没有跟指定的包名的话,那么会升级系统中所有可升级的包,包括内核,这样是很危险的。
查看组文件包:
[root@ruanwenwu02 etc]# yum grouplist;
已加载插件:fastestmirror, priorities
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirrors.sohu.com
* extras: mirrors.sohu.com
* rpmforge: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.sohu.com
197 packages excluded due to repository priority protections
可用的环境分组:
最小安装
基础设施服务器
计算节点
文件及打印服务器
基本网页服务器
虚拟化主机
带 GUI 的服务器
GNOME 桌面
KDE Plasma Workspaces
开发及生成工作站
可用组:
传统 UNIX 兼容性
兼容性程序库
图形管理工具
安全性工具
开发工具
控制台互联网工具
智能卡支持
科学记数法支持
系统管理
系统管理工具
完成
安装组件:
[root@ruanwenwu02 etc]# yum gruopinstall 'Security Tools'
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, priorities
No such command: gruopinstall. Please use /usr/bin/yum --help
[root@ruanwenwu02 etc]# yum groupinstall 'Security Tools'
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, priorities
删除组件:
[root@ruanwenwu02 etc]# yum groupremove
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, priorities
Error: Need a group or list of groups
Mini usage:
erase PACKAGE...
Remove a package or packages from your system
aliases: remove, autoremove, erase-n, erase-na, erase-nevra, autoremove-n, autoremove-na, autoremove-nevra, remove-n, remove-na, remove-nevra
清除yum源缓存:
[root@ruanwenwu02 etc]# yum clean all
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, priorities
Cleaning repos: base extras rpmforge updates
Cleaning up everything
Cleaning up list of fastest mirrors
清除yum源缓存之后,第一次运行yum相关命令会慢一点,因为它要生成yum缓存。
下载rpm包:
[root@ruanwenwu02 etc]# yum -y install --downloadonly zvbi
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.tuna.tsinghua.edu.cn
* rpmforge: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.aliyun.com
197 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package zvbi.x86_64 0:0.2.33-2.el6.rf will be installed
--> Processing Dependency: libpng12.so.0(PNG12_0)(64bit) for package: zvbi-0.2.33-2.el6.rf.x86_64
--> Processing Dependency: libpng12.so.0()(64bit) for package: zvbi-0.2.33-2.el6.rf.x86_64
--> Running transaction check
---> Package libpng12.x86_64 0:1.2.50-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================
Package Arch Version Repository Size
===============================================================================================================
Installing:
zvbi x86_64 0.2.33-2.el6.rf rpmforge 867 k
Installing for dependencies:
libpng12 x86_64 1.2.50-10.el7 base 171 k
Transaction Summary
===============================================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 1.0 M
Installed size: 4.0 M
Background downloading packages, then exiting:
(1/2): libpng12-1.2.50-10.el7.x86_64.rpm | 171 kB 00:00:00
(2/2): zvbi-0.2.33-2.el6.rf.x86_64.rpm | 867 kB 00:00:01
---------------------------------------------------------------------------------------------------------------
Total 574 kB/s | 1.0 MB 00:00:01
exiting because "Download Only" specified
这样就下载下来了,那么下载下来的包到哪里去了呢?我们来找一找:
[root@ruanwenwu02 etc]# cd /var/cache/yum/x86_64/7/
base/ C7.0.1406-updates/ C7.2.1511-centosplus/ cr/ timedhosts.txt
base-debuginfo/ C7.1.1503-base/ C7.2.1511-extras/ extras/ updates/
base-source/ C7.1.1503-centosplus/ C7.2.1511-fasttrack/ extras-source/ updates-source/
C7.0.1406-base/ C7.1.1503-extras/ C7.2.1511-updates/ fasttrack/
C7.0.1406-centosplus/ C7.1.1503-fasttrack/ c7-media/ .gpgkeyschecked.yum
C7.0.1406-extras/ C7.1.1503-updates/ centosplus/ rpmforge/
C7.0.1406-fasttrack/ C7.2.1511-base/ centosplus-source/ timedhosts
[root@ruanwenwu02 etc]# cd /var/cache/yum/x86_64/7/rpmforge/
[root@ruanwenwu02 rpmforge]# ls
cachecookie gen mirrorlist.txt packages primary.sqlite.bz2 repomd.xml
[root@ruanwenwu02 rpmforge]# cd packages/
[root@ruanwenwu02 packages]# ls
zvbi-0.2.33-2.el6.rf.x86_64.rpm
实验发现,每个源都有自己的缓存目录,对应去找就可以了,但是这样太麻烦了,最好是下载的时候指定目录:
[root@ruanwenwu02 packages]# yum install zoo --downloadonly --downloaddir=/tmp/
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.tuna.tsinghua.edu.cn
* rpmforge: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.aliyun.com
197 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package zoo.x86_64 0:2.10-2.2.el6.rf will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================
Package Arch Version Repository Size
===============================================================================================================
Installing:
zoo x86_64 2.10-2.2.el6.rf rpmforge 76 k
Transaction Summary
===============================================================================================================
Install 1 Package
Total download size: 76 k
Installed size: 132 k
Background downloading packages, then exiting:
zoo-2.10-2.2.el6.rf.x86_64.rpm | 76 kB 00:00:02
exiting because "Download Only" specified
[root@ruanwenwu02 packages]# cd /tmp/
[root@ruanwenwu02 tmp]# ls
1.txt
language.txt
systemd-private-af36769ad0fd46b2b5b049d6d35927a3-vmtoolsd.service-WbReEr
testdisk
yum_save_tx.2017-11-08.21-02.aC9nNO.yumtx
yum_save_tx.2017-11-08.21-12.Yg9SCW.yumtx
yum_save_tx.2017-11-08.21-30.dCeEra.yumtx
zoo-2.10-2.2.el6.rf.x86_64.rpm
因为篇幅的原因,这一篇就到这里为止,在下一篇里,我们将会讲到:
1 配置本地yum源。
2 安装扩展源。
3 安装国内源。
4 安装RPMForge源。