Emacs 24.3出来好久了,但是在Debian 7里还是Emacs 23的版本.
以下是安装步骤(9步):
sudo aptitude install git-core libxaw7-dev libxpm-dev libpng12-dev libtiff5-dev libgif-dev libjpeg8-dev libgtk2.0-dev libncurses5-dev autoconf automake texinfo sudo apt-get build-dep emacs git clone git://git.savannah.gnu.org/emacs.git
cd emacs/ git checkout emacs-24.3 git checkout -b custom_branch ./autogen.sh ./configure --prefix=/opt/emacs24 make --jobs=2 sudo make install
按这个顺序安装就好了,大概半个小时到一个小时的样子。
安装好后把emacs添加到PATH里,打开~/.bashrc 文件,在最后添加:
export PATH=$PATH:/opt/emacs24/bin
保存后:
source .bashrc
这样在终端里就可以直接输入 emacs 就可以启动了。
经常按alt+F2 打开应用程序窗口,但是这里面输入emacs却不行,办法是把emacs软链接到 /usr/bin 目录里:
cd /usr/bin ln -s /opt/emacs24/bin/emacs emacs
打完收工!
2010.10.03 更新:
以上通过git的方式今天用起来好慢!只好换一种方式。
一、安装编译所需包 2014.10.03 10:43~10:45
sudo apt-get install libxaw7-dev libxpm-dev libpng12-dev libtiff5-dev libgif-dev libjpeg8-dev libgtk2.0-dev libncurses5-dev autoconf automake texinfo
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会安装下列额外的软件包: autopoint autotools-dev debhelper gettext html2text intltool-debian libatk1.0-dev libcairo-script-interpreter2 libcairo2-dev libelf1 libexpat1-dev libfontconfig1-dev libfreetype6-dev libgdk-pixbuf2.0-dev libgettextpo0 libglib2.0-bin libglib2.0-dev libice-dev libjbig-dev liblzma-dev libmail-sendmail-perl libpango1.0-dev libpcre3-dev libpcrecpp0 libpixman-1-dev libpthread-stubs0 libpthread-stubs0-dev libsm-dev libsys-hostname-long-perl libtiff5 libtiffxx5 libtinfo-dev libx11-dev libx11-doc libxau-dev libxcb-render0-dev libxcb-shm0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2-utils libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxt-dev m4 pkg-config po-debconf x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev zlib1g-dev 建议安装的软件包: autoconf2.13 autoconf-archive gnu-standards autoconf-doc libtool dh-make gettext-doc libcairo2-doc libglib2.0-doc libgtk2.0-doc libice-doc liblzma-doc ncurses-doc libpango1.0-doc imagemagick libsm-doc libxaw-doc libxcb-doc libxext-doc libxt-doc libmail-box-perl texlive-base texlive-latex-base texlive-generic-recommended texinfo-doc-nonfree 下列【新】软件包将被安装: autoconf automake autopoint autotools-dev debhelper gettext html2text intltool-debian libatk1.0-dev libcairo-script-interpreter2 libcairo2-dev libelf1 libexpat1-dev libfontconfig1-dev libfreetype6-dev libgdk-pixbuf2.0-dev libgettextpo0 libgif-dev libglib2.0-bin libglib2.0-dev libgtk2.0-dev libice-dev libjbig-dev libjpeg8-dev liblzma-dev libmail-sendmail-perl libncurses5-dev libpango1.0-dev libpcre3-dev libpcrecpp0 libpixman-1-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libsm-dev libsys-hostname-long-perl libtiff5 libtiff5-dev libtiffxx5 libtinfo-dev libx11-dev libx11-doc libxau-dev libxaw7-dev libxcb-render0-dev libxcb-shm0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2-utils libxmu-dev libxmu-headers libxpm-dev libxrandr-dev libxrender-dev libxt-dev m4 pkg-config po-debconf texinfo x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev zlib1g-dev 升级了 0 个软件包,新安装了 80 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。 需要下载 28.1 MB 的软件包。 解压缩后会消耗掉 91.4 MB 的额外空间。 您希望继续执行吗?[Y/n]
Yes后开始下载安装这些包,结束时有此提示:
在处理时有错误发生: /var/cache/apt/archives/libfontconfig1-dev_2.9.0-7.1_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
google了下,好像是下载文件不完整造成的,删除该包,重新下载安装:
sudo rm /var/cache/apt/archives/libfontconfig1-dev_2.9.0-7.1_amd64.deb sudo apt-get install libfontconfig1-dev
二、下载emacs压缩包
从这里下载:http://mirror.bjtu.edu.cn/gnu/emacs/
文件叫 emacs-24.3.tar.gz 有50M,下载在Download目录里。
$ cd ~/Download $ tar zxvf emacs-24.3.tar.gz # 解压后有170M。
三、编译前配置 11:13~11:14
在Download目录里新建一个目录放置编译时生成的文件,以免所有的文件都在解压后的 emacs-24.3 目录里。
$ mkdir compileemacs # 放置编译后生成的文件 $ cd compileemacs $ ../emacs-24.3/configure --prefix=/opt/emacs
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking whether gcc and cc understand -c and -o together... yes checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for Minix Amsterdam compiler... no checking for ar... ar checking for ranlib... ranlib checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking minix/config.h usability... no checking minix/config.h presence... no checking for minix/config.h... no checking whether it is safe to define __EXTENSIONS__... yes checking for special C compiler options needed for large files... no checking for _FILE_OFFSET_BITS value needed for large files... no checking for gcc option to accept ISO C99... -std=gnu99 checking for gcc -std=gnu99 option to accept ISO Standard C... (cached) -std=gnu99 checking whether gcc -std=gnu99 accepts -g3 -O2... yes checking whether ln -s works... yes checking for install-info... /usr/bin/install-info checking for gzip... /bin/gzip checking for paxctl... no checking for makeinfo... /usr/bin/makeinfo checking for -znocombreloc... yes checking for pkg-config... /usr/bin/pkg-config checking machine/soundcard.h usability... no checking machine/soundcard.h presence... no checking for machine/soundcard.h... no checking sys/soundcard.h usability... yes checking sys/soundcard.h presence... yes checking for sys/soundcard.h... yes checking soundcard.h usability... no checking soundcard.h presence... no checking for soundcard.h... no checking for _oss_ioctl in -lossaudio... no checking for alsa >= 1.0.0... no checking for linux/version.h... yes checking for sys/systeminfo.h... no checking for stdio_ext.h... yes checking for fcntl.h... yes checking for coff.h... no checking for pty.h... yes checking for sys/vlimit.h... yes checking for sys/resource.h... yes checking for sys/utsname.h... yes checking for pwd.h... yes checking for utmp.h... yes checking for dirent.h... yes checking for util.h... no checking for sys/socket.h... yes checking for stdlib.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/param.h... yes checking for pthread.h... yes checking for malloc/malloc.h... no checking for maillock.h... no checking for sys/un.h... yes checking for execinfo.h... yes checking for getopt.h... yes checking for sys/time.h... yes checking for wchar.h... yes checking for stdint.h... (cached) yes checking for inttypes.h... (cached) yes checking for sys/select.h... yes checking for sys/stat.h... (cached) yes checking for utime.h... yes checking if personality LINUX32 can be set... yes checking for term.h... yes checking whether time.h and sys/time.h may both be included... yes checking whether sys_siglist is declared... yes checking for sys/wait.h that is POSIX.1 compatible... yes checking for speed_t... yes checking for net/if.h... yes checking for ifaddrs.h... yes checking for net/if_dl.h... no checking for struct ifreq.ifr_flags... yes checking for struct ifreq.ifr_hwaddr... yes checking for struct ifreq.ifr_netmask... yes checking for struct ifreq.ifr_broadaddr... yes checking for struct ifreq.ifr_addr... yes checking for struct ifreq.ifr_addr.sa_len... no checking whether we are using GNU Make... yes checking whether gcc understands -MMD -MF... yes checking for long file names... yes checking for X... libraries , headers checking whether malloc is Doug Lea style... yes checking for getpagesize... yes checking for working mmap... yes checking for dnet_ntoa in -ldnet... no checking for main in -lXbsd... no checking for pthread_self in -lpthread... yes checking for cma_open in -lpthreads... no checking whether X on GNU/Linux needs -b to link... no checking for Xkb... yes checking for XrmSetDatabase... yes checking for XScreenResourceString... yes checking for XScreenNumberOfScreen... yes checking X11 version 6... 6 or newer checking for librsvg-2.0 >= 2.11.0... no checking for Wand >= 6.2.8... no checking for gtk+-3.0 >= 3.0 glib-2.0 >= 2.28... no checking for gtk+-2.0 >= 2.10 glib-2.0 >= 2.10... yes CFLAGS='-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 ' LIBS='-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 ' checking for gtk_main... yes checking whether GTK_TYPE_FILE_SELECTION is declared... yes checking for gtk_file_selection_new... yes checking for gtk_widget_get_window... yes checking for gtk_widget_set_has_window... yes checking for gtk_dialog_get_action_area... yes checking for gtk_widget_get_sensitive... yes checking for gtk_widget_get_mapped... yes checking for gtk_adjustment_get_page_size... yes checking for gtk_orientable_set_orientation... yes checking for gtk_window_set_has_resize_grip... no checking for dbus-1 >= 1.0... no checking for gio-2.0 >= 2.26... yes CFLAGS='-pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include ' LIBS='-lgio-2.0 -lgobject-2.0 -lglib-2.0 ' checking for gconf-2.0 >= 2.13... no checking for gobject-2.0 >= 2.0... yes CFLAGS='-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include ' LIBS='-lgobject-2.0 -lglib-2.0 ' checking for g_type_init... yes checking for lgetfilecon in -lselinux... no checking for gnutls >= 2.6.6... no checking for gnutls_certificate_set_verify_function... no checking for fontconfig >= 2.2.0... yes CFLAGS=' ' LIBS='-lfontconfig ' checking for xft >= 0.13.0... yes CFLAGS='-I/usr/include/freetype2 ' LIBS='-lXft ' checking for XRenderQueryExtension in -lXrender... yes checking X11/Xft/Xft.h usability... yes checking X11/Xft/Xft.h presence... yes checking for X11/Xft/Xft.h... yes checking for XftFontOpen in -lXft... yes checking for freetype2... yes CFLAGS='-I/usr/include/freetype2 ' LIBS='-lfreetype ' checking for libotf... no checking X11/xpm.h usability... yes checking X11/xpm.h presence... yes checking for X11/xpm.h... yes checking for XpmReadFileToPixmap in -lXpm... yes checking for XpmReturnAllocPixels preprocessor define... yes checking jerror.h usability... yes checking jerror.h presence... yes checking for jerror.h... yes checking for jpeg_destroy_compress in -ljpeg... yes checking png.h usability... yes checking png.h presence... yes checking for png.h... yes checking for png_get_channels in -lpng... yes checking whether png_longjmp is declared... no checking tiffio.h usability... yes checking tiffio.h presence... yes checking for tiffio.h... yes checking for TIFFGetVersion in -ltiff... yes checking gif_lib.h usability... yes checking gif_lib.h presence... yes checking for gif_lib.h... yes checking for EGifPutExtensionLast in -lgif... yes checking gpm.h usability... no checking gpm.h presence... no checking for gpm.h... no checking X11/SM/SMlib.h usability... yes checking X11/SM/SMlib.h presence... yes checking for X11/SM/SMlib.h... yes checking for SmcOpenConnection in -lSM... yes checking for libxml-2.0 > 2.6.17... no checking whether netdb declares h_errno... yes checking for sqrt in -lm... yes checking for maillock in -lmail... no checking for maillock in -llockfile... no checking for liblockfile.so... no checking for gethostname... yes checking for closedir... yes checking for getrusage... yes checking for get_current_dir_name... yes checking for lrand48... yes checking for setsid... yes checking for fpathconf... yes checking for select... yes checking for euidaccess... yes checking for getpagesize... (cached) yes checking for setlocale... yes checking for utimes... yes checking for getrlimit... yes checking for setrlimit... yes checking for setpgid... yes checking for getcwd... yes checking for shutdown... yes checking for getaddrinfo... yes checking for __fpending... yes checking for strsignal... yes checking for setitimer... yes checking for sendto... yes checking for recvfrom... yes checking for getsockname... yes checking for getpeername... yes checking for getifaddrs... yes checking for freeifaddrs... yes checking for gai_strerror... yes checking for mkstemp... yes checking for getline... yes checking for getdelim... yes checking for fsync... yes checking for sync... yes checking for difftime... yes checking for posix_memalign... yes checking for getpwent... yes checking for endpwent... yes checking for getgrent... yes checking for endgrent... yes checking for touchlock... no checking for cfmakeraw... yes checking for cfsetspeed... yes checking for copysign... yes checking for __executable_start... yes checking for getwd... yes checking for random... yes checking for rint... yes checking for __builtin_unwind_init... yes checking for _LARGEFILE_SOURCE value needed for large files... no checking whether getpgrp requires zero arguments... yes checking for grantpt... yes checking for getpt... yes checking for posix_openpt... yes checking for library containing tputs... -ltinfo checking for tzset... yes checking for readlinkat... yes checking for gettimeofday... yes checking for nanotime... no checking for lstat... yes checking for alarm... yes checking for pselect... yes checking for pthread_sigmask... yes checking for readlink... yes checking for strtoimax... yes checking for strtoumax... yes checking for symlink... yes checking for localtime_r... yes checking for futimes... yes checking for futimesat... yes checking for futimens... yes checking for utimensat... yes checking for lutimes... yes checking whether localtime caches TZ... no checking for socket... yes checking netinet/in.h usability... yes checking netinet/in.h presence... yes checking for netinet/in.h... yes checking arpa/inet.h usability... yes checking arpa/inet.h presence... yes checking for arpa/inet.h... yes checking whether system supports dynamic ptys... yes checking for pid_t... yes checking vfork.h usability... no checking vfork.h presence... no checking for vfork.h... no checking for fork... yes checking for vfork... yes checking for working fork... yes checking for working vfork... (cached) yes checking for snprintf... yes checking for nl_langinfo and CODESET... yes checking for mbstate_t... yes checking for C restricted array declarations... yes checking for signals via characters... yes checking whether we are using the GNU C library... yes checking for style of pending output formalism... new checking for _setjmp... yes checking for usable FIONREAD... yes checking for usable SIGIO... yes checking for working alloca.h... yes checking for alloca... yes checking whether byte ordering is bigendian... no checking for inline... inline checking whether strtold conforms to C99... yes checking if environ is properly declared... yes checking for st_dm_mode in struct stat... no checking whether strmode is declared... no checking whether the preprocessor supports include_next... yes checking whether system header files limit the line length... no checking for getopt.h... (cached) yes checking for getopt_long_only... yes checking whether getopt is POSIX compatible... yes checking for working GNU getopt function... no checking whether getenv is declared... yes checking for C/C++ restrict keyword... __restrict checking for struct timeval... yes checking for wide-enough struct timeval.tv_sec member... yes checking for unsigned long long int... yes checking for long long int... yes checking whether stdint.h conforms to C99... yes checking whether lstat correctly handles trailing slash... yes checking whether <sys/select.h> is self-contained... yes checking for sigset_t... yes checking for stdbool.h that conforms to C99... yes checking for _Bool... yes checking for wchar_t... yes checking whether struct tm is in sys/time.h or time.h... time.h checking for struct tm.tm_zone... yes checking for struct tm.tm_gmtoff... yes checking whether strtoimax is declared... yes checking whether strtoumax is declared... yes checking whether stat file-mode macros are broken... no checking for mode_t... yes checking for struct timespec in <time.h>... yes checking whether the utimes function works... yes checking for struct utimbuf... yes checking for alloca as a compiler built-in... yes checking for library containing clock_gettime... -lrt checking for clock_gettime... yes checking for clock_settime... yes checking whether dup2 works... yes checking for library containing backtrace_symbols_fd... none required checking for getloadavg... yes checking sys/loadavg.h usability... no checking sys/loadavg.h presence... no checking for sys/loadavg.h... no checking whether getloadavg is declared... yes checking whether gettimeofday clobbers localtime buffer... no checking for gettimeofday with POSIX signature... almost checking for working mktime... yes checking whether signature of pselect conforms to POSIX... yes checking whether pselect detects invalid fds... yes checking whether pthread_sigmask works without -lpthread... yes checking whether pthread_sigmask returns error numbers... yes checking whether pthread_sigmask unblocks signals correctly... guessing yes checking whether readlink signature is correct... yes checking whether readlink handles trailing slash correctly... yes checking for volatile sig_atomic_t... yes checking for sighandler_t... yes checking for socklen_t... yes checking for ssize_t... yes checking for struct stat.st_atim.tv_nsec... yes checking whether struct stat.st_atim is of type struct timespec... yes checking for struct stat.st_birthtimespec.tv_nsec... no checking for struct stat.st_birthtimensec... no checking for struct stat.st_birthtim.tv_nsec... no checking for working stdalign.h... no checking for va_copy... yes checking whether NULL can be used in arbitrary expressions... yes checking whether strtoimax works... yes checking whether symlink handles trailing slash correctly... yes checking whether <sys/select.h> is self-contained... (cached) yes checking for nlink_t... yes checking whether localtime_r is declared... yes checking whether localtime_r is compatible with its POSIX signature... yes checking for library containing timer_settime... -lrt checking for timer_settime... yes Configured for `x86_64-unknown-linux-gnu'. Where should the build process find the source code? /home/z/Download/emacs-24.3 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? x11 What toolkit should Emacs use? GTK2 Where do we find X Windows header files? Standard dirs Where do we find X Windows libraries? Standard dirs Does Emacs use -lXaw3d? no Does Emacs use -lXpm? yes Does Emacs use -ljpeg? yes Does Emacs use -ltiff? yes Does Emacs use a gif library? yes -lgif Does Emacs use -lpng? yes Does Emacs use -lrsvg-2? no Does Emacs use imagemagick? no Does Emacs use -lgpm? no Does Emacs use -ldbus? no Does Emacs use -lgconf? no Does Emacs use GSettings? yes Does Emacs use -lselinux? no Does Emacs use -lgnutls? no Does Emacs use -lxml2? no Does Emacs use -lfreetype? yes Does Emacs use -lm17n-flt? no Does Emacs use -lotf? no Does Emacs use -lxft? yes Does Emacs use toolkit scroll bars? yes configure: creating ./config.status config.status: creating Makefile config.status: creating lib/Makefile config.status: creating lib-src/Makefile config.status: creating oldXMenu/Makefile config.status: creating doc/emacs/Makefile config.status: creating doc/misc/Makefile config.status: creating doc/lispintro/Makefile config.status: creating doc/lispref/Makefile config.status: creating src/Makefile config.status: creating lwlib/Makefile config.status: creating lisp/Makefile config.status: creating leim/Makefile config.status: creating nextstep/Makefile config.status: creating admin/unidata/Makefile config.status: creating src/config.h config.status: executing depfiles commands config.status: executing mkdirs commands config.status: executing epaths commands creating src/epaths.h config.status: executing gdbinit commands creating src/.gdbinit
四、编译 11:21~11:29
$ make
五、安装 11:47~11:48
sudo make install
安装成功后添加到环境变量中:
export PATH=$PATH:/opt/emacs24/bin
软链接到 /usr/bin 目录里:
cd /usr/bin ln -s /opt/emacs24/bin/emacs emacs ls -l emacs lrwxrwxrwx 1 root root 22 10月 3 11:54 emacs -> /opt/emacs24/bin/emacs
--End--