81
Open Build Serviceで楽をする 川上けんと(@emaxser) 日本openSUSEユーザ会

Open Build Serviceで楽をする

Embed Size (px)

Citation preview

Page 1: Open Build Serviceで楽をする

Open Build Serviceで楽をする

川上けんと(@emaxser)日本openSUSEユーザ会

Page 2: Open Build Serviceで楽をする

自己紹介● 川上けんと

– 豊橋技術科学大学 情報知能工学課程 B3– コンピュータサークル副部長

● 日本openSUSEユーザ会– 最近参加したばっかりっぽい

● 趣味– セキュリティ

● セキュリティキャンプ2014 ネットワーク・セキュリティ– Emacs– プログラミング言語を適当にいろいろ覚える

● 最近はErlangやってます

● Webページ– http://www.techack.net

Page 3: Open Build Serviceで楽をする

Index

1.openSUSEの紹介

2.Open Build Serviceの紹介

3.OBSで楽をしよう

Page 4: Open Build Serviceで楽をする

Index

1.openSUSEの紹介

2.Open Build Serviceの紹介

3.OBSで楽をしよう

Page 5: Open Build Serviceで楽をする

openSUSEの紹介

● Linuxディストリの一つ● 読み方:おーぷんすーぜ● コミュニティ主導のディストリビューション

● 特徴:– YaSTという管理ツール– 豊富なWindow Manager– 比較的新しいパッケージ

Page 6: Open Build Serviceで楽をする

● とりあえず,覚えて帰って欲しい事

Page 7: Open Build Serviceで楽をする

Geeko

openSUSEマスコットキャラクタ!!

Page 8: Open Build Serviceで楽をする

Other distributions

Page 9: Open Build Serviceで楽をする

Geeko is Cute!!

Page 10: Open Build Serviceで楽をする

Geeko is Cute!!

Page 11: Open Build Serviceで楽をする

Geeko is Cute!!

Page 12: Open Build Serviceで楽をする

もうひとつ

Page 13: Open Build Serviceで楽をする

openSUSE is not OpenSUSE

Page 14: Open Build Serviceで楽をする

openSUSE is not OpenSUSE

Page 15: Open Build Serviceで楽をする

openSUSE is not OpenSUSE

Page 16: Open Build Serviceで楽をする

openSUSE is not OpenSUSE

Page 17: Open Build Serviceで楽をする

openSUSE is not OpenSUSE.openSUSE is not OpenSuse.openSUSE is not OpenSuSE.openSUSE is not OPENSUSE.

Page 18: Open Build Serviceで楽をする

openSUSEの紹介

● Linuxディストリの一つ● 読み方:おーぷんすーぜ● コミュニティ主導のディストリビューション

● 特徴:– YaSTという管理ツール– 豊富なWindow Manager– 比較的新しいパッケージ

Page 19: Open Build Serviceで楽をする

YaST

● Yet another Setup Tool● openSUSEの設定管理や構成管理のためのツール

– IPアドレスの固定– HTTPサーバの設定– Sambaの設定– iptablesの設定

このあたりの設定を

まとめちゃえる

TUIとGUIの共通インターフェイス

Page 20: Open Build Serviceで楽をする

YaST

● GUIのYaSTの画像

Page 21: Open Build Serviceで楽をする

YaST

● TUIのYaSTの画像

Page 22: Open Build Serviceで楽をする

● デフォルトで選べるWM– KDE– xfce– GNOME– LXDE

● その他ウィンドウマネージャもインストール後に

自分で入れて選べる

豊富なWindow Manager

Page 23: Open Build Serviceで楽をする

KDE

Page 24: Open Build Serviceで楽をする

xfce

Page 25: Open Build Serviceで楽をする

GNOME

Page 26: Open Build Serviceで楽をする

LXDE

Page 27: Open Build Serviceで楽をする

現在の最新のリリース

● openSUSE 13.2– 2014年11月– YaSTのRuby化– ファイルシステムがデフォルトでbtrfsに– Dockerのサポート

● 次期リリース– 2015年7月予定なのかな?

Page 28: Open Build Serviceで楽をする

openSUSEの種類

常に最新毎週のようにローリングリリースOpenQA による自動テスト

堅牢・エンタープライズ

長期サポート通常のサポート期間終了後に延長サポート

次の対象は 13.1

比較的新しい + 安定8ヶ月に1回のリリース18ヶ月のサポート期間

Tumbleweed の登場で1年化の議論

開発者向け

Page 29: Open Build Serviceで楽をする

Index

1.openSUSEの紹介

2.Open Build Serviceの紹介

3.OBSで楽をしよう

Page 30: Open Build Serviceで楽をする

What can the Open Build Service do?(勘訳)

>The Open Build Service (OBS) is a generic system to build and distribute binary packages from sources in an automatic, consistent and reproducible way. You can release packages as well as updates, add-ons, appliances and entire distributions for a wide range of operating systems and hardware architectures.

● OBSはソースコードから各ディストリビューション向けのパッケージをビルドするための自動で一貫性のあり再現性のある一般的なシステムです.

あなたはパッケージをリリース,アップデート,拡張,環境を構築,広範囲のディストリビューションやオペレーティングシステム,ハードウェアアーキテクチャにリリースする事が出来る.

http://openbuildservice.org/about/About - Open Build Service

Page 31: Open Build Serviceで楽をする

Open Build Service

● 通称OBS● パッケージ開発支援Webアプリケーション

– パッケージビルドクラウドサービス● パッケージのバージョン管理や

コラボレーションも可能● 様々なディストリビューションに対応

Page 32: Open Build Serviceで楽をする

openSUSE以外の対応

● Arch● Debian● Fedora● Debian● CentOS

● Ubuntu● Scientific Linux● Univention

Page 33: Open Build Serviceで楽をする

利点

● 開発者– 様々な環境へパッケージを作成する事ができる

● 例:http://software.opensuse.org/package/owncloud– 依存パッケージの自動解決– 他パッケージングプロジェクトへのバージョンアップなどの貢献が容易

Page 34: Open Build Serviceで楽をする

利点

● ユーザー– 最新のパッケージを使用する事が出来る– 多くのプラットフォーム向けのパッケージを入手する事が出来る

Page 35: Open Build Serviceで楽をする

openSUSEとの関係

● http://build.opensuse.org– 今回使用するやつ– 誰でもアカウントを自由に作成し作成したパッケージを公開する事が出来る

– OBSで対応している全てのディストリビューション向けのパッケージを開発可能

– Novellの共通アカウント

Page 36: Open Build Serviceで楽をする

結局何が楽になるの?

● 異なる環境に向けたパッケージのビルドが楽になる● openSUSEならWebからワンクリックでインストール出来るようになる

● 他の人に楽に公開出来る● 楽に公開して楽にOSSに貢献した気分になれる!!● パッケージの場所がまとまって探すのが楽になる

Page 37: Open Build Serviceで楽をする

Index

1.openSUSEの紹介

2.Open Build Serviceの紹介

3.OBSで楽をしよう

Page 38: Open Build Serviceで楽をする

使ってみよう

Page 39: Open Build Serviceで楽をする

まずはアカウント作成

● https://build.opensuse.org●

Page 40: Open Build Serviceで楽をする

まずはアカウント作成

Page 41: Open Build Serviceで楽をする

まずはアカウント作成

Page 42: Open Build Serviceで楽をする

アカウント

● Novellの共通アカウントなので,他のNovellのサービスにログインする時にも使える

● 後に解説するoscコマンドで最初にコマンドを使う時にこの時のアカウント名とパスワードを聞かれます

Page 43: Open Build Serviceで楽をする

Open Build Service上でプロジェクトの作成

Page 44: Open Build Serviceで楽をする

プロジェクト

● OBSで作成するパッケージの設定などはプロジェクト毎に行う

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

Page 45: Open Build Serviceで楽をする

プロジェクトの種類

● リリースのためのプロジェクト– (e.g. openSUSE:Factory,openSUSE:13.2,,etc)

● パッケージ開発用のプロジェクト– (e.g. network:utilities,editors,,etc)

● 個人で使うためのプロジェクト– (e.g. home:kimitoboku,home:hogehuga:hoge,,etc)

Page 46: Open Build Serviceで楽をする

プロジェクト

● ユーザは各プロジェクトから最新のパッケージを所得してインストールする事が可能

● 一般的にパッケージはプロジェクトの中の物+デフォルトパッケージにのみ依存するようになっている

Page 47: Open Build Serviceで楽をする

openSUSE:Factory

● 次期リリースのためのベータ版のプロジェクト– 各開発プロジェクトからパッケージが集められる

● 次期リリースが近づくとFactoryからリリース用のプロジェクトにコピーされる

● ローリング・リリース版のTumbleweedでは常にFactoryを追いかける事が出来る

Page 48: Open Build Serviceで楽をする

開発プロジェクト

● network:utilities,editors,,etc● 同じカテゴリのパッケージの開発,更新を行っている● それぞれのパッケージに対しメンテナーが存在し管理を行っている

● 開発プロジェクトから適切なタイミングでFactoryにコピーされる

● パッケージに対してGithubのプルリクのような形で他のユーザから更新などを受け取る事が出来る

Page 49: Open Build Serviceで楽をする

流れ開発プロジェクト

editor Network:utilities etc

Factory openSUSE 13.2

適切なタイミングでFactoryにコピー

リリースが近づくとリリースのためのプロジェクトにコピー

Page 50: Open Build Serviceで楽をする

プロジェクトの作成

● https://build.opensuse.org●

Page 51: Open Build Serviceで楽をする

プロジェクトの作成

Page 52: Open Build Serviceで楽をする

プロジェクトの作成

Page 53: Open Build Serviceで楽をする

プロジェクトの設定

● リポジトリの追加– openSUSE 13.2,x86_64– openSUSE 13.2,i586

● 追加したリポジトリがパッケージのビルドに使用される

Page 54: Open Build Serviceで楽をする

追加したリポジトリのflag

● Build Flag

– パッケージをビルドするかどうか

● Debuginfo Flag

– デバック情報をパッケージに含めたものを作成するかどうか

● Publish Flag

– 作成したパッケージを公開するかどうか

● Use for Build Flag

– パッケージを他のプロジェクトのパッケージをビルドするのに使えるかどうか

Page 55: Open Build Serviceで楽をする

プロジェクトの設定

Page 56: Open Build Serviceで楽をする

プロジェクトの設定

Page 57: Open Build Serviceで楽をする

プロジェクトの設定

Page 58: Open Build Serviceで楽をする

プロジェクトの設定

Page 59: Open Build Serviceで楽をする

Open Build Service上でパッケージ作成

Page 60: Open Build Serviceで楽をする

パッケージ

● 一つのアプリケーションやライブラリに対応する

● Windowsでいうmsiインストーラ形式のような物● OBSでプロジェクトが配布しているパッケージはWebインターフェイスから検索してインストールする事が可能– http://software.opensuse.org

Page 61: Open Build Serviceで楽をする

パッケージの作成

Page 62: Open Build Serviceで楽をする

パッケージ作成

Page 63: Open Build Serviceで楽をする
Page 64: Open Build Serviceで楽をする

パッケージ開発

Page 65: Open Build Serviceで楽をする

パッケージのなかみ

● rpm– .tar.gz,.zip

● インストールする物のソースコード– .spec

● パッケージをビルドする時の設定ファイル– .patch

● ソースコードに適応させるパッチファイル

Page 66: Open Build Serviceで楽をする

パッケージ開発

● OBS上に作成したパッケージをチェックアウトして開発を行います.

● 基本的にOSCコマンドを使います– $ sudo zypper install osc

Page 67: Open Build Serviceで楽をする

開発開始

● プロジェクトのチェックアウト– osc checkout home:[名前]:[プロジェクト名]

● oscコマンドからパッケージの作成も可能– osc mkpac [パッケージ名]– 自分はだいたいWebUIからやるのであんまり

使わない?

Page 68: Open Build Serviceで楽をする

● テンプレートなどの生成にはrpmdevtoolsが便利– $ rpmdev-newspec [パッケージ名]

● rpmdevtoolのインストール– http://software.opensuse.org/package/rpmdevtools

– から1-Click Installが可能

.specファイルの作成

Page 69: Open Build Serviceで楽をする

.specファイルの中身(説明)

● Name:– パッケージ名

● Version:– バージョン

● Release:– 0を書いとく

● Summary:– パッケージの簡単な説明

Page 70: Open Build Serviceで楽をする

.specファイルの中身(説明)

● License:– https://en.opensuse.org/openSUSE:Packaging_guidelines#Licensing– このあたりを読んで書いてみて下さい(英語むつかしい)

● Group:– https://en.opensuse.org/openSUSE:Package_group_guidelines

– ここを見て作る物に適当な物を選んで下さい● Url:

– アプリケーションの説明などを提供してるURL● %description

– パッケージの詳しい説明

Page 71: Open Build Serviceで楽をする

.specファイルの中身(ソース系)

● Source:– ソースファイルのアーカイブ– test-%{version}.tgz– URL形式での記述も可能

● Patch:– ソースコードに適応させるパッチ処理など

● BuildRoot:– 仮想インストールの時にしているするテンポラリ場所の指定– %{_tmppath}/%{name}-%{version}-build– みたいな感じに指定しとく

Page 72: Open Build Serviceで楽をする

.specファイルの中身(依存系)

● Requires:– パッケージが動作するのに必要なパッケージ

● BuildRequires:– パッケージをビルドする時に必要なパッケージ

Page 73: Open Build Serviceで楽をする

.specファイルの中身(スクリプト)

● %prep– rpmを構築する前準備

● %setup– ソースコードを指定したBuildRootに展開

● %patch– パッチを当てる

Page 74: Open Build Serviceで楽をする

.specファイルの中身(スクリプト)

● %build– この後にmakeのためのコマンドを書く– (e.g. cd hoge,make,)

● %configure– makeする前にする./configureの環境に合わせたオプションなどがついたマクロ

● %install– この後にインストールのためのコマンドを書く

Page 75: Open Build Serviceで楽をする

.specファイルの中身(スクリプト)

● %clean– ビルドの後の後始末,openSUSEだといらないっぽい

● %files– この後にインストールするバイナリなどを書く

● %doc– ドキュメントの指定,READMEやらdocディレクトリなどを指定出来る

Page 76: Open Build Serviceで楽をする

作成したパッケージの内容の追加

● oscコマンドを使用して追加を行う– $ osc add *.tar.gz– $ osc add *.spec– $ osc add *.patch

Page 77: Open Build Serviceで楽をする

パッケージのビルド

● ローカルでビルド– $ osc build –-local-package openSUSE13.2 x86_64

● 後ろの2つを省略すると.oscrcに記された値が使用される● オンラインでビルドを行うと—-local-packageも不要に

● OBSでビルド– $ osc commit

Page 78: Open Build Serviceで楽をする

OSBのビルド

● 常時300以上のインスタンスが稼働中● commitされれるたびにプロジェクトで登録したリポジトリでBuild Flagがついている物向けにビルドを行う

● インスタンスのステータスなどを確認できる– https://build.opensuse.org/monitor

Page 79: Open Build Serviceで楽をする

時間があれば

Demo

Page 80: Open Build Serviceで楽をする

最後に

● まとめ– とりあえず,自分で楽をするためだけにOpen Build Serviceを使ってみてはどうですか?

– Geeko is kawaii!!– openSUSE is not OpenSUSE.

● openSUSEコミュニティ● 日本openSUSEユーザ会:http://opensuse.geeko.jp● openSUSE日本語メーリングリスト

[email protected]● IRC #opensuse-ja freenode

– 毎週日曜日20時から雑談などを行っています

Page 81: Open Build Serviceで楽をする

参考資料

● https://ja.opensuse.org/Build_Service● http://www.slideshare.net/ftake/obs-dojoadv

● http://vinelinux.org/docs/vine6/making-rpm/vine-making-rpm.html