3-0-1-ubuntu软件管理
1.软件是什么
软件的定义
软件是一系列按照特定顺序组织的计算机数据和指令的集合。它是计算机系统中与硬件相互依存的另一部分,通过执行特定的任务或功能,帮助用户完成各种操作,使计算机能够实现不同的用途。简单来说,软件就像是计算机的“灵魂”,指挥着硬件完成各种工作。
软件的组成部分
从不同的角度来看,软件主要由以下几个关键部分组成:
程序
程序是软件的核心,它是为了实现特定功能而编写的一系列有序的指令集合。这些指令能够被计算机的中央处理器(CPU)理解和执行。例如,在一个文字处理软件中,程序会包含打开文件、保存文件、输入文字、排版等各种操作的指令代码。
数据
数据是软件处理的对象和结果。它可以是各种形式的信息,如文本、图像、音频、视频等。软件在运行过程中会对数据进行读取、存储、处理和输出等操作。比如,财务软件会处理公司的财务数据,包括收入、支出、资产等;图像编辑软件则会对图像数据进行裁剪、调色、添加特效等操作。
文档
文档是对软件的说明和解释性材料,它对于软件的开发、使用、维护都非常重要。常见的文档包括用户手册、操作指南、需求规格说明书、设计文档、测试报告等。用户手册可以帮助用户了解软件的功能和使用方法;而对于开发人员来说,设计文档和需求规格说明书则是软件开发过程中的重要参考依据。
软件的分类方式
软件可以根据不同的标准进行分类,以下是几种常见的分类方式:
按功能用途分类
- 系统软件
- 系统软件是管理和控制计算机硬件与软件资源的软件,它为计算机用户提供了一个操作环境和基础服务。常见的系统软件包括操作系统(如Windows、Linux、macOS等)、设备驱动程序(如显卡驱动、声卡驱动等)、数据库管理系统(如MySQL、Oracle等)。操作系统负责管理计算机的硬件资源,如CPU、内存、磁盘等,同时为用户和应用程序提供一个操作界面;设备驱动程序则是使计算机能够识别和使用各种外部设备。
- 应用软件
- 应用软件是为了满足用户的特定需求而开发的软件。它可以帮助用户完成各种具体的任务,如办公、娱乐、学习、科研等。常见的应用软件包括办公软件(如Microsoft Office、WPS Office)、图像处理软件(如Adobe Photoshop)、游戏软件(如《王者荣耀》《原神》)、教育软件(如网易云课堂)等。
- 支撑软件
- 支撑软件是用于辅助软件开发、维护和管理的软件。它为软件开发人员提供了各种工具和环境,帮助他们提高开发效率和软件质量。例如,集成开发环境(IDE),如Visual Studio、Eclipse等,提供了代码编辑、编译、调试等功能;版本控制系统,如Git,用于管理软件开发过程中的代码版本。
- 系统软件是管理和控制计算机硬件与软件资源的软件,它为计算机用户提供了一个操作环境和基础服务。常见的系统软件包括操作系统(如Windows、Linux、macOS等)、设备驱动程序(如显卡驱动、声卡驱动等)、数据库管理系统(如MySQL、Oracle等)。操作系统负责管理计算机的硬件资源,如CPU、内存、磁盘等,同时为用户和应用程序提供一个操作界面;设备驱动程序则是使计算机能够识别和使用各种外部设备。
按授权方式分类
- 商业软件
- 商业软件是由软件开发商开发并销售的软件,用户需要购买许可证才能使用。这些软件通常提供了高质量的功能和完善的技术支持,但价格相对较高。例如,Adobe公司的Photoshop、Premiere等软件,用户需要支付一定的费用才能获得使用授权。
- 共享软件
- 共享软件通常允许用户在一定的试用期内免费使用,试用期结束后,如果用户希望继续使用,则需要支付注册费用。共享软件的开发者通过这种方式来推广软件,并获得经济回报。例如,WinRAR压缩软件就是一款常见的共享软件。
- 免费软件
- 免费软件是可以免费获取和使用的软件,用户无需支付任何费用。它可能由个人开发者、开源社区或商业公司提供。免费软件的盈利模式可能包括广告收入、增值服务等。例如,360安全卫士、腾讯QQ等软件都是免费提供给用户使用的。
- 开源软件
- 开源软件不仅可以免费使用,而且其源代码是公开的,任何人都可以查看、修改和分发。开源软件的开发通常是由开源社区的开发者共同参与完成的,它强调了软件的自由和协作精神。常见的开源软件包括Linux操作系统、Apache服务器软件、MySQL数据库等。
1.1什么是程序
程序在计算机领域是一个核心概念,下面从定义、组成元素、工作原理和表现形式几个方面详细介绍:
定义
程序是为实现特定目标或解决特定问题,用计算机程序设计语言编写的、有序的指令集合。这些指令会精确地告诉计算机要执行什么操作、按照什么顺序执行,从而让计算机完成各种任务,从简单的数据处理到复杂的模拟运算、图像渲染等。
组成元素
- 数据:程序处理的对象,有多种类型。例如整数(如 100、 - 5)、浮点数(如 3.14)、字符(如 'A')、字符串(如 "Hello, World!")等。不同类型的数据在程序中有不同的存储和处理方式。
- 指令:指挥计算机进行操作的命令。如赋值指令(将一个值赋给一个变量)、算术运算指令(进行加、减、乘、除等运算)、条件判断指令(根据条件决定执行不同的代码分支)和循环指令(重复执行某一段代码)等。
工作原理
程序的运行通常需要经过以下几个关键步骤:
- 编写代码:程序员使用特定的程序设计语言(如 Python、Java、C++ 等)按照问题的解决方案编写代码。例如,使用 Python 编写一个简单的计算两个数之和的程序:
a = 5 b = 3 sum_result = a + b print(sum_result)
- 编译或解释
- 编译:对于编译型语言(如 C、C++),需要使用编译器将源代码翻译成计算机能够直接执行的机器语言代码。编译器会检查代码中的语法错误,并生成可执行文件。
- 解释:解释型语言(如 Python、JavaScript)则使用解释器逐行读取并执行源代码。解释器会在运行时将代码翻译成机器语言并执行。
- 运行程序:将编译后的可执行文件或解释器加载的代码在计算机上运行。计算机按照程序中的指令顺序依次执行,处理数据并产生相应的结果。
表现形式
- 系统程序:主要用于管理和控制计算机系统的资源和操作,是计算机系统正常运行的基础。例如操作系统(如 Windows、Linux)、设备驱动程序(让计算机硬件设备正常工作的程序)等。
- 应用程序:为满足用户的各种具体需求而开发的程序。例如办公软件(如 Microsoft Word)、图像处理软件(如 Adobe Photoshop)、游戏软件(如《英雄联盟》)等。
1.2 C语言程序编译过程
C 语言的编译过程是将人类可读的 C 语言源代码转换为计算机能够执行的机器代码的一系列步骤,主要包括预处理、编译、汇编和链接四个阶段,下面为你详细介绍每个阶段:
预处理阶段
- 作用:预处理器会根据代码中的预处理指令对源代码进行初步处理,处理那些以
#
开头的命令,例如包含头文件、宏替换、条件编译等。 - 涉及指令及处理方式
- 包含头文件:
#include
指令会将指定的头文件内容插入到当前文件中。例如,#include <stdio.h>
会将标准输入输出库的头文件内容插入到代码中。 - 宏替换:
#define
定义的宏会在这一阶段进行替换。比如,#define PI 3.14
,代码中所有的PI
都会被替换成3.14
。 - 条件编译:根据
#ifdef
、#ifndef
、#if
等指令,决定哪些代码块会被保留,哪些会被忽略。
- 包含头文件:
- 示例代码
```c
include
define MAX 100
int main() { int num = MAX; printf("%d\n", num); return 0; }
- **命令及输出文件**:在 Linux 系统下,使用 `gcc -E test.c -o test.i` 命令进行预处理,生成后缀为 `.i` 的预处理后的文件。
### 编译阶段
- **作用**:编译器会对预处理后的代码进行词法分析、语法分析、语义分析等,检查代码的语法和语义错误。如果代码没有问题,编译器会将其转换为汇编代码。
- **工作过程**
- **词法分析**:将源代码中的字符流识别为一个个的词法单元,例如关键字、标识符、运算符等。
- **语法分析**:根据语法规则,将词法单元组合成语法树,检查代码的语法结构是否正确。
- **语义分析**:检查代码的语义是否合理,例如变量是否被正确声明和使用等。
- **命令及输出文件**:使用 `gcc -S test.i -o test.s` 命令进行编译,生成后缀为 `.s` 的汇编文件。
### 汇编阶段
- **作用**:汇编器将汇编代码转换为机器语言代码,生成目标文件。目标文件是二进制文件,包含了机器指令和数据,但还不能直接运行。
- **工作方式**:汇编器会将汇编代码中的每条指令翻译成对应的机器指令,并处理符号表等信息。
- **命令及输出文件**:使用 `gcc -c test.s -o test.o` 命令进行汇编,生成后缀为 `.o` 的目标文件。
### 链接阶段
- **作用**:链接器将多个目标文件和库文件链接在一起,生成可执行文件。在程序中,可能会调用其他目标文件或库文件中的函数和变量,链接器的作用就是将这些符号引用和定义进行匹配和连接。
- **链接类型**
- **静态链接**:将所需的库文件的代码直接复制到可执行文件中,生成的可执行文件可以独立运行,但文件体积较大。
- **动态链接**:可执行文件在运行时才会加载所需的库文件,多个程序可以共享同一个库文件,节省系统资源。
- **命令及输出文件**:使用 `gcc test.o -o test` 命令进行链接,生成可执行文件(在 Windows 下通常是 `.exe` 文件,在 Linux 下没有特定的扩展名)。
## 2.ubuntu软件包
在Ubuntu操作系统中,软件包是一种用于分发和管理软件的文件格式,下面从软件包概念、管理工具、获取途径、安装与卸载等方面详细介绍。
### 软件包概念
软件包将软件的所有文件(包括可执行文件、配置文件、库文件等)以及元数据(如软件名称、版本、依赖关系等)打包成一个或多个文件。这使得软件的分发、安装、升级和卸载变得更加方便和高效。
### 软件包管理工具
- **APT(Advanced Package Tool)**
- **介绍**:Ubuntu 中最常用的软件包管理工具,基于命令行操作,能自动处理软件包的依赖关系。
- **常用命令**
- `sudo apt update`:更新软件包列表,从软件源获取最新的软件包信息。
- `sudo apt upgrade`:升级已安装的软件包到最新版本。
- `sudo apt install <package_name>`:安装指定的软件包。
- `sudo apt remove <package_name>`:移除指定的软件包,但保留配置文件。
- `sudo apt purge <package_name>`:彻底移除指定的软件包,包括配置文件。
- **dpkg**
- **介绍**:Debian 软件包管理器,是 APT 的底层工具,主要用于处理本地的 `.deb` 软件包文件,不处理依赖关系。
- **常用命令**
- `sudo dpkg -i <package_file.deb>`:安装本地的 `.deb` 软件包。
- `sudo dpkg -r <package_name>`:移除已安装的软件包。
- `sudo dpkg -P <package_name>`:彻底移除软件包及其配置文件。
### 软件包获取途径
- **官方软件源**
- Ubuntu 官方维护了一系列的软件源,包含了大量经过测试和审核的软件包。这些软件源在 `/etc/apt/sources.list` 文件中配置,默认情况下会指向官方的服务器。
- 优点是软件包的安全性和稳定性有保障,并且可以方便地进行更新和升级。
- **第三方软件源**
- 一些软件开发者或组织会提供自己的软件源,以方便用户安装他们的软件。例如,Google Chrome 浏览器就提供了自己的软件源。
- 使用第三方软件源需要谨慎,因为这些软件源的安全性和稳定性可能不如官方软件源。
- **本地 `.deb` 文件**
- 用户可以从软件的官方网站或其他渠道下载 `.deb` 格式的软件包文件,然后使用 `dpkg` 或 `apt` 进行安装。
### 软件包依赖关系
- 大多数软件包都会依赖其他的软件包才能正常运行。例如,一个图形处理软件可能依赖于某个图形库。当使用 APT 安装软件包时,它会自动检测并安装所需的依赖软件包。
- 如果依赖关系处理不当,可能会导致软件安装失败或运行异常。在某些情况下,可能需要手动解决依赖问题,例如通过添加额外的软件源或安装特定版本的软件包。
### 软件包的更新与升级
- **更新软件包列表**:定期使用 `sudo apt update` 命令更新软件包列表,以获取最新的软件包信息。
- **升级已安装的软件包**:使用 `sudo apt upgrade` 命令可以将已安装的软件包升级到最新版本。如果想要升级整个系统,可以使用 `sudo apt full-upgrade` 命令,它会处理因升级软件包而导致的依赖关系变化。
## 3.apt命令
APT(Advanced Package Tool)是 Ubuntu、Debian 等基于 Debian 系统的 Linux 发行版中用于管理软件包的强大工具。它可以自动处理软件包之间的依赖关系,让软件的安装、更新和卸载变得更加简单。以下是一些常用的 APT 命令及其功能和示例:
### 软件包信息更新
- **`sudo apt update`**
- **功能**:从软件源服务器上下载最新的软件包列表信息。这些信息包含了各个软件包的版本、描述以及依赖关系等。当你需要安装或升级软件时,确保先运行此命令,以获取最新的软件信息。
- **示例**:在终端中输入 `sudo apt update`,系统会提示你输入管理员密码,输入正确密码后,它会连接到配置的软件源服务器并下载最新的软件包列表。
### 软件包升级
- **`sudo apt upgrade`**
- **功能**:根据 `apt update` 所获取的最新软件包信息,将系统中已安装的软件包升级到最新版本。此命令会保留现有的软件包配置文件,并且不会删除或安装新的依赖项。
- **示例**:运行 `sudo apt upgrade` 后,系统会列出可升级的软件包,并询问你是否要继续升级,输入 `Y` 并回车即可开始升级。
- **`sudo apt full-upgrade`**
- **功能**:与 `apt upgrade` 类似,但 `full-upgrade` 会更积极地处理依赖关系的变化。如果升级某个软件包需要移除其他软件包或者安装新的依赖项,`full-upgrade` 会自动处理这些情况。
- **示例**:当系统有重大的软件包升级时,使用 `sudo apt full-upgrade` 可以确保所有的依赖关系都得到正确处理。
### 软件包安装
- **`sudo apt install <package_name>`**
- **功能**:用于安装指定名称的软件包。如果该软件包有依赖项,APT 会自动下载并安装这些依赖项。
- **示例**:要安装 `vim` 文本编辑器,可以在终端中输入 `sudo apt install vim`,然后按照提示完成安装。
- **`sudo apt install <package_name>=<version>`**
- **功能**:安装指定版本的软件包。当你需要特定版本的软件时,可以使用此命令。
- **示例**:如果要安装 `nginx` 版本 1.18.0,可以输入 `sudo apt install nginx=1.18.0-0ubuntu1`。
### 软件包移除
- **`sudo apt remove <package_name>`**
- **功能**:移除指定的软件包,但会保留该软件包的配置文件。如果之后你再次安装该软件包,之前的配置信息仍然可用。
- **示例**:要移除 `firefox` 浏览器,可以运行 `sudo apt remove firefox`。
- **`sudo apt purge <package_name>`**
- **功能**:彻底移除指定的软件包,包括其配置文件。这意味着再次安装该软件包时,需要重新进行配置。
- **示例**:使用 `sudo apt purge thunderbird` 可以彻底移除 Thunderbird 邮件客户端及其相关配置文件。
### 软件包搜索
- **`apt search <keyword>`**
- **功能**:在软件包列表中搜索包含指定关键字的软件包,并显示相关的软件包名称和描述。
- **示例**:若要搜索与 “image editor” 相关的软件包,可以输入 `apt search image editor`。
### 软件包信息查看
- **`apt show <package_name>`**
- **功能**:显示指定软件包的详细信息,包括版本、依赖关系、安装大小、描述等。
- **示例**:运行 `apt show vlc` 可以查看 VLC 媒体播放器的详细信息。
### 清理缓存
- **`sudo apt autoclean`**
- **功能**:清理已经无法再从软件源下载到的旧软件包缓存文件,释放磁盘空间。
- **示例**:定期运行 `sudo apt autoclean` 可以清理系统中不必要的缓存文件。
- **`sudo apt clean`**
- **功能**:清理所有已下载的软件包缓存文件,不管这些软件包是否还能从软件源下载到。
- **示例**:当磁盘空间紧张时,可以使用 `sudo apt clean` 来释放更多的磁盘空间。
## 4.apt配置文件
在基于 Debian 系的 Linux 系统(如 Ubuntu)中,`apt` 的配置文件和软件仓库的设置至关重要,它们决定了系统从何处获取软件包以及如何处理这些软件包。以下为你详细介绍相关内容:
### apt 配置文件
#### `/etc/apt/sources.list`
- **作用**:这是 `apt` 最重要的配置文件,它定义了系统默认的软件源列表,即软件包的下载来源。软件源可以是官方服务器、镜像站点或第三方服务器。
- **格式**:每一行代表一个软件源,基本格式为 `deb [选项] <镜像地址> <发行版代号> <组件>` 或 `deb-src [选项] <镜像地址> <发行版代号> <组件>`。
- `deb` 表示二进制软件包,`deb-src` 表示源代码软件包。
- `[选项]` 是可选的,例如 `[arch=amd64]` 可以指定架构。
- `<镜像地址>` 是软件源服务器的地址,如 `http://archive.ubuntu.com/ubuntu`。
- `<发行版代号>` 是 Ubuntu 发行版的代号,如 `focal`(对应 Ubuntu 20.04)。
- `<组件>` 通常包括 `main`(官方支持的自由软件)、`restricted`(官方支持的非自由软件)、`universe`(社区维护的自由软件)和 `multiverse`(非自由且不受支持的软件)。
- **示例**:
```plaintext
deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
/etc/apt/sources.list.d/
目录
- 作用:该目录用于存放额外的软件源配置文件。当你需要添加第三方软件源或特定用途的软件源时,可以在此目录下创建新的
.list
文件,这样可以避免直接修改sources.list
文件带来的混乱。 - 示例:如果你要添加 Google Chrome 的软件源,可以创建一个
google-chrome.list
文件,内容如下:deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
/etc/apt/apt.conf
及 /etc/apt/apt.conf.d/
目录
- 作用:这些文件和目录用于配置
apt
的其他行为,如代理设置、下载选项、安全设置等。/etc/apt/apt.conf
是全局配置文件,而/etc/apt/apt.conf.d/
目录下的.conf
文件会被依次读取和应用。 - 示例:设置代理服务器,可以在
/etc/apt/apt.conf.d/90proxy
文件中添加如下内容:Acquire::http::Proxy "http://proxy.example.com:8080"; Acquire::https::Proxy "http://proxy.example.com:8080";
软件仓库
官方软件仓库
- 介绍:由 Ubuntu 官方维护和支持,包含了大量经过测试和审核的软件包,具有较高的安全性和稳定性。官方软件仓库分为不同的组件,如
main
、restricted
、universe
和multiverse
。 - 优点:软件包更新及时,与系统兼容性好,提供长期支持。
- 使用方法:默认情况下,
/etc/apt/sources.list
文件中已经配置了官方软件仓库的地址,你可以直接使用apt
命令从这些仓库中安装软件。
镜像软件仓库
- 介绍:镜像仓库是官方软件仓库的副本,它们分布在世界各地的服务器上,用于加速软件包的下载。镜像仓库的内容与官方仓库保持同步,但由于地理位置的原因,下载速度可能更快。
- 优点:下载速度快,减少网络延迟。
- 使用方法:你可以将
sources.list
文件中的官方仓库地址替换为国内的镜像地址,如阿里云镜像、清华大学镜像等。以阿里云镜像为例,将sources.list
文件内容替换为:deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
第三方软件仓库
- 介绍:由软件开发者或其他组织提供的软件仓库,用于分发他们自己开发的软件。例如,Google、Oracle 等公司会提供自己的软件仓库,方便用户安装他们的产品。
- 优点:可以获取到官方软件仓库中没有的软件。
- 风险:第三方软件仓库的安全性和稳定性可能不如官方仓库,使用时需要谨慎。
- 使用方法:通常需要先添加第三方软件源的 GPG 密钥(用于验证软件包的完整性),然后在
/etc/apt/sources.list.d/
目录下添加相应的软件源配置文件,最后使用apt update
更新软件包列表后即可安装软件。例如,添加 Docker 的第三方软件源:# 添加 GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 添加软件源 echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 更新软件包列表 sudo apt update
5.源代码编译软件
在 Linux 系统中,通过源代码编译安装软件是一种常见且灵活的方式,能让你根据自身需求定制软件的功能和配置。以下为你详细介绍通过源代码编译软件的一般步骤及相关说明:
1. 获取源代码
- 官方网站:许多软件开发者会在其官方网站上提供软件的源代码包,通常以
.tar.gz
、.tar.bz2
或.zip
等压缩格式存在。你可以使用浏览器下载,也可以使用wget
或curl
等命令行工具进行下载。- 示例:使用
wget
下载nginx
的源代码包:wget https://nginx.org/download/nginx-1.24.0.tar.gz
- 示例:使用
- 版本控制系统:一些开源项目会使用版本控制系统(如 Git)来管理代码。你可以使用
git
命令从项目的代码仓库中克隆源代码。- 示例:克隆
Vim
的源代码仓库:git clone https://github.com/vim/vim.git
- 示例:克隆
2. 解压源代码包
如果你下载的是压缩格式的源代码包,需要先将其解压。不同的压缩格式使用不同的解压命令。
.tar.gz
格式:使用tar -zxvf
命令解压。- 示例:解压
nginx-1.24.0.tar.gz
:tar -zxvf nginx-1.24.0.tar.gz
- 示例:解压
.tar.bz2
格式:使用tar -jxvf
命令解压。.zip
格式:使用unzip
命令解压。
3. 安装编译所需的依赖工具和库
编译源代码通常需要一些基本的编译工具(如 gcc
、make
等)以及软件所依赖的库文件。你可以使用系统的包管理工具(如 apt
、yum
等)来安装这些依赖。
- Ubuntu/Debian 系统:使用
apt
安装编译工具:sudo apt install build-essential
- CentOS/RHEL 系统:使用
yum
安装编译工具:sudo yum groupinstall "Development Tools"
4. 配置编译选项
进入解压后的源代码目录,通常会有一个 configure
脚本,用于配置编译选项。你可以通过运行该脚本来指定软件的安装路径、启用或禁用某些功能等。
- 示例:配置
nginx
的编译选项,指定安装路径为/usr/local/nginx
:cd nginx-1.24.0 ./configure --prefix=/usr/local/nginx
- 注意事项:在运行
configure
脚本时,可能会提示缺少某些依赖库,你需要根据提示安装相应的库文件,然后重新运行configure
脚本。
5. 编译源代码
配置完成后,使用 make
命令来编译源代码。make
会根据 Makefile
(由 configure
脚本生成)中的规则,将源代码编译成可执行文件和库文件。
- 示例:编译
nginx
:make
- 注意事项:编译过程可能会花费一些时间,具体取决于软件的复杂度和你的系统性能。如果编译过程中出现错误,需要根据错误信息进行排查和解决。
6. 安装软件
编译完成后,使用 make install
命令将编译好的文件安装到指定的目录。
- 示例:安装
nginx
:sudo make install
- 注意事项:由于安装过程可能需要对系统目录进行写操作,因此通常需要使用
sudo
权限。
7. 验证安装
安装完成后,你可以通过运行软件的可执行文件或查看安装目录来验证软件是否安装成功。
- 示例:验证
nginx
是否安装成功:/usr/local/nginx/sbin/nginx -v
8. 清理工作
如果编译和安装过程顺利,你可以删除下载的源代码包和解压后的目录,以节省磁盘空间。
rm nginx-1.24.0.tar.gz
rm -rf nginx-1.24.0
6.ubuntu命令总结
在 Ubuntu 系统中,有多种软件管理命令可用于软件的安装、卸载、更新、查询等操作。下面为你详细总结常用的软件管理命令:
APT 相关命令
软件包信息更新
sudo apt update
- 功能:从软件源服务器获取最新的软件包列表信息,确保后续操作能获取到最新的软件版本和依赖信息。
- 示例:定期执行该命令可保证系统了解软件源的最新情况,如
sudo apt update
。软件包升级
sudo apt upgrade
- 功能:将系统中已安装的软件包升级到最新版本,仅更新现有软件包,不处理依赖关系变更导致的软件添加或移除。
- 示例:运行
sudo apt upgrade
可升级已安装软件,系统会列出可升级的软件包并询问是否继续。
sudo apt full-upgrade
- 功能:比
apt upgrade
更激进,会处理因升级软件包而导致的依赖关系变化,必要时会移除或添加软件包。 - 示例:当系统有重大软件包升级时,使用
sudo apt full-upgrade
确保依赖关系正确处理。软件包安装
- 功能:比
sudo apt install <package_name>
- 功能:安装指定名称的软件包,会自动处理软件包的依赖关系。
- 示例:安装
vim
编辑器,可执行sudo apt install vim
。
sudo apt install <package_name>=<version>
- 功能:安装指定版本的软件包。
- 示例:安装
nginx
1.18.0 版本,使用sudo apt install nginx=1.18.0-0ubuntu1
。软件包移除
sudo apt remove <package_name>
- 功能:移除指定的软件包,但保留其配置文件。
- 示例:移除
firefox
浏览器,运行sudo apt remove firefox
。
sudo apt purge <package_name>
- 功能:彻底移除指定的软件包,包括其配置文件。
- 示例:使用
sudo apt purge thunderbird
彻底移除 Thunderbird 邮件客户端及其配置。软件包搜索
apt search <keyword>
- 功能:在软件包列表中搜索包含指定关键字的软件包,并显示相关信息。
- 示例:搜索与 “image editor” 相关的软件包,执行
apt search image editor
。软件包信息查看
apt show <package_name>
- 功能:显示指定软件包的详细信息,如版本、依赖关系、安装大小、描述等。
- 示例:查看
vlc
媒体播放器的信息,运行apt show vlc
。清理缓存
sudo apt autoclean
- 功能:清理已无法从软件源下载到的旧软件包缓存文件,释放磁盘空间。
- 示例:定期执行
sudo apt autoclean
清理不必要的缓存。
sudo apt clean
- 功能:清理所有已下载的软件包缓存文件。
- 示例:磁盘空间紧张时,使用
sudo apt clean
释放更多空间。
dpkg 相关命令
软件包安装
sudo dpkg -i <package_file.deb>
- 功能:安装本地的
.deb
软件包文件,不处理依赖关系。 - 示例:安装本地的
google-chrome-stable_current_amd64.deb
包,执行sudo dpkg -i google-chrome-stable_current_amd64.deb
。软件包移除
- 功能:安装本地的
sudo dpkg -r <package_name>
- 功能:移除已安装的软件包,但保留配置文件。
- 示例:移除
example_package
,运行sudo dpkg -r example_package
。
sudo dpkg -P <package_name>
- 功能:彻底移除软件包及其配置文件。
- 示例:彻底移除
example_package
,使用sudo dpkg -P example_package
。软件包信息查看
dpkg -l <package_name>
- 功能:查看指定软件包的安装状态和版本信息。
- 示例:查看
apache2
的安装情况,执行dpkg -l apache2
。
其他命令
自动移除无用依赖
sudo apt autoremove
- 功能:移除因软件卸载而不再被依赖的软件包。
- 示例:卸载某个软件后,运行
sudo apt autoremove
清理无用依赖。