Changes between Version 10 and Version 11 of Developers/kenta


Ignore:
Timestamp:
2011/11/25 00:28:58 (12 years ago)
Author:
kenta
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Developers/kenta

    v10 v11  
    1010 
    1111= vlmag 下書きメモ = 
    12  == OSC 2011 Tokyo Fall に行ってきました == 
    13   2011/11/19, 20 の 2日間、OSC 2011 Tokyo Fall に参加してきました。 
     12 == OSC 2011 Tokyo/Fall に行ってきました == 
     13  2011/11/19, 20 の 2日間、OSC 2011 Tokyo/Fall に参加してきました。 
    1414  展示内容は 2つでした。 
    1515  * Vine Linux 6のインストールメディア配布 
     
    1717  あとは、ブースの近くにいた munepiさん、Takemikaduchiさん、kudohさんと私 (kenta) の 4名で、その場で質問や相談に答えていました。 
    1818 
     19  いやー、一日目はとっても寒かったですね。Project Vineのブースはドアの近くで、自動ドアが開くたびに凍えるようでした。 
     20  2日目は打って変わっての暖かいいい天気。ユーザーの集いも参加者の熱気に頼ることなく、暖かい和やかな会になりました。 
     21 
     22  <写真貼っとく?> 
     23 
     24 
    1925  EnterpriseOSS の方には Vine が何であるかを大いに誤解されてしまったかもしれません。 
    2026  Vineはスケスケを楽しんだりもしますが、国内の老舗ディストリビュータとしての基本は常に忘れず、これからも変わることなくユーザーに優しいLinuxディストリビューションを作り続けます。 
     
    4551 
    4652 
    47 どうでしょうか、上手くできたでしょうか? 
    48 ここまでだと書き換える行数はたったの xx 行です。 
    49 make install と較べてほとんど手間無く、パッケージ管理されたきれいな環境が作れると思います。 
    50  
    51 やっていくと細かくいじるところがいくつも出てきますが、それは問題に出会ったときに少しずつ覚えていくことになります。 
    52 試してみて困ったことがありましたら、MLなどでご相談下さい。 
    53  
    54  
    55 なお、最終的に作った SPECファイルを ::: に置いています。 
    56 何が書き換わっているかを比較しながら、Develppers Guideをご参照頂くと 
     53 == Let's Try == 
     54  === はじめに === 
     55  使用したのは Vine Linux 6 (x86_64)、標準のデスクトップ設定でインストールした環境です。 
     56 
     57  === vine-rpm-helper === 
     58 
     59  使い方は Trac http://trac.vinelinux.org/wiki/Packages/vine-rpm-helper を参照。 
     60 
     61   {{{ 
     62$ sudo apt-get install rpm-build 
     63パッケージリストを読みこんでいます... 完了 
     64依存情報ツリーを作成しています... 完了         
     65以下の追加パッケージがインストールされます: 
     66  elfutils elfutils-libs patch 
     67以下のパッケージが新たにインストールされます: 
     68  elfutils elfutils-libs patch rpm-build 
     69アップグレード: 0 個, 新規インストール: 4 個, 削除: 0 個, 保留: 0 個 
     70938kB のアーカイブを取得する必要があります。 
     71展開後に 2405kB のディスク容量が追加消費されます。 
     72続行しますか? [Y/n]Y 
     73取得:1 http://updates.vinelinux.org 6/x86_64/main elfutils-libs 0.152-2vl6 [238kB] 
     74取得:2 http://updates.vinelinux.org 6/x86_64/main elfutils 0.152-2vl6 [516kB] 
     75取得:3 http://updates.vinelinux.org 6/x86_64/main patch 2.6.1-2vl6 [87.6kB] 
     76取得:4 http://updates.vinelinux.org 6/x86_64/main rpm-build 4.8.1-3vl6 [97.3kB] 
     77938kB を 0s 秒で取得しました (2070kB/s) 
     78変更を適用しています... 
     79準備中                                ############################## [100%] 
     80更新/インストール中 
     81  patch-2.6.1-2vl6.x86_64                ############################## [100%] 
     82  elfutils-libs-0.152-2vl6.x86_64        ############################## [100%] 
     83  elfutils-0.152-2vl6.x86_64             ############################## [100%] 
     84  rpm-build-4.8.1-3vl6.x86_64            ############################## [100%] 
     85完了 
     86   }}} 
     87   自分で ./configure && make && make install されている環境ならきっとビルド環境は揃っていると思いますが、もしインストールしていない場合は最低限の一式として build-essential をインストールして下さい。 
     88   {{{ 
     89$ sudo apt-get install build-essential  
     90パッケージリストを読みこんでいます... 完了 
     91依存情報ツリーを作成しています... 完了         
     92以下の追加パッケージがインストールされます: 
     93  autoconf automake gcc-c++ gettext gettext-devel gettext-libs intltool libsigsegv libstdc++-devel libtool m4 make 
     94  perl-HTML-Parser perl-HTML-Tagset perl-URI perl-XML-Parser perl-libwww-perl 
     95以下のパッケージが新たにインストールされます: 
     96  autoconf automake build-essential gcc-c++ gettext gettext-devel gettext-libs intltool libsigsegv libstdc++-devel 
     97  libtool m4 make perl-HTML-Parser perl-HTML-Tagset perl-URI perl-XML-Parser perl-libwww-perl 
     98アップグレード: 0 個, 新規インストール: 18 個, 削除: 0 個, 保留: 0 個 
     9917.5MB のアーカイブを取得する必要があります。 
     100展開後に 45.1MB のディスク容量が追加消費されます。 
     101続行しますか? [Y/n]Y 
     102 
     103(中略) 
     104 
     105  perl-HTML-Parser-3.68-2vl6.x86_64      ############################## [100%] 
     106  perl-libwww-perl-5.833-3vl6.noarch     ############################## [100%] 
     107  perl-XML-Parser-2.40-1vl6.x86_64       ############################## [100%] 
     108  intltool-0.41.1-2vl6.noarch            ############################## [100%] 
     109  build-essential-1.6-1vl6.noarch        ############################## [100%] 
     110完了 
     111   }}} 
     112 
     113   {{{ 
     114$ apt-get install vine-rpm-helper 
     115   }}} 
     116   できるようにしないと先に進めないね。 
     117 
     118   {{{ 
     119$ mkrpmspec http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-4.1.3.tar.gz 
     120--2011-11-24 22:16:53--  http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-4.1.3.tar.gz 
     121www.unidata.ucar.edu をDNSに問いあわせています... 128.117.149.64 
     122www.unidata.ucar.edu|128.117.149.64|:80 に接続しています... 接続しました。 
     123HTTP による接続要求を送信しました、応答を待っています... 200 OK 
     124長さ: 11097157 (11M) [application/x-gzip] 
     125`/home/kenta/rpm/SOURCES/netcdf/netcdf-4.1.3.tar.gz' に保存中 
     126 
     127100%[==========================================================================>] 11,097,157  3.04M/s 時間 4.2s     
     128 
     1292011-11-24 22:16:58 (2.51 MB/s) - `/home/kenta/rpm/SOURCES/netcdf/netcdf-4.1.3.tar.gz' へ保存完了 [11097157/11097157] 
     130 
     131パッケージを /home/kenta/rpm/BUILD/netcdf-4.1.3 に展開しました。 
     132パッケージ形式は、autotoolize であると認識しました。 
     133ドキュメントを発見: README 
     134mkdir: ディレクトリ `/home/kenta/rpm/SPECS/netcdf' を作成しました 
     135/home/kenta/rpm/SPECS/netcdf/netcdf-vl.spec  を作成しました 
     136   }}} 
     137  ソースをダウンロードして ~/rpm/SOURCES/netcdf/netcdf-4.1.3.tar.gz に配置し、specファイルのひな形を rpm/SPECS/netcdf/netcdf-vl.spec に作ってくれます。 
     138 
     139  では、ビルドしてみましょう。 
     140   {{{ 
     141$ cd ~/rpm/SPECS/ 
     142$ rpm -ba netcdf/netcdf-vl.spec  
     143実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.Zv9qlh 
     144+ umask 022 
     145+ cd /home/kenta/rpm/BUILD 
     146+ cd /home/kenta/rpm/BUILD 
     147+ rm -rf netcdf-4.1.3 
     148+ /bin/tar -xf - 
     149+ /bin/gzip -dc /home/kenta/rpm/SOURCES/netcdf/netcdf-4.1.3.tar.gz 
     150+ STATUS=0 
     151+ '[' 0 -ne 0 ']' 
     152+ cd netcdf-4.1.3 
     153+ /bin/chmod -Rf a+rX,u+w,g-w,o-w . 
     154+ exit 0 
     155実行中(%build): /bin/sh -e /var/tmp/rpm-tmp.YV3T4f 
     156+ umask 022 
     157+ cd /home/kenta/rpm/BUILD 
     158+ cd netcdf-4.1.3 
     159+ CFLAGS='-O2 -m64 -mtune=generic -fno-strict-aliasing -fno-schedule-insns2' 
     160+ export CFLAGS 
     161+ CXXFLAGS='-O2 -m64 -mtune=generic -fno-strict-aliasing -fno-schedule-insns2' 
     162+ export CXXFLAGS 
     163+ FFLAGS='-O2 -m64 -mtune=generic -fno-strict-aliasing -fno-schedule-insns2' 
     164+ export FFLAGS 
     165+ ./configure --host=x86_64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/share --mandir=/usr/share/man --infodir=/usr/share/info 
     166configure: netCDF 4.1.3 
     167checking build system type... x86_64-unknown-linux-gnu 
     168checking host system type... x86_64-unknown-linux-gnu 
     169checking target system type... x86_64-unknown-linux-gnu 
     170checking for a BSD-compatible install... /usr/bin/install -c 
     171checking whether build environment is sane... yes 
     172checking for a thread-safe mkdir -p... /bin/mkdir -p 
     173checking for gawk... gawk 
     174checking whether make sets $(MAKE)... yes 
     175 
     176(中略) 
     177 
     178checking whether byte ordering is bigendian... no 
     179checking size of short... 2 
     180checking size of int... 4 
     181checking size of long... 8 
     182checking size of float... 4 
     183checking size of double... 8 
     184checking size of off_t... 8 
     185checking size of size_t... 8 
     186checking for library containing deflate... no 
     187configure: error: Can't find or link to the z library. Turn off netCDF-4 and      opendap with --disable-netcdf-4 --disable-dap, or see config.log for errors. 
     188エラー: /var/tmp/rpm-tmp.YV3T4f の不正な終了ステータス (%build) 
     189   }}} 
     190   どうも zlib-devel が足りないようにみえますね。 
     191   ここからは道が2つに分かれます。 
     192 
     193   まずはブログの記事にならって、--disable-netcdf-4 オプションをつけてみましょう。 
     194   specファイルをコピーして書き換え、再度ビルドしてみます。 
     195   {{{ 
     196$ cp -a netcdf/netcdf-vl.spec . 
     197$ vim netcdf-vl.spec  
     198$ diff -u netcdf/netcdf-vl.spec netcdf-vl.spec  
     199--- netcdf/netcdf-vl.spec       2011-11-24 22:17:01.708999998 +0900 
     200+++ netcdf-vl.spec      2011-11-24 22:25:35.253996625 +0900 
     201@@ -30,7 +30,7 @@ 
     202 %setup -q 
     203  
     204 %build 
     205-%configure 
     206+%configure --disable-netcdf-4 
     207 %{__make} %{?_smp_mflags} 
     208  
     209 %install 
     210   }}} 
     211 
     212 
     213   {{{ 
     214$ rpm -ba netcdf-vl.spec 
     215 
     216(中略) 
     217 
     218make[3]: Leaving directory `/home/kenta/rpm/BUILD/netcdf-4.1.3' 
     219make[2]: Leaving directory `/home/kenta/rpm/BUILD/netcdf-4.1.3' 
     220make[1]: Leaving directory `/home/kenta/rpm/BUILD/netcdf-4.1.3' 
     221+ /usr/lib/rpm/brp-compress 
     222+ /usr/lib/rpm/brp-strip 
     223+ /usr/lib/rpm/brp-strip-static-archive 
     224+ /usr/lib/rpm/brp-strip-comment-note 
     225Processing files: netcdf-4.1.3-1vl6.x86_64 
     226実行中(%doc): /bin/sh -e /var/tmp/rpm-tmp.Wetkf1 
     227+ umask 022 
     228+ cd /home/kenta/rpm/BUILD 
     229+ cd netcdf-4.1.3 
     230+ DOCDIR=/home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/usr/share/doc/netcdf-4.1.3 
     231+ export DOCDIR 
     232+ rm -rf /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/usr/share/doc/netcdf-4.1.3 
     233+ /bin/mkdir -p /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/usr/share/doc/netcdf-4.1.3 
     234+ cp -pr README /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/usr/share/doc/netcdf-4.1.3 
     235+ exit 0 
     236Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 
     237伸張ファイルの検査中: /usr/lib/rpm/check-files /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64 
     238警告: インストール済み(ただし未伸張)ファイルが見つかりました: 
     239   /usr/bin/nc-config 
     240   /usr/bin/nccopy 
     241   /usr/bin/ncdump 
     242   /usr/bin/ncgen 
     243   /usr/bin/ncgen3 
     244   /usr/include/ncvalues.h 
     245   /usr/include/netcdf.h 
     246   /usr/include/netcdf.hh 
     247   /usr/include/netcdfcpp.h 
     248   /usr/lib64/libnetcdf.a 
     249   /usr/lib64/libnetcdf.la 
     250   /usr/lib64/libnetcdf.so 
     251   /usr/lib64/libnetcdf.so.7 
     252   /usr/lib64/libnetcdf.so.7.1.1 
     253   /usr/lib64/libnetcdf_c++.a 
     254   /usr/lib64/libnetcdf_c++.la 
     255   /usr/lib64/libnetcdf_c++.so 
     256   /usr/lib64/libnetcdf_c++.so.4 
     257   /usr/lib64/libnetcdf_c++.so.4.1.0 
     258   /usr/lib64/pkgconfig/netcdf.pc 
     259   /usr/share/info/dir 
     260   /usr/share/info/netcdf-c.info-1.gz 
     261   /usr/share/info/netcdf-c.info-2.gz 
     262   /usr/share/info/netcdf-c.info.gz 
     263   /usr/share/info/netcdf-cxx.info.gz 
     264   /usr/share/info/netcdf-f77.info-1.gz 
     265   /usr/share/info/netcdf-f77.info-2.gz 
     266   /usr/share/info/netcdf-f77.info.gz 
     267   /usr/share/info/netcdf-f90.info.gz 
     268   /usr/share/info/netcdf-install.info.gz 
     269   /usr/share/info/netcdf-tutorial.info.gz 
     270   /usr/share/info/netcdf.info.gz 
     271   /usr/share/man/man1/nccopy.1.gz 
     272   /usr/share/man/man1/ncdump.1.gz 
     273   /usr/share/man/man1/ncgen.1.gz 
     274   /usr/share/man/man1/ncgen3.1.gz 
     275   /usr/share/man/man3/netcdf.3.gz 
     276書き込み完了: /home/kenta/rpm/SRPMS/netcdf-4.1.3-1vl6.src.rpm 
     277書き込み完了: /home/kenta/rpm/RPMS/x86_64/netcdf-4.1.3-1vl6.x86_64.rpm 
     278実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.NGMuhd 
     279+ umask 022 
     280+ cd /home/kenta/rpm/BUILD 
     281+ cd netcdf-4.1.3 
     282+ /bin/rm -rf /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64 
     283+ exit 0 
     284   }}} 
     285  こんどはビルドできたみたいです。 
     286  でも、"警告: インストール済み(ただし未伸張)ファイルが見つかりました:" と警告が出てますね。 
     287  できた rpm を見てみましょう。 
     288   {{{ 
     289$ rpm -qlp /home/kenta/rpm/RPMS/x86_64/netcdf-4.1.3-1vl6.x86_64.rpm 
     290/usr/share/doc/netcdf-4.1.3 
     291/usr/share/doc/netcdf-4.1.3/README 
     292   }}} 
     293 READMEファイルしか入ってませんね。。。 
     294 
     295  これを修正するには %files セクションを変更します。 
     296 
     297  とりあえず、SPEC Template (http://trac.vinelinux.org/wiki/SpecTemplates/PlainPackage) に倣って、%files セクションを埋めてみます。 
     298   {{{ 
     299$ cp -a netcdf-vl.spec netcdf-vl.spec.old 
     300$ vim netcdf-vl.spec 
     301$ diff -u netcdf-vl.spec.old netcdf-vl.spec 
     302--- netcdf-vl.spec.orig 2011-11-24 22:17:01.708999998 +0900 
     303+++ netcdf-vl.spec      2011-11-24 23:51:14.222999998 +0900 
     304@@ -45,6 +45,11 @@ 
     305 %files 
     306 %defattr(-,root,root) 
     307 %doc README 
     308+%{_bindir}/* 
     309+%{_libdir}/* 
     310+%{_datadir}/* 
     311+%{_mandir}/man?/* 
     312+%{_sysconfdir}/* 
     313  
     314 %changelog 
     315 * Thu Nov 24 2011 Your Name <name@yours.example.com> 4.1.3-1 
     316   }}} 
     317 
     318   もう一度ビルドすると時間が掛かるので、コンパイルをスキップして試してみましょう。 
     319   {{{ 
     320$ rpm -bi --short-circuit netcdf-vl.spec 
     321 
     322(中略) 
     323+ /usr/lib/rpm/brp-compress 
     324+ /usr/lib/rpm/brp-strip 
     325+ /usr/lib/rpm/brp-strip-static-archive 
     326+ /usr/lib/rpm/brp-strip-comment-note 
     327Processing files: netcdf-4.1.3-1vl6.x86_64 
     328エラー: ファイルが見つかりません (by glob): /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/etc/* 
     329実行中(%doc): /bin/sh -e /var/tmp/rpm-tmp.c6xhcf 
     330+ umask 022 
     331+ cd /home/kenta/rpm/BUILD 
     332+ cd netcdf-4.1.3 
     333+ DOCDIR=/home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/usr/share/doc/netcdf-4.1.3 
     334+ export DOCDIR 
     335+ rm -rf /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/usr/share/doc/netcdf-4.1.3 
     336+ /bin/mkdir -p /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/usr/share/doc/netcdf-4.1.3 
     337+ cp -pr README /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/usr/share/doc/netcdf-4.1.3 
     338+ exit 0 
     339 
     340 
     341RPM ビルドエラー: 
     342    ファイルが見つかりません (by glob): /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/etc/* 
     343   }}} 
     344 
     345   /etc は不要だったので、%{_sysconfdir} を外しましょう。 
     346   {{{ 
     347$ cp -a netcdf-vl.spec netcdf-vl.spec.old 
     348$ vim netcdf-vl.spec 
     349$ diff -u netcdf-vl.spec.old netcdf-vl.spec 
     350--- netcdf-vl.spec.old  2011-11-24 23:51:14.222999998 +0900 
     351+++ netcdf-vl.spec      2011-11-24 23:56:07.656999868 +0900 
     352@@ -49,7 +49,6 @@ 
     353 %{_libdir}/* 
     354 %{_datadir}/* 
     355 %{_mandir}/man?/* 
     356-%{_sysconfdir}/* 
     357  
     358 %changelog 
     359 * Thu Nov 24 2011 Your Name <name@yours.example.com> 4.1.3-1 
     360   }}} 
     361 
     362   もう一度試してみましょう。 
     363   {{{ 
     364$ rpm -bl --short-circuit netcdf-vl.spec 
     365Processing files: netcdf-4.1.3-1vl6.x86_64 
     366警告: ファイルが2回表記されています: /usr/share/doc/netcdf-4.1.3 
     367警告: ファイルが2回表記されています: /usr/share/doc/netcdf-4.1.3/README 
     368警告: ファイルが2回表記されています: /usr/share/man/man1/nccopy.1.gz 
     369警告: ファイルが2回表記されています: /usr/share/man/man1/ncdump.1.gz 
     370警告: ファイルが2回表記されています: /usr/share/man/man1/ncgen.1.gz 
     371警告: ファイルが2回表記されています: /usr/share/man/man1/ncgen3.1.gz 
     372警告: ファイルが2回表記されています: /usr/share/man/man3/netcdf.3.gz 
     373Provides: libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) pkgconfig(netcdf) = 4.1.3 
     374Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 
     375Requires: /bin/sh /usr/bin/pkg-config libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.7)(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit) libstdc++.so.6(GLIBCXX_3.4.9)(64bit) 
     376伸張ファイルの検査中: /usr/lib/rpm/check-files /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64 
     377警告: インストール済み(ただし未伸張)ファイルが見つかりました: 
     378   /usr/include/ncvalues.h 
     379   /usr/include/netcdf.h 
     380   /usr/include/netcdf.hh 
     381   /usr/include/netcdfcpp.h 
     382$ rpm -bl --short-circuit netcdf-vl.spec 
     383Processing files: netcdf-4.1.3-1vl6.x86_64 
     384警告: ファイルが2回表記されています: /usr/share/doc/netcdf-4.1.3 
     385警告: ファイルが2回表記されています: /usr/share/doc/netcdf-4.1.3/README 
     386警告: ファイルが2回表記されています: /usr/share/man/man1/nccopy.1.gz 
     387警告: ファイルが2回表記されています: /usr/share/man/man1/ncdump.1.gz 
     388警告: ファイルが2回表記されています: /usr/share/man/man1/ncgen.1.gz 
     389警告: ファイルが2回表記されています: /usr/share/man/man1/ncgen3.1.gz 
     390警告: ファイルが2回表記されています: /usr/share/man/man3/netcdf.3.gz 
     391Provides: libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) pkgconfig(netcdf) = 4.1.3 
     392Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 
     393Requires: /bin/sh /usr/bin/pkg-config libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.7)(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit) libstdc++.so.6(GLIBCXX_3.4.9)(64bit) 
     394伸張ファイルの検査中: /usr/lib/rpm/check-files /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64 
     395警告: インストール済み(ただし未伸張)ファイルが見つかりました: 
     396   /usr/include/ncvalues.h 
     397   /usr/include/netcdf.h 
     398   /usr/include/netcdf.hh 
     399   /usr/include/netcdfcpp.h 
     400   }}} 
     401 
     402  ヘッダーファイルが入っていなかったので、 
     403   {{{ 
     404$ cp -a netcdf-vl.spec netcdf-vl.spec.old 
     405$ vim netcdf-vl.spec 
     406$ diff -u netcdf-vl.spec.old netcdf-vl.spec 
     407--- netcdf-vl.spec.old  2011-11-24 23:56:07.656999868 +0900 
     408+++ netcdf-vl.spec      2011-11-25 00:02:37.313000003 +0900 
     409@@ -47,6 +47,7 @@ 
     410 %doc README 
     411 %{_bindir}/* 
     412 %{_libdir}/* 
     413+%{_includedir}/* 
     414 %{_datadir}/* 
     415 %{_mandir}/man?/* 
     416  
     417   }}} 
     418 
     419  もう一度やってみます。 
     420   {{{ 
     421$ rpm -bl --short-circuit netcdf-vl.spec 
     422Processing files: netcdf-4.1.3-1vl6.x86_64 
     423警告: ファイルが2回表記されています: /usr/share/doc/netcdf-4.1.3 
     424警告: ファイルが2回表記されています: /usr/share/doc/netcdf-4.1.3/README 
     425警告: ファイルが2回表記されています: /usr/share/man/man1/nccopy.1.gz 
     426警告: ファイルが2回表記されています: /usr/share/man/man1/ncdump.1.gz 
     427警告: ファイルが2回表記されています: /usr/share/man/man1/ncgen.1.gz 
     428警告: ファイルが2回表記されています: /usr/share/man/man1/ncgen3.1.gz 
     429警告: ファイルが2回表記されています: /usr/share/man/man3/netcdf.3.gz 
     430Provides: libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) pkgconfig(netcdf) = 4.1.3 
     431Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 
     432Requires: /bin/sh /usr/bin/pkg-config libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.7)(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit) libstdc++.so.6(GLIBCXX_3.4.9)(64bit) 
     433伸張ファイルの検査中: /usr/lib/rpm/check-files /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64 
     434   }}} 
     435 
     436  今度は良さそうですね。警告はまた後で調べることにして、これでパッケージを作ってインストールしてみましょう。 
     437   {{{ 
     438$ rpm -bb --short-circuit netcdf-vl.spec 
     439 
     440(中略) 
     441 
     442+ cp -pr README /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64/usr/share/doc/netcdf-4.1.3 
     443+ exit 0 
     444警告: ファイルが2回表記されています: /usr/share/man/man1/nccopy.1.gz 
     445警告: ファイルが2回表記されています: /usr/share/man/man1/ncdump.1.gz 
     446警告: ファイルが2回表記されています: /usr/share/man/man1/ncgen.1.gz 
     447警告: ファイルが2回表記されています: /usr/share/man/man1/ncgen3.1.gz 
     448警告: ファイルが2回表記されています: /usr/share/man/man3/netcdf.3.gz 
     449Provides: libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) pkgconfig(netcdf) = 4.1.3 
     450Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 
     451Requires: /bin/sh /usr/bin/pkg-config libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.7)(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit) libstdc++.so.6(GLIBCXX_3.4.9)(64bit) 
     452伸張ファイルの検査中: /usr/lib/rpm/check-files /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64 
     453書き込み完了: /home/kenta/rpm/RPMS/x86_64/netcdf-4.1.3-1vl6.x86_64.rpm 
     454実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.62PB3T 
     455+ umask 022 
     456+ cd /home/kenta/rpm/BUILD 
     457+ cd netcdf-4.1.3 
     458+ /bin/rm -rf /home/kenta/rpm/BUILDROOT/netcdf-4.1.3-1vl6.x86_64 
     459+ exit 0 
     460   }}} 
     461 
     462  では、早速インストールしてみます。 
     463   {{{ 
     464$ sudo rpm -Uhv /home/kenta/rpm/RPMS/x86_64/netcdf-4.1.3-1vl6.x86_64.rpm  
     465[sudo] password for kenta:  
     466準備中...                ########################################### [100%] 
     467        ファイル /usr/share/info/dir (パッケージ netcdf-4.1.3-1vl6.x86_64 から) は、パッケージ install-info-4.13a-1vl6.x86_64 からのファイルと競合しています。 
     468$ rpm -qf /usr/share/info/dir 
     469install-info-4.13a-1vl6.x86_64 
     470   }}} 
     471 
     472  ふーむ、netcdfパッケージに入っている /usr/share/info/dir が install-info とぶつかっているようです。 
     473  とりあえずやっつけですが、/usr/share/info/dir を外してしまいましょう。 
     474   {{{ 
     475$ cp -a netcdf-vl.spec netcdf-vl.spec.old  
     476$ diff -u netcdf-vl.spec.old netcdf-vl.spec 
     477--- netcdf-vl.spec.old  2011-11-25 00:22:45.191000089 +0900 
     478+++ netcdf-vl.spec      2011-11-25 00:21:34.061999867 +0900 
     479@@ -49,6 +49,7 @@ 
     480 %{_libdir}/* 
     481 %{_includedir}/* 
     482 %{_datadir}/* 
     483+%exclude %{_infodir}/dir 
     484 %{_mandir}/man?/* 
     485  
     486 %changelog 
     487$ rpm -bb --short-circuit netcdf-vl.spec 
     488$ sudo rpm -Uhv /home/kenta/rpm/RPMS/x86_64/netcdf-4.1.3-1vl6.x86_64.rpm  
     489準備中...                ########################################### [100%] 
     490   1:netcdf                 ########################################### [100%] 
     491   }}} 
     492 
     493  今度はインストールできました。 
     494  警告が出ていたり、/usr/share/info/dir を外したりしていますが、まずはとりあえずできました。 
     495  mkrpmspec を使うと、たった 7行の書き換えだけで rpm パッケージを作ることができました。 
     496   {{{ 
     497$ diff -u netcdf/netcdf-vl.spec netcdf-vl.spec 
     498--- netcdf/netcdf-vl.spec       2011-11-24 22:17:01.708999998 +0900 
     499+++ netcdf-vl.spec      2011-11-25 00:21:34.061999867 +0900 
     500@@ -30,7 +30,7 @@ 
     501 %setup -q 
     502  
     503 %build 
     504-%configure 
     505+%configure --disable-netcdf-4 
     506 %{__make} %{?_smp_mflags} 
     507  
     508 %install 
     509@@ -45,6 +45,12 @@ 
     510 %files 
     511 %defattr(-,root,root) 
     512 %doc README 
     513+%{_bindir}/* 
     514+%{_libdir}/* 
     515+%{_includedir}/* 
     516+%{_datadir}/* 
     517+%exclude %{_infodir}/dir 
     518+%{_mandir}/man?/* 
     519  
     520 %changelog 
     521 * Thu Nov 24 2011 Your Name <name@yours.example.com> 4.1.3-1 
     522   }}} 
     523 
     524  make install と較べてほとんど手間無く、パッケージ管理されたきれいな環境が作れると思います。 
     525 
     526  やっていくと細かくいじるところがいくつも出てきますが、それは問題に出会ったときに少しずつ覚えていくことになります。 
     527  試してみて困ったことがありましたら、MLなどでご相談下さい。 
     528 
     529 
     530  なお、最終的に作った SPECファイルを ::: に置いています。 
     531  何が書き換わっているかを比較しながら、Develppers Guideを見てみてください。 
    57532 
    58533 == 参考資料 == 
    59   lVine Linux開発者ガイド: 第5章 SPECファイルの記述 
     534  Vine Linux開発者ガイド: 第5章 SPECファイルの記述 
    60535  http://vinelinux.org/docs/vine5/manuals/make-spec.html 
     536 
     537  Packages/vine-rpm-helper – VineSeed 
     538  http://trac.vinelinux.org/wiki/Packages/vine-rpm-helper 
    61539 
    62540  spec ファイルのテンプレート - サブパッケージがない単純なパッケージ 
     
    67545 
    68546   
    69  
    70  == Place Holder == 
    71   === Place Holder === 
    72    {{{ 
    73  
    74    }}} 
    75    と最低限のファイル名を変更し、あと、configure のオプションを追加しておきます。 
    76  
    77547 
    78548 == Follow up ==