1.linux下软件包的安装方式有三种,如下:
rpm工具:安装快捷,但是包与包存在依赖关系严重,安装环境与编译必须一致:
yum工具:支持自动依赖安装,方便快捷:
源码包:源代码,通过编译器,编译成可执行的二进制文件:
1、rpm工具:Red Hat Manager的缩写:有redhat公司开发,以数据库记录的方式安装在linux上一套程序,记录了包和包的依赖关系,卸载和安装比较困难,要求先安装依赖包,无穷无尽:
rpm包只能通过安装镜像的ISO中找到,首先给虚拟机连接光盘,然后挂载光驱后,会在/Packages/目录下看到很对后缀为.rpm的文件:
1.1:挂载: mount dev/cdrom /mnt #挂载光盘到/mnt/目录下:
[root@localhost ~]# mount /dev/cdrom /mnt #挂载光盘,只能以只读的方式挂载:
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# cd /mnt/ #这里的都是安装系统所需的文件:
[root@localhost mnt]# ls
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
1.2:查看rpm文件:
[root@localhost mnt]# ls -l Packages/ |head -10 #下面的都是rpm的文件:
总用量 3912200
-rw-rw-r-- 2 root root 1783596 8月 10 2017 389-ds-base-1.3.6.1-16.el7.x86_64.rpm
-rw-rw-r-- 2 root root 693652 8月 10 2017 389-ds-base-libs-1.3.6.1-16.el7.x86_64.rpm
-rw-rw-r-- 2 root root 152952 8月 10 2017 abattis-cantarell-fonts-0.0.25-1.el7.noarch.rpm
-rw-rw-r-- 2 root root 548140 8月 10 2017 abrt-2.1.11-48.el7.centos.x86_64.rpm
-rw-rw-r-- 2 root root 196040 8月 10 2017 abrt-addon-ccpp-2.1.11-48.el7.centos.x86_64.rpm
-rw-rw-r-- 2 root root 107360 8月 10 2017 abrt-addon-kerneloops-2.1.11-48.el7.centos.x86_64.rpm
-rw-rw-r-- 2 root root 97616 8月 10 2017 abrt-addon-pstoreoops-2.1.11-48.el7.centos.x86_64.rpm
-rw-rw-r-- 2 root root 103456 8月 10 2017 abrt-addon-python-2.1.11-48.el7.centos.x86_64.rpm
-rw-rw-r-- 2 root root 107832 8月 10 2017 abrt-addon-vmcore-2.1.11-48.el7.centos.x86_64.rpm
rpm的构成部分:如下:
abrt - 2. 1 . 11 - 48.el7.centos. x86_64.rpm #对应
包名-主版本号.次版本号.修订版本号-发布版本号.运行平台位数.rpm
1.3:rpm的常用命令:
rpm [ -ivh -Uvh -e -q -qa -qi -ql -qf ]
rpm -ivh rpm包文件 #安装一个包:
-i : install,安装这个包:
-v : verbose,可视化:
-h : 显示安装进度:
--forece : 表示强制安装,即使覆盖其他包的文件也要安装:
--nodeps : 表示当前包依赖其他包,即使其他包为安装,也要安装这个包:
[root@localhost Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm #安装zsh,注意是包文件哦:
准备中... ################################# [100%]
正在升级/安装...
1:zsh-5.0.2-28.el7 ################################# [100%]
rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm #升级一个包:
rpm -e zsh-5.0.2-28.el7.x86_64.rpm #卸载一个包 :
[root@localhost Packages]# rpm -e zsh #成功卸载,不会有任何提示:
[root@localhost Packages]# rpm -q zsh #再次查看时,提示未安装软件,表示成功卸载:
未安装软件包 zsh
有时我们卸载zsh这个包,发现有依赖包无法卸载,需要先卸载依赖包才可以:如下:
[root@localhost Packages]# rpm -e libdnet
错误:依赖检测失败:
libdnet.so.1()(64bit) 被 (已安裝) open-vm-tools-10.1.5-3.el7.x86_64 需要
然后无穷无尽的卸载,哈哈哈哈哈哈!!!
rpm -q 包名 #查询这个包是否安装:
[root@localhost ~]# rpm -q vim-enhanced #如果安装则会输出安装的包:
vim-enhanced-7.4.160-1.el7_3.1.x86_64
[root@localhost ~]# rpm -q vim-enhanced123 #如果没安装则会提示not installed:
package vim-enhanced123 is not installed
rpm -qa #查询当前系统中已安装的包:
[root@localhost ~]# rpm -qa |head -10 #以下列出所有已安装的包:
time-1.7-45.el7.x86_64
patch-2.7.1-8.el7.x86_64
bc-1.06.95-13.el7.x86_64
rootfiles-8.1-11.el7.noarch
glibc-headers-2.17-157.el7_3.5.x86_64
redhat-lsb-core-4.1-27.el7.centos.1.x86_64
ivtv-firmware-20080701-26.el7.noarch
sysstat-10.1.5-11.el7.x86_64
tcpdump-4.5.1-3.el7.x86_64
python-setuptools-0.9.8-4.el7.noarch
rpm -qi 包名 #查看一个已安装rpm包的相关信息:
[root@localhost ~]# rpm -qi vim-enhanced #查询相关信息如下:
Name : vim-enhanced
Epoch : 2
Version : 7.4.160
Release : 1.el7_3.1
Architecture: x86_64
Install Date: Thu 17 Aug 2017 07:47:39 AM CST
Group : Applications/Editors
Size : 2292098
License : Vim
Signature : RSA/SHA256, Thu 22 Dec 2016 01:14:11 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : vim-7.4.160-1.el7_3.1.src.rpm
Build Date : Thu 22 Dec 2016 01:00:52 AM CST
Build Host : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.vim.org/
rpm -ql 包名 #列出一个已安装rpm包的安装文件:
[root@localhost ~]# 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 包名 #通过绝对路径查到这个文件属于哪个rpm包:
[root@localhost ~]# which vim #查询
/usr/bin/vim
[root@localhost ~]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-1.el7_3.1.x86_64
[root@localhost ~]# rpm -qf `which vim` #也可以通过反引号的方式,套用反引号输出的命令:
vim-enhanced-7.4.160-1.el7_3.1.x86_64
也可以使用反引号的命令:
rpm -qf `which vim` #通过which查询到绝对路径,然后输出给前面的命令:
2、yum工具:
yum工具比rpm工具方便多了,在于可以自动联网下载所需要的rpm包,并自动安装,解决依赖关系:
注意:yum在Centos上是免费,在RedHat里使用则是收费的:
yum的用法:
yum list #列出当前系统所有的rpm包的资源:
[root@localhost ~]# yum list |head -10 #勒出当前系统的所有安装包
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
GeoIP.x86_64 1.5.0-11.el7 @base
NetworkManager.x86_64 1:1.4.0-20.el7_3 @updates
NetworkManager-libnm.x86_64 1:1.4.0-20.el7_3 @anaconda
NetworkManager-tui.x86_64 1:1.4.0-20.el7_3 bash
NetworkManager-wifi.x86_64 1:1.4.0-20.el7_3 updates
#包名 #版本号 #前面有@的,则表示已安装,没有则表 示未安装:
以上也分为三部分:
GeoIP.x86_64 1.5.0-11.el7 @base
#包名 #版本号 #@则表示已安装,没有@则表示未安装:
yum serarch 包名 #表示搜索一个包:会出来许多信息,不精准:
[root@localhost ~]# yum search vim #表示搜索一个包:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
========================== N/S matched: vim ==========================
beakerlib-vim-syntax.noarch : Files for syntax highlighting BeakerLib
: tests in VIM editor
fluxbox-vim-syntax.noarch : Fluxbox syntax scripts for vim
neovim.x86_64 : Vim-fork focused on extensibility and agility
protobuf-vim.x86_64 : Vim syntax highlighting for Google Protocol
: Buffers descriptions
python2-neovim.noarch : Python client to Neovim
python34-neovim.noarch : Python client to Neovim
一般建议使用grep来过滤,如下:
[root@localhost ~]# 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
yum install -y vim-enhanced #安装一个包:
[root@localhost Packages]# yum install -y vim-enhanced
已加载插件:fastestmirror
Determining fastest mirrors
* base: mirror.bit.edu.cn
* extras: mirrors.huaweicloud.com
* updates: mirrors.huaweicloud.com
验证中 : perl-Text-ParseWords-3.29-4.el7.noarch 30/31
验证中 : 2:vim-common-7.4.160-4.el7.x86_64 31/31
已安装:
vim-enhanced.x86_64 2:7.4.160-4.el7
作为依赖被安装:
gpm-libs.x86_64 0:1.20.7-5.el7 perl.x86_64 4:5.16.3-292.el7
perl-Carp.noarch 0:1.26-244.el7 perl-Encode.x86_64 0:2.51-7.el7
vim-common.x86_64 2:7.4.160-4.el7 vim-filesystem.x86_64 2:7.4.160-4.el7
完毕!
yum update -y 包名 #升级一个包:
[root@localhost ~]# yum update bash #升级一个包:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package bash.x86_64 0:4.2.46-21.el7_3 will be updated
---> Package bash.x86_64 0:4.2.46-30.el7 will be an update
--> Finished Dependency Resolution
Updating : bash-4.2.46-30.el7.x86_64 1/2
Cleanup : bash-4.2.46-21.el7_3.x86_64 2/2
Verifying : bash-4.2.46-30.el7.x86_64 1/2
Verifying : bash-4.2.46-21.el7_3.x86_64 2/2
Updated:
bash.x86_64 0:4.2.46-30.el7
Complete!
yum remove -y vim #卸载一个包:
[root@localhost Packages]# yum remove -y vim
已加载插件:fastestmirror
正在解决依赖关系
--> 正在检查事务
---> 软件包 vim-enhanced.x86_64.2.7.4.160-4.el7 将被 删除
--> 解决依赖关系完成
Running transaction
正在删除 : 2:vim-enhanced-7.4.160-4.el7.x86_64 1/1
验证中 : 2:vim-enhanced-7.4.160-4.el7.x86_64 1/1
删除:
vim-enhanced.x86_64 2:7.4.160-4.el7
完毕!
yum grouplist #列出管理组,系统的套件:
yum provides "/*/vim" #在系统里搜索vim的安装包:
#最后的两个斜杠的中间为 ”*“表示路径不固定:
如果我们要是没有安装vim,也就是说用witch是搜索不到的,那我们可以通过provides的方式来搜索:
附记:利用光盘制作本地yum源:
有时候,linux系统不能联网,此时就不能使用联网的yum源了,这时需要我们自己在linux系统下使用光盘制作yum源:
1、首先要挂载光盘:
mount /dev/cdrom /mnt #挂载光盘:
2、删除/etc/yum.repos.d目录下的所有repo文件(建议删除前先备份):
[root@localhost ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
[root@localhost ~]# rm -fr /etc/yum.repos.d/*
3、创建新的文件dvd.repo:
[root@localhost ~]# cat /etc/yum.repos.d/dvd.repo
[dvd] #仓库名称:
name=install dvd #自定义名称:
baseurl=file:///mnt #yum的存在路径:
enabled=1 #是否可用:(1为可用,0为不可用)
gpgcheck=0 #是否检测:
4、刷新repos生成缓存: yum clean all
[root@localhost ~]# yum clean all
已加载插件:fastestmirror
正在清理软件源: dvd
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
此时可以正常使用本地yum了,我们先用yum list查看一下:
[root@localhost ~]# yum list |tail -10
yum-plugin-changelog.noarch 1.1.31-42.el7 dvd
yum-plugin-tmprepo.noarch 1.1.31-42.el7 dvd
yum-plugin-verify.noarch 1.1.31-42.el7 dvd
yum-plugin-versionlock.noarch 1.1.31-42.el7 dvd
yum-utils.noarch 1.1.31-42.el7 dvd
zenity.x86_64 3.22.0-1.el7 dvd
zip.x86_64 3.0-11.el7 dvd
zlib-devel.x86_64 1.2.7-17.el7 dvd
zsh.x86_64 5.0.2-28.el7 dvd
zziplib.x86_64 0.13.62-5.el7 dvd
此时都显示的是dvd格式的:表示本地yum源:
安装一下tftp软件试试:
[root@localhost ~]# yum install -y tftp #安装tftp软件:
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 tftp.x86_64.0.5.2-13.el7 将被 安装
--> 解决依赖关系完成
Running transaction
正在安装 : tftp-5.2-13.el7.x86_64 1/1
验证中 : tftp-5.2-13.el7.x86_64 1/1
已安装:
tftp.x86_64 0:5.2-13.el7
完毕!
此时yum源使用正常: