«前の日(05-26) 最新 次の日(05-28)» 追記

meta's blog - The Power To Serve

筆者について

FreeBSDを通じてOSSにささかな貢献を。

OSS活動をご支援いただける方を募集しています


2011-05-27 lv の唯一にして最大の less に劣る点を修正する俺得パッチ

lv が唯一 less に劣る点を修正する俺得パッチ

lv が唯一 less に劣る点は "lv /" とかやるとディレクトリを無理矢理表示してしまう点です。

$ lv /
^B^@^@^@^L^@^D^A.^@^@^@^B^@^@^@^L^@^D^B..^@^@^C^@^@^@^P^@^D^E.snap^@^@^@^@<^C^@
^L^@^D^Cdev^@^@^\^F^@^L^@^D^Cext^@^E^@^L^@^D^Ctmp^@^@<98>^C^@^L^@^D^Cusr^@^@\^@
^@^L^@^D^Cvar^@^@À^E^@^P^@^D^Dhome^@ÿÿÿ^@¸^@^@^L^@^D^Cetc^@^@x^F^@^P^@^D^Ddist^@
ÿÿÿ^@p^A^@^L^@^D^Cbin^@^@ô^C^@^P^@^D^Dboot^@ÿÿÿ^@Ô^F^@^L^@^D^Clib^@^@Ì^A^@^P^@^D
^Glibexec^@^@(^B^@^P^@^D^Emedia^@ÿÿ^@<84>^B^@^L^@^D^Cmnt^@^@d^E^@^P^@^D^Dproc^@ÿ
ÿÿ^@à^B^@^P^@^D^Frescue^@ÿ^@¬^D^@^P^@^D^Droot^@ÿÿÿ^@0^G^@^P^@^D^Dsbin^@ÿÿÿ^D^@^@^@^L^@
^Csys^@^E^@^@^@.profile^@À^_^E^F^@^@^@^P^F.cshrc^@ÿ^G^@^@^@^T   COPYRIGHT^@^_^@
^@^@^P^@
^Fcompat^@ÿ     ^@^@^@<88>^Gentropy^@^@<8C>^G^@x^@^D^Dclub^@ÿÿÿ^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

これが less だとちゃんとエラー表示をしてくれます。

$ less /
/ is a directory

致命的というわけでもないのですが気にくわないのでパッチを作成しました。

これでディレクトリを引数に与えても大丈夫!

$ mylv /
/ is a directory

grep モードにも対応しています。

$ mylv -g PATTERN /usr/local /usr /
/usr/local is a directory
/usr is a directory
/ is a directory

オリジナルの lv だとこんな事になってました。

$ lv -g profile /
s.profile.cshrcÿCOPYRIGHT

grep モードで複数のファイルを引数として与えたとき、最後のファイルが存在しないファイルだと Segmenation Fault で落ちるのはオリジナルのバグのようです。

$ lv -g PATTERN /tmp/nonexistence /nonexistence
(snip)
Segmentation fault: 11 (core dumped)

存在しないファイルが最後でなければ落ちません。

$ lv -g PATTERN /etc/profile /etc/ntp.conf /nonexistence
/tmp/nonexistence: No such file or directory
/nonexistence: No such file or directory

2013-05-27 End of Life

FreeBSD ports の Ruby のデフォルトバージョンが 1.9 に

2013年6月以降 Ruby 1.8 系の一切のサポートが打ち切られるということで、FreeBSD ports の Ruby のデフォルトバージョンも 1.9系にアップデートされました

アップデート方法は ports/UPDATING に書いてある通り portmaster, portupgrade, pkg と、使っているツールに合わせて以下のように。事情があって1.8系に留まりたい場合は /etc/make.conf に "DEFAULT_RUBY_VER=1.8" と書いておけば OK ですが、早めに1.9に移行しましょう。

20130527:
  AFFECTS: users of lang/ruby18
  AUTHOR: swills@FreeBSD.org

  The default ruby version has been updated from 1.8 to 1.9. You'll need to
  rebuild all ports that depend on ruby:

  # portmaster -r lang/ruby19
    or
  # portupgrade -fr lang/ruby19
    or
  # pkg set -o lang/ruby18:lang/ruby19
  # pkg install -fR lang/ruby19

  If you wish to keep the 1.8 version as default, add the following lines
  to your /etc/make.conf file:

  #
  # Keep ruby 1.8 as default version.
  #
  RUBY_DEFAULT_VER=1.8

Ruby 1.8系の EOL まで1週間を切ってからようやく Ruby 1.9系がデフォルトになったので、いまさらという感じがするかもしれませんが、実は2年前の2011年8月にいちど 1.9 がデフォルトになっています。

ところが、1.9で動作しない ports が大量にあるなどトラブルが多く、すぐに revert されてしまいました。それから2年弱、慎重を期して作業が続けられたため、今回のアップデートでは平穏無事に1.8から1.9へ移行できるはずです。

2年前に Ruby 1.9 をデフォルトにするというのは結構がんばってる方だったと思うのですが、トラブルを引き起こしてしまったため、ギリギリまで慎重に作業した結果、この時期になってしまったようです(たぶん)。