标签 安装 下的文章

从我们的新电子书中获得关于在 Linux 上安装应用的所有不同方法的信息。

 title=

当你想在你的手机上尝试一个新的应用时,你打开应用商店并安装该应用。这很简单,很快速,很高效。在这种提供应用的模式中,手机供应商可以让你确切地知道到哪里去获得一个应用,而应用的开发者也知道将他们的应用放在哪里,以便人们能够找到它们。

在手机使用这种创新的软件分发模式之前,Linux 正以“软件仓库”的形式使用它。正如这个术语所暗示的,这些是在互联网上传应用的地方,这样 Linux 用户就可以从一个中心位置浏览和安装它们。这个术语被缩短为 “repo”(代表 “repository”,而不是 “reposession”),但无论你叫它“仓库”、“应用商店”、“软件中心”、“包管理器”,还是其他什么,它都是一个好系统,几十年来一直为 Linux 桌面用户服务。

最起码在 Linux 上安装应用很像在手机上安装应用。如果你能用一个安装,你也可以用另外一个安装。

软件中心

在 GNOME 桌面上,你在桌面上看到的软件仓库是一个应用,简单地说,叫 “ 软件 Software ”。你可以把这个应用看成是一个极其特殊的网页浏览器。它寻找可以从互联网上安装的软件,将所有可用的软件收集到分类中,并将其显示在你的桌面上。

 title=

在开始屏幕中,你有几个选项:

  • 搜索一个你已经熟悉的应用。要做到这一点,点击窗口左上角的放大镜图标。
  • 按类别浏览。这可以在窗口的底部找到。
  • 按最近时间和推荐浏览。这些都列在动画横幅和它下面的图标中。

当你点击一个你看起来感兴趣的应用时,会打开一个功能页面,这样你就可以看到截图并阅读软件的简短描述。

安装一个应用

当你找到了你想要安装的软件,点击应用功能页面顶部的“ 安装 Install ”按钮。

 title=

安装完毕后,“ 安装 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中国 荣誉推出

你不需要知道如何写或读代码就可以编译它。

 title=

安装软件的方法有很多,但开源让你有了一个其他地方所没有的选择:你可以自己编译代码。编译源代码的经典三步流程是:

$ ./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. 下载源代码
  2. 展开源代码的存档文件
  3. 编译

你已经有了所有你需要的命令,所以现在你需要一些软件来编译。

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

 title=

编译代码

无论是在我的 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。

我们一直遇到这样一种情况,重新安装 Linux 似乎比找出问题并解决来得更好。排查 Linux 故障能教你很多,但你不会总是花费更多时间来修复损坏的系统。

据我所知,Ubuntu 中没有像 Windows 那样的系统恢复分区。那么,问题出现了:如何重新安装 Ubuntu?让我告诉你如何重新安装 Ubuntu。

警告!

磁盘分区始终是一项危险的任务。我强烈建议你在外部磁盘上备份数据。

如何重新安装 Ubuntu Linux

以下是重新安装 Ubuntu 的步骤。

步骤 1:创建一个 live USB

首先,在网站上下载 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。你将看到选择语言和键盘布局这些常用选项。你还可以选择下载更新等。

Go ahead with regular installation option

现在是重要的步骤。你应该看到一个“ 安装类型 Installation Type ”页面。你在屏幕上看到的内容在很大程度上取决于 Ubuntu 如何处理系统上的磁盘分区和安装的操作系统。

在此步骤中仔细阅读选项及它的细节。注意每个选项的说明。屏幕上的选项可能在不同的系统中看上去不同。

Reinstall Ubuntu option in dual boot mode

在这里,它发现我的系统上安装了 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 后,剩下就是单击下一步。选择你的位置、创建用户账户。

Just go on with the installation options

以上完成后,你就完成重装 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 命令

dpkgdebian 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/nano

via: 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中国 荣誉推出

Search Linux Applications On AppImage, Flathub And Snapcraft

Linux 一直在发展。过去,开发人员必须分别为不同的 Linux 发行版构建应用。由于存在多种 Linux 变体,因此为所有发行版构建应用变得很繁琐,而且非常耗时。后来一些开发人员发明了包转换器和构建器,如 CheckinstallDebtapFpm。但他们也没有完全解决问题。所有这些工具都只是将一种包格式转换为另一种包格式。我们仍然需要找到应用并安装运行所需的依赖项。

好吧,时代已经变了。我们现在有了通用的 Linux 应用。这意味着我们可以在大多数 Linux 发行版上安装这些应用。无论是 Arch Linux、Debian、CentOS、Redhat、Ubuntu 还是任何流行的 Linux 发行版,通用应用都可以正常使用。这些应用与所有必需的库和依赖项打包在一个包中。我们所要做的就是在我们使用的任何 Linux 发行版上下载并运行它们。流行的通用应用格式有 AppImage、FlatpakSnap

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 vim

Chob 将在 AppImage、Flathub 和 Snapcraft 平台上搜索给定的应用(和相关应用)并显示结果。

使用 Chob 搜索 Linux 应用

只需要输入你想要应用前面的数字就可在默认浏览器中打开它的官方链接,并可在其中阅读应用的详细信息。

在浏览器中查看 Linux 应用的详细信息

有关更多详细信息,请查看下面的 Chob 官方 GitHub 页面。

资源:


via: https://www.ostechnix.com/search-linux-applications-on-appimage-flathub-and-snapcraft-platforms/

作者:sk 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,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 Stow

GNU 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 hello

hello 这个程序就会被移除了。你可以使用下面的命令确认它是否真的被移除了:

$ 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 stow

Stow 可以像安装程序一样轻松地帮你移除它。如果你想知道如何高效的管理很多从源代码中安装的程序,GNU Stow 就是一个使得这个任务更加轻松的一个选择,尝试一下,你一定不会失望的。

这就是所有的内容了,希望对你有所帮助。还有更多干活即将到来,可以期待一下的!

祝近祺!


via: https://www.ostechnix.com/an-easy-way-to-remove-programs-installed-from-source-in-linux/

作者:SK 选题:lujun9972 译者:dianbanjiu 校对:wxy

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