Vine 3.1(3)libtermcap の作り直し
Vine Seed の時はほったらかしにしてしまった libtermcap の作り直しをする。
準備
[root@hackkit root]# apt-get install vutils
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
vutils
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 1 個
27.5kB のアーカイブを取得する必要があります。
展開後に 57.8kB のディスク容量が追加消費されます。
取得:1 ftp://core.ring.gr.jp 3.1/ppc/main vutils 1.22.2-0vl1 [27.5kB]
27.5kB を 0s 秒で取得しました (50.7kB/s)
変更を適用しています...
Preparing... ########################################### [100%]
1:vutils ########################################### [100%]
error: cannot open Installtid index using db3 - そのようなファイルやディレクトリはありません (2)
error: cannot open Sigmd5 index using db3 - そのようなファイルやディレクトリはありません (2)
error: cannot open Sha1header index using db3 - そのようなファイルやディレクトリはありません (2)
完了
[root@hackkit root]# mkrpmdir ~
mkrpmdir: created rpm tree in /root/rpm and /root/.rpmmacros.
[root@hackkit root]# apt-get source libtermcap
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
226kB のソースアーカイブを取得します。
1:libtermcap ########################################### [100%]
[root@hackkit root]# apt-get build-dep libtermcap
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
texinfo
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 1 個
777kB のアーカイブを取得する必要があります。
展開後に 1730kB のディスク容量が追加消費されます。
続行しますか? [Y/n]y
取得:1 ftp://core.ring.gr.jp 3.1/ppc/main texinfo 4.7-0vl1 [777kB]
777kB を 1s 秒で取得しました (428kB/s)
変更を適用しています...
Preparing... ########################################### [100%]
1:texinfo ########################################### [100%]
error: cannot open Installtid index using db3 - そのようなファイルやディレクトリはありません (2)
error: cannot open Sigmd5 index using db3 - そのようなファイルやディレクトリはありません (2)
error: cannot open Sha1header index using db3 - そのようなファイルやディレクトリはありません (2)
完了
[root@hackkit root]# apt-get install rpm-build
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
rpm-build
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 1 個
86.5kB のアーカイブを取得する必要があります。
展開後に 189kB のディスク容量が追加消費されます。
取得:1 ftp://core.ring.gr.jp 3.1/ppc/main rpm-build 4.0.5-1vl8 [86.5kB]
86.5kB を 0s 秒で取得しました (110kB/s)
変更を適用しています...
Preparing... ########################################### [100%]
1:rpm-build ########################################### [100%]
error: cannot open Installtid index using db3 - そのようなファイルやディレクトリはありません (2)
error: cannot open Sigmd5 index using db3 - そのようなファイルやディレクトリはありません (2)
error: cannot open Sha1header index using db3 - そのようなファイルやディレクトリはありません (2)
完了
[root@hackkit root]#
とりあえずそのまま rebuild
[root@hackkit root]# rpm --rebuild libtermcap-2.0.8-36vl1.src.rpm
libtermcap-2.0.8-36vl1.src.rpm をインストール中
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.5545
+ umask 022
+ cd /root/rpm/BUILD
:
:
+ umask 022
+ cd /root/rpm/BUILD
+ rm -rf termcap-2.0.8
+ exit 0
[root@hackkit root]#
rebuild できるところまでは確認できた。
ソースパッケージの展開
[root@hackkit root]# rpm -i libtermcap-2.0.8-36vl1.src.rpm
noexecstack オプション付加
どこで noexecstack を付けたらよいものかと、こ1時間悩んだ結果
BUILD/termcap-2.0.8/Makefile で gcc -shared を
実行しているところにつけることにした。
[root@hackkit rpm]# cat SOURCES/termcap-2.0.8-noexecstack.patch
*** termcap-2.0.8/Makefile.orig 2004-11-26 09:26:17.000000000 +0900
--- termcap-2.0.8/Makefile 2004-11-26 09:28:22.000000000 +0900
***************
*** 41,47 ****
$(SHARED_LIB): $(OBJS)
cd pic; \
! $(CC) -shared -o ../$@ -Wl,-soname,$(SONAME_SHARED_LIB) $(OBJS) -lc
pic:
-if [ ! -d pic ]; then mkdir pic; fi
--- 41,47 ----
$(SHARED_LIB): $(OBJS)
cd pic; \
! $(CC) -shared -o ../$@ -Wl,-z -Wl,noexecstack -Wl,-soname,$(SONAME_SHARED_LIB) $(OBJS) -lc
pic:
-if [ ! -d pic ]; then mkdir pic; fi
SPEC ファイル修正
とりあえず上記パッチをあてビルドするようにする修正と、
パッケージバージョンの修正を行う。
[root@hackkit SPECS]# diff -c libtermcap-vl.spec.orig libtermcap-vl.spec
*** libtermcap-vl.spec.orig 2003-06-11 19:02:51.000000000 +0900
--- libtermcap-vl.spec 2004-11-26 09:48:07.000000000 +0900
***************
*** 1,7 ****
Summary: A basic system library for accessing the termcap database.
Name: libtermcap
Version: 2.0.8
! Release: 36vl1
Source: ftp://metalab.unc.edu/pub/Linux/GCC/termcap-2.0.8.tar.bz2
Url: ftp://metalab.unc.edu/pub/Linux/GCC/
Copyright: LGPL
--- 1,7 ----
Summary: A basic system library for accessing the termcap database.
Name: libtermcap
Version: 2.0.8
! Release: 36vl1hk1
Source: ftp://metalab.unc.edu/pub/Linux/GCC/termcap-2.0.8.tar.bz2
Url: ftp://metalab.unc.edu/pub/Linux/GCC/
Copyright: LGPL
***************
*** 20,25 ****
--- 20,26 ----
Patch10: libtermcap-aaargh.patch
Patch11: termcap-2.0.8-glibc22.patch
Patch12: libtermcap-2.0.8-ia64.patch
+ Patch13: termcap-2.0.8-noexecstack.patch
Requires: termcap
BuildPrereq: texinfo
BuildRoot: %{_tmppath}/%{name}-root
***************
*** 60,65 ****
--- 61,67 ----
%ifarch ia64
%patch12 -p1 -b .ia64
%endif
+ %patch13 -p1
%build
make AR=%{__ar} CC=%{__cc} CFLAGS="$RPM_OPT_FLAGS -I."
[root@hackkit SPECS]#
ビルド
新しい SEPC ファイルでビルドする
[root@hackkit SPECS]# rpm -ba libtermcap-vl.spec
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.35033
+ umask 022
+ cd /root/rpm/BUILD
+ cd /root/rpm/BUILD
+ rm -rf termcap-2.0.8
+ /usr/bin/bzip2 -dc /root/rpm/SOURCES/termcap-2.0.8.tar.bz2
:
:
cd pic; \
gcc -shared -o ../libtermcap.so.2.0.8 -Wl,-z -Wl,noexecstack -Wl,-soname,libtermcap.so.2 termcap.o tparam.o version.o -lc
makeinfo termcap.texi --output=termcap.info
+ exit 0
:
:
書き込み完了: /root/rpm/SRPMS/libtermcap-2.0.8-36vl1hk1.src.rpm
書き込み完了: /root/rpm/RPMS/ppc/libtermcap-2.0.8-36vl1hk1.ppc.rpm
書き込み完了: /root/rpm/RPMS/ppc/libtermcap-devel-2.0.8-36vl1hk1.ppc.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.55566
+ umask 022
+ cd /root/rpm/BUILD
+ cd termcap-2.0.8
+ rm -rf /var/tmp/libtermcap-root
+ exit 0
[root@hackkit SPECS]#
パッケージのインストール
作成したパッケージをインストールする
[root@hackkit SPECS]# cd ../RPMS/ppc/
[root@hackkit ppc]# ls
libtermcap-2.0.8-36vl1hk1.ppc.rpm libtermcap-devel-2.0.8-36vl1hk1.ppc.rpm
[root@hackkit ppc]# rpm -Uvh *.rpm
準備中... ########################################### [100%]
1:libtermcap ########################################### [ 50%]
2:libtermcap-devel ########################################### [100%]
[root@hackkit ppc]# rpm -q libtermcap
libtermcap-2.0.8-36vl1hk1
[root@hackkit ppc]# rpm -q libtermcap-devel
libtermcap-devel-2.0.8-36vl1hk1
[root@hackkit ppc]#
さて、これで動くかな?
kernel 2.4.17 で起動
再起動する。
Vine Linux 3.1 (Pichon Lalande)
Kernel 2.4.17_kuro-box on a ppc
login:
とりあえず、起動するようになった。
Copyright (C) 2004 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市