- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
#contents
*OpenBSD 3.6がリリースされた。 [#u56ec6cf]
**3.5→3.6 移行手順の概要 [#ybd2bd24]
詳細を書いているときりがないので、ざっくりと。~
詳細はリンクを参照のこと
-COLOR(blue){一般的な手順} ... [[Upgrade Mini-FAQ:http://www.openbsd.org/faq/upgrade-minifaq.html]]参
-COLOR(green){3.5→3.6に固有の手順} ... [[Upgrade Mini-FAQ:http://www.openbsd.org/faq/upgrade-minifaq.html]]もしくは
[[Upgrade Guide:http://www.openbsd.org/faq/upgrade36.html]]参
-適用順序
--COLOR(blue){ソースツリーの更新}
--COLOR(green){各サービス固有のuid, gid登録}~
沢山あるので、まとめてやっとくと楽。
diff -u /etc/master.passwd /usr/src/etc/master.passwd > passwd.diff
duff -u /etc/group /usr/src/etc/group > group.diff
で、差分作っといて、vipwやvi groupで取り込んだ。
--COLOR(blue){カーネルのコンパイル、リブート}~
カーネルが3.6、ユーザランドが3.5の状にするとpfが効かなくなるので、
ファイアウォール等はこの間の運用に注意。
--COLOR(green){libcライブラリの再構築}
--COLOR(blue){ユーザランドのコンパイル}
--COLOR(blue){/etc, /dev以下の修正}
--COLOR(green){ptyデバイスのマイナー番号変更}
--COLOR(green){古い/usr/bin/cksumの消去}
--pfアンカーの変更 ... /etc/pf.conf中に該当箇所がないので、実施せず。
*OpenBSD 3.7がリリースされた [#z1d827e1]
今回はgccがバージョンアップしてたりして面倒臭いので、バイナリアップデートした。
*Tips [#j2cd2eaa]
**/etc, /dev対策 [#g5d52734]
Upgrade Mini-FAQとか見ると/etcの変更は「手でやれ」って書いてある。~
たしかにその通りなのだが、何も考えずにやると作業大変だわ、訳分からなくなるわで、絶対失敗(とまではいかなくても何かしらの漏れがでたり)すると思う。
その対策としては、portsにあるmergemasterというツールを使うのが
定番なようだが、私は以下のような方法でやっている。
-新しいetcの中身をソースツリーから/altrootの下に展開
--cd /usr/src/etc && DESTDIR=/altroot make distribution-etc-root-var
-この/altroot/etcと現在使用している/etcとの中身の差分を取る
--diff -ru /etc /altroot/etc > /etc.diff
-このetc.diffの容を見ながら、各ファイルについて次の3つのうちのどれかを行う。
--古いファイルをそのまま使う
--新しいファイルをそのまま使う
--新しいファイルと古いファイルの容を編集してマージする
-各ファイルの差分を見ながら、コピーや編集を行うことになるので、screenなどをれておくと便利。
**古いshlib対策 [#h625450f]
Upgrade後に、以前使ってた有ライブラリが残っていて、
消していいものかどうか悩むことがある。~
あと、ports/packagesとかについては、最初に部消しとけってことになってるが、
常時稼働してるサーバでは、最初に部消しといて、Upgrade後に
マターリ置き換え、ってのもなかなか難しい。
なので、OS本体のrebuild後に、運用しながらports/packagesとかを少しずつ再rebuild
していくということになるが、
その間はやっぱり古い有ライブラリが必要だったりする。
+古くて、消してもよさげなライブラリは、とりあえず/usr/local/libに移動し、
reboot。
ls -lt /usr/lib
mv /usr/lib/libhoge.so.X.Y ... /usr/local/lib
shutdown -r now
+ports/packagesとか俺buildの作りなおしや整理
+どこからも使われていない有ライブラリの検出~
例えばこんなスクリプトを使う
#!/bin/sh
if [ X$1 = X ]
then
set /
fi
find "$@" \
\! -fstype local -prune \
-o \
-type f \
\( -perm -100 -o -perm -010 -o -perm -001 \) \
-print \
| xargs file \
| awk '
BEGIN {FS=":"}
/ELF 32-bit LSB executable.*dynamically linked/ {print $1}' \
| xargs ldd \
| awk '
/^\/.*:$/ {fname = $1; sub(/:/, "", fname)}
$3 == "rlib" {print fname, $5}'
ファイルシステム体の実行ファイルに対してlddした一覧が得られる。~
で、「このファイル一覧中にはないけど、実際のファイルシステム中に
存在する有ライブラリ」っていうのが、どこからも使われてないやつなので、
消してもOK。
**不要なファイルを検出する。 [#k678ef84]
Makefile
VER = 37
TARBALLS = \
/root/dist/base$(VER).tgz \
/root/dist/comp$(VER).tgz \
/root/dist/game$(VER).tgz \
/root/dist/man$(VER).tgz \
/root/dist/misc$(VER).tgz
all: removable_candidates
removable_candidates: tarfiles realfiles
comm -23 realfiles tarfiles > removable_candidates
tarfiles: $(TARBALLS)
for tgz in $(TARBALLS) ;\
do \
echo Extracting $$tgz ... >&2 ;\
tar tvzf $$tgz ;\
done \
| awk '/^-/ { fname = $$9; sub(/^\.\//, "/", fname); print fname }' \
| sort > tarfiles
realfiles:
find / -type f -print | grep -v -f excepts | sort > realfiles
clean:
rm -f removable_candidates realfiles tarfiles *~ *.bak *.BAK
~
excepts
^/\.cshrc
^/\.profile
^/boot
^/bsd
^/bsd\.rd
^/etc/
^/home/
^/kern/
^/obsd
^/proc/
^/root/
^/usr/local/
^/usr/obj/
^/usr/ports/
^/usr/src/
^/var/backups/
^/var/cron/
^/var/db/
^/var/empty/etc/localtime
^/var/log/
^/var/mail/
^/var/named/
^/var/run/
^/var/www/conf/
^/var/www/htdocs/
^/var/www/logs/
----
[[FrontPage]]