Hatena::ブログ(Diary)

vivid memo このページをアンテナに追加 RSSフィード

vivid code というサイトのメモ代わりに記事を書いていました。
現在ははてなブログに移行し、「ひだまりソケットは壊れない」 というブログで記事を書いています。 はてな id も id:nobuoka に変更しました。

2012-03-10

Aspire One 722 に Ubuntu 11.10 をインストール

Acer の Aspire One 722 に Ubuntu 11.10 をインストールしたときのメモ。 64 ビット版をインストール。 いくつか問題があったが、以下の設定にすることで快適に使えるようになった。

GNOME Shell のインストール

Ubuntu 11.10 標準の Unity は動きがもっさりしているので GNOME Shell をインストール。

$ sudo apt-get install gnome-shell
$ sudo apt-get install gnome-tweak-tool

「ATI/AMD プロプラエタリ FGLRX グラフィックドライバ」 を使っていると、GNOME Shell の画面が乱れるため、プロプラエタリのグラフィックドライバはインストールしない。

GNOME Shell Extension としては、とりあえず以下のものをインストール。

  • Windows Alt Tab : Alt + Tab でウィンドウ切り替えできるように (デフォルトではアプリケーション切り替え)
  • Alternative Status Menu : 電源オフとハイバネートの追加

無線 LAN 接続後にフリーズしてしまう問題

どうやら無線 LAN ドライバとイーサネットドライバが競合するようで、無線 LAN への接続後にフリーズしてしまうことがある。 自動的に無線 LAN に接続する場合は、ログイン直後にフリーズしてしまう。 とりあえずの回避策としては 「BIOS でネットワークブートを有効にして、HDD での起動よりもネットワークブートの優先順位を高くする」 というもの。 これで一応回避できている模様。

参考

Gtk のパッケージの不足

(gvim:5194): Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap",

GUI アプリケーションを起動すると上記のような警告が発生することがある。 Gtk のパッケージが不足していることが原因らしいので、足りないパッケージをインストール。

$ sudo apt-get install gtk2-engines-pixbuf

Alt + F2 のコマンド実効プロンプトがデフォルトで無効になっている

システム設定を開き、キーボード > ショートカット > システム で "コマンド実行プロンプト" のショートカットキーとして Alt + F2 を割り当てる。

2011-11-03

Ubuntu 11.10 で全てのユーザーを一般ユーザー (admin グループに属してない) にしてしまった場合の対処法

Ubuntu では、特権を得るために原則として root ユーザーになることはせず、管理者ユーザー (admin グループに所属しているユーザー) が sudo コマンド (グラフィカルプログラムの場合は gksudo など) を使うことで特権を得ます (Ubuntu document - RootSudo)。 そのため、ユーザーが所属するグループを変更するときには注意しなければいけません。 間違って全てのユーザーを admin グループから取り除いてしまう (全てのユーザーが管理者ユーザーではなくなってしまう) と少し復旧に手間がかかってしまいます。

ここでは、間違って全てのユーザーを admin グループから除いてしまった場合の復旧方法について述べます。

Ubuntu でユーザーをグループに追加するときにしてはいけないこと

間違って全てのユーザーを admin グループから除く、なんてことは GUI のみの操作をしていれば (多分) できないと思うのですが、コマンド操作をしているとついやってしまう失敗ではないでしょうか。

上記の記事に書いているように、usermod コマンドを使用してユーザーの所属グループを変更するときに、元々所属しているグループを記述し忘れてしまうという失敗はやりがちです。 この失敗を元々 admin グループに属しているユーザーに対してしてしまうと (そしてそのユーザーが唯一の管理者ユーザーだと) 管理者ユーザーが居ないという状況になってしまいます。 理由はわかりませんが、ログアウトするまでは sudo 権限は残っているようなので (グループ情報が読み込まれるのがログイン時だから? sudo 権限が付与されるのがログイン時だから?) admin グループから除いてしまってもログアウトするまでに気づけば直せるのですが、一度ログアウトしてしまうと誰も sudo 権限を持っておらず復旧が困難になります。

sudo 権限がないと、グループを変更しようとしても以下のようになって変更できないのです。

~$ sudo usermod -g usergroup -G usergroup,admin username
username is not in the sudoers file

Ubuntu 11.10 だと recovery menu のシングルユーザーモードから復旧できない?

上に挙げた 2 つの記事では、復旧方法として recovery menu のシングルユーザーモードでログインして usermod コマンドを使うという方法を書いています。 (/etc/group ファイルを変更してもよいでしょう。)

また、Ubuntu 11.10 のドキュメントの 「I forgot my password!」 にはパスワードを忘れた際の対処法として、同様のシングルユーザーモードでのログインによる復旧方法が書かれています。

しかしながら、私の環境で試してみたところ recovery menu のシングルユーザーモードでログインしても、usermod コマンドがうまくいきませんでした。 (以下のように /etc/passwd がロックできなかったと言われた。)

~# usermod -g usergroup -G usergroup,admin username
usermod: cannot lock /etc/passwd; try again later

また /etc/group ファイルの編集もできませんでした (Read-only だと言われる)。 chmod コマンドを使っても以下のようにエラーが発生。

~# chmod 0666 /etc/group
chmod: changing permissions of `/etc/group' : Read-only file system

パスワードの変更も同様で、以下のようなエラーが発生してできませんでした。 Ubuntu 11.10 のヘルプドキュメントに書かれている方法なので私が何か間違っているのかもしれませんが。。

~# passwd username
passwd: Authentication token manipulation error
passwd: password unchanged


(追記) コメントで教えていただいたのですが、recovery mode で起動する方法で復旧できるようです。 私はまだ試していませんが、必要でしたらこの記事のコメントを参照して試してください。

解決策

そんなわけで recovery mode を使う方法では上手くいかなかったので、復旧方法として別の方法をとりました。 大まかな方法としては、Live Disk で Linux をオンメモリで動かし、HDD に書かれているファイルの内容を変更する、というものです。 以下に簡単に手順を書いておきます。

  1. Live Disk で Ubuntu 11.10 起動
  2. 以下のようなコマンドで HDD のファイルシステムをマウントする (/dev/sda1 は環境依存なので適当に変更のこと)
    ~$ sudo mkdir /mnt/myhdd
    ~$ sudo mount /dev/sda1 /mnt/myhdd
  3. ファイルの中身を確認しマウントしたデバイスが正しい HDD かどうかチェックする
  4. 以下のコマンドでもともとの /etc/group にあたるファイルを開く (vi じゃなくても使いやすいエディタを使ってください)
    ~$ sudo vi /mnt/myhdd/etc/group
  5. 以下のように admin グループについて書かれた行にユーザーを追加
    admin:x:118:username
  6. 変更を保存して再起動して、HDD 上の Ubuntu 11.10 を起動

これでうまくいくはずです。

Ubuntu の admin グループと sudo 権限の関係

今日の朝書いた記事 「Ubuntu 11.10 で全てのユーザーを一般ユーザー (admin グループに属してない) にしてしまった場合の対処法」 で書いたように、Ubuntu では admin グループに属しているユーザーが管理者ユーザーになります。 また、どのユーザーに sudo 権限を与えるかは /etc/sudoers というファイルで指定されます。

では admin グループ (管理者ユーザー) と sudo 権限 (/etc/sudoers の内容) はどういう関係になっているのでしょうか? /etc/sudoers の中を覗いてみると、以下のような 2 行がありました。

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

つまり、admin グループのメンバーに sudo 権限を付与するように /etc/sudoers が記述されている、というわけです。

参考

2010-12-08

Ubuntu に RVM をインストールして Ruby のバージョン管理を行う

Ruby には多くの実装があります。 リファレンス実装 (CRuby) としては Ruby 1.8 系 (MRI) と 1.9 系 (YARV) の 2 つが現役で使われていますし、Java で書かれた実装である JRuby や .Net で動く IronRuby などの別実装もあります。 最近では Rubinius が注目されているように思います。

このように多くの Ruby 実装があるわけですが、それらをまとめて管理するアプリケーションとして Ruby Version Manager (RVM) があります。 ここでは Ubuntu 10.04 に RVM をインストールして、実際に使う方法を述べます。

解説する内容

Ubuntu 10.04 に RVM をユーザー権限 *1 でインストールし、実際に使うところまで解説します。 詳しい説明は RVM の公式サイト をご覧ください。

ここでは Ubuntu での話を書いていますが、その他の Linux ディストリビューションでも大差ないと思います。

RVM のインストール

まずは RVM のインストールを行います。 下記コマンドを実行するだけで自動的にインターネット上からソースファイルを取ってきて、コンパイル、インストールをしてくれます。 当然ながら curl コマンドがインストールされている必要があります。

$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-latest )

$HOME/.rvm というディレクトリが新たに作られます。 この中に RVM 自体や、RVM によってインストールする Ruby 実装がインストールされます。 上記コマンドで RVM のインストールが完了したら、次にパスを通します。 シェルの環境変数設定ファイル (Ubuntu の場合は ~/.bashrc *2。 多くの Linux ディストリビューションの bash では ~/.bash_profile) の最後に次の行を追加します。

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

これでインストールは完了です。 ログインしなおせば (またはコマンド source ~/.profile でシェルの環境変数設定ファイルを読み込みなおせば) rvm コマンドが使用できます。

インストールの確認

ちゃんとインストールできたかどうか確認するには、次のコマンドを入力してください。

$ type rvm | head -n1

次のように出力されれば大丈夫です。

rvm is a function

各種 Ruby 実装のインストール

次に、RVM を使って各種 Ruby 実装をインストールします。 ここでは Ruby 1.9.2 (YARV) と Ruby 1.8.7 (MRI) をインストールします。 その他の Ruby 実装のインストール方法は RVM の公式ページに実装一覧があります のでそちらをご覧ください。

依存するパッケージのインストール

Ruby そのものをインストールする前に、依存するパッケージを apt-get でインストールします。 依存するパッケージは、rvm notes コマンドで確認できます。 rvm notes コマンドを使うと、私の環境では以下のコマンドを入力すれば依存するパッケージを全てインストールできると書かれていたので、下記コマンドを実行しました。

$ sudo aptitude install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev

環境によって必要なパッケージは違うと思いますので、各自 rvm notes コマンドを使用して確認してください。

Ruby 1.8.7 のインストール

依存するパッケージのインストールが終わったので、Ruby 1.8.7 をインストールします。

$ rvm install 1.8.7

上記コマンドだけで、ソースファイルの取得からコンパイル、インストールまで行ってくれます。

Ruby 1.9.2 のインストール

次に Ruby 1.9.2 をインストールします。

$ rvm install 1.9.2

こちらもこれだけで終わりです。

切り替え

さて、Ruby の実装をインストールしたので、次に Ruby のバージョンの切り替え方法を述べます。 単に rvm use コマンドの引数として使用するバージョンを渡してやれば、そのバージョンの Ruby が使用できます。

$ rvm use 1.8.7
Using /home/username/.rvm/gems/ruby-1.8.7-p302
$ ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]

$ rvm use 1.9.2
Using /home/username/.rvm/gems/ruby-1.9.2-p0
$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]

ruby コマンドだけでなく、gem コマンドや irb コマンドなども指定したバージョンのものに切り替わります。

デフォルトのバージョンの指定をして、その実装に切り替えるには次のようにします。

$ rvm --default use 1.9.2

デフォルトバージョンの指定をすれば、次からは次のようにしてデフォルトバージョンに切り替えられます。

$ rvm use default

また、RVM でインストールした Ruby を使わず、システムにインストールされている Ruby に切り替える場合は次のコマンドを使います。

$ rvm reset

実際に使ってみる

$ rvm use 1.9.2

RVM でインストールした Ruby 1.9.2 に切り替えます。 gem の環境情報を表示してみます。

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/username/.rvm/gems/ruby-1.9.2-p0
  - RUBY EXECUTABLE: /home/username/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
  - EXECUTABLE DIRECTORY: /home/username/.rvm/gems/ruby-1.9.2-p0/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  (以下略)

irb ももちろん使えます。

$ irb
ruby-1.9.2-p0 > 1+2
 => 3
ruby-1.9.2-p0 > exit

というわけでここで解説は終了です。

付録 : openssl のエラーが出てしまう場合

システムの openssl を認識せず、RVM でインストールした Ruby 実装で openssl モジュールが使えないことがあります。 (require "openssl" に対して下記エラーが発生する。)

error loading "/.../.../XXX.rb": no such file to load -- openssl. skipping...

この場合は openssl を RVM でインストールし、その openssl を指定して Ruby 実装をインストールしなおすことで問題を回避できます。 (インストールした Ruby 実装を一度アンインストールする必要があります。)

以下の例では、RVM でインストールした Ruby 1.9.2 で openssl が使えなかった場合に、openssl が使えるように Ruby 1.9.2 を再インストールする流れを示しています。

$ rvm package install openssl
$ rvm remove 1.9.2
$ rvm install 1.9.2 --with-openssl-dir=$HOME/.rvm/usr

詳しくは RVM 公式サイトの openssl のページ をご覧ください。

*1:root 権限ではない。 システム全体にインストールする場合はまた少し違う方法でインストールしなければならない。 詳しくは RVM の公式サイトにて。

*2:~/.profile に書くべきかと最初は思ってましたが、~/.profile から ~/.bashrc を読んでいるので ~/.bashrc に書くのが良さそうです

2010-09-23

Apache 2 で SuexecUserGroup ディレクティブを使うとエラーが発生する問題

問題

Apache 2 の設定ファイルに SuexecUserGroup ディレクティブを使用するように記述し、Apache を再起動すると次のようなエラーメッセージが表示されるというもの。

username@hostname:~$ sudo service apache2 restart

* Restarting web server apache2

Syntax error on line 6 of /etc/apache2/sites-enabled/000-default:

Invalid command 'SuexecUserGroup', perhaps misspelled or defined by a module not included in the server configuration

[fail]

実行環境は以下の通りです。

  • OS : Ubuntu 10.04 (Lucid Lynx), 64-bit, Desktop 版
  • Apache : Apache 2.2, Ubuntu の apt-get にて apache2 パッケージを選択してインストール

解決方法

このエラーが発生するのは、Ubuntu の apt-get で apache2 パッケージをインストールしただけでは suexec モジュールがインストールされないためです。 よって、suexec モジュールをインストールする必要があります。 suexec モジュールは apache2-suexec パッケージで提供されています。

$ sudo apt-get install apache2-suexec

suexec モジュールをインストールした後、suexec モジュールを有効にします。 モジュールの有効化や無効化に関しては ubuntu(Debian系Linux)のApache2.2の設定管理 を参照してください。

$ sudo a2enmod suexec

最後に Apache を再起動します。

$ sudo service apache2 restart

これで SuexecUserGroup ディレクトリが使えるようになります。

2010-05-28

Ubuntu 10.04 Lucid Lynx に pLaTeX をインストール (ptexlive を使用)

現在のところ Ubuntu 10.04 では dvipsk-ja というパッケージが依存関係の問題により apt-get でインストールできません。 このパッケージは日本語対応の dvips のインストールに必要で、これがインストールできないと pLaTeX から DVI ファイルを作った後 PostScript ファイル経由の PDF 作成ができません。

そんなわけで、apt-get で TeX 環境を作るのではなく、ptexlive を使って日本語 TeX 環境を構築したのでその手法をメモしておきます。

(この記事の最後にちょこっと書いていますが、Ubuntu 10.04 でも dvipsk-ja がインストールできるリポジトリが公開されていますので、そちらを使用してもいいかと思います。)

全体的な流れ

大まかな流れは以下のとおりです。

  1. 必要なパッケージを apt-get でインストールする
  2. TeX Live をインストール
  3. ptexlive をインストール

基本的には ptexlive Wiki の ReadMe に書いてあるとおりです。

必要なパッケージのインストール

まずは必要なパッケージを apt-get でインストールします。 Ubuntu 10.04 Desktop 版にもともとインストールされているパッケージは書いていません。 以下が必要なパッケージですので、apt-get でインストールしてください。

  • bison
  • flex
  • g++
  • patch
  • xz-utils
  • libxt-dev
  • libxaw7-dev
  • libfontconfig1-dev
  • cmap-adobe-japan1
  • cmap-adobe-japan2
  • gs-cjk-resource
  • poppler-data

また、以下の 2 つのパッケージがないと make 時に止まってしまうという情報を頂きましたので、以下のパッケージもインストールしておくと良いと思います。

  • ttf-sazanami-gothic
  • ttf-sazanami-mincho

TeX Live 2009 のインストール

ftp://tug.org/historic/systems/texlive/2009 (または http://ctan.binkerton.com/systems/texlive/Images/) から texlive2009-20091107.iso.xz (1.4GB) をダウンロードします。 このファイルを xz-utils (unxz コマンド) で解凍し (GUI 上でファイルを右クリックでも解凍可)、ISO ファイルを取り出します。

ISO ファイルを /mnt/texlive2009 あたりにでもマウントして、マウントした場所の中で install-tl ファイルを実行します。 マウント先のディレクトリの作成、マウント、マウント先へ移動、インストールの実行までのコマンドは以下のようになります。

$ sudo mkdir /mnt/texlive2009
$ sudo mount -o loop ./texlive2009-20091107.iso /mnt/texlive2009
$ cd /mnt/texlive2009
$ sudo ./install-tl

"install-tl" ファイルを実行すると、どのようなアクションを行うか聴かれますので、"I" コマンドを選んで /usr/local/texlive/2009 (デフォルトの位置) にすべてのパッケージをインストールします。

ptexlive のインストール

http://tutimura.ath.cx/~nob/tex/ptexlive/ から ptexlive-20100322.tar.gz (1.4 MB) をダウンロードしてきます。 ホームディレクトリに ptexlive というディレクトリを作成し *1、そこにダウンロードしてきたファイルを置くとします。

以下のコマンドで、ダウンロードしたファイルを展開し、できたディレクトリに移動します。

$ cd ~/ptexlive
$ gzip -cd ptexlive-20100322.tar.gz | tar xvf -
$ cd ptexlive-20100322

次に、インストール時の設定用ファイルを作成し、編集します。

$ cp ptexlive.sample ../ptexlive.cfg$ gedit ../ptexlive.cfg *2

基本的にはデフォルトのままで、ISO ファイルのマウント先を実際のマウント先のパスに変更し、CONFIG_SHELL の行のコメントアウトを外す *3 だけで構いません。

...
ISO_DIR=/mnt/texlive2009
...
export CONFIG_SHELL=$BASH
...

あとはビルドし、インストールします。

$ make all3
$ sudo make install$ make distclean *4

パスを通す

最後にパスを通します。 ptexlive 2009 のインストール先ディレクトリは /usr/local/texlive/p2009 で、パスを通すべき場所は /usr/local/texlive/p2009/bin/arch です。 (arch の部分は環境によって変化する。)

全ユーザでパスを通す場合、/etc/profile の最後尾に以下の 2 行を追加します *5

...
PATH=$PATH:/usr/local/texlive/p2009/bin/arch
export PATH

使い方とか色々

これでインストールが終了しました。 platex コマンドで日本語 LaTeX を DVI に変換、pdvips コマンドで DVI ファイルを PS ファイルに変換、ps2pdf コマンドで PS ファイルを PDF ファイルに変換できます。

ps2pdf コマンドで PDF に変換する際のフォントの設定は [TeX][Ubuntu] pLaTeX のフォント設定 という記事で書いた方法で可能です。

Ubuntu 10.04 でインストール可能な dvipsk-ja パッケージ

ptexlive とは全然関係ないですが、Ubuntu 10.04 でもインストールが可能なように 依存関係の問題を解消した dvipsk-ja パッケージ が Mitsuya Shibata 氏により公開されているようです。

このパッケージを使用すれば Ubuntu 9.10 以前と同じ方法で pLaTeX が使用できるようになると思います。

cf: pTeX / pLaTeX のインストール - KUEE Wiki

*1:どこでもいいんですけど説明の便宜上

*2:テキストエディタは gedit じゃなくても vi なり emacs なり好きなものを使用してください

*3:Ubuntu ではこれをしないとビルド中にエラーが発生する

*4:作業領域の削除

*5:申し訳ありません。 本来は "PATH=$PATH:/usr/local/..." としなければいけないところが "PATH=PATH:/usr/local/..." となってしまっていました。 修正しました。 [2010-08-31]