深入分析Linux安装软件

版权声明:原创不易,未经作者允许请勿随意转载!因个人能力和精力有限,难免有疏漏和不足之处,欢迎指正,谢谢~ https://blog.csdn.net/lijing742180/article/details/88258118

Linux 发展史:https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg

一、Unix 分支

在 windows 系统下安装软件很简单,下载软件包后双击 .exe 文件,点击下一步即可。

然而,在 Uinux 平台安装软件就有点复杂了,从 Unix 诞生开始,逐步发展出了几十几百的大大小小的分支,不同的 Uinux 发行版系列都有所差异。

这里我总结了一下 Unix 平台下比较有名的几个分支:

不同分支的包管理工具

1、Debian 分支

Debian Linux 发行版系列中的软件包管理工具是 APT(Advanced Package Tool),通过 apt-get 或 apt 命令来操作。

所有基于 Debian 的发行版系统都使用这个包管理工具。比如,我们常用的 Ubuntu 系统就是使用 APT 来管理软件包。

2、Red Hat 分支

Red Hat 发行版系列中的软件包管理工具是 RPM,通过 rpm 命令来操作。

RPM 是 Red Hat PackageManager 的缩写,原本是 Red Hat 开发的软件包管理程序,在 Fedora 、Redhat、Mandriva、SuSE、YellowDog 等主流发行版本及在这些版本基础上二次开发出来的发行版使用。

由于 RPM 遵循 GPL 规则,且功能强大方便,因而广受欢迎,逐渐受到其他发行版的采用,应用很广泛。

3、CentOS

CentOS 系统中使用的软件包管理工具是 YUM(Yellow dog Updater Modified),同时还适用于 Fedora、RedHat 中。

YUM 在 RPM 的基础上增加了自动更新和包管理,包括依赖关系管理。能够从指定的服务器自动下载安装 RPM 包,并且自动处理依赖性关系,一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

二、APT 管理工具

APT(Advanced Package Tool) 应用管理工具使用 apt-get 命令操作软件包。

  • 最初于 1998 年发布,用于检索应用程序并将其加载到 Debian Linux 系统。
  • 成名的原因之一在于其出色的 解决软件依赖关系 的能力。
  • 其通常使用 .deb-formatted 文件,但经过修改后可以使用 apt-rpm 处理红帽的 Package Manager(RPM)文件。

1、更新软件库

参考文档:https://linux.die.net/man/8/apt-get

使用 apt-get 命令的第一步就是引入必需的软件库。

Debian 的软件库也就是所有 Debian 软件包的集合,它们存在互联网上的一些公共站点上,在 /etc/apt/sources.list 配置文件中添加地址列表,apt-get 就能搜索到我们想要的软件。

sources.list 格式如下:

deb [web或ftp地址] [发行版名字] [main/contrib/non-free]

其中,deb 包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。

在修改 /etc/apt/sources.list/etc/apt/preferences 之后要更新软件库:

apt-get update

此外,最好定期运行这个命令,以确保你的软件包列表是最新的。

2、常用命令

常用命令 命令格式 说明
安装软件包 apt-get install packagename
卸载软件包 apt-get remove packagename 卸载一个已安装的软件包(保留配置文件)
- apt-get –purge remove packagename 卸载一个已安装的软件包(删除配置文件)
删除备份软件 apt-get autoclean apt apt-get 默认会把已装或已卸的软件都备份在硬盘上,
使用 autoclean 命令来删除备份文件
更新所有已安装的软件包 apt-get upgrade
将系统升级到新版本 apt-get dist-upgrade

三、RPM 管理工具

RPM(Red Hat PackageManager)包管理工具。

rpm 包里面包含可执行的二进制程序(经过 GCC 编译),及程序运行时所需要的文件,和 Windows 软件包中的 .exe 文件类似。

(有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系)

1、rpm 包格式

rpm包名格式

上图所示:

  • abrt:包名
  • 2.1.11:版本信息
  • 48.el7.centos:发布版本号
  • x86_64:运行平台
  • 有些 rpm 包没有写具体平台而是 noarch:说明没有平台限制。

2、rpm 常用命令

常用选项:

rpm 常用选项 说明
-a 查询所有已安装rpm包
-e 删除指定rpm包
-f 查询指定rpm包
-i 显示指定rpm包的详细信息
-h 显示安装rpm包列出标记
-v 显示指令的执行过程,即可视化过程
-U 升级指定rpm包
-q 使用询问模式
-l 显示指定rpm包的文件列表

常用命令:

rpm 常用功能 命令 示例 说明
安装 rpm 包 rpm -ivh [rpm包名] 注意包名一定要写全到 .rpm,不能简写。
查看指定软件的 rpm 包名 rpm -q [软件名] $ rpm -q jenkins
jenkins-2.121.1-1.1.noarch
查看所有软件包名 rpm -qa 列出所有已安装的 rpm 包名
查看 rpm 包的具体信息 rpm -qi [软件名] rpm -qi jenkins 列出 jenkins rpm 包的具体信息
查看软件的安装文件 rpm -ql [软件名] rpm -ql jenkins 列出 jenkins 所有的安装目录文件
升级 rpm 包 rpm -Uvh [rpm包名] 注意包名一定要写全到 .rpm,不能简写。
卸载 rpm 包 rpm -e [软件名] rpm -e jenkins

其中,是常用的就是安装 rpm -ivh 和查看安装列表 rpm -ql

查看某个命令属于哪个rpm包安装的:

    rpm -qf [命令绝对路径]

$ rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-5.el7.x86_64

当某个命令忘记了绝对路径,又不想分 2 步来查询。
那么可以后面跟 `which`:

$ rpm -qf `which cd`  --这里写入的命令不能是带有alias的
bash-4.2.46-31.el7.x86_64

依赖问题:

当执行 rpm -ivh 安装 rpm 包时,会发现有些软件需要很多依赖包,必须手动安装依赖包后才能正常安装。

包括 rpm -e 也是一样的,所以很多时候并不用 rpm 来安装软件,更多的是使用 yum

四、YUM 管理工具

YUM 最常用于 CentOS 系统中,它在 rpm 的基础上解决了包依赖的问题,能够自动处理依赖关系,一次性安装所有依赖的软件包,无须繁琐地一次次下载、安装。

另外,使用 yum 安装软件时,只用写入软件名即可,而 rpm 安装时,是需要写入包全名的。

1、rpm 和 yum 对比

2、yum 常用命令

查看仓库中所有可用的 rpm 包:

yum list

# 一般配合 grep 使用
yum list |grep python|less

如下所示:

$ yum list|grep python|less
    abrt-addon-python.x86_64                 2.1.11-52.el7.centos            @centos7.6-181101-update
    abrt-python.x86_64                       2.1.11-52.el7.centos            @centos7.6-181101-update
    python.x86_64                            2.7.5-76.el7                    @centos7.6-181101-update
    python-IPy.noarch                        0.75-6.el7                      @os    
    python-backports.x86_64                  1.0-8.el7                       installed

第一列是包名,第二列是版本号,第三列是配置文件 /etc/yum.repos.d/ 中配置的仓库名。

常用命令 命令格式 说明
查看仓库中指定的 rpm 包 yum list | grep python 在仓库中查找出包名中包含 python 的 rpm 包
yum 安装 rpm 包 yum -y install 「包名简称」 -y 表示安装时不再询问是否安装
yum 卸载 rpm 包 yum remove「包名简称」 卸载时不要加 -y 选项,
可以看到将要卸载哪些依赖包,
避免卸载掉有用的软件
yum 更新 rpm 包 yum update 「包名简称」 在刚安装完软件时进行更新
yum 更新所有 rpm 包 yum update 不加包名,直接升级所有包和升级系统
查询软件的安装包 yum provides jenkins 查看 jenkins 是由哪个 rpm 包安装的
清理缓存 yum clean all
下载rpm包不安装 yum install [包名] -y --downloadonly 仅下载不安装,
默认存放在 /var/cache/yum/x86_64/7/xxx/packets
xxx为仓库源,如base、epel等
下载rpm包不安装,
并指定存放路径
yum install [包名] -y --downloadonly --downloaddir=/usr/local/src
如果是已安装的rpm包 yum reinstall -y [包名] --downloadonly

3、配置文件

yum 仓库的配置文件路径:/etc/yum.repos.d/CentOS-Base.repo

$ less CentOS-Base.repo
    [os]  # 仓库名,可配置多个不同的名称
    name=Qcloud centos os - $basearch
    baseurl=http://mirrors.tencentyun.com/centos1/$releasever/os/$basearch/  # 仓库地址
    enabled=1  # 是否可用,1可用,0不可用; 
    gpgcheck=1  # 是否检测,0不检测,1检测
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    [updates]
    name=Qcloud centos updates - $basearch
    baseurl=http://mirrors.tencentyun.com/centos1/$releasever/updates/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
......

yum 下载的文件默认保存路径是: /var/cache/yum

修改 yum 配置文件 /etc/yum.conf 可自定义保存路径:

vi /etc/yum.conf
-----------------
cachedir=/var/cache/yum  # 存放目录,可以自定义
keepcache=1  # 1为保存已经下载的rpm包,0为不保存,默认不保存
metadata_expire=1800  # 过期时间

4、修改 yum 源

有时候我们使用 yum 安装时网速非常慢,甚至有些软件找不到,那是因为默认的 yum 源是使用国外的仓库的,一般我们都要更换成国内的 yum 源仓库。

# 在操作之前,一定要先备份之前的 yum 源:
 mv CentOS-Base.repo CentOS-Base.repo_bak
 
# 下载一份新的国内的 CentOS-Base.repo 文件代替:
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
或者
curl -O http://mirrors.163.com/.help/CentOS7-Base-163.repo 

# 替换成功后,安装一个 rpm 包测试一下:
yum install -y zsh

# 除了 CentOS-Base.repo 这个标准的 rpm 源外,我们还可以安装 yum 扩展源 epel:
yum install -y epel-release

五、源码安装

前面介绍的都是使用包管理工具来安装,如果以上工具都不能使用的情况下,可以选择源码安装方式。

源码包指的一般是 tar 包格式的,需要通过编译器把源码编译成可执行的文件,安装比较复杂。

1、Binaries和Source包

一般开放原代码软件都会有两个版本发布:

Source Distribution 和 Binary Distribution ,二者有啥区别?

  • Source 是源代码版,用于查看源码,若用来安装的话,需要自己编译成可执行软件。
  • Binaries 是可执行版,是已经编译好的版本,通过包管理器或直接下载解压就可以使用。

2、源码包安装步骤

./configure---->make---->make install

2.1 获取源码

  • 下载软件源码包,一般存放在 /usr/local/src
  • 解压源码包。

2.2 查看INSTALL与README文件

  • 解压后查看INSTALL与README文件,这两个文件中详细介绍了本软件的安装方法和注意事项。

2.3 执行configure,生成Makefile文件

  • 执行 ./configure 命令,生成 Makefile 文件。
  • ./configure --prefix=/usr/local/xxx,常用 prefix 参数指定软件安装目录,当执行 make install 命令时,会将软件安装在此路径中。

2.4 执行make,从 Makefile 中读取指令,编译源码成二进制文件

  • make clean & make
  • make clean 命令用来清除上一次编译生成的目标文件。这个步骤可有可无,但为了确保编译的成功,还是加上为好。防止由于软件中含有残留的目标文件导致编译失败。

2.5 执行 make install,将软件安装到指定目录

  • make install
  • 此时二进制文件会被安装到先前 configure prefix 参数设置的路径中去。

猜你喜欢

转载自blog.csdn.net/lijing742180/article/details/88258118