SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
野良ビルドから見た Gentoo

〜ビルドのおとしあなと QA 〜
ビルドなんて


./configure
   make
make install

でだいたいすむ
そう思っていると
   思わぬおとしぁなが待っている

       今日のメインテーマ

( 時代は cmake とかそういう話じゃないよ )
build process
●
    unpack
●
    (patch あてたりする )
●
    ./configure
●
    make
●
    (make test)
●
    make install
●
    いろいろする
unpack
●
    特に注目するようなところはない
●
    一応 unpack hoge fuga とかするだけで展開
    するように
    –   gz
    –   xz
    –   bz2
configure
●   econf コマンド
    –   ./configure 
    –    --prefix=/usr 

    –    --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu 

    –    --mandir=/usr/share/man --infodir=/usr/share/info 
    –    --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib 
    –    --libdir=/usr/lib64 

    –    --disable-dependency-tracking
    –   --disable-silent-rules
--disable-dependency-tracking
●
    automake の機能 dependency-tracking
    –   コードのの依存をチェック
    –   依存によってリビルドが行なわれてべんり
●
    ただし
    –   依存チェックのコスト
    –   一回だけならただのムダ
--disable-silent-rules
●
    silent rules
●
    Linux kernel の出力
      CC foo
      LD foo
●
    デバッグにはふべん
patch あてる
●
    patch あてて build できたぞ !
    => 新しいバージョン出る
    => あれ、 patch どこいった ?
●
    /etc/portage/patches
    –   <package name>
    –   <package name>-<version>
    –   <package name>-<revision>
make のおとしあな
●
    Makefile がおかしい
    –   “cd hoge;make” とか書いている
    –   CFLAGS ・ LDFLAGS が反映されない
    –   gcc 直接よんでる
    –   リンクがおかしい
●
    こっそり
    –   command not found
    –   file dose not exist
make 対策
●
    ビルドログの監視
●
    -frecord-gcc-switches
    –   .GCC.command.line section
●
    --hash-style=gnu
    –   ELF でのシンボル・ルックアップ
    –   .hash section
●
    ld.gold を使う
build log 監視
●
    command not found 以外にも
●
    gcc の警告
    –   Strict Aliasing
    –   Implicit Declarations
    –   Used Uninitialized
    –   Invalid X<=Y<=Z Comparisons
    –   Non-Null Required
    –   Truncating Pointers
strict aliasing


int X


               int X; float *Y;
float Y        -------------
               X = 1;
               *Y = 3.14;
               printf("%dn", X);
underlinking 1/2

                     Library
Program                Bar
  foo




                               Library
                               Nyoro



   Link
   Use
--as-needed

                  Library
Program             Bar
  foo




                            Library
                            Nyoro



   Link
   Use
New nyoro

                   Library
  Program            Bar
    foo




Rebuild
                             Library
                             Nyoro



     Link
     Use                     Library
                             Nyoro
underlinking 2/2

                     Library
Program                Bar
  foo




                               Library
                               Nyoro



   Link
   Use
underlinking 2/2

                     Library
Program                Bar
  foo




Broken
                                Library
                               Nyoro-1.0



   Link
   Use                          Library
                               Nyoro-2.0
underlinking 2/2

                     Library
Program                Bar
  foo




Broken                              Library
                                   Nyoro-1.0




   Link
   Use                          Library
                               Nyoro-2.0
make install のおとしぁな
●   root で実行されてる
    –   変なとこさわるかも
        ●   突然 rm -r /usr されたりな
●
    インストールしたバイナリがやばいかも
    –   RUNPATH ・ TEXTREL ・ EXECSTACK
    –   DT_NEEDED
    –   SONAME
    –   world writable
    –   debug 情報ついたまま
他にもいろいろ
●
    めっちゃ容量使うやつ
    –   /usr とか /var とかの容量事前確認
    –   メモリとかも
●
    gcc のバージョン・カーネルの設定などの
    チェック
●
    ABI の更新による rebuild
ABI rebuild

Program             Library
  foo              Nyoro-1.0




                      Library
                     Nyoro-1.1

   Link
   Use
ABI rebuild

Program             Library
  foo              Nyoro-1.0




                      Library
                     Nyoro-1.1

   Link
   Use
ABI rebuild

Program             Library
  foo              Nyoro-1.0




                      Library
                                 Update
                     Nyoro-1.1

   Link
   Use
ABI rebuild

Program             Library
  foo              Nyoro-1.0




   Rebuild

                      Library
                                 Update
                     Nyoro-1.1

   Link
   Use
ABI rebuild

Program             Library
  foo              Nyoro-1.0




                      Library
                     Nyoro-1.1

   Link
   Use
個別まとめ
●
    Gentoo 使っている人むけまとめ
    –   portage 裏でいろいろやってるやべえ !
●
    野良ビルドしている人むけまとめ
    –   いろいろおとしあな多いやばい !
    –   portage べんりかも !
●
    なんかパッケージ書いてる人むけまとめ
    –   頭の片隅において対策しとこう
        ●
            とくに underlinking とか SONAME とか
●
    他の distro の人
    –   うちの distro での build について次回発表するよ !
    –   Nix の patchelf とかおもしろそうなんだけど ( チラッ
全体まとめ
●
    コンパイルだからめんどい、わけではない
    –   いやたしかに時間はかかるんやけどね
●
    むしろいろいろチェックしてくれててべんり
    でよい
●
    ビルドシステム極めてる
●
    いまからインストールしてみよう
おまけ
●
    Gentoo に興味あるけど・・・でも・・・
    ブラウザで Gentoo 体験
    http://bit.ly/9VG7xz

Weitere ähnliche Inhalte

Was ist angesagt?

Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Tetsuyuki Kobayashi
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話Masaru Oki
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your MessagesKuniaki Igarashi
 
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!debug-ito
 
Elog and Ebuild Phase Hook
Elog and Ebuild Phase HookElog and Ebuild Phase Hook
Elog and Ebuild Phase HookYasuhiro Asaka
 
2016 0626 ubuntu 1604 LTS party LT
2016 0626 ubuntu 1604 LTS party LT2016 0626 ubuntu 1604 LTS party LT
2016 0626 ubuntu 1604 LTS party LTNaoto Gohko
 
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud imageOSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud imageNaoto Gohko
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)Sugawara Genki
 
Introduction to Ostinato , network packet crafting and generator.
Introduction to Ostinato, network packet crafting and generator.Introduction to Ostinato, network packet crafting and generator.
Introduction to Ostinato , network packet crafting and generator.Kentaro Ebisawa
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西Masahide Yamamoto
 
Linux kernelのbspとupstream
Linux kernelのbspとupstreamLinux kernelのbspとupstream
Linux kernelのbspとupstreamwata2ki
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作るKenichiro MATOHARA
 
Gentooでルータ作った話
Gentooでルータ作った話Gentooでルータ作った話
Gentooでルータ作った話Yuichi Nagayama
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Nobuhiro Iwamatsu
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Hitoshi Kurokawa
 
Getting started raspberry pi osc hamamatsu
Getting started raspberry pi osc hamamatsuGetting started raspberry pi osc hamamatsu
Getting started raspberry pi osc hamamatsuMasafumi Ohta
 
GPD WINでStretchを動かす
GPD WINでStretchを動かすGPD WINでStretchを動かす
GPD WINでStretchを動かすYuma Ohgami
 
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐ
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐBug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐ
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐNetwalker lab kapper
 
MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0Satoshi Kume
 

Was ist angesagt? (20)

Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
Raspberry Pi Zero とカメラモジュールで作るライブ配信実験機
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your Messages
 
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
 
Elog and Ebuild Phase Hook
Elog and Ebuild Phase HookElog and Ebuild Phase Hook
Elog and Ebuild Phase Hook
 
2016 0626 ubuntu 1604 LTS party LT
2016 0626 ubuntu 1604 LTS party LT2016 0626 ubuntu 1604 LTS party LT
2016 0626 ubuntu 1604 LTS party LT
 
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud imageOSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
OSunC Chiba LT Ubuntu 14.04 to 16.04.1 upgrade with ConfigDrive cloud image
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)
 
Introduction to Ostinato , network packet crafting and generator.
Introduction to Ostinato, network packet crafting and generator.Introduction to Ostinato, network packet crafting and generator.
Introduction to Ostinato , network packet crafting and generator.
 
Froyo DalvikVM JIT
Froyo DalvikVM JITFroyo DalvikVM JIT
Froyo DalvikVM JIT
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
Linux kernelのbspとupstream
Linux kernelのbspとupstreamLinux kernelのbspとupstream
Linux kernelのbspとupstream
 
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
 
Gentooでルータ作った話
Gentooでルータ作った話Gentooでルータ作った話
Gentooでルータ作った話
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
 
Getting started raspberry pi osc hamamatsu
Getting started raspberry pi osc hamamatsuGetting started raspberry pi osc hamamatsu
Getting started raspberry pi osc hamamatsu
 
GPD WINでStretchを動かす
GPD WINでStretchを動かすGPD WINでStretchを動かす
GPD WINでStretchを動かす
 
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐ
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐBug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐ
Bug for Install Linux on Atom Z8700 Portabook ポータブックのLinuxインストールバグ対策 2018 #東海道らぐ
 
MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0MacPort_&_FTP_ver1.0
MacPort_&_FTP_ver1.0
 

Andere mochten auch

Xとかオワコン?
Xとかオワコン?Xとかオワコン?
Xとかオワコン?Naohiro Aota
 
みんな大好き! Hello, World
みんな大好き! Hello, Worldみんな大好き! Hello, World
みんな大好き! Hello, WorldNaohiro Aota
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみようMasahiko Hashimoto
 
Btrfs current status and_future_prospects
Btrfs current status and_future_prospectsBtrfs current status and_future_prospects
Btrfs current status and_future_prospectsfj_staoru_takeuchi
 
Unit6, Lesson3 (Women of the Revolution)
Unit6, Lesson3 (Women of the Revolution)Unit6, Lesson3 (Women of the Revolution)
Unit6, Lesson3 (Women of the Revolution)mrcaseysclass
 
Isha forest flower-apr 2014
Isha forest flower-apr 2014Isha forest flower-apr 2014
Isha forest flower-apr 2014Bhim Upadhyaya
 
Gurustrotam in sanskrit and hindi
Gurustrotam in sanskrit and hindiGurustrotam in sanskrit and hindi
Gurustrotam in sanskrit and hindiBhim Upadhyaya
 
Green it vmug presentation v1
Green it vmug presentation v1Green it vmug presentation v1
Green it vmug presentation v1subtitle
 
Vmug hyper v overview
Vmug hyper v overviewVmug hyper v overview
Vmug hyper v overviewsubtitle
 
Swh&pcn in new orleans 11 march2013
Swh&pcn in new orleans 11 march2013Swh&pcn in new orleans 11 march2013
Swh&pcn in new orleans 11 march2013Charles Figley
 
Theres nothing like a good book
Theres nothing like a good bookTheres nothing like a good book
Theres nothing like a good bookMolly Smart
 
Building Loyalty Like Gaga
Building Loyalty Like Gaga Building Loyalty Like Gaga
Building Loyalty Like Gaga Barbara Savona
 
3.1. cum atragi fonduri cu ideea ta. sisteme de solicitari
3.1. cum atragi fonduri cu ideea ta. sisteme de solicitari3.1. cum atragi fonduri cu ideea ta. sisteme de solicitari
3.1. cum atragi fonduri cu ideea ta. sisteme de solicitariRuxandra Popa
 
Introduktion til elektroniske ressourcer for historie
Introduktion til elektroniske ressourcer for historieIntroduktion til elektroniske ressourcer for historie
Introduktion til elektroniske ressourcer for historieJesper Mørch
 

Andere mochten auch (20)

Xとかオワコン?
Xとかオワコン?Xとかオワコン?
Xとかオワコン?
 
Install Linux CentOS 7.0
Install Linux CentOS 7.0Install Linux CentOS 7.0
Install Linux CentOS 7.0
 
みんな大好き! Hello, World
みんな大好き! Hello, Worldみんな大好き! Hello, World
みんな大好き! Hello, World
 
Btrfs
BtrfsBtrfs
Btrfs
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう
 
Btrfs current status and_future_prospects
Btrfs current status and_future_prospectsBtrfs current status and_future_prospects
Btrfs current status and_future_prospects
 
Unit6, Lesson3 (Women of the Revolution)
Unit6, Lesson3 (Women of the Revolution)Unit6, Lesson3 (Women of the Revolution)
Unit6, Lesson3 (Women of the Revolution)
 
Narendra modi
Narendra modiNarendra modi
Narendra modi
 
Isha forest flower-apr 2014
Isha forest flower-apr 2014Isha forest flower-apr 2014
Isha forest flower-apr 2014
 
Gurustrotam in sanskrit and hindi
Gurustrotam in sanskrit and hindiGurustrotam in sanskrit and hindi
Gurustrotam in sanskrit and hindi
 
4738
47384738
4738
 
Green it vmug presentation v1
Green it vmug presentation v1Green it vmug presentation v1
Green it vmug presentation v1
 
Vmug hyper v overview
Vmug hyper v overviewVmug hyper v overview
Vmug hyper v overview
 
Swh&pcn in new orleans 11 march2013
Swh&pcn in new orleans 11 march2013Swh&pcn in new orleans 11 march2013
Swh&pcn in new orleans 11 march2013
 
Theres nothing like a good book
Theres nothing like a good bookTheres nothing like a good book
Theres nothing like a good book
 
South Africa 2010
South Africa 2010South Africa 2010
South Africa 2010
 
Building Loyalty Like Gaga
Building Loyalty Like Gaga Building Loyalty Like Gaga
Building Loyalty Like Gaga
 
3.1. cum atragi fonduri cu ideea ta. sisteme de solicitari
3.1. cum atragi fonduri cu ideea ta. sisteme de solicitari3.1. cum atragi fonduri cu ideea ta. sisteme de solicitari
3.1. cum atragi fonduri cu ideea ta. sisteme de solicitari
 
Introduktion til elektroniske ressourcer for historie
Introduktion til elektroniske ressourcer for historieIntroduktion til elektroniske ressourcer for historie
Introduktion til elektroniske ressourcer for historie
 
How to video embed
How to video embedHow to video embed
How to video embed
 

Ähnlich wie 野良ビルドから見たGentoo

Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Shogo Kawahara
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)Masataka Kondo
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo LinuxについてTakuto Matsuu
 
Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Hidenori Goto
 
NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料Hiromu Yakura
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
Xcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosXcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosTomohiro Kumagai
 
openSUSE におけるパッケージ管理入門
openSUSE におけるパッケージ管理入門openSUSE におけるパッケージ管理入門
openSUSE におけるパッケージ管理入門Fuminobu Takeyama
 
クラウドコラボレーションサーバ「Collabora Online」を構築してみた
クラウドコラボレーションサーバ「Collabora Online」を構築してみたクラウドコラボレーションサーバ「Collabora Online」を構築してみた
クラウドコラボレーションサーバ「Collabora Online」を構築してみたShinji Enoki
 
LibreOfficeの最近の動向とDebianでのLibreOfficeパッケージについて
LibreOfficeの最近の動向とDebianでのLibreOfficeパッケージについてLibreOfficeの最近の動向とDebianでのLibreOfficeパッケージについて
LibreOfficeの最近の動向とDebianでのLibreOfficeパッケージについてShinji Enoki
 
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linuxnftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in LinuxTomofumi Hayashi
 
静的サイトどこにする?
静的サイトどこにする?静的サイトどこにする?
静的サイトどこにする?ogawatti
 
Raspberry Pi and WebIOPi
Raspberry Pi and WebIOPiRaspberry Pi and WebIOPi
Raspberry Pi and WebIOPihiro345
 

Ähnlich wie 野良ビルドから見たGentoo (20)

Composer
 Composer Composer
Composer
 
Fab
FabFab
Fab
 
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
 
Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)Symfony2 workshop-0 (nagoya 2011/2/10)
Symfony2 workshop-0 (nagoya 2011/2/10)
 
NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料NPCA夏合宿 2014 講義資料
NPCA夏合宿 2014 講義資料
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
Xcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosXcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhios
 
openSUSE におけるパッケージ管理入門
openSUSE におけるパッケージ管理入門openSUSE におけるパッケージ管理入門
openSUSE におけるパッケージ管理入門
 
Pdp11 on-fpga
Pdp11 on-fpgaPdp11 on-fpga
Pdp11 on-fpga
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
 
go-apt-cacher/mirror
go-apt-cacher/mirrorgo-apt-cacher/mirror
go-apt-cacher/mirror
 
クラウドコラボレーションサーバ「Collabora Online」を構築してみた
クラウドコラボレーションサーバ「Collabora Online」を構築してみたクラウドコラボレーションサーバ「Collabora Online」を構築してみた
クラウドコラボレーションサーバ「Collabora Online」を構築してみた
 
LibreOfficeの最近の動向とDebianでのLibreOfficeパッケージについて
LibreOfficeの最近の動向とDebianでのLibreOfficeパッケージについてLibreOfficeの最近の動向とDebianでのLibreOfficeパッケージについて
LibreOfficeの最近の動向とDebianでのLibreOfficeパッケージについて
 
Metro
MetroMetro
Metro
 
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linuxnftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linux
 
静的サイトどこにする?
静的サイトどこにする?静的サイトどこにする?
静的サイトどこにする?
 
Raspberry Pi and WebIOPi
Raspberry Pi and WebIOPiRaspberry Pi and WebIOPi
Raspberry Pi and WebIOPi
 

Kürzlich hochgeladen

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Kürzlich hochgeladen (9)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

野良ビルドから見たGentoo

  • 2. ビルドなんて ./configure make make install でだいたいすむ
  • 3. そう思っていると 思わぬおとしぁなが待っている 今日のメインテーマ ( 時代は cmake とかそういう話じゃないよ )
  • 4. build process ● unpack ● (patch あてたりする ) ● ./configure ● make ● (make test) ● make install ● いろいろする
  • 5. unpack ● 特に注目するようなところはない ● 一応 unpack hoge fuga とかするだけで展開 するように – gz – xz – bz2
  • 6. configure ● econf コマンド – ./configure – --prefix=/usr – --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu – --mandir=/usr/share/man --infodir=/usr/share/info – --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib – --libdir=/usr/lib64 – --disable-dependency-tracking – --disable-silent-rules
  • 7. --disable-dependency-tracking ● automake の機能 dependency-tracking – コードのの依存をチェック – 依存によってリビルドが行なわれてべんり ● ただし – 依存チェックのコスト – 一回だけならただのムダ
  • 8. --disable-silent-rules ● silent rules ● Linux kernel の出力 CC foo LD foo ● デバッグにはふべん
  • 9. patch あてる ● patch あてて build できたぞ ! => 新しいバージョン出る => あれ、 patch どこいった ? ● /etc/portage/patches – <package name> – <package name>-<version> – <package name>-<revision>
  • 10. make のおとしあな ● Makefile がおかしい – “cd hoge;make” とか書いている – CFLAGS ・ LDFLAGS が反映されない – gcc 直接よんでる – リンクがおかしい ● こっそり – command not found – file dose not exist
  • 11. make 対策 ● ビルドログの監視 ● -frecord-gcc-switches – .GCC.command.line section ● --hash-style=gnu – ELF でのシンボル・ルックアップ – .hash section ● ld.gold を使う
  • 12. build log 監視 ● command not found 以外にも ● gcc の警告 – Strict Aliasing – Implicit Declarations – Used Uninitialized – Invalid X<=Y<=Z Comparisons – Non-Null Required – Truncating Pointers
  • 13. strict aliasing int X int X; float *Y; float Y ------------- X = 1; *Y = 3.14; printf("%dn", X);
  • 14. underlinking 1/2 Library Program Bar foo Library Nyoro Link Use
  • 15. --as-needed Library Program Bar foo Library Nyoro Link Use
  • 16. New nyoro Library Program Bar foo Rebuild Library Nyoro Link Use Library Nyoro
  • 17. underlinking 2/2 Library Program Bar foo Library Nyoro Link Use
  • 18. underlinking 2/2 Library Program Bar foo Broken Library Nyoro-1.0 Link Use Library Nyoro-2.0
  • 19. underlinking 2/2 Library Program Bar foo Broken Library Nyoro-1.0 Link Use Library Nyoro-2.0
  • 20. make install のおとしぁな ● root で実行されてる – 変なとこさわるかも ● 突然 rm -r /usr されたりな ● インストールしたバイナリがやばいかも – RUNPATH ・ TEXTREL ・ EXECSTACK – DT_NEEDED – SONAME – world writable – debug 情報ついたまま
  • 21. 他にもいろいろ ● めっちゃ容量使うやつ – /usr とか /var とかの容量事前確認 – メモリとかも ● gcc のバージョン・カーネルの設定などの チェック ● ABI の更新による rebuild
  • 22. ABI rebuild Program Library foo Nyoro-1.0 Library Nyoro-1.1 Link Use
  • 23. ABI rebuild Program Library foo Nyoro-1.0 Library Nyoro-1.1 Link Use
  • 24. ABI rebuild Program Library foo Nyoro-1.0 Library Update Nyoro-1.1 Link Use
  • 25. ABI rebuild Program Library foo Nyoro-1.0 Rebuild Library Update Nyoro-1.1 Link Use
  • 26. ABI rebuild Program Library foo Nyoro-1.0 Library Nyoro-1.1 Link Use
  • 27. 個別まとめ ● Gentoo 使っている人むけまとめ – portage 裏でいろいろやってるやべえ ! ● 野良ビルドしている人むけまとめ – いろいろおとしあな多いやばい ! – portage べんりかも ! ● なんかパッケージ書いてる人むけまとめ – 頭の片隅において対策しとこう ● とくに underlinking とか SONAME とか ● 他の distro の人 – うちの distro での build について次回発表するよ ! – Nix の patchelf とかおもしろそうなんだけど ( チラッ
  • 28. 全体まとめ ● コンパイルだからめんどい、わけではない – いやたしかに時間はかかるんやけどね ● むしろいろいろチェックしてくれててべんり でよい ● ビルドシステム極めてる ● いまからインストールしてみよう
  • 29. おまけ ● Gentoo に興味あるけど・・・でも・・・ ブラウザで Gentoo 体験 http://bit.ly/9VG7xz