cronでportsnap cron && /path/to/somescript としてport treeを更新しているが、FreeBSD 8.xなホストで、いつの頃からか、これがきちんと終了しなくなった。しかも、エラーのメールすら届かない。
暫くは原因が全くわからなかったが、どうも、libssl.so.8がない、という理由らしい。FreeBSD 8.xなシステムにはこれはもともと存在しない。ではなぜこんなことになったかと思いだすと、以前に一時期、portsからsecurity/opensslをインストールしていたことがあったのだった。dns/bind99の依存性か何かだったと思うのだが、特に必要ないので、dns/bind99のインストールオプションを変えてこれを消したのだった。そのタイミングが悪く、ちょうどmake world直後だったらしい。そのため、portsでは依存性の問題は起きなくても、システムのsendmailがこれに依存したままだった。これは現状のpkg deleteでは検出してくれない問題。
sendmailだけを再構築する方法がわからなかったし、他にも問題のあるバイナリがあるといけないので、make worldし直して、解決。
ただし、なぜ/path/to/somescriptの途中でエラーになっていたのかは、よくわからないまま。これで問題が起きなくなったので、やはりlibssl.so.8に依存するバイナリを使っていたのだろうか?
■ 昨晩から団体バスで高山。一昨日知り合ったフランス人短期留学生につたない英語で通訳しないといけないので、疲れ果てました。でも、普段は行くことのない通訳ブースや予約席に行くことができて面白かった。午後2時頃にバスまで行ってみんなと別れ、高山駅付近まで歩く。とても暑かったし、荷物も重かったので、疲れ果てて昼食(飛騨牛カレーとアイスコーヒー)。その後、もう観光をする元気もなかったので、本部分室まで歩いて2時間ほど滞在、ホテルへ。
普段からほとんど旅行しないし、高山も年に何度か団体バスで行くだけ。なので、観光はほとんどしていない。駅付近に行ったのも20年ぶりくらいかも。昔の印象とはかなり変わっていた。ただ、コンビニがほとんどないのにはちょっとびっくり。また、横断歩道では信号がなくても車が止まってくれるのにはびっくりした(って本当は止まらなくてはダメ)。
■ 宿泊はスーパーホテル高山。部屋は狭いけど快適。チェックアウト後、レンタサイクルを探したが、駅周辺には見つからない…ネット情報で見つけた店は発見できず、電話してみたら、一軒はすでにつながらず、もう一軒は電話に出ない。1時間近く徘徊しても、全く見つからず…しかも、先ほど電話に出なかった店に電話したら、結構かかって繋がったが、店の場所を聞いて探してみても、そこには見つからない。何とも変な時間だった。その後、駅前の別の店が開いたので、そこで借りた。\300/hは結構高い(Max\1,200)。荷物はコインロッカーに。
まず、遅くなったが宮川朝市、その後に櫻川八幡宮、高山祭り屋台会館、宮地家住宅、吉島家住宅を見学し、さんまち界隈を徘徊、城山公園から高山城跡に上ってみた(徒歩)。ただ、本丸跡は木が茂っているだけで何もなく、見晴らしもよくなかった。下山し、日枝神社へ、国道41号に出て、再度高山駅付近へ(途中で昨日からの某宿泊バスと出会った)。もう一度町並みなどを歩いて散策し、13時半頃に自転車返却。本部分室で2時間ほどいた後、駅前からバスで近くまで行った後歩いて本山。16:30から前日の設営など。宿泊はひだホテルプラザのバスに送迎してもらって団体で宿泊。
夏休み中の日曜ということで、観光客は非常にたくさんいました。
■ とっても早い朝食を済ませ、ホテルのバスで本山。錬成会のご奉仕を終わったのは17:30頃。駅までバスで戻り、数名で喫茶店で時間をつぶした後、列車で帰る人々と別れ、19:00の高速バスで名鉄岐阜駅へ。ほぼ定時に着き、21:20にJR岐阜駅発、大垣、米原、山科で乗り換え、京阪山科から東山、そこから市バス最終便に乗り換え、帰宅(23:50)。
列車は混むかと思ってバスにしたけど、そんなに混んでなかったので、列車にしとけばよかった。バス+在来線だと京都まで4500円ほどなのでかなり安いが4時間かかる一方、バス+新幹線だと6800円ほどで3.5時間。特急+新幹線だと9000円で3時間。悩ましいけど、列車だけだと楽だろうなぁ。
今朝方の地震、居眠りから目が覚めた直後だった。で、緊急地震速報の画面がPCに出た。ただしすでに揺れた後。でも、気象庁のサイトには緊急地震速報の記録がない…あの画面はなんだったんだ!?
これは、使用しているソフト「SignalNow Express」が、一般広報向けの情報ではなく、業務用の情報を使っているためらしい。これには予報に必要のないデータも含まれるので、予報に間に合わなかったデータも表示する場合があるようである。
先日、apache22系からapache24系に変えた。その後、なぜかtDiaryが使えなくなっていた。暫く使ってなかったので、何が原因かも切り分けられなかったが、新しいtDiaryをインストールしても同じであることが発覚。
どうも、スクリプトの冒頭で"!#/usr/bin/env ruby"としているのがよくないらしい。FreeBSDではRubyはportsからインストールするなど標準的な方法では${LOCALBASE}/binに存在する(特に設定しなければ/usr/local/bin)。これが、パスに入っていない。実際、cgiから環境変数を表示させてみると、「PATH="/sbin:/bin:/usr/sbin:/usr/bin"」だった。
では、なぜ従来は動いていたのか?何らかの方法で設定をしたのなら、その記録が残っているはずだが、何も残っていないし、記憶にもない。apacheの仕様変更ということでもなさそう。また、どうすれば解決できるのかも、よくわからない。起動時のパスは/etc/login.confでは解決できそうにない。/etc/rcでの設定をいじるのか(従来はそんなことしてなかった)、/usr/binにシンボリックリンクを張るか。
で、結局はシンボリックリンクでごまかした。
ruby19でtDiary-2.2系を動かそうとすると、「index.rb:8:in `
で、tDiary-3.xが一切見当たらないので、tDiary-4.0.4をインストールして、cgiとして動かすようにdoc/INSTALL-cgi.htmlを見ながら設定してみたが、動かない。ruby-gemsは一切インストールしていないのだが、これを要求しているように見える。確かに、必要なファイルが.bundle/以下に存在しているような気もするが、全く役に立っていないし、このままでは動作するとも思えない。それに関するドキュメントが全くないので、そもそもcgiでの動作をまともにサポートする気があるのかすら怪しい。
ということで、ここでギブアップ。もう過去のソフトなのかもね。
■ 台風11号のため、今日の月並祭は、昨晩のリハーサルが中止となり、今日は式典のみで約30分だけ。とはいえ、他は変更ないので、朝6:30集合は変わらず。幸い、朝には雨が降ってなかったので自転車で行けたが、終了した昼過ぎには雨のピーク。少し待って、雨が小降りになった頃を見計らってバスで帰宅。昨日はリハーサルに行くつもりだったので、朝からバス1日券を使ったが、結局はそれだけの使用となり、高くついた。
■ 仕事先が妙に騒がしかった。夏期講習の高校生の一部が騒いでいるが、スタッフ(大学生アルバイト)がそれに対処できていない。つけあがった生徒がそのうち何かしでかしそうだけど、そもそも対応を大学生に任せてはダメでしょ。
仕事については、質問に来た生徒にちょっと特殊なのがいた。特異な性格、というか、障害かもしれない。以前にも書いたが、こういう情報は我々にも知らせてほしい。通常の対応をしていては、お互いに不幸になるだけ。こちらとしてはかなりイラッとしてしまうことになる。塾側は把握していないのか?
■ 非常勤先の成績付けすべて終了。
某女子大でのWordの試験の際、ファイルが保存できない、などのトラブルがまれにあるが、これらは不運な出来事かと思っていた。しかし、成績をつけてみると、不思議なことに、これらのトラブルにあう学生は総じて点数が悪い。何かPCの操作に問題があるのではないかと思う。ログオン時の自動実行プロセスを強制的に中断するなど、無茶をすると、ネットワーク上の自分のフォルダが使えないなどのトラブルが起こるようになっているのだが、こういった「利用上の注意点」が守られているか怪しい。
一方で、操作によってトラブルが起こる、ということは、まだまだPCは家電化できていないということかもしれない。
■ 一昨日から帰省、昨日から吉野の古家に宿泊。地デジを見たいので、アンテナを立ててみたが、ほとんど映らず。拾ってきたアンテナにはブースターは付いていたが、電源がないので、意味なかった。夜には仕事なので、夕刻に実家を出発、直接職場へ。
linux_dist-gentoo-stage3がステージ化され、バージョンアップしているが、distinfoが古いまま。さらに、distinfoを無視してファイルを取得し、インストールしようとしても、plistと合わないので、エラーになる。
なんでこんな中途半端なことをしたのか、不明。
chromiumがビルドできない。
まず、python27でセマフォが使えない、ということでエラー。これはpython27をオプションを変えてインストールしなおして解決。次いで、libusb-1.0.pcがない、とか。これはPR ports/192672で報告されているのと同じだろう。そのほか、chromiumがopensslの新しいのをインストールしようとするのも気になる。これは以前にトラブルになったので嫌だなぁ。
■ 明日の夕食の下見に行った。カフェは僕には場違い…夕食は違う雰囲気だろうけど。でも、いい雰囲気でした。と思っていたら、都合で延期に。残念、というか、楽しみの先延ばし。
Facebookの友達の欄に、全く知らない人が表示される。友達の友達、なら分かるのだが、共通の友人もないどころか、プロフィールが公開されていないのでどこかに共通点があるのかもわからない。しかも、繰り返しずっと表示されている。
どういう基準で表示しているのか、と気になる。
また、共通の友人はいなくとも、同じ職場の人が表示されることがあるが、僕は自分の職場を設定していない。なのになぜ?
疑問は尽きない。
Word 2010で数式を書く際、以前よりも便利になっている部分もあるが、以前よりもデザインの選択肢が少なくなっている気がする。たとえば、cos^2θなどはどうすればいいのか?
仕方ないので、cos^-1θを選んでから、指数部分を書き換えた。これが正しいのか、よくわからない。
他にも、一部の数式が消せなかったり、使うとストレスを感じてしまう…
昨日から、2台のPCの一方で、www/squid32やdatabase/evolution-data-serverのビルドに失敗する。configureの時点でエラーが起こるらしい。後者のエラーを見ると、krb5がどうとか…うん、これはopensslが怪しい。
確かに、エラーが起こるほうのPCでは、先週lang/python27を更新する際にsecurity/opensslをインストールすることを強制された(2014.8.16参照)。一方のホストは先週何もせず、昨日になってpython27を更新したが、security/opensslは要求されなかった。何か変更点があったかと、lang/python27、security/openssl、Mk/bsd.port.mkやMk/bsd.openssl.mkを見たが、何も変わっていないみたい…でも確かに今はエラーの起こったホストでもpython27をports/opensslなしでビルドできる。
訳が分からん。
2014.7.25に書いたように、pkg deleteは、そのままでは依存するパッケージを消そうとしてしまう。これを避けるのは、"-f"オプションらしい。確かに、"-f"を指定すると、そのパッケージに依存するものがあっても、それだけを消そうとする(ただし本当に消していいのかの確認は、-fなしの時と同じように行われる)。
ところで、-fなしで列挙されるものは、必ずしもpkg info -rで表示されるものばかりではない。これはすべてを再帰的に調べているということなのか。関係なさそうなのもあるんだけど…
従来、pkg version -vの結果をファイルに保存し、アップデートが必要なパッケージ(ports)がどれかを確認していたが、pkgが1.3系になった頃からか、この出力に、ports treeそのものに含まれないもの(つまり自分で追加したportsでインストールしたものなど)が表示されなくなった。すると、ports treeで消されたportsなどがそのまま気づかないまま残ってしまうことになる。従来では、"orphan"と表示されるので、すぐに気づくことができたのだが。
これには、pkg versionに"-P"を追加すればいいらしい。
■ MSさんと食事(@Länka)。見た目とのギャップだらけで面白い方です。大雨の中だったけど、楽しかった。
ビルドに失敗する。というよりもconfigureの時点でエラーになる。
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
checking platform... Unix
checking native dynlink... checking for pkg-config... /usr/local/bin/pkg-config
checking for GTK+ - version >= 2.0.0... yes (version 2.24.22)
checking pkg-config is at least version 0.9.0... yes
checking for GTKGL... yes
checking lablGL directory... configure: error: gtkgl enforced but lablGL not found
===> Script "configure" failed unexpectedly.
configureを見て、同様のテストをしてみたら、
h120 % ocamlc.opt -c -I +lablGL conftest.mlだとか。
File "conftest.ml", line 1:
Error: /usr/local/lib/ocaml/lablGL/raw.cmi
is not a compiled interface for this version of OCaml.
It seems to be for an older version of OCaml.
このファイルはgraphics/ocaml-lablglがインストールするもの。このファイルがおかしいというのは…と思ってインストール日を調べると、かなり古そう。
これをビルドし、インストールしなおしてから、x11-toolkits/ocaml-lablgtk2をビルドすると、無事終了。
STAGE化を行った。japanese/kon2-16dotのメンテナをしているが、chinese/kon2-16dotはjapanese/kon2-16dotのMakefileを使っており、さらにchinese/cceにも依存している。そして、chinese/cceはメンテナがいない。で、なぜか僕のところにメールが回ってきたので、やってみたが、これが結構厄介。
普通にNO_STAGE=yesを消すだけだと、make stageの段階でエラーが出る。あるべきファイルがない、ということなので調べると、stage用のディレクトリの中にさらにstage用ディレクトリを作ってインストールされているファイルが一部存在する。Makefileをたどってもどうしてそうなっているのかわからなかったが、どうもautotoolsによって作成されるべきファイルがおかしいらしい。元々はMakefile.amから作成されることになっているらしいので、このファイルに対するパッチが多くあてられているのだが、実はこれはもはや使われていない…autotoolsのバージョンによるものなのか、別の理由なのか?ともかく、これではだめなので、Makefile.inのほうを修正するようにパッチをたくさん作って対処した。その他、インストールパスがおかしかったり、なぜかMakefileが繰り返し作られてコンパイルが複数回行われる問題をクリアして、send-pr。
しかしこれって、誰か使っているの?
最近、この変数を有効にしないとビルドできないportsがある。上述のcceもそうなのだが、Makefileを見てもよく理解できない。たとえば、この件では、あるバイナリを作るのに2つのソースファイルに依存しているが、これらをそれぞれコンパイルするためのターゲットが存在しない。そこで拡張子をもとに作成するターゲットが使われるのだが、それには少し時間がかかるためか、別途コンパイルをしようとして、その際のコンパイラに渡す引数が不十分なため、エラーになる。
パラレルビルドに対応していないものが多すぎるが、今のご時世でこれではまずい。もうちょっと丁寧にMakefileを書いてほしいけど、これもautotoolsが勝手に作ったものなのかな?
Autotoolsは全く理解できない。
[追記]cceの件は原因が違ってました。bdf2binというバイナリのほかに、./bdf2binにも依存する部分があって、これらを別々のターゲットだと思ってパラレルビルドするので、一方が適当な方法で作られてしまい、エラーになる、というのが原因。これはすぐに修正でいたので、MAKE_JOBS_UNSAFEは無しに出来た。[2014.8.26]
STAGE化に伴い、対応していないものは消えゆくことになりそう。対応していない、ということは、メンテナンスが誰にも行われておらず、おそらくユーザも少ないということだろう。今月末の期限まであと数日だが、いまだに多くのportsがリストアップされている。
その中には、歴史的な役割を終えたであろうものも見られたので、敬意を払ってメモをしておこうと思う。japanese/k12(kaname font)、net-mgmt/wide-dhcp(WIDE projectの成果)、news/inn(もっとも有名なnet newsサーバ)、print/ghostview、など。ご苦労様でした。
今日も時間ができたので、stage化継続。
でも、残っているのは、もうどうでもいいものか、厄介なものが多そう。特に、独自のインストール機構を持つものは、結構めんどくさい。やたらと長〜いパッチを作るか、無視してports側でインストールを行うか。
これのstage化に伴い、portlintでチェックすると、stage化とは関係なく、シェルコードを使っているところが警告された。ま、警告なのでいいか、と思ってsend-prしたが、ずっと担当してくれているmarinoさんから突き返された。やっぱりここをなんとかせぇ、とのこと。
他のportsとは異なり、元になる辞書ファイルを自分で用意しなければならないこのportsはかなり特殊らしい。しかも、そのファイル名もファイル形式も1通りではなく、さらにそれがcd-rom上で自己解凍型ファイルになっているものと、普通のテキストファイルの場合がある。となると、圧縮されていればlhaが必要になり、そうでなければ必要ないということになる。このどちらであるか、ということは、何らかのコマンドを実行しないと分からないので、シェルコードが必要となり、それによって依存性の指定が変わってくるので、具体的なターゲットに入る前にシェルコードを実行しなければならなくなる。でも、それではMakefileを評価するだけでコードが毎回実行されてしまうので使うな、ということらしい。
どうやって回避するか。常にlhaに依存するという無駄なことをするか。それとも、portsのオプションで指定することにするか。
2014.8.24に書いた件は、FreeBSD 8-STABLEだけの問題ではないらしい。こちらなどに同様の問題が報告されている。
で、リンク先にあるように、sysutils/patchelfを使ってrpathを書き換えてみたら、同じエラーは起きなくなった。でも、結局はセグメントエラーで落ちるので、起動できないことには変わりなかった。
先日からmarinoさんといろいろ議論した(つもり)だが、marinoさん曰く、やっぱりターゲット以外でのシェルコードは避けるべきで、archivers/lhaに常に依存したらええやん、そしてもっと変数減らしてシンプルに、だった。でも、それはそれで困ることもある(すでに解凍後の辞書ファイルを別の場所に保存している場合)。
そこで、思い切ってCD-ROMからの直接インストールをやめてみるよう、提案した。CD-ROMを使いたい人は、表示されるメッセージに従って自分で解凍すればいい、と思う。
かなりシンプルになったけど、さて、どうなることか。
もう最後、残ったのをなんとかしたい。
misc/latex-mkはパッチ書いたけど、これってどういうときに使うものか、知らない。
print/latexはインストールするファイルがtexlive-texmfやtex-formatsとがっつりconflictするので、もういらないんだろう、と判断。
print/dvisvgは、dvisvgmという実行ファイルがtexlive-baseでインストールされるので、なくてもよさそう。どちらもsourceforge.netにサイトがあるが、dvisvgのほうは長いこと更新されていないみたい。
platex-japaneseは、配布元によると、「Contained in TeXlive as japanese」らしいので、もういらないか。
japanese/makejvfは、なんだかよくわからないし、なんでインストールしてたのかも覚えていない。ともかく、必須ではななそうなので、割愛。
TeXに関してはただのユーザ(しかもめったに使わない)なので、わからないことが多い。
texliveでインストールされるdvi2ttyとConflictとなるので、japanese/dvi2ttyはインストールできない。でも、日本語を表示したいので、jdvi2ttyのようにすべて頭に"j"が付くようにして対処し、stage化完了。
ところが、実はtexliveのでも、"-A"などのオプションをつければpTeXで処理したファイルを表示できるらしい。処理するTeXごとに異なるというのも僕には理解できないのだが、ともかく試してみたら、うまくいった、ように見えた。実は少しまずいところがあり、たとえば「2006年度」が「2006 度」となってしまう。
japanese/dvi2ttyは消すべきなのかなぁ。hrsさんがそういうのだから、間違いないんだろうけど。ちなみに、自分がメンテナだった。
stage化は済んでいたが、ビルド中にネット越しでファイルをダウンロードする、ということで、BROKEN扱いになっていた。でも、apache-poiのアイデアは面白いし、今も開発は続いているようなので、何とかしたい。
結局、ファイルを事前にダウンロードして、必要に応じてコピーすれば、特に問題にはならない。ということで、これに対処するように修正し、ついでにStage化のミスを修正して、send-pr。ダウンロードするファイルが多いので、どのように配布元やそのサブディレクトリを書けばいいのか、さんざん悩んだが、何とかできた。また、ダウンロードするファイルの1つに空白を含むファイル名のファイルがあるのだが、これをどのように指定するか、さんざん悩んだ。どうもMakefileではうまく扱えない気がする。エスケープしても、""で囲ってもダメ。ただ、URLエンコードされたままのファイル名で保存されるので、これをさらにエンコードして(つまり" "が%20になるのでさらにこれを%2520にして)見たら、うまくいった。
これで一連のパッチ書きは終わり。あとは微調整などの指示に従えばいいはずなのだ。ほっと一息。
■ 早朝から今日締め切りの仕事を最終チェック、その後に上賀茂、昼過ぎに帰宅後して夕食の準備をし、某所に出かけてMSさんといろいろ話して(@ここ音家、他)、帰りは車で市内まで送ってもらった。充実した一日でした。車に乗せてもらっているときに運転手をびっくりさせるようなことを言ってはいけない、と反省。