<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ダメ出し日記 &#187; Solaris</title>
	<atom:link href="http://www.sfo.jp/blog/archives/category/software/solaris/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sfo.jp/blog</link>
	<description>自称・独立&#38;OSS系(?) SE、さとうふみやすの日記。OSS テクノロジ(株)に勤務。</description>
	<lastBuildDate>Fri, 23 Oct 2009 08:10:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Solaris 10: Kerberos 5 ヘッダー &amp; ライブラリ</title>
		<link>http://www.sfo.jp/blog/archives/2008/06/solaris10-kerberos5.html</link>
		<comments>http://www.sfo.jp/blog/archives/2008/06/solaris10-kerberos5.html#comments</comments>
		<pubDate>Tue, 17 Jun 2008 02:23:57 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Solaris]]></category>
		<category><![CDATA[ダメ出し]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2008/06/solaris10-kerberos5.html</guid>
		<description><![CDATA[
Solaris 10 の
パッチ 120011-14 (SPARC), 120012-14 (i386) で、
付属の MIT Kerberos 5 にヘッダーファイル (krb5.h など) が追加された。
これで自 [...]]]></description>
			<content:encoded><![CDATA[<p>
Solaris 10 の
パッチ <a href="http://sunsolve.sun.com/search/document.do?assetkey=1-21-120011-14-1">120011-14 (SPARC)</a>, <a href="http://sunsolve.sun.com/search/document.do?assetkey=1-21-120012-14-1">120012-14 (i386)</a> で、
付属の MIT Kerberos 5 にヘッダーファイル (<code>krb5.h</code> など) が追加された。
これで自前でコンパイルしていた MIT Kerberos 5 パッケージが不要になったけど、
移行はどうやろうかなぁ…。
</p>

<p><pre class="terminal"><code>$ <kbd>uname -a</kbd>
SunOS sword 5.10 Generic<em>120012-14 i86pc i386 i86pc
$ <kbd>ls -l /usr/include/kerberos5</kbd>
計 242
-rw-r--r--   1 root     bin         2782  8月  9日 2007年 com</em>err.h
-rw-r--r--   1 root     bin       105188  8月  9日 2007年 krb5.h
-rw-r--r--   1 root     bin         1113  1月 22日 2005年 mit-sipb-copyright.h
-rw-r--r--   1 root     bin         3199  1月 22日 2005年 mit_copyright.h
</code></pre>
<p>
ところでこのパッチ、
lofs(7FS) を利用していると、
以下のようになってパッチ適用に失敗する:
</p>
<pre class="terminal"><code># /usr/local/sbin/pca -i 120012
<var>省略</var>
Checking patches that you specified for installation.
Done!
mount: Mount point /var/run/.patchSafeMode/root/home/fumiyas does not exist.
Mount operation failed - /sbin/mount -F lofs -o nosub  /home/fumiyas /var/run/.patchSafeMode/root/home/fumiyas
Could not successfully create environment for 'deferred activation patching'.
Failed (exit code 1)
</code></pre>
<p>
lofs(7FS) なファイルシステムをアウンマウントすれば回避できる<del>けど、
ゾーンを ZFS に構築しているとかなり面倒</del>。
参考:
<a href="http://www.mydatabasesupport.com/forums/solaris/346058-zonepath-svm-soft-partition.html">http://www.mydatabasesupport.com/forums/solaris/346058-zonepath-svm-soft-partition.html</a>
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2008/06/solaris10-kerberos5.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl: mktemp(1) クローン</title>
		<link>http://www.sfo.jp/blog/archives/2007/07/perl-mktemp1.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/07/perl-mktemp1.html#comments</comments>
		<pubDate>Tue, 10 Jul 2007 16:07:08 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/07/perl-mktemp1.html</guid>
		<description><![CDATA[
仕事で久しぶりの Solaris 8 環境と格闘中。
3年ぶりかな?
クリーンインストールしたので、
コンパイラがない、
wget(1) もない、
tar(1) はバグってて展開できないアーカイブがある
(それらしい
 [...]]]></description>
			<content:encoded><![CDATA[<p>
仕事で久しぶりの Solaris 8 環境と格闘中。
3年ぶりかな?
クリーンインストールしたので、
コンパイラがない、
<code>wget</code>(1) もない、
<code>tar</code>(1) はバグってて展開できないアーカイブがある
(<a href="http://sunsolve.sun.com/search/document.do?assetkey=1-21-110951-07-1">それらしい
パッチがある</a>が、無償ではダウンロードできないみたい)
など、非常に使いにくい。
それに比べれば、Solaris 10 はずっとずっと使いやすいなぁ。
</p>

<p><p>
<code>mktemp</code>(1) も含まれていないので、
Samba のコンパイルで
<code><code>make test_pam_modules test_nss_modules</code></code>
が実行できない。
仕方ないので Perl で実装して、自作ツールチェインに同梱することにした。
ちなみに <a href="http://search.cpan.org/dist/ppt/">Perl Power Tools</a>
にも含まれていなかった。
</p>
<pre class="code"><code>#!/usr/bin/perl -w</p>

<h1>#</h1>

<h2>Perl-version mktemp(1) command</h2>

<h2>Copyright (c) 2007 SATOH Fumiyasu @ OSS Technology, Co., Japan</h2>

<h2>&lt;<a href="http://www.osstech.co.jp/">http://www.osstech.co.jp/</a>&gt;</h2>

<h1>#</h1>

<h2>License: GNU General Public License version 3</h2>

<h2>Date: 2007-07-11, since 2007-07-11</h2>

<h1>#</h1>

<p>use strict;</p>

<h1>use warnings;</h1>

<p>use Getopt::Long;
use POSIX;
use IO::File;
umask(0077);
my @seed = ('0'..'9', 'a'..'z', 'A'..'Z');
my $flag<em>dir = undef;
my $flag</em>quiet = undef;
my $flag<em>unsafe = undef;
my $flag</em>generate<em>path = undef;
my $prefix</em>dir = undef;
my $template = 'tmp.XXXXXXXXXX';
my $cmd<em>name = $0;
$cmd</em>name =~ s#^.*/##;
my $cmd_usage = "Usage: $cmd_name [-dptu] [-p DIRECTORY] [TEMPLATE]\n";
Getopt::Long::Configure('bundling');
Getopt::Long::Configure('no_ignore_case');
Getopt::Long::Configure('no_auto_abbrev');
GetOptions(
'd' =&gt;   \$flag_dir,
'q' =&gt;   \$flag_quiet,
't' =&gt;   \$flag_generate_path,
'u' =&gt;   \$flag_unsafe,
'p=s' =&gt; sub {
$prefix_dir = $_[1];
$flag_generate_path = 1;
}
) || die "$cmd_usage";
if ($flag_quiet) {
$SIG{'<strong>DIE</strong>'} = sub {
exit(1);
}
}
if ($flag_unsafe) {
die "$cmd_name: -u option is not supported yet\n";
}
if (@ARGV == 1) {
$template = $ARGV[0];
}
elsif (@ARGV &gt; 1) {
die "$cmd_name: too many argument\n";
}
if ($flag_generate_path) {
if ($template =~ m#/#) {
die "$cmd_name: template must not contain directory separators in -t mode\n";
}
if (defined($ENV{'TMPDIR'})) {
$template = "$ENV{'TMPDIR'}/$template";
}
elsif (defined($prefix_dir)) {
$template = "$prefix_dir/$template";
}
else {
$template = "/tmp/$template";
}
}
$template =~ s#//+#/#g;
$template =~ s/(X+)$//;
my $seed_n = defined($1) ? length($1) : 0;
my $try_max = $seed_n * 10;
for (my $try = 0; $try &lt;= $try_max; $try++) {
my $temp = $template;
for (my $n = 0; $n &lt; $seed_n; $n++) {
$temp .= $seed[int(rand(@seed))];
}
if ($flag_dir) {
if (mkdir($temp, 0700)) {
print "$temp\n";
exit(0);
}
elsif ($! != POSIX::EEXIST || $try == $try_max) {
die "$cmd_name: cannot create temporary directory $temp: $!\n";
}
}
else {
my $fh = IO::File-&gt;new($temp, O_RDWR|O_CREAT|O_EXCL, 0600);
if (defined($fh)) {
print "$temp\n";
exit(0);
}
elsif ($! != POSIX::EEXIST || $try == $try_max) {
die "$cmd_name: cannot create temporary file $temp: $!\n";
}
}
}</p>

<h2>Not reached</h2>

<p>exit(1);
</code></pre></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/07/perl-mktemp1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>クリーンルームでのパッケージ作成の必要性</title>
		<link>http://www.sfo.jp/blog/archives/2007/05/cleanroom.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/05/cleanroom.html#comments</comments>
		<pubDate>Sun, 20 May 2007 16:20:12 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[リンク]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/05/cleanroom.html</guid>
		<description><![CDATA[
コンパイラやリンカの生成するバイナリは、
周囲の環境によって異なる結果となることがある。
それらのコマンドラインや環境を生成する configure も然り。
よって、
configure &#38;&#38; mak [...]]]></description>
			<content:encoded><![CDATA[<p>
コンパイラやリンカの生成するバイナリは、
周囲の環境によって異なる結果となることがある。
それらのコマンドラインや環境を生成する configure も然り。
よって、
<q><code>configure &amp;&amp; make &amp;&amp; <var>...</var></code></q>
するときは、
思いのほか多種多様なことに気をつかう必要がある。
その中でも環境変数には特に注意が必要となる。
</p>

<p><p>
閉じた環境や特定の用途向けであれば、それほど気をつかわなくてもいいだろう。
しかし、配布するソフトウェアパッケージを作成する場合はどうだろう?
実行するマシンや人によって違う動作をするバイナリができてしまうのは、
大きな問題だ。
</p>
<p>
一方、実際の現場ではどうなってるか。
仕事柄、RPM や Debian パッケージを触ることがよくあるのだが、
個々のパッケージの作成ルール
(RPM なら SPEC ファイル、Debian なら debian/rules) はもちろん、
パッケージ管理 (作成) システム自体にそういったことに気を使っている節は見あたらない。
同じ OS、同じバージョン、同じ手順なのに、
環境変数によって異なるパッケージが生まれてしまう可能性がある。
そんなんでいいのだろうか?
誰も困っていないのだろうか?
私は実際に困ってしまい、せめて問題提起をと思って、今この文を書いている…。
</p>
<p>
先日 RPM for Solaris 環境を構築しているとき、
rpmbuild の実行過程で利用されるあるシェルスクリプトに次のような文を入れていた。
(Solaris の /bin/sh は <code>unset PATH</code> を拒否するので除外しているが、
別の箇所で <code>PATH</code> をリセットしているので問題ない)
</p>
<pre class="code"><code>## Make a clean room
eval "<code>env |sed -n '/^PATH=/d;s/^\([a-zA-Z0-9_]*\)=.*$/unset \1/p'</code>"
</code></pre>
<p>
せめてこれくらい、パッケージ管理 (作成) システムで標準でやってくれないものだろうか。
余計なお世話?
</p>
<p>
Linux ディストリビューターは皆、
厳密に管理されたパッケージ作成専用の環境でのみパッケージを作成しているんだろうか?
某所の事情は少し知っているが、その工程に携わったことがないので、実際どうなのかわからん…。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/05/cleanroom.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Solaris: PAM のデバッグログ</title>
		<link>http://www.sfo.jp/blog/archives/2007/03/solaris-pam-debuglog.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/03/solaris-pam-debuglog.html#comments</comments>
		<pubDate>Wed, 14 Mar 2007 09:57:07 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Solaris]]></category>
		<category><![CDATA[ダメ出し]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/03/solaris-pam-debuglog.html</guid>
		<description><![CDATA[
/etc/syslog.conf
にログの送り先を記述する。


auth.debug              /var/log/pam.log


ログファイルを作成し、syslogd プロセスに反映させる。

# [...]]]></description>
			<content:encoded><![CDATA[<p>
<code>/etc/syslog.conf</code>
にログの送り先を記述する。
</p>

<p><pre class="code"><code>auth.debug              /var/log/pam.log
</code></pre>
<p>
ログファイルを作成し、syslogd プロセスに反映させる。
</p>
<pre class="terminal"><code># <kbd>touch /var/log/pam.log</kbd></p>

<h1><kbd>svcadm refresh system-log</kbd></h1>

<p></code></pre>
<p>
PAM のデバッグを有効にする。
</p>
<pre class="terminal"><code># <kbd>touch /etc/pam_debug</kbd>
</code></pre>
<p>
ログを読んでみたが、
PAM の実装を理解していないせいか、わけがわからん。
設定ファイル、インターフェイス、実装の触りを見る限りでは、
PAM って設計が間違っていて、できれば見ないほうがいいのではないかという予感がヒシヒシと…。
勉強したくないなぁ。
<a href="http://untroubled.org/cvm/">cvm</a>
のほうが、まだよさげ。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/03/solaris-pam-debuglog.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris: PCA &#8211; Patch Check Advancded</title>
		<link>http://www.sfo.jp/blog/archives/2007/02/solaris-pca.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/02/solaris-pca.html#comments</comments>
		<pubDate>Wed, 28 Feb 2007 09:56:31 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Solaris]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/02/solaris-pca.html</guid>
		<description><![CDATA[
http://www.par.univie.ac.at/solaris/pca/



これはいい。
SunSolve Online
から最新パッチ情報を持ってきて、
パッチの適用状態を見たり、パッチを適用できる便利ツ [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<a href="http://www.par.univie.ac.at/solaris/pca/">http://www.par.univie.ac.at/solaris/pca/</a>
</blockquote>

<p><p>
これはいい。
<a href="http://sunsolve.sun.com">SunSolve Online</a>
から最新パッチ情報を持ってきて、
パッチの適用状態を見たり、パッチを適用できる便利ツール。
まだ smpatch(1M) は使ったことがないので比較はできないが。
</p>
<p>
そういえば Solaris 8 の時代、
ダウンロード済みの
<code>8_Recommended.README</a>
ファイルを見てパッチの適用状態を表示するスクリプトを作ったっけ。
Perl で作ったんだっけ? シェルだっけ? …思い出せない。
あのスクリプトはどこへやってしまったのかな。
なんだか懐しい気分になってしまった。。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/02/solaris-pca.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RPM for Solaris の先行者</title>
		<link>http://www.sfo.jp/blog/archives/2007/02/rpm-for-solaris-2.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/02/rpm-for-solaris-2.html#comments</comments>
		<pubDate>Mon, 19 Feb 2007 17:17:16 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[ダメ出し]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/02/rpm-for-solaris-2.html</guid>
		<description><![CDATA[
先日の
RPM for Solaris ネタ
だけど、
やっぱり同じことを考える人はいるんだね…
(JA) Solaris pkg (Part 3) : build pkg using rpm。
パッケージもあって、
 [...]]]></description>
			<content:encoded><![CDATA[<p>
先日の
<a href="/blog/archives/2007/02/rpm_for_solaris.html">RPM for Solaris ネタ</a>
だけど、
やっぱり同じことを考える人はいるんだね…
<q><a href="http://blogs.sun.com/thaniwa/entry/ja_solaris_pkg_part_3">(JA) Solaris pkg (Part 3) : build pkg using rpm</a></q>。
パッケージもあって、
<a href="http://dlc.sun.com/osol/companion/downloads/current/pkgs/">http://dlc.sun.com/osol/companion/downloads/current/pkgs/</a>
以下にある
<code>SFWrpm.pkg.bz2</code>
がそれらしい。
もしかして、Companion CD に入っていたのか?
あとで調べよう…。
何はともあれ、無駄骨だったかもね。
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/02/rpm-for-solaris-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>まともな RPM (SPEC) のマニュアル?</title>
		<link>http://www.sfo.jp/blog/archives/2007/02/rpm-spec-manual.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/02/rpm-spec-manual.html#comments</comments>
		<pubDate>Fri, 16 Feb 2007 12:01:16 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[ダメ出し]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/02/rpm-spec-manual.html</guid>
		<description><![CDATA[
Solaris における SRPM (ネタは Samba) からのコンパイルだが、
rpmbuild -bi samba.spec
まで辿りついた。
当然のように SPEC ファイルも Linux や GNU に依存し [...]]]></description>
			<content:encoded><![CDATA[<p>
Solaris における SRPM (ネタは Samba) からのコンパイルだが、
<q><code>rpmbuild -bi samba.spec</code></q>
まで辿りついた。
当然のように SPEC ファイルも Linux や GNU に依存しまくりで、
マクロをシコシコと書き続け、ようやくここまできた。
どうせなら RPM の作成 (<code>-bb</code>) までいっとくか?
</p>

<p><p>
久しぶりに SPEC ファイルを触ったが、以前と変わらず、
SPEC に関するまともな情報源は少ないと感じた。
<a href="http://www.rpm.org/">http://www.rpm.org/</a>
は全然役に立たないのだが、
こいつは公式サイトではなく<q>なんちゃって公式もどきサイト</q>なんだろうか?
Fedora の RPM Guide -
<a href="http://fedora.redhat.com/docs/drafts/rpm-guide-en/">http://fedora.redhat.com/docs/drafts/rpm-guide-en/</a>
が一番良さげ。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/02/rpm-spec-manual.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RPM for Solaris</title>
		<link>http://www.sfo.jp/blog/archives/2007/02/rpm-for-solaris.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/02/rpm-for-solaris.html#comments</comments>
		<pubDate>Thu, 15 Feb 2007 17:58:46 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Solaris]]></category>
		<category><![CDATA[ダメ出し]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/02/rpm-for-solaris.html</guid>
		<description><![CDATA[
RPM なパッケージで作成・維持している製品がある。
もちろん Solaris では使えない。
流用するのさえ大変だし、別途 Solaris 版パッケージを作成・維持するのは面倒くさい。
ということで、RPM 4.4. [...]]]></description>
			<content:encoded><![CDATA[<p>
RPM なパッケージで作成・維持している製品がある。
もちろん Solaris では使えない。
流用するのさえ大変だし、別途 Solaris 版パッケージを作成・維持するのは面倒くさい。
ということで、RPM 4.4.7 を Solaris 上でコンパイルしてみた。
なぜか
<a href="http://www.rpm.org/">rpm.org</a>
のダウンロードページには rpm ソースがどこにもないようなので、
<a href="http://wraptastic.org/pub/rpm-4.4.x/">http://wraptastic.org/pub/rpm-4.4.x/</a>
からダウンロードした。
</p>

<p><p>
2日近くかけて、ようやく
<q><code>rpmbuild -bb <var>package</var>.spec</code></q>
まではできるようになった。
<q><code>rpmbuild -bi <var>package</var>.spec</code></q>
から先ももうすぐだろう (現在実行中。SPARC IIe 650MHz なので時間がかかる)。
Solaris 版を RPM で提供することはないと思うけど、
SRPM からコンパイルまでできるだけでも楽になるんじゃないかしら? (希望的推測)
</p>
<p>
コンパイル手順はちょっと手間なので省略。
感想としては、<q>Red Hat Linux と GNU に依存しすぎだ!</q> につきる。
Solaris と Linux との仕様の相違(? <code>uint<var>xx</var><em>t</code> vs. <code>u</em>int<var>xx</var>_t</code>)や
Solaris のヘッダーファイルのバグ (断言。<code>libelf.h</code> が勝手に <code>#undef _</code> してしまう問題) もあったりして、思いのほか苦労してしまった。
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/02/rpm-for-solaris.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris 10 の初期設定 (改訂版)</title>
		<link>http://www.sfo.jp/blog/archives/2007/02/solaris10-initial-config.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/02/solaris10-initial-config.html#comments</comments>
		<pubDate>Fri, 09 Feb 2007 05:28:44 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[Solaris]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/02/solaris10-initial-config.html</guid>
		<description><![CDATA[
Web Console を停止する。


# svcadm disable webconsole


dtlogin の自動起動をやめる。
たまにしか使わないので無駄だし、必要なときに起動すればいい。
Solaris  [...]]]></description>
			<content:encoded><![CDATA[<p>
Web Console を停止する。
</p>

<p><pre class="terminal"><code># <kbd>svcadm disable webconsole</kbd>
</code></pre>
<p>
dtlogin の自動起動をやめる。
たまにしか使わないので無駄だし、必要なときに起動すればいい。
Solaris 8 とは違い <code>/etc/rc?.d/S*dtlogin</code> は存在せず、
<code>dtconfig</code> コマンドで制御するようになった。
</p>
<pre class="terminal"><code># <kbd>/usr/dt/bin/dtconfig -kill</kbd>
done
dtlogin kill complete.</p>

<h1><kbd>/usr/dt/bin/dtconfig -d</kbd></h1>

<p>done
desktop auto-start disabled.
</code></pre>
<p>
<code>/etc/profile</code> を以下の目的で編集する:
</p>
<ul>
<li>デフォルトのシェルのプロンプトを変更。</li>
<li>デフォルトのエディタを vi に変更。</li>
<li>標準のページャー
<code>/usr/bin/more</code>
はバックスクロールできないなど機能が貧弱なので、
<code>/usr/xpg4/bin/more</code>
にする。
</li>
</ul>
</p>
<pre class="terminal"><code># <kbd>cp -p /etc/profile /etc/profile.dist</kbd></p>

<h1><kbd>vi /etc/profile</kbd></h1>

<p><var>...編集...</var>
</code></pre>
<p>
具体的には <code>/etc/profile</code> の最後に以下を追加:
</p>
<pre class="code"><code>PAGER=/usr/xpg4/bin/more
EDITOR=/usr/bin/vi
export PAGER EDITOR
if [ "<code>id|sed 's/(.*//;s/.*=//'</code>" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
if [ -n "$BASH" ]; then
PS1="\u@\h:\w $PS1"
HISTSIZE=100000
HISTFILESIZE=100000
HISTCONTROL=ignoreboth
shopt -s cmdhist histappend lithist
else
PS1="<code>hostname|sed 's/\..*//'</code> $PS1"
fi
</code></pre>
<p>
root のホームディレクトリが <code>/<code> なのは気持ち悪いので <code>/root</code> に変更。
ついでにシェルも <code>/bin/bash</code> に変更してしまおう
(どうせ <code>/sbin/sh</code> は動的リンクになっているし)。
<code>usermod</code>(1M) は実効ユーザーとして利用されているユーザー属性の変更を拒否するので、
<code>/usr/ucb/vipw</code> を使う:
</p>
<p>
<pre class="terminal"><code># <kbd>mkdir -m 0700 /root</kbd></p>

<h1><kbd>/usr/ucb/vipw</kbd></h1>

<p><var>...編集...</var>
</code></pre>
<p>
手元の端末で常用している mlterm の terminfo がないので、
ほかの環境からコピーする。
</p>
<pre class="terminal"><code># <kbd>cp <var>/path/to/</var>mlterm /usr/share/lib/terminfo/m</kbd>
</code></pre>
<p>
動作中にキーボードが引っこ抜けても停止しないようにする。
</p>
<pre class="terminal"><code># <kbd>cp -p /etc/default/kbd /etc/default/kbd.dist</kbd></p>

<h1><kbd>vi /etc/default/kbd</kbd></h1>

<p><var>...<q>KEYBOARD_ABORT=disable</q> を設定する...</var></p>

<h1><kbd>kbd -i</kbd></h1>

<p></code></pre>
<p>
Solaris 10 11/06 以降でインストール時に
<q>Enabling Access to Remote Clients</q>
にて
<q>Remote services enabled</q>
を yes としてしまった場合、
必要最低限なサービスを停止するため以下を実行する。
(参考:
<a href="http://blogs.sun.com/yappri/date/20061220">セキリュティー機能拡張(Secur</p>

<h2>e By Default)</a></h2>

<p><a href="http://blogs.sun.com/yappri/">やっぱり Sun がスキ！</a>)
</p>
<pre class="terminal"><code># <kbd>netservices limited</kbd>
<var>...</var>
</code></pre>
<p>
以下は x86 版限定のお話。
</p>
<p>
インストール時に
<code>kdmconfig</code>
で日本語キーボードを選択したはずなのに、
なぜか英語キーボードの設定になっているので、これを直す。
<a href="http://blogs.sun.com/sayama/entry/wnn8_and_japanese_106_keyboard"><code>kdmconfig</code>
を再実行しても直らないので <code>eeprom</code> で <kbd>kbd-type</code> の値を変更</a>する。
このあたりは同じ <a href="http://blogs.sun.com/sayama/entry/japanese_106_keyboard_on_nevada">Solaris 10 でもリリースにより流動的みたい</a>。
<a href="http://blogs.sun.com/thaniwa/entry/ja_solaris_express_force_changing"><code>/etc/default/kbd</code> の
<code>LAYOUT</code>
の値で設定するとか、
<kbd>eeprom</code>
の
<kbd>kbd-type</code>
でも
<code>Japanese(106)</code>
ではなく
<code>Japanese-106/type7</code>
を設定する</a>という話もあるし。
</p>
<pre class="terminal"><code># <kbd>eeprom kbd-type="Japanese(106)"</kbd></p>

<h1><kbd>eeprom keyboard-layout="Japanese<del>-106/type7</del>"</kbd></h1>

<p></code></pre>
<p>
とりあえずこんなもんだけど、
<code>kdmconfig</code> で X サーバーを
Xsun から Xorg に変更すると、キー配列がメチャクチャになる問題が残っている。
手元の Debian の X.org には kbd という名前のドライバがあるが、
Solaris には keyboard というドライバしかないみたい。Solaris の X.org が古いのかなぁ?
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/02/solaris10-initial-config.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Active Directory のサーバーサイドソートは壊れている?</title>
		<link>http://www.sfo.jp/blog/archives/2007/02/ad-sss.html</link>
		<comments>http://www.sfo.jp/blog/archives/2007/02/ad-sss.html#comments</comments>
		<pubDate>Tue, 06 Feb 2007 18:44:35 +0000</pubDate>
		<dc:creator>fumiyas</dc:creator>
				<category><![CDATA[LDAP]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[仕事]]></category>

		<guid isPermaLink="false">http://www.sfo.jp/blog/archives/2007/02/ad-sss.html</guid>
		<description><![CDATA[
Windows Server 2003 SP1 の Active Directory を
Solaris 10 の NS (Name Service) のバックエンドに設定しようと
ldapclient(1M), AD [...]]]></description>
			<content:encoded><![CDATA[<p>
Windows Server 2003 SP1 の Active Directory を
Solaris 10 の NS (Name Service) のバックエンドに設定しようと
<code>ldapclient</code>(1M), AD, SFU (Service for UNIX) と格闘中。
<q><code>getent passwd <var>ユーザー名</var></code></q>
では AD のユーザー (あるいはグループ) を参照できるが、
<q><code>getent passwd</code></q>
で一覧表示できないという問題にぶつかる。
パケットなどを解析したところ、以下が原因となっていた:
</p>

<p><ol>
<li><code>ldap<em>cachemgr</code>(1M) は起動するとすぐに AD (LDAP)
サーバーに接続し、サーバーが対応する拡張を問い合わせる。
</li>
<li>AD は問い合わせを受け対応する拡張の一覧を返す。
その中にサーバーサイドソート拡張への対応を示す情報
(OID 値 1.2.840.113556.1.4.473) も含まれている。
</li>
<li><code>ldap</em>cachemgr</code>(1M) はユーザーなどのエントリの一覧を
AD に問い合わせる際、サーバーサイドソートを指示し、
ソート対象としてエントリの属性名 cn と uid を指定する。
</li>
<li>AD は <q>指示された拡張は使用不可</q> という旨のエラーを返す。
理由は不明。
</li>
<li>ldap<em>cachemgr(1M) はエントリの一覧取得に失敗する。</li>
</ol>
<p>
<code>tshark</code>(1) で見たときの AD の応答は以下のような感じ:
</p>
<pre class="code"><code>Lightweight-Directory-Access-Protocol
LDAPMessage searchResDone(2) unavailableCriticalExtension (00000057: LdapErr: DSID-0C09068F, comment: Error processing control, data 0, vece) [0 results]
messageID: 2
protocolOp: searchResDone (5)
searchResDone
resultCode: unavailableCriticalExtension (12)
errorMessage: 00000057: LdapErr: DSID-0C09068F, comment: Error processing control, data 0, vece
</code></pre>
<p>
Active Directory が悪いような感じだが、実際のところはどうなんだろう?
RFC を読めばわかるかな?
Web を検索したところ、同じ現象と思われる例がいくつかあったが、
解決方法はおろか、原因に辿りついているものは一つもなかった。さて、どうすべぇ…。
</p>
<p>
以下は AD に対するテストプログラム。
<code>$sort</em>order</code>
でソート対象を一つだけにすると失敗しない。
</p>
<pre class="code"><code>#!/usr/bin/env perl
use strict;
use warnings;
use Net::LDAP;
use Net::LDAP::Control::Sort;
my $server = '10.0.0.1';
my $base = 'dc=example,dc=com';
my $bind<em>user = 'Administrator';
my $bind</em>pass = 'pass';
my $sort_order = 'cn uid';  # NG! Why?</p>

<h1>my $sort_order = 'cn';     # OK!</h1>

<p>my $ldap = Net::LDAP-&gt;new($server) || die "$@";
my $mesg;
$mesg = $ldap-&gt;bind(
"cn=$bind<em>user,cn=Users,$base",
password =&gt; $bind</em>pass,
);
$mesg-&gt;code &amp;&amp; die $mesg-&gt;error;
my $sort = Net::LDAP::Control::Sort-&gt;new(
order =&gt; $sort<em>order,
critical =&gt; 1,
);
$mesg = $ldap-&gt;search(
base =&gt; $base,
filter =&gt; '(objectClass=user)',
control =&gt; [ $sort ],
);
$mesg-&gt;code &amp;&amp; die $mesg-&gt;error;
for my $entry ($mesg-&gt;entries) {
$entry-&gt;dump;
}
</code></pre>
<p>
Windows Update をかけてみたが、結果はかわらず。
ということで、
クライアントが Solaris の場合は ldapclient は捨てて、
Samba の winbind にするのがよさそう。仕事での実績もあるし。
PADL の nss</em>ldap/pam_ldap もたぶん大丈夫だろうけど未確認。
製品パッケージにしたら需要があるかなぁ?
</p>
<p>
なお、Windows Server 2003 R2  では未確認。
そのうちやらねば。
</p>
<p>
2008-03-11 追記: 似た不具合を教えてもらった:
<a href="http://support.microsoft.com/kb/842637/ja">http://support.microsoft.com/kb/842637/ja</a>
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sfo.jp/blog/archives/2007/02/ad-sss.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

