Upgrade to Pro — share decks privately, control downloads, hide ads and more …

mikutter メンテから見る pkgsrc システム紹介 / mikutter Nagoya 2018

mikutter メンテから見る pkgsrc システム紹介 / mikutter Nagoya 2018

#toshiakaigo2018 こと mikutter Nagoya 2018.5 での発表資料です

Izumi Tsutsui

May 20, 2018
Tweet

More Decks by Izumi Tsutsui

Other Decks in Programming

Transcript

  1. @tsutsuii ✔ NetBSD 開発者 (but not プログラマ) ➢[email protected] ➢いわゆる「謎マシン」担当 

    NetBSD/news68k SONY NEWS  NetBSD/hp300 HP 9000/300  NetBSD/luna68k OMRON LUNA 等々
  2. pkgsrc とは  www.pkgsrc.org より pkgsrc is a framework for

    building third- party software on NetBSD and other UNIX-like systems, currently over 17000 packages. It is used to enable freely available software to be configured and built easily on supported platform.
  3. pkgsrc 概要① •1997年 FreeBSD portから fork •NetBSD標準のパッケージシステム •NetBSD以外のシステムもサポート ✔Linux, FreeBSD,

    OpenBSD, IRIX, AIX, DragonflyBSD, OSF/1, HP-UX, QNX, Haiku, MirBSD, Minix3, Cygwin … ただし最初に動いたあとは放置というパターンもありがち •pkgsrc-2018Q1 では 18000パッケージ
  4. pkgsrcファイル  pkgsrc/net/mikutter の中身 $ pwd /home/tsutsui/pkgsrc/net/mikutter $ ls -l

    total 124 drwxr-xr-x 2 tsutsui users 512 Apr 3 05:11 CVS -rw-r--r-- 1 tsutsui users 106 May 15 2013 DESCR -rw-r--r-- 1 tsutsui users 2632 Mar 9 23:37 Makefile -rw-r--r-- 1 tsutsui users 48326 Feb 8 23:55 PLIST -rw-r--r-- 1 tsutsui users 763 Mar 9 23:37 distinfo drwxr-xr-x 3 tsutsui users 512 Apr 3 05:11 files drwxr-xr-x 3 tsutsui users 512 Apr 3 05:11 patches $ ls -l patches total 20 drwxr-xr-x 2 tsutsui users 512 Apr 3 05:11 CVS -rw-r--r-- 1 tsutsui users 501 Aug 14 2013 patch-core_plugin_libnotify_rnotify.rb -rw-r--r-- 1 tsutsui users 393 Jan 10 2016 patch-core_plugin_photo__support_Gemfile -rw-r--r-- 1 tsutsui users 1271 Mar 9 23:37 patch-core_plugin_photo__support_photo__support.rb -rw-r--r-- 1 tsutsui users 425 Jan 14 14:15 patch-mikutter.rb
  5. pkgsrcファイル •DESCR: パッケージ概要説明 さっきの moeeeeeeeeeee は これの中身 •PLIST: インストールファイルのリスト •distinfo:

    upstreamファイルのハッシュ •files: pkgsrcが独自に追加するファイル mikutter の場合は起動用のシェルスクリプト •patches: pkgsrc独自パッチ 詳細は後述
  6. pkgsrc ビルド概要② •ビルドする mikutterの場合 rubyスクリプトなので実質何もしない •作業フォルダに仮インストールする mikutter の場合 ${DESTDIR}/share/mikutter 以下に入ります

    •インストールファイルと PLIST を照合 •バイナリパッケージを作成 •作成したパッケージで実際のインストール
  7. ruby gem の扱い① •各 gem を独立したパッケージとして登録 依存関係の多い gem だと再帰的になって結構大変 •同一

    gemは1バージョンのみの登録が基本 パッケージは名称で管理していてバージョンは管理が別なので •gem 同士の依存関係も pkgsrc として管理 gem 自身にも依存関係記述のしくみがあるが 二重管理になっている
  8. ruby gem の扱い② •異なるパッケージが、同一の gem の 異なるバージョンを要求している場合 ➢API/ABI非互換が明らか、かつ、 共存必要な場合は別の名前で別パッケージ化 ➢gem側の依存関係記述が不明確な場合は

    pkgsrcの枠組みで依存関係を強制的に上書き gem側も依存関係のバージョン記載が 「最新バージョンを書いてる」「単に放置プレー状態」 といろいろなのでいろいろと難しい
  9. ruby gem 依存の落とし穴 •ubuntu 17.10 の apt の mikutter で

    gobject-introspection を手動で入れる 必要があったのも同様の問題 debian では直ってたけど ubuntu はずっと放置プレー •私はとりあえず Gemfile その他を見て 手動でメンテしてます わりとめんどい •詳しくは mikutter Redmine #1145 参照
  10. totoridipjp gem問題 •mikutter 3.3 で pluggaloid gem 導入 •それと同時に totoridipjp

    gem の発生 ハイテンションになっていたとしぁさんを思い出す •photo_support plugin が標準で totoridipjp gem を要求 •totoridipjp gem が入っていないと mikutter も起動しないという課題が発生 •plugin が要求する gem なので vendor以下 にも添付されていないという問題