標準のLinuxコマンドラインツールのソースを見つけるのに最適な場所はどこですか?[閉まっている]


10

Into:私はソースを読むことで学ぶのが好きです。しかし、多くのさまざまなプロジェクトサイトで分割されたインターネット上でそれらを検索するのは大変です。多くの多くのアプリのソースが1か所にある中央のブラウズ可能なレポを参照してください。

  • 誰かがいくつかのLinuxツールのドキュメントを見つけたい場合、最適な場所は:man toolnameです。
  • Linuxソースを「オンデマンド」で参照したい場合は、いつでも次の場所にジャンプできます。Linuxクロスリファレンス
  • 最も一般的なスタッフを見つけたい場合、すべてのソースをCoreutilsで見つけることができます 。
  • 何かをビルドする方法を確認したい場合、(たとえば)http://www.archlinux.org/packages/にジャンプして、pkgbuildであることを確認できます。

ほとんどのツールのソースを1か所に保持するリポジトリはありますか?-ちょうどmanドキュメントやLinuxクロスリファレンスカーネルソースを保持しているようです。

ものの実装方法を「迅速」「オンデマンド」でチェックするためのものです。(はい、私はグーグルを知っています->しかし、私はルーチンにうんざりしています:1.プロジェクトサイトの検索2.リポジトリの閲覧またはさらに悪いこと->リポジトリのチェックアウト3.終了時に削除)

リマーク:

私はストレスを感じました、私はツールをチェックしたいと思います:迅速、高速、オンデマンド。

つまり、ソースを確認するためだけに、そのソースを使用してアプリ全体をインストールする必要はありません。(ところで、Webリソースが望ましいので、私は多くのコンピューターからソースをチェックできます-私はそれらすべての管理者を持っていません)


3
ほとんどのディストリビューションでは、パッケージマネージャーを使用してパッケージのソースをインストールできます。
ジッピー

3
debianの場合はapt-get source $PACKAGE-NAME、ソースリポジトリを追加した直後に実行できます
Ulrich Dangel

パッケージは通常、他のライブラリに応答してその機能を完了します
デイジー

確認したい各アプリをインストールしたくない。
Grzegorz Wierzowiecki

3
@GrzegorzWierzowieckiソースを確認するためにアプリケーションをインストールする必要はありません。少なくとも、apt-get source通常のユーザーとしてこのコマンドを実行できます。
Ulrich Dangel

回答:


6

別の答えであなたの質問に答えさせてください。これらのGNUバージョンだけでなく、従来のUnixコマンドラインツールのコードも読んでみたいと思います。さまざまなプロジェクトから同様のツールのコードを読むことは、さまざまなアイデアや実装を学ぶための良い習慣です。

GNUには、coreutilsのリポジトリ用の素晴らしいWebインターフェイスがあります。http://git.savannah.gnu.org/cgit/coreutils.git

BSDファミリには、リポジトリ用の同様のWebインターフェイスがあります。

BSDコードベースは興味深いものです。通常、同じツールで使用するコードが少ないためです。つまり、従来のオプションのみをサポートし、追加のオプションはサポートしません。shは実際のシェルであり、他の大きなシェル(bash)へのリンクだけではありません。coreutilsに類似したツールbin、sbin、usr.bin、usr.sbin内にあります。

サードパーティソフトウェアをビルドするためのコードを読みたい場合は、同じウェブインターフェースを閲覧することもできます(archのpkgbuildと同様)。NetBSDとDragonFlyは、NetBSDリポジトリのpkgsrcを使用します。OpenBSDとFreeBSDは、それぞれのリポジトリ内にこれらのフレームワークを持っています。

あなたの目的にとって興味深い他のリポジトリは次のとおりです。


すばらしい答えです。比較のために励ましてくれてありがとう-異なるアプローチを比較することは教育的です。いくつかのLinuxリポジトリで答えを広げていただけませんか?BSDのコードベースは興味深いですが、syscallなどに重要な違いがあるのではないかと思います。そのため、Linuxリポジトリがリストに追加されることでしょう。
Grzegorz Wierzowiecki

* BSDの利点の1つは、すべてのコードが1つのリポジトリ内にあることです。Linuxの問題は、各パッケージの起源が異なることです。coreutilsリポジトリ(および組み込み機能git.savannah.gnu.org/cgit/bash.git/treeのbashリポジトリ)は、ほとんどすべての従来のツールをカバーしています。"linux distro"リポジトリには、サードパーティパッケージといくつかのパッチをビルドするためのフレームワークのみが含まれます。リポジトリには実際のコードは含まれません(ディストリビューションのツールのコードのみが含まれます)。
Rufo El Magufo

BSDとLinuxの違いを尊重してください。APIは類似しており、POSIXおよびその他の標準と常に互換性があります。違いは、各APIの内部実装です。実際、GNUのツールは* BSDで動作し、* BSDのツールはLinuxで動作します。例:Debian(packages.debian.org)にはいくつかの* BSDツールがあり、* BSDにはcoreutilsと他のGNUプロジェクトがあります。
Rufo El Magufo

2

オープンソース開発の中心的な場所がないため、ほとんどのオープンソースソフトウェアを含む中央リポジトリはありません。GitHub、BitBucket、プライベートサーバー、Sourceforge、Launchpadなどを使用する企業もあります。したがって、これは真に分散された環境であり、1つのリポジトリでソースをコピーするだけの直接的なメリットはありません。

一方、バイナリディストリビューション(ソースコードではなくバイナリを配布)は、通常、ほとんどのパッケージのソースを提供し、すべてのユーザーに提供します。ですから、Distributionが提供するインフラストラクチャを使用するのが最善の機会です。それらには必ずしも最新の変更や修正が含まれているわけではなく、古くなっている可能性があることに注意してください。

ディストリビューションからソースパッケージをダウンロードする方法の例:

yumdownloader --source packagename
apt-get source packagename

Archについては、stackoverflowに関する同様の質問の回答をご覧ください。

ソースコードをダウンロードしたいだけの場合は、packages.debian.orgを使用できます(例:coreutilsのリンク)。これにより、元のパッケージ(orig.*または一部のパッケージのクリーンアップされたソースdsfg.*)へのダウンロードリンクが提供されます。Arch Linuxのパッケージリストでも同じことができます(例:arch coreutils page)Download from Mirrorパッケージをダウンロードします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.