ラベル Debian の投稿を表示しています。 すべての投稿を表示
ラベル Debian の投稿を表示しています。 すべての投稿を表示

2016/01/20

Perlでuniq

データリストとか眺める時に,項目数を数えたり,重複を排除して数えるっていうのはよくやります.Unix系のコマンドラインなら,

     % cat list | sort | uniq | wc -l

で出来ます.これをPerlでやりたいなと思ったが,どうやらuniqはPerl標準にはない模様.少し調べてみると,Array::Uniq で出来そうなので,

     % cpan install Array::Uniq

で投入.これが Mac での出来事.

***注***
このまま記事は残しますが,Perl で uniq するだけなら,keys (連想配列) する方が自然でした...こんなことも忘れてるとは(TдT)

     foreach (@input) {
       $xx{$_} = 1;
     }
     sort {$a <=> $b} keys %xx;


*******

で,Debian 環境でも同じスクリプトを動かす必要が出てきたので持って行った.

     % apt-cache search Array::Uniq

で, libarray-unique-perl が引っかかったので, install しても Array::Uniq が無いと言って動かない.よく見ない私が悪いのは明らかなのだが,入ったのは Array::Unique だった... Debian パッケージがさくっと見つかって,するする行けると思えていたのでなかなか衝撃的でした.

パッケージシステムにどっぷり(下手に逸脱したくない)なので,cpan で一般ユーザでインストールして .zshenv に PERL5LIB 書いて対処することにした.こんなこともあるんだなぁー.

ちなみに,Array::Uniq は uniq コマンドと同じ考えで良くて,

                uniq sort @input; (uniq 相当 ※重複をなくして出力)
                distinct sort @input; (uniq -u 相当 ※重複している行だけを出力)
                dups sort @input; (uniq -d 相当 ※重複していない行だけを出力)

だそうです.一方で, Array::Unique は,  @array に値を入れる都度 uniq が発動されるようです(使ったことはありません).

(余談)
@ から後を入力してたら,ユーザ候補が出てきた. Blogger も @ でユーザ管理してるんだっけ? Twitter の流儀を Facebook も流用してたりしてますが(Twitterより前の文化は知りません).

2015/11/12

Debianで smtp.gmail.com を使ったExim4を設定する

Debianで smtp.gmail.com を使ってメール送信するように Exim4 を設定したかったのだけど,なかなか出来なかったのだが,DNSと設定の罠だった...

(結論)
SMTP-AUTH用の /etc/exim4/passwd.client に,
smtp.gmail.com:login-user-name:password
だけじゃなくて,
gmail-smtp-msa.l.google.com:login-user-name:password
も書く.

(以下,詳細)
% sudo dpkg-reconfigure exim4-config
で再設定.スマートホストのところでは,
smtp.gmail.com::587
を設定した(Google ヘルプ参照).

で,SMTP認証が必要なら Debian の README を読めとあったので
/usr/share/doc/exim4-config/README.Debian.gz
を読む.設定方法は,manを参照せよというので参照.
% man 5 exim4-config_files

/etc/exim4/passwd.client
というファイル(所有権注意.root:Debian-exim 0640から変更するなよと README.Debian に書いてある)に,
target.mail.server.example:login-user-name:password
で書けば良いらしい.

が,
% mail someone@example.org
とかでテストメールを送ってみると,Mailer-Daemon@localdomain さんからエラーメールが届く.

で,/var/log/exim4/mainlog を見てみると,
R=smarthost T=remote_smtp_smarthost X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128 DN="C=US,ST=California,L=Mountain View,O=Google Inc,CN=smtp.gmail.com": SMTP error from remote mail server after MAIL FROM:<xxx@localdomain> SIZE=1429: host gmail-smtp-msa.l.google.com [74.125.23.108]: 530-5.5.1 Authentication Required. Learn more at\n530 5.5.1  https://support.google.com/mail/answer/14257 fx3sm11601723pbb.60 - gsmtp

というようなことが書いてある.これは Mailer-Daemon@localdomain さんからのメールと同じ内容.TLS はちゃんと出来ているようだが,認証で失敗しているのが分かる.ただ,パスワードが間違ってるとかではないので, /etc/exim4/passwd.client を読んでないとかなのだろうか?と悩んでいたのですが,,,,よく見るとエラーメッセージの中のホスト名が smtp.gmail.com じゃない!

% host smtp.gmail.com
smtp.gmail.com is an alias for gmail-smtp-msa.l.google.com.
gmail-smtp-msa.l.google.com has address 74.125.23.108
gmail-smtp-msa.l.google.com has address 74.125.23.109
gmail-smtp-msa.l.google.com has IPv6 address 2404:6800:4008:c02::6c

で確認すると,gmail-smtp-msa.l.google.com が出てきた.
というわけで, /etc/exim4/passwd.client に,

smtp.gmail.com:login-user-name:password
だけじゃなくて,
gmail-smtp-msa.l.google.com:login-user-name:password
も書いてあげたら通った.

これで一応設定できたわけだけど,何かの気まぐれで smtp.gmail.com が gmail-smtp-msa.l.google.com じゃない名前を返してきたらまた認証に失敗することになってしまうのだろうか...自動転送を仕込みたいのでちょっと不安.


2015/05/13

VMWareのlinuxゲストOSでレジューム時に時計を合わせる

VMware で Debian 環境をかろうじて維持していたのだが,VMware を終了(ゲストOSをサスペンド)して戻そう(レジューム)とすると, Debian 側の時計が狂っていることがしばしば(というか,必ず)です.Linux で時計を合わせたければ ntp (openntp) を使うのが良いわけだが,サスペンド時間が長いと時刻同期がされなくなるという問題がある.
時計を合わせるには, ntpdate パッケージをいれて手動で,
 $ sudo /usr/sbin/ntpdate-debian
とするのが無難である.が,,,これはレジュームの都度実行しなければいけないので非常に面倒です.

で,自動で合わせてくれないものだろうか...と悩んでいたところ, VMWare-Tools でどうやらOKらしい.今回,コマンドラインしか使っていなかったので X window のスムーズな連携とかが不要だったので, VMWare-Tools を入れようと全く思ってなかった...

幾つかパッケージが必要( kernel header だけ入ってなかったのでいれました)なようで,インストールしてから VMWare-Tools のインストーラーでインストール. kernel 関係もあるので,reboot してからサスペンド&レジュームしてみたところ,みるみる時刻が修正された.

参考:
VMWareにてインストールした Debian(Ubuntu) に vmware-tools をインストールする
Ubuntu 仮想マシンに VMware Tools をインストールする

2014/04/26

install Ubuntu

Windows XPのサポート終了と同時に,唯一残っていたDELL Note PCをUbuntuにした.

USBメモリ作成→bootableとして認識されず.しれっとHDDからXPが起動してしまう.内部HDDからの起動をなしにしてUSBだけにしたところ,bootableじゃないよというメッセージ.

DVDを.cdrに一旦変換してからディスクユーティリティで書き込みで成功!

びっくりは,インストーラーを起動したつもりが,すでにUbuntuが起動していること.デスクトップにあるinstallアプリ(?)を起動すると内部HDDに入れてくれる.

完成.


2013/06/04

php5の警告メール


続いて,PHP関連の大量エラーメールへの対処.

Subject: Cron <root@xxx>   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -ignore_readdir_race -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete
めっさ長い・・・・(xxxはホスト名)

本文は,以下の通り===
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525+lfs/suhosin.so' - /usr/lib/php5/20100525+lfs/suhosin.so: cannot open shared object file: No such file or directory in Unknown on line 0===ここまで===

確かにそのようなshared fileは無い.
% ls -l /usr/lib/php5/20100525+lfs/
Total 188K
-rw-r--r-- 1 root root  70K  3月  5 01:17 curl.so
-rw-r--r-- 1 root root 106K  3月  5 01:17 pdo.so

で,やっぱりパッケージを消せば良いらしい.

% sudo apt-get purge php5-suhosin

こちらのメールの頻度は,30分毎だからかなりうざったい.私の環境の場合,毎時09|39分に届いてた.


2013/06/03

info: mpt raid status change on xxx

デスクトップPCに用意していたDebian環境をMac MiniのVMWareに移動するついでにsqueezeをクリーンインストールした(その後,wheezyにupgrade済み)んだけど,,,次々にメールが来ていて,いいかげん "You have mail." と都度言われるからmailコマンドで消してたんだけど,いかんせん数が多くなってきて疲れた....

というわけで,まずはPOP (popa3d)をVMWareのPrivate Networkなんだから平文パスワードでええだろとデフォルト設定で構築(apt-get install popa3d だけで設定は不要).これでメールの削除は簡単に出来るようになったわけだが,いや,まじめに,,,と思い直して,根本の原因を探る旅に出て見ることにした.

最初の敵は,
Subject: info: mpt raid status change on xxx
  xxx のところはホスト名

Google先生にお聞きしたところ,RAIDなんて組んでないのに余分なパッケージが入ってるからダメなのだと...
sudo apt-get purge mpt-status
でオシマイ.

ちなみに,メール本文はこんな感じ.

          This is a RAID status update from mpt-statusd.  The mpt-status
          program reports that one of the RAIDs changed state:


          Report from /etc/init.d/mpt-statusd on orion

補足:このメールの頻度は2時間毎(自分の場合は偶数時53分だった)
参考:夢見る大学生のはてな日記

2013/04/12

Debianで時計合わせ

むぅ.... VMWare Fusion上でDebianを1台動かしていたんだけど,サスペンドしたままレジュームするのを忘れていた.すると,,,,時計が完全に狂った.Windowsとかだと,HOST OS(Mac)と合わせるとかいうオプションがあったけど,,,

そんなわけで,Debian流NTPサーバ設定.

/usr/sbin/ntpdate はサーバを引数に与えなければいけないので,ntpdate-debian(8) では,/etc/default/ntpdate にサーバを書いておけば
/usr/sbin/ntpdate-debian
で同期してくれる.


2013/03/12

dhcp設定

しょっちゅう忘れるので自分用のメモ

Debianでのネットワークインタフェースに対するIPアドレスの制御は
/etc/network/interface
で出来る.


インストール時にDHCPで設定してるとこんな感じになっているはず.

% cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp


これを固定IPアドレスに変えるには,

iface eth0 inet static
  address 192.168.0.100 (IPアドレス)
  netmask 255.255.255.0 (ネットマスク)
  network 192.168.0.0 (サブネット)
  gateway 192.168.0.1 (ゲートウェイ)
  dns-search private (ドメイン名) ← 必要な場合のみ
のようにすれば良い.


2011/12/16

Dropbox for linux

ともかく,作業中のファイルはDropboxに入れるべしと反省して,LinuxにもDropboxを入れようとトライ.
https://www.dropbox.com/ には,Linuxがあるのは見えてたけど,特に必要性を感じてはいなかった.が,Mac Book Airの入院でともかく準備はしておこうと決意.そしたら,なんとDebian (.deb) パッケージがあるじゃないですか.ということで,サクっと dpkg -i でいけると思ったら,lennyでは依存パッケージが古くてダメだった....

というわけで,まずは,lenny -> squeeze upgradeをやってから,dpkg -i でインストール.nvidiaの設定がうまく出来ず,面倒になって,とりあえずvesaでX起動してやるぞ!と.

dpkg -L でパッケージリストを確認すると,
$ /usr/bin/dropbox
があるので,とりあえず実行(マニュアル読む気なし).

引数にコマンドをつけろというので,それっぽい start をしていして,
$ /usr/bin/dropbox start

が,daemonが居ないじゃないかと怒られる.
$ /usr/bin/dropbox start -i
で開始.

今度は,python-gpgme が無いと警告が出たので入れて,改めて,
$ /usr/bin/dropbox start -i
を実行.

すると,on-demandでダウンロードしてきて,~/.dropbox-dist/ になにやらぶち込んだみたい(表示されてるのは,Pythonの警告っぽいが...).

ほんで,いつもの画面でアカウント設定して,先に進む.いきなりrootのパスワードを要求される.悩みつつも,使ってる人居るという反応だったので問題も起こらないだろうと勝手に信じて,進む(どうやら,/etc/fstab に何か書きたかったようだが,失敗した.ってメッセージが表示された).
マウントは,
~/Dropbox
にされた模様.

これで終わり?ppt開けた(OpenOffice).たぶん,自動起動とかなんとか色々あるので,設定の工夫はあるんだろうな(パスワードがどこにどうやって保存されているのかもみてみたい).


2011/05/12

キーマップ変更

昔インストールしたDebianが,日本語キーボードでインストールしていたのですが,場所を移動したと同時にキーボードも英語キーボードに変わったので,設定変更.

Debian流にいくと,
 $ dpkg-reconfigure console-data
で,
  qwerty, US american, Standard, Standard
で,HHKが普通に使えるようになりましたぁ〜

Debian DHCP設定

固定IPアドレスだったサーバを引退させて,手元のデスクトップとして使うために持ってきたのに伴って,DHCPに変更しようとしたらハマってしまいました・・・

DHCPクライアントとして動作させるには,/etc/network/interfacesを書いただけでは不十分で,dhcp3-clientパッケージが必要なのだそうだ.というわけで,引越し前にdhcp3-clientは入れておきましょう(ネットワークがあるうちに).

$ apt-get install dhcp3-client

その上で,/etc/network/interfacesを編集することになりますが,その前に,
 $ /etc/init.d/networking stop
でネットワークインタフェースを落としておきましょう.

そのあとで,/etc/network/interfacesの
  iface eth0 inet static
の行を,
  iface eth0 inet dhcp
に変更して,それ以下のaddressなどは全て削除(コメントアウト)します.

修正したら,
 $ /etc/init.d/networking start
でネットワークインタフェースを有効にします.このとき,DHCPサーバを参照します.

うまくいけば,IPアドレスを取ってこれます.
また,/etc/resolv.confも自動的に更新されるはずです.


2007/07/24

Nvidia kernel module

lennyで、kernelが 2.6.18 から 2.6.21 へ上がったので nVidia ドライバを更新しようと思って
コンパイルしたら、コンパイルで失敗しました。

   FATAL: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol 'para
   virt_ops'
   make[3]: *** [__modpost] Error 1
   make[2]: *** [modules] Error 2
   NVIDIA: left KBUILD.
   nvidia.ko failed to build!
   make[1]: *** [module] Error 1
   make: *** [module] Error 2


どうやら、kernel moduleのconfigの問題らしくBTSにも上がっていた。
CONFIG_PARAVIRTをoffにすれば、とおるらしい。

Debianでのkernelのrebuild[[手順>Debian/build_kernel]]。
make xconfigの、

 processor type and features
  paravirtuarization supportが CONFIG_PARAVIRT


になります。

デュアルディスプレイ for Debian

nVidia GeForce 7800 を使って、Xをデュアルディスプレイで表示します。

Debian Sarge for amd64から,xserver-xorg をインストール.同時に,フォントも
適当にインストール.まずは,標準の環境で 1600x1200@60Hzのシングルモニタとして
起動.

/etc/X11/xorg.conf を編集して,二つ目のディスプレイを設定します.基本的には,
Section "Device"で,Screen 1を定義してあげます.

 Section "Device"
        Identifier      "NVIDIA 2"
        Driver          "nvidia"
        BusID           "PCI:5:0:0"
        Screen          1
 EndSection

 Section "Screen"
        Identifier      "Second Screen"
        Device          "NVIDIA 2"
        Monitor         "Generic Monitor"
        DefaultDepth    24
        SubSection "Display"
                Depth           24
                Modes           "1600x1200"
        EndSubSection
 EndSection

Second ScreenをDefault Screenの右に置いてあげます.

 Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
        Screen          "Second Screen" RightOf "Default Screen"
        InputDevice     "Generic Keyboard"
        InputDevice     "Configured Mouse"
 EndSection

テストのために,twmをインストールして,.twmrcを用意してXを起動すると
マウスがちゃんと飛んでいきました!

single screenとして起動する
デュアルディスプレイを何で制御するかによると思いますが,[[Debian/SAGE]]を
使う場合,いまのところ(2005-10-21)DISPLAY=0.0しか扱えません.上記の設定だと
DISPLAY=0.1が出来てしまいます.そこで,

 Section "Device"
        Identifier      "NVIDIA Corporation NVIDIA Default Card"
        Driver          "nvidia"
        BusID           "PCI:5:0:0"
        Screen          0
        Option "Twinview"
         Option "SecondMonitorHorizSync" "31-80"
         Option "SecondMonitorVertRefresh" "60"
         Option "MetaModes" "1600x1200,1600x1200"
         Option "TwinViewOrientation" "RightOf"
         Option "ConnectedMonitor" "DFP,DFP"
 EndSection

という設定に変更すると,DISPLAY=0.0が大きくなったように見えます.

 % DISPLAY=0.0 xdpyinfo |grep dimension
  dimensions:    3200x1200 pixels (813x305 millimeters)

1600x1200が横に二つ並んだXができあがります.

Looking Glass (http://pcweb.mycom.co.jp/articles/2004/11/02/lg3d/ )というのが
楽しいらしい。まぁ、これはシングルディスプレイでもいいですが、せっかくだから
デュアルでやると面白いかも。

lenny (kernel 2.6.21)とnVidiaドライバの組み合わせトラブるが
発生しました。その時のメモ

2007/05/15

VMWareの時計

最近手に入れたCore2duoなマシンにDebian lenny を入れてVMWareを使ってGuest OSにWindows XPを入れています.が,どうも時計がすぐに遅れ始めてしまう.Windowsな世界のNTPサーバを持っていないのでNTPサーバの設定もできず困っていたんだけど,やっと解決した.

# ちょっと調べりゃすぐにわかる話だった・・・・


このFAQは,windows host の場合の話だけど,何のことはない最後に書いてある仮想マシンとホストOSの間の時刻同期という設定を入れてあげるだけでよかった.

解決してよかったよかった.

2006/01/11

Java on Debian

DebianでSunのJavaを使う場合のメモです

でびあんでじゃばが非常に参考になります。

ただ,SunのJavaパッケージを取得するのにいつも手間取るの
ですが,アーカイブページから必要なものを持ってくることが出きるはずです.

lennyなマシンでの、java環境。

% dpkg -l | grep -i sun-java
 ii  sun-java5-bin                        1.5.0-11-1                  Sun Java(TM) Runtime Environment (JRE) 5.0 (
 ii  sun-java5-demo                       1.5.0-11-1                  Sun Java(TM) Development Kit (JDK) 5.0 demos
 ii  sun-java5-fonts                      1.5.0-11-1                  Lucida TrueType fonts (from the Sun JRE)
 ii  sun-java5-jdk                        1.5.0-11-1                  Sun Java(TM) Development Kit (JDK) 5.0
 ii  sun-java5-jre                        1.5.0-11-1                  Sun Java(TM) Runtime Environment (JRE) 5.0 (
 ii  sun-java5-plugin                     1.5.0-11-1                  The Java(TM) Plug-in, Java SE 5.0