isv様向け redhatからsuse linuxへの移行 本資料について l...

49
ISV様向け Redhat から SUSE LINUXへの移行 ノベル株式会社 2005/2/8

Upload: phamtruc

Post on 28-Apr-2018

225 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

ISV様向けRedhatからSUSE LINUXへの移行

ノベル株式会社 2005/2/8

Page 2: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

2

RedhatからSUSE LINUXへの移行コンテンツ

l 本内容についてl RedhatとSUSE LINUXの違い

l ファイルシステムの階層とインストレーション

l initスクリプト

l コンパイラー

l Redhat対応アプリケーションのSUSE LINUXへの移行方法l ポータブル・コードの作成

l LSB/FHSへの準拠

l SUSE互換initスクリプトとRPMの作成

l RPM作成のためのSUSE buildツールの使用

l SUSEの優位性の利用

l 移行のチェックリスト

l まとめ

l 参考情報

Page 3: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

3

本資料について

l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作させるための方法や注意点について記述しています。

l 移行に関する詳細情報につきましては、ノベルのホームページまたはオープンソース・コミュニティから収集していただきますようお願いしたします。(「参考情報」を参照のこと)

Page 4: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

4

SUSE LINUX Enterprise Server 9の特徴

l SLES8のkernel 2.4からSLES9は、kernelが2.6となり、パフォーマンス、スケーラビリティが飛躍的に向上しています。

l パフォーマンスl Hyper Threadingの向上とNUMAサポートl Big SMPのサポートl 並列実行のGranular Lockingの改善l 多くのkernelパラメータ

l スケーラビリティl 64以上のCPUサポートl 数千ものデバイスをサポートl Block I/Oレイヤーの改善l IPv6、IPSEC、Mobile IPv6などネットワーク・スタックの改善

l Hotplugのサポート(SCSI、USB、Firewire、PCI、CPU)l sysfsを通じた統一的なデバイス・ハンドリングにより永続的なデバイス名l ACPIの改善l Infinibandのサポート

Page 5: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

RedhatとSUSE LINUXの違い

Page 6: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

6

主な違いRedhatとSUSE LINUXの違い

l ファイルシステムの階層とインストレーション

l initスクリプト

l コンパイラー

Page 7: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

7

ファイルシステムの階層とインストレーションRedhatとSUSE LINUXの違い

l SUSE LINUXは、Filesystem Hierarchy Standard(FHS)に従っています。

l FHSとは、l UNIX-likeオペレーティングシステムのためのファイルとディレクトリ配置に関

する要求仕様とガイドラインです。

l ガイドラインは、アプリケーションの互換性、システム管理ツール、開発ツール、およびスクリプトのサポートを目的としています。

l また、同様にこれらのシステムのためのドキュメンテーションの均一化も目的としています。

l http://www.pathname.com/fhs/

Page 8: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

8

ファイルシステムの階層とインストレーションRedhatとSUSE LINUXの違い

FHSでは、パッケージのインストール先を以下のとおりと定めています。FHSに準拠するためにも以下のディレクトリを使用するようにしましょう。

l パッケージのインストール先:l “/opt/<package>/”または“/opt/<provider>/”※ “/usr/local”、“/bin”、または“/usr/bin”などのシステム・ディレクトリ

ではありません。

l 設定ファイルのインストール先:l “/etc/opt/”※ “/etc/”ではありません。

l サービス・データのインストール先:l “/srv/”※ 例えば、“/srv/www”、“/srv/ftp”となり“/etc/httpd”または

“/var/www”ではありません。

Page 9: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

9

initスクリプトRedhatとSUSE LINUXの違い

l initスクリプトは、“/etc/rc.d/init.d”ではなく“/etc/init.d”にインストールされます。

l initスクリプトについてl chkconfigコマンドと“/etc/rc.d/rc[012345].d”へのシンボリックリンクのみ

に依存するのではなく、initスクリプトのコメント・ブロック(INIT INFO)に、“Required-Start”、“Required-Stop”、“Provides” を記述するようにしましょう。l これにより、Linux Standard Base(LSB)準拠のinstall_initd、

remove_initdコマンドまたはinsservコマンドでinitスクリプトのインストール/アンインストールが可能となります。

l 詳しくは、insservのmanページを参考にしてください。

l initスクリプトのテンプレートは、“/etc/init.d/skeleton”にあります。l RedhatとSUSE互換のinitスクリプトについては、「SUSE互換initスクリプ

トとRPMの作成」を参照のこと。

Page 10: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

10

コンパイラーRedhatとSUSE LINUXの違い

Redhatは、gcc2.96 *を使用していました。

l これは、gccの公式リリース・バージョンではありません。

l http://gcc.gnu.org/gcc-2.96.html

l Redhatのgcc2.96でコンパイルしたバイナリは SUSE(および他のディトリビューション)では動作しない可能性があります。

l Kernel2.4におけるNPTLを使用している場合、移行先のシステム(SUSE version 8とそれ以前のversion)には存在しない可能性があります。

* 現在Redhatは、gcc3.2を使用していますが、RHEL2.1およびRedHat 7.2以前はgcc2.96を使用していました

Page 11: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

Redhat対応アプリケーションのSUSE LINUXへの移行方法

Page 12: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

12

アプリケーションの移行方法Redhat対応アプリケーションのSUSE LINUXへの移行方法

l ポータブル・コードの作成

l LSB/FHSへの準拠

l SUSE互換initスクリプトとRPMの作成

l RPM作成のためのSUSE buildツールの使用

l SUSEの優位性の利用

l 移行のチェックリスト

l まとめ

Page 13: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

ポータブル・コードの作成

Page 14: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

14

ポータブル・コードの作成(1/2)

クリーンな移植性の高いコードを作成しましょう。

l リトル・エンディアン/ビッグ・エンディアンへの注意

l リトルエンディアンCPU:Intel、AMDl ビッグエンディアンCPU:PowerPC、s390

l データはテキスト・フォーマット(XMLなど)またはネットワーク・バイト・オーダー(ビッグ・エンディアン)で格納しましょう。

l “char”型をsignedまたはunsignedと仮定しないようにしましょう。

l 構造体のサイズは仮定せず、必ず“sizeof”を使用しましょう。

Page 15: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

15

ポータブル・コードの作成(2/2)

l “float”型と“double”型の同一サイズではありません。

l POSIXのインターフェスとデータ・タイプを使用しましょう。

l ベンダーに依存しないTool Chain(gcc、mak、binutilなど)を使用しましょう。

l 32bitアーキテクチャに制限しないようにしましょう。

Page 16: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

LSB/FHSへの準拠

Page 17: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

17

LSBとはLSB/FHSへの準拠

l SUSE LINUXは、Linux Standard Base(LSB)に準拠しています。l http://www.opengroup.org/lsb/cert/cert_prodlist.tpl?CALLER=index.tpl

l LSBとは、l Free Standards GroupのWorking Groupです。

l http://www.freestandards.org/l LSBのミッションとは、

l Linuxディストリビューション間における互換性を向上させるための標準セットを開発し提供する。

l LSBに準拠している全てのシステム上でアプリケーションを動作させること。l Linuxのためにソフトウェア・プロダクトを開発/移行するソフトウェア・ベンダーを

募集するための調整の手助けを行う。l アプリケーションやディストリビューションがLSBの準拠/認定を得るための詳細仕様と

して参照されます。l サンプル・インプリメンテーション、テスト・スィート、および開発環境を提供します。l http://www.linuxbase.org/

Page 18: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

18

LSBの仕様LSB/FHSへの準拠

l LSB仕様は、いくつかの業界標準仕様(FHS、various ABIs、System V Interface definition、Single Unix Specification、OpenGL、X11など)の集合です。

l LSB仕様は、全てのLSBインプリメンテーション共通の仕様と様々なCPUアーキテクチャ向けの仕様とで構成されています。

l LSB仕様では、パッケージの命名規約とフォーマット(RPM Version3)を規定しています。

l http://refspecs.freestandards.org/lsb.shtml

Page 19: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

19

FHSの仕様(1/2)LSB/FHSへの準拠

l ファイルやディレクトリの配置を規定しています。

l 最低限必要なシステム・ファイルとディレクトリを規定しています。

l 適合するための例外を挙げています。

l ヒストリカル・コンフリクトが発生する個所を挙げています。

l http://www.pathname.com/fhs/

* “Filesytem Hierarchy Standard version 2.3”をご参照ください

Page 20: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

20

FHSの仕様(2/2)LSB/FHSへの準拠

/ (root)FHS階層 例/bin - Essential command binaries/boot - Static files of the boot loader/dev - Device files/etc - Host-specific system configuration/home - User home directories (optional)/lib - Essential shared libraries and kernel modules/lib32 - 32-bit architecture dependent libraries (optional)/lib64 - 64-bit architecture dependent libraries (optional)/media - Mount point for removable media/mnt - Mount point for mounting a filesystem temporarily/opt - Add-on application software packages/proc - Linux filesystem for handling process and system info/root - Home directory for the root user (optional)/sbin - Essential system binaries/srv - Data for services provided by this system/tmp - Temporary files/usr - Secondary hierarchy/var - Variable data

Page 21: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

21

作成方法と利点LSB/FHSへの準拠

l LSB/FHS準拠達成のためには、l 認定されているABIを使用しましょう。

l LSBアプリケーション・チェッカーでテストをしましょう。

l LSBパッケージ・ガイドラインに従いましょう。

l ファイルとディレクトリの配置と管理はFHS仕様に従いましょう。

l 準拠の利点は、l 1つのバイナリで複数のLinuxディストリビューションをターゲットとすることが

できます。

l システムやライブラリのアップデートからアプリケーションを保護できます。

l アプリケーションの開発とテスト時間を削減することができます。

l システム開発の柔軟性の向上が見込まれます。

l Linuxディストリビューション間の違いによる学習負荷を低減できます。

Page 22: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

SUSE互換initスクリプトとRPMの作成

Page 23: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

23

概要SUSE互換initスクリプトとRPMの作成

l LSBは、LSB準拠のLinuxディストリビューション間で増加するアプリケーション・バイナリの互換性を高めるための多くの標準仕様を提供しています。

l また、LSBはソフトウェア・パッケージのインストールとシステム・サービス管理のために互換性についても規定しています。

l LSBに準拠したinitスクリプトとRPMを作成した場合、SUSE(LSB準拠)やその他のLSB準拠Linuxへの対応作業を簡略化できます。

l SUSE LINUXはLSBに準拠しています。Redhatもlsb.rpmをインストールすればLSB準拠となります。ただし、Redhatもlsb.rpmデフォルトではインストールされず、lsb.rpmがインストールされていることを前提と(または強制)することはできません。

l 以降、Redhatにlsb.rpmがインストールされていない前提で、SUSE(LSB)互換のinitスクリプト、RPMの作成方法について説明します。

Page 24: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

24

initスクリプトの作成(1/2)SUSE互換initスクリプトとRPMの作成

SUSE(LSB準拠)とRedhatのinitスクリプトの取り扱い方が異なります。しかし、以下のように記述することによって両立することが可能です。

1. コメント・ブロックinitスクリプト上部に以下のコメントを記述する必要があります。

# chkconfig: 345 85 60# description: Novell Thingy is a fly-trap server.# processname: lengine

### BEGIN INIT INFO# Provides: lengine# Required-Start: $local_fs $network $syslog# Should-Start: nthd# Required-Stop:# Default-Start: 3 4 5# Default-Stop: 0 1 2 6# Short-Description: Novell Thingy# Description: Novell Thingy Secure Fly Trap Server### END INIT INFO

Redhat用(chkconfigコマンド用)のコメント・ブロック

• ラン・レベル3、4、5で起動• 起動時のプライオリティは20• 終了時のプライオリティは80

SUSE(LSB準拠)用(install_initd、insservコマンド用)のコメント・ブロック

• 本サービス起動前に必須のサービス:$local_fs、$networks、$syslog

• 本サービス起動直前に必要なサービス:nthd

• ラン・レベル3、4、5で起動• ラン・レベル0、1、2、6では起動しな

詳細は以下のリンクを参照のこと。l Redtat:http://www.redhat.com/docs/manuals/enterprise/RHEL-3-Manual/sysadmin-

guide/s1-services-chkconfig.htmll SUSE(LSB準拠):http://refspecs.freestandards.org/lsb.shtml

Page 25: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

25

initスクリプトの作成(2/2)SUSE互換initスクリプトとRPMの作成

2. initスクリプトの場所“/etc/init.d”となり、”/etc/rc.d/init.d”ではありません。

3. initスクリプトの起動/停止順序RedhatとSUSEは、以下のようにラン・レベル・ディレクトリへのシンボリック・リンクにより起動と停止順を提起しています。

作成するシンボリック・リンクのファイル名には以下の規則があります。

Redhatでは、chkconfigコマンドにより起動/停止順序を明示的に制御することがでますが、作成するサービスの前に起動/停止するサービスの順番を把握しておかなければなりません。

SUSEでは、install_initd/remove_initd、またはinsservコマンドにより起動/停止のシンボリック・リンクを作成しますが、明示的に起動/停止順を制御することができません。その代わりに、“Required-Start”と“Required-Stop”をコメント・ブロックに記述することにより制御することができ、サービスの順番を把握する必要がなくなります。

/etc/rc.d/rc5.d/K06novell-thingy -> /etc/init.d/novell-thingy/etc/rc.d/rc5.d/S17novell-thingy -> /etc/init.d/novell-thingy

{S,K}[0-9][0-9]<name>S:起動、K:停止、[0-9][0-9]:起動/停止の順序

Page 26: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

26

RPMの作成(1/2)SUSE互換initスクリプトとRPMの作成

RedhatとSUSE(LSB準拠)でRPM同一の動作をさせるために次の変更が必要です。1. %postセクション

%postセクションでは、OS起動時に自動的にサービスが起動させるための記述ができます。

以下のように作成しましょう。

if [ -x /usr/lib/lsb/install_initd ]; then/usr/lib/lsb/install_initd /etc/init.d/novell-httpd

elif [ -x /sbin/chkconfig ]; then/sbin/chkconfig --add novell-httpd

elsefor i in 2 3 4 5; do

ln -sf /etc/init.d/novell-httpd /etc/rc.d/rc$.d/S90novell-httpddonefor i in 1 6; do

ln -sf /etc/init.d/novell-httpd /etc/rc.d/rc$.d/K10novell-httpddone

fi

SUSE(LSB準拠)用

Redhat用

その他

Page 27: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

27

RPMの作成(2/2)SUSE互換initスクリプトとRPMの作成

2. %preunセクション%preunセクションでは、パッケージ削除時のサービス停止と削除をさせるための記述ができます。

以下のように作成しましょう。

#only on uninstall, not on upgrades.if [ $1 = 0 ]; then/etc/init.d/novell-httpd stop > /dev/null 2>&1if [ -x /usr/lib/lsb/remove_initd ]; then/usr/lib/lsb/install_initd /etc/init.d/novell-httpd

elif [ -x /sbin/chkconfig ]; then/sbin/chkconfig --del novell-httpd

elserm -f /etc/rc.d/rc?.d/???novell-httpd

fifi

SUSE(LSB準拠)用

Redhat用

その他

Page 28: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

28

initスクリプトとRPM作成のポイント(1/5)SUSE互換initスクリプトとRPMの作成

l ポイント1(サービスに起動/終了設定)l SUSEでは、install_initd/remove_initd、またはinsservコマンドを使用しサービスの起

動/停止を設定するようにしてください。そうしない場合、SUSEは何のサービスが有効になっているのか判別できません。

l 例えば、nthdとのサービスをinstall_initd以外で設定した場合、SUSEはOS起動時にnthdが有効となっているのか判別できません。このため、nthdを“Required-Start”に記述したinitスクリプトをinstall_initdコマンドを使用して起動設定をしても起動に失敗します。

l また、initスクリプトのコメント・ブロックにはINIT INFOコメントを記述するようにしてください。もし、この記述がなくinstall_initdコマンドを実行した場合は、S01と採番しシンボリック・リンクが作成されてしまいます。

l ポイント2(initスクリプト内の記述)l INIT INFOコメントのないinitスクリプトはインストールしないようにしましょう。l /etc/init.d/rc?.dへのシンボリック・リンクはinstall_initdコマンド以外で作成しないよう

にしましょう。

Page 29: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

29

initスクリプトとRPM作成のポイント(2/5)SUSE互換initスクリプトとRPMの作成

l ポイント3(initスクリプトの命名規約とリターン・コード)l LSBで定められた適切なアクション(start、stopなど)を定義しましょう。l リターン・コードについてはLSBで定められています。l 重複を避けるため、initスクリプトの名称はLSB/Linux Assigned Names and Numbers

Authority(LANANA)の規約に従いましょう。

l http://www.lanana.org/

Page 30: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

30

initスクリプトとRPM作成のポイント(3/5)SUSE互換initスクリプトとRPMの作成

l ポイント4(initスクリプトにおけるbashファンクション)l LSBではinitスクリプト内で使用するbashファンクションについても規定があります。l それぞれのポラットホームで共通に使用するファンクション名が定義されています。l 以下、そのサンプルです。

# sample:Not all cases are tested. MyStatus(){ps wt? | grep "$DAEMON" 2>&1 > /dev/nullif [ "x$?" = "x0" ]; thenRVAL=0echo "Apache is running"

elseRVAL=3echo "Apache is not running"

fi}# <次ページへ続く>

Page 31: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

31

initスクリプトとRPM作成のポイント(4/5)SUSE互換initスクリプトとRPMの作成

# <前ページからの続き>if [ -f /lib/lsb/init-functions ]; then. /lib/lsb/init-functionsalias START_DAEMON=start_daemonalias STATUS=MyStatusalias LOG_SUCCESS=log_success_msgalias LOG_FAILURE=log_failure_msgalias LOG_WARNING=log_warning_msg

elif [ -f /etc/init.d/functions ]; then. /etc/init.d/functionsalias START_DAEMON=daemonalias STATUS=statusalias LOG_SUCCESS=successalias LOG_FAILURE=failurealias LOG_WARNING=passed

elseecho "Error: your platform is not supported by $0" > /dev/stderrexit 1

fi

Page 32: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

32

initスクリプトとRPM作成のポイント(5/5)SUSE互換initスクリプトとRPMの作成

l ポイント5(RPM specファイル)l RPM specファイルの%filesセクションでは“/etc/init.d/rc?.d”のシンボリックを含めな

いようにしましょう。l RPM specファイルでは標準的なマクロを使用しまいしょう。

l RPMのマクロ・ファイルの内容はRedhatとSUSEで多少違いがあります。l 詳細を確認するには、rpm --showrcをRedhatとSUSEでそれぞれ実行し、実行結

果の差をご確認ください。

Page 33: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

RPM作成のためのSUSE buildツールの使用

Page 34: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

34

SUSE’s buildツール(1/2)RPM作成のためのSUSE buildツールの使用

l buildコマンドは、独立した環境におけるRPM作成のためのSUSE独自のツールです。

l buildコマンドは、SLES9 SDKの一部です。以下のURLにダウンロードのインストラクションがあります。l http://developer.novell.com/ndk/susesdk.htm

l buildコマンドは、パラメータとして指定されたディレクトリに最小限のSUSE Linux環境を作成し、chrootでそのディレクトリを/(root)とし、パッケージをコンパイルします。

Page 35: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

35

SUSE’s buildツール(1/2)RPM作成のためのSUSE buildツールの使用

l buildコマンドは、パラメータとして指定されたRPM specファイルの“BuildRequires:”タグを検索し、タグに記述されている全パッケージとRPM構築に必要なその他のRPMパッケージを仮想の/(root)ディレクトリにインストールします。

※ buildコマンドは、隠れたRPMの依存関係を自動的に解決しません。このため、buildコマンド使用したRPMパッケージの作成は、必ず“BuildRequires:”タグに必要なRPMパッケージを正確に一行で記述してください。

l 以下、RPM specファイルにおける“BuildRequires:”タグの記述例です。

BuildRequires: aaa_base acl attr bash bind-utils bison bzip2 coreutils cpio cppcracklib cvs cyrus-sasl db devs diffutils e2fsprogs file filesystem fillup findutilsflex gawk gdbm-devel glibc glibc-devel glibc-locale gpm grep groff gzip info insservkbd less libacl libattr libgcc libselinux libstdc++ libxcrypt m4 make man mktempmodule-init-tools ncurses ncurses-devel net-tools netcfg openldap2-client openssl pampam-modules patch permissions popt procinfo procps

Page 36: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

36

SUSE’s buildツールの利点RPM作成のためのSUSE buildツールの使用

l buildコマンド使用の利点は、

l RPMパッケージ作成のためのプロセスを一貫して確実に実行します。

l Build環境は、chrootを使用するためカレントの環境から独立しています。

l 作成したいRPMパッケージに何が必要かを規定します。

l 要求されたRPMパッケージをchrootした環境にイントールします。

Page 37: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

SUSEの優位性の利用

Page 38: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

38

YaSTへの統合SUSEの優位性の利用

l YaST(Yet another Setup Tool)は、各種機能の管理や設定を集中化した環境を提供します。

l 何らかの設定や管理が必要なアプリケーションのためにYaSTモジュールを作成しましょう。

l YaSTはWindow環境(KDE、GNOMEなど)では自動的にグラフィカルなフロントエンドを、そうではない環境ではncursesを使用します。

Page 39: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

39

SuSEconfigへの統合SUSEの優位性の利用

l SuSEconfig(suseconfigコマンド)は、“/etc/sysconfig”にある設定値と“/sbin/conf.d/SuSEconfig.*”スクリプトを元にシステムの設定を行います。

l SuSEconfigは、通常YaSTからの設定値変更により動作します。

Page 40: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

移行のチェックリスト

Page 41: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

41

移行のチェックリスト(1/3)

l “lint-free”なコードを作成しましよう。l ポータブルではないコードを無くしましょう。l 標準的なツール(make、gccなど)を使用しましょう。l “ldd”コマンドを使用し、アプリケーションが必要とするライブラリとその

バージョンを分析しましょう。l ターゲットとするSUSEバージョンが必要とするライブラリを自身のSUSEシ

ステムへインストールしましょう。l ライブラリのバージョンをチェックするためにプログラム的なチェックを行

いましょう。l スタティックなライブラリのリンクまたはユニークな名称でのライブラリを

バンドルしましょう。l 公式リリースとなっているgccを使用しましょう。(gcc 3.2、3.3など)

Page 42: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

42

移行のチェックリスト(2/3)

l 現状のRPMを再配置可能(relocatable)なものに変更しましょう(SUSE未対応である場合は)。l “rpm --prefix”や“rpm --relocate”を使い、パッケージをインストールし結

果を確認しましょう。

l アプリケーションをLSB/FHS準拠システムへインストールできるように適切に改修しましょう。

l initdスクリプトを含みアプリケーションのインストールと削除は、RPMのspecファイルに以下の内容を記述しましょう。l “/usr/lib/lsb/install_initd”を“%post”セクションで使いましょう。l “/usr/lib/lsb/remove_initd”を“%preun”セクションで使いましょう。

Page 43: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

43

移行のチェックリスト(3/3)

l SUSEに存在するinit LSBファンクションのために、initスクリプトにおけるbashファンクションはLSBで規定されたものを定義しましょう。

l アプリケーションがどのスレッド・モデル(linuxthreads、NPTL、NGPT)を使用しているのか注意しましょう。l SLES8:

l linuxthreads:○l NGPT:○l NPTL:×

l SLES9:l linuxthreads:△(環境変数LD_ASSUME_KERNELの定義で動作可能)l NGPT:×l NPTL:○(将来的にLinuxのスレッド・モデルは全てNPTLへ移行)

l どちらのシステムでも動作するように良いスクリプト/プログラムを開発しましょう。

l 可能であれば64bitアーキテクチャで動作するようにコンパイルしましょう。l Novell Yes Certifiedを取得しましょう。

Page 44: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

まとめ

Page 45: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

45

まとめ

l RedhatからSUSEへの移行は難しくありません。

l なにも手を加えずにSUSEで動作するかもしれません。

l 良いコーディングは良いままです。

l LSB/FHSへ準拠することで移行が簡単になります。

l SUSEが提供する優位性(YaST、SuSEconfig)を利用しましょう。

Page 46: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

参考情報

Page 47: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

47

参考情報(1/2)

l 標準規格l LSB :http://www.linuxbase.org/l FHS :http://www.pathname.com/fhs/l LANANA :http://www.lanana.org/

l RPMl http://www.rpm.org/

l Novellが提供するガイドl Migrating Red Hat applications to SUSE --Technical Overview

l http://www.novell.com/coolsolutions/feature/11223.htmll Linux Standard Base and Filesystem Hierarchy Standard Compliance

for Novell Productsl http://developer.novell.com/yespgm/linux/suse/standard.html

l How To Create RPMs and Init Scripts That Are Compatible On Both SUSE Linux and Red Hat Linuxl http://www.novell.com/coolsolutions/feature/11256.html

Page 48: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

48

参考情報(1/2)

l IBMが提供するガイドl Developing LSB-certified applications

l http://www-106.ibm.com/developerworks/linux/library/l-lsb.html

l Packaging software with RPM, Part 3l http://www-106.ibm.com/developerworks/linux/library/l-

rpm3.html

l その他l A Guide to Writing Portable and Efficient C Programs

l http://www.linuxgazette.com/node/397l SLES9 SDK

l http://developer.novell.com/ndk/susesdk.html GNU/GCC's Response to distributions using gcc 2.96

l http://gcc.gnu.org/gcc-2.96.html

Page 49: ISV様向け RedhatからSUSE LINUXへの移行 本資料について l 本資料は、Redhatに対応したアプリケーションをSUSE LINUX上で動作さ せるための方法や注意点について記述しています。l

General DisclaimerThis document is not to be construed as a promise by any participating company to develop, deliver, or market a product. Novell, Inc., makes no representations or warranties with respect to the contents of this document, and specifically disclaims any express or implied warranties of merchantability or fitness for any particular purpose. Further, Novell, Inc., reserves the right to revise this document and to make changes to its content, at any time, without obligation to notify any person or entity of such revisions or changes. All Novell marks referenced in this presentation are trademarks or registered trademarks of Novell, Inc. in the United States and other countries. All third-party trademarks are the property of their respective owners.

No part of this work may be practiced, performed, copied, distributed, revised, modified, translated, abridged, condensed, expanded, collected, or adapted without the prior written consent of Novell, Inc. Any use or exploitation of this work without authorization could subject the perpetrator to criminal and civil liability.