在 Linux 中使用 apt-get 命令的终极指南
本初学者指南向您展示了在 Linux 中可以使用 apt-get 命令做什么,如何使用它们来查找新包、安装和升级新包以及清理系统。
如果您已经开始使用 Ubuntu 或任何基于 Ubuntu 的 Linux 发行版,例如 Linux Mint、elementary OS 等,您现在一定已经接触过 apt-get 命令。
事实上,在安装 Ubuntu 之后要做的第一件事就是使用apt-get update 和 apt-get upgrade。
现在,您可能知道一些 apt-get 命令及其用法,但您可能不知道其他一些命令。
在本初学者指南中,我将通过示例解释各种 apt-get 命令,以便您可以像专家 Linux 用户一样使用它们。
什么是apt-get?
apt-get 是一组命令行工具,允许您在 Debian 和 Ubuntu 中安装、删除和更新通过 APT(高级包工具)安装的 deb 包。这使得在基于 Debian 的发行版上管理包变得更加容易。
我想您已经知道 Ubuntu 是从Debian Linux衍生而来的。Debian 使用dpkg 打包系统。打包系统是一种提供程序和应用程序以供安装的方式。这样,您就不必从源代码构建程序。
APT(高级包工具)是与这个包系统交互的命令行工具。已经有 dpkg 命令来管理它,但 apt 是一种对用户更友好的处理包的方式。您可以使用它来查找和安装新包、升级包、清理包等。
APT 有两个主要工具:apt-get 和 apt-cache。apt-get 用于安装、升级和清理包,而apt-cache 命令用于查找新包。您将在本指南后面的示例中看到所有这些命令。
现场还有一个较新的 apt 命令,它是 apt-get 的简单版本.
我在本教程中使用 Linux Mint,但您可以使用任何其他基于 Ubuntu 的 Linux 发行版,例如 elementary OS、Linux Lite 等。
使用 apt-get 命令
让我们从 apt-get 命令开始。你就是无法逃避这个命令。最好对它有所了解,这样你就可以稍微更好地处理你的 Linux 系统。
使用 apt-get 更新包数据库
apt-get 基本上在可用包的数据库上工作。如果你不更新这个数据库,系统将不知道是否有更新的包可用。事实上,这是全新安装后需要在任何基于 Debian 的 Linux 系统上运行的第一个命令。
更新包数据库需要超级用户权限,所以你需要使用 sudo。
sudo apt-get update
运行此命令时,您将看到从各种服务器检索的信息。
您会在这里看到三种类型的行:hit、get 和 ign。让我向您解释一下:
- hit : 包版本没有变化
- ign:包被忽略。这可能有多种原因。软件包太新以至于它甚至懒得去检查新版本,或者在检索文件时出错但错误很小,因此被忽略了。这不是错误。没有必要担心。
- get:有可用的新版本包。apt-get 将下载此信息(不是包本身)。您可以在上面的屏幕截图中的“get”行看到下载的信息。
使用 apt-get 升级已安装的软件包
一旦更新了包数据库,就可以升级已安装的包。最方便的方法是升级所有有可用更新的包。为此,您可以使用以下命令:
sudo apt-get upgrade
要仅升级特定程序,请使用以下命令:
sudo apt-get upgrade <package_name>
还有另一种方法可以使用以下命令执行完整升级:
sudo apt-get dist-upgrade
但是你应该避免使用这个命令。我将在下一节中解释原因。
升级和 dist-upgrade 之间的区别
命令 apt-get upgrade 很听话。它从不尝试删除任何包或尝试自行安装新包。
另一方面,命令 apt-get dist-upgrade 是主动的。它查找与正在安装的软件包的较新版本的依赖关系,并尝试自行安装新软件包或删除现有软件包。
听起来 dist-upgrade 更强大更智能,不是吗?但这样做有风险。
看,它有一个“智能”冲突解决系统。它会尝试升级最重要的软件包,而牺牲那些不太重要的软件包。这可能会导致删除一些您可能不想要的包。这就是为什么在生产机器上应该避免 dist-upgrade 的主要原因。
apt-get update 和 apt-get upgrade 有什么区别?
这是一个很常见的混淆。您不是唯一对术语更新和升级感到困惑的人。
虽然听起来 apt-get update 应该更新软件包,但事实并非如此。apt-get update 只更新可用包的数据库。例如,如果你安装了 XYX 包 1.3 版,在 apt-get update 之后,数据库将反映更新的 1.4 版可用。
当您在 apt-get update 之后执行 apt-get upgrade 时,它会将已安装的软件包升级到较新的版本。
这就是为什么更新 Ubuntu 最快最方便的方法是使用这个命令的原因:
sudo apt-get update && sudo apt-get upgrade -y
使用 apt-cache 命令搜索包
老实说,这不是我搜索包裹的首选方式。但是当您正在寻找某个特定的库时,这会非常方便。
您需要做的就是使用以下命令(在这里您甚至不需要 sudo):
apt-cache search <search term>
您不需要知道包的确切名称。它搜索包名称及其简短描述,并显示基于此的结果。
如果您只想搜索具有特定包名称的 apt 包,您可以使用以下命令:
apt-cache pkgnames <search_term>
这将为您提供以搜索词开头的所有包的列表。
知道确切的包名称后,您可以使用以下命令获取有关它的更多信息,例如版本、依赖项等:
apt-cache showpkg <package_name>
使用 apt-get 安装新包
如果您知道软件包的名称,则可以使用以下命令轻松安装它:
sudo apt-get install <package_name>
只需将 <package_name> 替换为您想要的包即可。假设我想安装 Pinta 图像编辑器。我需要做的就是使用下面的命令:
sudo apt-get install pinta
这个命令的好处是它有自动完成功能。因此,如果您不确定确切的包名称,您可以键入几个字母并按选项卡,它会建议所有可用这些字母的包。例如:
安装多个包
您不限于一次只安装一个软件包。您可以通过提供它们的名称一次安装多个包:
sudo apt-get install <package_1> <package_2> <package_3>
如果你在一个已经安装的包上运行 install 会怎样?
假设您已经安装了一个包,但您仍然使用了安装命令。apt-get 实际上会查看数据库,如果有更新的版本可用,它会将已安装的软件包升级到更新的版本。
所以使用这个命令不会造成任何伤害——除非你不想升级包。
安装包而不升级
假设由于某种原因你想安装一个包,但如果它已经安装了又不想升级它。这听起来很奇怪,但您可能有理由这样做。
对于这种情况,您可以按以下方式使用 no-upgrade 标志:
sudo apt-get install <package_name> --no-upgrade
只升级一个包,不安装它
如果你想升级一个已经安装的包,但不想安装它,你可以使用以下命令:
sudo apt-get install <package_name> --only-upgrade
安装特定版本的应用程序
默认情况下,将为任何应用程序安装存储库中可用的最新版本。但是,如果出于某种原因,您不想安装最新版本,您可以指定包版本号。(您需要知道要安装的确切版本号)。
您需要做的就是将版本号添加到包的名称中:
sudo apt-get install <package_name>=<version_number>
使用 apt-get 删除已安装的包
安装软件包并不是您可以使用 apt-get 做的唯一事情。您也可以使用它删除包。您需要做的就是以这种方式使用命令:
sudo apt-get remove <package_name>
自动完成也适用于此。因此,只需开始输入包名称并按 Tab 键,它就会建议所有以这些字母开头的已安装包。
卸载软件包的另一种方法是使用清除。该命令按以下方式使用:
sudo apt-get purge <package_name>
apt-get remove 和 apt-get purge 有什么区别?
- apt-get remove 只是删除包的二进制文件。它不涉及配置文件
- apt-get purge 删除与包相关的所有内容,包括配置文件
因此,如果您“删除”了一个特定的软件然后再次安装它,您的系统将具有相同的配置文件。当然,再次安装时会要求覆盖已有的配置文件。
当您弄乱了某个程序的配置时,当您想从系统中完全清除它的痕迹并重新开始时,Purge 特别有用。
大多数时候,一个简单的删除就足以卸载一个包。
使用 apt-get 清理你的系统
哦是的!您还可以使用 apt-get 清理系统并释放一些磁盘空间。
您可以使用以下命令清除 apt 缓存(本地保存的检索包文件):
sudo apt-get clean
另一种方法是使用自动清理。与上面的 clean 命令不同,autoclean 只删除那些检索到的包文件,现在版本较新,因此不再使用。
sudo apt-get autoclean
释放磁盘空间的另一种方法是使用自动删除。它删除自动安装的库和包以满足另一个已安装包的依赖性。如果删除该软件包,则这些自动安装的软件包在系统中将无用。此命令删除此类包。
sudo apt-get autoremove
这是清理 Linux 系统的命令行方式。如果您更喜欢 GUI,这里有一些适用于 Linux 的 CCleaner 替代品,您可以在 Ubuntu 和基于 Ubuntu 的 Linux 发行版上使用它们。