動作中のオープンソース

ネットワーク上では、オープンソースソフトウェアの疑いのない利点、そのようなプロジェクトに関与するプログラマーの動機などに関する長い議論を見つけることができます。 さらに、特定の技術的スキルを備えたこのようなソフトウェアのユーザーは、このすべてを自分自身で「シャープ」にできるという事実に特に注目されます。 ソースコードが公開されているのは何の理由でもありません。



ただし、個人的には、使用しているプログラムのオープンソースコードを少なくとも少しだけ利用した人はほとんどいません(正直なところ、2人だけです)。 主な論点:このコードの入手先がわかりません。 これらすべてを後で収集する方法はわかりません。 独自のモジュールを作成して、配布キットからゴミを作ることを恐れています。



この短い記事では、細いパッケージとリポジトリーの配布構造を維持しながら、何かを変更する方法の簡単な例を示します。



すべてのテクニックとメカニズムを説明するために、私はかなり単純ですが、実用的な価値目標は設定していません。頻繁に使用されるwgetユーティリティと鼻血があります。 ここに私が欲しいとそれはそれです。 これに努めます。





自宅のディストリビューション(Fedora)で以下に説明するすべての操作を実行したため、この特定のアセンブリに関連するユーティリティとコマンドを検討します。 他のシステム(rpmの代わりにdeb、yumの代わりにaptitude)には違いがありますが、私たちは方法論に関心があり、詳細には関心がありません。



動作するには、インストールされたパッケージyum-utilsおよびrpm-buildが必要です。



そのため、まず最初に、実行可能ファイルが属するパッケージを決定する必要があります。



[root@phantomazz ~]$ rpm –qf `which wget`

wget-1.11.4-3.fc11.x86_64









ええ、私たちのパッケージは「wget」と呼ばれます。 次に、ソースコードが必要です。 バイナリパッケージに加えて、ソースコードを含むパッケージは通常リポジトリに保存されるため、どこでも探す必要はありません。 組み込みツールを使用するだけで十分です。



[root@phantomazz ~]$ yumdownloader --source wget









このコマンドを実行すると、関心のある現在のバージョンのソースコードを含むrpmパッケージが現在のディレクトリに表示されます。 インストールする必要があります:



[root@phantomazz ~]$ rpm –ivh wget-1.11.4-3.fc11.src.rpm









以降のすべてのアクションは、フォルダー '/ root / rpmbuild'で行われます。このフォルダーは、ソースコードを含むパッケージをインストールするときに自動的に作成されます。 サブフォルダ「SOURCES」で、ソースコード「wget-1.11.4.tar.bz2」を持つアーカイブを直接検索します。 さらに、技術的な問題:アーカイブを解凍し、ファイル 'main.c'を見つけ、メイン関数で目的の変更を行い(目的のprintfを追加)、注意して、すべてを同じ名前でアーカイブに戻します。 個別のモジュールは作成しません。これは正しいため、パッケージ全体に興味があります。 特に必要なすべてのインフラストラクチャがすでに準備されているため、「make && make install」はありません。その後は、パッケージのみが見つかります。 問題は小さい-ディレクトリ「/ root / rpmbuild / SPECS」に移動して実行します:



[root@phantomazz ~]$ rpmbuild -bb wget.spec









rpmbuildユーティリティ自体がバイナリモジュールをビルドし、すべてを単一のパッケージにパックします。 .specファイルに従って動作するため、この段階では、パッケージにファイルを追加または削除したり、インストールスクリプトを変更したりなど、独自の変更を行うこともできます。 このメカニズムには一定の柔軟性があります。



合計で、「/ root / rpmbuild / RPMS」フォルダーの出力で、システムにすぐにインストールするか、ユーティリティを歓迎するメガロマニアの同様の所有者にさらに配布する準備ができているパッケージを受け取ります。



トピックの続きとして、将来のバージョンで必要な機能を備えたパッケージのアセンブリを自動化するパッチをパッチを作成することができます(ちなみに、パッチの例はソースコードディレクトリにあります)。 マスターのビジネス。




All Articles