Ubuntuでソースから.debの生成方法

ubuntu

普段、会社ではUbuntu 8.10を使っているのですが、なぜかFirefoxが遅い・・・。Firefoxが、というよりかはFirefoxで動かすJavascriptが遅い感じなのです。

ちょっと遅い感じがする、というレベルではなくAjaxを多用しているサイトとかだと止まるんじゃないかと思うほど分かりやすい遅さです。

調べてみると、ipv6系のネットワークの遅延についての記事はたくさん出るのですが、Javascriptが遅いという話はなかなか見つかりませんでした。

ビルドオプションがおかしいのかな?と思って、最適化ビルドされたSwiftfoxを試してみることも考えたのですがバージョンが3.0.4系で止まってしまっているので、自分でビルドしてみることにしました。

apt-getを駆使する

Ubuntuはdebian系のディストリビューションなので、ソースからビルドし最終的には.debファイルにしてパッケージ化しておき、公式リポジトリ側がバージョンアップしたら更新できるようにしたいと思います。

まず、ソースコードの取得について。

普通ソースコードは公式サイトからtarボールやsvn, cvsなどのバージョン管理ツールで取ってくることが多いと思いますが、debパッケージ管理されているアプリのソースは、以下のコマンドで取得できます。

カレントディレクトリにいろいろ展開されるので、専用にディレクトリを作成し、その中で行った方が良いです。

  • apt-get source firefox

また、このソースをビルドするために必要なパッケージを一括でインストールすることもできます。

  • sudo apt-get build-dep firefox

debuild

ビルドには、debuildというツールを使うのですが、この辺がちょっとややこしかったです。

apt-get sourceでソースを取ってくると、前述のように色々とファイルを取得して新しくディレクトリが作成されます。この中にソースやらが入っているのですが、debianというサブディレクトリができていると思います。

この、debianの中に重要なファイルとして、ビルドオプションなどが定義されたrules、バージョン情報が書かれたchangelog、依存関係が定義されたcontrolなどが存在していると思います。

まずはrulesを編集してビルドオプションを変更します(以下は変更箇所のみ)。

CFLAGS = -g -O3 -march=native
CXXFLAGS = -g -O3 -march=native

#
#   (中略)
#

    -enable-optimize="-O3 -w -march=native" ¥

そして、changelogの編集ですが、これはコマンドで行うことができますが、それにはdevscriptsパッケージが必要なのでインストールしておきます。

  • sudo apt-get install devscripts

次に編集用のコマンドを実行しますが、これはdebianディレクトリの親ディレクトリをカレントにして行う必要があります(そうしないと、debian/changelogが無いと怒られます)。

  • debchange -i

debchangeを起動するとエディタの選択肢が出るので好みのものを選びます(私は1のviにしました)。

とりあえず、何もせずに保存してしまっても特に問題はないですが、分かりやすいようにコメントを入れたり、リポジトリが更新するであろうバージョン番号の採番方法と重複しないように修正を入れます(バージョンについては、一つ下のバージョンがリポジトリの最新バージョンなので、それに -0 とかを付加したものにしておけばいいかと思います)。

ここまでで一応準備は整ったので、最後にビルドコマンドを実行します。

  • debuild -us -uc

しばらく時間が掛かると思いますが、そのうちプロンプトに戻るはずです。もしエラーが出たら、failedとか出ているはずなので・・・その時はrulesかchangelog(たぶんrulesのほう)の記述が間違っている箇所があるので修正後再度実行します。

debのインストール

ビルドが終わると、最初の作業ディレクトリ(今まで作業していたところの親ディレクトリ)に移動するとたくさんのdebファイルができていると思います。

Firefoxの場合は、firefox-3.0_3.0.7+nobinonly-0ubuntu0.8.10.1-0_i386.deb(バージョン番号によってファイル名が違います)というファイルが本体で、あとfirefox-3.0-gnome-supportとfirefox-3.0-brandingの2つのパッケージも入れておかないと依存関係が壊れているとか言われてしまうので要注意です。

インストールは普通のdeb同様、

  • sudo dpkg -i firefox-3.0_3.0.7+nobinonly-0ubuntu0.8.10.1-0_i386.deb

という感じでいけます。

インストールしたが・・・

さて、上記でビルド済みのパッケージをインストールできたはずなんですが・・・。about:buildconfigを見てみても、ビルドオプションが全く変化なしでした。。。orz

速度的にも大して変化はないようなので正しくインストールできているのかどうか謎です。ただ、ビルド中のコマンドラインオプションに追加した最適化オプションなどは入っていたのは確認できたんですが・・・。

うーん、どういうことでしょう・・・?(?_?)

LINEで送る
Pocket

2 注釈 “Ubuntuでソースから.debの生成方法

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です