インストールしたパッケージをすべてソースからビルドする方法は?


26

GentooのようなソースベースのLinuxディストリビューションは、特定のシステム用に最適化されたソースからインストールするため、Ubuntuのようなビルド済みディストリビューションと比較して、パフォーマンスが大幅に向上する方法について読みました。ソースからUbuntuをビルドして同じようなメリットを得ることができますか?


3
そのために、UbuntuではなくGentooをインストールしてください。真剣に、なぜそれを揺るがすものの代わりにソースベースの依存関係管理で絶対に失敗するディストリビューションを使用するのですか?
数学

7
実際に同じスタックバージョンと構成を使用しているソースとバイナリの間のベンチマークを見たいと思います。通常、比較は、Ubuntuリリース(デフォルト)と、奇妙なファイルシステムと奇妙なアプリデフォルトを使用した最新のGentooとの比較です。Ubuntuのデフォルトはほとんどかなり健全であり、そのためにそのパフォーマンスの大部分が発生しているため、ほとんどの単純な比較ではUbuntuがGentooよりも優先されます。
オリ

1
悪い比較の一例として、このLinux Magazineの記事(読むには無料の登録が必要)があり、そこでは異なるカーネル、異なるNvidiaドライバー、異なるXバージョン、異なるデスクトップ環境を使用しています。Ubuntuの2つの異なるバージョンを比較することもできます。似たようなスケールの違いが表示されます。
オリ

4
何のパフォーマンス向上?ネットワークスループット、ディスク速度、プロセス切り替え、純粋な数学計算、3Dグラフィックス、起動時間?
ユーザー不明

1
大規模なCPUパフォーマンスを必要とするソフトウェアをコンパイルすることだけをお勧めします(ビデオエンコーディングが頭に浮かぶ)。ユーザーに多く使用され、FMA3やAVX2などのCPU最適化のメリットがあります。
ケイキ

回答:


42

Is is possible to build Ubuntu from source to get the same kind of benefit?

かなり新しいハードウェアコンポーネントがある場合のメリットについてはわかりませんが、質問の「ソースからのUbuntu」の部分の答えは「はい」です。ソースからお気に入りのアプリケーションだけでなく、オペレーティングシステム全体をビルドできます。

方法は次のとおりです。

apt-buildをインストールする必要があります。apt-getのようなコマンドラインツールですが、バイナリパッケージをダウンロードしてインストールする代わりに、apt-buildはパッケージのソースコードをダウンロードし、コンパイルしてからシステムにインストールします。

でインストールした後

sudo apt-get install apt-build

最適化レベル(中程度でも大丈夫)、APTのapt-buildリポジトリを作成するか(はい)、プロセッサアーキテクチャに関する質問(私のi7はcore2と見なされます)が求められます。もちろん、すべてのオプションは次のように再構成できます。

dpkg-reconfigure apt-build

上記のコマンドは、gccコンパイラーとmake builderの2つの追加オプションを提供します。それらの説明は、システムマニュアル(man gccおよびman make)にあります。

手動および使用可能なコマンドオプションの確認については、

man apt-build

しかし、最も有用なのは次のとおりです。

  • apt-build update —リポジトリリストを更新します(apt-get updateなど)
  • apt-build upgrade —オペレーティングシステムを更新します(apt-get upgradeなど)
  • apt-buildインストールプログラム—アプリケーションをインストールします(apt-get installなど)
  • apt-build world —ハードコアユーザー向けのもので、システム全体を再コンパイルします。

例えば:

Geditをコンパイル/インストールしたいとしましょう。apt-getインストールの代わりに

sudo apt-build install gedit

Apt-buildは/etc/apt/sources.listファイルに含まれるdeb-srcエントリを使用するため、コンパイルとインストールのプロセスは完全に自動化されます(Gentooで見られるemergeと同様)。Apt-buildは、メインアプリケーションとその依存関係のソースをダウンロードしてコンパイルし、debパッケージを作成し、最後にパッケージをインストールします。

apt-build worldに関するいくつかの注意。

私の意見では、24時間以上空いている場合を除いて、試みないでください!

最初に行う必要がある場合は、サードパーティのアプリケーションを削除/無効化/アンインストールし(Ubuntuの新規インストールで行うことをお勧めします)、次に実行します:

sudo su
dpkg --get-selections | awk '{if ($2 == "install") print $1}'> /etc/apt/apt-build.list
exit

上記のコマンドは、システムパッケージの完全なリストをapt-build.listにコピーして、ソースからコンパイルできるようにします。そのファイルを開く

sudo gedit /etc/apt/apt-build.list

GCC / G ++エントリを削除します

その後、次のことができます。

sudo apt-build world

再構築プロセスを完全に自動化するために、-yesと--force-yesの2つのオプションを追加することをお勧めします。


10
「なぜ構築するのか」と比較して、具体的な答えを+1 答えます。また、(主観的であっても)を使用して得られる(または得られなかった)利点に関するより広範な意見も読みたいと思いますapt-build
エンゾチブ

1
現在、この回答には+17があります。しかし、誰かが成功しましたか?
ケイキ14年

1
@ otakun85 Ubuntuで一部のパッケージを正常にコンパイルするためにapt-buildを使用しました(12.04 | 12.10 | 13.04のいずれかのリリースを思い出せません)。apt-build のmanページの最後BUGS Many.にこれがありますので、トラブルを予想してください。
ファイゼ14

使用apt-build worldする代わりに、「Linux from Scratch」ブックをダウンロードし、apt-buildそこにリストされているすべてのパッケージを実行する方が良いことに気付きました。正しい順序などを指定します。たとえば、apt-build world最初に再コンパイルする必要があることがわかっている場合は、わかりませんbinutils。次にgccbinutilsもう一度、gccもう一度、プログラミング言語gzipなど。
セルヒィヴィノフラドフ

@SerhyiVynohradov:それは問題ではないでしょう。LFSはホストシステム内のライブラリに依存関係を残さないようにするためにこれを行いますが、ここではすべてをインプレースでコンパイル済みバージョンに置き換えています。彼らはまだなど、同じABIを持って、同じ場所になるだろう
ニック・マッテオ

3

この種のトピックについてフレームワークと大きな議論を始めることができますが、実際の生活を見てみましょう。

OSの速度は、実行するハードウェアに大きく依存し、それが主な要因です。

ほとんどの時間Archに滞在している間にディストリビューションを頻繁に変更しますが、ArchはUbuntuよりもずっと高速ですか?いや

Ubuntu 10.10でcompizを使用するGnomeは約300 RAMを使用し、Arch 200ramでは4 GBのRAMを使用していますが、違いは感じませんが、UbuntuとgnomeをArchと比較すると、反応性とリソースが大幅に向上します使用量(300ram対50ram)ですが、これはネットブックのディストリビューションを選択する場合にのみ重要です。

したがって、デスクトップが高速で、システムをいじるのに時間を費やしたくない場合は、Ubuntuを使用しますが、ネットブックがある場合は、Archで軽量WMを使用することを検討してください:)


ある時点で、最新のハードウェアを使用している状況に陥ることがありますが、それでも1時間の操作を実行する必要があります。そして、負荷を分散するために多数のサーバーをセットアップする代わりに、20%の追加のブーストを得るために時間をかけて調整することを気にしません。私はArchを使ったことはありませんが、Gentooを試しました。そして、私は多くの場合、「より速いディストリビューション」のようなものがないことを見ました。代わりに、「ソフトウェアの少ないディストリビューション」があります。高速であるが安全ではないベアボーンシステムを使用している場合があります。他のパッケージをインストールすると、Ubuntu + apt-buildと同じ速度になります。
セルヒィヴィノフラドフ

0

Apt-buildはパフォーマンス以上に役立ちます。特定のハードウェア用にカスタム配布イメージとリポジトリを構築して、ビジネス向けの大量インストールの準備ができます。これにより、すべてのハードウェアが同じであることがわかっている場合、最適化されたバイナリ配布を意味します。この方法では、1台のコンピューターのみがすべての作業のコンパイルを行い、残りはリマスターされたISOを使用してアップグレードされます。これは、軽量化やエンコードのためだけのものではありません。また、カスタムインストーラISOを使用すると、何らかの理由で災害後にシステムが回復不能になった場合、再コンパイルせずに再インストールできます。

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