本当に最後のことをしたいですか?バックポートはできませんか?

本当に最後のことをしたいですか?バックポートはできませんか?

私はCentOS 5.5を使用しています。一部のパッケージを新しいバージョンにアップグレードする必要がありますが、残念ながら使用できません。ソースからビルドしています。

後で特定のパッケージが利用可能になったら、ソースからビルドしたバージョンを削除し、そのパッケージに置き換えることができるように、yumを使用してソースからビルドしたものを管理する簡単な方法はありますか?

ベストアンサー1

本当に最後のことをしたいですか?バックポートはできませんか?

ソースからビルドするのではなく、バックポートをインストールする方が簡単かもしれません。 RHELベースの展開には、デフォルトでセキュリティ修正のバックポートが含まれています。そして、あなたは何もする必要はありません! ieを使用して、パッケージrpm -q --changelog httpd | grep CVEのセキュリティ修正を確認できますhttpd。考えるこれを読んでくださいこれがCentOSに以前のバージョンで見られるパッケージがある理由です。これが気に入らない場合は、最先端を使用する他のディストリビューションを使用することをお勧めします。特徴はい、これは機能です。これに気づいたら読んでください。

私たちはシステムを崩さないようにします

インターネットの様々な記事によると安定したCentOSにソースパッケージをインストールすると、システム構成が破損する可能性があるため、特別な注意を払う必要があります。また、パッケージをビルドするとシステムに独自にインストールしようとするので、ルートとしてパッケージをビルドしないでください。、この場合は2つの端末を使用することをお勧めします。 1つはツールのインストール用、yumもう1つはパッケージの構築用です。つまり、システムを破りましょう:D。

前提条件

パッケージを構築する前に(他のものと同様に)これを実行するのに適したツールセットが必要なので、フォームソースを構築するための基本的なツールセットをダウンロードして開始する必要があります。

$ sudo yum groupinstall "Development Tools"
$ sudo yum install rpm-build

一部の最新のソフトウェアパッケージには、以下に含まれる特定のマクロとスクリプトが必要ですredhat-rpm-config

$ sudo yum install redhat-rpm-config

つまり、ビルドするパッケージ/ソースによっては、これ以上のヘッダーが必要になることがあります。特定のビルド依存関係を事前に検索するだけで十分です。

環境を作り出す

次のステップは、ホームディレクトリにRPMを構築するために必要なファイルとディレクトリを作成することです。前に述べたように、システムライブラリやその他のファイルが破損する可能性を避けるために、rootユーザーを使用してRPMをビルドしないでください。。あなたはする必要があります常に非特権の使用これを行うためにユーザー。

それでは、ホームパスにディレクトリ構造を作成しましょう。

 $ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

を作成する必要がありますが~/.rpmmacros、そのファイルがないことを確認するか、現在のファイルをバックアップしておく必要があります。

 $ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

その後、システムが検索する必要なく、ほとんどのRPMパッケージをビルドする準備ができているはずです。

より多くのツールが必要です

について聞いたことがありますmakeか?まあ、まだインストールしていません。それでは、手(指)を動かしてみましょう。

$ sudo yum install make

Cまた、以下で実行されるいくつかのパッケージをビルドするためにライブラリが必要になる場合がありますC

# yum install gcc

前述のように、より多くのライブラリが必要になる場合がありますが、これは構築しているソフトウェアによって異なります。通常、これらのファイルは次のように終了するため、パッケージからインストールする必要があることを知らせるとインストールする-devel必要zlibがありますzlib-devel

ソースコードのパッケージと生成.spec

tar.gz文書を受け取ったはずです。そうでなければ何を待っていますか? ?ソースコードがある場合は、.specファイルを生成する必要があります。これはdebian/*、ビルドするパッケージのルールと情報を含むという点で、Debianに似たシステム上のファイルと同じです。

コピーの例は次のとおりです。どこかで:

#
# Example spec file for cdplayer app...
#
Summary: A CD player app that rocks!
Name: cdplayer
Version: 1.0
Release: 1
Copyright: GPL
Group: Applications/Sound
Source: ftp://ftp.gnomovision.com/pub/cdplayer/cdplayer-1.0.tgz
URL: http://www.gnomovision.com/cdplayer/cdplayer.html
Distribution: WSS Linux
Vendor: White Socks Software, Inc.
Packager: Santa Claus <[email protected]>

%description
It slices!  It dices!  It's a CD player app that
can't be beat.  By using the resonant frequency
of the CD itself, it is able to simulate 20X
oversampling.  This leads to sound quality that
cannot be equaled with more mundane software...

これまではすべてが自明すべきだと思います。しかし、ここではパッケージの作成、準備などに関するルールも作成する必要がありますが、誰もが簡単に作成できるように努力するので、マクロを使います。

%prep
%setup

最初の数行は、%prepソフトウェアパッケージをアップグレードしてインストールする前に実行する必要がある準備作業を示しています。手動で独自のルールを作成することもできますが、正直なところ、それは痛いです。これで終わったので、次の部分は%buildここで何が起こっているのかを簡単に知ることができます。 ;)

%build
make

このセクションはニーズに合わせてパーソナライズできます。BUILD_PARAMETERS="--some-switch"これはもちろんソースパッケージによって異なります。さて、%install次のような部分が出てきます。

%install
make install

ここにはロケット科学はありません。したがって、一部だけが残ります%files

%files
%doc README
/usr/local/bin/cdp
/usr/local/bin/cdplay
/usr/local/man/man1/cdp.1

このセクションには、パッケージに含まれるすべてのファイルが一覧表示されます。このセクションが設定されていない場合、パッケージは事実上空です!文書は...あなたがすでに知っていることを意味します%doc。このセクションに含めるファイルをどのように選択しますか%files?引用するには:

ほとんどのアプリケーションファイルはmakefileを介してインストールされているため、RPMはビルドプロセスの対応する部分を制御できないため、どのファイルをパッケージに含めるかを自動的に判断することはできません。一部の人は、インストールするすべてのファイルの名前を記録する修正版のインストールを使用しようとします。しかし、すべてのmakefileがinstallを使用するわけではなく、使用しても時々使用されます。

試してみるもう1つのアプローチは、ビルドの前後にビルドシステム内のすべてのファイルのリストを取得し、違いをファイ​​ルのリストとして使用することです。この方法では、アプリケーションがインストールしたすべてのファイルを確実に見つけることができますが、システムログ、/ tmpのファイルなどの不要なファイルも選択できます。このアプローチを実現可能にする唯一の方法は、ビルドシステムで他のタスクを実行しないことです。これは非常に不便です。さらに、このアプローチは、特定の時間に複数のパッケージがシステムに構築されるのを防ぎます。

現在のファイルリストを作成する最善の方法は、makefileを読んでどのファイルがインストールされているかを確認し、ビルドシステムにインストールされているファイルと比較して確認し、リストを作成することです。

どのようにするかによって異なります:).

仕上げのお手入れ

いいですね。動作する単純なファイルがありました.spec。しかし、世界が常に順調に進むわけではなく、これがうまくいかない場合もあるので、より複雑なビルドステップが必要になることがあります。見つけました。このガイドフォローするのは簡単で便利です。

源泉:

おすすめ記事