Upgrading debian squeeze -> wheezy

1年以上放置してたけどしょうもない作業ログでお茶を濁す。

基本、公式ガイドに従うだけ。
Debian 7.0 (wheezy) リリースノート (64 ビット PC 用) > 第4章 Debian 6.0 (squeeze) からのアップグレード

詳しいのでトラブルシュートもできるし、実際やることは少ない。実質 4.3 と 4.4 だけやればいよい。APT のソースを更新して apt-get update と apt-get dist-upgrade を実行すれば終わり。

$ lsb_release -d
Description: Debian GNU/Linux 7.1 (wheezy)

その後、問題があれば依存性の壊れた非公式パッケージを整理したり /etc 以下を調整したりするだけ。

うちの環境では http が見えなくなったので suphp.conf だけ直した。仕様変更なのかデフォルトの設定が変わったのかは知らない。

/etc/suphp/suphp.conf の以下の行を修正

docroot=/var/www:${HOME}/public_html:...  ; apacheからphpを使いうるパスを全て列挙
min_uid=33  ; apacheからphpを動かすユーザの中で最小のuid (www-data)
min_gid=33  ; 同じくgid

動いた。

Debianでコマンドからメールを送る設定

コマンドでメールを使えるようにする設定。調べてみるとmailやsendmailなどのコマンドの使い方は色々出てくるが、SMTPの設定が中々出なかったので覚書。因みにSMTPを設定しなくてもUNIX系標準のメール機能は有効で、インターネット経由のEメール配送チェインに流すためにこの設定を行う。

Debian(squeeze)のMTAはデフォルトでexim4で、TUIから設定できる。
詳しくは参考サイト http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?Debian/Exim4

$ sudo dpkg-reconfigure exim4-config

使い方

次のコマンドにメールを送信できる。標準入力が本文。

$ mail -s '件名' example@example.com

補足

実質的にはローカルにメールサーバを建てるのと同じで、MTAは何でもいい。

  • Postfix: 柔軟で簡単で近代的な感じで情報も多い。
  • exim: よく知らない。単一バイナリらしい。
  • qmail: セキュアで単純で高速。機能拡張は面倒。
  • sendmail: 超有名な古いMTAで設定がやたら柔軟で難解。
  • 他は全く知らない

DebianにDropboxを入れる

検証環境:debian-squeeze(amd64), nautilus-dropbox_0.6.8_amd64.deb
予想対象:linux, nautilus-dropbox

公式dropboxクライアントのLinux版(GUIのみ)はUbuntu,Fedora,Archive版を配布してる。今使ってるDebianはGNOME仕様なのでUbuntu版をそのまま使えそうな気がする。ビルドするのも若干面倒なのでとりあえず試してみる。

$ sudo dpkg -i nautilus-dropbox_0.6.8_amd64.deb
...
dpkg: dependency problems prevent configuration of nautilus-dropbox:
 nautilus-dropbox depends on libnautilus-extension1 (>= 1:2.22.2); however:
  Version of libnautilus-extension1 on system is 2.30.1-2squeeze1.
...

libnautilus-extension1のバージョンが2.30.1-2squeeze1で1:2.22.2以上じゃないと言われるが、どう見ても2.30.1>=2.22.2で大丈夫そうに見える。頭の1:が悪さしてる気がするので消してみる。

# dropboxというディレクトリに展開して再アーカイブする
$ dpkg -x nautilus-dropbox_0.6.8_amd64.deb dropbox
$ dpkg -e nautilus-dropbox_0.6.8_amd64.deb dropbox/DEBIAN
$ nano dropbox/DEBIAN/control    # お好きなエディタで

# 次のように修正(libnautilus-extension1の"1:"を消す)
Depends: libatk1.0-0 (>= 1.20.0), libc6 (>= 2.4), libcairo2 (>= 1.6.0), libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.12.0), libnautilus-extension1 (>= 2.22.2), libpango1.0-0 (>= 1.20.1), python (>= 2.5), python-gtk2 (>= 2.12)

$ dpkg -b dropbox
# dropbox.debが作成される
$ sudo dpkg -i dropbox.deb

入った。

短時間で複数台のマシンにLinuxを入れる

研究室で8台のマシンにDebianを入れることになったので、少し考えてみた。ネットワークブートを利用したネットインストール環境を素早く構築する方法を、建てるサーバを減らしてwwwへの通し方も含めてまとめる。(4 Steps)

Step 0. 必要なもの

  • 一台のホスト用Linux(LiveCDでもいい)←文中のコマンドはこのroot
  • ホストに2口のNICが無ければBBルータ
  • インストールしたいマシン(PXEに対応)
  • 全てのマシンをつなげるLAN

Step 1. インストール用ネットワークを構築する

ネットワークの設定をする。eth0がWAN(あるいは上流LAN)、eth1がLAN(192.168.123.1/24)。BBルータを使うときは設定不要で、ホストはクライアントと同様に並べる。

   eth0 +------+ eth1    (LAN) 192.168.123
<-------| Host |------+---------+---------+----...
  (WAN) +------+      |         |         |
                   +------+  +------+  +------+
                   |Client|  |Client|  |Client|        画像作るの面倒だし...
                   +------+  +------+  +------+
$ grep "^[^#]" /etc/network.interfaces
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
allow hotplug eth1
iface eth1 inet static
  address 192.168.123.1
  netmask 255.255.255.0
$ ifup eth1    # LAN
...
$ ifconfig eth1    # だいぶ省略
eth1      inet addr:192.168.123.1  Bcast:192.168.123.255  Mask:255.255.255.0

Step 2. インストーラを取得する

インストーラのtarbalのURLはDebianのサイト(netinst)などから「netboot.tar.gz」 という名前のファイルを探せば良い。gtk/netboot.tar.gzを選べば容量は大きいがgraphicalでマウスが使えるインストーラになる。

$ wget d-i.debian.org/daily-images/i386/daily/netboot/netboot.tar.gz
...
$ tar xzf netboot.tar.gz -C /srv/tftp/    # どこでもいい
$ ls -F /srv/tftp
debian-installer/  pxelinux.0@  pxelinux.cfg@  version.info
# pxelinux.0 が初期ブートイメージ(ブートローダ的な働き)

Debian netinst CUI
CUI installer

Debian netinst GTK
GTK installer

Step 3. PXEサーバを建てる

PXEのための2つのサーバ(DHCP,TFTP)と、www(HTTP)を提供する必要がある。以下で使用するソフトがもし使えなかったり設定に手間取るようならすぐ別の方法を考えてもいい。

dnsmasqはDNSフォワーダ/DHCPサーバでサブシステムとしてTFTPも提供できる。ここではDNSは必要ないが、簡単な設定でサブシステムと連携できるので採用した。Debianではdnsmasqの代わりにtftpd-hpaとdhcp3-serverを使うこともでき、これらには公式のガイドがある(というよりこの代わりにdnsmasqを使おうとした)。

$ apt-get install dnsmasq
...
$ grep "^[^#]" /etc/dnsmasq.conf
interface=eth1            # BBルータの場合はeth0でいい
dhcp-range=192.168.123.50,192.168.123.150,12h
                          # LAN(BBルータの場合はサブネット内で被らないIP)
#dhcp-option=3,1.2.3.4    # BBルータの場合はそのIPを指定
dhcp-boot=pxelinux.0      # /srv/tftp/以下のブートイメージのファイル名前
enable-tftp
tftp-root=/srv/tftp       # netboot.tar.gzを展開した場所
$ /etc/init.d/dnsmasq restart
Restarting DNS forwarder and DHCP server: dnsmasq.

squid3はウェブキャッシュプロキシで、wwwを提供できる。BBルータの場合はそっち経由でWANに行けるため不要。キャッシュが利くと嬉しいが、パッケージはでかいファイルが多いのであんまり期待できないかも。

$ apt-get install squid3
...
$ grep "^[^#]" /etc/squid3/squid.conf    # ほぼデフォルト、重要な箇所をハイライトした
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 192.168.123.0/24
...
http_access allow localnet
...
http_port 3128                  # 覚えにくかったら8080でもおk
...
cache_dir /var/spool/squid3 100 16 256
...
$ /etc/init.d/squid3 restart    # インスト時に勝手に起動されてた
...

squidの代わりにNAPT(IP masquerade)の設定をする場合(BBルータの動作)

# これらの設定は全て一時的なもので再起動時に元に戻る
$ iptables -t nat -F    # 既存の設定を消す
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sysctl -w net.ipv4.ip_forward=1
$ sysctl -w net.ipv4.ip_dynaddr=1    # omake for DHCP-WAN

Step 4. インストールする

Installer boot menu
Installer boot menu

大抵のマシンでは起動直後にF12やEscなど(画面にガイドが出る)を押して Network boot に入る。 Installer boot menu (右図)が表示されない場合はPXEサーバの設定を見直す。 Install を押すとStep 1.の画像ようなインストーラが起動し、他の方法と同様にインストールできる。

squidを使用しているときは HTTP proxy に http://192.168.123.1:3128 を指定する。

補足

BBルータで構成したLANではDHCPサーバが2台あることになるが、 Network boot では大抵不適切なDHCP応答を無視しれくれるので起動できる。更にサブネットを合わせているのでルータをデフォルトゲートウェイに指定すればWANにも届く。

更に多くの台数にインストールする場合は preseed を利用したインストールの自動化することも考えてたほうがいい。