使用选项编译 Nano 编辑器

使用选项编译 Nano 编辑器

我正在尝试编译我最喜欢的nano带有一些选项的命令行文本编辑器。

实际上,大多数选项以启用所有功能。


首先,我转到下载目录并下载 tarball:

cd Downloads

wget --continue https://www.nano-editor.org/dist/v2.8/nano-2.8.0.tar.xz

然后,我验证其完整性:

wget --continue https://www.nano-editor.org/dist/v2.8/nano-2.8.0.tar.xz.asc

gpg --verify nano-2.8.0.tar.xz.asc

应该说:

gpg: Good signature from "Benno Schulenberg <[email protected]>"

我尝试按如下方式运行配置脚本:

./configure --enable-nanorc --enable-color --enable-extra --enable-multibuffer --enable-utf8 --enable-libmagic --enable-speller --disable-wrapping-as-root

编译后,我得到了这个;直接在编译目录下执行:

Compiled options: --disable-libmagic ...

我强调:

--disable-libmagic

因为我专门配置了它:

--enable-libmagic    

没有成功后:

  1. 我删除该文件夹以重新开始该过程:

    rm -rf nano-2.8.0/
    
  2. 我再次提取存档:

    tar -xJf nano-2.8.0.tar.xz
    
  3. 我尝试过不同的选项组合,但没有运气。


系统中是否缺少任何内容,或者我只是做错了什么?


编译后直接执行:

user@computer ~/Downloads/nano-2.8.0/src $ ./nano --version
GNU nano, version 2.8.0
(C) 1999..2016 Free Software Foundation, Inc.
(C) 2014..2017 the contributors to nano
Email: [email protected] Web: https://nano-editor.org/
Compiled options: --disable-libmagic --disable-wrapping-as-root --enable-utf8

答案1

Nano 不会存储./configure命令行上提供的编译选项,而是根据检测到的功能重建它们请求的目标(“微小”Nano 或普通 Nano)。对于tiny Nano,它会报告启用的选项,因为它们会添加到默认值中;对于普通 Nano,它会报告禁用的选项,因为它们从默认值中删除(在大多数情况下)。

就您而言,您正在构建普通的 Nano,因此对于大多数选项它仅报告它们是否被禁用;例外情况是debugutf8slang。所有--enable选项都是普通 Nano 的默认选项,因此它不会在编译选项中报告它们;无论有没有选项,你都会得到相同的结果./configure。你最终会得到这样的结果,--disable-magic因为你没有开发文件libmagic(请参阅托马斯·迪基的回答),因为--enable-utf8您确实具有 UTF-8 支持的必要功能(并且默认情况下启用)。

答案2

您需要 libmagic 的开发包。在我的 Debian 系统上是libmagic 开发例如。

如果您没有安装开发库,配置脚本会告诉您这一点。这是没有库时显示的内容:

checking whether LINES and COLS can be redefined... yes
checking magic.h usability... no
checking magic.h presence... no
checking for magic.h... no
checking for magic_open in -lmagic... no

安装包后:

checking whether LINES and COLS can be redefined... yes
checking magic.h usability... yes
checking magic.h presence... yes
checking for magic.h... yes
checking for magic_open in -lmagic... yes

您正在检查的功能是 中的定义config.h,即HAVE_LIBMAGIC(尽管您还需要头文件,如图所示):

/* Define to 1 if you have the `magic' library (-lmagic). */
#define HAVE_LIBMAGIC 1

/* Define to 1 if you have the `z' library (-lz). */
#define HAVE_LIBZ 1

/* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1

/* Define to 1 if you have the <magic.h> header file. */
#define HAVE_MAGIC_H 1

答案3

根据错误报告的回复:

默认情况下启用所有选项(调试除外),因此所有 --enable-nanorc 等都是多余的。正如 Thomas 在 Stackexhange 上所解释的那样,如果你想要 libmagic 支持,你需要一些 -dev 包(但我建议不要使用它 - 它带来的很少,并且在启动过程中会造成严重的减慢)。

你们俩都是对的。谢谢托马斯斯蒂芬

只有一件事还缺失:nano不将我的/etc/nanorc文件读取为报道

根据开发人员的说法,可以执行以下操作:确实如此

sudo ln -nsf /etc/nanorc /usr/local/etc/

相关内容