アーカイブ

Archive for the ‘GNU/Linux’ Category

www.msmrrenda.net リプレース計画day2

いままではごちゃまぜに置いていた非公開ページを別ホストに分離しようとしてはまった件。

通常、公開用ページは ~/public_html に置きますが、ホームは全ホスト共有です。
したがって、非公開ページを ~/private_html に分離しました。

ところが、なにやってもcgiが呼び出せません。

Mar 4 22:22:24 ainya suexec[1158]: command not in docroot (/home/renda/private_html/env.cgi)

で、suexec -V とかしてみるとこんなことが書いてあります。

-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_SYSLOG
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"

public_htmlでしか動かないんかーい。
安全上このディレクトリ設定はハードコードされており変更できないようです。
選択肢は二つ。apache全体のリビルドか、バイナリ弄ってGORIOSHI。
ま、手間的に後者かな!!!!

public_htmlよりもprivate_htmlの方が1文字長いので、この際private_htmになっていただきました。が、なぜか動かない。

Mar 4 22:50:08 ainya suexec[1375]: uid: (500/renda) gid: (500/renda) cmd: env.cgi
Mar 4 22:50:08 ainya suexec[1375]: failed to setgid (500: env.cgi)

あれ?suidかsgidでもついてたかなん?と思い、他ホストと見比べます。cap2
cap3
パーミッションは変わらないけどなんか赤い。これはいったい・・・。最悪apacheのリビルドも覚悟し、srpmの中身を覗いてみたら・・・

%caps(cap_setuid,cap_setgid+pe) %attr(510,root,%{suexec_caller}) %{_sbindir}/suexec

そっかー。
cap1

# setcap 'cap_setgid,cap_setuid+ep' /sbin/suexec

したら動きましたとさ。善い子の皆さんは横着せずにapacheをrpmbuildしましょう・・・

カテゴリー:GNU/Linux タグ:

Fedora24以降こわれちゃったsakuraを治す

gnome-terminalがevilwm上で日本語入力できなくなってしまって以降愛用しているsakuraですが、Fedora24に上げた後からSegmentation Faultで上がってこなくなってしまいました。

このバグがFedora25でも治っていなかったので、しびれを切らして自分でrpmbuildしました。

  1. dnf install vte291する
  2. yumdownloader –source sakura でFedoraのsakuraのソースをダウンロード
  3. rpm2cpio sakura-3.2.0-2.fc24.src.rpm | cpioでばらしてsakura.specを取り出す
  4. 公式からsakura-3.4.4.tar.bz2をダウンロード、rpmbuild/SOURCESに置く
  5. Versionを3.3.4に書き換えて、BuildRequires: pkgconfig(vte-2.90)をvte-2.91にかきかえて、
  6. れっつrpmbuild -ba sakura.spec

以上、Fedora25向けにbuildした完成品はこちら
Fedora24では動作確認してませんが、原理上同様の修正で動くはずです。
specファイルだけの簡単な修正なのでSRPMは置いてませんが、欲しい方はお知らせください。

カテゴリー:GNU/Linux

dnfとrpmがsegmentation faultするようになったFedora23マシンをなんとかする

研究室で少し前に作ったデスクトップ環境にプリンタドライバを入れていなかったことに気付き、
canonのドライバを適当にdnfで突っ込んだ時に何らかの事故が発生。

どこかのライブラリが中途半端に更新されたのか、dnfとrpmがセグメンテーション違反で完全に動作しなくなりました。
「とりあえず何が原因か調べるかー」とgdb rpmをした瞬間、rpmを起動しようとしたgdbが死にます。
コアダンプを別のマシンに運んで検死を試みるもバージョン違いでうまく原因が特定できず。

原因はライブラリのバージョンが中途半端に更新されたことっぽいので、どうにか直そうとしてみます。
1. Fedora23のインストールディスクで起動。
2. グラフィカルインストーラが上がってきたらCtrl+Alt+F1でコンソールへ。
3. sda2にあるLVMをactivate
4. root filesystemを/mnt/tmpにマウント
5. /mnt/tmp/etc/yum.repos.d を /etc/yum.repos.dとしてコピー
6. dnf –installroot=/mnt/tmp –releasever=23 update
で、とりあえずなんかライブラリは更新されたっぽい。
chroot /mnt/tmp → rpmが落ちなくなったことを確認し、再起動。

教訓:何かを入れる前にはいったんdnf updateしましょう

カテゴリー:GNU/Linux タグ:

dnf-plugin-system-upgradeを入れたらdnfまるごと動かなくなった

2015年11月8日 1件のコメント

Fedora23導入第一陣としていつもどおりサブ機を犠牲にしようととりあえずdnf-plugin-system-upgradeを入れたところ、
dnfそのものが「プラグインの読み込みに失敗しました: system_upgrade」でこけるように。
パッケージのバージョンがまずかったかとdnf updateしようとしてもdnfが動かないのであわや詰みか、という状況に。

dnfとかyumとかfedupとかpreupgradeとかが動かなくなった時はとりあえずロケールをCにしてみるべし、
ということでとりあえずLC_ALL=C,LANG=Cにして再実行。例によって動いてしまいました。

プラグインのバグでdnf全体が動かなくなるの、これ設計としてまずいんじゃないかなぁ・・・

2015/11/8 22:50追記
この状態でdnf system-upgradeかけたら再起動ループになって上がってこなくなりました。
暫定対処としては
1. シングルユーザで上げる
2. カーネルオプションと/etc/locale.confをLANG=Cに設定して再起動
3. とりあえずアップグレードに失敗して元の環境は戻ってくる
という感じ。

2015/11/9 22:40追記
で、肝心のアップグレードは/etc/locale.confをLANG=Cにした状態で行うと成功しました。
あまりお勧めはしませんが、upgradeしたいだけなら以下の手順でとりあえず上がりはします。
1. /etc/locale.confの中身をコメントアウト
2. Cロケール環境下でdnf system-upgrade
3. 再起動、一応カーネルオプションのLANGも削っておく
4. ここでアップグレードされるはず
5. F23が上がってきたらlocale.confを戻す
Fedora23では日本語ロケールでもdnf全体がちゃんと動くようです。

2015/11/11 19:20追記
パッチが上がっていたのでRPMを作りました。バージョン番号0.7.0-2扱いにしてあります。

2015/11/17 13:55追記
パッチは不完全で、system_upgradeプラグインが一部のエラーメッセージを出そうとした時にクラッシュします。通常は問題ありません。
たとえば、fedup –iso とかやるとクラッシュします。

2015/11/22 12:00追記
不完全だった上記のパッチが数日前にrevertされたようです。完全なパッチが上がっており、0.7.1に向けて調整中の模様。

2015/12/14 15:50追記
0.7.1-1がリリースされていました。これをもって解決。

カテゴリー:GNU/Linux

raspberry pi 2でバスパワー駆動のUSB HDDを認識しなかった

Fedora22を動作させているraspberry pi 2にUSB HDDを接続したところ、
HDD側の基盤のパワーランプは点灯するもののdmesgにもlsblkにもlsusbにも表示されません。

どうしたもんかと調べてみるとpi2ではバスパワーでの1.2A給電に対応したもののデフォルトでは0.6A制限がかかっているとのこと。
/boot/config.txtにmax_usb_current=1と書くと1.2A出力モードになるようですが、もちろんそんな環境固有の設定ファイルはFedoraにはありません。
さらに調査を進めるとその設定はgpio38に連動しているということがわかりました。gpioコマンドはないのでsysfsを叩きます。


# echo 38 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio38/direction
# echo 1 > /sys/class/gpio/gpio38/value

とりあえずrc.localに書いてみたものの、これ多分ローカルファイルシステムがマウントされた後に走るからfstabにusbhdd書いてもマウントされないんだよなぁ・・・

カテゴリー:GNU/Linux タグ:

Fedora22のインストーラでCentOS7をインストールしてカーネルだけFedora22の4.0.6に差し替える

自分でも頭がおかしいと思いました、何が起こっても知りません

1. Fedora22 Server netinstのisoで起動します
2. リポジトリ選択で、自動から手動に切り替えてCentOS 7のリポジトリを入力します
( http://ftp.jaist.ac.jp/pub/Linux/CentOS/7/os/x86_64/ )
3. 追加のリポジトリにepelを追加します。これを怠るとdnfがなくてインストールできません。ミラーリストを使うとanacondaが落ちるので直接入力します。
( http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/7/x86_64/ )
4. インストールが完了した画面になったら、Ctrl+Alt+F2を押してコンソールに落とします
5. chroot /mnt/sysimageします
6. /etc/yum.repos.d/fedora.repoを以下の内容で作ります

[fedora-updates]
name=fedora-updates
baseurl=http://ftp.jaist.ac.jp/pub/Linux/Fedora/updates/22/x86_64/
enabled=0
gpgcheck=0

7. yum install –enablerepo=fedora-updates kernel-4.0.6-300.fc22.x86_64
8. exitして再起動します
9. できあがり

カテゴリー:GNU/Linux

Fedoraからandroidデバイス(MTPモード)をマウントする

FedoraからAndroidデバイスはデバッグモードでしかつないでいませんでしたが、
MTPでデータを取り出す必要がでてきたので調査。
simple-mtpfsがユーザランドだけで使えて便利そうな感じ。

simple-mtpfsのインストール

# dnf install simple-mtpfs

マウント

$ simple-mtpfs -l
1: Google Inc (for LG Electronics/Samsung)Nexus 4/5/7/10 (MTP)
$ simple-mtpfs --device 1 ~/mnt/usb

デバイス指定はひとつだけの場合は不要。
アンマウントはsshfs同様にfusermount -u で。
日本語もちゃんと表示されています。

カテゴリー:GNU/Linux タグ: