Linux系统的软件安装

概述

众所周知,在Linux系统下安装软件,大体上有2种方式:一种是通过源码自定义安装,也就是configure然后makefile,相信大家在一些软件的安装教程中已经领教过了;另一种就是通过软件包管理工具来进行安装。

源码安装有一些显而易见的缺点:比如说,每次安装都需要检测系统环境、设置编译参数、实际进行编译、还需要指定软件的安装路径。

第二种方式有点类似python中的pip安装,或者说类似于window系统下的软件安装。也就是说,大家都喜欢这种打开软件安装包,然后就无脑下一步就可以完成安装的模式。

linux中常用的软件包管理工具是RPM和YUM,这次对这两个工具来进行一些介绍。

什么是RPM和SRPM

RPM全称是【Redhat Package Manager】,最初是由红帽子公司开放的一种软件管理机制,后面扩展到了linux各个发行版,比如centos等。

RPM最大的特点是,将你要安装的软件事先进行编译,打包成RPM机制的文件。该文件记录了安装所必要的依赖软件,在实际安装时,首先检测依赖库是否满足,是则进行安装;否则会提示哪些依赖需要事先安装。在安装时,将软件信息写入RPM的数据库中,便于将来的查询、验证和卸载。

所以它的优点也显而易见:

  1. 软件安装包已经编译且打包,所以传输和安装很方便;
  2. 软件信息已记录,所以很方便查询、升级和卸载。

但是这样一来也产生了一个问题:

RPM的软件包中都是已编译好的数据,这就导致该软件包只能安装在完全一样的硬件和操作系统中。

举例来说就是,Red Hat发布的RPM文件,不能直接在centos上安装。

为了应对这个问题,就轮到SRPM登场了。

SRPM的全称是【Source RPM】,也就是带源码的RPM,其中的代码并未进行编译,通常是***.src.rpm格式的文件。其中也包含了configure和makefile文件,所以安装SRPM文件,你需要:

  1. 将软件按照RPM的方式编译,也就是将SRPM文件编译成RPM文件
  2. 然后安装RPM文件

因为SRPM文件中有configure文件,所以我们只要修改改文件,就能将软件安装到不同的linux系统中了。

一些扩展名的意思

我们下载rpm的安装文件时,通常见到这样的文件名,比如:

mysql-8.0.24-1.el7.x86_64.rpm

其中的各个命名含义是什么呢,其实是如下这样:

mysql-8.0.24-1.el7.x86_64.rpm
软件名称-软件版本-发布次数.适合的平台.扩展名

RPM的优点

前面已经提过一些了,总结来说,RPM有以下优点:

  • 包含已经编译过的程序和配置文件,用户不需要重新编译
  • 安装时会检测硬盘容量、系统版本等,判断是否满足安装条件
  • RPM文件包含软件版本信息、用途说明、软件包含的文件等信息
  • RPM使用数据库记录相关参数,便于升级、卸载和验证

已经重复过很多次了,RPM在安装时会进行依赖性检测,如果一些依赖软件不存在的话,就无法继续进行安装。那么如何解决依赖软件的问题呢,这就轮到YUM出场了。

解决RPM的依赖问题-YUM在线升级

有点类似项目中的requirements文件,列出RPM所需的软件列表,在安装RPM文件时,按照这个列表去检查系统中已有的软件。如果遇到没有安装软件,就自动安装。这就是YUM机制。

centos先将发布的软件保存在YUM服务器内,将这些软件的信息记录下来;然后分析这些软件的依赖关系,将这些依赖关系记录下来,制作成相关的列表。这些列表的数据,可能保存在本地或者网络上的位置,就称为软件源或软件仓库(repository)。

当客户端安装软件时,客户端会向网上的YUM服务器进行请求,下载软件列表;将该列表与本机上已有的软件进行比较,然后批量安装所有具有依赖的软件。

RPM命令

原理介绍的差不多了,接下来介绍一下如何使用rpm命令

RPM安装

rpm -ivh package_name
各参数含义:
-i:install 也就是安装
-v:查看详细安装信息
-h:显示安装进度

RPM升级

rpm -Uvh package_name-version-release.architecture.rpm
-Uvh 如果没有安装过该软件,会进行安装
-Fvh 只会更新已安装的软件

RPM查询

rpm -qa 查看本机安装的所有软件
rpm -q python 查看具体某个软件的安装情况
rpm -qi python 列出该软件的详细信息
rpm -ql python 列出该软件所有相关路径
qc qd : 查看配置文件和说明文件,其实就是查询etc下的配置文件和man有关文件
rpm -qR python 列出该软件所有依赖
-qf 列出属于哪个已安装的软件

rpm -qp[icdlR] :qp表示查看rpm package的信息

RPM验证和数字签名(该功能主要用来判断系统是否被入侵

rpm -Va 列出当前系统上所有可能被修改过的文件
rpm -V softname 列出某软件被修改的内容
rpm -Vp rpmfilename 该文件被修改的内容
rpm -Vf filename 某文件是否被修改过

RPM软件卸载

rpm -e softname
注意只能从顶到底卸载,不能先卸载某些软件的依赖软件

YUM命令

查询软件

yum search softname 查找软件
yum info softname 查看软件详细信息
yum list 列出yum服务器上列出的所有软件
yum list pam* 列出已pam开头的软件

安装和卸载

yum install/uninstall softname

YUM的配置文件

yum命令真的是太简单使用了,安装软件变得很简单。不过系统的默认yum源可能不太OK,就好像pip源要默认设置国内的源一样,yum也推荐如下的清华大学的源

vim /etc/yum.repos.d/CentOS-Base.repo

修改为如下:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

可以使用如下命令来验证修改是否成功

yum repolist all

其他一些常用命令

yum makecache 更新软件包缓存
yum clean all 清理已下载的软件源相关数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值