Linux常见软件包分为两种,分别是源代码包、二进制文件包。源代码包是没有经过编译的包,需要经过GCC、C++编译器编译才能运行,文件内容包含源代码文件,通常以.tar.gz、.zip、.rar结尾;二进制包无需编译,可以直接安装使用,文件内容包含.bin可执行文件,通常以.rpm结尾。
源码包:name-Version.tar.gz
version:major-minor-release
二进制应用程序的组成部分:二进制文件、库文件、配置文件、帮助文件
rpm包命名格式:
name-Version-ARCH.rpm
常见的ARCH:
x86:i386,i486,i586,i686
x86_64:x64,x86_64,amd64
powerpc:ppc
跟平台无关:noarch
例如:
389-ds-base-libs-1.3.4.0-19.el7.x86_64.rpm
abattis-cantarell-fonts-0.0.16-3.el7.noarch.rpm
0.0.16:表示版本号,通用格式,“主版本.次版本.修正号”
-3:表示发布版本,该RPM包是第几次编译生成的;
el* :软件包发行版本,el7表示该软件包适用于RHEL 7.x/CentOS 7.x
CentOS管理软件包的方式:1、使用包管理器RPM;2、使用前端工具yum。
RPM(RedHat Package Manager)类似Windows里面的“添加、删除程序”。RPM软件包以rpm为扩展名,RPM也是一种软件包管理器,可以让用户方便的进行软件的安装、更新、卸载、查询等,操作命令为rpm。
rpm命令使用:安装、卸载、更新、查询:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-v:verbose
-vv:更详细的信息
-h:以#号显示程序安装执行进度
例:rpm -ivh PACKAGE_FILE...
[install-options]
--test:测试安装,不实际安装
--nodeps:忽略依赖关系
--replacepkgs:重新安装
--nosignature:不检查来源合法性
--nodigest:不检查包完整性
--force:如果软件已安装,想重新安装,可以使用强制安装的方式
[root@Master Packages]# rpm -i lrzsz*
warning: lrzsz-0.12.20-36.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
package lrzsz-0.12.20-36.el7.x86_64 is already installed
[root@Master Packages]# ll lrzsz-0.12.20-36.el7.x86_64.rpm
-r--r--r-- 3 root root 79376 Jul 3 2014 lrzsz-0.12.20-36.el7.x86_64.rpm
[root@Master Packages]# rpm -ihv --force lrzsz-0.12.20-36.el7.x86_64.rpm
warning: lrzsz-0.12.20-36.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:lrzsz-0.12.20-36.el7 ################################# [100%]
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrade:如果存在旧包,则升级,否则进行“安装”操作;
freshen:如果存在旧包,则升级,否则不做任何操作
rpm -Uvh PACKAGE_FILE...
--oldpacage:降级;
--force:强制升级;
注意:
1、不要对内核做升级操作,Linux支持多内核版本并存,因此对新版内核直接安装;
2、如果源程序包的配置文件安装后修改过,升级后,新版本提供的同名配置文件不会直接覆盖掉老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a:显示所有安装包
-f:查看指定文件由那个程序包安装生成
-p:/PATH/PACKAGE_FILE,针对未安装的程序包进行查询;
--whatprovides CAPABILITY:查询指定的CAPABILITY有哪个包所提供:
--whatrequires CAPABILITY:查询指定CAPABILITY被哪个包所提供;
[query-options]
--changelog:查询rpm包的changelog
-c:查询程序包的配置文件
-d:查询程序生成的文档
-i:显示包信息information
-l:查看程序包安装后所有文件
--scripts:程序包自带的脚本片段
-R:查看指定程序包所依赖的CAPABILITY:
--provides:列出指定程序包所提供的CAPABILITY;
--requires
用法:
-qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE, -qd PACKAGE
-qpi PACKAGE_FILE
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
rpm -e --nodeps 忽略依赖卸载
RPM包管理器可以让用户不必经过编译就使用软件,但也存在不方便。当遇到软件包依赖问题时,RPM包管理器会中断当前安装,提示用户依赖的软件包。这种方法使用起来非常不方便,特别是一些依赖非常复杂的软件包。为解决软件包依赖问题,Red Hat公司开发一个新工具Yum(Yellow dog Update,Modified)。也称rpm前端软件包管理工具,它需要基于RPM工作,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令。
使用yum工具,前提需要有yum仓库(yum repository)即yum源,yum源中存储了众多rpm包,以及包的相关元数据文件(放在目录特定目录下:repodata)。当用户通过yum工具安装软件包时,yum在仓库中通过元数据搜索软件包的依赖关系,并从仓库中下载并安装软件包。
yum仓库是文件服务器:
ftp://
http://
nfs://
file:/// --本地
yum相关配置文件:
主配置文件:/etc/yum.conf 为所有仓库提供公共配置,一般不用修改
分配置文件:/etc/yum.repos.d/*.repo 为仓库指定具体路径
(1)将系统iso安装包配置到虚拟机光驱中。
(2)挂载光驱文件
查看光驱文件名:lsblk
创建挂载文件夹:mkdir /mnt/cdrom
挂载光驱:mount /dev/sr0 /mnt/cdrom
(3)创建yum源文件
cd /etc/yum.repos.d
mkdir /bak_repo
mv C* /bak_repo 备份原来的yum源
vi centos7.yum
[centos7] #[repositoryID]
name=centos7 #name='xxx'
baseurl=file:///mnt/CentOS7.0 #baseurl='仓库访问路径' --可指定多个url
gpgcheck=0 #gpgcheck=[1|0],是否检验合法性
enabled=1 #enable=[1|0],是否启用,默认启用
yum clean all 清除缓存目录下的软件包及索引信息
yum makecache 建立缓存及索引信息
yum repolist 验证yum源目录
-------------------------------------配置本地yum源完成------------------------------------------------
yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
[command]为所要进行的操作,包括install、update、remove、list等
[package ...]是操作的对象。
(1)安装程序包:
yum install PACKAGE...
yum reinstall package1 [package2] [...]
(2)升级程序包:
yum upgrade [package1] [package2] [...]
yum downgrade package1 [package2] [...] 降级
(3)检查可用升级
yum check-update
(4)卸载程序包
yum remove | erase package1 [package2] [...]
(5)显示程序包:
yum list
#yum list [all | glob_exp1] [glob_exp2] [...]
yum list available|installed|updates [glob_exp1] [...]
(6)查看程序包的简要信息:
yum info package1