Skip to content

软件包管理器和软件包的安装

我们带着问题来思考什么是包管理器以及怎么安装管理

在 Linux 上如何安装软件?

apt、yum、dpkg、pacman 是什么?

apt 和 apt-get 有什么区别?

curl 和 wget 又是什么?

像 nginx、node、vim 之类的软件(应用)如何下载

用 apt 之类的软件包命令行工具下载这些软件(应用)后,怎么查看它安装到哪里,以及如何启动它

如果我们平时使用的操作系统是 Windows,那么我们一定很熟悉 .exe;如果我们使用的是 Mac,那么我们一定熟悉 .dmg 。无论是 .exe 还是 .dmg 都可译作可执行文件,执行了之后就会让其安装。如果是在 Windows 系统,那么我们一般会安装到非 c:\Program Files 下,因为 ``c:\Program Files 存放的是系统文件,如果放得多,电脑的运行速度会变卡

如果在 Linux 上,我们的选择就很多了,因为 Linux 是开源的,所以派系很多,不同派系就有自己的软件包,所以我们需要注意的点也很多

一般来说,像我们使用的电脑分为桌面操作系统和服务器操作系统

桌面电脑(个人电脑)操作会带有一个图形用户界面,方便用户使用鼠标和键盘操作。桌面电脑主要给你一个系统,你可以用来浏览页面、编辑文档、写代码、玩游戏等

而服务器操作系统则专门用来托管网站、应用程序、数据库等等。它不需要大量的内存和计算能力,因为它不使用图形化桌面环境

桌面操作系统一般为 Windows、MacOS、Ubuntu、Debian、CentOS 等等,前两者是个人电脑的主要使用者,后几者一般安装虚拟机时会玩玩,当然,随着国家安全等问题,各国的国产Linux系统也慢慢在不断发展

服务器操作系统一般以 Ubuntu、Debian、CentOS 等 Linux 发行版的操作系统为主

我们所说的软件包管理,主要说的是在服务器操作系统下,Debian系 和 CentOS 系的的软件包管理

软件包管理的两大派系

Linux 的软件包有 Debian 系、Centos 系、Arch 系等等

Detian 系统软件包管理(.deb)

软件包格式:.deb 是 Debian 系统及其衍生版本(如 Ubuntu)使用的软件包格式

主要命令:

  • dpkg:低级别的包管理工具,用于安装、卸载和管理 .deb 软件包

  • 示例命令:

    • bash
      sudo dpkg -i package.deb  # 安装一个 .deb 软件包
      sudo dpkg -r package-name  # 卸载一个已安装的软件包
  • apt :高级别的包管理工具,基于dpkg, 提供了更友好的界面,它会为包自动智能地搜索、安装、升级以及解决依赖问题

  • 示例命令:

    • bash
      sudo apt update              # 更新软件包索引
      sudo apt install package-name  # 安装软件包
      sudo apt remove package-name  # 卸载软件包

RPM 系统软件包管理(.rpm)

软件包格式:.rpm 是 Red Hat 系列及其衍生版本(如 CentOS、Fedora)使用的软件包格式

主要命令:

  • rpm:低级别的包管理工具,用于安装、卸载和管理 .rpm 软件包

  • 示例命令:

    • bash
      sudo rpm -ivh package.rpm   # 安装一个 .rpm 软件包
      sudo rpm -e package-name     # 卸载一个已安装的软件包
  • yum:基于 RPM 的高级包管理工具,提供依赖解决和软件源管理

    示例命令:

    • bash
      sudo yum update              # 更新所有软件包
      sudo yum install package-name  # 安装软件包
      sudo yum remove package-name  # 卸载软件包

Detian 系统Apt以及dpkg的详细介绍

Apt 软件安装命令

apt 命令执行需要超级管理员权限(root),因此在前面需要加上sudo 命令

bash
# 软件源中获取最新索引数据
sudo apt update
# 升级软件包
sudo apt upgrade
# 安装软件
sudo apt install 软件包
# 卸载软件
sudo apt remove 软件包
# 完全卸载软件
sudo apt purge 软件包
# 例如
sudo apt install openssh-server
sudo apt install putty
sudo apt remove vim 
sudo apt purge vim

还有其他命令参数

bash
apt []
      list - 根据名称列出软件包
      search - 搜索软件包描述
      show - 显示软件包细节
      remove - 移除软件包
      autoremove - 卸载没有使用的依赖
      purge - 卸载软件和配置文件
      full-upgrade - 通过 卸载/安装/升级 来更新系统
      edit-sources - 编辑软件源信息文件
      satisfy - 使系统满足依赖关系字符串

dpkg 软件安装命令

dpkg 即 package manager for Debian,是 Debian 和基于 Debian 的系统中的一个主要的包管理工具,可以用来安装、构建、卸载、管理 deb 格式的软件包

用法:

bash
dpkg -i package_file
dpkg --install package_file
# 示例
dpkg -i putty.deb
# dpkg --help

使用 dpkg 命令安装软件时,可以使用 -i 选项并指定 deb 安装包的路径。和 Ubuntu 下的另一个包管理工具 apt-get(Advanced Package Tool)有所不同。

软件安装的三种方式

一:软件包管理工具安装(推荐)

二、二进制安装

三、源码编译安装

软件包管理工具安装

例如安装 nodejs

bash
apt -y install nodejs # debian 系列
yum -y install nodejs # centos 系列

二进制安装

获取二进制源码

前往官网,选择自己电脑的架构包

bash
cd /usr/local/src
wget https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-x64.tar.xz

解压二进制包

bash
sudo tar -xvf node-v22.11.0-linux-x64.tar.xz

配置环境变量

/etc/profile 文件结尾添加 node 环境变量

bash
sudo echo '
export NODE_HOME=/usr/local/src/node-v22.11.0-linux-x64
export NODE_PATH=$NODE_HOME/lib/node_modules
export PATH=$PATH:$NODE_HOME/bin
' >> /etc/profile

使环境变量生效

bash
sudo source /etc/profile

验证 node 及 npm 版本

bash
node --version
npm --version

源码编译安装

获取源码

前往官网,获取源码链接

bash
cd /usr/local/src
wget https://nodejs.org/dist/v22.11.0/node-v22.11.0.tar.gz

解压二进制包

bash
sudo tar -zxvf node-v22.11.0.tar.xz
cd node-v22.11.0/

编译安装

bash
mkdir /usr/local/src/node-v22.11.0
./configure --prefix=/usr/local/src/node-v18.12.1
make && make install

之后就同上配置环境变量、使环境变量生效、验证 node 及 npm 版本即可

问题回答

Q:在 Linux 上如何安装软件?

A:不同操作系统安装不同的命令执行,一般有 apt、yum、dpkg、pacman 等软件包命令行工具

Q:apt、yum、dpkg、pacman 是什么?

A:apt、dpkg 是debian 、ubuntu 的软件包命令行工具,yum 是centos 系的软件包命令行工具,pacman 是 arch 的软件包命令行工具

Q:apt 和 apt-get 有什么区别?

A:aptapt-get 都是用来管理 Debian 系的软件包命令行工具,但是 apt-get 比较早,功能比较简单,apt 是新一代的命令行工具,推荐使用

Q:curl 和 wget 又是什么?

A:curl 和 wget 是两个常用的命令行工具,用于从网络上下载和传输数据

Q:像 nginx、node、vim 之类的软件(应用)如何下载

A:一般有三种,软件包安装、二进制安装、源码编译安装

Q:用 apt 之类的软件包命令行工具下载这些软件(应用)后,怎么查看它安装到哪里,以及如何启动它

A:which nginxdpkg -L nginx

附录1:包管理器镜像站

可以理解为软件包放在网络上,可以通过 debian 系的镜象列表 查看,在后续介绍中我们会提及,因为国内有墙的原因,我们需要更换镜像源,才能正常下载依赖包

对应的文件就是 /etc/apt/sources.list

一般来说,初始化云服务器时,我们先备份源列表,再更新 sources.list

bash
# 首先备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
# 打开 sources.list
sudo vim /ect/apt/sources.list

再替换里面的内容

bash
#  阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

刷新列表

bash
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential

当然,还有清华、中科大、163源等

附录2:AppImage 软件格式

什么是AppImage

AppImage是一种把应用打包成单一文件的格式,允许在各种不同的Linux系统上运行,无需进一步修改

如何运行AppImage

要运行AppImage,为其添加可执行权限即可

假如当前目录下有一个名为app.appimage的文件,运行下面命令赋予其可执行权限:

bash
chmod +x app.appimage

然后运行该AppImage

bash
sudo ./app.appimage

如何管理AppImage

AppImage可以在任何位置运行,但是这样运行起来非常不方便,我们希望可以有程序来统一管理这些AppImage,并且为它们添加到开始菜单中以方便启动,AppImageLauncher就是这样一个程序

安装AppImageLauncher

从Github中获取AppImageLauncher的最新发布版:https://github.com/TheAssassin/AppImageLauncher/releases

根据自己的系统架构,下载对应的deb安装包,下载后进行安装:

bash
sudo dpkg -i  appimagelauncher*.deb

添加AppImage

安装完成后,再运行任何未安装的 AppImage 程序文件,都会询问是单次运行Run once或是集成并运行Intergrate and run,选择后者就会将AppImage移至统一的文件夹下(默认为~/Applications/,可以在AppImageLauncher的设置中修改),并且为其添加到开始菜单中,这样以后运行就会方便许多

移除AppImage

如果通过 AppImageLauncher 管理的某个AppImage不想要了,可直接对开始菜单中该程序的图标右键,选择从系统中移除 Remove from system 即可