0
Debianパッケージ情報  と依存関係の可視化第03回福岡Debian勉強会 (2013-03-28)       やまだつよし
自己紹介やまだつよし●twitter: @minimum2scp●fb: fb.me/minimum2scp●インフラエンジニア●Debian,Rubyとかが好き
Agenda● Debianパッケージ情報 ○ Depends, Suggests, Recommends ... ○ Debianリファレンス● 依存関係の可視化 ○ apt-cache dotty の紹介 ○ debtree の紹介 ○ d...
Debianパッケージ情報% apt-cache show パッケージ名% apt-cache dumpavailで出力されるDebianパッケージの情報
apt-cache show python-sphinxPackage: python-sphinxSource: sphinxVersion: 1.1.3+dfsg-4(...snip...)Depends: python (>= 2.5),...
apt-cache show rubyPackage: ruby(...snip...)Replaces: irb, rdocProvides: irb, rdocDepends: ruby1.9.1 (>= 1.9.3.194-1)Sugge...
apt-cache show openssh-serverPackage: openssh-server(...snip...)Replaces: openssh-client (<< 1:3.8.1p1-11), ssh, ssh-krb5P...
Depends, Recommends, Suggests...apt-get install でパッケージをインストールするときに Depends, Recommends, Suggests などの情報を参照している
apt-get install python-sphinxThe following extra packages will be installed: docutils-common docutils-doc file javascript-...
apt-get install rubyThe following extra packages will be installed: libffi5 libruby1.9.1 libssl1.0.0 libyaml-0-2 ruby1.9.1...
apt-get install openssh-serverThe following extra packages will be installed: adduser krb5-locales libbsd0 libedit2 libgss...
Debian リファレンス2.1.6 パッケージ依存関係http://www.debian.org/doc/manuals/debian-reference/ch02.ja.html#_package_dependencies
2.1.6 パッケージ依存関係Dependsこれは絶対依存を宣言し、このフィールドにリストされた全てのパッケージは同時または事前にインストールされていなければいけません。例: git パッケージの場合Depends: libc6 (>= 2.3...
2.1.6 パッケージ依存関係Pre-Dependsこれは、リストされたパッケージが事前にインストールを完了している必要がある以外は、Depends と同様です。Pre-Dependsを指定しているパッケージの例パッケージ       Pre-...
2.1.6 パッケージ依存関係Recommendsこれは強いが絶対でない依存を宣言します。多くのユーザーはこのフィールドにリストされたパッケージ全てがインストールされていなければ、当該パッケージを望まないでしょう。例: git パッケージの場合...
2.1.6 パッケージ依存関係Suggestsこれは弱い依存を宣言します。このパッケージの多くのユーザーはこのフィールドにリストされたパッケージをインストールすればメリットを享受できるとは言え、それら抜きでも十分な機能が得られます。例: git...
Recommends, Suggests のパッケージのインストールの制御Recommends         通常インストールされる。                   インストールしない場合は                   apt-...
2.1.6 パッケージ依存関係Enhancesこれは Suggests 同様の弱い依存を宣言しますが、依存作用の方向が逆です。Enhancesを指定しているパッケージの例パッケージ             Enhancesフィールドautoss...
2.1.6 パッケージ依存関係Breaks,Conflicts,Replaces,ProvidesBreaks      これは通常バージョン制約付きでパッケージのインコンパチビリ            ティーを宣言します。一般的にこのフィール...
2.1.6 パッケージ依存関係バーチャルパッケージ正常な設定として "Provides" と "Conflicts" と "Replaces" とを単一バーチャルパッケージに対し同時宣言することがあります。こうするといかなる時にも当該バーチャル...
バーチャルパッケージの例: mail-transfer-agentPackage: postfixVersion: 2.10.0-3Installed-Size: 3522Maintainer: LaMont Jones <lamont@deb...
バーチャルパッケージの例: mail-transfer-agentPackage: cronVersion: 3.0pl1-124Installed-Size: 300Maintainer: Javier Fernández-Sanguino ...
Debian Policy Manualhttp://www.debian.org/doc/debian-policy/ch-relationships.html
Debianポリシーマニュアル(Debian JP Project)http://www.debian.or.jp/community/devel/debian-policy-ja/policy.ja.html/ch-relationships...
依存関係の可視化apt-cache show で確認できるけど、可視化したい● apt-cache dotty● debtree
man apt-cacheよりdotty パッケージ...dotty は、コマンドライン上のパッケージ名から、GraphViz[1]パッケージの dotty コマンドで利用するのに便利な出力を生成します。結果はパッケージの関係を表わす、ノード・...
man apt-cache より(続き)結果のノードは数種の形状をとります。通常パッケージは四角、純粋仮想パッケージは三角、複合仮想パッケージは菱形、欠落パッケージは六角形で表します。オレンジの四角は再帰が終了した「リーフパッケージ」、青い線は...
apt-cache dotty% apt-cache dotty python-sphinx > /tmp/python-sphinx.dot% dot -Tsvg -o /tmp/python-sphinx.svg /tmp/python-s...
apt-cache dottyマニュアルに書いてある通り、APT::Cache::GivenOnly をセットする% apt-cache dotty -o APT::Cache::GivenOnly=yes   python-sphinx > ...
apt-cache dotty引数のパッケージを増やしてみる% apt-cache dotty -o APT::Cache::GivenOnly=yes  python-sphinx python-support python-pygments...
debtreeの紹介http://collab-maint.alioth.debian.org/debtree/
debtree同じようにグラフを作成してみる% debtree python-sphinx > /tmp/python-sphinx.dot% dot -Tsvg -o /tmp/python-sphinx.svg /tmp/python-sp...
できた!でも説明するには大きすぎたので他のパッケージで...
debtree debconf 紫の実線    Pre-Depends   赤の実線   Conflicts 青の実線    Depends       緑の実線   Provides
debtree debconf                  黒の実線   Recommends                  黒の点線   Suggests
debtree-web.rbhttps://gist.github.com/minimum2scp/5252671● apt-cache dotty, debtree のオプションを覚えき  れない、コマンドが面倒● web interface...
まとめ● Debianパッケージ情報の Depends などパッ  ケージ依存性情報について調べました● Recommends と Suggests の違いをようやく覚  えました (Recommendsが通常インストールさ  れる)● apt...
Upcoming SlideShare
Loading in...5
×

20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化

781

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
781
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化"

  1. 1. Debianパッケージ情報 と依存関係の可視化第03回福岡Debian勉強会 (2013-03-28) やまだつよし
  2. 2. 自己紹介やまだつよし●twitter: @minimum2scp●fb: fb.me/minimum2scp●インフラエンジニア●Debian,Rubyとかが好き
  3. 3. Agenda● Debianパッケージ情報 ○ Depends, Suggests, Recommends ... ○ Debianリファレンス● 依存関係の可視化 ○ apt-cache dotty の紹介 ○ debtree の紹介 ○ debtree-web.rb の紹介
  4. 4. Debianパッケージ情報% apt-cache show パッケージ名% apt-cache dumpavailで出力されるDebianパッケージの情報
  5. 5. apt-cache show python-sphinxPackage: python-sphinxSource: sphinxVersion: 1.1.3+dfsg-4(...snip...)Depends: python (>= 2.5), python-support (>= 0.90.0), python-docutils (>= 0.7), python-pygments (>= 1.2), python-jinja2 (>= 2.3), sphinx-common (= 1.1.3+dfsg-4)Recommends: python (>= 2.6) | python-simplejson, python-imaging, sphinx-docSuggests: jsmath, libjs-mathjax, texlive-latex-recommended, texlive-latex-extra, texlive-fonts-recommended(...snip...)
  6. 6. apt-cache show rubyPackage: ruby(...snip...)Replaces: irb, rdocProvides: irb, rdocDepends: ruby1.9.1 (>= 1.9.3.194-1)Suggests: ri, ruby-devConflicts: irb, rdocBreaks: apt-listbugs (<< 0.1.6)(...snip...)
  7. 7. apt-cache show openssh-serverPackage: openssh-server(...snip...)Replaces: openssh-client (<< 1:3.8.1p1-11), ssh, ssh-krb5Provides: ssh-serverDepends: libc6 (>= 2.8), libcomerr2 (>= 1.01), libgssapi-krb5-2 (>= 1.10+dfsg~), libkrb5-3 (>= 1.6.dfsg.2), libpam0g (>= 0.99.7.1), libselinux1 (>=1.32), libssl1.0.0 (>= 1.0.1), libwrap0 (>= 7.6-4~), zlib1g (>= 1:1.1.4),debconf (>= 1.2.0) | debconf-2.0, openssh-client (= 1:6.0p1-4), libpam-runtime (>= 0.76-14), libpam-modules (>= 0.72-9), adduser (>= 3.9), dpkg(>= 1.9.0), lsb-base (>= 3.2-13), procpsRecommends: xauth, ncurses-term, openssh-blacklist, openssh-blacklist-extraSuggests: ssh-askpass, rssh, molly-guard, ufw, monkeysphereConflicts: rsh-client (<< 0.16.1-1), sftp, ssh (<< 1:3.8.1p1-9), ssh-krb5(<< 1:4.3p2-7), ssh-nonfree (<< 2), ssh-socks, ssh2(...snip...)
  8. 8. Depends, Recommends, Suggests...apt-get install でパッケージをインストールするときに Depends, Recommends, Suggests などの情報を参照している
  9. 9. apt-get install python-sphinxThe following extra packages will be installed: docutils-common docutils-doc file javascript-common (...snip...)Suggested packages: apache2 httpd rng-tools liblcms-utils python-doc python-tk (...snip...)The following NEW packages will be installed: docutils-common docutils-doc file javascript-common (...snip...)0 upgraded, 41 newly installed, 0 to remove and 0 notupgraded.Need to get 8623 kB/15.2 MB of archives.After this operation, 50.0 MB of additional disk spacewill be used.Do you want to continue [Y/n]?
  10. 10. apt-get install rubyThe following extra packages will be installed: libffi5 libruby1.9.1 libssl1.0.0 libyaml-0-2 ruby1.9.1Suggested packages: ri ruby-dev ruby1.9.1-examples ri1.9.1 graphviz ruby1.9.1-dev ruby-switchThe following NEW packages will be installed: libffi5 libruby1.9.1 libssl1.0.0 libyaml-0-2 ruby ruby1.9.10 upgraded, 6 newly installed, 0 to remove and 0 notupgraded.Need to get 0 B/5931 kB of archives.After this operation, 16.2 MB of additional disk spacewill be used.Do you want to continue [Y/n]?
  11. 11. apt-get install openssh-serverThe following extra packages will be installed: adduser krb5-locales libbsd0 libedit2 libgssapi-krb5-2 (...snip...)Suggested packages: krb5-doc krb5-user ssh-askpass libpam-ssh keychain (...snip...)The following NEW packages will be installed: adduser krb5-locales libbsd0 libedit2 libgssapi-krb5-2 (...snip...)0 upgraded, 28 newly installed, 0 to remove and 0 notupgraded.Need to get 8663 kB/11.3 MB of archives.After this operation, 26.8 MB of additional disk spacewill be used.Do you want to continue [Y/n]?
  12. 12. Debian リファレンス2.1.6 パッケージ依存関係http://www.debian.org/doc/manuals/debian-reference/ch02.ja.html#_package_dependencies
  13. 13. 2.1.6 パッケージ依存関係Dependsこれは絶対依存を宣言し、このフィールドにリストされた全てのパッケージは同時または事前にインストールされていなければいけません。例: git パッケージの場合Depends: libc6 (>= 2.3.4), libcurl3-gnutls(>= 7.16.2-1), libexpat1 (>= 1.95.8), zlib1g(>= 1:1.2.0), perl-modules, liberror-perl
  14. 14. 2.1.6 パッケージ依存関係Pre-Dependsこれは、リストされたパッケージが事前にインストールを完了している必要がある以外は、Depends と同様です。Pre-Dependsを指定しているパッケージの例パッケージ Pre-Dependsフィールドdebconf perl-base (>= 5.6.1-4)diffutils libc6 (>= 2.4)dpkg libbz2-1.0, libc6 (>= 2.11), liblzma5 (>= 5.1.1 alpha+20120614), libselinux1 (>= 1.32), zlib1g (>= 1:1.1.4), tar (>= 1.23)perl-base libc6 (>= 2.11), dpkg (>= 1.14.20)
  15. 15. 2.1.6 パッケージ依存関係Recommendsこれは強いが絶対でない依存を宣言します。多くのユーザーはこのフィールドにリストされたパッケージ全てがインストールされていなければ、当該パッケージを望まないでしょう。例: git パッケージの場合Recommends: patch, less, rsync, ssh-client
  16. 16. 2.1.6 パッケージ依存関係Suggestsこれは弱い依存を宣言します。このパッケージの多くのユーザーはこのフィールドにリストされたパッケージをインストールすればメリットを享受できるとは言え、それら抜きでも十分な機能が得られます。例: git パッケージの場合Suggests: git-doc, git-arch, git-cvs, git-svn, git-email, git-daemon-run, git-gui, gitk, gitweb
  17. 17. Recommends, Suggests のパッケージのインストールの制御Recommends 通常インストールされる。 インストールしない場合は apt-get install --no-install-recommendsSuggests 通常インストールされない。 インストールする場合は apt-get install --install-suggests※ /etc/apt/preferences, preferences.d/ 以下の設定にもよる ● APT::Install-Recommends ● APT::Install-Suggests
  18. 18. 2.1.6 パッケージ依存関係Enhancesこれは Suggests 同様の弱い依存を宣言しますが、依存作用の方向が逆です。Enhancesを指定しているパッケージの例パッケージ Enhancesフィールドautossh openssh-client, ssh-clientdbskkd-cdb skklibvirt-bin qemu, qemu-kvm, xenmysql-utilities mysql-workbench
  19. 19. 2.1.6 パッケージ依存関係Breaks,Conflicts,Replaces,ProvidesBreaks これは通常バージョン制約付きでパッケージのインコンパチビリ ティーを宣言します。一般的にこのフィールドにリストされた全ての パッケージをアップグレードすることで解決します。Conflicts これは絶対的排他関係を宣言します。このフィールドにリストされた 全てのパッケージを除去しない限り当該パッケージをインストールで きません。Replaces 当該パッケージによりインストールされるファイルがこのフィールドに リストされたパッケージのファイルを置き換える際にこれを宣言しま す。Provides 当該パッケージがこのフィールドにリストされたパッケージのファイル と機能の全てを提供する際にこれを宣言します。
  20. 20. 2.1.6 パッケージ依存関係バーチャルパッケージ正常な設定として "Provides" と "Conflicts" と "Replaces" とを単一バーチャルパッケージに対し同時宣言することがあります。こうするといかなる時にも当該バーチャルパッケージを提供する実パッケージのうち確実に一つだけがインストールされます。
  21. 21. バーチャルパッケージの例: mail-transfer-agentPackage: postfixVersion: 2.10.0-3Installed-Size: 3522Maintainer: LaMont Jones <lamont@debian.org>Architecture: amd64Replaces: mail-transport-agentProvides: mail-transport-agentDepends: libc6 (>= 2.11), (...snip...)Recommends: pythonSuggests: procmail, postfix-mysql, (...snip...)Conflicts: libnss-db (<< 2.2-3), mail-transport-agent,smailDescription-en: High-performance mail transport agent (...snip...)
  22. 22. バーチャルパッケージの例: mail-transfer-agentPackage: cronVersion: 3.0pl1-124Installed-Size: 300Maintainer: Javier Fernández-Sanguino Peña <jfs@debian.org>Architecture: amd64Provides: cron-daemonDepends: libc6 (>= 2.7), (...snip...)Pre-Depends: dpkg (>= 1.15.7.2)Recommends: exim4 | postfix | mail-transport-agentSuggests: anacron (>= 2.0-1), logrotate, checksecurityBreaks: dpkg (<< 1.15.4)Description-en: process scheduling daemon
  23. 23. Debian Policy Manualhttp://www.debian.org/doc/debian-policy/ch-relationships.html
  24. 24. Debianポリシーマニュアル(Debian JP Project)http://www.debian.or.jp/community/devel/debian-policy-ja/policy.ja.html/ch-relationships.html
  25. 25. 依存関係の可視化apt-cache show で確認できるけど、可視化したい● apt-cache dotty● debtree
  26. 26. man apt-cacheよりdotty パッケージ...dotty は、コマンドライン上のパッケージ名から、GraphViz[1]パッケージの dotty コマンドで利用するのに便利な出力を生成します。結果はパッケージの関係を表わす、ノード・エッジのセットで表現されます。デフォルトでは、すべての依存パッケージをトレースするので、非常に大きい図が得られます。コマンドラインに列挙したパッケージだけを出力するように制限するには、APT::Cache::GivenOnly をセットしてください。
  27. 27. man apt-cache より(続き)結果のノードは数種の形状をとります。通常パッケージは四角、純粋仮想パッケージは三角、複合仮想パッケージは菱形、欠落パッケージは六角形で表します。オレンジの四角は再帰が終了した「リーフパッケージ」、青い線は先行依存、緑の線は競合を表します。注意) dotty は、パッケージのより大きなセットのグラフは描けません。
  28. 28. apt-cache dotty% apt-cache dotty python-sphinx > /tmp/python-sphinx.dot% dot -Tsvg -o /tmp/python-sphinx.svg /tmp/python-sphinx.dotdot コマンドが終わらない(dot ファイルの中は2万行を越える巨大なグラフ)
  29. 29. apt-cache dottyマニュアルに書いてある通り、APT::Cache::GivenOnly をセットする% apt-cache dotty -o APT::Cache::GivenOnly=yes python-sphinx > /tmp/python-sphinx.dot% dot -Tsvg -o /tmp/python-sphinx.svg /tmp/python-sphinx.dot
  30. 30. apt-cache dotty引数のパッケージを増やしてみる% apt-cache dotty -o APT::Cache::GivenOnly=yes python-sphinx python-support python-pygments python-jinja2 sphinx-common > /tmp/python-sphinx.dot% dot -Tsvg -o /tmp/python-sphinx.svg /tmp/python-sphinx.dot
  31. 31. debtreeの紹介http://collab-maint.alioth.debian.org/debtree/
  32. 32. debtree同じようにグラフを作成してみる% debtree python-sphinx > /tmp/python-sphinx.dot% dot -Tsvg -o /tmp/python-sphinx.svg /tmp/python-sphinx.dot
  33. 33. できた!でも説明するには大きすぎたので他のパッケージで...
  34. 34. debtree debconf 紫の実線 Pre-Depends 赤の実線 Conflicts 青の実線 Depends 緑の実線 Provides
  35. 35. debtree debconf 黒の実線 Recommends 黒の点線 Suggests
  36. 36. debtree-web.rbhttps://gist.github.com/minimum2scp/5252671● apt-cache dotty, debtree のオプションを覚えき れない、コマンドが面倒● web interface を作った (ruby + sinatra)● 元々debtree用に作ったものを昨日 apt-cache dotty に対応させた
  37. 37. まとめ● Debianパッケージ情報の Depends などパッ ケージ依存性情報について調べました● Recommends と Suggests の違いをようやく覚 えました (Recommendsが通常インストールさ れる)● apt-cache dotty, debtree の紹介● debtree-web.rb の紹介
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×