gnviewのインストール(Solaris 10(x86_sxde 9/07))

1. 環境の準備

  1. Solaris Express Developer Edition相当のインストールがされていることを前提とします。 作者はOpenSolarisのダウンロードページからSolaris Express Developer Edition DVD(9/07 snv_70b)をダウンロードしてインストールしました
    • Community Editionも試しましたがGtk2のperlモジュールのビルドに失敗するようです
  2. Sunfreeware.comから以下のパッケージをダウンロードします 以下のリンクはSolaris 10 x86版ですので、Sparc版やSolaris 9以下の場合はトップページからたどってください
  3. ダウンロードしたパッケージをインストールします
    # gunzip パッケージのファイル名.gz
    # pkgadd -d 展開したパッケージのファイル名
    
    The following packages are available:
      1  <パッケージ名>
    
    Select package(s) you wish to process (or 'all' to process
    all packages). (default: all) [?,??,q]: <--[ENTER]を押す
    

2. ithreads対応perlの作成

Solaris 10のパッケージになっているperlはithreadsに対応していないため、ithreads対応にビルドしたperlを別ディレクトリにインストールします。(以下の手順では/opt/local以下にインストールしています。パッケージに影響を及ぼさないディレクトリであればどこでも良いと思います)

  1. perlを公式サイトより取得します(作者はstableである、5.8.8にしました)
     # /usr/local/bin/wget http://www.cpan.org/src/stable.tar.bz2
    
  2. 以下のようにperlを作成します
    # mkdir -p /opt/local/bin
    # bzcat stable.tar.bz2 |tar xvf -
    # cd perl-5.8.8
    
    # sh Configure
    (以下は[ENTER]キー以外のタイプをする箇所を抜粋しています)
    
    Build a threading Perl? [n] y
    
    What libraries to use? [-lsocket -lnsl -ldb -ldl -lm -lpyhread -lc] -lsocket -lnsl -ldl -lm -lpthread -lc (<--"-ldb"を抜きます)
    
    Installation prefix to use? (~name ok) [/usr/local] /opt/local
    
    
    # make
    
    エラーが出ますがそのまま続けます
    (多分よくないことですが、gnviewの動作自体には問題がないようです)
    
    # make test
    
    エラーが出ますがそのままインストールします
    (多分よくないことですが、gnviewの動作自体には問題がないようです)
    
    # make install
    # /opt/local/bin/perl -V
    
    
    Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
    
    (中略)
        usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
                                               ^^^^^^^^^^^^^^^^^^<-これを確認
    

3. cpanの設定

  1. 環境変数PATHに/usr/local/binを追加します
    # PATH="/usr/local/bin:$PATH"
    # export PATH
    # printenv PATH
    /usr/local/bin:/usr/sbin:/usr/bin:/usr/openwin/bin:/usr/ucb
    
  2. 環境変数PKG_CONFIG_PATHを変更します
    # PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/local/lib/pkgconfig"
    # export PKG_CONFIG_PATH
    # printenv PKG_CONFIG_PATH
    /usr/lib/pkgconfig:/usr/local/lib/pkgconfig
    
  3. cpanの初期設定をします
    # /opt/local/bin/cpan
    
    1. 設定ファイルを正常に取得できた場合は以下のような手順になります
      Select your continent (or several nearby continents) [] 2 (<--(2) Asiaを選択)
      
      Select your country (or several nearby countries) [] 5 (<--(5) Japanを選択)
      
      put them on one line, separated by blanks, e.g. '1 4 5' [] 1 2 3 4 5 6 7 (<--お好みのCPAN mirrorをスペース区切りで並べて選択)
      
      cpan> q
      #
      
    2. MIRRORED.BY.gzを取得できなかった場合は以下の表示が出ます。CPAN sitesを参照してお好みのCPAN mirrorを入力します
      Please enter your CPAN site: [] http://ftp.cpan.jp/
      cpan> q
      #
      
  4. Bundle::CPANモジュールをインストールします
    # /opt/local/bin/cpan
    cpan> install Bundle::CPAN
    cpan> q
    
    
    1. CPANからのデータが取得できない場合はConfig.pmを削除して初期設定をやり直します
      (データが取得できなかった場合の表示)
      Conld not fetch modules/03modlist.data.gz
      Going to write /root/.cpan/Metadata
      Warning: Cannot install Bundle::CPAN, don't know ehat it is.
      Try the command
      
          i /Bundle::CPAN/
      
      to find objects with matching identifiers.
      
      cpan>
      
      (cpanを終了)
      cpan> q
      
      (設定ファイルを削除)
      # rm -rf ./.cpan
      # cd /opt/local/lib/perl5/5.8.8/CPAN
      # rm -f ./Config.pm*
      
      (初期設定をやり直し)
      # cd
      # /opt/local/bin/cpan
      

4. perlモジュールのインストール

  1. /usr/lib/pkgconfig/x11.pcを作成します
    prefix=/usr/openwin
    exec_prefix=${prefix}
    libdir=${exec_prefix}/lib
    includedir=${prefix}/include
    
    xthreadlib=
    
    Name: X11
    Description: X Library
    Version: 0.0
    Requires: xproto kbproto inputproto
    Requires.private: xau xdmcp
    Cflags: -I${includedir} -I/usr/X11/share/include -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DXTHREADS -DXUSE_MTSAFE_API
    Libs: -L${libdir} -R${libdir} -lX11
    Libs.private:
    
  2. 以下の手順で各モジュールをビルドします
    # /opt/local/bin/cpan
    
    Always commit changes to config variables to disk? [no] yes
    
    cpan[1]> o conf
    
    (CPANの設定はこんな感じになっています)
    $CPAN::Config options from '/opt/local/lib/perl5/5.8.8/CPAN/Config.pm':
        commit             [Commit changes to disk]
        defaults           [Reload defaults from disk]
        help               [Short help about 'o conf' usage]
        init               [Interactive setting of all options]
    
        applypatch         undef
        auto_commit        [1]
        build_cache        [10]
        build_dir          [/.cpan/build]
        build_dir_reuse    undef
        build_requires_install_policy undef
        bzip2              undef
        cache_metadata     [1]
        check_sigs         undef
        colorize_debug     undef
        colorize_output    undef
        colorize_print     undef
        colorize_warn      undef
        commandnumber_in_prompt [1]
        commands_quote     undef
        cpan_home          [/.cpan]
        curl               undef
        dontload_hash     
        dontload_list      undef
        ftp                [/usr/bin/ftp]
        ftp_passive        [1]
        ftp_proxy          []
        getcwd             [cwd]
        gpg                []
        gzip               [/usr/bin/gzip]
        histfile           [/.cpan/histfile]
        histsize           [100]
        http_proxy         []
        inactivity_timeout [0]
        index_expire       [1]
        inhibit_startup_message [0]
        keep_source_where  [/.cpan/sources]
        load_module_verbosity undef
        lynx               []
        make               [/usr/local/bin/make]
        make_arg           []
        make_install_arg   []
        make_install_make_command [/usr/local/bin/make]
        makepl_arg         []
        mbuild_arg         []
        mbuild_install_arg []
        mbuild_install_build_command [./Build]
        mbuildpl_arg       []
        ncftp              []
        ncftpget           []
        no_proxy           []
        pager              [/usr/bin/less]
        password           undef
        patch              undef
        prefer_installer   undef
        prefs_dir          undef
        prerequisites_policy [ask]
        proxy_pass         undef
        proxy_user         undef
        randomize_urllist  undef
        scan_cache         [atstart]
        shell              [/sbin/sh]
        show_unparsable_versions undef
        show_upload_date   [0]
        show_zero_versions undef
        tar                [/usr/sbin/tar]
        tar_verbosity      undef
        term_is_latin      [1]
        term_ornaments     [1]
        test_report        undef
        unzip              [/usr/bin/unzip]
        urllist           
            0 [http://ftp.nara.wide.ad.jp/pub/CPAN/]
            1 [http://ftp.cpan.jp/]
            2 [http://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/]
        use_sqlite         [0]
        username           undef
        wait_list          undef
        wget               [/usr/local/bin/wget]
        yaml_load_code     undef
        yaml_module        undef
    
    
    (モジュールを順番にインストールします)
    cpan[2]> install ExtUtils::Depends
    cpan[3]> install HTML::TokeParser
    
    (以下の表示(依存性解決)が出ますので、yesをタイプして依存するモジュールをインストールします)
    ----- Unsatisfied dependencirs detected during -----
    -----       GAAS/HTML-Parser-3.56.tar.gz       -----
         HTML::Tagset [requires]
    Shall I follow them and prepend them to the queue
    of modules we are processing right now? [yes] <-- [ENTER]もしくはyes[ENTER]
    
    cpan[4]> install ExtUtils::PkgConfig
    cpan[5]> install Glib
    cpan[6]> install Cairo
    
    (以下の表示(依存性解決)が出ますので、yesをタイプして依存するモジュールをインストールします)
    ----- Unsatisfied dependencirs detected during -----
    -----          TSCH/Cairo-1.044.tar.gz         -----
         Test::Number::Delta [requires]
    Shall I follow them and prepend them to the queue
    of modules we are processing right now? [yes] <-- [ENTER]もしくはyes[ENTER]
    
    cpan[7]> install Gtk2
    
     (test時にエラーが出てインストールできないことがあります。(必ず出るかどうかは不明です)
      force install Gtk2 で無理矢理インストールできますがgnviewが動かない場合が
      あります。自己責任でどうぞ)
    
    cpan[8]> install Gtk2::GladeXML
    cpan[9]> install HTTP::Date
    
    (以下の表示(依存性解決)が出ますので、yesをタイプして依存するモジュールをインストールします)
    ----- Unsatisfied dependencirs detected during -----
    -----       GAAS/libwww-perl-5.808.tar.gz      -----
         URI [requires]
    Shall I follow them and prepend them to the queue
    of modules we are processing right now? [yes] <-- [ENTER]もしくはyes[ENTER]
    
    cpan[10]> q
    
    #
    

5. gnviewのインストール

  1. gnviewのリリースページから最新のtarballを取得します
  2. 以下のようにインストールします
    # gzcat gnview-0.6.tar.gz | tar xvf -
    # cd gnview-0.6
    # mkdir -p /usr/share/gnview
    # cp -p gnview.glade 1pix* /usr/share/gnview
    # cp -p gnview /usr/bin
    # chmod 755 /usr/bin/gnview
    (以下は必要に応じて)
    # cp -p gnview.desktop /usr/share/applications
    
  3. /usr/bin/gnviewをエディタで開いて編集します
    (変更前)
    #!/usr/bin/perl -w
    (変更後)
    #!/opt/local/bin/perl -w