Oracle JDK をダウンロードするスクリプト

August 18th, 2014 by naoya | No Comments | Filed in day

Oracle JDK のアップデートがあるたびに、それぞれのサーバに手動で Oracle の JDK ダウンロードページからダウンロードするのがめんどくさいので、即興のシェルスクリプトを書いてみた。

JDK 7 および 8 の、Linux x64 版の rpm と tar.gz に対応しています。

もちろん、事前にダウンロードする際には、BCL For Java SE に同意の上、使用してください。

また、当然のことながら、Oracle JDK ダウンロードのウェブページが変わってしまった場合は動作しないので、その旨割り切ってお使い下さい。

Tags: ,

新しい Google Noto Font をインストールする

July 17th, 2014 by naoya | No Comments | Filed in day

Google、オープンソースの日中韓フォントNoto Sans CJK を無料配信。Adobe と共同開発 – Engadget Japanese のとおり新しい Google Noto CJK Font がリリースされましたね!

さっそく、homebrew-font に Pull Request を送ったので、取り込みまれているので、次のようにするばすぐにインストールすることができます。


$ brew tap caskroom/fonts
$ brew cask install font-noto-sans-japanese font-noto-sans-korean font-noto-sans-s-chinese font-noto-sans-t-chinese

さっそく、Chrome のメインフォントに設定してみましたので、しばらく使ってみようかと思います。
Linux 上でも使えるみたいなので、これは本当に素晴らしいことですね。

Tags:

Homebrew で pyenv を使っていると fontforge がインストールできない問題

June 6th, 2014 by naoya | No Comments | Filed in day

Homebrew で pyenv を使っているとき、次のように python 拡張を有効にした fontforge がインストールできません。


$ brew install --with-python fontforge

ちなみに “–with-python” を指定しないとインストールすることができますが、homebrew 経由で ricty がインストールできないので、”–with-python” は必須です。

こんなときは、pyenv を一時的に system python を使うようにしてから、インストールすると大丈夫でした。


$ cd /tmp
※ cd しなくても、忘れずに .python-version を削除しても大丈夫です
$ pyenv local system
$ brew install --with-python fontforge

ricty をインストールする場合は、手動で fontforge をインストールしなくても依存関係で自動的にインストールされます。


$ brew tap sanemat/font
$ brew install --dz ricty

–dz を指定すると、Adding straight single and double quotes to Inconsolata のフォントになるので、個人的には Inconsolata-dz の方が好みです。

さらに ricty には、powerline パッチもあてることができるのですが、2014/06/07 時点ではエラーが出てしまいます。この件は、issue をたてておきましたので、修正されるまでしばらく待ちましょう!

Tags:

Emacs on OS X Mavericks 10.9 で distnoted プロセスが暴走する問題の解決方法

June 5th, 2014 by naoya | No Comments | Filed in day

最近、どうも OS X Mavericks 10.9 で使用していると、distnoted というプロセスが CPU 使用率 100% 近くまでになってしまう現象になっていました。

ずっと、VMware Fusion の仮想サーバ 2 台ほど常時起動の環境だったので、そのせいかなと思っていましたが、どうも Emacs に原因があったようです・・・。

何とならない対策できないものかと調べたところ、emacs 24.3でdistnotedを暴走させないパッチ+inlineパッチのビルド手順です。sakito.jpの手順を修正したものです。 が見つかりました。

この手順で、早速 Emacs にパッチをあてたところ distnoted というプロセスが CPU 使用率 100% 近くまでになる現象が収まったような気がします。

これはさっそくということで、homebrew の myemacs という独自の homebrew formula を書いてみました。

公式の Emacs Formula でも同じパッチが一つあたっているようですが、独自に作ってみました。

使い方は、次のように実行するだけです。


$ brew tap n0ts/myformula
$ brew install myemacs

そうすると、~/Applications に Emacs.app と $HOMEBREW_PREFIX/bin に emacs がインストールされます。

これでしばらく常時使用して様子を見たいと思います。
何気なく、普段ずっと使っている道具の調子がおかしいときは、定期的にチェックするようにしたほうがよさそうですね。

Tags: ,

オンプレサーバで MAC アドレスを IPMI 経由で取得する方法

April 15th, 2014 by naoya | No Comments | Filed in day

オンプレサーバの場合、OS をインストールするには、事前に MAC アドレスが分からないと、自動的にネットワークインストールして OS をインストールすることができません。

今まで使ったことがある二つのメーカーについて、IPMI 経由でオンボード NIC の MAC アドレスを取得する方法を紹介したいと思います。そのため、事前い IPMI の IP アドレスなどを設定しておくことが前提条件となります。

SuperMicro

公式情報は、こちらにあります。


$ ipmitool -I lanplus -H -U raw 0x30 0x21
※パスワードを入力します

ここで表示された 10 バイト取得した値のうち、最後から 6 byte までは LAN1(eth0) の MAC Address、LAN2(eth1) は最後のバイトに 1 足したものになります。

HP ProLiant

HTTP で XML 情報を取得すると、その中に含まれています。EC2 みたいで、便利ですね!


$ curl https:///xmldata?item=all -k

で出力される XML の中の MACADDR 要素が MAC アドレスとなります。

Tags:

OS X で Shift+Space で入力ソースを切り替える方法

April 10th, 2014 by naoya | No Comments | Filed in day

OS X で、Shift+Space を英語・日本語を切り替えるために KeyRemap4MacBook の Shift + Space to KANA/EISUU (toggle) を有効にしてしたのですが、最近しばらくすると急にこの設定がきかなくなって困っていました。この現象は、Google Groups に報告しておいたのですが、どうも原因が分からなかったので、システム設定標準の Select next source in Input menu のショートカットをなんとか切り替えることができないか調査してみました。

通常のキーボードの設定画面では、Shift+Space を押しても設定をすることができません。
そこで、直接設定ファイルを書き換えることでうまく行きました。

XCode をインストールしている環境でターミナルより、次のコマンドで設定ファイルを開きます。

$ open ~/Library/Preferences/com.apple.symbolichotkeys.plist

そうすると、plist 設定ファイルの編集画面を開きますので、AppleSymbolicHotKeys 以下の、次の2つの設定を編集します。

1. 61 > value > parameters > item 2 の値を 1572864 を Shift のキーコードである 131072 に変更します
2. 60 > value > parameters > item 2 の値を 1048576 を Option-Shift キーの値である 655360 に変更します

上記の二つの設定を編集したあと plist ファイルを保存して、再起動すると、キーボード設定画面が次のようになって、Shift + Space で入力リソースを切り替えることができます。

keyboard

この設定、個人的にはかなり必須なので、Boxen で自動化したいところなので、あわせて試してみたいと思います。

Tags:

RHEL / Centos / Ubuntu のセキュリティ情報のまとめ

April 8th, 2014 by naoya | No Comments | Filed in day

日頃から業務などで利用している Linux のディストリビューションのセキュリティ情報は、日々チェックして、日々運用していく必要がありますよね。

なので、日頃から使っている各 Linux のディストリビューションのセキュリティ情報の入手先をまとめてみました。

RHEL

それぞれのバージョンごとに公式ページに Errata として情報がとまってますが、RSS はないようですね。

RHEL5 系

RHEL6 系

CentOS

CentOS は、基本的に RHEL ベースなので、RHEL のアップデート情報元にセキュリティアップデートなどが行われているはずです。
セキュリティアップデートなどの情報は、CentOS-announce mailing list に投稿されているので、このメーリングリストを購読すればいいでしょう。

あと、非公式だとは思いますが、LWN.net にも CentOS security alerts が公開されていました。

その他、yum コマンドでも、次のようにすると確認することができます。

$ sudo yum install yum-security
$ sudo yum list-security
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: ftp.kddilabs.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
epel/updateinfo | 509 kB 00:00
FEDORA-EPEL-2014-0446 bugfix PyYAML-3.09-10.el5.x86_64
FEDORA-EPEL-2014-0792 bugfix glances-1.7.4-1.el5.noarch
FEDORA-EPEL-2014-0531 security libyaml-0.1.2-6.el5.x86_64
list-security done

yum-security も便利ですよね。

Ubuntu

Ubuntu は、公式ページに Ubuntu Security notices が公開されています。
リリースごとにフィルターでもできて、RSS もあって便利です。
例えば、12.04 LTS (precise) は、ここになります。

Amazon Linux AMI

最後に最近 Amazon Linux AMI を使っている人も多いかと思いますが、Amazon Linux AMI Security Center に情報がまとまっています。

普段の運用の中でセキュリティアップデートは、かなり重要な業務になるので、怠らずにしっかりとやりたいですよね。

Tags: ,

Windows 8.1 で、Windows + l(ロック画面)を無効にする方法

April 7th, 2014 by naoya | No Comments | Filed in day

VMware Fusion 上などで、Windows 8.1 を使っているとき、自動ログインして使っているのですが、自動ログインを有効にしても Windows + l のロック画面のショートカットが有効のままで困っていました。

具体的には、自動ログインを有効にするときは自動ログインユーザのパスワードなしにするのですが、Windows + l でロック画面を表示してしまうと、ログインができなく、再起動する必要がありました。

なんとかならないものかと思ってすこし調べたところ、Disable Windows L Keyboard Shortcut In Windows picture2 が見つかりました。

この方法は、レジストリを変更するため、自己責任の上行って下さい。

1. regedit を起動します
2. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System キーを作成します
3. DisableLockWorkstation という DWORD 32-bit を作成してから、0 から 1 に値を変更します

これだけで、Windows(Command) + l のショートカットが無効になります。
これで、すこし Windows 8.1 の使い心地が改善されました。

この設定をエクスポートしたレジストリファイルを書いておきますね。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableLockWorkstation"=dword:00000001

Tags:

Software Collections for CentOS-6

February 24th, 2014 by naoya | No Comments | Filed in day

Software Collections for CentOS-6 がリリースされました。

Software Collections というのは、RHEL で提供されている追加コンポーネントです。

この追加コンポーネントには、次のものが含まれています。

  • Perl 5.16.4
  • PHP 5.4.14
  • Python 2.7
  • Python 3.3
  • Ruby 1.9.3
  • MariaDB 5.5
  • MySQL 5.5
  • PostgreSQL 9.2
  • Node.js 0.10

Node.js のみ、テクニカルプレビューのようです。

これらが CentOS 6 で利用できるようになったようです。比較的バージョンの新しいものがあるので、自分でパッケージをビルドする必要がないので、便利ですね!

インストール方法は、とても簡単です。まず、Yum リポジトリを追加します。

$ sudo yum install centos-release-SCL

これをインストールすると、/etc/yum.repos.d/CentOS-SCL.repo ができます。

試しに Ruby 1.9.3 をインストールしてみましょう。

$ sudo yum install ruby193

そうすると、/opt/rh/ruby193 以下に Ruby 1.9.3 がインストールされます。
/opt/rh/ruby193/enable を読み込むと、PATH などを書き換えることができます。

$ source /opt/rh/ruby193/enable
$ ruby --version
ruby 1.9.3p448 (2013-06-27) [x86_64-linux]

手っ取り早く、上記のものを使いたいときは、とても便利ですね。
Ruby に限っては、2 系を追加してほしいところですね。

Tags:

Chef のパッケージをまとめてダウンロードする

February 11th, 2014 by naoya | No Comments | Filed in day

Chef のパッケージをインストールするとき、通常は次の方法が公式サイトにて紹介されています。

$ curl -L https://www.opscode.com/chef/install.sh | sudo bash

たしかにこの方法でインストールすることが出来るんですが、パッケージのあるサイトが海外の S3 のため、非常に遅いので、まとめてダウンロードするプログラムをさくっと書いてみました。

プログラムは、次のような感じです。
例えば、EL5 用のパッケージをダウンロードしたいときには、次のコマンドを実行するだけです。

$ ruby get_packages.rb el5

これで実行カレントディレクトリにパッケージがまとめてダウンロードされます。ただし、ベータ版や i386 パッケージは除外しています。
あとは、このパッケージをまとめて yum リポジトリとかにすると便利ですよね。


#
# get_packages.rb
#
require 'net/http'
require 'rexml/document'

case ARGV[0]
when 'el5', 'el6', 'deb'
package = ARGV[0]
else
p 'Usage: get_packages.rb '
exit 1
end

baseurl = 'opscode-omnibus-packages.s3.amazonaws.com'

# get the XML data as a string
xml_data = Net::HTTP.get_response(URI.parse('http://' + baseurl)).body
doc = REXML::Document.new(xml_data)

Net::HTTP.start(baseurl) do |http|
doc.elements.each('ListBucketResult/Contents/Key') do |v|
# x86_64 packages only, exclude rc git packages
next if v.text =~ /^.*(git|rc|alpha|beta).*$/
case package
when 'el5'
next if v.text !~ /^.*.el5.x86_64.rpm$/
when 'el6'
next if v.text !~ /^.*.el6.x86_64.rpm$/
when 'deb'
next if v.text !~ /^.*amd64.deb$/
end

package_name = File.basename(v.text)
next if File.exist?(package_name)

puts 'Downloading ' + v.text
resp = http.get('/' + v.text)
open(package_name, 'wb') { |file|
file.write(resp.body)
}
end
end
puts "Done"

Tags: ,