在windows下安装一个软件很轻松,只要双击setup或者.exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松,因为我们不是在图形界面下。
本文我们将讨论如何在linux下安装一个软件。
一、linux软件安装方式
linux安装软件的三种方式:
使用rpm工具安装;使用yum工具安装;安装源码包
1.rpm
RPM是“Redhat Package Manager”的缩写,这是Redhat公司开发出来的。RPM是以一种数据库记录的方式来将你所需要的套件安装到你的Linux主机中的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装包以及包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包之间存在着相互依赖的情况;卸载包时需要先把依赖包卸载掉,如果依赖包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
每一个rpm包的名称都由“-”和“.”分成了若干部分。就拿a2ps-4.13b-57.2.el5.i386.rpm这个包来解释一下,a2ps为包名;4.13b则为版本信息;57.2.el5为发布版本号;i386为运行平台。其中运行平台常见的有i386,i586,i686,x86_64,需要注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位平台。另外有些rpm包并没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。例如alacarte-0.10.0-1.fc6.noarch.rpm。
a.使用rpm命令安装扩展名为".rpm"的软件包
格式:rpm [选项] RPM包文件
常用选项:
-i:安装一个新的rpm软件包
-h:以“#”号显示安装的进度
-v:显示安装过程中的详细信息
--force:强制安装所指定的rpm软件包
--nodeps:安装软件时,忽略依赖关系
在安装软件时,一般选项-ivh,这样可以看到安装进度与安装信息。
.rpm包的一般格式:
b.升级或更新.rpm软件包
格式:rpm [选项] RPM包文件
常用选项:
-U:升级某个rpm软件,若原本未装,则进行安装
-F:更新某个rpm软件,若原本未装,则放弃安装
--nodeps:升级软件时,忽略依赖关系
c.卸载指定的.rpm软件包
格式:rpm -e 软件名
--nodeps:卸载软件时,忽略依赖关系
d.查询已安装的.rpm软件包
格式:rpm -q[子选项] [软件名]
常用子选项命令:
-qa:查看系统中已安装的所有RPM软件包列表
-qi:查看指定软件的详细信息
-ql:查询指定软件包所安装的目录、文件列表
-qc:仅显示指定软件包安装的配置文件
-qd:仅显示指定软件包安装的文档文件
2.yum
yum是软件包管理器,是Linux环境安装软件包的方式之一。yum可以方便地进行rpm包的安装、升级、査询和卸载,而且可以自动解决依赖性问题,非常方便和快捷。
对于安装有依赖包的软件,用yum命令特别方便,如果用rpm命令,就必须要先装依赖包再装软件包,而yum命令会直接匹配依赖包然后直接安装。
3.源码编译
首先说一下使用源代码安装软件的优点:
可以获得最新的软件,及时修复bug;根据用户的需求,灵活定制软件功能。
编译安装源包必须要有源代码编译环境。
编译源代码步骤:
configure、Makefile一般是项目管理器自动生成的,而gcc编译器需要安装。
二、yum仓库
Linux系统各发行版本采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。这样,所有的Linux用户随时都能获得最新版本的安装软件包。因此,对于用户,这些镜像服务器就是他们的软件源(Reposity)。然而,由于用户所处的网络环境不同,不可能随意地访问各镜像站点。为了能够有选择地访问,在Linux各发行版本中,使用软件源配置文件列出最合适访问的镜像站点地址。
Yum(全称为Yellow dog Updater Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
1.yum配置文件
/etc/yum.conf配置文件
yum.conf文件是用来存储yum配置信息的文件,虽然yum.conf文件通常都比较简洁,却是yum软件管理器的重要组成部分。
etc/yum.repos.d/目录下*.repo文件
repo文件是yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用。
2.yum工作原理
执行yum命令时,会首先从“/etc/yum.repo.d”目录下的众多repo文件中取得软件仓库的地址并下载“元数据”,“元数据”包含注册于该软件仓库内所有软件包的包名及其所需的依赖环境等信息,yum得到这些信息后会和本地环境做对比,进而列出确认需要安装哪些包,并在用户确认后开始安装。
“元数据”由位于yum源服务器相关路径的repodata目录下的repomd.xml做索引。
3.yum工作流程
服务器端:在服务器上面存放了所有的rpm软件包,然后以相关的功能去分析每个rpm文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。
客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的记录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。
三、配置仓库源
yum仓库可以是本地的,也可以是http(超文本传输协议)、ftp(文件传输协议)、nfs(网络文件系统)形式的网络仓库 ,要使用网络yum源,你的主机必须是正常联网的。
默认情况yum源的配置文件是在/etc/yum.repos.d目录下,打开/etc/yum.repos.d,可以看到yum源默认用的是CentOS官网的。
配置yum就是把原来的/etc/yum.repos.d/下的所有*.repo文件备份(或删除),再创建同名的*.repo文件。
其中CentOS-Base.repo是基础源文件,而epel.repo是扩展源文件。配置yum源的目的主要就是修改这两个文件。
1.本地源
以linux程序源为基础,在系统中设置“.iso源”挂载连接,以安装其他软件。
主要原理与过程:
a.首先进行“虚拟机设置”
b.在系统根目录下新建一个目录,如/repo/
c.将系统安装光盘挂到根/repo/目录下
mount /dev/cdrom/ /repo
d.全部删除(或备份到其他目录下,如backup/)在/etc/yum.repos.d/目录下的*.repo文件
e.在/etc/yum.repos.d/目录下新建一个xxx.repo的yum源文件,如新建yum源文件名称为local.repo,并在文件中输入下面的内容:
[local_server] #yum源名称
name=This is a local repo #yum源名称可以自定义
baseurl=file:///repo
# 上面一行后面不能跟着添加注释
# yum源所在的本地路径,file://是指本地硬盘上
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
# gpgcheck=0 # =0 不校验软件包是不是官方发布的;=1 校验
f.文件保存
文件输入完成后保存并退出,查看/etc/yum.repos.d目录下已生成一个loacl.repo的文件。
g. 清空缓存
yum clean all
h. 重新加载库
yum repolist
这样就可以用yum源安装软件包了。
使用yum命令来安装软件包
格式:yum [-y] install 软件名
-y:如果使用-y,那么在安装软件时命令行就不会出现"Is this ok[y/N]"这条提醒语句了,更不需要在命令行输入y或N了,直接安装软件。
2.阿里源
在存在网络情况下,把国外仓库源改为国内源,下载速度是可以保证的。
主要原理与过程:
a.下载安装wget
先检查一下有没有安装wget(直接输入wget命令回车,如果报错为:"-bash: wget: command not found",则没有安装),如果没有再安装:
yum -y install wget
b.备份默认的yum
备份作用不大,可以直接删除所有目录下的*.repo文件。
mv /etc/yum.repos.d /etc/yum.repos.d.backup
c.设置新的yum目录
mkdir -p /etc/yum.repos.d
d.下载阿里yum配置到该目录中,选择对应版本
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
e.更新epel源为阿里云epel源
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/epel-testing.repo http://mirrors.aliyun.com/repo/epel-testing.repo
f.重建缓存
yum clean all
yum makecache
g.看一下yum仓库有多少包
yum repolist
yum update
3.国内其他源
几个国内yum源推荐(均以CentOS为例),供需要时参考。
在网络畅通的情况,国内每个源都满足基本要求。个别的特殊软件包需具体处理。
阿里巴巴开源镜像站:
https://developer.aliyun.com/mirror/
网易开源镜像站:
http://mirrors.163.com/
网易163 yum源,安装方法查看:
CentOS镜像使用帮助
中科大yum源,安装方法查看:
CentOS 源使用帮助 — USTC Mirror Help 文档
阿里云yum源,安装方法查看:
centos镜像_centos下载地址_centos安装教程-阿里巴巴开源镜像站
sohu yum源,安装方法查看:
http://mirrors.sohu.com/centos/
清华大学yum源,安装方法查看:
https://mirrors.tuna.tsinghua.edu.cn/help/centos/
安装配置好yum源后,对于软件包的安装、卸载、列表查看等操作,网上介绍很多,可自行浏览学习,此处不作讨论。