2010-11-26 16 views
2

ソースからコンパイルされたパッケージを簡単に管理する方法を探していますので、アップグレードするときにアンインストール/インストール新しいパッケージ。ソースからコンパイルされたパッケージを管理する最善の方法

CheckInstallというユーティリティが見つかりましたが、これはかなり古いようですが、これを信頼できる方法で使用する前に、私は不思議でしたか? http://www.asic-linux.com.mx/~izto/checkinstall/

また、これらのインストールをソースから処理するために使用する他の方法やユーティリティも簡単にわかりますか?

+0

Debian/Ubuntuに切り替えて、これを新しいパッケージとして投稿してください:) –

+0

すでにパッケージをビルドする方法を教えてもらえたら侮辱されますか? –

+0

どういう意味ですか?これには単純な解決策がありますか?説明してください。 –

答えて

4

何をするにしても、あなたが最終的にあなたのディストリビューションのパッケージ管理システム(Debianの/ UbuntuのなどのためにdpkgのFedora/Mandrivaは/ RH/SuSEのための例えば回転数)を通過することを確認してください。さもなければ、あなたのパッケージマネージャはあなたが手でインストールしたパッケージについて何も知りません。あなたは満足していない依存関係や、最悪の場合、すべての混乱の母親を持つでしょう。

パッケージマネージャーをお持ちでない場合は、パッケージマネージャーを入手してください。

あなた自身のパッケージを作ることを学ぶことをお勧めします。まず、配布物のソースパッケージを見てみましょう。実際に、あなたがしたいことがMyPackageのバージョン1.2.3にアップグレードされている場合、1.2.2用のディストリビューションのソースパッケージは通常、単純なバージョンの変更で適応させることができます(パッチがない限り、別の話です...) 。

配布品質のパッケージ(スプリットライブラリ/アプリケーション/デバッグパッケージ、マルチアーキテクチャサポートなど)が必要な場合を除き、普通のconfigure & make & make installシナリオを適切なソースパッケージに変換するのは簡単です。 /ではなくディレクトリにインストールするようにパッケージを説得できれば、通常は完了です。

checkinstallについては、過去に使用していましたが、いくつかの単純なパッケージで動作しましたが、実際にパッケージが自分のシステムにインストールされるということは気に入らなかった rpm/debパッケージ。インストールされたファイルを追跡してパッケージ化するので、不快な変更を防ぐことはできませんでした。ああ、それは私のために別の主な固執ポイントである作業に根本的なprililegesを必要としました。そして、静的にリンクされたコアユーティリティで何が起こるのか...

ほとんどのツールはそのように動作するようですので、自分のパッケージ「Right Way(TM)」を構築し、他の場所で混乱する。

http://www.dwheeler.com/essays/automating-destdir.html

PS:ところでcheckinstallのは、おそらくそれはまだ十分に現在のだということを意味し、2009年末に更新されましたあなたはまだ興味を持っている場合は、しかし、ここで同様のプログラムのリストがあります。

EDIT:私の意見では

、それはリポジトリに容易に入手できない場合は、パッケージの最新バージョンへのアップグレードを実行する最も簡単な方法は、お使いのディストリビューションでは、最新バージョンのソースパッケージを変更することです。例えば。CentOSに最新バージョンのソースパッケージはここにある:

http://mirror.centos.org/centos/5.5/os/SRPMS/

http://mirror.centos.org/centos/5.5/updates/SRPMS/

...

あなたが、例えばアップグレードする場合PHPなど、最新のSRPMを入手できます。 php-5.1.6-27.el5.src.rpm。

rpm -hiv php-5.1.6-27.el5.src.rpm 

ソースパッケージ(ソースのみ - 何もコンパイルしません)をインストールします。それからrpmビルドディレクトリ(私のmandrivaシステムの/ usr/src/rpm)に行き、最新のPHPソースtarballをSOURCESサブディレクトリにコピーし、インストールされたばかりのtarballと同じ方法で圧縮されていることを確認しますそこ。それは新しいパッケージのために取るすべてです多くの場合

rpmbuild -ba php.spec 

:その後、あなたは、パッケージのバージョンを変更してのようなものでバイナリパッケージを構築するためにSPECSディレクトリにphp.specファイルを編集します。他のものでは、少し複雑になるかもしれません。パッチがある場合や、パッケージに大きな変更があった場合は、より多くする必要があります。

rpmとrpmbuildコマンド(そのマンページはかなり広範囲にわかります)を読んで、specファイルの記述に関するドキュメントをチェックすることをお勧めします。公式のバックポートリポジトリに頼ることに決めたとしても、独自のパッケージを構築する方法を知っておくと便利です。参照:

http://www.rpm.org/wiki/Docs

EDIT 2:

あなたはすでにシステムの整合性を維持することとは別に、実際に長期的に構築プロセスを簡素化しますRPMを使用して、ソースからパッケージをインストールしている場合。その理由は、ビルドのプロセスは、あなた自身の上で各パッケージのクォークを覚えておく必要がないからです(「うーん、そう、私は覚えています、私はCFLAGSに-lbarを追加する必要があります」)。 .specファイルには、幾分構造化されたビルドスクリプトと想像することができます。

パッケージの以前のバージョンの.specファイルが既にある場合は、2つの主な問題がありますが、rpmを使用してパッケージをビルドするかどうかには2つの問題があります。

  • ディストリビューションによって以前のバージョンに適用されたパッチは、それ以上適用されません。多くの場合、パッチはすでにアップストリームパッケージに適用されているため、単に削除することができます。他の人には、それを編集する必要があるかもしれません。もし重要ではないと思えば、それを削除することもできます。

  • パッケージは、いくつかの主要な点で変更されました。インストールするファイルのレイアウト。新しいバージョンごとにリリースノートを読んでいますか?これらの2つの問題以外に

、アップグレードは、多くの場合、単にspecファイルにバージョン番号を変更し、rpmbuildの実行に沸く - のtarballからインストールするよりも簡単。

私はあなたのようなソフトウェアのいくつかの単純な部分のためのチュートリアルで、またはソースパッケージを見ていることを示唆している:あなたはbuildlingパッケージの経験をお持ちの場合は

http://mirror.centos.org/centos/5.5/os/SRPMS/ipv6calc-0.61-1.src.rpm

http://mirror.centos.org/centos/5.5/os/SRPMS/libevent-1.4.13-1.src.rpm

をtarballから、rpmを使ってソフトウェアを構築することは、本当に大きな飛躍ではありません。ただし、プレマイドバイナリパッケージをインストールするほど簡単なことはありません。

+0

まずは答えに感謝しますが、ソースからインストールしたパッケージをインストールしてアンインストールするための単純なソリューションを探していました。今はRPMの内部動作についてはあまり気にしていませんが、独自のパッケージを構築したり、ソースからパッチを作成するためには、バージョン間の変更を知る必要があります。アップグレードのプロセスを本当に単純化します。あるいは、私はプロセスの複雑さを理解していませんか? –

0

私はDebianでcheckinstallを使用します。 CentOSではそれほど違ってはいけません。私はそのようにそれを使用します。

./configure 
make 
sudo checkinstall make install # fakeroot in place of sudo works usally for more security 
# install the package generated 
関連する問題