| 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 個 |
| | 70 | 938kB のアーカイブを取得する必要があります。 |
| | 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] |
| | 77 | 938kB を 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 個 |
| | 99 | 17.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 |
| | 121 | www.unidata.ucar.edu をDNSに問いあわせています... 128.117.149.64 |
| | 122 | www.unidata.ucar.edu|128.117.149.64|:80 に接続しています... 接続しました。 |
| | 123 | HTTP による接続要求を送信しました、応答を待っています... 200 OK |
| | 124 | 長さ: 11097157 (11M) [application/x-gzip] |
| | 125 | `/home/kenta/rpm/SOURCES/netcdf/netcdf-4.1.3.tar.gz' に保存中 |
| | 126 | |
| | 127 | 100%[==========================================================================>] 11,097,157 3.04M/s 時間 4.2s |
| | 128 | |
| | 129 | 2011-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 |
| | 134 | mkdir: ディレクトリ `/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 |
| | 166 | configure: netCDF 4.1.3 |
| | 167 | checking build system type... x86_64-unknown-linux-gnu |
| | 168 | checking host system type... x86_64-unknown-linux-gnu |
| | 169 | checking target system type... x86_64-unknown-linux-gnu |
| | 170 | checking for a BSD-compatible install... /usr/bin/install -c |
| | 171 | checking whether build environment is sane... yes |
| | 172 | checking for a thread-safe mkdir -p... /bin/mkdir -p |
| | 173 | checking for gawk... gawk |
| | 174 | checking whether make sets $(MAKE)... yes |
| | 175 | |
| | 176 | (中略) |
| | 177 | |
| | 178 | checking whether byte ordering is bigendian... no |
| | 179 | checking size of short... 2 |
| | 180 | checking size of int... 4 |
| | 181 | checking size of long... 8 |
| | 182 | checking size of float... 4 |
| | 183 | checking size of double... 8 |
| | 184 | checking size of off_t... 8 |
| | 185 | checking size of size_t... 8 |
| | 186 | checking for library containing deflate... no |
| | 187 | configure: 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 | |
| | 218 | make[3]: Leaving directory `/home/kenta/rpm/BUILD/netcdf-4.1.3' |
| | 219 | make[2]: Leaving directory `/home/kenta/rpm/BUILD/netcdf-4.1.3' |
| | 220 | make[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 |
| | 225 | Processing 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 |
| | 236 | Requires(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 |
| | 327 | Processing 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 | |
| | 341 | RPM ビルドエラー: |
| | 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 |
| | 365 | Processing 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 |
| | 373 | Provides: libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) pkgconfig(netcdf) = 4.1.3 |
| | 374 | Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 |
| | 375 | Requires: /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 |
| | 383 | Processing 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 |
| | 391 | Provides: libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) pkgconfig(netcdf) = 4.1.3 |
| | 392 | Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 |
| | 393 | Requires: /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 |
| | 422 | Processing 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 |
| | 430 | Provides: libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) pkgconfig(netcdf) = 4.1.3 |
| | 431 | Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 |
| | 432 | Requires: /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 |
| | 449 | Provides: libnetcdf.so.7()(64bit) libnetcdf_c++.so.4()(64bit) pkgconfig(netcdf) = 4.1.3 |
| | 450 | Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 |
| | 451 | Requires: /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 |
| | 469 | install-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を見てみてください。 |