log:virt-install

  • 大分昔にしたpythonのアップグレードができてなかった
  • Kernel Configuration弄るの忘れてた

gentooでvirt-installを実行しようとしたところ、

$ sudo virt-install --prompt
Traceback (most recent call last):
  File "/usr/bin/virt-install-2.7", line 33, in <module>
    import urlgrabber.progress as progress
ImportError: No module named urlgrabber.progress
$ qcheck urlgrabber
Checking dev-python/urlgrabber-3.9.1-r1 ...
  * 25 out of 25 files are good
$ qlist urlgrabber
/usr/bin/urlgrabber-2.6
/usr/bin/urlgrabber
/usr/lib/python2.6/site-packages/urlgrabber-3.9.1-py2.6.egg-info
/usr/lib/python2.6/site-packages/urlgrabber/mirror.py
/usr/lib/python2.6/site-packages/urlgrabber/progress.py
/usr/lib/python2.6/site-packages/urlgrabber/grabber.py
/usr/lib/python2.6/site-packages/urlgrabber/__init__.py
/usr/lib/python2.6/site-packages/urlgrabber/byterange.py
/usr/share/doc/urlgrabber-3.9.1/TODO
/usr/share/doc/urlgrabber-3.9.1/LICENSE
/usr/share/doc/urlgrabber-3.9.1/README
/usr/share/doc/urlgrabber-3.9.1/ChangeLog
/usr/share/doc/urlgrabber-3.9.1-r1/TODO.bz2
/usr/share/doc/urlgrabber-3.9.1-r1/README.bz2
/usr/share/doc/urlgrabber-3.9.1-r1/ChangeLog.bz2
$ head -n1 /usr/bin/virt-install-2.7
#!/usr/bin/python2.7 -tt
$ python -V
Python 2.7.2

モジュールが無いのかと思ったけど、python2.7を使ってるのに2.6にしか入ってないということらしい。
pythonのバージョン変えてからモジュールの更新とかしてなかったのかも(かなり昔だったような…)
名前的にそれらしいもの(python-updater)があったのでとりあえず実行してみる。

$ sudo emerge python-updater
...
$ sudo python-updater
... # 時間かかる
$ sudo virt-install --prompt
ERROR    Virtual network 'default' has not been started.
$ sudo virsh net-start default
エラー: ネットワーク default の起動に失敗しました
エラー: ブリッジ'virbr0' を作成できません: パッケージはインストールされていません
$ qcheck bridge-utils
Checking net-misc/bridge-utils-1.4 ...
  * 25 out of 25 files are good

python の問題は解決した。
続いて Kernel Configuration から Bridge を有効にして reboot したら動いたので終わり。

Symbol: BRIDGE
Type  : tristate
Prompt: 802.1d Ethernet Bridging
  Defined at net/bridge/Kconfig:5
  Depends on: NET [=y] && (IPV6 [=n] || IPV6 [=n]=n)
  Location:
    -> Networking support (NET [=y])
      -> Networking options
  Selects: LLC [=m] && STP [=m]

Gentooシステムの応急処置

なにかしらsystem系に問題が起きたときはemergeできなくなるケースが多い。例えばビルド系のbinutils,gcc,glibcの他、coreutils,libtool,sedあたりも致命的。
そんなときはビルド済みパッケージ。普段からbuildpkgしていれば過去のビルドを使えるが、そんなことしてなかったりするので配布されているものを使う。障害の原因のパッケージを究明する方法はここでは言及しない。
但し、電源を落としても問題が無く、他のレスキューシステム(デュアルブートやLiveCD)が使えるなら当然その方法を取った方がいい。

# 初めて使うときはディレクトリがないかも
$ sudo mkdir /usr/portage/packages
# app-portage/portage-utilsが有効な場合
$ sudo QMERGE=1 qmerge -K <pkgname>

入ってなかったり古かったりしてqmergeが使えないときは、

$ sudoedit /etc/make.conf
# このURLはportage-utilsのバイナリに内蔵されているものと同じ
PORTAGE_BINHOST=http://tinderbox.dev.gentoo.org/default-linux/x86/
$ sudo emerge -gK <atom>

更に致命的なのはパッケージの配布に使われてるbzip2が壊れたとき。tarはもう知らない。

# 別のシステムでトランスコード
$ bzip2 -cd bzip2.tbz2|gzip > bzip2.tgz
# 対象のシステムに転送したのち
$ sudo tar -xvzpf bzip2.tgz -C /
# ※危険(いい方法あれば教えて)

emerge dos2unix unix2dos blocking

またかよ( ゚д゚)
別に普段使わんツールやから消しちゃってもいいんやけどなぁ・・・
因みにdos2unix,unix2dosはファイルの改行コードを変換するツールです。

$ emerge -pvuD world
...
[ebuild     U ] app-misc/realpath-1.15-r1 [1.15] USE="nls" 0 kB
[ebuild     U ] app-text/dos2unix-5.1 [3.1-r2] USE="nls%*" 66 kB
[blocks B     ] >=app-text/dos2unix-5 (">=app-text/dos2unix-5" is blocking app-text/unix2dos-2.2-r1)
[blocks B     ] app-text/unix2dos ("app-text/unix2dos" is blocking app-text/dos2unix-5.1)

Total: 2 packages (2 upgrades), Size of downloads: 66 kB
Conflict: 2 blocks (2 unsatisfied)
...
$ qlist dos2unix
/usr/bin/dos2unix
/usr/bin/mac2unix
/usr/share/man/man1/dos2unix.1.bz2
/usr/share/man/man1/mac2unix.1.bz2
$ qlist unix2dos
/usr/bin/unix2dos
/usr/share/man/man1/unix2dos.1.bz2
$ sudo emerge -C unix2dos
...
$ sudo emerge -avuD world
...y
$ qlist dos2unix|grep /usr/bin
/usr/bin/dos2unix
/usr/bin/unix2dos
/usr/bin/unix2mac
/usr/bin/mac2unix

まー多分dos2unixに統合されたとかそんなんでしょう。ってことでunix2dosを消して更新したら案の定。まあそうそう使う機会ないけどな。
楽だからsambaでやり取りしたファイルの都合合わせるとき一気に変換したりするのに欲しくなる。emacsとかviとかリッチな環境だと簡単に出来たりするけど、どうも一気にやろうとするとsedとかawkとかで意外と書きにくい。特に改行コード混ざってる時とかは意外と面倒だったりするw

emerge samba blocking

$ emrege -puD world
...
[ebuild  N    ] sys-libs/tdb-1.2.1  USE="python -static-libs -tdbtest -tools"
[ebuild  N    ] sys-libs/talloc-2.0.1-r1  USE="-compat -doc -static-libs -swig"
[ebuild     U ] net-fs/samba-3.4.6 [3.0.37] USE="client%* netapi%* server%* smbclient%* -addns% -aio% -avahi% -cluster% -ldb% -quota% -smbsharemodes%"
[blocks b     ] <net-fs/samba-3.3 ("<net-fs/samba-3.3" is blocking sys-libs/tdb-1.2.1, sys-libs/talloc-2.0.1-r1)

またか、以前mktempとかe2fsprogsとかでもあったけど、バージョンアップ前のブロッキングなので消してやる。もう慣れただけど最初ぶつかった時は困ったなあw

$ sudo emerge -C samba
...
$ emerge -puD samba
...
[ebuild  N    ] dev-libs/iniparser-3.0b-r1
[ebuild  N    ] app-text/build-docbook-catalog-1.4
[ebuild  N    ] app-text/docbook-xsl-stylesheets-1.75.2
[ebuild  N    ] sys-libs/talloc-2.0.1-r1  USE="-compat -doc -static-libs -swig"
[ebuild  N    ] dev-libs/libgpg-error-1.7  USE="nls -common-lisp"
[ebuild  N    ] dev-libs/libgcrypt-1.4.5
[ebuild  N    ] dev-libs/libxslt-1.1.26  USE="crypt python -debug"
[ebuild  N    ] sys-libs/tdb-1.2.1  USE="python -static-libs -tdbtest -tools"
[ebuild  N    ] net-fs/samba-3.4.6  USE="acl client ldap netapi pam readline server smbclient -addns -ads -aio -avahi -caps -cluster -cups -debug -doc -examples -fam -ldb -quota -smbsharemodes -swat -syslog -winbind"
$ sudo emerge -uD samba
...

そんなことより昨日/homeのファイルシステムが壊れるどころかオールゼロ化されてた、原因はメモリ不良で以前兆候があったかから割とすぐ特定できた。このブログはDB上にデータがあるらしく無事やったけど、ユーザー設定が全部消えたorzバックアップって大事だね!