3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS6.4でVim7.3のsrc.rpmからrpmを作成する方法

Last updated at Posted at 2013-11-07

概説

ここでは、CentOS6.4の環境で、Vim7.3のsrc.rpmファイルから、以下のrpmファイル群を作成する方法を示します。

  • vim-X11-7.3.944-1.el6.x86_64.rpm
  • vim-common-7.3.944-1.el6.x86_64.rpm
  • vim-debuginfo-7.3.944-1.el6.x86_64.rpm
  • vim-enhanced-7.3.944-1.el6.x86_64.rpm
  • vim-filesystem-7.3.944-1.el6.x86_64.rpm
  • vim-minimal-7.3.944-1.el6.x86_64.rpm

前提

作業はrootユーザーのカレントディレクトリ「/root」で行うこととします。

事前準備

まず、rpmファイルを作成する際に必要な関連パッケージをインストールしておきます。

参考URL:Building an rpm package for vim 7.3 under CentOS6

コマンド
# yum groupinstall "Development Tools"
# yum install \
> python-devel \
> ncurses-devel \
> libacl-devel \
> gpm-devel \
> libselinux-devel \
> ruby-devel \
> gtk2-devel \
> libSM-devel \
> libXt-devel \
> libXpm-devel \
> perl-ExtUtils-Embed

Vim7.3のsrc.rpmを取得

Rpmfind mirror のFTPサイトから対象のrpmを取得します。今回は、バージョン7.3.944を利用することにしました。

コマンド
# wget ftp://rpmfind.net/linux/fedora/linux/releases/19/Fedora/source/SRPMS/v/vim-7.3.944-1.fc19.src.rpm

依存パッケージの確認

このように、 rpmbuild --rebuild を実行すると、依存パッケージが確認できるので、足りない分は追加でインストールします。

コマンド
# rpmbuild --rebuild vim-7.3.944-1.fc19.src.rpm
エラー: ビルド依存性の失敗:
        gpm-devel は vim-2:7.3.944-1.el6.x86_64 に必要とされています
        ruby-devel は vim-2:7.3.944-1.el6.x86_64 に必要とされています
        ruby は vim-2:7.3.944-1.el6.x86_64 に必要とされています
        libXpm-devel は vim-2:7.3.944-1.el6.x86_64 に必要とされています
# yum install -y gpm-devel ruby-devel ruby libXpm-devel

rpmbuild --rebuild の際に、以下のような警告が大量に表示される場合があります。

警告: ユーザ mockbuild は存在しません - root を使用します
警告: グループ mockbuild は存在しません - root を使用します

警告なので無視してもよいですが、気になる場合は、以下のコマンドを実行し、ダミーでユーザーを作成しておきます。

コマンド
# useradd -s /sbin/nologin mockbuild

specファイル等の作成

コマンド
# rpm -Uvh --nomd5 vim-7.3.944-1.fc19.src.rpm
警告: vim-7.3.944-1.fc19.src.rpm: ヘッダ V3 RSA/SHA256 Signature, key ID fb4b18e6: NOKEY
   1:vim                    ########################################### [100%]

rpmファイルの作成(「不正な終了ステータス」が発生するパターン)

rpmbuild を実行すると、以下のようなエラーが大量に発生します。

コマンド
# rpmbuild -ba ~/rpmbuild/SPECS/vim.spec
・
・
省略
・
・
objects/term.o: In function `set_termname':
/root/rpmbuild/BUILD/vim73/src/term.c:1686: undefined reference to `PC'
/root/rpmbuild/BUILD/vim73/src/term.c:1672: undefined reference to `tgetnum'
/root/rpmbuild/BUILD/vim73/src/term.c:1670: undefined reference to `tgetnum'
/root/rpmbuild/BUILD/vim73/src/term.c:1647: undefined reference to `tgetflag'
/root/rpmbuild/BUILD/vim73/src/term.c:1679: undefined reference to `tgetnum'
/root/rpmbuild/BUILD/vim73/src/term.c:1644: undefined reference to `tgetflag'
/root/rpmbuild/BUILD/vim73/src/term.c:1641: undefined reference to `tgetflag'
/root/rpmbuild/BUILD/vim73/src/term.c:1638: undefined reference to `tgetflag'
/root/rpmbuild/BUILD/vim73/src/term.c:1635: undefined reference to `tgetflag'
collect2: ld returned 1 exit status
link.sh: Linking failed
make: *** [vim] Error 1
エラー: /var/tmp/rpm-tmp.FNOnSy の不正な終了ステータス (%build)

RPM ビルドエラー:
    /var/tmp/rpm-tmp.FNOnSy の不正な終了ステータス (%build)

参考URL:Building an rpm package for vim 7.3 under CentOS6
↑このサイトを参考に対象ファイル(7.3.050)の修正を行います。

コマンド
# vi ~/rpmbuild/SOURCES/7.3.050
58-63行目:修正前
+ LINK_AS_NEEDED=
+ # Check if linker supports --as-needed and --no-as-needed options
+ if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
+   LDFLAGS="$LDFLAGS -Wl,--as-needed"
+   LINK_AS_NEEDED=yes
+ fi
58-63行目:修正後
+ LINK_AS_NEEDED=no
+ # Check if linker supports --as-needed and --no-as-needed options
+ #if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
+ #  LDFLAGS="$LDFLAGS -Wl,--as-needed"
+ #  LINK_AS_NEEDED=yes
+ #fi
100-105行目:修正前
+ LINK_AS_NEEDED=
+ # Check if linker supports --as-needed and --no-as-needed options
+ if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
+   LDFLAGS="$LDFLAGS -Wl,--as-needed"
+   LINK_AS_NEEDED=yes
+ fi
100-105行目:修正後
+ LINK_AS_NEEDED=no
+ # Check if linker supports --as-needed and --no-as-needed options
+ #if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
+ #  LDFLAGS="$LDFLAGS -Wl,--as-needed"
+ #  LINK_AS_NEEDED=yes
+ #fi

rpmファイルの作成(気を取り直して)

コマンド
# rpmbuild -ba ~/rpmbuild/SPECS/vim.spec

以下のディレクトリにファイルが作成されています。

コマンド
# ls -l ~/rpmbuild/RPMS/x86_64/
合計 14048
-rw-r--r--. 1 root root 1138160 11月  7 04:33 2013 vim-X11-7.3.944-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 6617976 11月  7 04:33 2013 vim-common-7.3.944-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 5220484 11月  7 04:33 2013 vim-debuginfo-7.3.944-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 1002028 11月  7 04:33 2013 vim-enhanced-7.3.944-1.el6.x86_64.rpm
-rw-r--r--. 1 root root   11484 11月  7 04:33 2013 vim-filesystem-7.3.944-1.el6.x86_64.rpm
-rw-r--r--. 1 root root  388240 11月  7 04:33 2013 vim-minimal-7.3.944-1.el6.x86_64.rpm

現在インストールされているVimのバージョンを確認

コマンド
# rpm -qa |grep vim
vim-enhanced-7.2.411-1.8.el6.x86_64
vim-common-7.2.411-1.8.el6.x86_64
vim-minimal-7.2.411-1.8.el6.x86_64

作成したVim7.3のrpmをインストールする(現在インストールされているものと入れ替え)

vim-filesystemvim-common と依存関係があるため、一緒に入れます。

コマンド
# rpm -e --nodeps vim-enhanced vim-common vim-minimal
# rpm -Uvh ~/rpmbuild/RPMS/x86_64/vim-{m,c,e,f}*
準備中...                ########################################### [100%]
   1:vim-filesystem         ########################################### [ 25%]
   2:vim-common             ########################################### [ 50%]
   3:vim-enhanced           ########################################### [ 75%]
   4:vim-minimal            ########################################### [100%]

その他参考URL

CentOS: rpmbuild-ing Vim w/ Ruby support

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?