SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
曖昧 RPM 講座
2010/5/29(SAT.) T2Y
アジェンダ

 RPM とは
  構造とバージョン
  コマンドと関連ユーティリティ
 RPM パッケージング
  spec ファイルとソース RPM
  yum リポジトリ
 RHEL と Linux ディストリビュージョン
  Red Hat 系ディストリビューション
RPM とは
                                  cpio 形式?
                            tar 同様、複数ファイルを
 RPM Package Manager       1つにまとめるアーカイブ

   Red Hat Package Manager (以前?)
   パッケージ本体は cpio 形式でアーカイブ
   バイナリ RPM(RPMS) とソース RPM(SRPMS)
   パッケージ情報は Berkeley DB に格納
 RPM そのものは C 言語で開発
 Java/Perl/Python/Ruby バインディング
RPM の構造(大体こんな感じ)
                                        # rpm -i/-U
                                                                   /var/lib/rpm
RPM パッケージ
                                                                    rpmdb

             ヘッダ情報                                    # rpm -q

/usr/bin/python
                         cpio archive
/usr/bin/pydoc
/usr/bin/python-config
/usr/lib/python2.6/BaseHTTPServer.py
/usr/lib/python2.6/ …
/usr/share/doc/python/2.6.2/LICENSE
/usr/share/doc/python/2.6.2/README                    # rpm2cpio
/usr/share/man/man1/python.1.bz2

                                                                          spec
                                                         # rpmbuild      ファイル
RPM のバージョン(1)

 RPM のメンテナ
   Jeff Johnson(元 Red Hat)-> rpm5.org 設立へ
   Red Hat 退社後も独自にメンテナンスを継続
   再生への道を歩み始めたRPM開発
     http://sourceforge.jp/magazine/07/02/20/0049233
   RPMがrpm5.orgで"再出発"
     http://sourceforge.jp/magazine/07/06/19/014239
 rpm-4.4.2
   RHEL5(CentOS5)
   Suse/Mandriva/Turbolinux など独自メンテ
RPM のバージョン(2)

 RPM5
   Stable: 5.2.x, Current 5.3?
   コードベースのリファクタリング
   機能
     移植性の向上(プラットホーム/コンパイラ)
     LZMA/XAR(XML Archive)のサポート
     SQLite のサポート
     spec ファイルのカスタムタグ
 Fedora13/RHEL6 beta
   rpm-4.8.0
RPM の四方山話

 rpmdb が壊れたー(> <)
  昔(RH8, RH9)はよく壊れたもんだ、、、
  /var/lib/rpm/__db.xxx のキャッシュを削除すれ
  ば直るかも?(場合によっては rpm –rebuilddb)


 … タイトル付けたのに他になかった、、、
rpm コマンド(1)

  クエリフォーマットのカスタマイズ

# rpm -q rpm
rpm-4.4.2.3-18.el5

# rpm -q --qf "%{name}-%{version}-%{release}¥n" rpm
rpm-4.4.2.3-18.el5

# cat .rpmmacros
%_query_all_fmt %%{epoch}:%%{name}-%%{version}-%%{release}.%%{arch}

# rpm -q rpm
(none):rpm-4.4.2.3-18.el5.x86_64
rpm コマンド(2)

   ファイル情報を出力する


# rpm -ql bc
/usr/bin/bc
/usr/bin/dc
/usr/share/doc/bc-1.06
…

# rpm -q --dump bc
/usr/bin/bc 73408 1170191017 cf850a96f48201ce8ed3c4d8eebef728 0100755 root root 0 0 0 X
/usr/bin/dc 39608 1170191017 70a963cb04ecf28673568ae8ae2e24c7 0100755 root root 0 0 0 X
/usr/share/doc/bc-1.06 4096 1170191017 00000000000000000000000000000000 040755 root root 0 0 0 X
…
rpm コマンド(3)

   依存関係(provides/require)を調べる


python パッケージが提供する機能              python パッケージが要求する機能
# rpm -q --provides python       # rpm -q --requires python
...                              /bin/sh
python = 2.4.3-27.el5            /usr/bin/env
                                 …
機能 “python” を要求するパッケージ
# rpm -q --whatrequires python   機能 “/bin/sh” を提供するパッケージ
rhpl-0.194.1-1                   # rpm -q --whatprovides "/bin/sh"
authconfig-5.3.21-6.el5          bash-3.2-24.el5
yum-3.2.22-20.el5.centos
...
rpm コマンド(4)

   依存チェーンを辿る

rpm パッケージが require している機能を提供するパッケージを調べる
# rpm -q --requires rpm | sed s"/[<> ].*//"g | xargs -i rpm -q --whatprovides --qf
"%{provides}: %{name}-%{version}-%{release}¥n" {} | sort –u
ANSI_X3.110.so: glibc-2.5-42
config(bash): bash-3.2-24.el5
config(coreutils): coreutils-5.97-23.el5
…

rpm パッケージが require している機能を提供するパッケージの依存チェーンを辿る
# cmd="rpm -q --requires rpm"; for i in $(seq 0 2); do cmd="$cmd | cut -d' ' -f1 | xargs rpm -q
--whatprovides | xargs rpm -q --requires | sort -u"; done; eval $cmd | grep python
python(abi) = 2.4
rpm2cpio コマンド

   rpm パッケージを展開する
# mkdir work; cd work
# rpm2cpio ../bc-1.06-21.src.rpm | cpio -div
bc-1.06-info_exp_bessel.patch
bc-1.06-readline42.patch
bc-1.06-s390.patch
bc-1.06.tar.bz2
bc.spec
469 blocks
# ls
bc-1.06-info_exp_bessel.patch
bc-1.06-readline42.patch
bc-1.06-s390.patch
bc-1.06.tar.bz2
bc.spec
RPM API(1)

 rpm-python (python バインディング) がお奨め
  rpm-python を利用する主なパッケージ
    Anaconda (インストーラ)
    yum (アップデータ)
    system-config-xxx (管理ツール)
 rpm プログラミング with python を読み砕く
    http://d.hatena.ne.jp/t2y-1979/20080705/1215185168
    http://d.hatena.ne.jp/t2y-1979/20080711/1215757916
    http://d.hatena.ne.jp/t2y-1979/20080821/1219321380
    Fedora wiki の構成が変更されて原文がどっかに行っ
     ちゃった、、、
RPM API(2)

 その他の言語バインディング
  rpm-libs (C 言語)
    rpm/rpm-build パッケージ以外は使われていない?
  perl-rpm
    http://search.cpan.org/dist/Perl-RPM/
  ruby-rpm
    http://sourceforge.jp/projects/freshmeat_ruby-rpm/
  Java-rpm?
    そんなのあったっけ?
RPM API(3) -バージョン比較-

 RPM の API を使用しなければならない
   1.2-1
   1.2.1-1 (RPM 的にはこれが最も高い)
   1.2a-1
 Pilot python Fl.4 -rpm version compare-
   http://blog.miraclelinux.com/asianpen/2009/03/pil
    ot-python-fl.html
   rpm モジュールを使用したサンプル
RPM パッケージング

 パッケージング + リポジトリ構築
  spec ファイルを作成する
  ビルド環境を構築する
  yum リポジトリを作成、更新する
 Debian GNU/Linux上でRPMパッケージ・
 Yumリポジトリを作って公開する方法:
 milter managerを例にして by ククログ
  http://www.clear-code.com/blog/2010/3/3.html
  chroot 環境を作るのに rinse が便利そう?
rpmbuild コマンド

  詳細は man rpmbuild を参照

spec ファイルの検証ができる
# rpmbuild --nobuild bc.spec

%prep を実行する(ソースを展開してパッチが当たるかテスト)
# rpmbuild -bp bc.spec

バイナリ RPM とソース RPM をビルドする
# rpmbuild -ba bc.spec
# rpmbuild -bs bc.spec (ソース RPM のみビルド)
# rpmbuild -bb bc.spec (バイナリ RPM のみビルド)

ビルドツリーやソースの削除
# rpmbuild --clean bc.spec || --rmsource bc.spec
トリガースクリプトの仕様(1)

 spec ファイルでRPM パッケージのインス
 トール(アンインストール)時に特別な処理を
 実行する
    %pre : インストール前に実行
    %post : インストール後に実行
    %preun : アンインストール前に実行
    %postun : アンインストール後に実行
 環境変数 $1 で制御する
  “rpm -i” : %pre, %post に対して $1 = 1
  “rpm -U” : %pre, %post に対して $1 = 2
             : %preun, %postun に対して $1 = 1
  “rpm -e” : %preun, %postun に対して $1 = 0
トリガースクリプトの仕様(2)

 (たぶん歴史的に)仕様が複雑になってる
    rpm-4.4 以降は %pretrans, %posttrans が使え
     るようになったらしい
    http://rpm5.org/docs/api/triggers.html
    http://fedoraproject.org/wiki/Packaging/Scriptle
     tSnippets#Syntax
トリガースクリプトの使用例

 なるべくシンプルに使った方が良い
  %post : インストール後に実行
    初期化設定、サービス追加、サーバ再起動
  %postun : アンインストール後に実行
    ここでサーバ再起動はやらない方が良いかも
 なるべくやらない方が良いこと
  設定ファイルを書きかえる
  シンボリックリンクを張り替える
  http://vinelinux.org/manuals/making-rpm-9.html
トリガースクリプトの弊害(1)

 インストール時にシステムの環境情報か
  ら設定ファイルを生成する
 Debug Hacks 番外編(2) - RPM コマンドでは
  分からないファイルのパッケージを調べ
  る-
  http://blog.miraclelinux.com/asianpen/2009/04/de
   bug-hacks-2--.html
トリガースクリプトの弊害(2)

 RPM パッケージのアップグレードは以下の
 順番で実行される
 1.        全ての %pretrans を実行
 2.        新パッケージをインストール         bind パッケージに
      1.    %triggerprein を実行    悪いお手本があるよ
      2.    %pre を実行
      3.    %post を実行
 3.        旧パッケージをアンインストール
      1.    %preun を実行
      2.    %postun を実行
      3.    %triggerpostun を実行
 4.        任意のパッケージの %triggerpostun を実行
 5.        全ての %posttrans を実行
パッケージアップデータ

 yum(Yellow dog Updater Modified)
   Yellow Dog Linux (PPC) のために開発された
   Red Hat 系のデファクトスタンダード?
 Red Hat : up2date(独自開発)
 Suse : YaST(独自開発)
 Asianux : axtu(独自開発)
   MiracleLinux : mlupdater(独自開発)

   どうして yum を使わないの?
   - yum 本体に認証の仕組みがない
   - 使い勝手がディストリビューションの差別化につながる
yum コマンド(1)

  yum しか知らなくても大丈夫?

ネットワーク経由でインストールやアップデートも簡単
# yum install python
# yum -y update python (-y を付けると自動的にアップグレード)

リポジトリ内を検索
# yum search python

パッケージのヘッダ情報を表示
# yum info python
リポジトリ内の全パッケージリストを表示
# yum list
インストール済のパッケージリストを表示
# yum list installed
yum コマンド(2)

   依存関係を調べるのも yum の方が簡単?

# yum deplist rpm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: ftp.iij.ad.jp
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
Finding dependencies:
package: rpm.x86_64 4.4.2.3-18.el5
 dependency: librpm-4.4.so()(64bit)
 provider: rpm-libs.x86_64 4.4.2.3-18.el5
 dependency: logrotate
 provider: logrotate.x86_64 3.7.4-9
yumdownloader コマンド

  yum-utils もインストールしておきたい

RPM パッケージをダウンロードする
# yumdownloader bc
# yumdownloader --source bc
※ CentOS でソースをダウンロードするには
/etc/yum.repos.d/CentOS-Base.repo ファイルに
ソース RPMS のダウンロード設定を追加する必要がある
拡張リポジトリ(1)

 yum で使用するパッケージを追加できる
 /etc/yum.repos.d/ に設定ファイルを置く
 拡張リポジトリは “enabled=0” をセットして、通常
   は使用しないようにした方が良い
 CentOS なら EPEL がお奨め
    https://fedoraproject.org/wiki/EPEL/Japanese
    http://d.hatena.ne.jp/t2y-1979/20090711/1247299328

オプションで使用するリポジトリを明示的に指定
# yum search --enablerepo=epel python
拡張リポジトリ(2)

 yum のデータ通信は http プロトコル
 リポジトリは Web サーバさえがあれば、
  簡単に作成できる
 特定ユーザ向けにリポジトリへの認証を
  行うには別の細工が必要
  リポジトリの正当性は認証ではなく、個々の
  パッケージの署名確認?
RHEL の国内サーバシェア

 日本ではとにかく RHEL が強い
  国内 Linux サーバ市場シェアの84%以上?




 IDC Japan 調査レポート
  http://www.idcjapan.co.jp/Report/Software/j9360
   105.html
  http://itpro.nikkeibp.co.jp/article/NEWS/20091110
   /340333/?SS=imgview&FD=-1342976709&ST=oss
Red Hat 系ディストリ

 Fedora
   Red Hat Enterprise Linux (Fedora ベース)
     Oracle Enterprise Linux (RHEL ベース)
     Asianux/MiracleLinux (RHEL ベース)
   CentOS (RHEL クローン)
   Scientific Linux (RHEL クローン)
 Mandriva Linux
 Momonga Linux
 Vine Linux
ディストリの目的(1)

 Fedora
   コミュニティ主導
   Red Hat 社はスポンサー
   最新パッケージの統合、レビュー、テスト
   迅速な技術革新を試みる
   リリースサイクルは6ヶ月
   メンテナンス期間は13ヶ月
   http://ja.wikipedia.org/wiki/Fedora
ディストリの目的(2)

 RHEL(Red Hat Enterprise Linux)
   Fedora の実績をベースに開発
   Red Hat 社が商用サポート
   安定性とアップデートの互換性を重視する
   ISV/IHV の Certification が多い
   リリースサイクルは18~24ヶ月
   メンテナンス期間は7年間
   http://ja.wikipedia.org/wiki/Red_Hat_Enterprise_L
    inux
ディストリの目的(3)

 CentOS
  Community ENTerprise Operating System
  RHELのソースをリビルド
  Red Hat 社は無関係
  RHEL の Certification がおそらく動く
  リリース/メンテナンス期間は RHEL と同じ
  RHEL リリース後、約1ヶ月程度でリリース
  http://ja.wikipedia.org/wiki/CentOS

Weitere ähnliche Inhalte

Was ist angesagt?

OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!ksk_ha
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜Taro Matsuzawa
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwardingMasakazu Asama
 
第7回oss貢献者賞 森-20120316
第7回oss貢献者賞 森-20120316第7回oss貢献者賞 森-20120316
第7回oss貢献者賞 森-20120316ksk_ha
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはksk_ha
 
perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)Daichi Egawa
 
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
LinAction Theme LPICの問題を解いてみる~ネットワーク編~LinAction Theme LPICの問題を解いてみる~ネットワーク編~
LinAction Theme LPICの問題を解いてみる~ネットワーク編~cyberblack28 Ichikawa
 
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#135ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13Uptime Technologies LLC (JP)
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondTaisuke Yamada
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみたKazuya Wada
 
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
MastodonインスタンスをセットアップできるスタートアップスクリプトについてMastodonインスタンスをセットアップできるスタートアップスクリプトについて
Mastodonインスタンスをセットアップできるスタートアップスクリプトについてさくらインターネット株式会社
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西Masahide Yamamoto
 
関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側Gosuke Miyashita
 
"Bits from the Apache Maintainers / Upcoming apache2 2.4 transition" を読んでみた
"Bits from the Apache Maintainers / Upcoming apache2 2.4 transition" を読んでみた"Bits from the Apache Maintainers / Upcoming apache2 2.4 transition" を読んでみた
"Bits from the Apache Maintainers / Upcoming apache2 2.4 transition" を読んでみたTsuyoshi Yamada
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理Takuya ASADA
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケットTakaaki Hoyo
 

Was ist angesagt? (20)

OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwarding
 
第7回oss貢献者賞 森-20120316
第7回oss貢献者賞 森-20120316第7回oss貢献者賞 森-20120316
第7回oss貢献者賞 森-20120316
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
Lagopus 0.2
Lagopus 0.2Lagopus 0.2
Lagopus 0.2
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
 
Lagopus 0.2.2
Lagopus 0.2.2Lagopus 0.2.2
Lagopus 0.2.2
 
perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)
 
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
LinAction Theme LPICの問題を解いてみる~ネットワーク編~LinAction Theme LPICの問題を解いてみる~ネットワーク編~
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
 
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#135ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
MastodonインスタンスをセットアップできるスタートアップスクリプトについてMastodonインスタンスをセットアップできるスタートアップスクリプトについて
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側
 
"Bits from the Apache Maintainers / Upcoming apache2 2.4 transition" を読んでみた
"Bits from the Apache Maintainers / Upcoming apache2 2.4 transition" を読んでみた"Bits from the Apache Maintainers / Upcoming apache2 2.4 transition" を読んでみた
"Bits from the Apache Maintainers / Upcoming apache2 2.4 transition" を読んでみた
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケット
 

Ähnlich wie 曖昧 RPM 講座

Polidog に RPM の作り方を教える
Polidog に RPM の作り方を教えるPolidog に RPM の作り方を教える
Polidog に RPM の作り方を教えるftnk
 
Debug Hacks Conference 2009
Debug Hacks Conference 2009Debug Hacks Conference 2009
Debug Hacks Conference 2009Hiro Yoshioka
 
Raspberry Pi 2 誤自宅サーバー移行日記
Raspberry Pi 2 誤自宅サーバー移行日記Raspberry Pi 2 誤自宅サーバー移行日記
Raspberry Pi 2 誤自宅サーバー移行日記96smcln
 
Lapp環境をソースからインストールする(debian)
Lapp環境をソースからインストールする(debian)Lapp環境をソースからインストールする(debian)
Lapp環境をソースからインストールする(debian)Kimiyuki Yamauchi
 
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8Satoshi Ohkubo
 
Lapp環境をソースからインストールする(centos)
Lapp環境をソースからインストールする(centos)Lapp環境をソースからインストールする(centos)
Lapp環境をソースからインストールする(centos)Kimiyuki Yamauchi
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo LinuxについてTakuto Matsuu
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方do_aki
 
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】Masahito Zembutsu
 
lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)Kazuhiro Nishiyama
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料Yasutaka Hamada
 
Al mininum 47redmine-2nd
Al mininum 47redmine-2ndAl mininum 47redmine-2nd
Al mininum 47redmine-2ndmikoto20000
 

Ähnlich wie 曖昧 RPM 講座 (20)

Polidog に RPM の作り方を教える
Polidog に RPM の作り方を教えるPolidog に RPM の作り方を教える
Polidog に RPM の作り方を教える
 
Debug Hacks Conference 2009
Debug Hacks Conference 2009Debug Hacks Conference 2009
Debug Hacks Conference 2009
 
Raspberry Pi 2 誤自宅サーバー移行日記
Raspberry Pi 2 誤自宅サーバー移行日記Raspberry Pi 2 誤自宅サーバー移行日記
Raspberry Pi 2 誤自宅サーバー移行日記
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Lapp環境をソースからインストールする(debian)
Lapp環境をソースからインストールする(debian)Lapp環境をソースからインストールする(debian)
Lapp環境をソースからインストールする(debian)
 
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
 
Lapp環境をソースからインストールする(centos)
Lapp環境をソースからインストールする(centos)Lapp環境をソースからインストールする(centos)
Lapp環境をソースからインストールする(centos)
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方
 
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】Serfが面白いと俺の中で話題にwwwwww 【改訂版】
Serfが面白いと俺の中で話題にwwwwww 【改訂版】
 
lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)lilo.linux.or.jp の話 (2017年8月)
lilo.linux.or.jp の話 (2017年8月)
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
LinAction Theme Docker
LinAction Theme DockerLinAction Theme Docker
LinAction Theme Docker
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
Capistrano
CapistranoCapistrano
Capistrano
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
 
CentOSでつくる神Plesk
CentOSでつくる神PleskCentOSでつくる神Plesk
CentOSでつくる神Plesk
 
Al mininum 47redmine-2nd
Al mininum 47redmine-2ndAl mininum 47redmine-2nd
Al mininum 47redmine-2nd
 

Mehr von Tetsuya Morimoto

ビジネスパーソン x プログラミング
ビジネスパーソン x プログラミングビジネスパーソン x プログラミング
ビジネスパーソン x プログラミングTetsuya Morimoto
 
チケット駆動開発のススメ
チケット駆動開発のススメチケット駆動開発のススメ
チケット駆動開発のススメTetsuya Morimoto
 
Pythonと型チェッカー
Pythonと型チェッカーPythonと型チェッカー
Pythonと型チェッカーTetsuya Morimoto
 
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LTPyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LTTetsuya Morimoto
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションTetsuya Morimoto
 
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Tetsuya Morimoto
 
ストリーミングのげんざい
ストリーミングのげんざいストリーミングのげんざい
ストリーミングのげんざいTetsuya Morimoto
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会Tetsuya Morimoto
 
Ikazuchi introduction for Europython 2011 LT
Ikazuchi introduction for Europython 2011 LTIkazuchi introduction for Europython 2011 LT
Ikazuchi introduction for Europython 2011 LTTetsuya Morimoto
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトTetsuya Morimoto
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半Tetsuya Morimoto
 
エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半Tetsuya Morimoto
 
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7Tetsuya Morimoto
 

Mehr von Tetsuya Morimoto (17)

ビジネスパーソン x プログラミング
ビジネスパーソン x プログラミングビジネスパーソン x プログラミング
ビジネスパーソン x プログラミング
 
チケット駆動開発のススメ
チケット駆動開発のススメチケット駆動開発のススメ
チケット駆動開発のススメ
 
Pythonと型チェッカー
Pythonと型チェッカーPythonと型チェッカー
Pythonと型チェッカー
 
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LTPyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
 
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
 
Hyper Introduction
Hyper IntroductionHyper Introduction
Hyper Introduction
 
ストリーミングのげんざい
ストリーミングのげんざいストリーミングのげんざい
ストリーミングのげんざい
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
 
PyCon 2012 紀行
PyCon 2012 紀行PyCon 2012 紀行
PyCon 2012 紀行
 
Sphinx 社内勉強会
Sphinx 社内勉強会Sphinx 社内勉強会
Sphinx 社内勉強会
 
Ikazuchi introduction for Europython 2011 LT
Ikazuchi introduction for Europython 2011 LTIkazuchi introduction for Europython 2011 LT
Ikazuchi introduction for Europython 2011 LT
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
 
エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半エキ Py 読書会02 2章後半
エキ Py 読書会02 2章後半
 
エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半エキ Py 読書会02 2章前半
エキ Py 読書会02 2章前半
 
エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7エキ Py 読書会02 2010/9/7
エキ Py 読書会02 2010/9/7
 
Ex py intro-20100630
Ex py intro-20100630Ex py intro-20100630
Ex py intro-20100630
 

Kürzlich hochgeladen

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Kürzlich hochgeladen (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

曖昧 RPM 講座

  • 2. アジェンダ  RPM とは  構造とバージョン  コマンドと関連ユーティリティ  RPM パッケージング  spec ファイルとソース RPM  yum リポジトリ  RHEL と Linux ディストリビュージョン  Red Hat 系ディストリビューション
  • 3. RPM とは cpio 形式? tar 同様、複数ファイルを  RPM Package Manager 1つにまとめるアーカイブ  Red Hat Package Manager (以前?)  パッケージ本体は cpio 形式でアーカイブ  バイナリ RPM(RPMS) とソース RPM(SRPMS)  パッケージ情報は Berkeley DB に格納  RPM そのものは C 言語で開発  Java/Perl/Python/Ruby バインディング
  • 4. RPM の構造(大体こんな感じ) # rpm -i/-U /var/lib/rpm RPM パッケージ rpmdb ヘッダ情報 # rpm -q /usr/bin/python cpio archive /usr/bin/pydoc /usr/bin/python-config /usr/lib/python2.6/BaseHTTPServer.py /usr/lib/python2.6/ … /usr/share/doc/python/2.6.2/LICENSE /usr/share/doc/python/2.6.2/README # rpm2cpio /usr/share/man/man1/python.1.bz2 spec # rpmbuild ファイル
  • 5. RPM のバージョン(1)  RPM のメンテナ  Jeff Johnson(元 Red Hat)-> rpm5.org 設立へ  Red Hat 退社後も独自にメンテナンスを継続  再生への道を歩み始めたRPM開発  http://sourceforge.jp/magazine/07/02/20/0049233  RPMがrpm5.orgで"再出発"  http://sourceforge.jp/magazine/07/06/19/014239  rpm-4.4.2  RHEL5(CentOS5)  Suse/Mandriva/Turbolinux など独自メンテ
  • 6. RPM のバージョン(2)  RPM5  Stable: 5.2.x, Current 5.3?  コードベースのリファクタリング  機能  移植性の向上(プラットホーム/コンパイラ)  LZMA/XAR(XML Archive)のサポート  SQLite のサポート  spec ファイルのカスタムタグ  Fedora13/RHEL6 beta  rpm-4.8.0
  • 7. RPM の四方山話  rpmdb が壊れたー(> <)  昔(RH8, RH9)はよく壊れたもんだ、、、  /var/lib/rpm/__db.xxx のキャッシュを削除すれ ば直るかも?(場合によっては rpm –rebuilddb)  … タイトル付けたのに他になかった、、、
  • 8. rpm コマンド(1)  クエリフォーマットのカスタマイズ # rpm -q rpm rpm-4.4.2.3-18.el5 # rpm -q --qf "%{name}-%{version}-%{release}¥n" rpm rpm-4.4.2.3-18.el5 # cat .rpmmacros %_query_all_fmt %%{epoch}:%%{name}-%%{version}-%%{release}.%%{arch} # rpm -q rpm (none):rpm-4.4.2.3-18.el5.x86_64
  • 9. rpm コマンド(2)  ファイル情報を出力する # rpm -ql bc /usr/bin/bc /usr/bin/dc /usr/share/doc/bc-1.06 … # rpm -q --dump bc /usr/bin/bc 73408 1170191017 cf850a96f48201ce8ed3c4d8eebef728 0100755 root root 0 0 0 X /usr/bin/dc 39608 1170191017 70a963cb04ecf28673568ae8ae2e24c7 0100755 root root 0 0 0 X /usr/share/doc/bc-1.06 4096 1170191017 00000000000000000000000000000000 040755 root root 0 0 0 X …
  • 10. rpm コマンド(3)  依存関係(provides/require)を調べる python パッケージが提供する機能 python パッケージが要求する機能 # rpm -q --provides python # rpm -q --requires python ... /bin/sh python = 2.4.3-27.el5 /usr/bin/env … 機能 “python” を要求するパッケージ # rpm -q --whatrequires python 機能 “/bin/sh” を提供するパッケージ rhpl-0.194.1-1 # rpm -q --whatprovides "/bin/sh" authconfig-5.3.21-6.el5 bash-3.2-24.el5 yum-3.2.22-20.el5.centos ...
  • 11. rpm コマンド(4)  依存チェーンを辿る rpm パッケージが require している機能を提供するパッケージを調べる # rpm -q --requires rpm | sed s"/[<> ].*//"g | xargs -i rpm -q --whatprovides --qf "%{provides}: %{name}-%{version}-%{release}¥n" {} | sort –u ANSI_X3.110.so: glibc-2.5-42 config(bash): bash-3.2-24.el5 config(coreutils): coreutils-5.97-23.el5 … rpm パッケージが require している機能を提供するパッケージの依存チェーンを辿る # cmd="rpm -q --requires rpm"; for i in $(seq 0 2); do cmd="$cmd | cut -d' ' -f1 | xargs rpm -q --whatprovides | xargs rpm -q --requires | sort -u"; done; eval $cmd | grep python python(abi) = 2.4
  • 12. rpm2cpio コマンド  rpm パッケージを展開する # mkdir work; cd work # rpm2cpio ../bc-1.06-21.src.rpm | cpio -div bc-1.06-info_exp_bessel.patch bc-1.06-readline42.patch bc-1.06-s390.patch bc-1.06.tar.bz2 bc.spec 469 blocks # ls bc-1.06-info_exp_bessel.patch bc-1.06-readline42.patch bc-1.06-s390.patch bc-1.06.tar.bz2 bc.spec
  • 13. RPM API(1)  rpm-python (python バインディング) がお奨め  rpm-python を利用する主なパッケージ  Anaconda (インストーラ)  yum (アップデータ)  system-config-xxx (管理ツール)  rpm プログラミング with python を読み砕く  http://d.hatena.ne.jp/t2y-1979/20080705/1215185168  http://d.hatena.ne.jp/t2y-1979/20080711/1215757916  http://d.hatena.ne.jp/t2y-1979/20080821/1219321380  Fedora wiki の構成が変更されて原文がどっかに行っ ちゃった、、、
  • 14. RPM API(2)  その他の言語バインディング  rpm-libs (C 言語)  rpm/rpm-build パッケージ以外は使われていない?  perl-rpm  http://search.cpan.org/dist/Perl-RPM/  ruby-rpm  http://sourceforge.jp/projects/freshmeat_ruby-rpm/  Java-rpm?  そんなのあったっけ?
  • 15. RPM API(3) -バージョン比較-  RPM の API を使用しなければならない  1.2-1  1.2.1-1 (RPM 的にはこれが最も高い)  1.2a-1  Pilot python Fl.4 -rpm version compare-  http://blog.miraclelinux.com/asianpen/2009/03/pil ot-python-fl.html  rpm モジュールを使用したサンプル
  • 16. RPM パッケージング  パッケージング + リポジトリ構築  spec ファイルを作成する  ビルド環境を構築する  yum リポジトリを作成、更新する  Debian GNU/Linux上でRPMパッケージ・ Yumリポジトリを作って公開する方法: milter managerを例にして by ククログ  http://www.clear-code.com/blog/2010/3/3.html  chroot 環境を作るのに rinse が便利そう?
  • 17. rpmbuild コマンド  詳細は man rpmbuild を参照 spec ファイルの検証ができる # rpmbuild --nobuild bc.spec %prep を実行する(ソースを展開してパッチが当たるかテスト) # rpmbuild -bp bc.spec バイナリ RPM とソース RPM をビルドする # rpmbuild -ba bc.spec # rpmbuild -bs bc.spec (ソース RPM のみビルド) # rpmbuild -bb bc.spec (バイナリ RPM のみビルド) ビルドツリーやソースの削除 # rpmbuild --clean bc.spec || --rmsource bc.spec
  • 18. トリガースクリプトの仕様(1)  spec ファイルでRPM パッケージのインス トール(アンインストール)時に特別な処理を 実行する  %pre : インストール前に実行  %post : インストール後に実行  %preun : アンインストール前に実行  %postun : アンインストール後に実行  環境変数 $1 で制御する  “rpm -i” : %pre, %post に対して $1 = 1  “rpm -U” : %pre, %post に対して $1 = 2 : %preun, %postun に対して $1 = 1  “rpm -e” : %preun, %postun に対して $1 = 0
  • 19. トリガースクリプトの仕様(2)  (たぶん歴史的に)仕様が複雑になってる  rpm-4.4 以降は %pretrans, %posttrans が使え るようになったらしい  http://rpm5.org/docs/api/triggers.html  http://fedoraproject.org/wiki/Packaging/Scriptle tSnippets#Syntax
  • 20. トリガースクリプトの使用例  なるべくシンプルに使った方が良い  %post : インストール後に実行  初期化設定、サービス追加、サーバ再起動  %postun : アンインストール後に実行  ここでサーバ再起動はやらない方が良いかも  なるべくやらない方が良いこと  設定ファイルを書きかえる  シンボリックリンクを張り替える  http://vinelinux.org/manuals/making-rpm-9.html
  • 21. トリガースクリプトの弊害(1)  インストール時にシステムの環境情報か ら設定ファイルを生成する  Debug Hacks 番外編(2) - RPM コマンドでは 分からないファイルのパッケージを調べ る-  http://blog.miraclelinux.com/asianpen/2009/04/de bug-hacks-2--.html
  • 22. トリガースクリプトの弊害(2)  RPM パッケージのアップグレードは以下の 順番で実行される 1. 全ての %pretrans を実行 2. 新パッケージをインストール bind パッケージに 1. %triggerprein を実行 悪いお手本があるよ 2. %pre を実行 3. %post を実行 3. 旧パッケージをアンインストール 1. %preun を実行 2. %postun を実行 3. %triggerpostun を実行 4. 任意のパッケージの %triggerpostun を実行 5. 全ての %posttrans を実行
  • 23. パッケージアップデータ  yum(Yellow dog Updater Modified)  Yellow Dog Linux (PPC) のために開発された  Red Hat 系のデファクトスタンダード?  Red Hat : up2date(独自開発)  Suse : YaST(独自開発)  Asianux : axtu(独自開発)  MiracleLinux : mlupdater(独自開発) どうして yum を使わないの? - yum 本体に認証の仕組みがない - 使い勝手がディストリビューションの差別化につながる
  • 24. yum コマンド(1)  yum しか知らなくても大丈夫? ネットワーク経由でインストールやアップデートも簡単 # yum install python # yum -y update python (-y を付けると自動的にアップグレード) リポジトリ内を検索 # yum search python パッケージのヘッダ情報を表示 # yum info python リポジトリ内の全パッケージリストを表示 # yum list インストール済のパッケージリストを表示 # yum list installed
  • 25. yum コマンド(2)  依存関係を調べるのも yum の方が簡単? # yum deplist rpm Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: ftp.iij.ad.jp * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp Finding dependencies: package: rpm.x86_64 4.4.2.3-18.el5 dependency: librpm-4.4.so()(64bit) provider: rpm-libs.x86_64 4.4.2.3-18.el5 dependency: logrotate provider: logrotate.x86_64 3.7.4-9
  • 26. yumdownloader コマンド  yum-utils もインストールしておきたい RPM パッケージをダウンロードする # yumdownloader bc # yumdownloader --source bc ※ CentOS でソースをダウンロードするには /etc/yum.repos.d/CentOS-Base.repo ファイルに ソース RPMS のダウンロード設定を追加する必要がある
  • 27. 拡張リポジトリ(1)  yum で使用するパッケージを追加できる  /etc/yum.repos.d/ に設定ファイルを置く  拡張リポジトリは “enabled=0” をセットして、通常 は使用しないようにした方が良い  CentOS なら EPEL がお奨め  https://fedoraproject.org/wiki/EPEL/Japanese  http://d.hatena.ne.jp/t2y-1979/20090711/1247299328 オプションで使用するリポジトリを明示的に指定 # yum search --enablerepo=epel python
  • 28. 拡張リポジトリ(2)  yum のデータ通信は http プロトコル  リポジトリは Web サーバさえがあれば、 簡単に作成できる  特定ユーザ向けにリポジトリへの認証を 行うには別の細工が必要  リポジトリの正当性は認証ではなく、個々の パッケージの署名確認?
  • 29. RHEL の国内サーバシェア  日本ではとにかく RHEL が強い  国内 Linux サーバ市場シェアの84%以上?  IDC Japan 調査レポート  http://www.idcjapan.co.jp/Report/Software/j9360 105.html  http://itpro.nikkeibp.co.jp/article/NEWS/20091110 /340333/?SS=imgview&FD=-1342976709&ST=oss
  • 30. Red Hat 系ディストリ  Fedora  Red Hat Enterprise Linux (Fedora ベース)  Oracle Enterprise Linux (RHEL ベース)  Asianux/MiracleLinux (RHEL ベース)  CentOS (RHEL クローン)  Scientific Linux (RHEL クローン)  Mandriva Linux  Momonga Linux  Vine Linux
  • 31. ディストリの目的(1)  Fedora  コミュニティ主導  Red Hat 社はスポンサー  最新パッケージの統合、レビュー、テスト  迅速な技術革新を試みる  リリースサイクルは6ヶ月  メンテナンス期間は13ヶ月  http://ja.wikipedia.org/wiki/Fedora
  • 32. ディストリの目的(2)  RHEL(Red Hat Enterprise Linux)  Fedora の実績をベースに開発  Red Hat 社が商用サポート  安定性とアップデートの互換性を重視する  ISV/IHV の Certification が多い  リリースサイクルは18~24ヶ月  メンテナンス期間は7年間  http://ja.wikipedia.org/wiki/Red_Hat_Enterprise_L inux
  • 33. ディストリの目的(3)  CentOS  Community ENTerprise Operating System  RHELのソースをリビルド  Red Hat 社は無関係  RHEL の Certification がおそらく動く  リリース/メンテナンス期間は RHEL と同じ  RHEL リリース後、約1ヶ月程度でリリース  http://ja.wikipedia.org/wiki/CentOS