概説
ここでは、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 install rpm-build# yum install \>python-devel\>ncurses-devel\>libacl-devel\>gpm-devel\>autoconf\>libselinux-devel\>ruby-devel\>gtk2-devel\>libSM-devel\>libXt-devel\>libXpm-devel\>perl-ExtUtils-Embed# yum groupinstall "Development tools"
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:ヘッダV3RSA/SHA256Signature,keyIDfb4b18e6:NOKEY1:vim########################################### [100%]
rpmファイルの作成(「不正な終了ステータス」が発生するパターン)
rpmbuild
を実行すると、以下のようなエラーが大量に発生します。
コマンド
# rpmbuild -ba ~/rpmbuild/SPECS/vim.spec・・省略・・objects/term.o:Infunction`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:undefinedreferenceto`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:undefinedreferenceto`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:undefinedreferenceto`tgetflag'collect2: ld returned 1 exit statuslink.sh: Linking failedmake: *** [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,--help2>/dev/null|grepas-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,--help2>/dev/null|grepas-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--.1rootroot113816011月704:332013vim-X11-7.3.944-1.el6.x86_64.rpm-rw-r--r--.1rootroot661797611月704:332013vim-common-7.3.944-1.el6.x86_64.rpm-rw-r--r--.1rootroot522048411月704:332013vim-debuginfo-7.3.944-1.el6.x86_64.rpm-rw-r--r--.1rootroot100202811月704:332013vim-enhanced-7.3.944-1.el6.x86_64.rpm-rw-r--r--.1rootroot1148411月704:332013vim-filesystem-7.3.944-1.el6.x86_64.rpm-rw-r--r--.1rootroot38824011月704:332013vim-minimal-7.3.944-1.el6.x86_64.rpm
現在インストールされているVimのバージョンを確認
コマンド
# rpm -qa |grep vimvim-enhanced-7.2.411-1.8.el6.x86_64vim-common-7.2.411-1.8.el6.x86_64vim-minimal-7.2.411-1.8.el6.x86_64
作成したVim7.3のrpmをインストールする(現在インストールされているものと入れ替え)
vim-filesystem
は vim-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%]