Ubuntu 14.04ではapt-get installで入れられるemacs24は24.3であり,ちょっと古い.
24.5のppaも現時点では無いようなので,自前ビルドしてみました.
せっかくなのでdebパッケージをビルドして,管理が楽になるようにします.
いくらか詰まったところがあったので記事にしてみました.
※ debパッケージのビルドは初心者なので,もっといい手順があったら教えてください.
ソースのダウンロード
Wily(15.10)では24.5になっているので,そのソースをダウンロードします.
emacsen-commonというパッケージも新しくする必要があるのでダウンロードします.
wget https://launchpad.net/ubuntu/+archive/primary/+files/emacs24_24.5%2B1.orig.tar.bz2
wget https://launchpad.net/ubuntu/+archive/primary/+files/emacs24_24.5%2B1-1ubuntu2.debian.tar.xz
wget https://launchpad.net/ubuntu/+archive/primary/+files/emacsen-common_2.0.8.tar.xz
解凍
それぞれ解凍します.
tar xf emacsen-common_2.0.8.tar.xz
tar xf emacs24_24.5+1.orig.tar.bz2
mv emacs24-24.5+1.orig emacs24-24.5+1
cd emacs24-24.5+1
tar xf ../emacs24_24.5+1-1ubuntu4.debian.tar.xz
cd ..
パッチ当て
私の環境ではビルドに必要なlibgnults28-devを入れようとすると他のパッケージと競合したので,条件を緩和しました.
また,debian/patch-to-newというスクリプトに手を加える必要がありました(参考 http://git.willhughes.name/emacs/blob/master/debian/patch-to-news).
以下,シェル上で実行するとパッチが当たります.
patch -p0 << "EOS"
diff -ur emacs24-24.5+1_org/debian/control emacs24-24.5+1/debian/control
--- emacs24-24.5+1_org/debian/control 2015-10-29 23:00:59.000000000 +0900
+++ emacs24-24.5+1/debian/control 2015-12-28 08:45:35.874903978 +0900
@@ -9,7 +9,7 @@
libgpm-dev [linux-any], libdbus-1-dev,
autoconf, automake, autotools-dev, dpkg-dev (>> 1.10.0), quilt (>= 0.42),
debhelper (>= 9), libxaw7-dev, sharutils, imagemagick, libgtk-3-dev,
- libgnutls28-dev, libxml2-dev, libselinux1-dev [linux-any], libmagick++-dev,
+ libgnutls-dev, libxml2-dev, libselinux1-dev [linux-any], libmagick++-dev,
libgconf2-dev, libasound2-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64],
libacl1-dev,
zlib1g-dev
diff -ur emacs24-24.5+1_org/debian/control.in emacs24-24.5+1/debian/control.in
--- emacs24-24.5+1_org/debian/control.in 2015-09-18 02:58:21.000000000 +0900
+++ emacs24-24.5+1/debian/control.in 2015-12-28 08:46:00.182903255 +0900
@@ -9,7 +9,7 @@
libgpm-dev [linux-any], libdbus-1-dev,
autoconf, automake, autotools-dev, dpkg-dev (>> 1.10.0), quilt (>= 0.42),
debhelper (>= 9), libxaw7-dev, sharutils, imagemagick, libgtk-3-dev,
- libgnutls28-dev, libxml2-dev, libselinux1-dev [linux-any], libmagick++-dev,
+ libgnutls-dev, libxml2-dev, libselinux1-dev [linux-any], libmagick++-dev,
libgconf2-dev, libasound2-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64],
libacl1-dev,
zlib1g-dev
diff -ur emacs24-24.5+1_org/debian/patch-to-news emacs24-24.5+1/debian/patch-to-news
--- emacs24-24.5+1_org/debian/patch-to-news 2015-09-18 02:58:21.000000000 +0900
+++ emacs24-24.5+1/debian/patch-to-news 2015-12-28 08:45:25.778904278 +0900
@@ -4,6 +4,12 @@
patch="$1"
+if [ ! -f "$patch" -a -f "patches/$patch" ]; then
+ patch="patches/$patch"
+elif [ ! -f "$patch" -a -f "debian/patches/$patch" ]; then
+ patch="debian/patches/$patch"
+fi
+
sed '
# delete everything after the first line starting with "--- " (the diff)
/^--- [^ ]/,$d' < "$patch" \
EOS
ビルドに必要なパッケージのインストール
ビルドに必要なパッケージをインストールします.
もし足りなければビルドの際にdebuildが教えてくれます.
sudo apt-get install build-essential \
devscripts \
libacl1-dev \
libcurl4-gnutls-dev \
libgconf2-dev \
libghc-gconf-dev \
libgif-dev \
libgnutls-dev \
libgpm-dev \
libjpeg-dev \
liblockfile-dev \
libm17n-dev \
libmagick++-dev \
libmagickcore-dev \
libncurses5-dev \
libotf-dev \
libpng12-dev \
librsvg2-dev \
libselinux1-dev \
libtiff4-dev \
libx11-dev \
libxft-dev \
libxml2-dev \
sharutils \
xaw3dg-dev
ビルド
ビルド時間を短縮するため並列ビルドします.
cd emacs24-24.5+1
debuild -us -uc -j`nproc`
emacsen-commonの方も.こちらは並列ビルドしなくてもすぐ終わります.
cd ../main
debuild -us -uc
インストール
できたdebパッケージをインストールしていきます.
cd ..
sudo dpkg -i emacsen-common_2.0.8_all.deb
sudo dpkg -i emacs24-el_24.5+1-1ubuntu4_all.deb \
emacs24-bin-common_24.5+1-1ubuntu4_amd64.deb \
emacs24-common_24.5+1-1ubuntu4_all.deb \
emacs24_24.5+1-1ubuntu4_amd64.deb
終わりです.