rpmパッケージを apt-get や rpm -i や rpm -U でうまくインストールできない場合は、ソースパッケージ(src.rpm)からバイナリパッケージを作成する必要があります。 また、お使いのVine Linux用に用意されたパッケージ以外(Fedora 向けや Vine Linux の他のバージョン向けのパッケージなど)をインストールする場合は必ずソースパッケージから再構築して下さい。
root ユーザーは全ての権限をもっています。 そのために、パッケージ再構築時の "操作ミス" や、"パッケージに含まれるミス" によって、 重要なファイルを書き換えたり削除して、システム全体に致命的なダメージを与えたり、 登録されているユーザーやグループを削除してしまったりすることがあるかもしれません。
また、パッケージに "悪意のあるコード" が含まれていれば、ネットワークを通じてユーザー情報を漏洩させたり、外部からあなたのPCを自由に操作できるようにしてしまうことがあるかもしれません。
これらの危険を避けるために、root 権限が必要となるインストール、アンインストール以外の作業は全て一般ユーザーで行って下さい。 Vine Linux で提供しているパッケージについては、再構築時に root 権限が必要となるものはないはずです。
また、Vine Linux 3.0 からは、パッケージングに関する指針に従って、パッケージに GnuPG による署名が施されるようになりました。
もし、Vine Linux で提供しているパッケージのミスなどが見つかった場合には、メーリングリスト等を通じて報告して下さい。 ミスの発見の情報だけでも歓迎され、パッケージが改善されるでしょう。
ソースパッケージを rebuild するためには、rpmbuild というコマンドが必要になります。[1]このコマンドは rpm-build というパッケージに含まれています。
また、圧縮されたファイルを展開するためのコマンドや、コンパイル作業に必要となるコマンドなどを含んださまざまなパッケージが必要となります。
Vine Linux では、これらのパッケージをまとめてインストールするために、build-essential というパッケージが用意されています。root ユーザーでインストールしてください。
# apt-get install build-essential |
rpm-build,gcc,gcc-c++,glibc-devel,libstdc++3-devel,make,gzip,bzip2,tar,patch,findutils,fileutils,file,libtool,automake,autoconf などがインストールされます。
最低限の開発環境はインストールされましたが、パッケージによってはその他にもライブラリ等のパッケージが必要になる場合があります。詳細は、項8.4.3で説明します。
一般ユーザーの権限で src.rpm を rebuild するために、パッケージを展開し、構築するための場所が用意されています。 このディレクトリは ~/rpm となっています。もし、ホームディレクトリ(~)にこのディレクトリがなければ以下のようにして作成してください。
$ cd $ mkrpmdir . |
mkrpmdir コマンドを実行すると、必要なディレクトリと 設定ファイル ~/.rpmmacros を作成してくれます。
手動でディレクトリを作成するには、以下のようにします。
$ mkdir -p ~/rpm/{BUILD,SOURCES,SPECS,SRPMS,RPMS/{i386,i586,i686,noarch}} |
また、~/.rpmmacros に設定を記述しておく必要があります。以下のようにしてください。
$ echo "%_topdir $HOME/rpm" > ~/.rpmmacros |
再構築しようとしているパッケージが、再構築後のインストール時に他のパッケージを必要とする場合があります。 apt-get install に -s オプション(simulateのs)をつけて、インストールを試行すると確認できます。 他のパッケージの再構築も行うなら、確認しておきましょう。 root で行ってください。
# apt-get -s install パッケージ名 |
xemacs の場合は次のようになります。
# apt-get -s install xemacs パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下の追加パッケージがインストールされます: xemacs-sumo 以下のパッケージが新たにインストールされます: xemacs xemacs-sumo アップグレード: 0 個, 新規インストール: 2 個, 削除: 0 個, 保留: 0 個 |
xemacs をインストールするには、xemacs-sumo も必要なことがわかりました。
ソースパッケージを再構築する場合には、開発用のパッケージを必要とするものがあります。 必要なコンパイラーやdevelパッケージは以下のようにするとインストールすることができます。 root で実行してください。
# apt-get build-dep パッケージ名 |
xemacs の場合は次のようになります。
# apt-get build-dep xemacs パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下のパッケージが新たにインストールされます: Canna-devel XOrg-devel autoconf213 faces-devel libdnd-devel libjpeg-devel libpng-devel libtiff-devel libwnn6-devel openMotif-devel xemacs-sumo 略 |
xemacs の再構築に、xemacs-sumo も必要なようです。xemacs-sumo は再構築せずにインストールしてしまうことにします。xemacs-sumo も再構築する場合は、xemacs より先に再構築して、インストールしてください。
特定のコマンドのソースを読みたい場合など、どのパッケージに含まれているかを知りたい場合は、項8.2.8、項8.3.4を参照してください。
Vine Linux 向けに用意されているパッケージのソースパッケージは apt-get コマンドで簡単に入手できます。
$ apt-get source パッケージ名 |
コマンドを実行したディレクトリにソースパッケージがダウンロードされます。
例 8-8. xemacs のソースパッケージを入手する
$ apt-get source xemacs パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 8846kB のソースアーカイブを取得します。 取得:1 http://updates.vinelinux.org 3.0/i386/plus xemacs 21.4.15-0vl2 (srpm) [8846kB] 8846kB を 2m24s 秒で取得しました (61.1kB/s) 1:xemacs ########################################### [100%] |
Vine Linuxを配布しているftpサイトにアクセスすると Vine-バージョン/SRPMS/ というディレクトリがあり、そこにソースパッケージがあります。
また、Errata 等で更新されたパッケージについては、Vine-バージョン/updates/SRPMS/ にソースパッケージが置かれています。
VinePlus のパッケージは VinePlus/バージョン/ の中にあり、3.0からカテゴリによって、SRPMS.extras/、SRPMS.nonfree/、SRPMS.orphaned/、SRPMS.plus/、SRPMS.task/ のようにわけられています。
ftp サイトによって、多少ディレクトリの構成が異なるかもしれませんが、SRPMS というところを探していけば見付けることができます。
具体的なパッケージ名がわかっている場合には、apt-get コマンドを利用したほうが簡単に入手できます。
apt-getコマンドでソースパッケージを再構築するには、sourceコマンドに-bオプションを付加します。
$ apt-get -b source パッケージ名 |
カレントディレクトリにソースパッケージがあるかどうかチェックが行われ、無い場合はダウンロードされます。既にダウンロードしている場合は、パッケージ名の代わりにソースパッケージ名でも構いません。
再構築が完了すると 書き込み完了: ファイル名 と表示されるのでメッセージを頼りにできあがったバイナリRPMをインストールしてください。
例 8-9. xemacs の再構築
$ apt-get -b source xemacs パッケージリストを読みこんでいます... 依存情報ツリーを作成しています... 8846kB のソースアーカイブを取得します。 取得:1 http://updates.vinelinux.org 3.0/i386/plus xemacs 21.4.15-0vl2 (srpm) [8846kB] 1B を 10s 秒で取得しました (0B/s) xemacs-21.4.15-0vl2.src.rpm をインストール中 実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.66891 略 書き込み完了: /home/user/rpm/RPMS/i386/xemacs-21.4.15-0vl2.i386.rpm 書き込み完了: /home/user/rpm/RPMS/i386/xemacs-el-21.4.15-0vl2.i386.rpm 略 + umask 022 + rm -rf xemacs-21.4.15 + exit 0 |
FedraやTurbo Linuxなど、他のディストリビューション向けに配布されているパッケージを利用する場合は、そのソースRPMを取得して再構築する必要があります。 この場合、apt-getによる再構築はできませんのでrpmコマンドを使って再構築する必要があります。
rpmbuild --rebuild ソースパッケージ |
答: できるだけ Vine Linux 向けに作成されたパッケージの使用をお薦めしますが、Vine Linux 向けのパッケージが用意されていない場合など他のディストリビューション向けのパッケージを探したい場合は、それぞれのディストリビューションの公式サイトやRpmfindなどを利用してください。また、目的のアプリケーションの公式サイトにソースパッケージ(*.src.rpm)が用意されている場合もあります。
答: いくつかの原因が考えられます。いずれの場合にしろ、RPMパッケージを作成するための知識が必要になりますのでRPMパッケージの作成を参照してください。
必要なパッケージを再構築するために必要なパッケージをインストールしようとしたが、見つからない場合、パッケージ名が異なっている場合があります。例えば、Vine Linux 2.6 では docbook-dtd41-sgml と呼ばれていたパッケージは、3.0以降 docbook-dtds に統合されています。この様な場合は、specファイルの修正が必須になります。当然、該当するパッケージもインストールしておく必要があります。
パッケージを作成した環境にインストールされていたためにパッケージ開発者がspecファイルへの記述を忘れてしまったパッケージが存在する場合があります。パッケージの再構築に失敗する直前のエラーメッセージなどを参考に必要なパッケージをインストールし、できるだけspecファイルを修正してください。
過去のバージョンで依存パッケージに互換性のない仕様変更が行われており、specファイルでバージョンの制限に問題があるために再構築に失敗する場合が考えられます。この場合は、古いバージョンをインストールするためのパッケージがないか、逆に新しいバージョンに対応したソースRPMがないか探してください。例えば、PNGフォーマットを扱うためのライブラリであるlibpngには、libpng10という古いlibpngをインストールするためのパッケージが存在します。
答: 基本的には、RPMパッケージの作成を参照してください。
ただし、それらの圧縮ファイルにspecファイルが含まれているとrpmbuildコマンドの-tを利用して再構築できる場合があります。
$ rpmbuild -ta packagename-version.tar.gz |
この例の場合は、再構築が成功した場合、バイナリRPMとソースRPMの両方が作成されます。
答: 将来のメンテナンスを考えると個人的に使うアプリケーション等であってもRPMの管理下に置いた方が便利でしょう。
rpm で配布されていないもの、spec ファイルの無いもの でも、インストール用のシェルスクリプト や Makefile が用意されているものなら、CheckInstall を利用すると rpm としてインストールできます。ソースアーカイブにインストール用の Makefile や シェルスクリプト があっても、アンインストール用のものは用意されていないことも多いですが、CheckInstall を利用すると、アンインストールが簡単にできるようになります。
CheckInstallは、VinePlusに用意されていますのでroot権限で以下のコマンドを実行してください。
# apt-get install checkinstall |
使い方は、
# make install |
# checkinstall |
# sh install.sh |
# checkinstall sh install.sh |
[1] | RPM Version 4 で 再構築等にかかわる rpm -b や rpm --rebuild が rpm 本体のパッケージから分離され rpm-build のパッケージとなり、コマンドも rpmbuild -b , rpmbuild --rebuild となりました。過去との互換性のためにVine Linux では、rpm-build のパッケージがインストールされていれば、rpm -b や rpm --rebuild も使えますが、今後はrpmbuildを使う様にしてください。 |