Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

2009年3月27日金曜日

プロキシ環境におけるAcrobatReaderの自動アップデート機能 このエントリーを含むはてなブックマーク

本記事では、プロキシを経由してインターネットに接続している環境でAcrobatReader 8.14を起動させると、(プロキシを経由しないで)自動的にアップデートしようとしてエラーになる症状を回避する方法をまとめる。

まずバックグラウンドでwgetコマンドでadobeのサイトからダウンロードしようとするプロセスが動いているかもしれないので、killしておく。

そしてacrobat readerを起動して、「メニューバー→編集→環境設定」すると下のダイアログが現れる。「インターネット→インターネットオプション」でプロキシを設定できる。最初は「直接インターネットに接続する」が選択されていたので、「プロキシの手動設定」を選択してプロキシを入力する。

2009年3月25日水曜日

last.fmをお気に入りのプレイヤで楽しむ。 このエントリーを含むはてなブックマーク

本記事では、Ubuntuでlast.fmを自分のお気に入りのオーディオプレイヤで楽しむ方法をまとめる。

last.fmとは?

last.fmは、ストリームで配信される音楽を聞くことができる。お気に入りの曲を登録しておけば、自分の好みに合った曲が配信されるようになる。また、同じような感性を持った人とつながることもできる。

音楽を聞く方法は、Webブラウザからサイトにアクセスするか、専用のプレイヤを使って聞くである。プレイヤはapt-getでインストールできる。

$ sudo apt-get lastfm

お気に入りのオーディオプレーヤでlast.fmを聞くには

lastfmproxyを使えばお気に入りのオーディオプレーヤでlastfmを聞くことができる。lastfmproxyは名前の通り、lastfmラジオストリームのためのプロキシサーバである。インストールするには、LastFMProxyでバージョン1.3bを取ってくる。Ubuntu 8.04だとaptでインストールできるが、バージョンが低い(確か1.1)ので使えなかった。lastfmのAPIが変わったのに、1.1は古いままなのでは?とにかく、とってきたtarボールlastfmproxy-1.3b.tar.gzを展開する。

$ tar zxvf lastfmproxy-1.3b.tar.gz

次に、lastfmproxyディレクトリに移動して設定ファイルconfig.pyを編集する(詳細は、同じディレクトリにあるREADME.txtを参照のこと)。あらかじっめlast.fmで申請したアカウントとパスワードを入力する。また、プロキシ経由でインターネットに接続している場合はこのファイルでそのプロキシサーバとポート番号を設定する(ちなみに、環境変数で指定していても、ここでは設定する必要あり)。閲覧、編集するにはroot権限必要です。

# Port to listen to
listenport = 1881
bind_address = "127.0.0.1"

# Stick your last.fm username and password between the quotes below.
username = "あなたのアカウント"
password = "あなたのパスワード"

# Which theme (skin) to use
theme = "default"

# Change "useproxy" to True and set the host and port if
# you need an external proxy.
useproxy = True   # <---プロキシサーバを使っている場合は、このようにFalseをTrueにする。 
proxyhost = "使っているプロキシサーバ" 
proxyport = ポート番号 
# Set these if your proxy requires authentication. 
# Note: Only "Basic" authentication is supported. 
proxyuser = "" 
proxypass = "" 

後は、main.pyを走らせるとlastfmproxyが立ち上がる。

$./main.py &
Starting LastFMProxy 1.3b...
Connecting to last.fm server...
To tune in, point your browser to:
 http://localhost:1881/

ブラウザでhttp://localhost:1881/にアクセスして、Start Radioをクリックするとlastfm.m3uというファイルをダウンロードできる(あるいは、再生するアプリを選択して、再生しても良い)。このファイルは単に次のように書かれているだけ。後は、オーディオプレイヤーを立ち上げて、このURLを指定すれば良い(例えば、Rhythmboxでは演奏→新しいインターネットラジオ局で指定できる)。

http://localhost:1881/lastfm.mp3
ブラウザでlocalhost:1881にアクセスしたとき

ちなみに、rythmboxでは成功したけれど、audaciousではうまく再生できなかった。

ラジオを録音するには

streamripperを使います。これはaptでインストールします。単純に録音したいなら、lastfmproxyを走らせている状態で、次のコマンドを実行します。

$ streamripper  http://localhost:1881/lastfm.mp3

もちろん、細かい設定も可能です。詳細はstreamripperのman pageに書かれています。

参考サイト

/etc/defaultにあるファイルは何か? このエントリーを含むはてなブックマーク

本記事では、Ubuntuで/etc/defaultディレクトリにあるファイルたちは一体何なのか?について調べた結果をまとめる。

/usr/defaultにあるファイル

debian系のディストリビューションでは、/etc/defaultというディレクトリとその中にいくつかのファイルが置かれている。これらは、各種デーモン(ntp, klogd, apmdといったものたち)が起動する前に読み込む設定ファイルのようなものらしい。

Re: The purpose of /etc/default ?に書かれていた内容によると、/etc/init.d/foobarというスクリプトを走らせる前に、/etc/defaultディレクトリの対応するファイルを読み込む。ご存知のように各種デーモンの起動、停止などを制御するスクリプトは/etc/init.dに置かれている。

大抵ソフトをインストールしたときデーモンを有効にするか無効にするかを設定するために、設定ファイルは使われる。ただ、この設定ファイルは追加的なものでメインの設定ファイルではない。通常は/etc直下の設定ファイを読み込むが、追加でデーモンにオプションを与えて起動、停止したいときに使われる。ちなみに、(よく知らないが)cygwinの/etc/defaultとは無関係らしい。

2009年3月24日火曜日

Ubuntuでマルチディスプレイ このエントリーを含むはてなブックマーク

本記事では、Ubuntuでマルチディスプレイを設定する方法をまとめる。

マルチディスプレイ

マルチディスプレイは、複数のディスプレイにまたがってデスクトップ領域を表示させることをいいます。ラップトップをあまり持ち運ばなくてデスクトップ代わりに使っているときは、別に用意した液晶ディスプレイとキーボードをラップトップに接続してマルチディスプレイにすると、快適な作業ができます。

設定

私の使っているUbuntu 8.04では、簡単にマルチディスプレイを実現できました。設定方法を説明します。まず、別に用意した液晶ディスプレイとキーボードとマウスをラップトップに接続します。次に、Xの設定をします。設定ファイル/etc/X11/xorg.confのscreenセクションに次のdisplayサブセクションを挿入します。私は1024x768のモニタを2つ並べるので、2048x768に設定していますが、ここの部分は各自の環境に合わせて設定します。

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
        Device          "Configured Video Device"
        SubSection "Display"
                          Virtual         2048 768
        EndSubSection
EndSection

設定ファイルは、Xを再起動すれば読み込まれます(再ログインすれば良い)。そして、システム→設定→画面の解像度でスクリーンのクローン化のチェックボックスを外すと、認識されているディスプレイが表示されます。後は、ディスプレイの位置関係や、解像度などを設定すればOKです。

内臓CDドライブのない古いラップトップに最近のLinuxを入れるには このエントリーを含むはてなブックマーク

内臓CDドライブのない古いラップトップに最近のLinuxを入れるのは難しいらしい。そこで少し色々調べた結果をまとめてみる。

事情

古いパソコンでは外付けのCDあるいはDVDドライブ、USBなどから起動できない場合が多い。だから、内臓CDドライブのない古いラップトップにLinuxをインストールするときは、FDから起動してインストールすることになる。しかし、kernel2.6では、ブートイメージが大きくてFDに入りきらないため、FDからのインストールが利用できない。

どうするか?

例えば、Windowsが既にインストールされていたら、wubiというexe形式のインストーラでubuntuをインストールできる。ただ、ubuntu以外のディストリビューションではこういった方法はできない(おそらく)。

勧められないけれど、他の方法もある。まずHDDを取り出して、比較的最近のラップトップに入れてインストールする。この方法だとハードウェア構成が異なるから、元のPCにHDDを戻したら起動できなくなるとか、いくつかのデバイスが使えなくなるとか、うまくいかない場合があるらしい。

さらに別の方法は、既にLinuxがHDDにインストールされている場合に使える方法。例えば 、旧バージョンのLinuxがインストールされている場合を想定してみる(旧バージョンのものだと古いPCにもインストールできる場合がある)。そして、インストールしたいバージョンのインストールイメージvmLinuz, Initrd.imgをリポジトリから取ってくる。それらを/bootディレクトリに配置する。ブートローダにgrubを使っているならば、次のように起動時のパラメータで先ほど配置したイメージを指定するように設定ファイル/boot/grub/menu.lstを編集する(bootが別パーティションの場合)。

title CentOS (適当に名前をつける)
        root (hd0,0)
        kernel /vmlinuz ro root=LABEL=/1 rhgb quiet
        initrd /initrd.img

これで再起動すればインストーラが起動する。後は、ネットワークからインストールするとか、手持ちのDVDなどからインストールすれば良い。

参考サイト

2009年3月21日土曜日

システムの情報を取得する。 このエントリーを含むはてなブックマーク

本記事では、カーネルのバージョンなどシステムの情報を取得するコマンドunameを説明する。

書式

$ uname [オプション]

オプション

オプションは以下の通り

-a,--all
すべての情報を表示する。
-s,--kernel-name
カーネル名を表示する。
-n,--nodename
ネットワークノードのホスト名を表示する。
-r, --kernel-release
カーネルリリースを表示する。
-v, --kernel-version
カーネルバージョンを表示する。
-m, --machine
マシーンハードウェア名を表示する。
-p, --proseccor
プロセッサタイプまたはunknownを表示する。
-i, --hardware-platform
ハードウェアプラットフォームたまはunknownを表示する。
-o, --operating-system
オペレーティングシステムを表示する。
--help
unameのヘルプを表示する。
--version
unameのバージョンを表示する。

2009年3月9日月曜日

あるディレクトリ以下に対して何々する方法 このエントリーを含むはてなブックマーク

本記事では、指定したディレクトリとその子ディレクトリ以下に存在する、とあるファイルたちに対して同じ操作をするための方法をまとめる。

状況説明

どのような状況でこういった操作が必要となるか?例えば、手持ちのjpegファイルを別の場所にひとまとめにする場合である。次のような状況だとちょっと作業が大変そうに思われる。

基点になるディレクトリとして~/picturesを使っていて、その下に種類や撮影場所ごとにディレクトリを作成してjpegファイルを格納してある場合。さらに、テキストファイルなど別の種類のファイルも格納してある場合。

解決法

簡単に解決する方法としてファイルグラブを使う方法が考えられる。~/picturesの下にあるディレクトリの深さが高々2個ならば次のようにたった1行のコマンドで十分である。

$ mv ~/pictures/{,*/,*/*/}*.jpeg ~/tmp

上のコマンドの意味は、「~/picture/*.jpeg, ~/picture/*/*.jpeg, ~/picture/*/*/*.jpegを~/tmpに移動せよ」である。しかし、あらかじめディレクトリの深さの上限が分かっていない場合や調べるのが面倒な場合はどうすれば良いだろうか?私はファイルグラブで解決する方法は知らないのだが、findコマンドを使えばこれまたたった1行のコマンドで十分である。

$ find ~/picture -name '*.jpeg' -print0 | xargs -0 mv {} ~/tmp

findコマンドの詳細は本サイトの記事「findコマンドでファイルを探す」をご参照ください。このコマンドの意味は、「~/.picture以下に対して、jpegという拡張子を持ったすべてのファイルに対して、それらを~/tmpに移動させよ」である。

思ったこと

上の説明でファイルグラブによる良い方法を知らないと言ったことに関して。ネットで調べてみると「UNIXの部屋 コマンド検索: ファイルグロブ」というサイトで本記事と似たような説明があるが、ディレクトリの深さが任意の場合の方法が書かれていない。ファイルグラブによるうまい解決方法はないのだろうか?それとも、あまり知られていないだけだろうか?

/etc/hosts.allowでのサブネットマスクについて このエントリーを含むはてなブックマーク

本記事では、/etc/hosts.allowでのサブネットマスクの指定の仕方について注意事項をまとめる。

hosts.allowとは

/etc/hosts.allowは、ローカルホストへのアクセス制御を規程する設定ファイルで、/etc/hosts.denyと対になるものである。通常、/etc/hosts.denyですべてのホストからのアクセスを拒否して、/etc/hosts.allowに許可するホストを個別的に記述することが多い(設定の詳細は、本記事「SSHサーバの設定」のセキュリティの設定(Tcp wrappersを用いたアクセス制限)という節にまとめている。)。

サブネットマスクの指定方法

サブネットマスクは、ipアドレスのネットワーク部の長さを表すもので、192.168.0.0〜192.168.255.255の範囲のipアドレスは192.168.0.0/16というように表される。ちなみに、2進数で表すと次のようになる。

11000000.10101000.00000000.00000000 から 11000000.10101000.11111111.11111111 まで

16は先頭から16ビット目までがネットワーク部であることを表していて、この表記によってそのネットワークに属するすべてのホストを表すことができる。

本題の/etc/hosts.allowでのサブネットマスクの指定だが、例えばsshサービスにアクセスできるホストのipを制限する場合には次のように書けば良いのかと勘違いしていたが、間違いであることに気づいたのでメモしておく。

ssh : 192.168.0.0/16 <---誤り(と思う) 

centosで、$man hosts.allowとして確認してみたら、アクセス制御で実装されているパターンについて書かれていた。ネットマスクを使う場合:

An expression of the form ‘n.n.n.n/m.m.m.m´ is interpreted as a ‘net/mask´ pair. An IPv4 host address is matched if ‘net´ is equal to the bitwise AND of the address and the ‘mask´. For example, the net/mask pattern ‘131.155.72.0/255.255.254.0´ matches every address in the range ‘131.155.72.0´ through ‘131.155.73.255´.

ssh : 192.168.0.0/255.255.0.0

あるいは、もっと簡単な書き方もできる。

ssh : 192.168.

A string that ends with a ‘.´ character. A host address is matched if its first numeric fields match the given string. For example, the pattern ‘131.155.´ matches the address of (almost) every host on the Eindhoven University network (131.155.x.x).

2009年3月8日日曜日

yum.cronでエラー このエントリーを含むはてなブックマーク

cronでyumによる自動アップデートをさせるときに

Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

というエラーが出てうまく動かないので、その原因を調べて解決策をまとめる。

私の環境ではプロキシ経由でインターネットに接続しているのだが、 cronによって定期的に実行されるスクリプト/etc/cron.daily/yum.cronは、~/.bashrcで設定しているプロキシを読み込んでいないらしい。なので、/etc/yum.cronに直接次の行を挿入する

proxy=プロキシサーバ

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。