ソースからツール/ライブラリを構築する利点は何ですか?


8

ソースから構築することで、何かメリットがありますか?コードはハードウェアアーキテクチャに最適化されていますか?一般的に最適化されていますか?

なぜ誰かがAPT / yumのようなパッケージ管理システムを使用するのではなく、ソースからビルドすることを選ぶのですか?何らかの最適化による利益がある場合、それがパッケージ管理システムの利点を上回るのはいつですか?


2つの選択肢は相互に排他的ではありません。パッケージのソースをカスタマイズすることも、自分でパッケージ化することもできます。
Faheem Mitha、2011年

回答:


11

ソースからビルドすると、バイナリパッケージマネージャーのバージョンを使用する場合に使用できない以下のオプションが提供されます。

ソースからコンパイルすると、次のことが可能になります。

  • プロセッサ固有の最適化を使用する
  • 最新バージョンを使用する
  • コンパイルとリンクの仕組みを学ぶ(@mattdmからの提案)
  • バグ修正、開発作業
  • コンパイル時のオプションを設定します(vimにX機能を含めるなど)

1
通常のデスクトップユーザーの場合、ソフトウェア間の依存関係を手動で管理することの複雑さのコストに見合った、プロセッサー固有の最適化のメリットはありますか?それは2%のゲインのようなものですか、それともパフォーマンスが2倍になるようなものですか?
ダグT.

1
@Doug CPUの重いソフトウェアの場合、差異は10..20%になる可能性があります。一般的なデスクトップソフトウェアの場合、差異はゼロです。ソースからソフトウェアをコンパイルしてみたい場合は、ソースベースのディストリビューション(Gentooなど)をお勧めします。ソースからソフトウェアをインストールすることは非常に悪い考えです(/ optにインストールされたサードパーティソフトウェアは別として)。
サイモン・トス

パフォーマンスは、パッケージマネージャーの依存関係の外に出る価値はないと思います。ただし、依存関係を追跡し、ソースからコンパイルできるソースベースのパッケージ管理システムがあります。これで得られない上記の利点は、「最新バージョン」だけです。パッケージマネージャーには、残りのディストリビューションで動作するバージョンが選択されています。
Shawn J. Goff

5
私が追加することの1つは、内部で何が起こっているかについてより多くを学ぶことです。それだけでも価値があります。
mattdm 2011年

7

私はごく最近この正確なことをしました。

openssl-1.0.somethingをソースからSlackware 11.0 linuxシステムにコンパイルしました。私は、これらの迷惑な中国のsshパスワードの推測を妨害するために、ログインに失敗したログインで7秒間一時停止するようにパスワードによるログインをパッチしたかったのです。

Apache 2.0.somethingが付属しているため、同じSlackware 11.0システムでApache httpd 2.2.17をコンパイルしました。別のシステムの2.2.x httpd.confを使用したいと考えました。

考えてみれば、同じシステム用にAlpine 2.0(電子メールクライアント、パインの後続)もコンパイルしました。Slackware 11.0を選ぶ理由 インテル「ブルックデール」グラフィックスを搭載した2003年頃のマシンで実行されており、それ以降のSlackwareは、十分に文書化されていないインテルグラフィックスをサポートしていません。

別のマシンで、私はgit ACからTI ACX111ワイヤレスチップサポートをプルし、新しいドライバーをコンパイルして、9ドルのワイヤレスカードを使用できるようにしました。

また、Linuxカーネルを常習的に再コンパイルして、実行するマシンに固有のものにします。

したがって、私の場合、それはカスタマイズ、ハードウェアサポート、および「理由」のさまざまな理由です。

均一な集団(http://www.usenix.org/publications/login/2005-12/openpdfs/geer.pdf)における疫学について私たちが知っていることを考えると、なぜ誰もが独自のシステムでソースからコンパイルするのではなく、何でも彼らが選択するコンパイル時のオプション?それははるかに多くのウイルスとワームに抵抗力のある人口を作るでしょう。


これらのsshを悪用する悪意のあるユーザーを遅くする簡単な方法があります... iptablesのレート制限を探してください。その解決策の適用範囲は広く、しかも保証が無効になることはありません。
フォンブランド2013年

通常、Linuxには保証がありません。Slackware 11はこの時点で数年前のものです。FUD、具体的には「恐怖」に疑問を投げかけています。「ああ、そうしないでください。保証は無効になります!」保証に何回頼りますか?ごくわずかです。私たちは皆、他の誰かがすべての行動に対して責任を負うことを望んでいます(特に道徳的ですが、大部分は経済的です)が、それは個人や社会に多くの悪い影響を与えずには起こり得ません。私は自分のアドバイスなどに立ち向かいます。自分でソースをコンパイルし、すべての責任を負います。他人のせいにしないでください。
Bruce Ediger 2013年

ああ、さあ。RHELまたはSLES(またはサポート契約のあるUbuntu LTS)の場合は、保証が無効になります。DebianまたはFedoraの場合、ハッキングされたOpenSSHのバグレポートは、2度検索することなくクローズされます。
フォンブランド2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.