软件包管理器和软件包的安装
我们带着问题来思考什么是包管理器以及怎么安装管理
在 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
命令
# 软件源中获取最新索引数据
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
还有其他命令参数
apt []
list - 根据名称列出软件包
search - 搜索软件包描述
show - 显示软件包细节
remove - 移除软件包
autoremove - 卸载没有使用的依赖
purge - 卸载软件和配置文件
full-upgrade - 通过 卸载/安装/升级 来更新系统
edit-sources - 编辑软件源信息文件
satisfy - 使系统满足依赖关系字符串
dpkg 软件安装命令
dpkg
即 package manager for Debian,是 Debian 和基于 Debian 的系统中的一个主要的包管理工具,可以用来安装、构建、卸载、管理 deb
格式的软件包
用法:
dpkg -i package_file
dpkg --install package_file
# 示例
dpkg -i putty.deb
# dpkg --help
使用 dpkg
命令安装软件时,可以使用 -i
选项并指定 deb 安装包的路径。和 Ubuntu 下的另一个包管理工具 apt-get
(Advanced Package Tool)有所不同。
软件安装的三种方式
一:软件包管理工具安装(推荐)
二、二进制安装
三、源码编译安装
软件包管理工具安装
例如安装 nodejs
apt -y install nodejs # debian 系列
yum -y install nodejs # centos 系列
二进制安装
获取二进制源码
前往官网,选择自己电脑的架构包
cd /usr/local/src
wget https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-x64.tar.xz
解压二进制包
sudo tar -xvf node-v22.11.0-linux-x64.tar.xz
配置环境变量
在 /etc/profile
文件结尾添加 node 环境变量
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
使环境变量生效
sudo source /etc/profile
验证 node 及 npm 版本
node --version
npm --version
源码编译安装
获取源码
前往官网,获取源码链接
cd /usr/local/src
wget https://nodejs.org/dist/v22.11.0/node-v22.11.0.tar.gz
解压二进制包
sudo tar -zxvf node-v22.11.0.tar.xz
cd node-v22.11.0/
编译安装
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:apt
和 apt-get
都是用来管理 Debian 系的软件包命令行工具,但是 apt-get
比较早,功能比较简单,apt
是新一代的命令行工具,推荐使用
Q:curl 和 wget 又是什么?
A:curl 和 wget 是两个常用的命令行工具,用于从网络上下载和传输数据
Q:像 nginx、node、vim 之类的软件(应用)如何下载
A:一般有三种,软件包安装、二进制安装、源码编译安装
Q:用 apt 之类的软件包命令行工具下载这些软件(应用)后,怎么查看它安装到哪里,以及如何启动它
A:which nginx
、dpkg -L nginx
附录1:包管理器镜像站
可以理解为软件包放在网络上,可以通过 debian 系的镜象列表 查看,在后续介绍中我们会提及,因为国内有墙的原因,我们需要更换镜像源,才能正常下载依赖包
对应的文件就是
/etc/apt/sources.list
一般来说,初始化云服务器时,我们先备份源列表,再更新 sources.list
# 首先备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
# 打开 sources.list
sudo vim /ect/apt/sources.list
再替换里面的内容
# 阿里源
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
刷新列表
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
当然,还有清华、中科大、163源等
附录2:AppImage 软件格式
什么是AppImage
AppImage
是一种把应用打包成单一文件的格式,允许在各种不同的Linux系统上运行,无需进一步修改
如何运行AppImage
要运行AppImage
,为其添加可执行权限即可
假如当前目录下有一个名为app.appimage
的文件,运行下面命令赋予其可执行权限:
chmod +x app.appimage
然后运行该AppImage
:
sudo ./app.appimage
如何管理AppImage
AppImage
可以在任何位置运行,但是这样运行起来非常不方便,我们希望可以有程序来统一管理这些AppImage
,并且为它们添加到开始菜单中以方便启动,AppImageLauncher
就是这样一个程序
安装AppImageLauncher
从Github中获取AppImageLauncher
的最新发布版:https://github.com/TheAssassin/AppImageLauncher/releases
根据自己的系统架构,下载对应的deb
安装包,下载后进行安装:
sudo dpkg -i appimagelauncher*.deb
添加AppImage
安装完成后,再运行任何未安装的 AppImage
程序文件,都会询问是单次运行Run once
或是集成并运行Intergrate and run
,选择后者就会将AppImage移至统一的文件夹下(默认为~/Applications/
,可以在AppImageLauncher
的设置中修改),并且为其添加到开始菜单中,这样以后运行就会方便许多
移除AppImage
如果通过 AppImageLauncher
管理的某个AppImage
不想要了,可直接对开始菜单中该程序的图标右键,选择从系统中移除 Remove from system
即可