- PacketFabric流
- PacketFabric’s WAY
- PacketFabric流とは、PacketFabricのスタッフ・エンジニアによる
ネットワーク・ソリューション等に関する情報配信メディアです。
Slackwareをアップグレードする話
2015年12月25日
思わずクレイジーケンバンドなど歌いつつ、世間の年末クリスマス気分なんか気にしないのがインターナップ流です。そう決めました。なので今回はSlackwareのアップグレードのお話。
秋葉原にかつてあった素敵ショップ、Laser5に通いつめていた皆さんならSlackwareや往年のJEパッケージとかのお話も懐かしく思い浮かばれる事でしょうが、Slackwareは今や14.1ですし、いや14.1出てから結構日もたちましたけど、ちょいと頑張ればDockerだって動いちゃう(これは寧ろSlackbuild Projectのおかげか)現役のdistroですから、Slackwareを使っている方も結構いらっしゃるかと思います。いや居て欲しいところです。「あのBSDライクな感じがたまらない」「シンプルでよい」「systemdなんて大嫌い!! なんちゃって」「GRUBもいいけどliloもね」ていう方々を具体的には想定しており、hp2133, Thinkpad X60, X200s などにSlackware-Current入れて使ってる人が対象です。居るかなあ。
Slackwareは、sourceからビルドがやっぱり基本
Slackwareを使っていて何が面白いといって、だいたいのインストールが
$./configure
$make
#make install
#ldconfig
ていうあたりじゃないかな、と思います。前gccでこれやった時は./configureの結果見て別のlib落としてまた引っかかって、という依存関係の再帰ループを含めて2日くらいかかりました。大変面白い勉強にはなりましたが。
そんな「依存関係は./configureの結果から自分で調べて自分で解決するものだ」的発想に基づくSlackwareではありますが、これをずっとやってると/usr/lib と /usr/local/lib (lib64の場合もあります) が段々把握でき なくなるくらい大量に溜まっていって何がどうなってるのか分かりづらくなるので、パッケージがあるならそっちで済まそう、ていう意識になります。ちなみにこれが発展したのがSlackBuild Project だと理解しています。
素直にDebianにすればええやん、とか誘惑は多いですが、Slackwareを使い続けるのがいいんです。なので頑張ってみます。
Slackwareのパッケージ更新ツール、upgradepkg
SlackBuildなり、セキュリティの更新なり(MLに入るか、lwn.netとかこまめにチェックするのがよいです)バージョンやCURRENTパッケージの更新の際、distroに付属しているツールupgradepkg(とinstallpkg)を使います。
#upgradepkg --install-new
とかすれば即インストールなんですが、インストール後にパッケージの依存関係で引っかかる事もあるかと思うので、段々面倒になってslackware-currentをそのまま動作させることになるのも心情かと思います(特にDesktopとして利用している場合)。currentの更新とかはついつい、
#upgradepkg --install-new ./*/*t?z
で済ませちゃいますね。
…はい、私もこれで大失敗した人間です。ちゃんとマニュアルとかREADME読めよ、ていう話かもしれません。
アップグレードの場合に気をつけること
というわけで、SlackwareのアップグレードやCURRENTのアップデートをする際の注意点などを。
!! glibcは先にアップデートする !!
glibcのアップデートが入る場合に備える必要があります。glibcのアップデートがある時に、
#upgradepkg --install-new ./*/*t?z
とかやると悲惨な目にあいます。アップデートされた/bin のバイナリたちが「アップデートされたglibcのsoが無い」と騒ぎ出すため、結局復旧用ディスクのお世話になる破目に陥るわけです。いやー焦りましたねえあの時は。
なので、まずは、glibc関連を先に入れてあげる必要があります。こんな1行で済みます。
#for i in $(find ./a/ -name "*glibc*t?z") ; do upgradepkg $i ; done
これが済んだら、あとはワイルドカードで大丈夫です。
#upgradepkg --install-new ./*/*t?z
!! liloを忘れない !!
GRUBの場合もそうかな?SlackwareのGRUBは使ったことないのでわかりませんけど、標準のliloについては、kernelが更新された場合に必ず実行する必要があります。これを忘れて再起動すると、起動イメージが読み込めなくて起動不能に陥り、復旧用ディスクのお世話になるわけです。いやーこれも焦りました。失敗しすぎですね。
#/sbin/lilo
!! .newファイルが曲者 !!
Slackwareのパッケージをインストールすると標準の設定ファイルごとインストールされるんですが、すでにカスタマイズした設定ファイルがある場合、設定ファイルを上書きするのではなく.newというsuffixをつけた新しい名前のファイルができます。なんで新しい設定項目とかがある場合など、毎回、どの設定ファイルが更新されて新しいファイルができたのかを確認する必要があります。findとか使えば簡単ですね。
#find ./etc/ -name "*\.new"
確認はすぐできるので、例えば見つけた.newファイルをそのまま上書きすることも、
#for i in $(find ./etc/ -name "*\.new") ; do \ # mv $i $(echo $i|sed -s "s/\.new$//g") ; done
可能ではありますが、こういう事をすると、以下のファイルが存在していた場合とても悲惨な目にあいます。
/etc/group.new
/etc/passwd.new
/etc/shadow.new
/etc/ssh/sshd_config.new
/etc/wpa_supplicant.conf.new
rootのパスワードがいきなり真っ白になったり、sshd_configの場合は突然アクセスできなくなったり、wpa_supplicantなら無線LANが突然使えなくなります。とても怖いですね。なので、上書きする前にこういう危ないファイルは.newファイルができても消しておく作業が必要になります。
#rm /etc/group.new
#rm /etc/passwd.new
#rm /etc/shadow.new
#rm /etc/gshadow.new
#rm /etc/ssh/sshd_config.new
#rm /etc/wpa_supplicant.conf.new
結局再起動?
.newファイルを綺麗にすると、だいたい綺麗になってアップグレード・アップデートは完了しますが、やはり再起動する必要はどこかで出てくるものです。(4系は大丈夫とか、modprobeもあるんじゃないかとか、細かいツッコミはお待ちしています)
例えば、何回かアップデートを繰り返してるとなぜかUSBのブロックデバイスを認識しなくなったりします。モジュール再起動などで対応できるんじゃないかとか思いますが、モジュール探したりするのが面倒なので再起動で済ませます(試してるのノートPCだし)。
#reboot -n
こうやって、コマンドをまとめたshファイルを用意してcronで自動更新とかができます。まあcurrentなどはそもそも「安定」では無い んですが、どうです、Debianの apt-get update ; upgrade ; dist-upgrade とそれに続く dpkg 地獄と比べてもそんなに面倒ないと思います。かなり主観は入ってますが。
というわけで、一度シンプルかつ強力なdistroである、Slackwareを試してみるのもいかがでしょうか?
- 最近の記事
-
-
- 2024年7月12日
- コンピュータはどう動くのか、或いは、この世の大概の悪の原因 Do you know how your computer really works, or “The Root of Almost All Evil?”
-
- 2023年5月25日
- ローカルブレイクアウトしたのにSaaSは遅いまま…Unitas Networkの出番です
-
- 2022年6月30日
- エッジコンピューティング v.s. クラウドコンピューティング ~鍵を握るのはネットワークエッジ~
-
- 2021年6月17日
- 昨今のネットワークエッジとINAPのインテリジェント・ルーティング
-
- 2021年3月16日
- Kubernetes Cluster HA構成 後編「クラスターの作成と検証」
-