ラベル Gentoo の投稿を表示しています。 すべての投稿を表示
ラベル Gentoo の投稿を表示しています。 すべての投稿を表示

2012年1月11日

Emacsでauto-complete + pycompleteによるPythonの補完 (Gentoo Linux)


Emacsでのpython開発環境を強化しようと思い色々と設定を行っています。
補完機能について色々と試していたが、そこそこな設定ができたので記録を残しておきます。

Emacsでpythonの補完を行う方法は、pythonの思想に反して(?)色々方法があるようです。


  ropemacs
  pysmell
  pycomplete
  ac-python


あまりモジュールの依存が多いものは嫌だったので、pycompleteを使うことにしました。

なお、以下の設定はGentooでの設定に依存したものになります。
(一般的な部分もありますが...)

まず必要なパッケージをインストールします。括弧内に実際にインストールしたバージョンを記載しています。


  # emerge app-editors/emacs       (=app-editors/app-emacs-23.3-r2)
  # emerge app-emacs/pymacs        (=app-emacs/pymacs-0.23-r1)
  # emerge app-emacs/python-mode   (=app-emacs/python-mode-5.2.0)
  # emerge app-emacs/auto-complete (=app-emacs/auto-complete-1.3.1)


また、Gentooのpython-modeではpycompleteがインストールされないためローカル環境に置きます。
python-modeインストール時に取得されたtgzが/usr/portage/distfilesにあるので、
そこから pycomplete.py と pycomplete.el を取り出します。以下のパスに配置しました。


  $HOME/.emacs.d/local-site-lisp/pycomplete.el
  $HOME/.emacs.d/pycomplete/pycomplete.py


続いて、Emacsの設定。$HOME/.emacsに以下を記述します。


  ;; portageでインストールされるelispを読み込む
  (load "/usr/share/emacs/site-lisp/site-gentoo")

  ;; pycomplete.elを保存したディレクトリをload-pathに追加
  (setq load-path (append '("~/.emacs.d/local-site-lisp") load-path))

  ;; auto-completeの設定
  (add-to-list 'ac-dictionary-directories "~/.emacs.d/dict")
  (require 'auto-complete-config)
  (ac-config-default)
  (setq ac-use-menu-map t)  ; 補完ウィンドウでC-p,C-nで候補選択

  ;; pycomplete.pyをpymacsに渡す
  (eval-after-load "pymacs"
    '(add-to-list 'pymacs-load-path "~/.emacs.d/pycomplete"))
  ;; pycompleteをロードする
  (add-hook 'python-mode-hook '(lambda () (require 'pycomplete)))

  ;; auto-completeでpycompleteを渡すための設定
  (defvar ac-source-pycomplete
    '((prefix "\\(?:\\.\\|->\\)\\(\\(?:[a-zA-Z_][a-zA-Z0-9_]*\\)?\\)" nil 1)
      (candidates . ac-pycomplete-candidates)
      (require . 0)))
  (defun ac-pycomplete-candidates ()
    (pycomplete-get-all-completions (py-symbol-near-point) (py-find-global-imports)))

  ;; auto-completeをpythonでも有効にする
  ;;   (app-emacs/auto-complete-1.3.1ではpython-modeは設定されていない)
  (add-to-list 'ac-modes 'python-mode)
  (defun ac-python-mode-setup ()
    (setq ac-sources (append '(ac-source-pycomplete)
    ac-sources)))
  (add-hook 'python-mode-hook 'ac-python-mode-setup)

  ;; M-hで即座にpycompleteによる補完を行う
  ;;  XXX: ac-complete-pycompleteを利用すると、"sys."等のドット状態で補完ができない
  ;;  XXX: そのため、ac-complete-interactive-pycompleteを定義して呼び出す
  (global-set-key (kbd "M-h") 'ac-complete-interactive-pycomplete)
  (defvar ac-source-pycomplete-interactive
    '((prefix "\\(?:\\.\\|->\\)\\(\\(?:[a-zA-Z_][a-zA-Z0-9_]*\\)?\\)" nil 1)
      (candidates . ac-pycomplete-candidates)
      (requires . 0)))
  (defun ac-complete-interactive-pycomplete ()
    (interactive)
    (auto-complete '(ac-source-pycomplete-interactive)))


ac-source-pycomplete-interactiveについてですが、関数定義の中身はac-source-pycompleteと一緒です。
ac-complete-interactive-pycompleteからac-source-pycompleteを呼び出すようにすると、
後述のドット(.)で補完を行うことができないため(原因不明)、別の関数で定義しています。

以上の設定で、以下のようにできます。
  "sys.__" とか入力すれば、auto-completeで補完してくれる
  "time." とか入力後、M-hでシンボル一覧が表示される
これでかなりイイ感じです。

以下のサイトを参考にしました。感謝!
[emacs][python] auto-complete と pycomplete で賢い補完
@yosisaさんのつぶやき

2011年4月24日

Gentoo Linuxで python をアップデート (2.6 -> 2.7)

Gentoo LinuxのPortageでPythonが2.6から2.7にアップデートがありました。アップデートしたら見事に(案の定?)トラブったので、僕が対応した方法をメモしておきます。

現象
portageによるpythonのアップデート(python-2.7.1-r1)後、emergeコマンドが一切動作しなくなる。x86-stableパッケージ(x86)を利用しており、python-2.7はSlotでインストールされていた。

解決方法
僕の場合は以下の方法で解決することができました。
まず、eselectでpythonパッケージを2.7に変更する
  $ eselect python list   (python2.7の番号を確認。僕の環境では[1])
  $ eselect python set 1  (確認した番号[1]で設定する)
続いて python-updater コマンドで旧pythonに依存するパッケージの再ビルドを行う
  $ python-updater

これで解決しました。長らく使っていた2.6系はこれで不要に。--depcleanでアンインストール

2011年2月11日

GRUBが立ち上がらなくなったときの対応(Gentoo Linux インストールCD)

現在、Windows 7/Gentoo Linux/NetBSDという3つのOSをPCにインストールしていて、ブートローダにGRUBを利用しています。OSの再インストール等を実施していると稀にMBRが書き換えられてGRUBが立ち上がらないあるいはOSが何も立ち上がらないという状況になります。そんなときの対処方法に関して記載します。

僕はいつも、Gentoo Linuxをインストールした際に利用したインストールCDを利用してます。基本的な流れとしては、

  • インストールCDから起動
  • Gentoo Linuxのパーティションをマウント、chroot
  • GRUBの再設定

という流れです。以下がインストールCD起動からGRUB再設定までに必要なコマンドです。

    # swapon  /dev/sda2
    # mount /dev/sda3 /mnt/gentoo
    # mount /dev/sda1 /mnt/gentoo/boot
    # cd /mnt/gentoo
    # mount -t proc none /mnt/gentoo/proc
    # mount -o bind /dev /mnt/gentoo/dev
    # chroot /mnt/gentoo /bin/bash
    # grub


    grub>  root (hd0, 0)
    grub>  setup (hd0)

以上でMBRへのGRUB最設定が完了です。上記の方法はKnoppix等のLiveCDでもつかえるはずです。

2011年1月3日

OProfileを使ってみる

LinuxカーネルのプロファイラであるOProfileを使ってみることにする。
始めて利用するので、今回はセットアップと超簡単な使い方のみ試してみる。

今回試した環境は、

  • システムは Gentoo Linux。カーネルバージョンは 2.6.36-gentoo-r6(Linux-2.6.36にGentoo向けパッチが当たっている)
  • PCは、ThinkPad X201を利用。CPUはIntel Core i5-540M


まずは環境のセットアップ。OProfileを利用するためにはLinuxカーネルでのサポートと専用ユーザランドのインストールが必要。Linuxカーネルのサポートは、CONFIG_OPROFILECONFIG_HAVE_OPROFILE のサポートがあれば最低限OKらしい。続いてユーザランドのインストール。Portageを使ってインストールする


  $ emerge  dev-util/oprofile


インストールしたらOProfileで簡単なプロファイルを行ってみる。


  $ sudo opcontrol  --vmlinux=/usr/src/linux/vmlinux
  $ sudo opcontrol  --start
  # プロファイルをとる任意のプログラムを実行
  $ sudo opcontrol --stop


以上でプログラムのトレース取得は成功。
なお、opcontrolで各種処理を行うにはroot権限が必要な模様。そのため、sudoコマンドを用いて行っている。

続いてプロファイル結果の表示


  $ opreport    # 全体の結果を表示
  $ opreport  (プログラム名)    #  該当するプログラムのみ
  $ opreport  -l  (プログラム名)  # ??
  $ opreport  -c (プログラム名)  # ??



opreportでの各種コマンドラインオプションの詳細は今回は未確認。今日のところはこれで終了。もっと詳細を後日見ていきたいと思う。

参考ページ
OProfile : http://oprofile.sourceforge.net/news/
OProfile Documents : http://oprofile.sourceforge.net/docs/

備考
OProfileのサポートCPUを見るとCore-i5は十分なサポートされていないのか??この点も後日確認したいと思う。
またOProfileの実行に伴い、/root/.oprofile/ ディレクトリが作成されて設定が保持される。
さらに実行時の各種詳細情報は /var/lib/oprofile/ ディレクトリ配下に記憶さえる模様。

2010年6月17日

Gentoo Linux の world を調べる方法

Gentoo Linux で portage を使用していると、依存するパッケージ等を自動で解決・インストールしてくれます。では、インストールしているパッケージで「自身で指定したパッケージ」と「依存しているためにインストールされたパッケージ」を調べたい場合にはどうするか?という話。
自身で指定したパッケージは、"world" に指定されます。この world はファイルとして保持されていて、/var/lib/portage/world のファイルを確認すれば分かります。

2008年12月7日

Firefoxのメニューのフォントサイズを設定する

Firefoxにおいて、表示するWebページのフォントサイズは「編集→設定」から変更することができるが、メニューバー等のフォントサイズはここからでは変更できない。

Gentoo Linux に Firefox 2.0.0.18 をインストールしたところ、画面の解像度(1024 x 768)に対してメニューバーのフォントが大きすぎるので、その設定を変更してみた。

変更方法は以下の通り。
  • $HOME/.mozilla/firefox/*/chrome/以下に、"userChrome.css" というファイルを作成する。
  • 作成した userChome.css に以下を記載する。(同一ディレクトリにuserChome_example.cssというファイルがあるので、それを参考に‥)


@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
* {
font-size: 8pt !important
}

参考ページ
GNOME意外でFirefoxとThuderbirdのフォントサイズを決定する

2008年11月22日

Gentoo Linux 2008.0 のインストール

企んでいたOSの再インストールを実施する。
まずはGentoo Linuxのインストール。

インストールするのに参考になるサイトは以下の通り
ハンドブックに従う形で、これと言って問題無くインストール完了!

インストールが完了したら、システムをすべて再ビルドする。(最適化のため)

# emerge --oneshot linux-headers (ヘッダファイルを最新のものにする)
# emerge --oneshot glibc (まず、libcを再ビルドする)
# emerge -e world (システム全体を再ビルドする)
# emerge --depclean (不要なパッケージを削除する)

とりあえず、これで最低限のシステムインストールは完了!