在 ubuntu 上最小化安装 emacs24

在 ubuntu 上最小化安装 emacs24

我需要一个最小的 emacs 24 安装,以便在虚拟盒中分发。当我尝试从 synaptics 安装 emacs-snapshot 时,我安装了大量东西,如 ghostscript 和 imagemagic 以及各种库。我需要它们吗?有办法解决这个问题吗?

答案1

我需要一个最小的 emacs 24 安装,以便在虚拟盒中进行分​​发。当我尝试安装 emacs 时...

我知道这种感觉...当我安装emacs-nox它可能超过 100 MB。这对于某些资源受限的设备来说是不可接受的,比如比格犬板或者香蕉专业版只有几百MB的可用存储空间。

您可以使用以下命令获取并解压最新的 emacs(为了配方完整性):

wget http://mirrors.syringanetworks.net/gnu/emacs/emacs-24.5.tar.gz
tar xzf emacs-24.5.tar.gz 
cd emacs-24.5/

以下是我使用的配置emacs-24.5。它生成了 25.4 MB 的二进制文件:

./configure --with-xml2 --with-zlib --without-x --without-sound --without-xpm \
  --without-jpeg --without-tiff --without-gif --without-png --without-rsvg \
  --without-imagemagick --without-xft --without-libotf --without-m17n-flt \
  --without-xaw3d --without-toolkit-scroll-bars --without-gpm --without-dbus \
  --without-gconf --without-gsettings --without-makeinfo \
  --without-compress-install

和:

$ ls -l /usr/local/bin/
total 26648
...
lrwxrwxrwx 1 root staff        4 Jan  8  2015 bin2fex -> fexc
-rwxr-xr-x 1 root staff   580105 Jan 19 23:10 ctags
-rwxr-xr-x 1 root staff   251350 Jan 19 23:10 ebrowse
lrwxrwxrwx 1 root staff       10 Jan 19 23:10 emacs -> emacs-24.5
-rwxr-xr-t 1 root staff 25453742 Jan 19 23:10 emacs-24.5
-rwxr-xr-x 1 root staff   260328 Jan 19 23:10 emacsclient
-rwxr-xr-x 1 root staff   578307 Jan 19 23:10 etags
lrwxrwxrwx 1 root staff        4 Jan  8  2015 fex2bin -> fexc
-rwxr-xr-x 1 root staff    49726 Jan  8  2015 fexc
...

从源代码构建确实需要编译器和链接器之类的东西,但无论如何我都会通过build-essential包。唯一缺少的依赖项是ncurses包裹 (ncurses-dev)。

即使删除了所有额外的 GUI 内容,你仍然可以获得烦人的屏幕带有超链接。但二进制文件只有 1/4 大小,因此我称之为胜利。


$ ./configure ...

  Where should the build process find the source code?    .
  What compiler should emacs be built with?               gcc -std=gnu99 -g3 -O2
  Should Emacs use the GNU version of malloc?             yes
      (Using Doug Lea's new malloc from the GNU C Library.)
  Should Emacs use a relocating allocator for buffers?    no
  Should Emacs use mmap(2) for buffer allocation?         no
  What window system should Emacs use?                    none
  What toolkit should Emacs use?                          none
  Where do we find X Windows header files?                NONE
  Where do we find X Windows libraries?                   NONE
  Does Emacs use -lXaw3d?                                 no
  Does Emacs use -lXpm?                                   no
  Does Emacs use -ljpeg?                                  no
  Does Emacs use -ltiff?                                  no
  Does Emacs use a gif library?                           no 
  Does Emacs use a png library?                           no 
  Does Emacs use -lrsvg-2?                                no
  Does Emacs use imagemagick?                             no
  Does Emacs support sound?                               no
  Does Emacs use -lgpm?                                   no
  Does Emacs use -ldbus?                                  no
  Does Emacs use -lgconf?                                 no
  Does Emacs use GSettings?                               no
  Does Emacs use a file notification library?             yes -lglibc (inotify)
  Does Emacs use access control lists?                    no
  Does Emacs use -lselinux?                               no
  Does Emacs use -lgnutls?                                no
  Does Emacs use -lxml2?                                  no
  Does Emacs use -lfreetype?                              no
  Does Emacs use -lm17n-flt?                              no
  Does Emacs use -lotf?                                   no
  Does Emacs use -lxft?                                   no
  Does Emacs directly use zlib?                           no
  Does Emacs use toolkit scroll bars?                     no

答案2

如果您需要它们所体现的功能,那么您就需要它们;例如,用于 Postscript 处理的 ghostscript 库用于 Emacs 的打印系统,而 imagemagick 库则大量涉及 Emacs 的图像支持。

也就是说,如果您不需要 Emacs 来生成 Postscript 或显示图像等,那么解决这些库需求的最佳方法是获取并构建 Emacs 源,仅启用您实际需要的功能,以尽量减少 Emacs 链接的外部库的数量。

您可以从以下位置获取 Emacs 源代码GNU 项目网站。下载并解压后,构建将遵循通常的configure <options> && make && make install惯例。

configure --help以下是Emacs 24.3 的配置选项的完整列表(的输出):

`configure' configures emacs 24.3 to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/emacs]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]

Program names:
  --program-prefix=PREFIX            prepend PREFIX to installed program names
  --program-suffix=SUFFIX            append SUFFIX to installed program names
  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names

X features:
  --x-includes=DIR    X include files are in DIR
  --x-libraries=DIR   X library files are in DIR

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --disable-ns-self-contained
                          disable self contained build under NeXTstep
  --enable-locallisppath=PATH
                          directories Emacs should search for lisp files
                          specific to this site
  --enable-checking[=LIST]
                          enable expensive run-time checks. With LIST, enable
                          only specific categories of checks. Categories are:
                          all,yes,no. Flags are: stringbytes, stringoverrun,
                          stringfreelist, xmallocoverrun, conslist, glyphs
  --enable-check-lisp-object-type
                          enable compile time checks for the Lisp_Object data
                          type. This is useful for development for catching
                          certain types of bugs.
  --enable-profiling      build emacs with low-level, gprof profiling support.
                          Mainly useful for debugging Emacs itself. May not
                          work on all platforms. Stops profiler.el working.
  --enable-autodepend     automatically generate dependencies to .h-files.
                          Requires GNU Make and Gcc. Enabled if GNU Make and
                          Gcc is found
  --disable-dependency-tracking  speeds up one-time build
  --enable-dependency-tracking   do not reject slow dependency extractors
  --disable-largefile     omit support for large files
  --enable-gcc-warnings   turn on lots of GCC warnings/errors. This is
                          intended for developers, and may generate false
                          alarms when used with older or non-GNU development
                          tools.
  --enable-link-time-optimization
                          build emacs with link-time optimization. This is
                          supported only for GCC since 4.5.0.

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --without-all           omit almost all features and build small executable
                          with minimal dependencies
  --without-pop           don't support POP mail retrieval with movemail
  --with-kerberos         support Kerberos-authenticated POP
  --with-kerberos5        support Kerberos version 5 authenticated POP
  --with-hesiod           support Hesiod to get the POP server host
  --with-mmdf             support MMDF mailboxes
  --with-mail-unlink      unlink, rather than empty, mail spool after reading
  --with-mailhost=HOSTNAME
                          string giving default POP mail host
  --without-sound         don't compile with sound support
  --with-x-toolkit=KIT    use an X toolkit (KIT one of: yes or gtk, gtk2,
                          gtk3, lucid or athena, motif, no)
  --with-wide-int         prefer wide Emacs integers (typically 62-bit)
  --without-xpm           don't compile with XPM image support
  --without-jpeg          don't compile with JPEG image support
  --without-tiff          don't compile with TIFF image support
  --without-gif           don't compile with GIF image support
  --without-png           don't compile with PNG image support
  --without-rsvg          don't compile with SVG image support
  --without-xml2          don't compile with XML parsing support
  --without-imagemagick   don't compile with ImageMagick image support
  --without-xft           don't use XFT for anti aliased fonts
  --without-libotf        don't use libotf for OpenType font support
  --without-m17n-flt      don't use m17n-flt for text shaping
  --without-toolkit-scroll-bars
                          don't use Motif or Xaw3d scroll bars
  --without-xaw3d         don't use Xaw3d
  --without-xim           don't use X11 XIM
  --with-ns               use NeXTstep (Cocoa or GNUstep) windowing system
  --with-w32              use native MS Windows GUI
  --without-gpm           don't use -lgpm for mouse support on a GNU/Linux
                          console
  --without-dbus          don't compile with D-Bus support
  --without-gconf         don't compile with GConf support
  --without-gsettings     don't compile with GSettings support
  --without-selinux       don't compile with SELinux support
  --without-gnutls        don't use -lgnutls for SSL/TLS support
  --without-makeinfo      don't require makeinfo for building manuals
  --without-compress-info don't compress the installed Info pages
  --with-pkg-config-prog=PATH
                          path to pkg-config for finding GTK and librsvg
  --with-crt-dir=DIR      directory containing crtn.o etc. The default is
                          /usr/lib, or /usr/lib64 on some platforms.
  --with-gameuser=USER    user for shared game score files
  --with-gnustep-conf=PATH
                          path to GNUstep.conf; default $GNUSTEP_CONFIG_FILE,
                          or /etc/GNUstep/GNUstep.conf
  --with-x                use the X Window System

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CPP         C preprocessor
  XMKMF       Path to xmkmf, Makefile generator for X Window System

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to the package provider.

名称以“enable”、“disable”、“with”和“without”开头的选项控制在生成的二进制文件中内置哪些功能,这应该是您主要感兴趣的。

我最近构建了我自己的 Emacs 24.3,我可以证明构建过程非常简单;如果您熟悉从源代码构建 Linux 软件,那么除了可能需要安装一个或两个库之外,您应该不会遇到任何困难,如果您不熟悉该过程,那么这是一个开始学习它的好地方。

相关内容