お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 個別エントリー・アーカイブ :

2007年6月 8日

FreeBSD で emacs を X11 無しでインストールする方法

FreeBSD において、 例えば emacs をports からインストールしようとすると デフォルトでは X11 関連のライブラリも同時にインストールされてしまう。 しかし、バーチャル・プライベート・サーバ等を間借りしているような場合は telnet(SSH)でログインして、キャラクターベースでしか emacs を使わない訳だから、 X11関連のライブラリは不要である。 そんな不要な X11関連の巨大なファイル群で 貴重なディスク・スペースが占領されてしまうのは非常にもったいない話だ。

そこで、emacsを X11無しでコンパイルする方法があるのかを調査してみた。 まず、/usr/ports/editors/emacs にある、Makefile を解析してみる。
# New ports collection makefile for:    GNU emacs
# Date created:         11 October 2001
# Whom:                 MANTANI Nobutaka <nobutaka@nobutaka.com>
#
# $FreeBSD: ports/editors/emacs/Makefile,v 1.73 2007/10/08 23:29:46 keramida Exp $
#

PORTNAME=       emacs
PORTVERSION=    ${EMACS_VER}
PORTREVISION=   2
CATEGORIES=     editors ipv6
MASTER_SITES=   ${MASTER_SITE_GNU}
MASTER_SITE_SUBDIR=     ${PORTNAME}

MAINTAINER=     keramida@ceid.upatras.gr
COMMENT=        GNU editing macros

.if !defined(WITHOUT_X11)
.if defined(WITHOUT_GTK)
LIB_DEPENDS=    Xaw3d.${XAWVER}:${PORTSDIR}/x11-toolkits/Xaw3d
.endif
LIB_DEPENDS+=   jpeg.9:${PORTSDIR}/graphics/jpeg \
                tiff.4:${PORTSDIR}/graphics/tiff \
                ungif.5:${PORTSDIR}/graphics/libungif \
                png.5:${PORTSDIR}/graphics/png
.endif

CONFLICTS=      emacs-19.* emacs-21.* \
                xemacs-[0-9]* xemacs-devel-[0-9]* \
                xemacs-mule-[0-9]* xemacs-devel-mule-[0-9]*

EMACS_VER=      22.1
GNU_CONFIGURE=  yes
USE_GMAKE=      yes

.if !defined(WITHOUT_X11)
.if !defined(WITHOUT_GTK)
USE_GNOME=      gtk20
.else
USE_XLIB=       yes
.endif
USE_XPM=        yes
.endif

CONFIGURE_TARGET=       ${MACHINE_ARCH}-freebsd
.if defined(WITHOUT_X11)
CONFIGURE_ARGS=         --with-x=no
.else
.if !defined(WITHOUT_GTK)
CONFIGURE_ARGS=         --with-gtk
.endif
.endif

.if defined(WITHOUT_XIM)
CONFIGURE_ARGS+=        --without-xim
.endif

MAN1=           ctags.1 emacs.1 emacsclient.1 etags.1
PLIST_SUB=      EMACS_VER=${EMACS_VER} EMACS_ARCH=${CONFIGURE_TARGET}

MAKE_ENV=       LC_ALL=C

INFO=           ada-mode autotype calc ccmode cl dired-x ebrowse ediff \
                efaq eintr elisp emacs-mime emacs erc eshell eudc \
                flymake forms gnus idlwave info message mh-e newsticker \
                org pcl-cvs pgg rcirc reftex sc ses sieve smtpmail speedbar \
                tramp url vip viper widget woman

LATEST_LINK=    emacs

.include <bsd.port.pre.mk>

.if ${ARCH} == "ia64"
BROKEN= Emacs 22.X does not currently build on ia64
.endif

pre-everything::
.if !defined(WITHOUT_X11) && !defined(WITHOUT_GTK)
        @${ECHO_MSG} "====>"
        @${ECHO_MSG} "====> To disable GTK+ interface support, define WITHOUT_X11 or WITHOUT_GTK"
        @${ECHO_MSG} "====>"
.endif
.if !defined(WITHOUT_X11) && !defined(WITHOUT_XIM)
        @${ECHO_MSG} "====>"
        @${ECHO_MSG} "====> To disable X11 Input Method support, define WITHOUT_XIM"
        @${ECHO_MSG} "====>"
.endif

post-patch:
        @${RM} -f ${WRKSRC}/info/*

.include <bsd.port.post.mk>
この中で、ports間の依存関係を記述しているのが 20行目の
LIB_DEPENDS=    Xaw3d.${XAWVER}:${PORTSDIR}/x11-toolkits/Xaw3d
という記述だ。 ここで、 Xaw3d など、X11関連が指定されている。 よくみると、その2行上に
.if !defined(WITHOUT_X11)
という記述がある。 これは、「もし、WITHOUT_X11が定義されていなければ」と読める。 つまり、「 LIB_DEPENDS= 」は 「 WITHOUT_X11 」が定義されていない場合に限り 評価される、と言うことだ。 逆に言うと、「もしWITHOUT_X11が定義されていれば、LIB_DEPENDS=... は無視する 」 ということになる。

その後、ググッたりして確認してみると、 先日のブログ「FreeBSD の /etc/make.conf」で ふれた /etc/make.conf に
WITHOUT_X11=yes
の1行を記述しておくと、 emacs の ports を make する際に、何も指定しなくても、 X11関連を省いた形でビルドしてくれることが判明した。

これについては、 「portsでX非依存で入れたい」 にも記述がある。 また、「WITHOUT_X11=yes」だけでなく、「WITHOUT_GUI=yes」や 「NO_X=true」などもあるようだ。 どこかに、これらの変数についてまとめてあるとうれしいのだが。

【参考リンク】

カテゴリー: FreeBSD     2007年6月 8日 22:03

トラックバック

このエントリーのトラックバックURL:
http://www.skymerica.com/blog/yotsumoto/mt/mt-tb.cgi/824


コメント

コメントしてください




保存しますか?


 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.