:::: MENU ::::
Browsing posts in: Linux

sudoでPATHの環境変数を引き継ぐ

sudoした後に、「パスが見つかりません」とパスの設定が変わる場合には、sudoの設定でPATH環境設定を引き継ぐ事が出来ます。

/etc/sudoersに下記一行を追記します。

Defaults env_keep += “PATH”

# visudo
….
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults env_keep += "PATH"

保存後、再ログインして、sudoで確認してみる。


Scientific Linux 6.3から6.4へアップデート

CentOSみたいにyum updateしちゃったら、いつの間にかアップグレードされてたよ!って事を、sl6では致しませんので、手動でアップグレードする必要があります。

自分のマシンやテストマシンだったら、勝手にアップグレードされても構わないのですが、安定重視の共有サーバだと下手にアップグレードさせたくないので、その点はsl6が使いやすいです。

そんな訳で、手動でSL6 6.3を6.4へアップグレード

  1. 6.3上で最新版にしておく(必要ないかも)
    # yum update
  2. # yum clean all
  3. yum –releasever=6.4 update
  4. 再起動
  5. 確認
    $ cat /etc/redhat-release
    Scientific Linux release 6.4 (Carbon)

以上


gitのpushでGtk-WARNING **: cannot open display:と出た場合

環境によって、git pushした場合に、下記のエラーが出る場合がある。

(gnome-ssh-askpass:28497): Gtk-WARNING **: cannot open display:

コマンドラインで操作している場合に、GUIで起動しようとして失敗するよう。

なので、

$ unset SSH_ASKPASS

を実行して、git pushすると良い。


OpenSuse 12.xでMongoDB

openSUSE 12.1を使ってますが、zypperパッケージにはないので、下記のリポジトリを追加してインストール出来ますね。

# zypper ar http://download.opensuse.org/repositories/server:/database/openSUSE_12.2/server:database.repo
# zypper in mongodb

12.2でも同じです。


Vimでctagがないよって時

Vimを立ち上げた際に、下記のようなエラーが出た。

Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not
loaded.

こんな時には、ctagsをインストールしてあげるだけでOKですね。

CentOS/RedHat系

# yum install ctags

Ubuntu/Debian系

# apt-get install ctags

CentOS 5.xのvimが古いので手動でインストール

CentOS 5.x上のyumパッケージでは、vimが7.0と古いので、手動で7.3をインストールした。 7.0のvimで、Bundle導入していると、下記のような沢山のエラーが表示されてしまいます。

……

121: 未定義の変数です: g:unite_source_directory_mru_file
E116: Invalid arguments for function filereadable(g:unite_source_directory_mru_f
ile) && s:mru_file_mtime != getftime(g:unite_source_directory_mru_file)
E15: 無効な式です: filereadable(g:unite_source_directory_mru_file) && s:mru_fil
e_mtime != getftime(g:unite_source_directory_mru_file)
function unite#sources#directory_mru#_append..<SNR>49_save の処理中にエラーが検>
出されました:

….

epelやrpmforgeでもパッケージがないようなので、手動にてインストールです。

  1. まずは、yumでインストールしたvimをアンインストール
    $ sudo yum remove vim vim-enhanced 
  2. ソースのダウンロード
    $ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
    $ wget ftp://ftp.jp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz
    $ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz 
  3. 解凍
    $ tar jxvf vim-7.3.tar.bz2
    $ tar zxvf vim-7.2-extra.tar.gz
    $ tar zxvf vim-7.2-lang.tar.gz 
  4. コンパイル
    $ mv vim72 vim73/
    $ cd vim73 $ cd src
    $ ./configure --enable-multibyte --with-features=huge --disable-selinux --prefix='/usr/local/vim-7.3' 
  5. インストール
    $ sudo make install 
  6. リンク付け
    $ sudo ln -s /usr/local/vim-7.3/bin/vim /usr/local/bin/ 

Sublime Text 2をVim互換にする設定

Sublime Text 2のキーバインディング等、Vim仕様にする。

Sublime Text 2を起動し、PreferencesのSettings – Userを選んで、下記を追記するだけ。

“ignored_packages”: [“”]

ちなみに、この記述はSettings – Defaultの最下部に記載されているので、そこからコピー。

Defaultは、”ignored_packages”: [“Vintage”]となってます。

また、設定項目を複数記述していれば、,(カンマ)に注意。
途中に記述する場合は、カンマを付け、最終項目はカンマを外すこと。


CentOSにAVGインストール

CentOS 6.3にアンチウィルスソフト「AVG」をインストールした。

ダウンロード

$ wget http://download.avgfree.com/filedir/inst/avg2013flx-r3110-a6015.i386.rpm 

インストール

$ sudo rpm -ivh avg2013flx-r3110-a6015.i386.rpm

OS起動・再起動時に自動起動するように

$ sudo chkconfig avgd on

手動で起動

$ sudo service avgd start Starting avgd [失敗]

手動で定義ファイルアップデート

$ sudo avgupdate /usr/bin/avgupdate: /opt/avg/av/bin/avgupdate: /lib/ld-linux.so.2: bad ELF interpreter: そのようなファイルやディレクトリはありません /usr/bin/avgupdate: line 17: /opt/avg/av/bin/avgupdate: 成功です

何だかエラーで起動しませんねー ld-linux.so.2がないらしいので、インストール

sudo yum install ld-linux.so.2

再度、手動起動

$ sudo service avgd start Starting avgd [ OK ] 

上手く起動したので、ウィルス定義も再度更新

$ sudo avgupdate
AVG command line update Copyright (c) 2013 AVG Technologies CZ

Running update. Initializing... Downloading file: avg13infolx.ctf Analyzing... Downloading file: u13iavi6100u5196nw.bin 1 / 2 16.46 M Downloading file: lx13core2639b2637pe.bin 1 / 2 16.46 M Analyzing... Preparing installation... Updating... 100% [===================================]

Update was successfully completed.

ウィルス定義更新を毎日更新

$ sudo crontab -e 0 0 * * * /usr/bin/avgupdate > /root/avgupdate.log 2>&1

これで準備は整いました。

ウィルススキャン

まずは、homeディレクトリでもスキャンしてみる。

$ /usr/bin/avgscan /home

Virus database release date: Tue, 12 Feb 2013 21:21:00 +0900

Files scanned : 4671(4502)
Infections found : 0(0)
PUPs found : 0
Files healed : 0
Warnings reported : 0
Errors reported : 0

tail avgscan.log
Virus database release date: Tue, 12 Feb 2013 21:21:00 +0900

ウィルスチェックを定期的に実行

スキャンするディレクトリを複数指定しますが、/devや/mntは指定しない方がよいでしょう。

$ sudo crontab -e
0 1 * * * /usr/bin/avgscan /home /sbin /bin /usr --report=/root/avg_report.txt > /root/avgscan.log 2>&1

これで、完了です。

ウィルス定義更新とウィルスチェックをcronに登録しましたが、/etc/cron.dailyや/etc/cron.weeklyに自作スクリプト入れても構いません。

私は、/etc/cron.daily下にavg.shのファイルを作りましたけど・・・

こんな感じなので、ご参考まで。


cat /etc/cron.daily/avg.sh

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
DATE=`date +%Y%m%d`
TARGET="/home /var/www"
REPORT=/var/log/avg.$DATE.txt
LOG=/var/log/avg.$DATE.log

/usr/bin/avgupdate
/usr/bin/avgscan $TARGET --report=$REPORT > $LOG 2>&1


Squirrelmailでログインできない(画面が真っ白)の原因と対策

ウェブメール老舗のSquirrelmailを運用していたが、急にログインが出来ない症状が出たので調査した。

環境

  • OS: CentOS 5.9
  • WebServer: Apache 2.2.3
  • PHP: 5.4.10
  • WebMail: Squirrelmail 1.4.16

不具合の原因

  • 突然、ログインが出来ない
  • ログインページからリダイレクト直後にエラーが表示される
  • ブラウザーによっては、ログインページが真っ白になる

調査

apacheやphpのログを確認したところ、下記のエラーが出ていた。

Fatal error: Call to undefined function session_unregister() in /var/www/html/webmail/functions/global.php on line 244

いろいろ、ググったところ、function/auth.phpとplugins/compatibility/function.php内のfunction sqauth_save_password($pass)関数が競合しているので、どちらかをコメントアウトすれば良いかも?との記事を見つけたが、解決に至らずに、原因は別にあった。

どうやら、http://php.net/manual/en/function.session-unregister.phpによると、session_unregister関数はPHP 5.3.0で非推奨となり、PHP 5.4.0で削除されたとの事。

session_unregisterが使えなくなったと言う事が判明したので、はて?次は何をするべきか、公式のSquirrelmailで情報を探ってみた。

Squirrelmailの公式ホームページによると、

ANNOUNCE: PHP 5.4 Compatibility
Dec 01, 2012 by Paul Lesniewski
With the recent release of PHP version 5.4, some community members have helped identify some small issues which we’ve fixed and made available in our daily snapshot packages located on our downloads page. Especially if you use the Mail Fetch plugin and want to upgrade to PHP 5.4, you should download one of our snapshot packages.

UPDATE:If you are running SquirrelMail under PHP 5.4, please help test and refine the patches found here. There is one patch for each of the two SquirrelMail SVN snapshot versions available on our downloads page.

との事なので、Squirrelmailのバージョンを上げて、一部パッチを当てることで解決しそう。

対策

  1. 現ディレクトリのバックアップ
     # mv /var/www/html/webmail /var/www/html/webmail.bak
  2. 最新版の取得(要Subversion)安定版
    # svn checkout http://squirrelmail.svn.sourceforge.net/svnroot/squirrelmail/branches/SM-1_4-STABLE/squirrelmail /var/www/html/webmail

     

    開発版

    # svn checkout http://squirrelmail.svn.sourceforge.net/svnroot/squirrelmail/trunk/squirrelmail /var/www/html/webmail
  3. 属性変更
    Apacheのユーザ・グループに属性を合わせる必要があるので、

    # chown -R apache:apache webmail 
  4. プラグイン導入
    必要なプラグインをPluginsディレクトリへインストール
  5. 再設定
    サーバ設定やプラグイン等を再設定します

    # cd /var/www/html/webmail/config/
    # ./conf.pl 

    データディレクトリが別ディレクトリに保存してあれば、再設定すると良いですが、webmail内に格納してあったら、バックアップディレクトリからコピーしておきましょう。

  6. パッチ適用
    必ずしもパッチを当てる必要はありません(表示がおかしくなった場合のみ)
    /var/lib/squirrelmail/dataにデータフォルダがある場合:
    (正規表現でエラーが出る場合には、メタ文字に¥マークを付けると良い)

    find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/trash_folder=Trash/trash_folder=INBOX.Trash/g’ {} \;
    find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/draft_folder=Drafts/draft_folder=INBOX.Drafts/g’ {} \;
    find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/sent_folder=Sent/sent_folder=INBOX.Sent/g’ {} \;

    DB使っている場合:

    UPDATE userprefs SET prefval = ‘INBOX.Trash’ WHERE prefkey = ‘trash_folder’ AND prefval = ‘Trash’;
    UPDATE userprefs SET prefval = ‘INBOX.Drafts’ WHERE prefkey = ‘draft_folder’ AND prefval = ‘Drafts’;
    UPDATE userprefs SET prefval = ‘INBOX.Sent’ WHERE prefkey = ‘sent_folder’ AND prefval = ‘Sent’;

この辺りまで来たら、もう少しです。

設定や環境に不具合がないか、確認URLで表示させてみます
http://your-squirrelmail-location/src/configtest.phpのように、webmailをインストールしたアドレスにsrc/configtest.phpを付加して確認します。

configtest.phpにアクセスして、エラー箇所がなければ、無事に起動することができました。

補足

参考までに、私の環境では下記のエラーが表示されました。

 ERROR: You have configured PHP not to allow short tags (short_open_tag=off).
This shouldn’t be a problem with SquirrelMail or any plugin coded coded according to the SquirrelMail Coding Guidelines, but if you experience problems with PHP code being displayed in some of the pages and changing setting to “on” solves the problem, please file a bug report against the failing plugin. The correct contact information is most likely to be found in the plugin documentation.

↑ php.ini内のshor_open_tag=offになっているので、Onにする。設定保存後は要Apache再起動

ERROR: You have set ja_JP as your default language, but I cannot find this translation (should be in ../locale/ja_JP/LC_MESSAGES/squirrelmail.mo). Please note that you have to download translations separately from the main SquirrelMail package.

↑ conf.plで設定した言語のロケールがないエラーなので、別途導入

  1. 最新版のロケールをダウンロード
    http://sourceforge.net/projects/squirrelmail/files/locales/
  2. 解凍
    # tar jxvf ja_JP-1.4.18-20090526.tar.bz2 
  3. インストール
    # ./install

    webmailのパスを指定(/var/www/html/webmail)

  4. poファイル作成
    # cd /var/www/html/webmail/po
    # compilepo ja_JP 

VundleでVimプラグイン導入

かなり以前から、Unix/Linuxでvi/vimを使っているんですが、恥ずかしながら、私も「いまさら聞けない .vim/bundle によるプラグイン管理」と同じ心境で、プラグインとは無縁の環境にありました。

今までに、プラグイン導入を試みたことはあるのですが、うまく動作しない事があり、ずっと諦め状態だったのです。

なので、今更ながら、Vimのプラグイン導入に挑戦です。

Vundleを使って、プラグイン管理(導入)します。(VimとGitが既にインストールされている事が前提です)

導入方法は、VundleのReadmeを見れば、ほぼ分かると思いますが、メモっておきます。

    1. Vundleを導入します
      $ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
    2. 自分のホームディレクトリ下に、.vimrcを作成・修正し、下記のように記述します
      $ vim ~/.vimrc
      set nocompatible " be iMproved
      filetype off " required! set rtp+=~/.vim/bundle/vundle/
      call vundle#rc() " let Vundle manage Vundle
      " required!
      Bundle 'gmarik/vundle' " My Bundles here:
      "
      " original repos on github
      Bundle 'tpope/vim-fugitive'
      Bundle 'Lokaltog/vim-easymotion'
      Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
      Bundle 'tpope/vim-rails.git'
      " vim-scripts repos
      Bundle 'L9'
      Bundle 'FuzzyFinder'
      " non github repos
      Bundle 'git://git.wincent.com/command-t.git'
      " … filetype plugin indent on " required!
      "
      " Brief help
      " :BundleList - list configured bundles
      " :BundleInstall(!) - install(update) bundles
      " :BundleSearch(!) foo - search(or refresh cache first) for foo
      " :BundleClean(!) - confirm(or auto-approve) removal of unused bundles
      "
      " see :h vundle for more details or wiki for FAQ
      " NOTE: comments after Bundle command are not allowed..
    3. 上記の.vimrcを保存したら、vimを終了し、起動し直します
    4. vimが起動したら、ESCキーを押し、:(半角コロン)キーを押す
      下部に:(半角コロン)が表示されたら、
      BundleInstallと打ち込むと、.vimrcで指定したプラグインが導入されます

    5. 導入途中では、下部にProccessing…と表示され、全て導入が終わるとDoneと表示され完了です。

 

プラグインの追加は、.vimrc内に、

Bundle ‘プラグイン’

のように明記して、BundleInstallするだけです。

また、プラグインの更新はBundleInstallに!(半角)を追加するだけで、更新されます。

BundleInstall!

後は、使いたいプラグインを探して、プラグインの使い方を覚えるだけですね。

分かってみれば、すごく簡単でした。


ページ:12345678910...15