• 検索結果がありません。

RedhatからSUSEへの移行

N/A
N/A
Protected

Academic year: 2021

シェア "RedhatからSUSEへの移行"

Copied!
49
0
0

読み込み中.... (全文を見る)

全文

(1)

ISV様向け

RedhatからSUSE LINUXへの移行

(2)

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

参考情報

(3)

3

本資料について

l

本資料は、

Redhatに対応したアプリケーションをSUSE LINUX上で動作さ

せるための方法や注意点について記述しています。

l

移行に関する詳細情報につきましては、ノベルのホームページまたは

オープンソース・

コミュニティから収集していただきますようお願いしたし

ます。(「参考情報」

を参照のこと)

(4)

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のサポート

(5)
(6)

6

主な違い

RedhatとSUSE LINUXの違い

l

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

l

initスクリプト

l

コンパイラー

(7)

7

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

RedhatとSUSE LINUXの違い

l

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

l

FHSとは、

l UNIX-likeオペレーティングシステムのためのファイルとディレクトリ配置に関 する要求仕様とガイドラインです。 l ガイドラインは、アプリケーションの互換性、システム管理ツール、開発ツー ル、およびスクリプトのサポートを目的としています。 l また、同様にこれらのシステムのためのドキュメンテーションの均一化も目的 としています。 l http://www.pathname.com/fhs/

(8)

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”ではありません。

(9)

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の作成」を参照のこと。

(10)

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を使用していま した

(11)

Redhat対応アプリケーションの

SUSE LINUXへの移行方法

(12)

12

アプリケーションの移行方法

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

l

ポータブル・

コードの作成

l

LSB/FHSへの準拠

l

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

l

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

l

SUSEの優位性の利用

l

移行のチェックリスト

l

まとめ

(13)
(14)

14

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

1/2)

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

l リトル・エンディアン/ビッグ・エンディアンへの注意 l リトルエンディアンCPU:Intel、AMD l ビッグエンディアンCPU:PowerPC、s390 l データはテキスト・フォーマット(XMLなど)またはネットワーク・バイト・オー ダー(ビッグ・エンディアン)で格納しましょう。 l “char”型をsignedまたはunsignedと仮定しないようにしましょう。 l 構造体のサイズは仮定せず、必ず“sizeof”を使用しましょう。

(15)

15

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

2/2)

l “float”型と“double”型の同一サイズではありません。 l POSIXのインターフェスとデータ・タイプを使用しましょう。 l ベンダーに依存しないTool Chain(gcc、mak、binutilなど)を使用しましょう。 l 32bitアーキテクチャに制限しないようにしましょう。

(16)
(17)

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/

(18)

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

(19)

19

FHSの仕様(1/2)

LSB/FHSへの準拠

l

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

l

最低限必要なシステム・

ファイルとディレクトリを規定しています。

l

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

l

ヒストリカル・

コンフリクトが発生する個所を挙げています。

l

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

(20)

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

(21)

21

作成方法と利点

LSB/FHSへの準拠

l

LSB/FHS準拠達成のためには、

l 認定されているABIを使用しましょう。 l LSBアプリケーション・チェッカーでテストをしましょう。 l LSBパッケージ・ガイドラインに従いましょう。 l ファイルとディレクトリの配置と管理はFHS仕様に従いましょう。 l

準拠の利点は、

l 1つのバイナリで複数のLinuxディストリビューションをターゲットとすることが できます。 l システムやライブラリのアップデートからアプリケーションを保護できます。 l アプリケーションの開発とテスト時間を削減することができます。 l システム開発の柔軟性の向上が見込まれます。 l Linuxディストリビューション間の違いによる学習負荷を低減できます。

(22)
(23)

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の作成方法について説明します。

(24)

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.html l SUSE(LSB準拠):http://refspecs.freestandards.org/lsb.shtml

(25)

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]:起動/停止の順序

(26)

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 else for i in 2 3 4 5; do ln -sf /etc/init.d/novell-httpd /etc/rc.d/rc$.d/S90novell-httpd done for i in 1 6; do ln -sf /etc/init.d/novell-httpd /etc/rc.d/rc$.d/K10novell-httpd done fi SUSE(LSB準 拠)用 Redhat用 その他

(27)

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>&1 if [ -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 else rm -f /etc/rc.d/rc?.d/???novell-httpd fi fi SUSE(LSB準 拠)用 Redhat用 その他

(28)

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コマンド以外で作成しないよう にしましょう。

(29)

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)の規約に従いましょう。

(30)

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/null if [ "x$?" = "x0" ]; then

RVAL=0

echo "Apache is running" else

RVAL=3

echo "Apache is not running" fi

}

(31)

31

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

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

# <前ページからの続き> if [ -f /lib/lsb/init-functions ]; then . /lib/lsb/init-functions alias START_DAEMON=start_daemon alias STATUS=MyStatus alias LOG_SUCCESS=log_success_msg alias LOG_FAILURE=log_failure_msg alias LOG_WARNING=log_warning_msg elif [ -f /etc/init.d/functions ]; then

. /etc/init.d/functions alias START_DAEMON=daemon alias STATUS=status alias LOG_SUCCESS=success alias LOG_FAILURE=failure alias LOG_WARNING=passed else

echo "Error: your platform is not supported by $0" > /dev/stderr exit 1

(32)

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でそれぞれ実行し、実行結 果の差をご確認ください。

(33)

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

の使用

(34)

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)とし、パッ

ケージをコンパイルします。

(35)

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 cpp cracklib cvs cyrus-sasl db devs diffutils e2fsprogs file filesystem fillup findutils flex gawk gdbm-devel glibc glibc-devel glibc-locale gpm grep groff gzip info insserv kbd less libacl libattr libgcc libselinux libstdc++ libxcrypt m4 make man mktemp module-init-tools ncurses ncurses-devel net-tools netcfg openldap2-client openssl pam pam-modules patch permissions popt procinfo procps

(36)

36

SUSE’s buildツールの利点

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

l

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

l RPMパッケージ作成のためのプロセスを一貫して確実に実行します。 l Build環境は、chrootを使用するためカレントの環境から独立しています。 l 作成したいRPMパッケージに何が必要かを規定します。 l 要求されたRPMパッケージをchrootした環境にイントールします。

(37)
(38)

38

YaSTへの統合

SUSEの優位性の利用

l

YaST(Yet another Setup Tool)は、各種機能の管理や設定を集中化し

た環境を提供します。

l

何らかの設定や管理が必要なアプリケーションのために

YaSTモジュー

ルを作成しましょう。

l

YaSTはWindow環境(KDE、GNOMEなど)では自動的にグラフィカルなフ

(39)

39

SuSEconfigへの統合

SUSEの優位性の利用

l

SuSEconfig(suseconfigコマンド)は、“/etc/sysconfig”にある設定値と

“/sbin/conf.d/SuSEconfig.*”スクリプトを元にシステムの設定を行いま

す。

l

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

(40)
(41)

41

移行のチェックリスト(

1/3)

l

“lint-free”なコードを作成しましよう。

l

ポータブルではないコードを無くしましょう。

l

標準的なツール(

make、gccなど)を使用しましょう。

l

“ldd”コマンドを使用し、アプリケーションが必要とするライブラリとその

バージョンを分析しましょう。

l

ターゲットとする

SUSEバージョンが必要とするライブラリを自身のSUSEシ

ステムへインストールしましょう。

l

ライブラリのバージョンをチェックするためにプログラム的なチェックを行

いましょう。

l

スタティックなライブラリのリンクまたはユニークな名称でのライブラリを

バンドルしましょう。

l

公式リリースとなっている

gccを使用しましょう。(gcc 3.2、3.3など)

(42)

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”セクションで使いましょう。

(43)

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を取得しましょう。

(44)
(45)

45

まとめ

l

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

l

なにも手を加えずに

SUSEで動作するかもしれません。

l

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

l

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

l

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

(46)
(47)

47

参考情報(

1/2)

l

標準規格

l LSB :http://www.linuxbase.org/ l FHS :http://www.pathname.com/fhs/ l LANANA :http://www.lanana.org/ l

RPM

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

Novellが提供するガイド

l Migrating Red Hat applications to SUSE --Technical Overview l http://www.novell.com/coolsolutions/feature/11223.html

l Linux Standard Base and Filesystem Hierarchy Standard Compliance

for Novell Products

l 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 Linux

(48)

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 3

l

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/397

l SLES9 SDK

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

(49)

General Disclaimer

This 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.

参照

関連したドキュメント

In the present paper the technique is much improved, and several new questions are considered, namely: the possibilityof passing to the limit b → +0 in the constructed

We construct an infinite family of 3-manifolds and show that these manifolds have cyclically presented fundamental groups and are cyclic branched coverings of the 3-sphere branched

Revit Architecture は、BIM(ビルディング・インフォメーション・モデル)作成のトップツールになってお

ordinary text into its DjVu format, see section 3.2.6... library of the EMANI initiative then all articles contained in the dierent digital.. libraries of the initiative or

I am indebted to the following libraries and institutes for having given me permission to consult manuscripts: The Bharat Kala Bhavan Library of Banaras Hindu University,

I am indebted to the following libraries and institutes for having given me permis- sion to consult their manuscripts: The Bharat Kala Bhavan Library of Banaras Hindu

Kwansei Gakuin Architecture

counter (may be divided into 8-bit timers), 16-bit timer (may be divided into 8-bit timers or 8-bit PWMs), four 8-bit timers with a prescaler, a base timer serving as a