在Linux中使用apt-get命令
简介:本初学者指南向我们展示了我们可以在Linux中使用apt-get命令做什么,如何使用它们查找新软件包,安装和升级新软件包以及清理系统。
什么是apt-get?
Ubuntu源自Debian Linux。 Debian使用dpkg打包系统。打包系统是提供用于安装的程序和应用程序的一种方式。这样,我们不必从源代码构建程序。
APT(高级打包工具)是与此打包系统进行交互的命令行工具。已经有dpkg命令来管理它,但是apt是一种更加用户友好的处理软件包的方法。我们可以使用它来查找和安装新软件包,升级软件包,清理软件包等。
APT周围有两个主要工具:apt-get和apt-cache。 apt-get用于安装,升级和清理软件包,而apt-cache命令用于查找新软件包。我们将在本指南后面的示例中看到所有这些命令。
我在本教程中使用Linux Mint 18,但是我们可以使用任何其他基于Ubuntu的Linux发行版,例如基本OS,Linux Lite等。
使用apt-get命令
让我们从apt-get命令开始。我们只是无法转义此命令。最好对它有所了解,以便我们可以以更好的方式处理Linux系统。
使用apt-get更新软件包数据库
apt-get基本上可以在可用软件包的数据库上工作。如果不更新此数据库,系统将不知道是否有更新的软件包。实际上,这是全新安装后需要在任何基于Debian的Linux系统上运行的第一个命令。
更新软件包数据库需要超级用户权限,因此我们需要使用sudo。
sudo apt-get update
运行此命令时,我们将看到从各种服务器检索到的信息。
我们将在此处看到三种类型的行:hit,get和ign。让我向我们解释一下:
点击:软件包版本没有变化
ign:软件包被忽略。可能有多种原因。软件包太新了,以至于它甚至都不需要检查新版本,或者在检索文件时出现错误,但是错误很小,因此被忽略了。这不是错误。无需担心。
得到:该软件包有一个新版本。 apt-get将下载此信息(而不是软件包本身)。我们可以在上面的屏幕快照的"获取"行中看到下载的信息。
使用apt-get升级已安装的软件包
更新软件包数据库后,即可升级已安装的软件包。最方便的方法是升级所有具有可用更新的软件包。为此,我们可以使用以下命令:
sudo apt-get upgrade
要仅升级特定程序,请使用以下命令:
sudo apt-get upgrade <package_name>
使用下面的命令,还有另一种执行完整升级的方法:
sudo apt-get 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更新之后,数据库将反映出有更新的1.4版可用。
在apt-get更新之后执行apt-get升级时,它将安装的软件包升级到较新的版本。
这就是为什么最快,最方便的方法来更新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
关于此命令的好处是它具有自动完成功能。因此,如果不确定确切的软件包名称,可以键入几个字母并按Tab键,它将建议所有包含这些字母的软件包。例如:
如何安装多个软件包
我们不限于一次只安装一个软件包。我们可以通过提供它们的名称来一次安装多个软件包:
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删除与软件包相关的所有内容,包括配置文件
因此,如果"删除"了特定的软件,然后再次安装,则系统将具有相同的配置文件。当然,再次安装时,系统会要求我们覆盖现有的配置文件。
当我们弄乱了程序的配置,想从系统中完全删除其痕迹并重新启动时,清除特别有用。
在大多数情况下,简单删除对卸载软件包绰绰有余。
如何使用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发行版中使用它们。