从我们的新电子书中获得关于在 Linux 上安装应用的所有不同方法的信息。当你想在你的手机上尝试一个新的应用时，你打开应用商店并安装该应用。这很简单，很快速，很高效。在这种提供应用的模式中，手机供应商可以让你确切地知道到哪里去获得一个应用，而应用的开发者也知道将他们的应用放在哪里，以便人们能够找到它们。在手机使用这种创新的软件分发模式之前，Linux 正以“软件仓库”的形式使用它。正如这个术语所暗示的，这些是在互联网上传应用的地方，这样 Linux 用户就可以从一个中心位置浏览和安装它们。这个术语被缩短为 “repo”（代表 “repository”，而不是 “reposession”），但无论你叫它“仓库”、“应用商店”、“软件中心”、“包管理器”，还是其他什么，它都是一个好系统，几十年来一直为 Linux 桌面用户服务。最起码在 Linux 上安装应用很像在手机上安装应用。如果你能用一个安装，你也可以用另外一个安装。下载我们的电子书：在 Linux 上安装应用指南软件中心在 GNOME 桌面上，你在桌面上看到的软件仓库是一个应用，简单地说，叫 “ 软件 Software ”。你可以把这个应用看成是一个极其特殊的网页浏览器。它寻找可以从互联网上安装的软件，将所有可用的软件收集到分类中，并将其显示在你的桌面上。在开始屏幕中，你有几个选项：搜索一个你已经熟悉的应用。要做到这一点，点击窗口左上角的放大镜图标。按类别浏览。这可以在窗口的底部找到。按最近时间和推荐浏览。这些都列在动画横幅和它下面的图标中。当你点击一个你看起来感兴趣的应用时，会打开一个功能页面，这样你就可以看到截图并阅读软件的简短描述。安装一个应用当你找到了你想要安装的软件，点击应用功能页面顶部的“ 安装 Install ”按钮。安装完毕后，“ 安装 Install ”按钮就会变成“ 启动 Launch ”按钮，所以你可以选择启动你刚刚安装的应用。如果你现在不想启动该应用，你可以随时在你的“ 活动 Activities ”菜单中找到它，它与你电脑上已有的所有其他应用放在一起。从更多的地方获得更多的应用你的 Linux 桌面有专门为它打包的应用，但在今天的世界里，到处都有很多开源的东西。你可以通过将“第三方”仓库添加到你的桌面应用商店中来获得更多的应用。当然，这些术语并不完全正确：在一个无论如何都是由每个人创造软件的世界里，什么是“第三方”？当没有任何东西需要花钱时，什么是应用商店？撇开术语不谈，一个流行的第三方软件库是 Flathub.org。要在你的 Linux 桌面上增加另一个应用源，基本上是“安装”一个源到你的应用商店。对于 Flathub，下载 Flathub 仓库文件，然后用 GNOME 软件安装它，就像它是一个应用一样。它不是一个应用。它是一个应用 源，但过程是一样的。了解更多如果没有一堆其他方法来执行任何给定的任务，那就不是 Linux 了。灵活性是建立在 Linux 系统中的，所以虽然 GNOME “软件”提供了一种获取应用的简单方法，但还有很多其他方法，包括安装脚本、安装向导、AppImages，当然还有直接从源代码编译。你可以从我们的新电子书 在 Linux 上安装应用 中获得所有这些安装方法的信息。它是免费的，所以请阅读吧。via: https://opensource.com/article/22/2/installing-applications-desktop-linux作者：Seth Kenlon 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
任何人都可以通过这三个简单的步骤编译开源代码
你不需要知道如何写或读代码就可以编译它。安装软件的方法有很多，但开源让你有了一个其他地方所没有的选择：你可以自己编译代码。编译源代码的经典三步流程是：$ ./configure $ make $ sudo make install 由于有了这些命令，你可能会惊讶地发现，你不需要知道如何写代码，甚至不需要读代码就可以编译它。安装用来构建软件的命令由于这是你第一次进行编译，所以有一个一次性的准备步骤，即安装用于构建软件的命令。具体来说，你需要一个编译器。编译器（比如 GCC 或 LLVM）可以将像这样的源代码：#include <iostream> using namespace std; int main() { cout << "hello world"; } 变成 机器语言，即 CPU 用来处理信息的指令。你可以看一下机器代码，但它对你来说没有任何意义（除非你是一个 CPU）。你可以使用你的软件包管理器安装 GNU 编译器集合（GCC）和 LLVM 编译器，以及其他在 Fedora、CentOS、Mageia 和类似发行版上进行编译的基本命令：$ sudo dnf install @development clang 在 Debian、Elementary、Mint 和类似发行版上命令如下：$ sudo apt install build-essential clang 在你的系统设置好后，有几项你每次编译软件时都要重复进行的任务：下载源代码展开源代码的存档文件编译你已经有了所有你需要的命令，所以现在你需要一些软件来编译。1、下载源代码获得一个应用程序的源代码和获得任何可下载的软件一样。你得去一个网站或一个代码管理网站，如 GitLab、SourceForge 或 GitHub。 通常情况下，开源软件既有正在进行的工作（“ 当前 current ”或 “ 每夜 nightly ”）的构建版本，也有打包的“ 稳定 stable ”发布版本。在可能的情况下，使用稳定版本，除非你有理由相信，或者对代码有足够的了解，能够在出现故障时修复。术语“稳定版”表明这些代码经过了测试，而且该应用程序的程序员对代码有足够的信心，从而将其打包成 .zip 或 .tar 归档，给了它一个官方编号，有时还有一个发布名称，然后提供给一般的非程序员公众下载。在这个练习中，我使用 Angband，一个开源的（GPLv2）ASCII 地牢猎手游戏。这是一个简单的应用程序，其复杂程度刚好可以说明你在自己编译软件时需要考虑的问题。从 网站 上下载其源代码。2、展开源代码的存档文件源代码通常是以存档的形式交付的，因为源代码通常由多个文件组成的。在与之交互之前，你必须先解压，不管它是一个 tarball、一个 zip 文件、一个 7z 文件，还是其他完全不同的东西。$ tar --extract --file Angband-x.y.z.tar.gz 一旦解压缩后，就把目录切换到解压缩的目录，然后看一看。通常在目录的顶层有一个 README 文件。这个文件，一般会包含你需要做什么来编译代码的指导。README 通常包含关于代码的这些重要方面的信息：语言：代码使用的是什么语言（例如，C、C++、Rust、Python）。依赖性：你需要在你的系统上安装其他什么的软件，以便这个应用程序能够构建和运行。说明：你构建该软件所需要采取的明确步骤。偶尔，他们会在一个专门的文件中包含这些信息，这个文件被直观地称为 INSTALL。如果 README 文件中不包含这些信息，可以考虑向开发者提交一份错误报告。你不是唯一需要介绍一下源代码的人。不管他们有多么丰富的经验，每个人都会对从未见过的源代码感到陌生，而文档是很重要的！Angband 的维护者给出了在线说明的链接，描述了如何编译代码。这份文件还描述了你需要安装哪些其他软件，尽管它并没有确切地说明这一点。该网站说，“有几个不同的可选构建的前端（GCU、SDL、SDL2 和 X11），你可以使用诸如 --enable-sdl，--disable-x11 的参数配置。”这可能对你来说看起来像天书，但你经常编译代码后就会习惯。无论你是否理解 X11 或 SDL2 是什么，它们都是你经过几个月定期编译代码后经常看到的要求。你会对大多数软件需要其他软件库的想法感到适应，因为它们建立在其他技术之上。不过在这种情况下，Angband 非常灵活，无论是否有这些可选的依赖，都可以进行编译，所以现在，你可以假装没有额外的依赖。3、编译代码构建代码的典型步骤是：$ ./configure $ make $ sudo make install 这些是使用 Autotools 构建的项目的步骤，该框架是为了规范源代码的交付方式而创建的。然而，还有一些其他框架（如 Cmake），它们需要不同的步骤。当项目没有遵循 Autotools 或 Cmake 框架时，它们往往会在 README 文件中提醒你。配置Angband 使用 Autotools，所以现在是编译代码的时候了!在 Angband 目录中，首先，运行随源码一起提供的配置脚本：$ ./configure 这一步将扫描你的系统，找到 Angband 正确构建所需的依赖性。有些依赖是非常基本的，没有它们你的电脑就无法运行，而有些则是专门的。在这一过程结束时，该脚本会给你一份关于它所发现的东西的报告：[...] configure: creating ./config.status config.status: creating mk/buildsys.mk config.status: creating mk/extra.mk config.status: creating src/autoconf.h Configuration: Install path: /usr/local binary path: /usr/local/games config path: /usr/local/etc/angband/ lib path: /usr/local/share/angband/ doc path: /usr/local/share/doc/angband/ var path: (not used) (save and score files in ~/.angband/Angband/) -- Frontends -- - Curses Yes - X11 Yes - SDL2 Disabled - SDL Disabled - Windows Disabled - Test No - Stats No - Spoilers Yes - SDL2 sound Disabled - SDL sound Disabled 有些输出可能对你有意义，有些可能没有。无论如何，你可能注意到 SDL2 和 SDL 被标记为 “Disabled”，Test 和 Stats 都被标记为 “None”。虽然这些信息是负面的，但这并不一定是一件坏事。从本质上讲，这就是警告和错误之间的区别。如果配置脚本遇到了会阻止它构建代码的东西，它就会用一个错误来提醒你。如果你想稍微优化一下你的构建，你可以选择解决这些负面信息。通过搜索 Angband 文档，你可能会确定 Test 和 Stats 实际上并不是你感兴趣的（它们是 Angband 专用于开发者的选项）。然而，通过在线研究，你可能会发现 SDL2 将是一个很好的功能。要解决编译代码时的依赖问题，你需要安装缺少的组件和该缺少的组件的 开发库。换句话说，Angband 需要 SDL2 来播放声音，但它需要 SDL2-devel（在 Debian 系统上称为 libsdl2-dev）来构建。用你的软件包管理器安装这两个组件：$ sudo dnf install sdl2 sdl2-devel 再试一下配置脚本：$ ./configure --enable-sdl2 [...] Configuration: [...] - Curses Yes - X11 Yes - SDL2 Yes - SDL Disabled - Windows Disabled - Test No - Stats No - Spoilers Yes - SDL sound Disabled - SDL2 sound Yes 制作（编译）一旦一切配置完毕，运行 make 命令：$ make 这通常需要一段时间，但它提供了很多视觉反馈，所以你会知道代码正在被编译。安装最后一步是安装你刚刚编译的代码。安装代码并没有什么神奇之处。所做的就是复制很多文件到非常具体的目录中。无论你是从源代码编译还是运行花哨的图形安装向导，都是如此。由于这些代码会被复制到系统级目录，你必须有 root（管理）权限，这是由 sudo 命令授予的。$ sudo make install 运行该应用程序一旦应用程序被安装，你就可以运行它。根据 Angband 文档，启动游戏的命令是 angband，所以可以试试：$ angband 编译代码无论是在我的 Slackware 台式电脑上，还是在我的 CentOS 笔记本电脑上，我都会使用 NetBSD 的 pkgsrc 系统编译我自己的大部分应用程序。我发现，通过自己编译软件，我可以对应用程序中包含的功能、如何配置、使用的库版本等有自己的想法。这很有意义，它帮助我跟上了新的版本，而且因为我有时会在这个过程中发现错误，它帮助我参与了很多不同的开源项目。你很少会只有编译软件的一种方式可选，大多数开源项目同时提供源代码（这就是为什么它被称为“开源”）和可安装包。是否从源代码编译是你自己的选择，也许是因为你想要最新版本中还没有的新功能，或者只是因为你喜欢自己编译代码。家庭作业Angband 可以使用 Autotools 或 Cmake，所以如果你想体验另一种构建代码的方式，可以试试这个：$ mkdir build $ cd build $ cmake .. $ make $ sudo make install 你也可以尝试用 LLVM 编译器而不是 GNU 编译器集合（GCC）进行编译。现在，我把这个问题留给你自己去研究（提示：尝试设置 CC 环境变量）。一旦你完成了对 Angband 的源代码和至少几个地牢的探索（你已经赢得了一些休息时间），可以看看其他一些代码库。很多人都会使用 Autotools 或 Cmake，而其他人可能会使用不同的东西。看看你能构建的成果！via: https://opensource.com/article/21/11/compiling-code作者：Seth Kenlon 选题：lujun9972 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如何在双启动或单启动模式下重新安装 Ubuntu
如果你弄坏了你的 Ubuntu 系统，并尝试了很多方法来修复，你最终放弃并采取简单的方法：重新安装 Ubuntu。我们一直遇到这样一种情况，重新安装 Linux 似乎比找出问题并解决来得更好。排查 Linux 故障能教你很多，但你不会总是花费更多时间来修复损坏的系统。据我所知，Ubuntu 中没有像 Windows 那样的系统恢复分区。那么，问题出现了：如何重新安装 Ubuntu？让我告诉你如何重新安装 Ubuntu。警告！磁盘分区始终是一项危险的任务。我强烈建议你在外部磁盘上备份数据。如何重新安装 Ubuntu Linux以下是重新安装 Ubuntu 的步骤。步骤 1：创建一个 live USB首先，在网站上下载 Ubuntu。你可以下载任何需要的 Ubuntu 版本。下载 Ubuntu获得 ISO 镜像后，就可以创建 live USB 了。如果 Ubuntu 系统仍然可以使用，那么可以使用 Ubuntu 提供的启动盘创建工具创建它。如果无法使用你的 Ubuntu，那么你可以使用其他系统。你可以参考这篇文章来学习如何在 Windows 中创建 Ubuntu 的 live USB。步骤 2：重新安装 Ubuntu有了 Ubuntu 的 live USB 之后将其插入 USB 端口。重新启动系统。在启动时，按下 F2/F10/F12 之类的键进入 BIOS 设置，并确保已设置 “Boot from Removable Devices/USB”。保存并退出 BIOS。这将启动进入 live USB。进入 live USB 后，选择安装 Ubuntu。你将看到选择语言和键盘布局这些常用选项。你还可以选择下载更新等。现在是重要的步骤。你应该看到一个“ 安装类型 Installation Type ”页面。你在屏幕上看到的内容在很大程度上取决于 Ubuntu 如何处理系统上的磁盘分区和安装的操作系统。在此步骤中仔细阅读选项及它的细节。注意每个选项的说明。屏幕上的选项可能在不同的系统中看上去不同。在这里，它发现我的系统上安装了 Ubuntu 18.04.2 和 Windows，它给了我一些选项。第一个选项是擦除 Ubuntu 18.04.2 并重新安装它。它告诉我它将删除我的个人数据，但它没有说删除所有操作系统（即 Windows）。如果你非常幸运或处于单一启动模式，你可能会看到一个“ 重新安装 Ubuntu Reinstall Ubuntu ”的选项。此选项将保留现有数据，甚至尝试保留已安装的软件。如果你看到这个选项，那么就用它吧。双启动系统注意如果你是双启动 Ubuntu 和 Windows，并且在重新安装中，你的 Ubuntu 系统看不到 Windows，你必须选择 “Something else” 选项并从那里安装 Ubuntu。我已经在在双启动下安装 Linux 的过程这篇文章中说明了。对我来说，没有重新安装并保留数据的选项，因此我选择了“ 擦除 Ubuntu 并重新安装 Erase Ubuntu and reinstall ”。该选项即使在 Windows 的双启动模式下，也将重新安装 Ubuntu。我建议为 / 和 /home 使用单独分区就是为了重新安装。这样，即使重新安装 Linux，也可以保证 /home 分区中的数据安全。我已在此视频中演示过：选择重新安装 Ubuntu 后，剩下就是单击下一步。选择你的位置、创建用户账户。以上完成后，你就完成重装 Ubuntu 了。在本教程中，我假设你已经知道我说的东西，因为你之前已经安装过 Ubuntu。如果需要澄清任何一个步骤，请随时在评论栏询问。via: https://itsfoss.com/reinstall-ubuntu/作者：Abhishek Prakash 选题：lujun9972 译者：geekpi 校对： wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
我们近期发布了一篇关于批量程序包安装的文章。在此同时，关于如何获取系统上已安装了的程序包信息，我也做了些调查然后找到了些方法。我会把这些方法分享在我们的网站上，希望能帮助到其他人。有很多种方法可以检查程序包是否已安装，我找到了 7 种命令，你可以从中选择你喜欢的使用。如下：apt-cache：可用于查询 APT 缓存或程序包的元数据。apt：是基于 Debian 的系统中的安装、下载、删除、搜索和管理包的强有力的工具。dpkg-query：一个查询 dpkg 数据库的工具。dpkg：基于 Debian 的系统的包管理工具。which：返回在终端中输入命令时执行的可执行文件的全路径。whereis：可用于搜索指定命令的二进制文件、源码文件和帮助文件。locate：比 find 命令快，因为其使用 updatedb 数据库搜索，而 find命令在实际系统中搜索。方法一、使用 apt-cache 命令apt-cache 命令用于从 APT 内部数据库中查询APT 缓存和包的元数据，将会搜索和显示指定包的信息，包括是否安装、程序包版本、源码仓库信息等。下面的示例清楚的显示 nano 包已经在系统中安装了以及对应安装的版本号。# apt-cache policy nano nano: Installed: 2.9.3-2 Candidate: 2.9.3-2 Version table: *** 2.9.3-2 500 500 http://in.archive.ubuntu.com/ubuntu bionic/main amd64 Packages 100 /var/lib/dpkg/status方法二、使用 apt 命令apt 是一个功能强大的命令行工具，可用于安装、下载、删除、搜索、管理程序包以及查询关于程序包的信息，类似对于 libapt-pkg 库的所有功能的底层访问。其包含一些与包管理相关的但很少用到的命令行功能。# apt -qq list nano nano/bionic,now 2.9.3-2 amd64 [installed]方法三、使用 dpkg-query 命令dpkg-query 是显示 dpkg 数据库中程序包信息列表的一个工具。下面示例中的输出的第一列 ii，表示查询的程序包已安装了。# dpkg-query --list | grep -i nano ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico方法四、使用 dpkg 命令dpkg（debian package）是一个安装、构建、删除和管理 Debian 包的工具，但和其他包管理系统不同的是，其不能自动下载和安装包或包依赖。下面示例中的输出的第一列 ii，表示查询的包已安装了。# dpkg -l | grep -i nano ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico方法五、使用 which 命令which 命令返回在终端中输入命令时执行的可执行文件的全路径。这对于你想要给可执行文件创建桌面快捷方式或符号链接时非常有用。which 命令仅在当前用户 PATH 环境变量配置的目录列表中搜索，而不是在所有用户的目录中搜索。这意思是当你登入你自己账号时，其不会在 root 用户文件或目录中搜索。如果对于指定的程序包或可执行文件路径有如下输出，则表示已安装了，否则没有。# which nano /bin/nano方法六、使用 whereis 命令whereis 命令用于针对指定命令搜索对应的程序二进制文件、源码文件以及帮助文件等。如果对于指定的程序包或可执行文件路径有如下输出，则表示已安装了，否则没有。# whereis nano nano: /bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz方法七、使用 locate 命令locate 命令比 find 命令快，因为其在 updatedb 数据库中搜索，而 find 命令在实际系统中进行搜索。对于获取指定文件，其使用数据库而不是在特定目录路径中搜索。locate 命令不会预安装在大多数系统中，需要手动安装。locate 使用的数据库会根据定时任务定期更新。当然，我们也可以手动更新。如果对于指定的程序包或可执行文件路径有如下输出，则表示已安装了，否则没有。# locate --basename '\nano' /usr/bin/nano /usr/share/nano /usr/share/doc/nanovia: https://www.2daygeek.com/how-to-check-whether-the-given-package-is-installed-or-not-on-ubuntu-debian-system/作者：Magesh Maruthamuthu 选题：lujun9972 译者：yizhuoyan 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在 AppImage、Flathub 和 Snapcraft 平台上搜索 Linux 应用
Linux 一直在发展。过去，开发人员必须分别为不同的 Linux 发行版构建应用。由于存在多种 Linux 变体，因此为所有发行版构建应用变得很繁琐，而且非常耗时。后来一些开发人员发明了包转换器和构建器，如 Checkinstall、Debtap 和 Fpm。但他们也没有完全解决问题。所有这些工具都只是将一种包格式转换为另一种包格式。我们仍然需要找到应用并安装运行所需的依赖项。好吧，时代已经变了。我们现在有了通用的 Linux 应用。这意味着我们可以在大多数 Linux 发行版上安装这些应用。无论是 Arch Linux、Debian、CentOS、Redhat、Ubuntu 还是任何流行的 Linux 发行版，通用应用都可以正常使用。这些应用与所有必需的库和依赖项打包在一个包中。我们所要做的就是在我们使用的任何 Linux 发行版上下载并运行它们。流行的通用应用格式有 AppImage、Flatpak 和 Snap。AppImage 由 Simon peter 创建和维护。许多流行的应用，如 Gimp、Firefox、Krita 等等，都有这些格式，并可直接在下载页面下载。只需下载它们，使其可执行并立即运行它。你甚至无需 root 权限来运行 AppImage。Flatpak 的开发人员是 Alexander Larsson（RedHat 员工）。Flatpak 应用托管在名为 “Flathub” 的中央仓库（商店）中。如果你是开发人员，建议你使用 Flatpak 格式构建应用，并通过 Flathub 将其分发给用户。Snap 由 Canonical 而建，主要用于 Ubuntu。但是，其他 Linux 发行版的开发人员开始为 Snap 打包格式做出贡献。因此，Snap 也开始适用于其他 Linux 发行版。Snap 可以直接从应用的下载页面下载，也可以从 Snapcraft 商店下载。许多受欢迎的公司和开发人员已经发布了 AppImage、Flatpak 和 Snap 格式的应用。如果你在寻找一款应用，只需进入相应的商店并获取你选择的应用并运行它，而不用管你使用何种 Linux 发行版。还有一个名为 “Chob” 的命令行通用应用搜索工具可在 AppImage、Flathub 和 Snapcraft 平台上轻松搜索 Linux 应用。此工具仅搜索给定的应用并在默认浏览器中显示官方链接。它不会安装它们。本指南将解释如何安装 Chob 并使用它来搜索 Linux 上的 AppImage、Flatpak 和 Snap。使用 Chob 在 AppImage、Flathub 和 Snapcraft 平台上搜索 Linux 应用从发布页面下载最新的 Chob 二进制文件。在编写本指南时，最新版本为 0.3.5。$ wget https://github.com/MuhammedKpln/chob/releases/download/0.3.5/chob-linux使其可执行：$ chmod +x chob-linux最后，搜索你想要的应用。例如，我将搜索与 Vim 相关的应用。$ ./chob-linux vimChob 将在 AppImage、Flathub 和 Snapcraft 平台上搜索给定的应用（和相关应用）并显示结果。使用 Chob 搜索 Linux 应用只需要输入你想要应用前面的数字就可在默认浏览器中打开它的官方链接，并可在其中阅读应用的详细信息。在浏览器中查看 Linux 应用的详细信息有关更多详细信息，请查看下面的 Chob 官方 GitHub 页面。资源：Chob 的 GitHub 仓库via: https://www.ostechnix.com/search-linux-applications-on-appimage-flathub-and-snapcraft-platforms/作者：sk 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在 Linux 中移除从源代码安装的程序的一种简单的方法
不是所有的程序都可以在官方或者第三方库中找到，因此你不能使用常规的包管理来安装它们。有时你不得不从源代码中手动构建这些程序。就如你已经知道的一样，当你从源代码中安装一个程序的时候，这个软件包所包含的文件将会复制到本地的多个位置，例如 /usr/local/bin、/usr/local/etc/。如果从源代码中安装的程序没有内置的卸载程序，当你不再需要这个程序的时候，卸载它就会很麻烦。你可能会花费双倍（甚至更多）的时间找出这些文件然后手动删除它们。我以前一直是这样做的，直到我发现了 GNU Stow。谢天谢地，Stow 有一个很棒的方法可以轻松管理从源代码安装的程序。引用官方网站里的一段介绍，GNU Stow 是一个符号链接归集管理器，它可以收集文件系统上不同目录中的不同软件和/或数据包，使它们看起来像是一个整体。简单来说，Stow 帮助你把这些程序文件以一种容易管理的方式组织在了一起。在这个方法中，文件将不会被复制到多个位置。所有的这些文件都会被保存在一个特定的文件夹中，通常是以程序名命名的，然后 Stow 会在一个合适的位置为所有的程序文件创建符号连接。比如 /usr/local/bin 中会包含 /usr/local/stow/vim/bin、/usr/local/stow/python/bin 中文件的符号链接。并且同样递归地用于其他的任何的子目录，例如 .../share、.../man，等等。在这篇教程中，我将会举例教你如何轻松地使用 Stow 管理从源中安装的程序。安装 GNU StowGNU Stow 在流行 Linux 操作系统的默认库中都可用。在 Arch Linux 及它的衍生版本中，运行下面的命令安装 Stow。$ sudo pacman -S stow在 Debian、Ubuntu、Linux Mint 上：$ sudo apt install stow在 Fedora 上：$ sudo dnf install stow在 RHEL/CentOS 上：$ sudo yum install epel-release $ sudo yum install stow在 Linux 上轻松移除从源代码安装的程序就像我之前提到的，所有包的程序文件都将被保存在位于 /usr/local/stow/ 的一个根文件夹。在这个根文件夹或者父目录之下，每个包都将保存在对应的子目录中。例如，如果我们从源代码中安装了 Vim 编辑器，所有关联到 Vim 的程序文件和目录都将保存在 /usr/local/stow/vim 文件夹之下。如果你从源代码中安装了 Python，所有关联到 python 的文件都会保存在 /usr/local/stow/python 之下。我现在从源代码中来安装一个叫做 hello 的程序。首先下载 hello 程序的压缩包。$ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz使用下面的命令解压压缩包：$ tar -zxvf hello-2.10.tar.gz上面的命令将会在当前工作目录下创建一个叫做 hello-2.10 的目录，并且提取压缩包中的所有内容到其中去。切换到这个目录当中：$ cd hello-2.10/运行下面的命令，并且添加 -prefix 选项。$ ./configure --prefix=/usr/local/stow/hello上面的命令将会保存构建文件到一个指定位置，在这个例子中是 /usr/local/stow/hello。最后，使用下面的命令构建并安装 hello 这个程序：$ make $ sudo make install就这样。hello 这个程序就已经安装在 /usr/local/stow/hello/ 这个位置了。你可以使用下面的 ls 命令确认一下。$ ls /usr/local/stow/hello/ bin share最后，进入 /usr/local/stow/ 目录，运行下面的命令来生成必要的符号链接。$ cd /usr/local/stow/ $ sudo stow hello大功告成！刚才那一步是将包含在 hello 这个程序中的所有文件或者目录创建了链接到 /usr/local/ 目录中。换一种说法， /usr/local/stow/hello/bin 链接到 /usr/local/share，以及 /usr/local/stow/hello/share/man 链接到 /usr/local/share，还有 /usr/local/stow/hello/share/man 链接到 /usr/local/share/man。你可以使用 ls 命令来确认一下：$ ls /usr/local/bin/ hello可以使用下面的命令来确认 hello 这个程序是否可以正常工作了：$ hello Hello, world!很好，它已经开始工作了！！类似地，你可以像上面描述的那样安装程序到它对应的子目录下。下面是 Stow 根目录包含的内容：$ tree /usr/local/stow/看，hello 这个程序已经安装在 /usr/local/stow/hello/ 下。同样地，所有的包都将保存在它们对应的目录之下。下面进入主要环节，移除 hello 这个程序。首先进入 /usr/local/stow/ 目录：$ cd /usr/local/stow/然后运行下面的命令：$ sudo stow --delete hellohello 这个程序就会被移除了。你可以使用下面的命令确认它是否真的被移除了：$ hello -bash: /usr/local/bin/hello: No such file or directory看， Hello 已经被移除了！请注意 Stow 仅仅只移除了符号链接。所有与 hello 这个程序相关的文件或者目录还保存在 /usr/local/stow/hello 目录下。所以你无需再次下载源文件就可以再次安装 hello 这个程序。如果你不再需要它了，直接删除这个文件夹即可。$ sudo rm -fr /usr/local/stow/hello/想了解更多 Stow 的细节，请参阅 man 手册。$ man stowStow 可以像安装程序一样轻松地帮你移除它。如果你想知道如何高效的管理很多从源代码中安装的程序，GNU Stow 就是一个使得这个任务更加轻松的一个选择，尝试一下，你一定不会失望的。这就是所有的内容了，希望对你有所帮助。还有更多干活即将到来，可以期待一下的！祝近祺！via: https://www.ostechnix.com/an-easy-way-to-remove-programs-installed-from-source-in-linux/作者：SK 选题：lujun9972 译者：dianbanjiu 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
我们知道，如果想要在 Linux 中安装软件包，可以使用软件包管理器来进行安装。由于系统管理员需要频繁用到软件包管理器，所以它是 Linux 当中的一个重要工具。但是如果想一次性安装一个软件包组，在 Linux 中有可能吗？又如何通过命令去实现呢？在 Linux 中确实可以用软件包管理器来达到这样的目的。很多软件包管理器都有这样的选项来实现这个功能，但就我所知，apt 或 apt-get 软件包管理器却并没有这个选项。因此对基于 Debian 的系统，需要使用的命令是 tasksel，而不是 apt 或 apt-get 这样的官方软件包管理器。在 Linux 中安装软件包组有很多好处。对于 LAMP 来说，安装过程会包含多个软件包，但如果安装软件包组命令来安装，只安装一个包就可以了。当你的团队需要安装 LAMP，但不知道其中具体包含哪些软件包，这个时候软件包组就派上用场了。软件包组是 Linux 系统上一个很方便的工具，它能让你轻松地完成一组软件包的安装。软件包组是一组用于公共功能的软件包，包括系统工具、声音和视频。 安装软件包组的过程中，会获取到一系列的依赖包，从而大大节省了时间。推荐阅读：如何在 Linux 上按照大小列出已安装的软件包如何在 Linux 上查看/列出可用的软件包更新如何在 Linux 上查看软件包的安装/更新/升级/移除/卸载时间如何在 Linux 上查看一个软件包的详细信息如何查看一个软件包是否在你的 Linux 发行版上可用萌新指导：一个可视化的 Linux 包管理工具老手必会：命令行软件包管理器的用法如何在 CentOS/RHEL 系统上列出可用的软件包组RHEL 和 CentOS 系统使用的是 RPM 软件包，因此可以使用 yum 软件包管理器来获取相关的软件包信息。yum 是 “Yellowdog Updater, Modified” 的缩写，它是一个用于基于 RPM 系统（例如 RHEL 和 CentOS）的，开源的命令行软件包管理工具。它是从发行版仓库或其它第三方库中获取、安装、删除、查询和管理 RPM 包的主要工具。推荐阅读： 使用 yum 命令在 RHEL/CentOS 系统上管理软件包# yum grouplist Loaded plugins: fastestmirror, security Setting up Group Process Loading mirror speeds from cached hostfile * epel: epel.mirror.constant.com Installed Groups: Base E-mail server Graphical Administration Tools Hardware monitoring utilities Legacy UNIX compatibility Milkymist Networking Tools Performance Tools Perl Support Security Tools Available Groups: Additional Development Backup Client Backup Server CIFS file server Client management tools Compatibility libraries Console internet tools Debugging Tools Desktop . . Available Language Groups: Afrikaans Support [af] Albanian Support [sq] Amazigh Support [ber] Arabic Support [ar] Armenian Support [hy] Assamese Support [as] Azerbaijani Support [az] . . Done如果需要列出相关联的软件包，可以执行以下这个命令。下面的例子是列出和 “Performance Tools” 组相关联的软件包。# yum groupinfo "Performance Tools" Loaded plugins: fastestmirror, security Setting up Group Process Loading mirror speeds from cached hostfile * epel: ewr.edge.kernel.org Group: Performance Tools Description: Tools for diagnosing system and application-level performance problems. Mandatory Packages: blktrace sysstat Default Packages: dstat iotop latencytop latencytop-tui oprofile perf powertop seekwatcher Optional Packages: oprofile-jit papi sdparm sg3_utils tiobench tuned tuned-utils如何在 Fedora 系统上列出可用的软件包组Fedora 系统使用的是 DNF 软件包管理器，因此可以通过 DNF 软件包管理器来获取相关的信息。DNF 的含义是 “Dandified yum”。DNF 软件包管理器是 YUM 软件包管理器的一个分支，它使用 hawkey/libsolv 库作为后端。从 Fedora 18 开始，Aleš Kozumplík 开始着手 DNF 的开发，直到在 Fedora 22 开始加入到系统中。dnf 命令可以在 Fedora 22 及更高版本上安装、更新、搜索和删除软件包， 它可以自动解决软件包的依赖关系并其顺利安装，不会产生问题。YUM 被 DNF 取代是由于 YUM 中存在一些长期未被解决的问题。为什么 Aleš Kozumplík 没有对 yum 的这些问题作出修补呢，他认为补丁解决存在技术上的难题，而 YUM 团队也不会马上接受这些更改，还有一些重要的问题。而且 YUM 的代码量有 5.6 万行，而 DNF 只有 2.9 万行。因此已经不需要沿着 YUM 的方向继续开发了，重新开一个分支才是更好的选择。推荐阅读： 在 Fedora 系统上使用 DNF 命令管理软件包# dnf grouplist Last metadata expiration check: 0:00:00 ago on Sun 09 Sep 2018 07:10:36 PM IST. Available Environment Groups: Fedora Custom Operating System Minimal Install Fedora Server Edition Fedora Workstation Fedora Cloud Server KDE Plasma Workspaces Xfce Desktop LXDE Desktop Hawaii Desktop LXQt Desktop Cinnamon Desktop MATE Desktop Sugar Desktop Environment Development and Creative Workstation Web Server Infrastructure Server Basic Desktop Installed Groups: C Development Tools and Libraries Development Tools Available Groups: 3D Printing Administration Tools Ansible node Audio Production Authoring and Publishing Books and Guides Cloud Infrastructure Cloud Management Tools Container Management D Development Tools and Libraries . . RPM Development Tools Security Lab Text-based Internet Window Managers GNOME Desktop Environment Graphical Internet KDE (K Desktop Environment) Fonts Games and Entertainment Hardware Support Sound and Video System Tools如果需要列出相关联的软件包，可以执行以下这个命令。下面的例子是列出和 “Editor” 组相关联的软件包。# dnf groupinfo Editors Last metadata expiration check: 0:04:57 ago on Sun 09 Sep 2018 07:10:36 PM IST. Group: Editors Description: Sometimes called text editors, these are programs that allow you to create and edit text files. This includes Emacs and Vi. Optional Packages: code-editor cssed emacs emacs-auctex emacs-bbdb emacs-ess emacs-vm geany gobby jed joe leafpad nedit poedit psgml vim-X11 vim-enhanced xemacs xemacs-packages-base xemacs-packages-extra xemacs-xft xmlcopyeditor zile如何在 openSUSE 系统上列出可用的软件包组openSUSE 系统使用的是 zypper 软件包管理器，因此可以通过 zypper 软件包管理器来获取相关的信息。Zypper 是 suse 和 openSUSE 发行版的命令行包管理器。它可以用于安装、更新、搜索和删除软件包，还有管理存储库，执行各种查询等功能。 Zypper 命令行界面用到了 ZYpp 系统管理库（libzypp）。推荐阅读： 在 openSUSE 和 suse 系统使用 zypper 命令管理软件包# zypper patterns Loading repository data... Warning: Repository 'Update Repository (Non-Oss)' appears to be outdated. Consider using a different mirror or server. Warning: Repository 'Main Update Repository' appears to be outdated. Consider using a different mirror or server. Reading installed packages... S | Name | Version | Repository | Dependency ---|----------------------|---------------|-----------------------|----------- | 64bit | 20150918-25.1 | Main Repository (OSS) | | apparmor | 20150918-25.1 | Main Repository (OSS) | i | apparmor | 20150918-25.1 | @System | | base | 20150918-25.1 | Main Repository (OSS) | i+ | base | 20150918-25.1 | @System | | books | 20150918-25.1 | Main Repository (OSS) | | console | 20150918-25.1 | Main Repository (OSS) | | devel_C_C++ | 20150918-25.1 | Main Repository (OSS) | i | enhanced_base | 20150918-25.1 | @System | | enlightenment | 20150918-25.1 | Main Repository (OSS) | | file_server | 20150918-25.1 | Main Repository (OSS) | | fonts | 20150918-25.1 | Main Repository (OSS) | i | fonts | 20150918-25.1 | @System | | games | 20150918-25.1 | Main Repository (OSS) | i | games | 20150918-25.1 | @System | | gnome | 20150918-25.1 | Main Repository (OSS) | | gnome_basis | 20150918-25.1 | Main Repository (OSS) | i | imaging | 20150918-25.1 | @System | | kde | 20150918-25.1 | Main Repository (OSS) | i+ | kde | 20150918-25.1 | @System | | kde_plasma | 20150918-25.1 | Main Repository (OSS) | i | kde_plasma | 20150918-25.1 | @System | | lamp_server | 20150918-25.1 | Main Repository (OSS) | | laptop | 20150918-25.1 | Main Repository (OSS) | i+ | laptop | 20150918-25.1 | @System | | lxde | 20150918-25.1 | Main Repository (OSS) | | lxqt | 20150918-25.1 | Main Repository (OSS) | i | multimedia | 20150918-25.1 | @System | | network_admin | 20150918-25.1 | Main Repository (OSS) | | non_oss | 20150918-25.1 | Main Repository (OSS) | i | non_oss | 20150918-25.1 | @System | | office | 20150918-25.1 | Main Repository (OSS) | i | office | 20150918-25.1 | @System | | print_server | 20150918-25.1 | Main Repository (OSS) | | remote_desktop | 20150918-25.1 | Main Repository (OSS) | | x11 | 20150918-25.1 | Main Repository (OSS) | i+ | x11 | 20150918-25.1 | @System | | x86 | 20150918-25.1 | Main Repository (OSS) | | xen_server | 20150918-25.1 | Main Repository (OSS) | | xfce | 20150918-25.1 | Main Repository (OSS) | | xfce_basis | 20150918-25.1 | Main Repository (OSS) | | yast2_basis | 20150918-25.1 | Main Repository (OSS) | i | yast2_basis | 20150918-25.1 | @System | | yast2_install_wf | 20150918-25.1 | Main Repository (OSS) |如果需要列出相关联的软件包，可以执行以下这个命令。下面的例子是列出和 “file\_server” 组相关联的软件包。另外 zypper 还允许用户使用不同的选项执行相同的操作。# zypper info file_server Loading repository data... Warning: Repository 'Update Repository (Non-Oss)' appears to be outdated. Consider using a different mirror or server. Warning: Repository 'Main Update Repository' appears to be outdated. Consider using a different mirror or server. Reading installed packages... Information for pattern file_server: ------------------------------------ Repository : Main Repository (OSS) Name : file_server Version : 20150918-25.1 Arch : x86_64 Vendor : openSUSE Installed : No Visible to User : Yes Summary : File Server Description : File services to host files so that they may be accessed or retrieved by other computers on the same network. This includes the FTP, SMB, and NFS protocols. Contents : S | Name | Type | Dependency ---|-------------------------------|---------|------------ i+ | patterns-openSUSE-base | package | Required | patterns-openSUSE-file_server | package | Required | nfs-kernel-server | package | Recommended i | nfsidmap | package | Recommended i | samba | package | Recommended i | samba-client | package | Recommended i | samba-winbind | package | Recommended | tftp | package | Recommended | vsftpd | package | Recommended | yast2-ftp-server | package | Recommended | yast2-nfs-server | package | Recommended i | yast2-samba-server | package | Recommended | yast2-tftp-server | package | Recommended如果需要列出相关联的软件包，可以执行以下这个命令。# zypper pattern-info file_server Loading repository data... Warning: Repository 'Update Repository (Non-Oss)' appears to be outdated. Consider using a different mirror or server. Warning: Repository 'Main Update Repository' appears to be outdated. Consider using a different mirror or server. Reading installed packages... Information for pattern file_server: ------------------------------------ Repository : Main Repository (OSS) Name : file_server Version : 20150918-25.1 Arch : x86_64 Vendor : openSUSE Installed : No Visible to User : Yes Summary : File Server Description : File services to host files so that they may be accessed or retrieved by other computers on the same network. This includes the FTP, SMB, and NFS protocols. Contents : S | Name | Type | Dependency ---|-------------------------------|---------|------------ i+ | patterns-openSUSE-base | package | Required | patterns-openSUSE-file_server | package | Required | nfs-kernel-server | package | Recommended i | nfsidmap | package | Recommended i | samba | package | Recommended i | samba-client | package | Recommended i | samba-winbind | package | Recommended | tftp | package | Recommended | vsftpd | package | Recommended | yast2-ftp-server | package | Recommended | yast2-nfs-server | package | Recommended i | yast2-samba-server | package | Recommended | yast2-tftp-server | package | Recommended如果需要列出相关联的软件包，也可以执行以下这个命令。# zypper info pattern file_server Loading repository data... Warning: Repository 'Update Repository (Non-Oss)' appears to be outdated. Consider using a different mirror or server. Warning: Repository 'Main Update Repository' appears to be outdated. Consider using a different mirror or server. Reading installed packages... Information for pattern file_server: ------------------------------------ Repository : Main Repository (OSS) Name : file_server Version : 20150918-25.1 Arch : x86_64 Vendor : openSUSE Installed : No Visible to User : Yes Summary : File Server Description : File services to host files so that they may be accessed or retrieved by other computers on the same network. This includes the FTP, SMB, and NFS protocols. Contents : S | Name | Type | Dependency ---|-------------------------------|---------|------------ i+ | patterns-openSUSE-base | package | Required | patterns-openSUSE-file_server | package | Required | nfs-kernel-server | package | Recommended i | nfsidmap | package | Recommended i | samba | package | Recommended i | samba-client | package | Recommended i | samba-winbind | package | Recommended | tftp | package | Recommended | vsftpd | package | Recommended | yast2-ftp-server | package | Recommended | yast2-nfs-server | package | Recommended i | yast2-samba-server | package | Recommended | yast2-tftp-server | package | Recommended如果需要列出相关联的软件包，也可以执行以下这个命令。# zypper info -t pattern file_server Loading repository data... Warning: Repository 'Update Repository (Non-Oss)' appears to be outdated. Consider using a different mirror or server. Warning: Repository 'Main Update Repository' appears to be outdated. Consider using a different mirror or server. Reading installed packages... Information for pattern file_server: ------------------------------------ Repository : Main Repository (OSS) Name : file_server Version : 20150918-25.1 Arch : x86_64 Vendor : openSUSE Installed : No Visible to User : Yes Summary : File Server Description : File services to host files so that they may be accessed or retrieved by other computers on the same network. This includes the FTP, SMB, and NFS protocols. Contents : S | Name | Type | Dependency ---|-------------------------------|---------|------------ i+ | patterns-openSUSE-base | package | Required | patterns-openSUSE-file_server | package | Required | nfs-kernel-server | package | Recommended i | nfsidmap | package | Recommended i | samba | package | Recommended i | samba-client | package | Recommended i | samba-winbind | package | Recommended | tftp | package | Recommended | vsftpd | package | Recommended | yast2-ftp-server | package | Recommended | yast2-nfs-server | package | Recommended i | yast2-samba-server | package | Recommended | yast2-tftp-server | package | Recommended如何在 Debian/Ubuntu 系统上列出可用的软件包组由于 APT 或 APT-GET 软件包管理器没有为基于 Debian/Ubuntu 的系统提供这样的选项，因此需要使用 tasksel 命令来获取相关信息。tasksel 是 Debian/Ubuntu 系统上一个很方便的工具，只需要很少的操作就可以用它来安装好一组软件包。可以在 /usr/share/tasksel 目录下的 .desc 文件中安排软件包的安装任务。默认情况下，tasksel 工具是作为 Debian 系统的一部分安装的，但桌面版 Ubuntu 则没有自带 tasksel，这个功能类似软件包管理器中的元包（meta-packages）。tasksel 工具带有一个基于 zenity 的简单用户界面，例如命令行中的弹出图形对话框。推荐阅读： 使用 tasksel 在 Debian/Ubuntu 系统上快速安装软件包组# tasksel --list-task u kubuntu-live Kubuntu live CD u lubuntu-live-gtk Lubuntu live CD (GTK part) u ubuntu-budgie-live Ubuntu Budgie live CD u ubuntu-live Ubuntu live CD u ubuntu-mate-live Ubuntu MATE Live CD u ubuntustudio-dvd-live Ubuntu Studio live DVD u vanilla-gnome-live Ubuntu GNOME live CD u xubuntu-live Xubuntu live CD u cloud-image Ubuntu Cloud Image (instance) u dns-server DNS server u kubuntu-desktop Kubuntu desktop u kubuntu-full Kubuntu full u lamp-server LAMP server u lubuntu-core Lubuntu minimal installation u lubuntu-desktop Lubuntu Desktop u lubuntu-gtk-core Lubuntu minimal installation (GTK part) u lubuntu-gtk-desktop Lubuntu Desktop (GTK part) u lubuntu-qt-core Lubuntu minimal installation (Qt part) u lubuntu-qt-desktop Lubuntu Qt Desktop (Qt part) u mail-server Mail server u postgresql-server PostgreSQL database i print-server Print server u samba-server Samba file server u tomcat-server Tomcat Java server u ubuntu-budgie-desktop Ubuntu Budgie desktop i ubuntu-desktop Ubuntu desktop u ubuntu-mate-core Ubuntu MATE minimal u ubuntu-mate-desktop Ubuntu MATE desktop i ubuntu-usb Ubuntu desktop USB u ubuntustudio-audio Audio recording and editing suite u ubuntustudio-desktop Ubuntu Studio desktop u ubuntustudio-desktop-core Ubuntu Studio minimal DE installation u ubuntustudio-fonts Large selection of font packages u ubuntustudio-graphics 2D/3D creation and editing suite u ubuntustudio-photography Photograph touchup and editing suite u ubuntustudio-publishing Publishing applications u ubuntustudio-video Video creation and editing suite u vanilla-gnome-desktop Vanilla GNOME desktop u xubuntu-core Xubuntu minimal installation u xubuntu-desktop Xubuntu desktop u openssh-server OpenSSH server u server Basic Ubuntu server如果需要列出相关联的软件包，可以执行以下这个命令。下面的例子是列出和 “lamp-server” 组相关联的软件包。# tasksel --task-desc "lamp-server" Selects a ready-made Linux/Apache/MySQL/PHP server.如何在基于 Arch Linux 的系统上列出可用的软件包组基于 Arch Linux 的系统使用的是 pacman 软件包管理器，因此可以通过 pacman 软件包管理器来获取相关的信息。pacman 是 “package manager” 的缩写。pacman 可以用于安装、构建、删除和管理 Arch Linux 软件包。pacman 使用 libalpm（Arch Linux Package Management 库，ALPM）作为后端来执行所有操作。推荐阅读： 使用 pacman 在基于 Arch Linux 的系统上管理软件包# pacman -Sg base-devel base multilib-devel gnome-extra kde-applications kdepim kdeutils kdeedu kf5 kdemultimedia gnome plasma kdegames kdesdk kdebase xfce4 fprint kdegraphics kdenetwork kdeadmin kf5-aids kdewebdev . . dlang-ldc libretro ring lxqt non-daw non alsa qtcurve realtime sugar-fructose tesseract-data vim-plugins如果需要列出相关联的软件包，可以执行以下这个命令。下面的例子是列出和 “gnome” 组相关联的软件包。# pacman -Sg gnome gnome baobab gnome cheese gnome eog gnome epiphany gnome evince gnome file-roller gnome gdm gnome gedit gnome gnome-backgrounds gnome gnome-calculator gnome gnome-calendar gnome gnome-characters gnome gnome-clocks gnome gnome-color-manager gnome gnome-contacts gnome gnome-control-center gnome gnome-dictionary gnome gnome-disk-utility gnome gnome-documents gnome gnome-font-viewer . . gnome sushi gnome totem gnome tracker gnome tracker-miners gnome vino gnome xdg-user-dirs-gtk gnome yelp gnome gnome-boxes gnome gnome-software gnome simple-scan 也可以执行以下这个命令实现同样的效果。# pacman -S gnome :: There are 64 members in group gnome: :: Repository extra 1) baobab 2) cheese 3) eog 4) epiphany 5) evince 6) file-roller 7) gdm 8) gedit 9) gnome-backgrounds 10) gnome-calculator 11) gnome-calendar 12) gnome-characters 13) gnome-clocks 14) gnome-color-manager 15) gnome-contacts 16) gnome-control-center 17) gnome-dictionary 18) gnome-disk-utility 19) gnome-documents 20) gnome-font-viewer 21) gnome-getting-started-docs 22) gnome-keyring 23) gnome-logs 24) gnome-maps 25) gnome-menus 26) gnome-music 27) gnome-photos 28) gnome-screenshot 29) gnome-session 30) gnome-settings-daemon 31) gnome-shell 32) gnome-shell-extensions 33) gnome-system-monitor 34) gnome-terminal 35) gnome-themes-extra 36) gnome-todo 37) gnome-user-docs 38) gnome-user-share 39) gnome-video-effects 40) grilo-plugins 41) gvfs 42) gvfs-afc 43) gvfs-goa 44) gvfs-google 45) gvfs-gphoto2 46) gvfs-mtp 47) gvfs-nfs 48) gvfs-smb 49) mousetweaks 50) mutter 51) nautilus 52) networkmanager 53) orca 54) rygel 55) sushi 56) totem 57) tracker 58) tracker-miners 59) vino 60) xdg-user-dirs-gtk 61) yelp :: Repository community 62) gnome-boxes 63) gnome-software 64) simple-scan Enter a selection (default=all): ^C Interrupt signal received 可以执行以下命令检查相关软件包的数量。# pacman -Sg gnome | wc -l 64via: https://www.2daygeek.com/how-to-list-an-available-package-groups-in-linux/作者：Prakash Subramanian 选题：lujun9972 译者：HankChow 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
备份安装的包并在全新安装的 Ubuntu 上恢复它们
在多个 Ubuntu 系统上安装同一组软件包是一项耗时且无聊的任务。你不会想花时间在多个系统上反复安装相同的软件包。在类似架构的 Ubuntu 系统上安装软件包时，有许多方法可以使这项任务更容易。你可以方便地通过 Aptik 并点击几次鼠标将以前的 Ubuntu 系统的应用程序、设置和数据迁移到新安装的系统中。或者，你可以使用软件包管理器（例如 APT）获取备份的已安装软件包的完整列表，然后在新安装的系统上安装它们。今天，我了解到还有另一个专用工具可以完成这项工作。来看一下 apt-clone，这是一个简单的工具，可以让你为 Debian/Ubuntu 系统创建一个已安装的软件包列表，这些软件包可以在新安装的系统或容器上或目录中恢复。apt-clone 会帮助你处理你想要的情况，在运行类似 Ubuntu（及衍生版）的多个系统上安装一致的应用程序。经常在多个系统上安装相同的软件包。备份已安装的应用程序的完整列表，并在需要时随时随地恢复它们。在本简要指南中，我们将讨论如何在基于 Debian 的系统上安装和使用 apt-clone。我在 Ubuntu 18.04 LTS 上测试了这个程序，但它应该适用于所有基于 Debian 和 Ubuntu 的系统。备份已安装的软件包并在新安装的 Ubuntu 上恢复它们apt-clone 在默认仓库中有。要安装它，只需在终端输入以下命令：$ sudo apt install apt-clone安装后，只需创建已安装软件包的列表，并将其保存在你选择的任何位置。$ mkdir ~/mypackages $ sudo apt-clone clone ~/mypackages上面的命令将我的 Ubuntu 中所有已安装的软件包保存在 ~/mypackages 目录下名为 apt-clone-state-ubuntuserver.tar.gz 的文件中。要查看备份文件的详细信息，请运行：$ apt-clone info mypackages/apt-clone-state-ubuntuserver.tar.gz Hostname: ubuntuserver Arch: amd64 Distro: bionic Meta: Installed: 516 pkgs (33 automatic) Date: Sat Sep 15 10:23:05 2018如你所见，我的 Ubuntu 服务器总共有 516 个包。现在，将此文件复制到 USB 或外部驱动器上，并转至要安装同一套软件包的任何其他系统。或者，你也可以将备份文件传输到网络上的系统，并使用以下命令安装软件包：$ sudo apt-clone restore apt-clone-state-ubuntuserver.tar.gz请注意，此命令将覆盖你现有的 /etc/apt/sources.list 并将安装/删除软件包。警告过你了！此外，只需确保目标系统是相同的 CPU 架构和操作系统。例如，如果源系统是 18.04 LTS 64 位，那么目标系统必须也是相同的。如果你不想在系统上恢复软件包，可以使用 --destination /some/location 选项将克隆复制到这个文件夹中。$ sudo apt-clone restore apt-clone-state-ubuntuserver.tar.gz --destination ~/oldubuntu在此例中，上面的命令将软件包恢复到 ~/oldubuntu 中。有关详细信息，请参阅帮助部分：$ apt-clone -h或者手册页：$ man apt-clone建议阅读：Systemback - 将 Ubuntu 桌面版和服务器版恢复到以前的状态Cronopete - Linux 下的苹果时间机器就是这些了。希望这个有用。还有更多好东西。敬请期待!干杯!via: https://www.ostechnix.com/backup-installed-packages-and-restore-them-on-freshly-installed-ubuntu-system/作者：SK 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
怎样解决 Ubuntu 中的 “sub process usr bin dpkg returned an error code 1” 错误
如果你在 Ubuntu Linux 上安装软件时遇到 “sub process usr bin dpkg returned an error code 1”，请按照以下步骤进行修复。Ubuntu 和其他基于 Debian 的发行版中的一个常见问题是已经损坏的包。你尝试更新系统或安装新软件包时会遇到类似 “Sub-process /usr/bin/dpkg returned an error code” 的错误。这就是前几天发生在我身上的事。我试图在 Ubuntu 中安装一个电台程序时，它给我了这个错误：Unpacking python-gst-1.0 (1.6.2-1build1) ... Selecting previously unselected package radiotray. Preparing to unpack .../radiotray_0.7.3-5ubuntu1_all.deb ... Unpacking radiotray (0.7.3-5ubuntu1) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for desktop-file-utils (0.22-1ubuntu5.2) ... Processing triggers for bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) ... Rebuilding /usr/share/applications/bamf-2.index... Processing triggers for gnome-menus (3.13.3-6ubuntu3.1) ... Processing triggers for mime-support (3.59ubuntu1) ... Setting up polar-bookshelf (1.0.0-beta56) ... ln: failed to create symbolic link '/usr/local/bin/polar-bookshelf': No such file or directory dpkg: error processing package polar-bookshelf (--configure): subprocess installed post-installation script returned error exit status 1 Setting up python-appindicator (12.10.1+16.04.20170215-0ubuntu1) ... Setting up python-gst-1.0 (1.6.2-1build1) ... Setting up radiotray (0.7.3-5ubuntu1) ... Errors were encountered while processing: polar-bookshelf E: Sub-process /usr/bin/dpkg returned an error code (1) 这里最后三行非常重要。Errors were encountered while processing: polar-bookshelf E: Sub-process /usr/bin/dpkg returned an error code (1)它告诉我 polar-bookshelf 包引发了问题。这可能对你如何修复这个错误至关重要。修复 Sub-process /usr/bin/dpkg returned an error code (1)让我们尝试修复这个损坏的错误包。我将展示几种你可以逐一尝试的方法。最初的那些易于使用，几乎不用动脑子。在试了这里讨论的每一种方法之后，你应该尝试运行 sudo apt update，接着尝试安装新的包或升级。方法 1：重新配包数据库你可以尝试的第一种方法是重新配置包数据库。数据库可能在安装包时损坏了。重新配置通常可以解决问题。sudo dpkg --configure -a方法 2：强制安装如果是之前包安装过程被中断，你可以尝试强制安装。sudo apt-get install -f方法3：尝试删除有问题的包如果这不是你的问题，你可以尝试手动删除包。但不要对 Linux 内核包（以 linux- 开头）执行此操作。sudo apt remove方法 4：删除有问题的包中的信息文件这应该是你最后的选择。你可以尝试从 /var/lib/dpkg/info 中删除与相关软件包关联的文件。你需要了解一些基本的 Linux 命令来了解发生了什么以及如何对应你的问题就我而言，我在 polar-bookshelf 中遇到问题。所以我查找了与之关联的文件：ls -l /var/lib/dpkg/info | grep -i polar-bookshelf -rw-r--r-- 1 root root 2324811 Aug 14 19:29 polar-bookshelf.list -rw-r--r-- 1 root root 2822824 Aug 10 04:28 polar-bookshelf.md5sums -rwxr-xr-x 1 root root 113 Aug 10 04:28 polar-bookshelf.postinst -rwxr-xr-x 1 root root 84 Aug 10 04:28 polar-bookshelf.postrm现在我需要做的就是删除这些文件：sudo mv /var/lib/dpkg/info/polar-bookshelf.* /tmp使用 sudo apt update，接着你应该就能像往常一样安装软件了。哪种方法适合你（如果有效）？我希望这篇快速文章可以帮助你修复 “E: Sub-process /usr/bin/dpkg returned an error code (1)” 的错误。如果它对你有用，是那种方法？你是否设法使用其他方法修复此错误？如果是，请分享一下以帮助其他人解决此问题。via: https://itsfoss.com/dpkg-returned-an-error-code-1/作者：Abhishek Prakash 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
学习一种不同的包管理器和怎么使用它。如果你在一直在使用 Linux，你很快就会发现做同样的事情有很多不同的方法。这包括通过命令行在 Linux 上安装应用。我已经是大约 25 年的 Linux 用户，我一次又一次地回到命令行来安装我的应用。从命令行安装应用程序最常用的方法是使用称为包管理器通过软件库（存储软件的地方）安装。所有 Linux 应用都作为软件包分发，这些软件包只不过是与软件包管理系统相关的文件。每个 Linux 发行版都附带一个包管理系统，但它们并不完全相同。什么是包管理系统？包管理系统由一组工具和文件格式组成，它们一起用于安装、更新和卸载 Linux 应用。两种最常见的包管理系统来自 Red Hat 和 Debian。 Red Hat、CentOS 和 Fedora 都使用 rpm 系统（.rpm 文件），而 Debian、Ubuntu、Mint 和 Ubuntu 都使用 dpkg（.deb 文件）。Gentoo Linux 使用名为 Portage 的系统，Arch Linux 只使用 tarball（.tar 文件）。这些系统之间的主要区别在于它们如何安装和维护应用。你可能想知道 .rpm、.deb 或 .tar 文件中的内容。你可能会惊讶地发现，所有这些都只是普通的老式归档文件（如 .zip），其中包含应用的代码，如何安装它的说明，依赖项（它可能依赖的其他应用），以及配置文件的位置。读取和执行所有这些指令的软件称为包管理器。Debian、Ubuntu、Mint 等Debian、Ubuntu、Mint 和其它基于 Debian 的发行版都使用 .deb 文件和 dpkg 包管理系统。有两种方法可以通过此系统安装应用。你可以使用 apt 程序从仓库进行安装，也可以使用 dpkg 程序从 .deb 文件安装应用。我们来看看如何做到这两点。使用 apt 安装应用非常简单：$ sudo apt install app_name通过 apt 卸载应用也非常简单：$ sudo apt remove app_name要升级已安装的应用，首先需要更新应用仓库：$ sudo apt update完成后，你可以使用以下命令更新任何程序：$ sudo apt upgrade如果你只想更新一个应用，该怎么办？没问题。$ sudo apt update app_name最后，假设你要安装的应用不存在于 Debian 仓库中，但有 .deb 下载。$ sudo dpkg -i app_name.debRed Hat、CentOS 和 Fedora默认情况下，Red Hat 使用多个包管理系统。这些系统在使用自己的命令时，互相仍然非常相似，而且与 Debian 中使用的也相似。例如，我们可以使用 yum 或 dnf 管理器来安装应用。$ sudo yum install app_name $ sudo dnf install app_name.rpm 格式的应用也可以使用 rpm 命令安装。$ sudo rpm -i app_name.rpm删除不需要的应用同样容易。$ sudo yum remove app_name $ sudo dnf remove app_name更新应用同样容易。$ yum update $ sudo dnf upgrade --refresh如你所见，从命令行安装、卸载和更新 Linux 应用并不难。事实上，一旦你习惯它，你会发现它比使用基于桌面 GUI 的管理工具更快！有关从命令行安装应用程序的更多信息，请访问 Debian Apt wiki、Yum 速查表 和 DNF wiki。via: https://opensource.com/article/18/8/how-install-software-linux-command-line作者：Patrick H.Mullins 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出