Open Build Serviceで楽をする

Preview:

Citation preview

Open Build Serviceで楽をする

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

自己紹介● 川上けんと

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

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

● 趣味– セキュリティ

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

● 最近はErlangやってます

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

Index

1.openSUSEの紹介

2.Open Build Serviceの紹介

3.OBSで楽をしよう

Index

1.openSUSEの紹介

2.Open Build Serviceの紹介

3.OBSで楽をしよう

openSUSEの紹介

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

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

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

Geeko

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

Other distributions

Geeko is Cute!!

Geeko is Cute!!

Geeko is Cute!!

もうひとつ

openSUSE is not OpenSUSE

openSUSE is not OpenSUSE

openSUSE is not OpenSUSE

openSUSE is not OpenSUSE

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

openSUSEの紹介

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

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

YaST

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

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

このあたりの設定を

まとめちゃえる

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

YaST

● GUIのYaSTの画像

YaST

● TUIのYaSTの画像

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

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

自分で入れて選べる

豊富なWindow Manager

KDE

xfce

GNOME

LXDE

現在の最新のリリース

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

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

openSUSEの種類

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

堅牢・エンタープライズ

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

次の対象は 13.1

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

Tumbleweed の登場で1年化の議論

開発者向け

Index

1.openSUSEの紹介

2.Open Build Serviceの紹介

3.OBSで楽をしよう

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

Open Build Service

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

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

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

openSUSE以外の対応

● Arch● Debian● Fedora● Debian● CentOS

● Ubuntu● Scientific Linux● Univention

利点

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

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

利点

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

openSUSEとの関係

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

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

– Novellの共通アカウント

結局何が楽になるの?

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

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

Index

1.openSUSEの紹介

2.Open Build Serviceの紹介

3.OBSで楽をしよう

使ってみよう

まずはアカウント作成

● https://build.opensuse.org●

まずはアカウント作成

まずはアカウント作成

アカウント

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

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

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

プロジェクト

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

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

プロジェクトの種類

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

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

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

プロジェクト

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

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

openSUSE:Factory

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

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

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

開発プロジェクト

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

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

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

流れ開発プロジェクト

editor Network:utilities etc

Factory openSUSE 13.2

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

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

プロジェクトの作成

● https://build.opensuse.org●

プロジェクトの作成

プロジェクトの作成

プロジェクトの設定

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

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

追加したリポジトリのflag

● Build Flag

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

● Debuginfo Flag

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

● Publish Flag

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

● Use for Build Flag

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

プロジェクトの設定

プロジェクトの設定

プロジェクトの設定

プロジェクトの設定

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

パッケージ

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

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

パッケージの作成

パッケージ作成

パッケージ開発

パッケージのなかみ

● rpm– .tar.gz,.zip

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

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

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

パッケージ開発

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

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

開発開始

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

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

使わない?

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

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

– から1-Click Installが可能

.specファイルの作成

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

● Name:– パッケージ名

● Version:– バージョン

● Release:– 0を書いとく

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

● %patch– パッチを当てる

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

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

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

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

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

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

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

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

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

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

パッケージのビルド

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

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

● OBSでビルド– $ osc commit

OSBのビルド

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

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

時間があれば

Demo

最後に

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

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

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

opensuse-ja@opensuse.org● IRC #opensuse-ja freenode

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

参考資料

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

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

Recommended