MacPortsを掃除する

にゃんこ先生のジャンボぬいぐるみを購入して、毎日もふもふしているわさびです。今回はタイトルの通り、MacPortsの掃除のお話です。

きっかけ

先日、MacBookさんのHDDの空き容量が1.16GBという危機的状況になりました。いろいろソフトウェアを削除しても、すでに何度も掃除をしていたので、ほとんど変わらず、頭を悩ませていました。そして、ふと思ったのが、

「よく考えたら、MacPortsのダウンロードファイルとか全然掃除いてないんじゃね?」

ということです。

MacPorts利用のスタンス

自宅で使っているMacBookはほとんど個人で利用してるため、ソフトウェアのバージョンはなるべく最新のものを利用しているだけで、ほとんど特定バージョンへのこだわりはありません。*1なので、MacPortsでインストール済みのソフトウェアで2種類以上のバージョンの同一ソフトウェアがインストールされていたら、古いバージョンのものはいらないのでは?ということになります。

MacPortsの何をどうして掃除できるのか

掃除について触れる前に、ソフトウェアのインストールとアップグレードについてです。

MacPortsを用いてソフトウェアをインストールする仕組み

MacPortsを用いてソフトウェアをインストールする場合、内部的にやっていることは、大まかには以下の3点だと思います。

  1. ソフトウェアのソースコードをダウンロードする
  2. ダウンロードしたソースコードをコンパイルする
  3. コンパイルしたものを特定ディレクトリにインストールする

インストール作業が終了すれば、ダウンロードしたソースコードと、コンパイルしたものはいらなくなりますね。これは掃除できそうです。でも、それだけじゃないんです。

MacPortsを用いてソフトウェアを更新する仕組み

今まで僕は、以下のようなport_upgrade.shを作っておいてソフトウェアを更新してきました。

port selfupdate
port sync
port outdated
port upgrade installed

やっていることは至ってシンプルで、

  1. MacPorts自体のアップグレード
  2. Portsツリーの更新
  3. アップグレードされるパッケージの表示
  4. パッケージのアップグレード

だけです。

上記のようなport_upgradeスクリプトを用いると更新を完全に自動化できるわけですが、あるソフトウェアAのバージョン1.14から1.15へのアップグレードの際に、MacPortsは古いバージョン(1.14)を削除しません。インストールした新しいバージョン(1.15)はアクティブという状態になり、古いバージョンはインアクティブという状態になります。コマンドを打って使われるのはアクティブなソフトウェアです。古いバージョンのソフトウェアを利用したければ、新しいバージョンをインアクティブにして、古い方をアクティブにすれば、アップグレード後に不具合があっても、もとの環境に戻すことができるようです。親切なんだけど、僕の利用方法だとあまり古いソフトウェアに戻すことは少ないような気がします^^;

インアクティブなソフトウェアの削除と不要ファイルの掃除

というわけで、作成したのが以下のport_clean.sh。

port -u uninstall
port clean --all installed

上記のスクリプトでは、

  1. インアクティブなソフトウェアのアンインストール
  2. インストール済みソフトウェアのソースコードと作業ファイルを削除

という流れをやっています。

掃除の結果

# sudo sh port_clean.sh

というコマンドを用いて、空き容量は1.16GBから15GBに増加したのでした。
これで当分もちそうです。いらないインアクティブなソフトウェアはたまには掃除しないといけませんね。*2

*1:特に特定バージョンを使う制約もありませんし。

*2:upgradeでcオプションとか使っても良いかもしれません。

自分の.emacs.d以下を公開してみた。

需要があるのかどうかわかりませんが、.emacs.d以下の掃除をやりきったついでに公開してみました。*1

http://github.com/aircastle/dot-emacs-dot-d

使い方は、至って簡単(?)で、

1. .emacs.dをgit cloneします。(~/.emacs.dの上書きに注意)

$ git clone git://github.com/aircastle/dot-emacs-dot-d.git ~/.emacs.d

2. .emacsをコピーします。

$ cp ~/.emacs.d/dot-emacs ~/.emacs

3. elispフォルダを作ります。

$ mkdir ~/.emasc.d/elisp

4. install-elisp.elをインストールします。

$ wget  http://www.emacswiki.org/cgi-bin/wiki/download/install-elisp.el ~/.emacs.d/elisp/

5. emacsを起動します。

$ emacs

6. ~/.emacs.d/update-elisp.elを開いて、ほしいelispの行でC-x C-eします。*2
7. 自動的にファイルが開くので、C-c C-cしてインストールします。
8. .emacsの所定の行のコメントアウトをはずします。

もうちょっとわかりやすくなるようになんとかします。

*1:インストール済みelispは公開してないです。

*2:コメントアウトしてあるところは、install-elispでインストールできないです、多分

あればいいなと思うもの

emacsでパッケージ管理システム

現状、特定のelispをインストールしようと思うと、依存するelispも手動で入れないといけない。おまけに、更新されたelispも自分で探さないといけない。

anything.elで特定の行をpatternにコピペ

findfileでanythingを起動させて、patternを打ち込んだ際に、候補に挙がってきたものをpatternに一発でコピペしたい。長いパスのものを開きたいけど、開きたいファイルと同一ディレクトリの別ファイルしか候補に上がってこないときになど。こういうのってあるのかしら。locate dbとかでなんとかするしかないのかなぁ。

ML115のケースファンを交換する

知人に,新品のアップルのワイヤレスキーボード*1をいただいて,
すっかり慣れてしまった山葵です.慣れると別にHHKじゃなくてもいいかなと思ってしまいます.

さて,自宅のML115マシン2台のファン音があまりに五月蠅いので,
前々からケースファンを交換したいと思っていました.
しかし,鎌風にすべきか鎌風2にすべきか迷い,今回は*2実験的に鎌風2を買ってきて交換.
ちょっと面倒な上,Web上に写真付きのよい資料がなさそうだったので,
書いておきたいと思います.おそらくML115でも有効です.

買ったファン

今回使うファンは,以下の鎌風2です.

ケースファンのカバーを外す

ケースからケースファンを取り外し,ケースファンのカバーを外します.
送風面から見た限りは外し方が全くわかりませんが,横から見ると四隅に接続部分があるのがわかります.

接続部分の輪になったところにマイナスドライバなどを入れ,送風面に向かって押すとロックが外れます.

これでケースファンのカバーが外れるので,買ってきた鎌風2にカバーを取り付けます.

コネクタを削って取り付ける

もともとのケースファンのコネクタは茶色いもので,マザーボード側も茶色いものです.

ここに鎌風2のコネクタを取り付けますが,コネクタ形状の関係上,そのままでは無理です.
なので,鎌風2のコネクタを削ることで頑張ります.

取り付けるケースファン,コネクタの付け方に寄ってはマシンの起動時に警告音が鳴るとの報告もあるようですが.鎌風2,上記の取り付け方ではそのような現象は確認できませんでした.
ケースファンの交換だけでも随分違いますが,まだ気になる方はCPUファンを交換するとよいですね.

ML115ユーザの皆さんが安眠できますように.

*1:[asin:B000UWRC6I:detail]

*2:といっても,交換したのは1ヶ月くらい前の話です

読書の秋

今月の頭くらいにがっつり購入し,暇があれば読んでいます.

思考の補助線 (ちくま新書)

思考の補助線 (ちくま新書)


ラブホテル進化論 (文春新書)

ラブホテル進化論 (文春新書)


やさしいEmacs‐Lisp講座

やさしいEmacs‐Lisp講座


On Lisp

On Lisp


情報検索アルゴリズム

情報検索アルゴリズム