二、Linux 包管理器与软件安装

前言

  在上一章我们简单了解了Linux的基本概念,基本思想,以及一些简单的文件操作,相信你现在已经可以打开linux并进行一些基本操作。当然,这些操作对于我们操作一个电脑来说过于简陋了,这和在windows下拿鼠标到处点点点一样,什么都干不了。本章来继续扩展linux的相关操作,本章我们从软件入手。理解Linux是如何安装软件,以及Linux对于软件安装的特点。

  首先,进入本章之前,我们需要一个可以制作虚拟机的软件,后面会用到几个虚拟机。Windows用户可以采用VM Ware来制作虚拟机,如果你已经在使用Linux物理机了,那么可以使用Oracle VM VirtualBox来创建虚拟机。使用VirtualBox后期还有一个好处是可以使用vagrant来管理你的虚拟机,这非常方便,包括我也是使用的v box 和 vagrnat来管理我的虚拟机的。大家根据个人情况不同采用相应方案,因为我们的重点并不在windows所以这里不过多赘述VM Ware的安装,会直接以v box安装的角度来开启本章。有关Linux的安装你可以参考你需要安装的发行版查看相应文档来安装Linux,相关Linux的安装细节可以简单查阅此处,更多细节可以从相关发行版官网查阅。关于镜像的下载你可以直接去官网查看你要下载的发行版,或者去清华大学镜像站下载

 

一、包管理器

1.1什么是包

  在计算机早期,软件的安装是需要靠源码来安装的。在软件源码根目录通常会存在一个README文件供你参考如何安装改软件,通过阅读README文件查看文件所需的组件,以及二进制文件的位置等。它通常包括一个配置脚本或Makefile,你必须编译或自己处理该软件所需的依赖,有些软件还需要安装其他软件。

  为了处理这个问题Linux 发行版创建了自己的打包格式,为终端用户提供随时可用的二进制文件(预编译软件),以便安装软件,同时提供一些元数据(版本号、描述)和依赖关系。一个“包”通常指的是一个应用程序,它可以是一个 GUI 应用程序、命令行工具或(其他软件程序需要的)软件库。包本质上是一个存档文件,包含二进制可执行文件、配置文件,有时还包含依赖关系的信息。

  那么包管理器实际就是一个管理包的工具,供用户来安装、卸载、删除、升级、配置和管理软件包。

  或许当你安装好Linux的时候(它可能是Ubuntu、Kylin、Deepin、Redhat、Centos又或者是某个国产的Linux操作系统)你可能会在系统中找到一个应用商店(不同发行版可能不同),打开后里面有各种应用可以选择安装,这其实也是一个包管理器。以Ubuntu为例 Ubuntu的ubuntu software是通过snap来管理的。你可以在上面找你想要的软件,如果你现在用的是Ubunut的物理机那么可以直接在上面搜索VirualBox来尝试安装v box(但根据版本不同,有可能会出现找不到的v box 的情况)。不过,snap虽然是包管理器,但不是我们的重点,snap虽然看似方便,但实际上效果经常不尽人意,大多数人都比较反感。

 

1.2包管理器版本

操作系统 格式 工具
Debian .deb apt , apt-cache ,  apt-get , dpkg

Ubuntu

.deb apt , apt-cache ,  apt-get , dpkg
CentOS .rpm yum
Fedora .rpm dnf
FreeBSD Ports | .txz make , pkg
ArchLinux —— pacman

 

  以上是一些常见发行版的包管理器,相信大家已经发现,有的版本格式以及工具会有相同的。这个通常是因为发行版的原因,Ubuntu实际上是基于Debian的,所以他们的工具以及格式相同。在Debian的分支里有很多大家相对常见的,比如kylin、UOS、deepin等等都是基于Debian的大基础上衍伸出来的版本。而CentOS其实就是RedHat的其中一个发行版,CentOS7曾经非常受欢迎,各家企业的服务器上基本都有,但是由于ReadHat的停止支持后,也有不少企业开始使用ubunut。本章就主要从Ubuntu以及CentOS来讲,其他的基本也是大同小异,当你理解了之后查阅相关文档就能使用。

  首先,无论你目前安装的是CentOS或者Ubuntu又或者是其他分支的版本。让我们先来简单的跑一个更新!

  相对Ubunut来说,你需要两个命令来更新你的库

更新源

sudo apt-get update

更新库

sudo apt-get upgrade

 

对于CentOS会简单得多,只需要一个命令

yum update

  运行了之后你会看到终端上会飞快的输出一些日志,这些日志主要输出更新了哪些内容,其中做了什么操作,有哪些内容没更新等等。如果没有报错的话这些并不重要,等待跑完就可以。   

 

1.3 源和依赖

  什么是源,就是包管理器获取软件包和更新的地址。通常是一个存放软件包信息的服务器或镜像站,允许你包管理器安装更新和依赖调整。这很好理解,我们假设饮料机是一个源,那么你需要什么饮料就去接什么饮料,需要可乐就去出可乐的口,需要芬达就去出芬达的口。那么这一个饮料机就是一个饮料的源。

  那么什么是依赖,依赖就是依赖,和名字就一样的。依赖是在你安装程序或包的时候,部分软件除了自己本身外还需要其他的包或软件才能运行。有点类似Windows下的运行库。对于依赖我么可以这么理解:

  现在有一个中药房,这是一个源。其中有配药员和医生,这比作包管理器。当你去到这个药房的时候,你提出要求,来给到配药和医生,也就是包管理器。医生会给你配置药方诊断病症,随后配药员会根据方子来搭配中药。这个过程其实就是包管理器在自动匹配相应的依赖。而药方我们知道,不可能只是一味药,单一的一味药可能达不到效果,或者效果完全不一样,就需要其他的药配在一起而成为一个方子。那么这些药就是这个方子的依赖,没有就不能达到想要的效果。

  还有一个比较少见的情况:依赖冲突,这个目前我们应该遇不到,依赖冲突可以通过包管理器或者一些其他工具来解决。

  CentOS的源配置文件在 /etc/yum.repos.d/CentOS-Base.repo 下,你可以cd到该目录查看。Ubuntu的在/etc/apt/sources.list.d 。这个源是可以更改和添加的,如果感觉太慢可以修改成阿里的镜像。

 

二、软件安装

  Linux下的软件安装有四种,源安装(也就是包管理器直接安装)、包安装、解压安装、编译安装。还有一种是AppImage,AppImage不需要安装,可以直接运行。

2.1源安装

  源安装在上一小节其实已经讲的差不多,接下来就是命令的使用了,我们可以首先打开帮助文档看以下(在这里我们Ubuntu采用的是apt-get 的工具)

  Ubuntu  语法:

apt-get [options] [command] [package ...]
  • options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。

我们可以用apt-get -h 来查看帮助文档

 

CentOS  语法:

yum [options] [command] [package ...]
  • options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 "yes"),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。

我们可以通过yum -h 来查看相关帮助

  如果你已经尝试运行了,那么可以看到帮助文档已经相对详细的写了该如何使用该工具。

 

  现在,让我们开始安装第一个软件。我们要安装的第一个软件是vim。vim是一款编辑器,功能非常强大,亦可作为IDE使用。深受广大网友喜爱!不多啰嗦,我们直接上命令。

Ubuntu:

sudo apt-get install vim

 

CentOS:

sudo yum install vim

 

  install 不难理解,就是安装的意思,后面的vim就是要安装vim这个包。但相信你应该会有一个疑惑,这个sudo又是什么东西?起到什么作用?为什么明明两个发行版但是都会有? 

  sudo 命令实际上是一种权限控制,因为在Linux上安装软件绝大多数时候都是需要最高权限来执行的,也就是root。而我们通常安装的系统版本默认都是会创建一个普通用户,但是具有sudo权限(你可以理解为管理员)来对电脑操作。通常是不直接用root用户进行操作的,那样不太安全。作为普通用户无法安装软件,那电脑还有啥用,所以就有了sudo提权的操作。使用sudo执行的命令就相当于是root用户直接执行的命令。因为这涉及到权限等问题,这里不做过多解释。你只需要理解,部分命令和操作你可能不能直接操作,但是可以通过sudo暂时提高你的权限来执行命令。

  当你运行安装命令后,同样也是会输出一些日志,等到日志输出结束,那么你就可以使用该软件了。在命令行输入vim 你就可以进入vim进行编辑了,当然如果你从来没有用过vi或vim,捣鼓了半天好像出不去了,那么恭喜你,你成功的生成了一段绝对随即的字符串,如果你已经生成了请把你生成的字符串打到评论区 (´・ω・`) !要退出很简单,如果你已经生成了字符串那么你需要先按 Esc (可以多按几次)然后输”:!q" 回车就能退出了,注意是先输入冒号,然后感叹号,再q 然后回车。如果你还没生成字符串那么可以不输入感叹号也可以退出。vim的具体操作我们会在下一章讲解。对于vim的了解我们暂时先到这里。

  这并没有什么难点,只需要告诉包管理你你要执行安装操作,要安装什么软件,包管理器会自动帮你完成安装。那么现在假设我要安装的东西或者某个版本,我的包管理器告诉我,我们的源里没有这个东西,或者版本,那应该怎么办呢?这个时候,我们就需要去找一个有没有哪个源有我们需要的东西。那这应该怎么找!?我们不用花太多力气,我们可以直接去该软件的官网找。我们先前说要从v-box安装的角度来进入,那么这里我们以v-box为例

  首先,我们需要找到v-box的官网,你可以直接搜索v-box或者Oracle VM VirtualBox找到他的官网

  进入之后我们可以直接点击上方导航栏的Download 或者Get Started 的Download 进入下载页面

 

 进入之后我们可以看到左边白色框Virtual Box Platform Packages里显示着各种操作系统,我们选择Linux distributions

 

  进入之后我们可以看到Orace提供了可以直接下载安装的包,这个下载之后可以使用包安装的方法直接安装。但是这种安装通常有一个弊端,你虽然安装了这个软件,但是你之后的update或者upgrade中有的包安装的软件是无法更新的。因为你没有源,所以软件无法更新,你更新还是需要再去下载这个包再次安装来手动更新。这很麻烦,所以我们这里先不管这些可以下载安装的软件包。

  让我们将画面往下

   以上内容里Oracle详细的写了该如何安装VirtualBox

 

CentOS:

  此处,Oracle Linux 也是属于ReadHat的一个分支家族,所以安装方法和CentOS相同,因为ReadHat已经有Oracle VitrualBox的源所以此处并未声明需要添加源。可以看到和我们安装vim的命令没什么太大不同,当然,他这里的命令是以root权限来直接运行的,所以如果你是普通sudo用户那么你还是需要在前面加一个sudo来运行该命令。

 

Ubuntu:  

  接下来此处是Ubuntu所需的,可以看到Debian-based LInux distributions。而我们的Ubuntu就是基于Debian的衍生版本,这里可以看到Oracle已经帮我们把命令写好了,我们只要稍作修改就可以直接复制后运行就可以。在复制运行之前,可能需要下载一个小工具 wget 。这个直接安装就可以,每个源里都会有的小工具。wget是一个下载文件的工具,由你提供URL然后wget会直接下载文件。

  然后复制第一条命令,第一条命令有各需要修改的小地方,在命令的末尾有一个<mydist>。这里需要你根据你的版本来修改,修改项在上面的解释中也有说明。<-将以下行添加到 /etc/apt/sources.list中将<mydist>替换为'bullseye', 'buster', 或 'stretch',对于Ubuntu22.04或更早版本使用'jammy', 'eoan', 'bionic', 'xenial' ->这就需要你去查看你的版本是什么而修改相应的内容,如果你是22.04的版本,那么<mydist>就要换成 jammy 其他版本可以直接搜索Ubuntu版本代号去查看,我的是jammy所以我这里直接使用jammy。此处他需要我们把这条写入 /etc/apt/sources.list 里,这里应该是使用vim来写入。但是因为本章不过多讲vim,所以我们使用另外的方法来写入这段。我们需要用到cat命令,上一章中我们简单讲过cat命令可以查看文件中的信息。当然他也可以写入文件里一些信息。

  此处我们会接触到一个新的东西 EOF(End Of File) 文件结束符,用于标识输入或文件的结束。

语法: 

cat >> [file name] << EOF
<input text>
EOF
  • 运算符 >> 表示将文本重定向到文件并且保留文件原本内容,也就是在文件最后添加。也可以写成 单个,单个 > 表示将文本重定向到文件,但不会保留文件原本内容,此处一定要注意。
  • << EOF 表示开始文本输入,知道遇到下一个单行出现的EOF

根据以上,我们可以得出我们需要写入的内容应该是这样:(此处目前不建议自己手动输入

sudo cat >> /etc/apt/source.list << EOF
deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian jammy contrib
EOF

 因为 /etc/apt/source.list 是root的文件,所以我们依然是需要sudo来做一个临时的提权。

 

  这里结束之后我们需要下载一个Oracle的公钥来做验证,也就是第二条所做的操作,不过这段我们可以不运行。Oracle在第三条命令列出了下载公交以及验证公钥的所有操作,所以我们直接运行第三条命令。这里就需要用到我们之前说到的wget来下载公钥。

wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg --dearmor

直接运行以上命令

  之后终端会输出公钥信息,你可以检查你的公钥信息是否正确。

  剩下的我们先运行update更新以下源,然后运行install 直接安装就可以。以上主要是以Ubuntu为主的讲解,对于CentOS,操作上基本相同,也是先将源写入文件,然后在安装应用。CentOS的源文件储存位置为:/etc/yum.repo.d/CentOS.repo。总体来说他们主要的区别是命令不同,性质和上基本相同。

 

2.2包安装

   包安装在上面的源安装小节提过一下,包安装一般没有太多操作,你只需要下载到包之后通过包管理器工具直接安装就可以。这次我们换成wps来演示,首先你需要下载对应的软件包。相同的,我们依然是直接去到wps官网并找到下载页面。Ubuntu用户或者说Debian分支的用户选择deb格式的包。而CentOS也就是ReadHat分支的用户选择rmp包。

Ubuntu: dpkg 基本语法

dpkg [<options>...] <command>
  • options:选项包括 --help(帮助)-i 手动安装等,详细配置参考 --help
  • command:要进行的操作。

此处我们只需要dpkg -i wps-*******-**.deb 就可以安装了

 

CentOS: rpm 基本语法

rpm [options] [package_file]
  • options:选项包括 --help(帮助)-i 手动安装等,详细配置参考 --help
  • package_file: 要进行操作的软件包

CentOS也是一样 rmp -ivh wps-******-**.rpm 就可以安装

 

  这个安装方法适用于大部分软件包,假设在安装时出现依赖不满足那么你只需要手动安装以下所提示的不够的依赖就可以。

 

2.3解压安装

  和标题一样,解压安装非常简单,通常是开发商或开发者已经编译好的软件。直接解压后可以直接运行,我们拿tomcat举例。首先依然是先进到tomcat官网,这里我们采用tomcat9的版本。

 

 点击Download进入下载页面

 

  这里我们选择Core下面的 tar.gz。(tar.gz是Linux下的一种压缩模式,稍后讲解命令的使用)你可以直接右键复制地址,然后用wget直接下载,也可以点击下载。这里我用wget直接下载。

 

  下载结束后当前目录下就会有一个apache-tomcat-9.x.x.xx.tar.gz的压缩包,此时我们需要来解压这个压缩包。解压tar的压缩包需要用到一个tar的命令。

 

tar基本语法:

tar [options] -f archive.tar [files...]
  • -f archive.tar:指定归档文件的名称。
  • [files...]:要打包的文件和目录。

此处我们需要用到解压,解压所需的参数主要是 zxvf 

  • z : 使用gzip格式压缩
  • x:将文件从tar包中提取出来
  • v:(可选)输出打包/解压过程详细信息
  • f:指定归档文件名称,也就是指定需要操作的文件
  • 其他参数可以参考 tar --help

解压tomcat:

tar -zxvf apache-tomcat-9.0.96.tar.gz

  解压完后tomcat 就已经完成安装了,进入tomcat目录,列出所有文件。上一章说过文件目录结构的大致,所以我们直接进入bin目录,找到startup.sh 这个文件并尝试运行。使用 ./startup.sh 通常都能直接运行,如果提示没有可运行权限那么你需要给以下授权  sudo chmod +x startup.sh 之后再试一次,就可以运行了。

 

  运行之后最后一行会显示Tomcat startd,说明已经正常运行了。那我们怎么知道他到底运行了没有呢。这很简单,我们又需要一个新的命令 curl。这个命令暂时不需要做过多了解,你只知道需要这个命令的基本用法就是 curl URL就可以。也就是在curl 后面加上一个地址就可以,这个地址可以是任何URL地址,你现在可以尝试以下curl 百度。

  现在我们来验证tomcat是否运行,tomcat启动后默认的端口号为8080,而URL就是本机ip,那么你可以用127.0.0.1或者localhost亦可以是你的当前ip。这里我们用localhost:8080

curl localhost:8080

  当他输出一段HTML代码那就说明没问题了,关掉也很简单,直接运行shutdown.sh就可以。

  解压安装就是很直接,解压后这个软件就可以直接使用了,到目前为止我们已经成功安装了tomcat并启动运行了它。你可以尝试更多的解压安装,但这要求开放商或开发者有二进制打包的软件包。我目前所安装过的解压安装的还有IntelliJ 的全家桶,你可以下载一个IDEA试一下。

 

2.4 编译安装

  以上的几种安装方法都不算太难,编译安装是这其中最麻烦的,但是编译安装却又是最准确的。因为部分软件的安装有的东西是需要你自己来定制的,比如vim。直接用源安装的vim通常是不支持python或python3支持的,但是你在编译安装的时候可以加入该支持现在你可以运行一下来查看你当前vim是否有python支持

vim --version | grep python

  这里可以看到有一个 -python 和一个+python3 ,这里表示的就是当前vim已开启python3支持但是未开启python 支持。- 就代表未安装支持,+就代表已安装支持。这里是我已经是编译安装过的,如果是直接源安装的那么应该两个支持都没有。当然不同版本可能有差异,有的可能是已经开启支持的。

  我们先前已经安装了vim 所以这里我们用nginx的安装来举例,(如果依然想重新编译安装vim可以参考我的另一篇文章)nginx这个软件比较独特。他有源,但没有包,而日常使用nginx通常不会用源安装,基本都是到官网下载所需版本并在编译时开启所需支持或功能。在开始之前,你需要安装一些依赖 gcc 和 make 使用包管理工具直接安装即可

  相同的,我们依然先访问nginx官网,进入到Download页面。

 

  这里我们可以看到有三个发行版我们选择第一个发行版,点击或复制nginx-1.27.2来直接下载或使用wget下载源码。下载完成后解压并进入nginx根目录。

   可以看到里面的目录结构,这里其他的我们先不用关注。我们主要需要关注的是 configure 这个文件,每一个编译安装的应用都会有这个文件。这个文件是一个脚本,运行后会检测当前系统环境是否满足安装该软件必要条件。也就是查看当前安装环境依赖是否满足运行当前程序,同时在运行configure的时候也可以设置一些编译时的参数来定制你所需开启或关闭的功能或支持。在编译前都需要用configure预编译,configure脚本最后会生成一个Makefile文件用于编译。

  make是一个编译构建工具它通过Makefile来构建应用。接下来,我们先用configure来检查以下环境。

  如果在你运行后报以上错误,说明没有安装gcc,这个时候你需要去安装以下gcc 还有不要忘了make也需要安装(不同发行版可能不同,有的可能有,但大部分需要自己安装)

 

 

  现在我的configure已经跑完了,但是这里输出的日志全是 not found 那就说明依赖不满足,无法正常安装。我们接着看是一个什么报错

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

  这里我们可以看到 the HTTP rewrite module requires the PCRE library ,<-HTTP重写模块需要PCRE库->。说明我们的环境里缺少PCRE库,导致nginx无法安装。那么此时就需要我们手动去安装以下PCRE这个库。但是如果你现在去直接 install pcre,你可能会发现,包管理器并没有找到这个叫PCRE的包。此时就要注意,这里报错的是PCRE的库,而不是PCRE包。那现在怎么办?当然是上百度啦,我是不会告诉你PCRE在哪个包的!

ubuntu

sudo apt-get install libpcre3 libpcre3-dev

CentOS

sudo yum install pcre pcre-dev

 

   再次预编译后大部分项目已经是found了,但是还是有项目是not found。同样的,和上面是一样的操作,我们先看少了哪个依赖,这里是 zlib library。所以我们需要再安装以下这个库,同样的,install zlib安装不上就上万能百度。

Ubuntu

sudo apt-get install zlib1g-dev

CentOS

yuj install zlib zlib-devel

  这是第三次预编译,已经没有再报错了。这时我们的预编译就完成了。你可以看一下当前目录下已经有一个Makefile的文件了,现在可以进行编译安装了。编译安装很简单,你只需要使用我们刚才安装的make工具就可以。

sudo make install

  关于make工具简单说一下基本用法,目前基本能用到的make操作不多,主要就是编译,安装,清理,卸载。make的使用也是非常的直接

编译:

sudo make

编译并安装:

sudo make isntall

清理已编译的文件:

sudo make clean

卸载用make编译安装的软件:

sudo make uninstall

部分软件安装时候可能没有定位安装信息,那么uninstall就会报错。这个时候通常只要直接删除安装目录以及相应安装的文件即可。

 

  此时安装完成后我们可以验证一下安装是否正常,软件是否能正常运行。nginx的默认安装位置在 /usr/local/nginx/ 下,直接cd到该目录,你可以看到nginx的大概文件组成。

   因为目前我们暂不讲nginx,所以我们直接进入sbin,nginx的启动程序就在这里,我们直接

sudo ./nginx

此时nginx基本就启动了,当然你也可以curl验证一下。nginx的地址同样是localhsot,端口号是80

crul localhost:80

 

 

  到此你已经基本掌握linux的各种软件安装方式,现在你可以去找你想要安装的应用程序用你喜欢的方式去尝试安装并使用!

posted @ 2024-10-22 09:45  公卿  阅读(70)  评论(0编辑  收藏  举报