SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
第 1 回 Open Build Service 道場


                        武山 文信
                   日本 openSUSE ユーザ会
                       Twitter: @ftake
                     Facebook: takeyamaf
                       M17N メンテナー




2012/09/07            第1回 Open Build Service道場   1
Open Build Service

     通称 OBS
      ●   旧 openSUSE Build Service

     パッケージング支援の Web アプリケーション
      ●   とそのインスタンス : build.opensuse.org
      ●   Tizen でも使っている、自前の Build Service も作成可




2012/09/07                 第1回 Open Build Service道場   2
パッケージング支援プラットフォーム

     パッケージのクラウドビルド環境
      ●   ソースコードから rpm パッケージを作成
      ●   仮想環境で x86 (32bit, 64bit), PPC, ARM, SH, ... に対応

     パッケージの配布環境の提供
      ●   ビルドしたパッケージを公開

     コラボレーション
      ●   パッケージのバージョン管理
          –   ファイルへの変更を記録
      ●   他の人の変更の取り込み

2012/09/07                第1回 Open Build Service道場          3
ユースケース

     最新のパッケージを追いかけるユーザが
     使うついでにパッケージを更新して、他の人に提供
      ●   「あれ libvorbis が古い。アップデートしておくか」

     アプリケーションの開発者が各ディストリ向けに
     パッケージを配布




2012/09/07            第1回 Open Build Service道場   4
目次 1/2

     OBS のモデル、 openSUSE と OBS
      ●   プロジェクト、パッケージ
      ●   ディストリビューション開発プロセス
          –   Factory, 開発リポジトリ・パッケージ

     コラボレーション
      ●   パッケージの branch/submit, レビュー

     パッケージ開発
      ●   osc コマンド、 spec ファイル
      ●   openSUSE のルール

2012/09/07                第1回 Open Build Service道場   5
目次 2/2 後編?

     プロジェクト管理
      ●   リポジトリの設定

     OBS サービス
      ●   スペックファイルの自動フォーマット

     その他
      ●   パッチの作成
      ●   kiwi ビルド




2012/09/07           第1回 Open Build Service道場   6
OBS のモデル
             openSUSE と OBS




2012/09/07    第1回 Open Build Service道場   7
openSUSE の OBS

     build.opensuse.org
      ●   誰でもアカウントを作成して使用可能
      ●   openSUSE 以外のディストリビューション向けのパッケージを開発
          しても OK

     Novell の共通アカウント
      ●   openSUSE の wiki や Bugzilla と共通




2012/09/07                第1回 Open Build Service道場   8
OBS の構成要素 2/2

     パッケージ
      ●   1 つのアプリケーションやライブラリに対応
          –   Upstream ( 開発元 ) の 1 つのソースアーカイブのことが多い
      ●   1 つの OBS パッケージから複数の RPM パッケージを作ることも
          –   Mozc → mozc, mozc-gui-tools, ibus-mozc, …
      ●   パッケージの中身
          –   *.tar.bz2, spec ファイル、パッチ、 README.suse, etc.

     RPM と deb をサポート
      ●   Deb を作る場合は patch と *.dsc が必要



2012/09/07                      第1回 Open Build Service道場    9
OBS の構成要素 2/2

     プロジェクト
      ●   複数のパッケージのグループ
      ●   プロジェクト毎にリポジトリが作られる




2012/09/07         第1回 Open Build Service道場   10
openSUSE におけるプロジェクト

     製品のためのプロジェクト
      ●   openSUSE:12.2
          –   12.2 のリリースに含まれるバージョンのパッケージを収録
      ●   Factory

     パッケージ開発用のプロジェクト
      ●   M17N, mozilla, KDE, devel:language:ruby, ...

     個人の作業スペースとして
      ●   home: ユーザー名

     https://build.opensuse.org/project/list_public
2012/09/07                  第1回 Open Build Service道場     11
開発プロジェクト

     M17N, mozilla, KDE:Distro:Factory, ..

     パッケージを作成・更新
      ●   分野ごとにパッケージ毎に集められる
      ●   それぞれのパッケージメンテナーが集まる
      ●   適当なタイミングで Factory へ転送する

     一般ユーザからの submit を受け取る
      ●   後述




2012/09/07             第1回 Open Build Service道場   12
自動バックポート 1/2

     開発プロジェクトから最新のパッケージを取得可
      ●   バックポート :
          新しいリリース向けの機能を以前のリリースに提供
      ●   各 openSUSE バージョン毎にパッケージをビルドできる
          –   12.2, 12.1, 11.4, SLES 11 SP2, …

     依存する範囲が限定されている
      ●   同じリポジトリにあるもの + 標準リポジトリ
          –   一般的な設定では
      ●   OS 全体を更新する必要は無い



2012/09/07                      第1回 Open Build Service道場   13
自動バックポート 2/2

     openSUSE には複数のリポジトリを同時に扱える仕組み
      ●   vendor の切り替え : 同じ vendor 間でしか update されない
      ●   SAT ソルバー : あるパッケージの vendor を変えたときに、
          依存するパッケージの vendor 変更を提案

     開発プロジェクトからしか手に入らないものも多数
      ●   フォント , 各種ゲーム
      ●   検索 & 1 click install は
          –   software.opensuse.org




2012/09/07                      第1回 Open Build Service道場   14
OBS のクラウドビルド環境

     openSUSE のインスタンスでは 300 ホスト以上が稼働中
      ●   物理マシンが何台かは不明
      ●   少し古い Opteron とかを考えると 300 / (6 * 2) = 25
          –   最低で 300 / (16 * 4) ≒ 4 !?

     常にパッケージをリポジトリ毎にビルド
      ●   12.2, 12.1, SLES 11 SP, … を x86, i586, …
      ●   依存するパッケージが更新されたら自動的にリビルド




2012/09/07                  第1回 Open Build Service道場   15
Factory

     次のリリースのためのプロジェクト
      ●   各開発プロジェクトからパッケージが次々と submit (提出)
          される

     RC のあたりでリリース用のプロジェクトにコピー
      ●   例 ) Factory → openSUSE:12.2
      ●   Beta のデバッグでは Factory を追いかける




2012/09/07                第1回 Open Build Service道場   16
OBS の全体像

     Factory                                    openSUSE 12.2

                             リリースが近づくとコピー



                                  Factory                                    12.2

                 適度なタイミングで submit                           OBS プロジェクト
    mozilla              各プロジェクトで           M17N               devel:...:ruby
                         パッケージを開発


        MozillaFirefox                                  Mozc     ruby   ruby19

                      リポジトリを持つ
                     12.2, 12.1, Factory

2012/09/07                       第1回 Open Build Service道場                           17
Factory 関連 FAQ

     Q: Factory のパッケージは安定しているか?
      ●   A: 時季による。リリース直前なら安定している

     Q: あるパッケージの最新版を 12.2 で使いたい。どこから
     インストールすべき?
      ●   A: Factory ではなく、開発プロジェクトのリポジトリから
      ●   理由 : Factory のパッケージは Factory にあるライブラリに依存
          –   重要なライブラリをごっそり更新しなければならなくなる




2012/09/07              第1回 Open Build Service道場     18
OBS プロジェクトのリポジトリの場所

     download.opensuse.org の下に
      ●   M17N:fonts なら
          –   download.opensuse.org/repositories/M17N:/fonts/openSUSE_12.x
          –   「 : 」が付いたサブプロジェクトはサブディレクトリの下にある
      ●   OBS の各プロジェクトにもリポジトリへのリンクあり

     Zypper から追加するときは
      ●   obs://M17N:fonts/openSUSE_12.x/ も使用可




2012/09/07                      第1回 Open Build Service道場                     19
コラボレーション




2012/09/07   第1回 Open Build Service道場   20
コラボレーション

     バージョン管理
      ●   Git, SVN のようにパッケージ内のファイルの変更履歴を管理
          –   何かあったときに元に戻せる
          –   RPM の changelog とは違う

     パッケージの submit
      ●   あるプロジェクトのパッケージの変更点を
          別のプロジェクトへ転送




2012/09/07                   第1回 Open Build Service道場   21
パッケージの branch & submit

     パッケージをコピーして変更し submit
      ●   GitHub の fork/join に近い

     誰でも openSUSE 公式のパッケージ開発に参加可能




2012/09/07               第1回 Open Build Service道場   22
パッケージの開発シナリオ 1/4

     インストールしたいパッケージの
     古いバージョンしか見つからなかった
      ●   ついでに、 OBS に新しいパッケージを提供しよう!

     開発プロジェクトのパッケージを branch
      ●   Devel package for openSUSE:Factory と書いてある
          –   Factory に行って derived package のリンクをたどれば見つけられる
      ●   開発プロジェクトと Factory の 2 段階レビュー




2012/09/07                 第1回 Open Build Service道場          23
パッケージの開発シナリオ 2/4

     Web からブランチするのが楽
      ●   ログインしてから、ブランチしたいパッケージを開く




2012/09/07         第1回 Open Build Service道場   24
パッケージの開発シナリオ 3/4

     Branch をするとホームリポジトリにコピーされる
      ●   home:branches: プロジェクト名 : パッケージ名
          –   プロジェクトが作られる
      ●   *.tar.bz を差し替えたり色々←後述
          –   osc コマンドを使う

     オリジナルのパッケージへのリンクが張られる
      ●   オリジナルが変更されたときに通知
          –   Pull 操作で手元のパッケージとマージ
      ●   オリジナルからの変更点を管理できる



2012/09/07                  第1回 Open Build Service道場   25
パッケージの開発シナリオ 4/4

     変更が終わったら元のプロジェクトへ submit する
      ●   元のプロジェクトへ
      ●   Web または osc コマンドで

     Submit request
      ●   修正内容、ビルドの状態、コメントなどをまとめたレポート
      ●   Submit 先のメンテナーに通知が行く(メールが来ます)
          –   編集権限がある人




2012/09/07               第1回 Open Build Service道場   26
メンテナーへのメールの内容
  From: submit した人のメアド
  Subject: [obs submit-request 132326] M17N/mozc: created by アカウント名
  To: ftake@geeko.jp

     home: アカウント名 :branches:M17N/mozc -> M17N/mozc        Submit するときに書いた
     https://build.opensuse.org/request/show/132326       コメント

     Description: upstream update. scim-mozc is removed

  changes files:
  --------------                                          変更点が diff 形式で
  --- mozc.changes
  +++ mozc.changes
  @@ -1,0 +2,8 @@
  +Sat Sep 1 14:41:35 UTC 2012 - ftake@geeko.jp
  +
  +- update to version 1.6.1187.102
  + * scim_mozc is removed
  + * 'Preference' button is added on the setup dialog of IBus
  + * minor updates and refactoring


2012/09/07                     第1回 Open Build Service道場                   27
レビュー

     Accept
      ●   そのプロジェクトのパッケージが置き換わる

     Reject
      ●   レビューコメントを見てパッケージを修正して再 submit
      ●   または取り下げる (revoke)

     レビューの観点
      ●   パッケージがルールに従って作られているか
      ●   ビルドができているか
      ●   メンテナー権限があれば自分でレビューできてしまう

2012/09/07            第1回 Open Build Service道場   28
パッケージの開発




2012/09/07   第1回 Open Build Service道場   29
パッケージの開発

     基本的には osc コマンドを使う
      ●   Web からのファイルの編集は厳しいものが
      ●   $ sudo zypper install osc
          –   新しいバージョンを使った方が良い。インストール前に :
              sudo zypper ar -R obs://openSUSE:Tools/openSUSE_12.2 tools

     home リポジトリにブランチして開発
      ●   ブランチは Web からやるのが楽
      ●   コマンドで mozc をブランチするなら
          $ osc branch M17N mozc
          –   どこにあるかを知っていないと


2012/09/07                      第1回 Open Build Service道場                   30
一応ひとこと

     細かいことは osc コマンドのマニュアルを参照
      ●   サブコマンド一覧
          $ osc help
      ●   サブコマンドの詳細
          $ osc help サブコマンド
      ●   あとは man を

     Subversion のコマンド体系によく似てます
      ●   checkout (co), commit (ci), update (up), add




2012/09/07                  第1回 Open Build Service道場     31
Checkout: ローカルにファイルをコピー

     例 : M17N の mozc を branch した場合
      ●   $ osc checkout home:UserName:branches:M17N:mozc
      ●   カレントディレクトリに
          home:UserName:branches:M17N/mozc/
          ができて、ファイルがダウンロードされる

     今後は mozc ディレクトリに cd して作業




2012/09/07                第1回 Open Build Service道場          32
パッケージの中身を編集

     例 : 新しい tar.bz2 をダウンロード
      ●   ダウンロードしたファイルをパッケージに追加
          –   $ osc add ファイル名
      ●   古いアーカイブを削除
          –   $ osc rm ファイル名
          –   通常の rm で消さないで!

     Spec ファイルを編集する
      ●   RPM パッケージの情報とビルドのためのスクリプト
      ●   たいてい Version タグを変更するだけ



2012/09/07                  第1回 Open Build Service道場   33
ビルドテスト

     パッケージのビルドが通るかチェック

     osc コマンドならクリーンな環境で簡単にビルド!
      ●   依存するパッケージをシステムにインストールしなくて良い
      ●   Spec ファイルの BuildRequires が正しいかもチェック可
      ●   $ osc build openSUSE_12.2
          –   デフォルトでは chroot を使います。今後は LXC が良いかも?
          –   KVM や Xen も使える
          –   --local-package が必要な場合もある

     非力なマシンではこのステップを飛ばしても良い


2012/09/07                 第1回 Open Build Service道場   34
ビルドにこけた場合

     ビルドログや、ビルド中のファイルを確認して修正

     ビルドのディレクトリ
      ●   /var/tmp/buildroot
      ●   $ osc chroot
          で仮想環境にログインできる




2012/09/07                 第1回 Open Build Service道場   35
サーバーへアップロード

     home プロジェクトにアップロード
      ●   osc commit

     Commit が終わるとサーバー上でビルドが始まる

     サーバーでビルドが終わるとパッケージが公開される
      ●   リポジトリが公開に設定されていれば




2012/09/07             第1回 Open Build Service道場   36
作成したパッケージを公開するには

     Publish Flag を ON にする
      ●   Web リポジトリタブから変更するのが楽
      ●   ビルドする前に変えておくべし

     プロジェクト単位 / パッケージ単位で設定可能




2012/09/07          第1回 Open Build Service道場   37
branch 元へ submit するときは

     Web の sources タブ show diff から submit がおすすめ
      ●   Submit する前に diff を確認できる

     自分の変更内容を changelog に書く
      ●   $ osc vc
      ●   ユーザーに何が変わったか分かるように
          –   今後ルールが厳密化される予定

     最低限のテストをして下さい
      ●   ビルドが通るか
      ●   インストールして動作するか

2012/09/07             第1回 Open Build Service道場   38
プロジェクトを新しく作るには

     home の下にサブプロジェクトをいくつでも作成可
      ●   home:UserName:SubProject

     ビルドするリポジトリを追加
      ●   openSUSE:12.2/standard
          openSUSE:12.2 プロジェクトの standard リポジトリに
          置かれているパッケージをビルドに使う
      ●   アーキテクチャ : x86_64, i586, ppc, armv7, sh, ..
      ●   Web から行うと楽




2012/09/07                第1回 Open Build Service道場     39
新しくパッケージを作る

     空のパッケージを作成
      ●   $ osc mkpac foo
          プロジェクトのディレクトリで実行

     spec ファイルを新規作成
      ●   $ rpmdev-newspec
          –   rpmdevtools を devel:tools からインストール

     ビルド時は
      ●   $ osc build –local-package
          –   リモートにファイルがまだ無いとき


2012/09/07                   第1回 Open Build Service道場   40
openSUSE にコミットする場合の注意事項

     openSUSE 独自のルール
      ●   Specfile guideline:
          http://en.opensuse.org/openSUSE:Specfile_guidelines

     Requires タグは基本的に使わない
      ●   BuildRequires から自動的に決まる

     %changelog は使わない
      ●   $ osc vc

     License タグは決まったフォーマットで
      ●   http://spdx.org/
2012/09/07                   第1回 Open Build Service道場           41
資料など

     公式のドキュメント
      ●   http://en.opensuse.org/Portal:Packaging

     過去の資料
      ●   「 openSUSE におけるパッケージ管理入門」
          –   OSC 2011 Tokyo/Fall
      ●   「 openSUSE Build Service でパッケージメンテナーになろう!」
          –   小江戸らぐ 2011 年 5 月オフ
      ●   「 openSUSE Build Service を使ってみよう」
          –   openSUSE 勉強会 2010 年 10 月



2012/09/07                      第1回 Open Build Service道場   42
openSUSE コミュニティのご案内

     最近活発な SNS
      ●   Twitter: @opensuseja
      ●   Facebook: http://www.facebook.com/opensuseja

     メーリングリスト
      ●   opensuse-ja@opensuse.org 公式アナウンスなど

     IRC
      ●   #opensuse-ja
      ●   毎週土曜日 22 時から IRC 定例



2012/09/07                 第1回 Open Build Service道場      43

Contenu connexe

Tendances

なれる! Debian開発者 〜 45分でわかる? メンテナ入門
なれる! Debian開発者 〜 45分でわかる? メンテナ入門なれる! Debian開発者 〜 45分でわかる? メンテナ入門
なれる! Debian開発者 〜 45分でわかる? メンテナ入門
Hideki Yamane
 

Tendances (20)

CentOSでつくる神Plesk
CentOSでつくる神PleskCentOSでつくる神Plesk
CentOSでつくる神Plesk
 
HELYX-OS in DEXCS2016 for OpenFOAM
HELYX-OS in DEXCS2016 for OpenFOAMHELYX-OS in DEXCS2016 for OpenFOAM
HELYX-OS in DEXCS2016 for OpenFOAM
 
クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介
クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介
クラウドインフラのゲスト OS は openSUSE で—今までの&新しい openSUSE 活用法の紹介
 
pkgsrcユーザー向け設定
pkgsrcユーザー向け設定pkgsrcユーザー向け設定
pkgsrcユーザー向け設定
 
Open Build Serviceで楽をする
Open Build Serviceで楽をするOpen Build Serviceで楽をする
Open Build Serviceで楽をする
 
Mercurial入門
Mercurial入門Mercurial入門
Mercurial入門
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
GitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECT
GitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECTGitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECT
GitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECT
 
boot2docker の format-me の話
boot2docker の format-me の話boot2docker の format-me の話
boot2docker の format-me の話
 
VPSもDesktopもYaSTを使ってLinuxをらくらく設定―ファイルサーバー構築・管理編
VPSもDesktopもYaSTを使ってLinuxをらくらく設定―ファイルサーバー構築・管理編VPSもDesktopもYaSTを使ってLinuxをらくらく設定―ファイルサーバー構築・管理編
VPSもDesktopもYaSTを使ってLinuxをらくらく設定―ファイルサーバー構築・管理編
 
openSUSE におけるパッケージ管理入門
openSUSE におけるパッケージ管理入門openSUSE におけるパッケージ管理入門
openSUSE におけるパッケージ管理入門
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
 
Drupal 8 へのスタンドアロン behat の導入
Drupal 8 へのスタンドアロン behat の導入Drupal 8 へのスタンドアロン behat の導入
Drupal 8 へのスタンドアロン behat の導入
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
 
2019年 これからの人向け 超速習!流体解析ツールボックスOpenFOAM
2019年 これからの人向け 超速習!流体解析ツールボックスOpenFOAM2019年 これからの人向け 超速習!流体解析ツールボックスOpenFOAM
2019年 これからの人向け 超速習!流体解析ツールボックスOpenFOAM
 
Git勉強会
Git勉強会Git勉強会
Git勉強会
 
SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理
 
なれる! Debian開発者 〜 45分でわかる? メンテナ入門
なれる! Debian開発者 〜 45分でわかる? メンテナ入門なれる! Debian開発者 〜 45分でわかる? メンテナ入門
なれる! Debian開発者 〜 45分でわかる? メンテナ入門
 
SVN入門
SVN入門SVN入門
SVN入門
 

Similaire à 第1回 Open Build Service 道場

意外と知らない?Yumパッケージ管理
意外と知らない?Yumパッケージ管理意外と知らない?Yumパッケージ管理
意外と知らない?Yumパッケージ管理
denet1999
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko
Kohki Nakashima
 
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
Shogo Kawahara
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
david9142
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
Etsuji Nakai
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
 
Solaris 11 ディープダイブセミナー Distribution Constructor編
Solaris 11 ディープダイブセミナー Distribution Constructor編Solaris 11 ディープダイブセミナー Distribution Constructor編
Solaris 11 ディープダイブセミナー Distribution Constructor編
SolarisJP
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
Etsuji Nakai
 

Similaire à 第1回 Open Build Service 道場 (20)

ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
OpenCV2.2 Install Guide ver.0.5
OpenCV2.2 Install Guide ver.0.5OpenCV2.2 Install Guide ver.0.5
OpenCV2.2 Install Guide ver.0.5
 
20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
20120907 osc-lt-docja
20120907 osc-lt-docja20120907 osc-lt-docja
20120907 osc-lt-docja
 
意外と知らない?Yumパッケージ管理
意外と知らない?Yumパッケージ管理意外と知らない?Yumパッケージ管理
意外と知らない?Yumパッケージ管理
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko
 
Windows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみるWindows Server 2019 で Container を使ってみる
Windows Server 2019 で Container を使ってみる
 
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
 
はじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & LinuxはじめてのコンテナーDocker & Windows & Linux
はじめてのコンテナーDocker & Windows & Linux
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会
 
Windows Server 2016上でLinuxコンテナが動いた!
Windows Server 2016上でLinuxコンテナが動いた!Windows Server 2016上でLinuxコンテナが動いた!
Windows Server 2016上でLinuxコンテナが動いた!
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
Solaris 11 ディープダイブセミナー Distribution Constructor編
Solaris 11 ディープダイブセミナー Distribution Constructor編Solaris 11 ディープダイブセミナー Distribution Constructor編
Solaris 11 ディープダイブセミナー Distribution Constructor編
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
 
Personal Cloud Automation
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
 
OpenDocument interoperability test workshop after story
OpenDocument interoperability test workshop after storyOpenDocument interoperability test workshop after story
OpenDocument interoperability test workshop after story
 

Plus de Fuminobu Takeyama

Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Fuminobu Takeyama
 
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSEGeeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Fuminobu Takeyama
 
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
Fuminobu Takeyama
 
What is necessary for the next input method framework?
What is necessary for the next input method framework?What is necessary for the next input method framework?
What is necessary for the next input method framework?
Fuminobu Takeyama
 
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるサーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
Fuminobu Takeyama
 

Plus de Fuminobu Takeyama (20)

Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーBtrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
 
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
 
SUSE Studio Express を使ってみた
SUSE Studio Express を使ってみたSUSE Studio Express を使ってみた
SUSE Studio Express を使ってみた
 
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSEGeeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
 
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編最近良く聞く Kubernetes を体験してみた イントロ + 活用編
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
 
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSERuby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
 
ここが違う! OSC Tokyo と台湾の COSCUP
ここが違う! OSC Tokyo と台湾の COSCUPここが違う! OSC Tokyo と台湾の COSCUP
ここが違う! OSC Tokyo と台湾の COSCUP
 
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
 
What is necessary for the next input method framework?
What is necessary for the next input method framework?What is necessary for the next input method framework?
What is necessary for the next input method framework?
 
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースLeap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
 
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
 
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
 
Welcome to openSUSE.Asia Summit 2017
Welcome to openSUSE.Asia Summit 2017Welcome to openSUSE.Asia Summit 2017
Welcome to openSUSE.Asia Summit 2017
 
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
 
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
 
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
 
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるサーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
 
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
 
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
 
20161106 osc-tokyo-lt-asia-summit
20161106 osc-tokyo-lt-asia-summit20161106 osc-tokyo-lt-asia-summit
20161106 osc-tokyo-lt-asia-summit
 

第1回 Open Build Service 道場

  • 1. 第 1 回 Open Build Service 道場 武山 文信 日本 openSUSE ユーザ会 Twitter: @ftake Facebook: takeyamaf M17N メンテナー 2012/09/07 第1回 Open Build Service道場 1
  • 2. Open Build Service 通称 OBS ● 旧 openSUSE Build Service パッケージング支援の Web アプリケーション ● とそのインスタンス : build.opensuse.org ● Tizen でも使っている、自前の Build Service も作成可 2012/09/07 第1回 Open Build Service道場 2
  • 3. パッケージング支援プラットフォーム パッケージのクラウドビルド環境 ● ソースコードから rpm パッケージを作成 ● 仮想環境で x86 (32bit, 64bit), PPC, ARM, SH, ... に対応 パッケージの配布環境の提供 ● ビルドしたパッケージを公開 コラボレーション ● パッケージのバージョン管理 – ファイルへの変更を記録 ● 他の人の変更の取り込み 2012/09/07 第1回 Open Build Service道場 3
  • 4. ユースケース 最新のパッケージを追いかけるユーザが 使うついでにパッケージを更新して、他の人に提供 ● 「あれ libvorbis が古い。アップデートしておくか」 アプリケーションの開発者が各ディストリ向けに パッケージを配布 2012/09/07 第1回 Open Build Service道場 4
  • 5. 目次 1/2 OBS のモデル、 openSUSE と OBS ● プロジェクト、パッケージ ● ディストリビューション開発プロセス – Factory, 開発リポジトリ・パッケージ コラボレーション ● パッケージの branch/submit, レビュー パッケージ開発 ● osc コマンド、 spec ファイル ● openSUSE のルール 2012/09/07 第1回 Open Build Service道場 5
  • 6. 目次 2/2 後編? プロジェクト管理 ● リポジトリの設定 OBS サービス ● スペックファイルの自動フォーマット その他 ● パッチの作成 ● kiwi ビルド 2012/09/07 第1回 Open Build Service道場 6
  • 7. OBS のモデル openSUSE と OBS 2012/09/07 第1回 Open Build Service道場 7
  • 8. openSUSE の OBS build.opensuse.org ● 誰でもアカウントを作成して使用可能 ● openSUSE 以外のディストリビューション向けのパッケージを開発 しても OK Novell の共通アカウント ● openSUSE の wiki や Bugzilla と共通 2012/09/07 第1回 Open Build Service道場 8
  • 9. OBS の構成要素 2/2 パッケージ ● 1 つのアプリケーションやライブラリに対応 – Upstream ( 開発元 ) の 1 つのソースアーカイブのことが多い ● 1 つの OBS パッケージから複数の RPM パッケージを作ることも – Mozc → mozc, mozc-gui-tools, ibus-mozc, … ● パッケージの中身 – *.tar.bz2, spec ファイル、パッチ、 README.suse, etc. RPM と deb をサポート ● Deb を作る場合は patch と *.dsc が必要 2012/09/07 第1回 Open Build Service道場 9
  • 10. OBS の構成要素 2/2 プロジェクト ● 複数のパッケージのグループ ● プロジェクト毎にリポジトリが作られる 2012/09/07 第1回 Open Build Service道場 10
  • 11. openSUSE におけるプロジェクト 製品のためのプロジェクト ● openSUSE:12.2 – 12.2 のリリースに含まれるバージョンのパッケージを収録 ● Factory パッケージ開発用のプロジェクト ● M17N, mozilla, KDE, devel:language:ruby, ... 個人の作業スペースとして ● home: ユーザー名 https://build.opensuse.org/project/list_public 2012/09/07 第1回 Open Build Service道場 11
  • 12. 開発プロジェクト M17N, mozilla, KDE:Distro:Factory, .. パッケージを作成・更新 ● 分野ごとにパッケージ毎に集められる ● それぞれのパッケージメンテナーが集まる ● 適当なタイミングで Factory へ転送する 一般ユーザからの submit を受け取る ● 後述 2012/09/07 第1回 Open Build Service道場 12
  • 13. 自動バックポート 1/2 開発プロジェクトから最新のパッケージを取得可 ● バックポート : 新しいリリース向けの機能を以前のリリースに提供 ● 各 openSUSE バージョン毎にパッケージをビルドできる – 12.2, 12.1, 11.4, SLES 11 SP2, … 依存する範囲が限定されている ● 同じリポジトリにあるもの + 標準リポジトリ – 一般的な設定では ● OS 全体を更新する必要は無い 2012/09/07 第1回 Open Build Service道場 13
  • 14. 自動バックポート 2/2 openSUSE には複数のリポジトリを同時に扱える仕組み ● vendor の切り替え : 同じ vendor 間でしか update されない ● SAT ソルバー : あるパッケージの vendor を変えたときに、 依存するパッケージの vendor 変更を提案 開発プロジェクトからしか手に入らないものも多数 ● フォント , 各種ゲーム ● 検索 & 1 click install は – software.opensuse.org 2012/09/07 第1回 Open Build Service道場 14
  • 15. OBS のクラウドビルド環境 openSUSE のインスタンスでは 300 ホスト以上が稼働中 ● 物理マシンが何台かは不明 ● 少し古い Opteron とかを考えると 300 / (6 * 2) = 25 – 最低で 300 / (16 * 4) ≒ 4 !? 常にパッケージをリポジトリ毎にビルド ● 12.2, 12.1, SLES 11 SP, … を x86, i586, … ● 依存するパッケージが更新されたら自動的にリビルド 2012/09/07 第1回 Open Build Service道場 15
  • 16. Factory 次のリリースのためのプロジェクト ● 各開発プロジェクトからパッケージが次々と submit (提出) される RC のあたりでリリース用のプロジェクトにコピー ● 例 ) Factory → openSUSE:12.2 ● Beta のデバッグでは Factory を追いかける 2012/09/07 第1回 Open Build Service道場 16
  • 17. OBS の全体像 Factory openSUSE 12.2 リリースが近づくとコピー Factory 12.2 適度なタイミングで submit OBS プロジェクト mozilla 各プロジェクトで M17N devel:...:ruby パッケージを開発 MozillaFirefox Mozc ruby ruby19 リポジトリを持つ 12.2, 12.1, Factory 2012/09/07 第1回 Open Build Service道場 17
  • 18. Factory 関連 FAQ Q: Factory のパッケージは安定しているか? ● A: 時季による。リリース直前なら安定している Q: あるパッケージの最新版を 12.2 で使いたい。どこから インストールすべき? ● A: Factory ではなく、開発プロジェクトのリポジトリから ● 理由 : Factory のパッケージは Factory にあるライブラリに依存 – 重要なライブラリをごっそり更新しなければならなくなる 2012/09/07 第1回 Open Build Service道場 18
  • 19. OBS プロジェクトのリポジトリの場所 download.opensuse.org の下に ● M17N:fonts なら – download.opensuse.org/repositories/M17N:/fonts/openSUSE_12.x – 「 : 」が付いたサブプロジェクトはサブディレクトリの下にある ● OBS の各プロジェクトにもリポジトリへのリンクあり Zypper から追加するときは ● obs://M17N:fonts/openSUSE_12.x/ も使用可 2012/09/07 第1回 Open Build Service道場 19
  • 20. コラボレーション 2012/09/07 第1回 Open Build Service道場 20
  • 21. コラボレーション バージョン管理 ● Git, SVN のようにパッケージ内のファイルの変更履歴を管理 – 何かあったときに元に戻せる – RPM の changelog とは違う パッケージの submit ● あるプロジェクトのパッケージの変更点を 別のプロジェクトへ転送 2012/09/07 第1回 Open Build Service道場 21
  • 22. パッケージの branch & submit パッケージをコピーして変更し submit ● GitHub の fork/join に近い 誰でも openSUSE 公式のパッケージ開発に参加可能 2012/09/07 第1回 Open Build Service道場 22
  • 23. パッケージの開発シナリオ 1/4 インストールしたいパッケージの 古いバージョンしか見つからなかった ● ついでに、 OBS に新しいパッケージを提供しよう! 開発プロジェクトのパッケージを branch ● Devel package for openSUSE:Factory と書いてある – Factory に行って derived package のリンクをたどれば見つけられる ● 開発プロジェクトと Factory の 2 段階レビュー 2012/09/07 第1回 Open Build Service道場 23
  • 24. パッケージの開発シナリオ 2/4 Web からブランチするのが楽 ● ログインしてから、ブランチしたいパッケージを開く 2012/09/07 第1回 Open Build Service道場 24
  • 25. パッケージの開発シナリオ 3/4 Branch をするとホームリポジトリにコピーされる ● home:branches: プロジェクト名 : パッケージ名 – プロジェクトが作られる ● *.tar.bz を差し替えたり色々←後述 – osc コマンドを使う オリジナルのパッケージへのリンクが張られる ● オリジナルが変更されたときに通知 – Pull 操作で手元のパッケージとマージ ● オリジナルからの変更点を管理できる 2012/09/07 第1回 Open Build Service道場 25
  • 26. パッケージの開発シナリオ 4/4 変更が終わったら元のプロジェクトへ submit する ● 元のプロジェクトへ ● Web または osc コマンドで Submit request ● 修正内容、ビルドの状態、コメントなどをまとめたレポート ● Submit 先のメンテナーに通知が行く(メールが来ます) – 編集権限がある人 2012/09/07 第1回 Open Build Service道場 26
  • 27. メンテナーへのメールの内容 From: submit した人のメアド Subject: [obs submit-request 132326] M17N/mozc: created by アカウント名 To: ftake@geeko.jp home: アカウント名 :branches:M17N/mozc -> M17N/mozc Submit するときに書いた https://build.opensuse.org/request/show/132326 コメント Description: upstream update. scim-mozc is removed changes files: -------------- 変更点が diff 形式で --- mozc.changes +++ mozc.changes @@ -1,0 +2,8 @@ +Sat Sep 1 14:41:35 UTC 2012 - ftake@geeko.jp + +- update to version 1.6.1187.102 + * scim_mozc is removed + * 'Preference' button is added on the setup dialog of IBus + * minor updates and refactoring 2012/09/07 第1回 Open Build Service道場 27
  • 28. レビュー Accept ● そのプロジェクトのパッケージが置き換わる Reject ● レビューコメントを見てパッケージを修正して再 submit ● または取り下げる (revoke) レビューの観点 ● パッケージがルールに従って作られているか ● ビルドができているか ● メンテナー権限があれば自分でレビューできてしまう 2012/09/07 第1回 Open Build Service道場 28
  • 29. パッケージの開発 2012/09/07 第1回 Open Build Service道場 29
  • 30. パッケージの開発 基本的には osc コマンドを使う ● Web からのファイルの編集は厳しいものが ● $ sudo zypper install osc – 新しいバージョンを使った方が良い。インストール前に : sudo zypper ar -R obs://openSUSE:Tools/openSUSE_12.2 tools home リポジトリにブランチして開発 ● ブランチは Web からやるのが楽 ● コマンドで mozc をブランチするなら $ osc branch M17N mozc – どこにあるかを知っていないと 2012/09/07 第1回 Open Build Service道場 30
  • 31. 一応ひとこと 細かいことは osc コマンドのマニュアルを参照 ● サブコマンド一覧 $ osc help ● サブコマンドの詳細 $ osc help サブコマンド ● あとは man を Subversion のコマンド体系によく似てます ● checkout (co), commit (ci), update (up), add 2012/09/07 第1回 Open Build Service道場 31
  • 32. Checkout: ローカルにファイルをコピー 例 : M17N の mozc を branch した場合 ● $ osc checkout home:UserName:branches:M17N:mozc ● カレントディレクトリに home:UserName:branches:M17N/mozc/ ができて、ファイルがダウンロードされる 今後は mozc ディレクトリに cd して作業 2012/09/07 第1回 Open Build Service道場 32
  • 33. パッケージの中身を編集 例 : 新しい tar.bz2 をダウンロード ● ダウンロードしたファイルをパッケージに追加 – $ osc add ファイル名 ● 古いアーカイブを削除 – $ osc rm ファイル名 – 通常の rm で消さないで! Spec ファイルを編集する ● RPM パッケージの情報とビルドのためのスクリプト ● たいてい Version タグを変更するだけ 2012/09/07 第1回 Open Build Service道場 33
  • 34. ビルドテスト パッケージのビルドが通るかチェック osc コマンドならクリーンな環境で簡単にビルド! ● 依存するパッケージをシステムにインストールしなくて良い ● Spec ファイルの BuildRequires が正しいかもチェック可 ● $ osc build openSUSE_12.2 – デフォルトでは chroot を使います。今後は LXC が良いかも? – KVM や Xen も使える – --local-package が必要な場合もある 非力なマシンではこのステップを飛ばしても良い 2012/09/07 第1回 Open Build Service道場 34
  • 35. ビルドにこけた場合 ビルドログや、ビルド中のファイルを確認して修正 ビルドのディレクトリ ● /var/tmp/buildroot ● $ osc chroot で仮想環境にログインできる 2012/09/07 第1回 Open Build Service道場 35
  • 36. サーバーへアップロード home プロジェクトにアップロード ● osc commit Commit が終わるとサーバー上でビルドが始まる サーバーでビルドが終わるとパッケージが公開される ● リポジトリが公開に設定されていれば 2012/09/07 第1回 Open Build Service道場 36
  • 37. 作成したパッケージを公開するには Publish Flag を ON にする ● Web リポジトリタブから変更するのが楽 ● ビルドする前に変えておくべし プロジェクト単位 / パッケージ単位で設定可能 2012/09/07 第1回 Open Build Service道場 37
  • 38. branch 元へ submit するときは Web の sources タブ show diff から submit がおすすめ ● Submit する前に diff を確認できる 自分の変更内容を changelog に書く ● $ osc vc ● ユーザーに何が変わったか分かるように – 今後ルールが厳密化される予定 最低限のテストをして下さい ● ビルドが通るか ● インストールして動作するか 2012/09/07 第1回 Open Build Service道場 38
  • 39. プロジェクトを新しく作るには home の下にサブプロジェクトをいくつでも作成可 ● home:UserName:SubProject ビルドするリポジトリを追加 ● openSUSE:12.2/standard openSUSE:12.2 プロジェクトの standard リポジトリに 置かれているパッケージをビルドに使う ● アーキテクチャ : x86_64, i586, ppc, armv7, sh, .. ● Web から行うと楽 2012/09/07 第1回 Open Build Service道場 39
  • 40. 新しくパッケージを作る 空のパッケージを作成 ● $ osc mkpac foo プロジェクトのディレクトリで実行 spec ファイルを新規作成 ● $ rpmdev-newspec – rpmdevtools を devel:tools からインストール ビルド時は ● $ osc build –local-package – リモートにファイルがまだ無いとき 2012/09/07 第1回 Open Build Service道場 40
  • 41. openSUSE にコミットする場合の注意事項 openSUSE 独自のルール ● Specfile guideline: http://en.opensuse.org/openSUSE:Specfile_guidelines Requires タグは基本的に使わない ● BuildRequires から自動的に決まる %changelog は使わない ● $ osc vc License タグは決まったフォーマットで ● http://spdx.org/ 2012/09/07 第1回 Open Build Service道場 41
  • 42. 資料など 公式のドキュメント ● http://en.opensuse.org/Portal:Packaging 過去の資料 ● 「 openSUSE におけるパッケージ管理入門」 – OSC 2011 Tokyo/Fall ● 「 openSUSE Build Service でパッケージメンテナーになろう!」 – 小江戸らぐ 2011 年 5 月オフ ● 「 openSUSE Build Service を使ってみよう」 – openSUSE 勉強会 2010 年 10 月 2012/09/07 第1回 Open Build Service道場 42
  • 43. openSUSE コミュニティのご案内 最近活発な SNS ● Twitter: @opensuseja ● Facebook: http://www.facebook.com/opensuseja メーリングリスト ● opensuse-ja@opensuse.org 公式アナウンスなど IRC ● #opensuse-ja ● 毎週土曜日 22 時から IRC 定例 2012/09/07 第1回 Open Build Service道場 43