HOME | ドキュメント |  ブログ  |  BBS  |  瓦版  | 将棋プロジェクト |  物置小屋   

VineSeed x86_64 版リリース状況 (2006/05/23) Vine ヴァイン
 道標
象歩
象歩ブログ
ドキュメント
自転車整備ノート
C/C++
Linux 備忘録
パソコン整備ノート
不健康日記
不健康日記(2)
不健康日記(3)
Python パイソン
セキュリティ
Vine ヴァイン
VineSeed x86_64 リリ~
VineSeed x86_64 版リ~
x86_64 環境の構築 09~
Zope2 (ゾープ 2.x 系)
象歩BBS
Web瓦版
将棋プロジェクト
物置小屋
 リンク
Vine Linux (ヴァイン)
Vine Linux Users Manual
Vine Linux 4.x Tips 集
Linux パーソナルワークステーション
ptetex Wiki

x86_64 環境の構築 09/28 '07  [更新日:2007年10月10日]

以下のドキュメントは VineSeed メーリングリストに いわもと さんが投稿された記事 [VineSeed-x86_64:00391] をそのまま載せたものです。

---------------------------------------------------------------------

How to x86_64 (Re: 1st step to x86-64 env)

2007/09/28 時点での VineSeed -> VineSeed x86_64 への更新手順


1,最小環境での VineSeed 環境の作成

 Vine 4.1 を最小構成で install し、コンパクトな Vine の環境を構築。
 但し、package の download が出来ないと困るので lftp、wget の2つは
 追加で導入しておく。


2,Vine 4.1 -> VineSeed x86 への更新

 apt line を VineSeed に書き換えて、VineSeed x86 環境へ移行。

 現状、Vine 4.1 と VineSeed x86 では toolchain が変わっているため、
 apt-get dist-upgrade が必須。
 apt-get upgrade では、ライブラリの互換が取れず立ち上がらない。
 (浮動小数点なんちゃらの連発で逝ってしまう)

 VineSeed 環境に移行後、reboot する。
 再度、apt-get update, apt-get upgrade をして更新漏れの確認。


3,package の download

 適当な mirror から、VineSeed/x86_64/RPMS.main の package を
 すべて download する。
 また、VineSeed/x86_64/pool から compat32-* package をすべて
 download する。

 とりあえず、devel package は不要なので、

  mkdir devel
  mv *-devel*rpm devel

 とかして目障りにならないところに移動しておく。


4,不要なサービスの停止、package 削除

 Vine 4.1CR をベースにした場合では Wnn 関係が入っているので停止。
 package も削除する。
 network 関係(iptables, ppp, rp-pppoe, postfix など)も当面不要なので
 ネットワーク接続を維持できる最小環境を残し、停止、package 削除する。

 ここで可能な限り package を絞らないとあとで苦労が増える。


5,ld.so.conf、mkinitrd の書き換え

 /etc/ld.so.conf に /lib64と /usr/lib64 を加える。

 /sbin/mkinitrd を書き換えて、cp が使われるようにする。
 (あとで strip コマンドが死ぬため)

  #    if [ -x /usr/bin/strip ]; then
  #        /usr/bin/strip -g $verbose /lib/modules/$kernel/$MODULE -o $MNTIMAGE/lib/$(basename $MODULE)
  #    else
          cp $verbose -a /lib/modules/$kernel/$MODULE $MNTIMAGE/lib
  #    fi

 vi などのエディタが使えなくなると困るのでこの段階で更新してしまう。


6,glibc まわりの更新(その1)

 glibc の更新をする。
 現状のパッケージで、依存関係を満たすのは以下の通り。

 rpm -Uvh --force --ignorearch glibc-2.5-12vl3.x86_64.rpm \
  glibc-common-2.5-12vl3.x86_64.rpm \
  glibc-headers-2.5-12vl3.x86_64.rpm \
  glibc-kernheaders-2.6.12.1-0vl2.x86_64.rpm  \
  compat32-glibc-2.5-12vl3.i686.rpm \
  zlib-1.2.3-0vl5.x86_64.rpm \
  compat32-zlib-1.2.3-0vl5.i686.rpm \
  bzip2-1.0.3-0vl2.x86_64.rpm \
  compat32-bzip2-1.0.3-0vl2.i686.rpm \
  tzdata-2007d-1vl1.noarch.rpm

 (細かい package のバージョンは更新によって日々変わる)

 上記の内容を file に落とし bash に食わせて実行する。
 (あとでもう1度実行するため)
 「package 内部 script の実行が出来ない」というエラーが出るが無視する。


7,kernel の更新

 rpm -Uvh --force kernel-2.6.16-0vl85.x86_64.rpm

 で突っ込む。
 /boot に kernel が入っているか、initrd image が出来ているかを確認する。


8,reboot

 grub の対話モード(コマンドラインモード)で x86_64 kernel で boot する。
 boot してきたら uname -a をして x86_64 になっていることを確認する。


9,glibc まわりの更新(その2)

 手順6の手順をもう1度実行する。
 今度はスクリプトのエラーも出ない。


10,rpm, apt の更新

 rpm を更新する。
 現状のパッケージで、依存関係を満たすのは以下の通り。

 rpm -Uvh --force --ignorearch rpm-4.4.2.1-0vl2.x86_64.rpm \
   rpm-libs-4.4.2.1-0vl2.x86_64.rpm \
   beecrypt-4.1.2-9vl4.x86_64.rpm \
   elfutils-libelf-0.126-0vl1.x86_64.rpm \
   libexpat-1.95.8-0vl6.x86_64.rpm \
   compat32-libexpat-1.95.8-0vl6.i686.rpm \
   neon-0.26.3-0vl1.x86_64.rpm \
   popt-1.10.2.1-0vl2.x86_64.rpm  \
   sqlite3-3.4.2-0vl1.x86_64.rpm \
   openssl-0.9.8e-0vl2.x86_64.rpm \
   compat32-openssl-0.9.8e-0vl2.i686.rpm \
   libgcc-4.1.2-0vl12.x86_64.rpm \
   libstdc++34-4.1.2-0vl12.x86_64.rpm \
   ncurses-5.4-0vl3.x86_64.rpm \
   compat32-ncurses-5.4-0vl3.i686.rpm \
   readline-5.1-0vl1.x86_64.rpm \
   compat32-readline-5.1-0vl1.i686.rpm

 apt を更新する。
 現状のパッケージで、依存関係を満たすのは以下の通り。

  rpm -Uvh --force apt-0.5.15lorg3.2-0vl13.x86_64.rpm \
    libxml2-2.6.27-0vl1.x86_64.rpm \
    compat32-libxml2-2.6.27-0vl1.i686.rpm


11,/etc/rpm/platform の確認

 /etc/rpm/platform を確認する。
 athlon-redhat-linux などになっていたら x86_64-redhat-linux に修正する。


12,i386 package の x86_64 package への置き換え

 install 済みの i386 package を x86_64 package で置き換える。

 rpm -qa --qf "%{ARCH}-%{OS} %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" | grep i386

 などとすれば install 済みの i386 package の一覧を表示してくれる。

 hoge という package を更新する場合は、

  hoge.x86_64.rpm を rpm -Uvh --force で入れる
  上記スクリプトで grep hoge として hoge が2つ入っていることを確認
  rpm -e hoge.i386 として i386 を削除

 という手順を行う。
 これを、i386 package が無くなるまで行う。

 library の更新時に、まだ入れ替えていない i386 package への依存が出る場合、
 compat32 package がある場合はそれを入れる。
 compat32 package が無い場合は手順を考える。

 i386 package が無くなったら、apt-get check して依存関係に矛盾が無いことを
 確認する。
 reboot して正常に起動することを確認する。

 手順4で package 数がきっちり絞ってあれば、package 数 100個弱、
 所要時間3時間程度。

 この作業は支援スクリプトが欲しい。apt の偉大さを再認識する3時間。

 compat32 がある下位のライブラリから更新していくと楽。
 ライブラリの入れ替えが終わればあとは単純作業になるハズ。


13,apt してみる

 この時点で、apt の機能が使えるようになっているハズ。
 追加で必要となる package を随時 apt で導入していく。


14,開発環境の確認

 必要な package は随時入れること。

 gcc の確認。
 ls -l /etc/alternatives/gcc をして alternatives のリンクが
 gcc-3.x になっていたら、

  rpm -Uvh --replacefiles --force \
    gcc-4.1.2-0vl12.x86_64.rpm \
    gcc-cpp-4.1.2-0vl12.x86_64.rpm \

  をして復旧。

  $ rpm --eval=%{_arch}
  x86_64
  $ rpm --eval=%{_lib}
  lib64

 となることを確認する
 なってないなら手順11を確認する。

  $ echo $HOSTTYPE
  x86_64

 となることを確認する


15,文責、謝辞、参考

 この文書はいわもと(satoshi.iwamoto@nifty.ne.jp)が書きました。
 転載自由です。

 無保証です。package は随時更新されますのですぐに古くなります。

 Thanks to 鈴木さん、今野さん、中村さん、川口さん、VineSeed-x86_64 ML

 http://owa.as.wakwak.ne.jp/zope/labs/bbs/201/364
 http://owa.as.wakwak.ne.jp/zope/labs/bbs/201/365
 http://www.is.sci.yamaguchi-u.ac.jp/~kawamura/Japanese/Comp/x86_64.html

 を参考にしました。

src.rpm からのリビルド

パッケージング方法は ここ に書いたけど、 後でまとめること。

$ rpm --sign -ba hoge.spec 2>&1 | tee make64.log
$ rpm --sign -bb --with compat32 --target i686 hoge.spec 2>&1 | tee make32.log