やるきなし

2016/05/21 17:00 / tex-common 6.05 on Debian GNU/Linux

aptitude upgrade で tex-common が以下で上がってくれないというか configure されない.

% sudo /var/lib/dpkg/info/tex-common.postinst configure
Running mktexlsr. This may take some time... done.
Running updmap-sys. This may take some time... done.
Running mktexlsr /var/lib/texmf ... done.
Building format(s) --all.
	This may take some time...
fmtutil failed. Output has been stored in
/tmp/fmtutil.R5YhUP3w
Please include this file if you report a bug.
[/tmp/fmtutil.R5YhUP3w]
fmtutil [INFO]: /var/lib/texmf/web2c/pdftex/latex.fmt installed.
fmtutil [ERROR]: running `pdftex -ini   -jobname=mptopdf -progname=context -translate-file=cp227.tcx mptopdf.tex </dev/null' return status 1
fmtutil [ERROR]: return error due to options --strict
fmtutil [INFO]: Disabled formats: 3
fmtutil [INFO]: Successfully rebuilt formats: 18
fmtutil [INFO]: Failed to build: 1 (pdftex/mptopdf)
fmtutil [INFO]: Total formats: 22
fmtutil [INFO]: exiting with status 1

fmtutil の箇所で止まっているらしく,とりあえずの解決策は https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=824889にあるように /var/lib/dpkg/info/tex-common.postinst で fmtutil の option から --string を消すというもの.

追記(2016/05/21)

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=824853にあるように,mptopdf の箇所でコケているのはsyst-tex.mkiiがtexlive-latex-baseからcontext (ConTeXt) packageに移動した(?)のが原因で,そもそもmptopdf自体contextに移すべき,とう話ならしい.

ということで context package を install しても解決する.

追記(2016/05/24)

texlive-latex-base (2016.20160523-1)で修正された模様で,syst-tex.mkii が texlive-latex-base に含まれるように修正された模様.

2016/05/21 16:30 / octave 4.0.2-1+b2 w/libgl2ps0 1.3.8-2 on Debian GNU/Linux

aptitude upgrade で octave が以下で上がってくれない.

/usr/lib/x86_64-linux-gnu/octave/4.0.2/exec/x86_64-pc-linux-gnu/octave-gui: error while loading shared libraries: libgl2ps.so.0: cannot open shared object file: No such file or directory

付近のバグレポートにあるとおりなぜか libgl2ps.so.0 が libgl2ps.so.1 になってしまった(libgl2ps0 1.3.8-2)のが原因.libgl2ps0 1.3.8-3 で直るらしいがまだ download できないようなので,とりあえずlibgl2ps0_1.3.8-1.3_amd64.debをdpkg -iして解決

2016/05/03 05:48 / WordPress Twenty Sixteen wp_nav_menu

Twenty Twelve とか Twenty Thirteen ぐらいだと,Menu を手動で作成していない状態だと,自動で Menu を生成してくれたような気がするのだが,Twenty Sixteen だと上手くいかない.結局うまく行かないという話なのだが,以下調べた内容.

Twenty Twelve だと wp_nav_menu() location が1箇所,Twenty Sixteenは2箇所.

[wp-content/themes/twentytwelve/functions.php]
register_nav_menu( 'primary', __( 'Primary Menu', 'twentytwelve' ) );

[wp-content/themes/twentysixteen/functions.php]
register_nav_menus( array(
    'primary' => __( 'Primary Menu', 'twentysixteen' ),
    'social'  => __( 'Social Links Menu', 'twentysixteen' ),
) );

適当に以下をすれば(子テーマの function.php に書いておく) Twenty Sixteen の wp_nav_menu() location を1つ(primary)のみにできて, wp-admin/nav-menus.php を開いた時でメニューが存在しない場合に $one_theme_location_no_menus がアサートされて,自動でメニューのテンプレートが作成される(保存はされない).でもこれは比較的どうでもいい.

function remove_social() {
    unregister_nav_menu( 'social' );
}
add_action( 'after_setup_theme', 'remove_social' , 20);

header.phpから呼ばれるwp_nav_menu() (nav-menu-template.php) でメニューを表示するのだが,メニューを作っていない状態だとfallback_cbのwp_page_menu() (post-template.php)が呼び出される.これがメニューを自動で作る部分で,以下のファイルを開いてみたりすると確認できる(wp_nav_menu を wp_page_menu に置き換えたりしてみる).

[test.php]
<?php
require_once( dirname(__FILE__) . '/wp-load.php' );
wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu' ) );

メニューを作っていない状態だとやはり Twenty Sixteen ではメニューが表示されない.これは header.php で if ( has_nav_menu( 'primary' ) ) という条件付で wp_nav_menu() が呼び出されるから.ということで,header.php を修正して無理やり wp_nav_menu() を呼び出してみると,メニューは自動で生成されるが,手動で作成したメニューと体裁が異なる(右側に縦積みになってしまう).

手動で作ったメニュー(通常のメニュー)の場合 <div class="menu-menu-1-container"> として生成されるが, wp_page_menu() が生成するのは <div class="nav-menu"> で,これで見た目が違ってくるらしい.あまりthemeをいじりたくないので,仕方なく手動でメニューを生成することにして,項目が多くなってきたらなにがしかpluginを導入するしかなさげ.

2016/05/02 11:01 / WordPress Link Manager

いつも Link Manager を Enable するやりかたを忘れるので備忘メモ.

WordPress (現在 Version 4.5.1) だが,以前は Link Manager なるものが存在してこれでリンク一覧を管理できたのだが,Version 3.5 以降はこの機能が Off になっている.

で,これを Enable する(だけの)Plug-in が Link Manager.中身は以下のみ.

add_filter( 'pre_option_link_manager_enabled', '__return_true' );

ちなみに link list を sort するには「評価 (rating)」を使うと比較的自由に 並び替えができる(なにで sort するかは Widgets の設定の箇所で行う).ただし rating の値は 0 から 10 まで.

2016/04/01 11:44 / lftp 4.7.0

lftpだが,4.6.4から4.7.0でいろいろ変わったらしくmirrorに躓く.

まず以下のようにEPSVコマンド(RFC 2428)を発行してしまい,私が使っているサーバでは以下のような感じでコケる.

---> EPSV
<--- 501 EPSV: Not owner
---- Switching passive mode off
---> LIST -a
---> ABOR
---- Closing aborted data socket
---- Closing control socket

ftp:prefer-epsv trueがdefaultになったらしく,EPSVではなくPASVを使うようにするには,以下の設定が必要.

set ftp:prefer-epsv false

あと,どうもmirrorコマンドを実行した際に一部ファイルでタイムスタンプが「適切に」取れない気配があって,最新版になっているのに無駄にファイルを転送してしまう.サーバとの相性もあるのかもしれないが.これはMLSDコマンドをdefaultで使うようになったかららしい.これを元の挙動,つまり4.6.4のdefaultに戻すには以下の設定をする.

set ftp:use-mlsd false

これでMLSDのかわりに,LIST -aして各ファイル/ディレクトリに対してMDTMでタイムスタンプを取得するようになる.もちろんmirror速度は落ちる.MLSDもMDTMもRFC 3659のコマンドなのだが,なにやら実装がいろいろあるらしい.

以上,該当するchangelogは以下のような感じになっている.

[/usr/share/doc/lftp/changelog.gz]
Version 4.7.0 - 2016-03-28
(snip)
* ftp: prefer EPSV by default.
* ftp: enable MLSD by default (when supported).
(snip)