MacPortsのupdateの注意点。
発端
いつものとおりMacPortsにインストール済みのライブラリをupgradeしようとしたら次のエラーが発生した。
# sudo port upgrade installed
-
-
- > Computing dependencies for aquaterm
- > Building aquaterm
-
BUILD FAILED **
The following build commands failed: AQTFwk: CopyPlistFile /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_aqua_aquaterm/work/aquaterm/build/Deployment/AquaTerm.framework/Versions/A/Resources/AquaTerm.framework-Info.plist AquaTerm.framework-Info.plist AquaTerm: CopyTiffFile /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_aqua_aquaterm/work/aquaterm/build/Deployment/AquaTerm.app/Contents/Resources/Cross.tiff English.lproj/Cross.tiff (2 failures) Error: Unable to upgrade port: 1 Before reporting a bug, first run the command again with the -d flag to get complete output. [kynbit@Razza] # sudo port upgrade installed -d-
-
- > Computing dependencies for aquaterm
- > Building aquaterm
-
BUILD FAILED **
The following build commands failed: AQTFwk: CopyPlistFile /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_aqua_aquaterm/work/aquaterm/build/Deployment/AquaTerm.framework/Versions/A/Resources/AquaTerm.framework-Info.plist AquaTerm.framework-Info.plist AquaTerm: CopyTiffFile /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_aqua_aquaterm/work/aquaterm/build/Deployment/AquaTerm.app/Contents/Resources/Cross.tiff English.lproj/Cross.tiff (2 failures) Error: Unable to upgrade port: 1 Before reporting a bug, first run the command again with the -d flag to get complete output.sudo port uninstall AquaTermError: port uninstall failed: Please uninstall the ports that depend on aquaterm first. ニコニコ動画研究会の時にいれたgnuplotに依存しているようなので、gnuplotから削除。*1 *2
#sudo port uninstall gnuplot# sudo port uninstall AquaTerm
-
-
- > Deactivating aquaterm @1.0.1_3
- > Uninstalling aquaterm @1.0.1_3
-
#sudo port -d selfupdate 略 #sudo port -d sync 略これで、MacPortsの情報は最新となった。
*1:しばらく使わないと思うので。他のライブラリをupgradeさせることを優先しました。
*2:もし、途中でインストール失敗したらMacPortsでのffmpegのインストールで必要なさそうな苦労をした話 - Bouldering & Com.のコマンドを参考にして、一旦cleanしないといけないようです。
MacPortの更新Tips
raydiveさんより、この方法だと時間がかかってしまうことが判明。やり方としては次の2パターンがあるとのことでした。
- 急ぎのとき
- port upgrade 必要なports
- 時間があるとき
- port upgrade outdated で更新かかっているport
id:raydiveさん、ありがとうございました。他のコマンドもMacPorts-JPを見て調べてみます。
略語(e.g. cf. n.)の使い方、確認してますか?
脚注の使い方に悩む
公私を含め、今までは、記録を取るときに「『例えば』の時は『ex.』、『つまり』の時は、『→』」などと独自のルールで使用していた。特に、脚注(ex.新しい単語が出た場合の意味)等を「すぐ側に書いていいのか」「末尾に書くべきなのか」悩みながら書いていたのも事実だった。
そこで、後で記録を読み返したときに、正式な使い方に則っておくと、読み返したときに「復習しやすい」と思い、まずは、何気なく使いがちな「略語の正式な使い方」について調べてみた。
参考サイト
- 心理学の論文・レジュメで使えそうな略語(e.x. cf. i.e.など)… - 人力検索はてな
- 略語の説明が掲載されているはてな人力検索。
- http://d.hatena.ne.jp/satomilogy/20090217/1234887577
- 上記の中からいくつか例を示して説明している。
略語の使用例を整理
使用頻度が高い略語は「例えば」「つまり」「参考」「脚注」の4点である。このため、この4つの略語の対応表を次に示す。使用例はRubyに関連した文章にするため「はじめてのRuby」に掲載されている文書を引用させてもらった。*1
意味 | 略語 | 使用例 |
---|---|---|
例えば | e.g. , ex. | Rubyコマンドの実行の際、「--」でオプションの終了を明示する。(e.g. プログラム名が「-hoge.rb」等の場合は、「--」を付けることで実行可能。) |
つまり | i.e. | ローカル変数はスコープの狭い変数だ。(i.e.特にに理由が無い限り、ローカル変数を使用するのが良い習慣だ。) |
参考 | cf. | 否定演算子!,!=,!~ はRuby1.9系では再定義可能になった。(cf.はじめてのRuby p.110) |
脚注 | n.,fn.*2 | 条件演算子?は条件によって値を振り分けるような式を提供する。(n. Rubyのif式は値を持つため、実のところ条件演算子はif式の別の書き方に過ぎません。) |
振り返ってみて
当たり前だけど、「分かりやすい」「相手に分かる」文章を書くには、その文章で使用する語句の意味を理解して使用することが大切です。脚注については、一般的な文書の書き方に則って、ページの末尾に表示される方式で記述するようにします。
*1:はてな記法で脚注を付ける場合は、はてな記法一覧 - はてなダイアリーのヘルプを参考にした。
*2:複数がnn.と書いてあるが、そもそも「複数」とは何なのか不明。注釈が複数個ある場合なのか?
シンタックスシュガーとは?
定義*1
言語を読み書きしやすくするための、機能的には本質でない構文。それができなくても他の構文で同じことを表現できるもの。構文糖とも.
つまりどいいうこと
本当は他の構文で書くことができるけれど、視認性を高めるために、別の方法を使って記述したコードのこと。見やすさ重視ってことですね。
試しにコードを書いてみる
シンタックスシュガー21選 - critbitの日記を見て、「15 - Nested Ternary Operators(ネスト三項演算子)*2」が今調べていることに近いので、21 Ruby Tricks You Should Be Using In Your Own Codeからコードを拝借して走らせてみる*3。
qty = 1 var = qty == 0 ? 'none' : qty == 1 ? 'one' : 'many' p var #上記の式は次の式と同値である var = (qty == 0 ? 'none' :(qty == 1 ? 'one' : 'many')) p var
実行結果はこちら。
# ruby example.rb "one" "one"
シンタックスシュガーなので別の構文で記述する
上記のコードを別の構文で書き換えると次のとおり記述できる。
qty = 1 if qty == 0 then var = 'none' elsif qty == 1 then var = 'one' else var = 'many' end puts var
実行結果はこちら
# ruby ex101.rb one