2017-09-28 33 views
0

私はRPMの構築について読んできました。プロセスはかなり複雑です。このようなプログラム/ソフトウェアはありますか?スペックファイルなしで1行のソースからRPMを構築する方法?

  1. tar.gzファイルをダウンロードしてください。
  2. 実行
  3. RPMファイルがディレクトリ

どのようなプログラムが存在するかに出力されたディレクトリにディレクトリへ

  • CDを抽出しますか?あたかものように見えます。結局、私がmakeを実行したり、インストールしたりするとき、スペックファイルを指定する必要はなく、ソフトウェアのインストール先を指定する必要はありません。だから、なぜRPMを作成するためにすべてをやらなければならないのですか?

    私はのcheckinstallを使用してみましたが、私のようなエラーを得続けるには、「ディレクトリが見つかりません:/root/rpmbuild/BUILDROOT/hello-2.10-1.x86_64/usr」

    だから、もっと簡単な方法はありますか?

  • +0

    あなたが求めているものが存在するかどうかわかりませんが、makeとの比較が有効ではないとは思いません。 makeを実行するときは、さまざまなターゲットの定義をmakeに伝えるためにMakefileが必要です。 はどのようにあなたが心を持っているツールは知っているだろう: 1.どのようにプロジェクトをビルドするために、出力アーティファクト(s)がある何 2.これらのアーティファクトは、ターゲットファイルシステム上に展開されなければならない 3. 4.何ファイルのアクセス許可などになる必要があります –

    +0

    うーん。私が現在「make」と「make install」を問題なく使用できるのであれば、「make」と「make install」が情報を取得する同じ場所からの情報だけを思い浮かべることができますか? ツール "checkinstall"はこのようなことを行うはずですが、RPMで動作するようにはできません。私の回避策は、代わりに "deb"ファイルを作成し、deb - > rpmを変換するためにalienを使用することです。しかし、それはもちろん不完全です... 私はちょうど "checkinstall"をタイプし、rpm/debが作成されます(rpmsのために盗まれています)。スペックファイルは必要ありません。 –

    +1

    十分に公正な...私はあなたが意味するものを参照してください。質問の表現方法は、Makefileの情報からrpmを作成することは明らかではありません(とにかく)。それは実行可能かもしれませんが、おそらく本当に複雑なMakefileになるでしょう。私たちはプロジェクトで多くのrpm specファイルを管理しています。正直なところ、多くの冗長な情報は含まれていません。 いずれにしても、これは実際には「ソースから」rpmを作成していません。依存関係などに関してrpmが必要とするすべての情報を提供するためにMakefileが必要です。また、インストール前/後のスクリプトが必要な場合は、すぐに複雑になります。 –

    答えて

    0

    いいえ簡単な方法はありません。

    時には上流に 'make rpm'ターゲットを指定します。時々checkinstallが動作します。しかし、多くの場合、specファイルを手動で作成する必要があります。

    BTWのcheckinstallからそのエラーは2つのことを明らかに:

    • は、rootとして、そのコマンドを実行しています。それは非常に賢明ではありません。
    • ビルドディレクトリはほとんど作成しないでください。コマンドrpmdev-setuptreeを実行すると、それらが作成されます。
    +0

    ありがとう!私はすでにこれらのディレクトリを設定しており、別のユーザーとしてcheckinstallを実行すると、同様のエラーが表示されます... –

    +0

    checkinstallを使用して.debファイルを作成し、 .deb - > .rpmを変換する。もしcheckinstallがrpmsを作るのにSPECファイルを必要としないなら、なぜ私たちはそれを必要とするのだろうか? –

    +0

    「make install」を監視し、インストールされているすべてのファイルを%filesセクションに置きます。他のセクションはすべてデフォルトのままにしておきます。これは、超簡単なパッケージではうまくいくでしょう。しかし、通常、依存関係を指定し、インストールスクリプトをポストし(デーモンを再起動する)、パッケージをインストールする前にユーザーを作成し、いくつかのファイルをconfigsとしてマークする必要があります。 – msuchy

    関連する問題