• 締切済み

パッケージインストールとソースビルドインストールによるファイルサイズの違い

CentOS 4.8をメインにして試行錯誤の毎日ですが、最近はソースビルドでインストールすることが増えてきました。 その中で、最初はrpmやyumでパッケージインストールしていたものとソースビルド(この場合のソースはパッケージについているsrc.rpmからではなく、本家のソースからダウンロード)の結果を見て、ファイルサイズについて質問があります。 ソースビルドしたものは、パッケージインストールしたものより、2倍以上のファイルサイズになっています。 極端なものでは、例えば、 mod_python.soなんかは パッケージ:980KB ソースビルド:4000KB mod_dav_svn.so パッケージ:86KB ソースビルド:377KB という差が出てきます。 ビルドメッセージを見ても、最適化やデバッグ版ではない印象を受けていて、この違いは何だろうと思っています。 src.rpmをダウンロードして、そこからバイナリーを作る過程を追ってみようかと思いますが、ディストリビューションのビルドと本家ソースからのビルドには、こんな違いがありますよという情報でもあれば、教えてください。

みんなの回答

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.1

似たような経験があります。 ソースビルドされた方はstripされてないんだと思います。 debuginfoパッケージを作らないように設定したりしてませんか?

kachansa
質問者

お礼

stripコマンドを適用することによって、ファイルサイズは、かなり削減されました。 有益なる情報ありがとうございました。 一方、「debuginfoパッケージを作らないように設定」について、debugginfoを調べてみたいのですが、ソースビルドは手順に書いてあるとおりで、なるべくオプションもつけていません。それは逆に明示的に、configure時にdebugginfoを作らないようにしておくべきなのでしょうか? そちらの情報には、まだたどり着けていません。

関連するQ&A

  • ソースパッケージからビルドできない?

    参考サイト http://www.asahi-net.or.jp/~aa4t-nngk/mondo.html mondorescueの件でやってます。 項目の >ソースパッケージからビルドする場合 から root# cd /var/tmp/mondo root# rpmbuild --rebuild mondo-X.X.X-X.xxx.src.rpm これを手本にやってます。 mindi, mindi-busybox, afio, buffer これはできたのですが、 最後にやるmondoはエラーが出てできません。 ○打ったコマンド $ rpmbuild --rebuild mondo-3.0.0-1.rhel6.src.rpm $ rpmbuild --rebuild --target i686-redhat-linux mondo-3.0.0-1.rhel6.src.rpm と、両方やってみました。 エラーは・・・ mondo-3.0.0.1.rhel6.src.rpm をインストール中です。 警告: InstallSourcePackage at: psm.c:244: ヘッダ V4 DSA/SHA1 Signature, key ID 37db9883: NOKEY 警告: ユーザ pb は存在しません - root を使用します 警告: グループ pb は存在しません - root を使用します 警告: ユーザ pb は存在しません - root を使用します 警告: グループ pb は存在しません - root を使用します ビルド対象プラットフォーム: i686-redhat-linux ターゲット i686-redhat-linux 用にビルド中 エラー: ビルド依存症の失敗: newt-devel > 0.50 は mondo-3.0.1-1.rhel6.i686 に必要とされてます どの様にやればビルドできるのでしょうか?

  • mod_dav_svnをインストール出来ません

    mod_davとmod_dav_fsをコンパイルし、httpd.confを編集し <Location /svn> DAV svn SVNPath /var/lib/svn/repository/ </Location> としたところ、「Unknown DAV provider: svn」とエラーと出ました。 自分はcentOS5.5でApache2.2はソースから、Subversionはyumからインストールしました。 よってyumからinstallでは駄目なんじゃないかと思い、で、mod_dav_svn.soをいつものようにapxs等でソースからインストールしようと思ったのですが、web上で全く情報が無く全部yumからのインストールでした。 1時間くらい探しまわったのですが、仕方が無く yum istall mod_dav_svn を行いましたが当たり前ですが、/usr/local/apache2/modules/内には存在しませんでした。 で、/etc/httpd/modules/内のmod_dav_svn.soを使おうと思いhttpd.confに LoadModule dav_svn_module /etc/httpd/modules/mod_dav_svn.so を追記した所、 「httpd: Syntax error on line 60 of /usr/local/apache2/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_dav_svn.so into server: /usr/lib/libsvn_fs_base-1.so.0: undefined symbol: db_create」とエラーが出ました。 どのようにしたらmod_dav_svnをインストール出来るのでしょうか? 自分としては、yumではなくソースからコンパイルしたいと思っております。 無理であればyumからでもいいのですが、その場合どのようにすればうまくいくのでしょうか?

  • ネット上のソースパッケージをVC++2005にてビルドしたい

    URL:http://packages.debian.org/ja/source/etch/libelf のDownloadファイルの上から二つ目をダウンロードし、 VC++2005にてビルドさせたいのですが、 中のINSTALLファイルを見ると、 「1. `cd' to the directory containing the package's source code and type` ./configure' to configure the package for your system.」 のように、Linuxでのインストール方法のような手順が記載されています。 このソースパッケージは、WindowsのVC++2005にてビルドすることはできないのでしょうか? またビルドが可能であれば、手順についてご教示頂けませんでしょうか? 当方、ネット上のソースを扱ったことがなく、対処法が分からないので、 質問させていただきました。 解決法をご存知の方おられましたら、お手数ですがご教示お願い致します。

  • mod_dav_svn

    apache2.0をソースでインストールしています。 そこでsubversionをインストールして、 /usr/local/apache2/modules/配下に mod_dav_svn.soを置いてhttp経由でリポジトリを利用できるようにしたいのですが、どのようにすればよろしいでしょうか? yum install mod_dav_svnではyum install httpdした場合にしか使えないと思います。 ご存知の方、宜しくお願いします。

  • 「10-subversion.conf」について

    お世話になります。 この間、subversion.confが作成されなくて質問をしましたが解決する事ができず、試しに自作でsubversion.confを作成したところ何となくできたぽかったので無理やり質問を締め切りました。 それでもなぜsubversion.confが作成できないのかが気になったので調べていたらmod_dav_svnをインストールするとsubversion.confが作成される事がわかりました。 それで何度も何度もインストールしてみましたがやっぱりconfファイルは作成されませんでした。 ダメ元で下記のコマンドを実行したら「10-subversion.conf」というファイルを見つける事ができました。 find / -name *subversion.conf ※このファイルはmod_dav_svnをインストールする前にはない事は確認済みです。mod_dav_svnをインストールしてから下記のコマンドを実行したところ、ヒットしました。なのでmod_dav_svnをインストール後に作成された事がわかりました。 下記の内容は「10-subversion.conf」をviで開いたものです。 -------------------------------------------------- LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so LoadModule dontdothat_module modules/mod_dontdothat.so -------------------------------------------------- 「10-subversion.conf」をキーワードとしてネットで検索してみましたが私が求めている情報を見つける事ができませんでしたので再度、質問しました。 環境は以下のコマンドの通りです。 cat /etc/redhat-release -------------------------------------------------- CentOS Linux release 7.0.1406 (Core) -------------------------------------------------- svn --version --quiet -------------------------------------------------- 1.7.14 -------------------------------------------------- rpm -qa | grep mod_dav_svn -------------------------------------------------- mod_dav_svn-1.7.14-7.el7_0.x86_64 -------------------------------------------------- 私がインストールしたmod_dav_svnの場合、「subversion.conf」ではなく「10-subversion.conf」に変わったんでしょうか。申し訳ありませんがご教授いただけませんでしょうか。 宜しくお願いします。

  • apacheの起動

    apacheを起動させようとすると Cannot load /usr/local/apache/modules/mod_dav_svn.so into server: /usr/local/apache/modules/mod_dav_svn.so: undefined symbol: dav_xml_get_cdata ってでます。 mod_dav_svn.soが読み込めません、未定義のシンボルが含まれています、と読み取りましたが、どうすればよいでしょう? apacheはhttpd-2.0.59です。 よろしくお願いします。

  • ビルドとインストールの違いが分からないので教えてく

    ビルドとインストールの違いが分からないので教えてください。 PHPをインストールするとき、何をインストールしているのでしょうか? 「ビルドでコンパイルされたもの」をインストールしているのでしょうか? それとも、インストールするとき、「ソースコードのコンパイルも行なった上で、インストール」しているのでしょうか? また、インストールというのは、一番標準的なものをパックにしたものを、インストールしているという理解でいいのでしょうか? 「ビルドをする」=「自分の好きな組み合わせでソースコードとかライブラリを組み合わせることができる」ってことでしょうか? 「モジュール版PHP」「CGI版PHP」など色々な種類のPHPがある理由が分からないのですが、これは、ビルド内容が違うということでしょうか? また、PHPをインストールするとき、「モジュール版」と「CGI版」を選べるのでしょうか? 一度、インストールしたものに何か追加をしたい際は、 再度ビルドしないといけないのでしょうか? それとも、ビルドと言うのは、一度ビルドしたものに、追加でビルドしていくことができるのでしょうか?

    • ベストアンサー
    • PHP
  • Linux のパッケージインストールとは?

    Miracle Linuxにソフトをインストールしようとしていますが、パッケージ ソフト(.rpm)の場合、パッケージインストールすれば、make、make install はしなくてもよいのでしょうか? 以下のような場合。 rpm -ivh nkf-1.71-2.src.rpm よろしくお願いします。

  • RPM のソースパッケージが展開できません

    RPM のソースパッケージが展開できません。 CentOS6.4です。 #rpm -ivh webalizer-2.21_02-3.3.el6.src.rpm 1:webalizer 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します ########################################### [100%] これで展開されているはずなんですが、RPM のソースパッケージが展開されていません。 「RedHat系のOSでは/usr/src/redhatディレクトリや/var/src/rpmディレクトリにRPMをビルドするためのディレクトリが用意されています。」とありましたが、デフォルトではどちらも存在していなかったので # cd /usr/src # mkdir redhat # cd redhat # mkdir BUILD RPMS SOURCES SPECS SRPMS としして自分でディレクトリを新規作成したのち、、もう一度 #rpm -ivh webalizer-2.21_02-3.3.el6.src.rpm を行いましたが /usr/src/redhat/SPECSに何も展開されません。(SPECSは空のまま) やり方が間違っていますか?

  • CentOS5のパッケージインストールについて

    Linux初心者です。 現在、CentOS5.1をインストールしてxemacsをrpmからインストール しようとしているのですが該当するrpmパッケージを見つけだすこと ができずにいます。rpmからインストールすることはできますでしょうか。 また、ソースからインストールを試みたのですが、xemacs起動後に日本語に変換しようとしても変換ができません。 これらの原因についてご存知の方いらっしゃいましたらお教えいただけないでしょうか。よろしくお願いいたします。