2018年9月19日水曜日

廃止されたパッケージをインストールする

廃止されたパッケージをインストールする

公式ドキュメントに沿った手順で、 Solaris 11.3 のパッケージリポジトリに含まれる GIMP を Solaris 11.4 にインストールしてみる。

  1. Solaris 11.4 では、GIMP は廃止。
    # pkg install -n -v gimp
    このイメージは更新の必要はありません。
    # pkg info -r gimp
                         名前: image/editor/gimp
                         状態: インストール済みでない (廃止)
          パブリッシャー: solaris
                バージョン: 2.6.10
                         分岐: 11.4.0.0.1.9.0
    パッケージ化の日付: June 18, 2018 at  5:27:30 PM
                      サイズ: 2.52 kB
                      FMRI: pkg://solaris/image/editor/gimp@2.6.10-11.4.0.0.1.9.0:20180618T172730Z
    
  2. Solaris 11.3 の GIMP のインストールを試みるが失敗。
    # pkg info -g /path/to/pkgrepos/Solaris11.3 gimp
                         名前: image/editor/gimp
                   サマリー: The Gimp image editor
                   カテゴリ: Applications/Graphics and Imaging
                         状態: インストール済みでない
          パブリッシャー: solaris
                バージョン: 2.6.10
                         分岐: 0.175.3.0.0.26.0
    パッケージ化の日付: July  5, 2015 at  8:28:45 PM
                      サイズ: 33.36 MB
                           FMRI: pkg://solaris/image/editor/gimp@2.6.10-0.175.3.0.0.26.0:20150705T202845Z
                  ソース URL: ftp://ftp.gimp.org/pub/gimp/v2.6/gimp-2.6.10.tar.bz2
                  http://nifelheim.dyndns.org/~cocidius/files/gimp-hdrtools-0.1.tar.bz2
    # pkg install -n -g /path/to/pkgrepos/Solaris11.3 gimp
    このイメージは更新の必要はありません。
    
  3. バージョンを明示してインストールを試みると、拒否される理由が明示される。
    # pkg install -n -v -g /path/to/pkgrepos/Solaris11.3 image/editor/gimp@2.6.10-0.175.3.0.0.26.0
    計画の作成中 (ソルバーのセットアップ): \
    pkg install: image/editor/gimp の一致するバージョンはインストールできません:
      拒否:  pkg://solaris/image/editor/gimp@2.6.10-0.175.3.0.0.26.0
      理由:  このバージョンはインストール済みの incorporation consolidation/userland/userland-incorporation@11.4-11.4.0.0.1.14.0 から除外されます
  4. 拒否される理由を解除するため、ファセットを変更する。
    # pkg facet facet.version-lock.image/editor/gimp
    ファセット                                                  値   ソース
    version-lock.image/editor/gimp                                   True  system
    # pkg contents -m userland-incorporation | grep image/editor/gimp@
    depend facet.version-lock.image/editor/gimp=true fmri=image/editor/gimp@2.6.10-11.4.0.0.1.9.0 type=incorporate
    # pkg change-facet --no-backup-be facet.version-lock.image/editor/gimp=false
                    変更するパッケージ:         1
    変更するバリアント/ファセット:         1
                       ブート環境の作成: いいえ
     バックアップブート環境の作成: いいえ
    
    フェーズ                                  項目
    古いアクションを削除しています         1/1
    パッケージ状態データベースを更新しています      完了 
    パッケージキャッシュを更新しています         0/0 
    イメージ状態を更新しています      完了 
    スピード検索データベースを作成しています      完了 
    パッケージキャッシュを更新しています         1/1 
    
  5. 再度、GIMP のインストールを試みるが、依存関係がインストールできない。
    # pkg install -n -v -g /path/to/pkgrepos/Solaris11.3 image/editor/gimp@2.6.10-0.175.3.0.0.26.0
    計画の作成中 (ソルバーのセットアップ): -
    pkg install: image/editor/gimp の一致するバージョンはインストールできません:
      拒否:  pkg://solaris/image/editor/gimp@2.6.10-0.175.3.0.0.26.0
      理由:  image/library/libart@2.3.21-0.175.2.0.0.24.0 で許容される 'require' 依存関係のすべてのバージョンが廃止されています
  6. 依存先 (image/library/libart) をインストールできるようにファセットを変更する。
    # pkg contents -m userland-incorporation | grep image/library/libart@
    depend facet.version-lock.image/library/libart=true fmri=image/library/libart@2.3.21-11.4.0.0.1.9.0 type=incorporate
    # pkg change-facet --no-backup-be facet.version-lock.image/library/libart=false
                    変更するパッケージ:         1
    変更するバリアント/ファセット:         1
                       ブート環境の作成: いいえ
     バックアップブート環境の作成: いいえ
    
    フェーズ                                  項目
    古いアクションを削除しています         1/1
    パッケージ状態データベースを更新しています      完了 
    パッケージキャッシュを更新しています         0/0 
    イメージ状態を更新しています      完了 
    スピード検索データベースを作成しています      完了 
    パッケージキャッシュを更新しています         1/1 
    
  7. 次の依存関係でまた失敗
    # pkg install -n -v -g /path/to/pkgrepos/Solaris11.3 image/editor/gimp@2.6.10-0.175.3.0.0.26.0
    計画の作成中 (ソルバーのセットアップ): -
    pkg install: image/editor/gimp の一致するバージョンはインストールできません:
      拒否:  pkg://solaris/image/editor/gimp@2.6.10-0.175.3.0.0.26.0
      理由:  image/library/babl@0.1.2-0.175.3.0.0.13.0 で許容される 'require' 依存関係のすべてのバージョンが廃止されています
    
  8. 依存先 (image/library/babl) をインストールできるようにファセットを変更する。
    # pkg contents -m userland-incorporation | grep image/library/babl@
    depend facet.version-lock.image/library/babl=true fmri=image/library/babl@0.1.2-11.4.0.0.1.9.0 type=incorporate
    # pkg change-facet --no-backup-be facet.version-lock.image/library/babl=false
                    変更するパッケージ:         1
    変更するバリアント/ファセット:         1
                       ブート環境の作成: いいえ
     バックアップブート環境の作成: いいえ
    
    フェーズ                                  項目
    古いアクションを削除しています         1/1
    パッケージ状態データベースを更新しています      完了 
    パッケージキャッシュを更新しています         0/0 
    イメージ状態を更新しています      完了 
    スピード検索データベースを作成しています      完了 
    パッケージキャッシュを更新しています         1/1
    
  9. 次の依存関係でまた失敗
    # pkg install -n -v -g /path/to/pkgrepos/Solaris11.3 image/editor/gimp@2.6.10-0.175.3.0.0.26.0
    計画の作成中 (ソルバーのセットアップ): -
    pkg install: image/editor/gimp の一致するバージョンはインストールできません:
      拒否:  pkg://solaris/image/editor/gimp@2.6.10-0.175.3.0.0.26.0
      理由:  image/library/gegl@0.1.2-0.175.3.0.0.26.0 で許容される 'require' 依存関係のすべてのバージョンが廃止されています
    
  10. 依存先 (image/library/gegl) をインストールできるようにファセットを変更する。
    # pkg contents -m userland-incorporation | grep image/library/gegl@
    depend facet.version-lock.image/library/gegl=true fmri=image/library/gegl@0.1.2-11.4.0.0.1.9.0 type=incorporate
    # pkg change-facet --no-backup-be facet.version-lock.image/library/gegl=false
                    変更するパッケージ:         1
    変更するバリアント/ファセット:         1
                       ブート環境の作成: いいえ
     バックアップブート環境の作成: いいえ
    
    フェーズ                                  項目
    古いアクションを削除しています         1/1
    パッケージ状態データベースを更新しています      完了 
    パッケージキャッシュを更新しています         0/0 
    イメージ状態を更新しています      完了 
    スピード検索データベースを作成しています      完了 
    パッケージキャッシュを更新しています         1/1 
    
  11. これでようやくインストールできる。
    # pkg install -n -v -g /path/to/pkgrepos/Solaris11.3 image/editor/gimp@2.6.10-0.175.3.0.0.26.0
       インストールするパッケージ:        13
                      変更するサービス:         2
                      推定使用可能容量:  18.43 GB
                            推定消費容量: 135.60 MB
                      ブート環境の作成: いいえ
    バックアップブート環境の作成: いいえ
          ブートアーカイブの再構築: いいえ
    
    変更されたパッケージ:
    solaris
      image/editor/gimp
        None -> 2.6.10-0.175.3.0.0.26.0
      image/library/babl
        None -> 0.1.2-0.175.3.0.0.13.0
      image/library/gegl
        None -> 0.1.2-0.175.3.0.0.26.0
      image/library/libart
        None -> 2.3.21-0.175.3.0.0.26.0
      image/library/libpng
        None -> 1.4.20-11.4.0.0.0.12.0
      image/library/libpng10
        None -> 1.0.67-11.4.0.0.1.14.0
      image/library/libpng12
        None -> 1.2.57-11.4.0.0.1.14.0
      library/gnome/gnome-libs
        None -> 2.30.0-11.4.0.0.1.9.0
      library/gnome/gnome-vfs
        None -> 2.24.4-11.4.0.0.1.9.0
      library/lcms
        None -> 1.19-11.4.0.0.1.14.0
      library/python/lcms-27
        None -> 1.19-11.4.0.0.1.14.0
      library/python/pygtk2-27
        None -> 2.24.0-11.4.0.0.1.14.0
      library/sdl
        None -> 1.2.15-11.4.0.0.1.14.0
    
    サービス:
      restart_fmri:
        svc:/application/desktop-cache/desktop-mime-cache:default
        svc:/application/desktop-cache/icon-cache:default
    # pkg install -g /path/to/pkgrepos/Solaris11.3 image/editor/gimp@2.6.10-0.175.3.0.0.26.0
       インストールするパッケージ:        13
                      変更するサービス:         2
                      ブート環境の作成: いいえ
    バックアップブート環境の作成: いいえ
    
    ダウンロード                 パッケージ  ファイル  転送 (MB)  速度
    完了                                 13/13     2912/2912    19.8/19.8  538k/s
    
    フェーズ                                  項目
    新しいアクションをインストールしています   3409/3409
    パッケージ状態データベースを更新しています      完了 
    パッケージキャッシュを更新しています         0/0 
    イメージ状態を更新しています      完了 
    スピード検索データベースを作成しています      完了 
    パッケージキャッシュを更新しています         1/1
    

なお、Sokaris 11.3 上の ATOK に関係するパッケージをこの手順で Solaris 11.4 にインストールする事は出来ない。 これは、ATOK が依存している pkg://solaris/library/medialib が Solaris 11.4 で廃止されているが、 facet.version-lock の機構を使用せずに incorporation 制約が付与されているから。

2018年9月16日日曜日

Openbox + tint2 + compton

Openbox + tint2 + compton

Solaris 11.4 の GNOME-shell が個人的な使用状況に適さない事が判明したので、 代替となるソフトウェアを試してみた。

openbox 軽量ウィンドウマネージャー。スタック型。非コンポジット型。
ソースコードの変更無しで構築可能。
obconf openbox 構成ツール。openbox 本体には含まれない。
ソースコードの変更無しで構築可能。
obamenu openbox メニュー項目自動生成。openbox 本体には含まれない。
変更する事が前提の Python スクリプトで、簡明に記述されている。
tint2 パネル・タスクバー。openbox にはこの機能は含まれない。
要ソースコードの変更。
compton コンポジタ。非コンポジット型である openbox にはこの機能は含まれない。
ソースコードの変更無しで構築可能。

openbox

機能的に必要充分。

初期設定で困ったのは Meta-d (Meta は「◇」の刻印があるキー。 Super としても認識されている模様。 openbox の設定ファイルでは W (Windows) として扱われている。) の扱い。 Emacs では kill-word に割り当てられているが、 openbox では ToggleShowDesktop に割り当てられている。 これは、openbox の設定の変更で対応。

Alt-F7 〜 Alt-F10 も設定されていないので、これらも追加設定。

メニューは、Solaris 用に新規作成。メニューの呼び出しもキーに割り当て。

obconf

GUI で openbox の設定を行えるが、キーの割り当ては対象外。

openbox の設定は XML ファイルの直接編集を主にして、obconf は参照用に使う程度か。

obamenu

/usr/share/applications/*.desktop から コマンド、名前、カテゴリ、アイコンなどの情報を抽出し、 openbox 用のメニューとして構成する仕組み。

.desktop ファイルの多くは日本語名称も含んでいるので、 そちらを抽出するように obamenu を書き換えれば、一応の日本語対応になる。

カテゴリ名にの日本語対応は、obamenu に直接埋め込み。

アイコンは、様々なディレクトリに分散して配置されているため、 それらを探すように obamenu を書き換え。

tint2

初期設定で必要としている機能をほぼ提供してくれる。 アプリケーションの起動機能を削除するくらいか。

tint2 のソースコードの変更内容
src/tint2conf/md4.c
src/util/timer.c
src/util/window.c
u_int8_t u_int32_t u_int64_t といった非標準な型が使用されているので、 これらを typedef、マクロ、直接変更等で修正する。
src/launcher/apps-common.c
src/launcher/icon-theme-common.c
/usr/share/applications に類するディレクトリを、 必要に応じて追加・削除する。
src/util/cache.c 非標準関数 flock() を使用しているので、 これを fcntl()lockf() 等で置き換える。

compton

コンポジタ。

openbox 単独で使用すると画面のちらつきが発生するので、それの対策として。

画面のちらつきは、以下の手順で簡単に再現できる。

  1. compton (またはその他のコンポジタ) が動いているのであれば、それを停止する。
  2. 端末ウィンドウを複数(例えば四枚)並べる。
  3. それぞれの端末ウィンドウを、文字が表示されている状態にする(ちらつきの視認性を上げるため)。
  4. 任意の端末ウィンドウのタイトルバーをポインティングデバイスで掴み、画面内を継続的に移動させる。

メディアプレイヤー使用時の CPU 負荷は、 GNOME-shell に比べれば少ない。

CPU% 値
いずれも 2 仮想CPU構成、mpv で動画再生、top で目視測定。
openbox の CPU% 値はいずれの場合でも 0.1% 未満。
 非再生時再生時
 Xorg CPU% 値自身の CPU% 値Xorg CPU% 値自身の CPU% 値
非使用時0.1% 未満-1% 未満-
compton0.1% 未満0.1% 未満3% 前後2% 前後
GNOME-shell0.1% 未満0.1% 未満8% 前後20% 前後

2018年9月13日木曜日

GNOME-shell とメディアプレイヤー

GNOME-shell とメディアプレイヤー

Solaris 11.4 上で動画を再生すると gnome-shellXorg の CPU 負荷が上がる件。

これは gnome-shell がコンポジット型であるためと理解。

非コンポジット型の場合、 基本的な描画処理はメディアプレイヤーと X サーバの間のみで行われる。 コンポジット型の場合、描画内容は X サーバからウィンドウマネージャーに送られ、 様々な処理を施された後に X サーバに送られ、実際の表示が行われる。

メディアプレイヤーで動画を再生する場合、例えば1秒間に30回の描画が行われる。 そして、そのたびに X サーバとウィンドウマネージャー間の通信が行われ、 ウィンドウマネージャー側の処理も行われ、 それらのためのコンテキストスイッチも発生する。 これが負荷の要因。

ちなみに、_NET_WM_BYPASS_COMPOSITOR を設定しても変化は見られず。

$ xprop -format _NET_WM_BYPASS_COMPOSITOR 32c -set _NET_WM_BYPASS_COMPOSITOR 1

また、mpv を全画面モードで実行すると CPU 負荷の問題は発生しない事を確認。 このとき、_NET_WM_BYPASS_COMPOSITOR は 1 に設定される。 これを外部的に 0 に変更したとしても、CPU 負荷の問題は発生しない。

Solaris 11.4 でスクリーンセーバーを無効にする

Solaris 11.4 でスクリーンセーバーを無効にする

ネットで見つけた解 [gnome3 disable screensaver]。 「設定」→「プライバシー」→「画面ロック」は無効。

$ gsettings set org.gnome.desktop.session idle-delay 0

dconf-editor でも設定できる。

2018年9月11日火曜日

Solairs 11.4 を軽くさわってみた

Solairs 11.4 を軽くさわってみた

Live CD が提供されなくなった

インストールはテキストインストーラで行う。 操作は直線的。

デスクトップ環境は後から追加

テキストインストーラにはデスクトップ環境が含まれていない。 同時に配布されている IPS パッケージリポジトリイメージから追加する。

GNOME-Shell が使いづらい

gnome-tweak-tool を使って設定する。 標準でいくつかの拡張機能がインストールされている。

https://extensions.gnome.org にある 拡張機能を試してみようとしたが、いずれもインストールに失敗。 理由は不明。

動画の再生で GNOME-shell の CPU 負荷が高い

firefox、ffplay、mpv 等で動画を再生すると、 gnome-shell プロセスと Xorg プロセスの CPU% 値が跳ね上がる。 コンテキストスイッチの数値も10倍以上になる(500前後→10000超)。 gnome-shell の代わりに twm を使用した場合は、この問題は起きない。

Firefox ESR 52.9.0 (32bit)

YouTube は視聴可能だが、ニコニコ、Twitter、Facebook 系の動画は不可。

Solaris 11.3 上で構築した ffmpeg 3.2.2 をインストールすれば、 後者も可能に。

ffmpeg と libvdpau.so

Solaris 11.3 で構築した ffmpeg 3.2.2 は libvdpau.so に依存している。 libvdpau.so は Solaris 11.3 では pkg:/driver/graphics/nvidia に含まれているが、 Solaris 11.4 では pkg:/library/graphics/libvdpau に含まれている。

mpv と liblua.so

Solaris 11.3 で構築した mpv 0.29.0 は liblua.so に依存している。 liblua.so (pkg:/runtime/lua) は Solaris 11.3 と 11.4 の間で互換性が無く、 Solaris 11.3 上で構築した mpv は Solaris 11.4 上で動作しない。

symbol lua_cpcall: referenced symbol not found

ライブラリそのものを Solaris 11.3 から持ってくれば動作する。 また、mpv のソースコードにこの非互換性を伴う変更への対応が含まれているので、 再構築でも動作すると思われる。

最大音量が小さい

audioctl で変更可能。永続的。

$ audioctl set-control line-out 100:100

IME が一切無い

ATOK だけではなく、anthy なども廃止されている。

Solaris 11.3 の IME がらみのパッケージは、インストール不可に設定されている。 ibus は入っている。

動くかどうか試してみた

以下のパッケージに含まれるファイルを Solaris 11.4 上に持っていくと、 ATOK が使えるようになった。(簡単な動作確認のみ)

  • system/input-method/iiim
  • system/input-method/iiim-xim
  • system/input-method/iiim/atok
  • library/medialib

自動起動

/etc/X11/xinit/xinitrc.d/0210.im を Solaris 11.3 から持ってくる。

XI18N_OBJS を編集

/usr/share/X11/locale/ja_JP.UTF-8/XI18N_OBJS を編集。 スクリプト的にはこう。

# gsed --in-place=~ -e '/common\/ximcp/i XIM\tcommon/xiiimp\t_IIIMP_OpenIM\t\t# XIM_open' \
 /usr/share/X11/locale/ja_JP.UTF-8/XI18N_OBJS

この変更を行わなくても日本語の入力は出来るが、 文字パレットなどは動作しない。 また、トリガーキーの変更にも支障が出る。

トリガーキーの変更

$ gconftool-2 --type string \
 --set /desktop/input_methods/trigger_keys "Control_L+grave"

iiim-properties を使うには

iiim-properties は以下のライブラリに依存している。 これらを Solaris 11.3 から持ってくれば、一応動作する模様。

  • /usr/lib/libORBit-2.so*
  • /usr/lib/libORBit-imodule-2.so*
  • /usr/lib/libORBitCosNaming-2.so*
  • /usr/lib/libart_lgpl_2.so*
  • /usr/lib/libbonobo-2.so*
  • /usr/lib/libbonobo-activation.so*
  • /usr/lib/libbonoboui-2.so*
  • /usr/lib/libgnome-2.so*
  • /usr/lib/libgnome-keyring.so*
  • /usr/lib/libgnomecanvas-2.so*
  • /usr/lib/libgnomeui-2.so*
  • /usr/lib/libgnomevfs-2.so*

インストールの流れ

今回は Solaris 11.3 上の VirtualBox 5.2.18 を使用。

  1. Solaris 11.3 上で IPS パッケージリポジトリを展開
  2. VirtualBox で Solaris 11.4 用に VM を作成・構成
    CPU数、ファイル共有(展開したパッケージリポジトリ)、ネットワーク設定など。
  3. Solaris 11.4 をインストール
  4. Solaris 11.4 上で、VirtualBox Guest Additions をインストール
    # pkgadd -d /media/VBOXADDITIONS_5.2.18_124319/VBoxSolarisAdditions.pkg
  5. Solaris 11.4 上で、IPS パッケージリポジトリをマウント
    # mount -o ro -F vboxfs IPSpkgrepos /path/to/IPSpkgrepos
  6. デスクトップ環境をインストール
    ドキュメント に従ってデスクトップ環境を追加。

    # beadm create be-name
    # beadm mount be-name /mnt
    # pkg -R /mnt install -g /path/to/IPSpkgrepos group/system/solaris-desktop
    # bootadm update-archive -R /mnt
    # beadm umount be-name
    # beadm activate be-name

    BE を作成せずに直接デスクトップ環境を追加すると、 コンソールでログインしている状態で GUI ログイン画面が表示されるという困った状況に。 というか、困った。

  7. Solaris 11.4 を再起動
  8. VirtualBox Guest Additions を一旦削除し、再インストール

    これを行わないと Shared Clipboard の機能が動作しない模様。

    # pkgrm SUNWvboxguest
    # pkgadd -d /media/VBOXADDITIONS_5.2.18_124319/VBoxSolarisAdditions.pkg
  9. /etc/vfstab に IPSpkgrepos を追加、マウント
  10. ローカルパッケージリポジトリを構成
    # pkg set-publisher -G '*' -M '*' -g /path/to/IPSpkgrepos solaris
    # pkg refresh --full solaris 
  11. 必要に応じてパッケージを追加
    # pkg install group/feature/developer-gnu

    こんな感じ。