标签 apt 下的文章

从 .deb 文件安装应用 非常简单。双击它,它会在软件中心中打开,然后从那里安装它。

但是如何在 Ubuntu 或 Debian 中卸载 deb 包呢?如何删除一段时间前安装的软件包呢。

虽然这有几个如果和但是,但删除 .deb 文件的最简单和最可靠的方法是使用 apt remove 命令。

sudo apt remove program_name

如你所见,你需要在这里知道确切的包名称。这可能并不总是显而易见的。例如,如果你在 Ubuntu 上安装 Google Chrome,则该程序在命令行中称为 “google-chrome-stable”。你已经知道了吗?我猜你不知道。

在本教程中,我将详细介绍如何找到确切的包名称,然后使用它来删除应用。我还将讨论使用图形方法删除 deb 包。

从 Ubuntu 中删除通过 .deb 文件安装的软件包

在我向你展示如何从命令行删除 deb 包之前,让我们在软件中心应用中快速查看它。

方法 1:检查应用是否可以从软件中心移除

Ubuntu 有软件中心 GUI 应用,允许搜索、安装和删除应用。

搜索时,软件中心可能不会显示已安装的应用。

Searching for installed applications may not show any results in Ubuntu Software Center

但是,如果向下滚动,你仍可能在“已安装”部分下找到它。外部应用通常不带徽标显示。

Some installed applications can be found in the ‘installed’ tab of the Software Center

如果找到它,你可以通过单击“垃圾桶”图标或“删除”按钮来删除该应用。

Removing applications from the Ubuntu software center

一句话:检查是否可以从软件中心删除应用。

方法 2:使用 apt 命令删除应用

我假设你不知道该应用命令的确切名称。你可能不知道 Google Chrome 安装为 google-chrome-stable 而 Edge 安装为 microsoft-edge-stable,这很正常。

如果你知道前几个字母,那么 tab 补全可能会有所帮助。否则,你可以 使用 apt 命令列出已安装的应用 并使用 grep 搜索应用程序名称:

apt list --installed | grep -i possible_package_name

例如,你可以智能地猜测 Google Chrome 包的名称中应该包含 chrome。你可以这样搜索:

apt list --installed | grep -i chrome

在某些情况下,你可能会得到多个结果。

check if google chrome installed in ubuntu

如果你不确定这些软件包的作用,你可以随时通过以下方式获取它们的详细信息:

apt info exact_package_name

获得确切的软件包名称后,你可以使用 apt remove 命令将其删除。

sudo apt remove exact_package_name

你还可以使用 apt-get removedpkg uninstall 命令来删除。

Removing applications installed via .deb files using the apt command

方法 3:使用 Synaptic 包管理器删除 deb 应用

另一种方法是使用 Synaptic 包管理器。在 GNOME 以“软件中心”的形式创建其图形包管理器之前,Synaptic 是 Ubuntu 和许多其他发行版中的默认 GUI 包管理器。

它仍然是 Xfce 桌面环境 上的推荐工具。

首先安装它:

sudo apt install synaptic

打开 Synaptic 并搜索包名称。查找标记为绿色的已安装软件包。右键单击它们,然后单击“标记为删除”。之后点击应用。

Removing Deb packages using Synaptic package manager

对你有帮助吗?

我非常乐意使用 apt 命令删除从 .deb 文件中安装的软件包。但我可以理解,并不是每个人都喜欢使用命令行。

在删除从外部 .deb 文件安装的应用时,我发现软件中心中找不到它。软件中心还可以做的更好一些。

我希望你现在对删除 deb 包有更好的了解。如果你有任何问题,请告诉我。


via: https://itsfoss.com/uninstall-deb-ubuntu/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

apt 命令 用于 Debian 和 Ubuntu 中的包管理。虽然你可能已经熟悉安装和删除选项,但 apt 还提供了一些额外的功能。

其中之一是能够查看系统上所有可升级的软件包。要显示它们,你所要做的就是在终端中使用以下命令:

apt list --upgradable

如你所见,你甚至不需要使用 sudo 来列出可更新的包。它只是列出了可以更新的包,而不会更新它们。

实际上,当你运行 sudo apt update 命令更新本地包仓库缓存时,apt 命令会添加此提示。

Fetched 1,243 kB in 17s (71.4 kB/s)           
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
30 packages can be upgraded. Run 'apt list --upgradable' to see them.

我不记得在旧的 apt-get 命令中有任何类似的直接选项来列出所有可升级的包。这是 apt 在旧的 apt-get 命令之上添加的几个新功能之一。

让我们更详细地讨论一下。

列出所有可升级的包

你在这里应该知道的是你只能列出通过 APT 包管理器可用的更新。因此,如果你已将 PPA 或 外部仓库 添加到系统的 sources.list,你也将看到来自它们的更新。

但是你不会在这里获得 AppImage、Flatpak、Snap 或一些其他打包格式的更新。

换句话说,它只适用于 APT 包。

因此,要列出 Ubuntu 或 Debian 系统上的所有可升级包,你应该首先更新本地包缓存:

sudo apt update

然后你的系统将知道可用的软件包更新。apt 命令告诉你在 update 命令结束时可以升级多少个软件包:

The apt command shows the number of upgradable packages at the bottom of the apt update command output

要查看可以升级的软件包,请运行以下命令:

apt list --upgradable

你应该看到这样的输出:

~$ apt list --upgradable 
Listing... Done
apparmor/jammy-updates 3.0.4-2ubuntu2.1 amd64 [upgradable from: 3.0.4-2ubuntu2]
brave-browser/stable 1.40.113 amd64 [upgradable from: 1.40.107]
evolution-data-server-common/jammy-updates,jammy-updates 3.44.2-0ubuntu1 all [upgradable from: 3.44.1-0ubuntu2]
evolution-data-server/jammy-updates 3.44.2-0ubuntu1 amd64 [upgradable from: 3.44.1-0ubuntu2]

Listing all the upgradable packages

按字母顺序列出所有可升级的软件包以及有关当前安装版本和新可用软件包版本的信息。

brave-browser/stable 1.40.113 amd64 [upgradable from: 1.40.107]

例如,这显示我系统上安装了 Brave 浏览器,版本 1.40.107,并且版本 1.40.113 可用。

你能用这些信息做什么?让我分享一些我能想到的事情。

升级所有包

这可能是大多数普通 Ubuntu 用户所做的。你可以使用以下命令升级所有可升级包:

sudo apt upgrade

它列出了将要升级的软件包,然后要求按回车或 Y 确认升级。

Upgrade all packages

如果你确定要升级所有软件包,则可以通过在命令中添加 -y 来跳过 “Do you want to continue” 部分。

sudo apt upgrade -y

模拟升级(但不升级任何包)

这是人们在 apt list 命令之前所做的。使用模拟选项,你实际上不会进行任何更改。它仅显示运行升级时将安装或升级的软件包。

apt -s upgrade

你不需要使用 sudo(即使我在下面的截图中使用了它)。

Running an upgrade simulation with apt command

仅升级选定的包

如果你正在管理一个 Ubuntu 服务器,并且你不想升级所有软件包,而只想升级少数选定的软件包中的一个(如 MySQL/Ngnix),你可以使用 apt 命令轻松完成。

sudo apt --only-upgrade install package_name

实际上,如果你在已安装且有可用更新的软件包上运行 apt install 命令,它将升级该软件包。

使用 --only-upgrade 标志,你可以确保仅升级软件包(如果已安装)。如果尚未安装,它将不会安装给定的包。

你还可以通过提供名称来升级选定的几个包:

sudo apt --only-upgrade install package1 package2

你也可以做相反的事情,升级时保留选定的软件包

sudo apt-mark hold package_name

这样,当你升级所有系统包时,将不会升级给定的包。

你可以使用以下命令删除保留设置:

sudo apt-mark unhold package_name

是否显示内核升级?

这有点棘手。

当你运行 apt list –upgradable 命令时,它会显示所有可以升级的包。

但是如果有新的内核版本可用,它们可能不会显示,因为内核包名称以 linux-headers-x-y 开头。这是因为系统将它们视为新包,而不是对已安装的包 linux-headers-a-b 的升级。

但是,你仍然会在可升级包列表中看到 linux-generic-hwe 类型的包,因为该软件包将被升级(使用较新的内核)。

总结

列出可升级包的能力是 apt 命令为旧的 apt-get 命令带来的几个新功能之一。有关此主题的更多信息,你可以阅读我 解释 apt 和 apt-get 命令之间的区别 的文章。

作为桌面用户,我并不总是检查可以升级的软件包。我直接去升级。但是,当我管理服务器时,我更喜欢查看可用的更新,然后决定是否进行升级。

你呢?你觉得这个功能对你自己有用吗?


via: https://itsfoss.com/apt-list-upgradable/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

学习如何使用 apt 命令在基于 Debian 的 Linux 发行版上安装软件包,然后下载我们的速查表,让正确的命令触手可及。

 title=

包管理器 可帮助你处理 Linux 系统的计算机上软件的更新、卸载、故障排除等问题。Seth Kenlon 写了 使用 dnf 进行 Linux 包管理 一文,介绍了如何使用 dnf 这款命令行包管理工具,在 RHEL、CentOS、Fedora、Mageia、OpenMandriva 等 Linux 发行版中安装软件。

Debian 和基于 Debian 的发行版(例如 MX Linux、Deepin、Ubuntu)以及基于 Ubuntu 的发行版(例如 Linux Mint 和 Pop!\_OS)都有 apt,这是一个“相似但不同”的工具。在本文中,我将按照 Seth 的示例(但使用 apt)向你展示如何使用它。

在一开始,我想先提一下四个跟 apt 相关的软件安装工具:

  • Synaptic 是为 apt 服务的一个基于 GTK+ 的图形用户界面(GUI)的前端工具。
  • Aptitude 是为 apt 服务的一个基于 Ncurses 的全屏命令行前端工具。
  • apt 的前身有 apt-getapt-cache 等工具。
  • Dpkg 是在 apt 包管理器背后处理繁杂事务的”幕后工作者“。

还有其他的包管理系统,例如 FlatpakSnap,你可能会在 Debian 和基于 Debian 的系统上遇到它们,但我不打算在这里讨论。还有一些应用程序“商店”,例如 GNOME “软件”,与 apt 和其他打包技术重叠;我也不打算在这里讨论它们。最后,还有其他 Linux 发行版,例如 ArchGentoo 既不使用 dnf 也不使用 apt,我也不打算在这里讨论它们!

上面我讲了这么多我不想提及的内容,你可能怀疑 apt 到底还能处理多少软件。这么说吧,在我的 Ubuntu 20.04 上,apt 可以让我使用 69,371 个软件包,从 0ad(一款古代战争题材的即时战略游戏)到 zzuf(一个透明的应用程序模糊测试工具),一点也不差。

使用 apt 搜索软件

使用 apt 软件包管理器的第一步是找到感兴趣的软件包。Seth 的 dnf 文章以 Cockpit 服务器管理应用程序为例。用 apt 我会输入如下命令:

$ apt search cockpit
Sorting... Done
Full Text Search... Done
389-ds/hirsute,hirsute 1.4.4.11-1 all
  389 Directory Server suite - metapackage

cockpit/hirsute,hirsute 238-1 all
  Web Console for Linux servers

...
$

上面的第二个包就是你要的那个(以 cockpit/hirsute 开头的那一行)。如果你决定要安装它,输入:

$ sudo apt install cockpit

apt 将负责安装 Cockpit 以及使其工作所需的所有部件或 依赖。有时我们不太确定这是我们所需要的。了解更多的信息可能有助于你决定是否真的要安装此应用程序。

包元数据

要了解有关软件包的更多信息,使用 apt show 命令:

$ apt show cockpit
Package: cockpit
Version: 238-1
Priority: optional
Section: universe/admin
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Utopia Maintenance Team <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 88.1 kB
Depends: cockpit-bridge (>= 238-1), cockpit-ws (>= 238-1), cockpit-system (>= 238-1)
Recommends: cockpit-storaged (>= 238-1), cockpit-networkmanager (>= 238-1), cockpit-packagekit (>= 238-1)
Suggests: cockpit-doc (>= 238-1), cockpit-pcp (>= 238-1), cockpit-machines (>= 238-1), xdg-utils
Homepage: https://cockpit-project.org/
Download-Size: 21.3 kB
APT-Sources: http://ca.archive.ubuntu.com/ubuntu hirsute/universe amd64 Packages
Description: Web Console for Linux servers
 The Cockpit Web Console enables users to administer GNU/Linux servers using a
 web browser.
 .
 It offers network configuration, log inspection, diagnostic reports, SELinux
 troubleshooting, interactive command-line sessions, and more.

$

特别要注意的是 Description 字段,它会告诉你更多关于应用程序的信息。Depends 字段说明还必须安装什么,而 Recommends 则显示建议安装的其他(如果有的话)合作组件。Homepage 字段会提供一个网址,通过它你可以了解更多。

哪个包提供的这个文件?

有时你并不知道包名,但你知道包里一定包含着的某个文件。Seth 以 qmake-qt5 程序作为示例。使用 apt search 找不到它:

$ apt search qmake-qt5
Sorting... Done
Full Text Search... Done
$

但是,另一个有关联的命令 apt-file 可以用来探索包内部:

$ apt-file search qmake-qt5
qt5-qmake-bin: /usr/share/man/man1/qmake-qt5.1.gz
$

这时会显示一个 qmake-qt5 的手册页。它是一个名为 qt5-qmake-bin 的包的一部分。注意,此包名称颠倒了字符串 qmakeqt5 的顺序。

包里包含哪些文件?

方便的 apt-file 命令会列出给定的包中包含哪些文件。例如:

$ apt-file list cockpit
cockpit: /usr/share/doc/cockpit/TODO.Debian
cockpit: /usr/share/doc/cockpit/changelog.Debian.gz
cockpit: /usr/share/doc/cockpit/copyright
cockpit: /usr/share/man/man1/cockpit.1.gz
cockpit: /usr/share/metainfo/cockpit.appdata.xml
cockpit: /usr/share/pixmaps/cockpit.png
$

注意,这与 apt show 命令提供的信息不同,后者列出了包的依赖(其他必须安装的包)。

移除一个应用程序

你还可以使用 apt 移除软件包。例如,要移除apt-file 应用程序:

$ sudo apt purge apt-file

注意必须由超级用户运行 apt 才能安装或移除应用程序。

移除一个包并不会自动移除 apt 在此过程中安装的所有依赖项。不过,一点点的工作就很容易去除这些残留:

$ sudo apt autoremove

认识一下 apt

正如 Seth 所写的,“你对包管理器的工作方式了解得越多,在需要安装和查询应用程序时就会越容易。”

即便你不是 apt 的重度使用者,当你需要在命令行中安装或删除软件包时(例如,在一台远程服务器上或遵循某些热心肠发布的操作指南时),掌握一些 apt 的知识也会很有用。在某些软件创作者仅提供了一个裸 .pkg 文件的情况下,可能还需要了解一些关于 dpkg 的知识(如上所述)。

我发现 Synaptic 包管理器在我的桌面上是一个非常有用的工具,但出于各种目的,我也在少数维护的服务器上使用着 apt

下载我们的 apt 速查表 习惯该命令并尝试一些新技巧。一旦你这样做了,你可能会发现很难再使用其他任何东西。

apt 速查表

via: https://opensource.com/article/21/6/apt-linux

作者:Chris Hermansen 选题:lujun9972 译者:hanszhao80 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

包管理器提供大致相同的功能:安装、管理和移除应用,但是它们还是有一些不一样的地方。

 title=

在 Linux 系统上获取一个应用 有多种方式。例如,有新的 Flatpak 和容器方式,也有 DEB 和 RPM 这样一直以来经过考验的方式。

并没有一种通用的可以用于所有的操作系统的应用安装程序。如今,因为有无数的开发者发布软件,这导致了大部分的操作系统使用了应用商店(包括第一方和第三方)、拖放式安装,还有安装向导。不同的开发者对于他们发布的代码有不同的需求,这直接导致了他们所选择的安装方式的不同。

Linux 开创了一种通过命令行安装、管理、移除应用的包管理器的概念。aptdnf 就是两种较为常见的包管理器。apt 命令是用来管理 DEB 格式的包,dnf 命令是用来管理 RPM 格式的包。这两种包管理器在理论上并不是完全互斥的,尽管在实际的实践中,Linux 发行版通常只会使用到其中的一种。理论上,这两种命令可以运行在同一个系统上,但是会造成安装包的重叠,版本控制也会更加困难,命令也会是冗余的。然而,如果你是在一个混合的 Linux 环境下工作,比如你的工作站运行的是一个发行版,同时需要与运行另外一种发行版的服务器进行交互,那么你最好同时掌握这两种包管理器。

搜索应用

当你通过包管理器安装一个应用时,你需要先知道包的名称。通常,应用的名称和包的名称是一样的。dnfapt 验证要安装的包名的过程是完全相同的。

$ sudo dnf search zsh
====== Name Exactly Matched: zsh ======
zsh.x86_64 : Powerful interactive shell
[...]

使用 apt:

$ sudo apt search zsh
Sorting... Done
Full Text Search... Done
csh/stable 20110502-4+deb10u1 amd64
  Shell with C-like syntax

ddgr/stable 1.6-1 all
  DuckDuckGo from the terminal

direnv/stable 2.18.2-2 amd64
  Utility to set directory specific environment variables

draai/stable 20180521-1 all
  Command-line music player for MPD
[...]

如果想通过 apt 更快的获取相关的搜索结果,你可以使用 正则表达式

apt search ^zsh
Sorting... Done
Full Text Search... Done
zsh/stable 5.7.1-1 amd64
  shell with lots of features
[...]

查找应用程序包

有一些命令是与其它命令捆绑在一起的,都在一个包中。在这种情况下,你可以通过包管理器去了解哪个包提供了你需要的命令。dnfapt 命令在如何搜索这类元数据上是有区别的。

使用 dnf

$ sudo dnf provides pgrep
procps-ng-3.3.15-6.el8.x86_64 : System and process monitoring utilities
Repo        : baseos
Matched from:
Filename    : /usr/bin/pgrep

apt 命令使用子命令 apt-file。要使用 apt-file,你必须先安装它,然后提示它更新缓存:

$ sudo apt install apt-file
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following additional packages will be installed:
  libapt-pkg-perl libexporter-tiny-perl liblist-moreutils-perl libregexp-assemble-perl
The following NEW packages will be installed:
  apt-file libapt-pkg-perl libexporter-tiny-perl liblist-moreutils-perl libregexp-assemble-perl
0 upgraded, 5 newly installed, 0 to remove and 14 not upgraded.
Need to get 297 kB of archives.
After this operation, 825 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

$ sudo apt-file update
[...]

你可以通过 apt-file 搜索命令。你可以使用此命令进行广泛的全局搜索,但假如你知道命令的执行路径,它会更准确:

$ sudo apt-file search /usr/bin/pgrep
pgreplay: /usr/bin/pgreplay              
procps: /usr/bin/pgrep

安装应用程序

使用aptdnf 安装应用程序基本上是相同的:

$ sudo apt install zsh

使用 dnf,你可以使用同样的方式来安装一个包:

$ sudo dnf install zsh

许多基于 RPM 的发行版都具有组包安装的特性,它会将有时表面相关的应用程序收集到一个易于安装的目标中。例如,Fedora 中的 Design Suite 组包就包含流行的创意应用程序。那些想要某一个创意应用程序的艺术家可能也想要类似的应用程序,选择安装一整个组包一个简单而快速的方法,可以合理地开始建立一个数字工作室。你可以通过 group list 来查看可用的组包(使用 -v 来查看不带空格的组名):

$ sudo dnf group list -v
[...]
Available Groups:
   Container Management (container-management)
   RPM Development Tools (rpm-development-tools)
   Design Suite (design-suite)
   Development Tools (development)
[...]

使用 group install 子命令安装 RPM 组包:

$ sudo dnf group install design-suite

你可以使用 @ 符号来减少输入:

$ sudo dnf install @design-suite

更新应用程序

使用包管理器的一个优点是,它知道所有已经安装的应用。这样你不必去寻找应用程序的更新版本。相反,你可以通过包管理器去获取更新的版本。

dnfapt 使用的子命令略有不同。因为 apt 保存了一个需要定期更新的缓存信息,它使用 upgrade 子命令来更新应用程序:

$ sudo apt upgrade

相比之下,dnf 命令在你每次使用时都会更新元信息,所以 updateupgrade 子命令是可以互换的:

$ sudo dnf upgrade

这等同于:

$ sudo dnf update

移除应用程序

如果你曾经尝试在任何一个平台上手动删除一个应用程序,你就会知道,应用程序删除后,在硬盘上会残留各种文件,比如首选项文件、数据或图标。所以包管理器的另一个优点是,包管理器管理着包中安装的每一个文件,可以很方便的删除:

$ sudo dnf remove zsh

remove 子命令也适用于 apt

$ sudo apt remove zsh

使用 apt 命令删除一个包并不会删除已修改的用户配置文件,以防你意外删除了包。如果你想通过 apt 命令删除一个应用及其配置文件,请在你之前删除过的应用程序上使用 purge 子命令:

$ sudo apt purge zsh

aptdnf 都不会删除家目录中的数据和配置文件(即使使用 purge 子命令)。如果想要从家目录中删除数据,你必须手动操作(通常你可以在 ~/.config~/.local 文件中找到)。

了解包管理

无论你选择的发行版支持的是 apt 还是 dnf,这些命令的用途大致相同。它们可以帮助你安装、更新和移除包。这两种包管理器是目前最通用的包管理器。它们的语法元素在很大程度上是相同的,所以在两者之间切换非常容易。

aptdnf 还有一些高级功能,例如仓库管理,但这些功能并不像你使用 searchinstall 那样频繁。

无论你更经常使用哪种包管理器,你都可以下载我们的 apt 备忘单dnf 备忘单,以便你在最需要的时候可以查询使用语法。


via: https://opensource.com/article/21/7/dnf-vs-apt

作者:Seth Kenlon 选题:lujun9972 译者:perfiffer 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如何清除 APT 缓存?你只需使用这个 apt-get 命令选项:

sudo apt-get clean

但是,清理 APT 缓存不仅仅是运行上面的命令。

在本教程中,我将解释什么是 APT 缓存、为什么会使用它、为什么你要清理它,以及关于清理 APT 缓存你应该知道的其他事情。

我将在这里使用 Ubuntu 作为参考,但由于这是关于 APT 的,因此它也适用于 Debian 和其他基于 Debian 和 Ubuntu 的发行版,比如 Linux Mint、Deepin 等等。

什么是 APT 缓存?为什么要使用它?

当你使用 apt-getapt 命令安装一个软件包时(或在软件中心安装 DEB 包),APT 包管理器会以 .deb 格式下载软件包及其依赖关系,并将其保存在 /var/cache/apt/archives 文件夹中。

下载时,apt 将 deb 包保存在 /var/cache/apt/archives/partial 目录下。当 deb 包完全下载完毕后,它会被移到 /var/cache/apt/archives 目录下。

下载完包的 deb 文件及其依赖关系后,你的系统就会从这些 deb 文件中安装包

现在你明白缓存的用途了吧?系统在安装软件包之前,需要一个地方把软件包文件存放在某个地方。如果你了解 Linux 目录结构,你就会明白,/var/cache 是合适的地方。

为什么安装包后要保留缓存?

下载的 deb 文件在安装完成后并不会立即从目录中删除。如果你删除了一个软件包,然后重新安装,你的系统会在缓存中查找这个软件包,并从这里获取它,而不是重新下载(只要缓存中的软件包版本与远程仓库中的版本相同)。

这样就快多了。你可以自己尝试一下,看看一个程序第一次安装,删除后再安装需要多长时间。你可以使用 time 命令来了解完成一个命令需要多长时间time sudo apt install package_name

我找不到任何关于缓存保留策略的内容,所以我无法说明 Ubuntu 会在缓存中保留下载的包多长时间。

你应该清理 APT 缓存吗?

这取决于你。如果你的根目录下的磁盘空间用完了,你可以清理 APT 缓存来回收磁盘空间。这是 Ubuntu 上释放磁盘空间的几种方法之一。

使用 du 命令检查缓存占用了多少空间:

有的时候,这可能会占用几百兆,如果你正在运行一个服务器,这些空间可能是至关重要的。

如何清理 APT 缓存?

如果你想清除 APT 缓存,有一个专门的命令来做。所以不要去手动删除缓存目录。只要使用这个命令就可以了:

sudo apt-get clean

这将删除 /var/cache/apt/archives 目录的内容(除了锁文件)。以下是 apt-get clean 命令模拟删除内容:

还有一个命令是关于清理 APT 缓存的:

sudo apt-get autoclean

clean 不同的是,autoclean 只删除那些无法从仓库中下载的包。

假设你安装了包 xyz。它的 deb 文件仍然保留在缓存中。如果现在仓库中有新的 xyz 包,那么缓存中现有的这个 xyz 包就已经过时了,没有用了。autoclean 选项会删除这种不能再下载的无用包。

删除 apt 缓存安全吗?

是的,清除 APT 创建的缓存是完全安全的。它不会对系统的性能产生负面影响。也许如果你重新安装软件包,下载时间会更长一些,但也仅此而已。

再说一次,使用 apt-get clean 命令。它比手动删除缓存目录更快、更简单。

你也可以使用像 StacerBleachbit 这样的图形工具来实现这个目的。

总结

在写这篇文章的时候,新的 apt 命令没有这样的内置选项。不过,为了保持向后的兼容性,仍然可以运行 apt clean (内部应该是运行了 apt-get clean)。请参考这篇文章来了解 apt 和 apt-get 的区别

我希望你觉得这个关于 APT 缓存的解释很有趣。虽然这不是什么必要的东西,但了解这些小东西会让你对你的 Linux 系统更加了解。

欢迎你在评论区提出反馈和建议。


via: https://itsfoss.com/clear-apt-cache/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

使用 apt-cache 命令,你可以在本地 APT 缓存中搜索软件包的详细信息。在本教程中学习使用 apt-cache 命令。

apt-cache 命令是用来干什么的?

APT 包管理器工作在软件包元数据的本地缓存上。元数据通常由包名、版本、描述、依赖关系、仓库和开发者等信息组成。通过 apt-cache 命令,你可以查询这个本地 APT 缓存并获得相关信息。

你可以搜索一个包的可用性、它的版本号、它的依赖关系等等。我将通过实例告诉你如何使用 apt-cache命令。

APT 缓存的位置是 /var/lib/apt/lists/ 目录。缓存哪些仓库元数据取决于你的源列表中 /etc/apt/sources.list 文件中添加的仓库,以及位于 /etc/apt/sources.list.d 目录下的额外仓库文件。

令人惊讶的是,apt-cache 并不能清除 APT 缓存。为此,你必须使用 apt-get clean 命令

不用说,APT 打包系统是在 Debian 和基于 Debian 的 Linux 发行版上使用的,比如 Ubuntu、Linux Mint、Elementary OS 等。你不能在 Arch 或 Fedora 上使用它。

使用 apt-cache 命令

就像其他 Linux 命令一样,apt-cache 也有一些可用的选项,你可以随时参考它的手册页来了解这些选项。

然而,你可能并不需要使用所有的选项。这就是为什么我在本教程中只向你展示 apt-cache 命令中最常见和最有用的例子。

始终更新

更新本地 APT 缓存以与远程仓库同步是一个好主意。如何做到这一点呢?你可以使用命令:

sudo apt update

搜索软件包

apt-cache 命令最常见的用途是查找软件包。你可以使用一个正则表达式来搜索本地 APT 缓存中的包。

apt-cache search package_name

默认情况下,它会在软件包的名称和描述中查找搜索关键词。它按字母顺序显示匹配的软件包及其简短的描述。

你也可以缩小搜索范围,只在软件包名称中查找搜索词。

apt-cache search --names-only package_name

如果你想知道所有匹配软件包的完整细节,你可以使用 --full 标志。

获取详细的包装信息

如果你知道确切的软件包名称(或者你已经成功地通过搜索找到了它),你可以得到软件包的详细元数据信息。

apt-cache show package_name

你可以看到软件包元数据中的所有细节,比如名称、版本、开发者、维护者、仓库、长短描述、软件包大小甚至是校验和。

还有一个选项 showpkg 可以显示软件包的名称、版本、正向和反向依赖关系等信息。

apt-cache showpkg package_name

apt-cache 的策略

这是 apt-cache 命令中很少使用的一个选项。policy 选项可以帮助你调试与 preference 文件相关的问题。

如果你指定了软件包的名称,它将显示该软件包是否已经安装,在哪个版本的仓库中可用,以及它的优先级。

默认情况下,每个已安装的软件包版本的优先级为 100,未安装的软件包的优先级为 500。同一软件包可能有多个不同优先级的版本。APT 会安装优先级较高的版本,除非安装的版本较新。

如果不理解这个部分,也没关系。对于一个普通的 Linux 用户来说,会极少纠结于这么深的软件包管理知识。

检查软件包的依赖关系和反向依赖关系。

你可以在安装之前(甚至在安装之后)检查一个包的依赖关系。它还会显示所有可能满足依赖关系的软件包。

apt-cache depends package

你也可以通过 apt-cahce 检查反向依赖关系来检查哪些包是依赖于某个包的。

坦白说,看到 Ansible 这样的 DevOps 工具对 Cowsay 这样有趣的 Linux 命令有依赖性,我也很惊讶。我想可能是因为在安装 Ansible之后,它会在节点上显示一些信息。

检查未满足的依赖性

你可能会被 Ubuntu 中未满足的依赖问题所困扰,其他 Linux 也有类似问题。apt-cache 命令提供了一个选项来检查系统中各种可用软件包的所有未满足的依赖关系。

apt-cache unmet

结论

你可以用 apt-cache 命令列出所有可用的软件包。输出结果会很庞大,所以我建议将其与 wc 命令 结合起来,得到可用软件包的总数,就像这样:

apt-cache pkgnames | wc -l

你是否注意到你不需要成为 root 用户就可以使用 apt-cache 命令?

较新的 apt 命令也有一些与 apt-cache 命令相对应的功能选项。由于 apt 比较新,所以在脚本中还是首选使用 apt-get 及其相关的 apt-cache 等命令。

希望你觉得本教程对你有帮助。如果你对上面讨论的任何一点有疑问或者有改进的建议,请在评论中告诉我。


via: https://itsfoss.com/apt-cache-command/

作者:Abhishek Prakash 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出