蛇にお茶入れる

Pythonやその他プログラミングで学んだ知識のメモ用です

管理者権限なしでtmux 2.0をインストールしてみた

サーバの設定が吹っ飛んだのでこれを気に導入方法をあらためて書いてみた
↓の更新バージョンです.
管理者権限なしでホーム下にtmux1.9aをインストールしてみた - 蛇にお茶入れる

環境

CentOS release 6.4
$HOME以下の.optにインストールします.
$HOMEは適宜書き換えてください

tmuxを入れる前に

ncursesとlibeventとよばれるライブラリを入れないといけません.
ncursesを入れる記事は,すでにこちらに記述しております↓
管理者権限なしでホーム下にzshをインストールしてみた 改訂版2015/05/14 - 蛇にお茶入れる

それでは,libeventから導入したいと思います.

$ wget https://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz
$ tar zxvf libevent-2.0.22-stable.tar.gz
$ cd libevent-2.0.22-stable
$ ./configure --prefix=$HOME/.opt
$ make -j
$ make -j install

tmux 2.0 のインストール

$ wget http://downloads.sourceforge.net/tmux/tmux-2.0.tar.gz
$ tar zxvf tmux-2.0.tar.gz
$ cd tmux-2.0
$ export CPPFLAGS="-I$HOME/.opt/include"
$ export LDFLAGS="-L$HOME/.opt/lib"
$ ./configure --prefix=$HOME/.opt
$ make -j
$ make -j install

以上でtmuxのインストールは完成です.
起動時には,共有ライブラリパスにフォルダパスを通してやらないと,libeventが見つかりませんとエラーが出ます.そのため,LD_LIBRARY_PATHにlibフォルダのパスを通しています..

$ export PATH=$PATH:$HOME/.opt/bin
$ export LD_LIBRARY_PATH=$HOME/local/lib
$ tmux -V
tmux 2.0

サーバとローカルのフォルダを同期してみた

たまにサーバ上でファイルを編集して実行するという動作が必要になるのだが,vimのバージョンが古かったり,シンタックスハイライトが聞かなかったりと編集するためにめんどうなことが多かったのでどうにかできないかと考えてみた.

環境

方法1:ローカル Vimssh機能を使う

Vimには,標準でssh先のファイルを編集できる機能がついている(聞いた話によるとscpでローカルに落として編集後サーバにアップロードする).
Shougoさんが開発されたShougo/vimfiler.vim · GitHubもこの機能に対応している.
例えばvim上で以下のコマンドでssh先のファイルを一覧で出力し,編集することが可

:VimFilerExplorer ssh:[ssh先]

以前まではこれを使って編集していたのだが,たまにエラーが出る(一度ファイルを開いた状態で別のファイルを開くとエラーが出る.閉じればエラーがでない)といった問題がでてた.

方法2:ローカルvimで編集後,rsyncでサーバ上にファイルを上げる

タイトルのままの意味である.ただ保存したあとにいちいちコマンド実行するのがめんどくさかったので,ファイルを監視できるようにした.
os xでは,rsyncが元からインストールされているのだが,バージョンが古く監視するために使用するツールlsyncdでうまいこと監視することができなかった.
なので最新バージョンをインストールを行う.

$ brew install homebrew/dupes/rsync
$ brew install lsyncd lua

あとは,lsyncdの設定をいじるだけである.設定ファイルは,luaを使用できるみたいです.
私の場合,ホーム直下に.lsyncdフォルダを作成しその中にlsyncd.conf.luaを作成し編集を行いました.場所指定は特にない感じなので適当に自分の好きなようにつくるがいいかと..
最終的には,以下のようなファイルとなりました.

settings {
    logfile = '/var/log/lsyncd.log',
    statusfile = '/var/log/lsyncd.status',
    nodaemon = true, --falseだとdaemon
    insist = 2, -- 起動時に接続が失敗しても再接続を試みる回数
    delay = 0,
}

sync{
    default.rsync,
    source = '/target', -- 監視対象のディレクト
    target = 'user@server:/home/target',
    rsync = {
        binary = '/usr/local/bin/rsync',
        archive = true,
        compress = true,
        rsh = '/usr/bin/ssh -i /Users/.ssh/id_rsa'
    }
}

confファイルを作成後以下のコマンドで実行することができます.sudoが必要なみたいです.

$ sudo lsyncd lsync.conf.lua

DropboxでGoogle Driveの共有フォルダを同期させてみた

普段MacDropboxをメインに使用しているのだが,ある事情でGoogle Driveの共有フォルダを使用することになった.
わざわざそのためにMacGoogle Driveをインストールしたくなかったので,ちょっとやってみた

環境

  • windows7 (自宅用 これを介してDropboxGoogle Driveの共有を行います)
    • Googleドライブがインストールされている
    • Dropboxがインストールされている
  • Mac book
    • Googleドライブがインストールされていない
    • Dropboxがインストールされている

シンボリックリンクでリンクさせるだけ

やってみたら簡単でした.windowsで以下のコードを入力するだけでした

mklink /d "D:\Cloud\Dropbox\Project" "D:\Cloud\GoogleDrive\Project"

YosemiteでPhantomJS 2.0をソースからコンパイルするときに困ってた話

PhantomJS 2.0を使用してマクロを作ってたのだが,Upload Fileにinputがうまくいかず..
これは2.0のバグみたいで,ホームページでも1.9と比較してRegressionな部分としてあげられてました
PhantomJS 2.0 Release Notes | PhantomJS
Githubのissueに解決策があったので試してみました(Webpage.uploadFile not working in phantomjs 2.0 · Issue #12506 · ariya/phantomjs · GitHub)

やり方はすごく簡単で

src/qt/qtwebkit/Source/WebCore/html/FileInputType.cpp

を以下のようにコメントアウトするだけ

-    if (!ScriptController::processingUserGesture())
-        return;
+    // PATCH related to #12506 - commented out to allow programmatic form file uploads
+    //if (!ScriptController::processingUserGesture())
+    //    return;

あとはリビルドするだけなのが,yosemiteでソースからビルドするときにはまたバグがあるみたい
PhantomJS 2 does not build on OS X 10.0 (Yosemite) · Issue #12630 · ariya/phantomjs · GitHub
に書いてあるように公式からではなく,バグを修正したではなく以下のgitから2.0をクローン
https://github.com/bprodoehl/phantomjs/releases

そして公式ページに書いてあるとおりにビルド(Build | PhantomJS)しようと以下を入力

./build.sh --qt-config "-I /usr/local/include/ -L /usr/local/lib/"

これで完了かとおもったのだが,どうやらエラーが出てすすまないすすまないw
なんとか解決策を2日ほど探ってたのですが,参考になるのがあまりなく詰みかけてました.
最終的に --qt-configを付けなかったらどうなるんだという考えから

./build.sh

にするとうまくリビルドしてくれました.うん.うん...

あとは,./binの中身をphantomjsを/usr/local/binか何かにコピーするとうまくuploadにinputしてくれました!

管理者権限なしでホーム下にtmux1.9aをインストールしてみた

環境

CentOS release 6.4
prefix先 = $HOME/local

tmuxのインストール

ソースファイルを公式からインストールします
エラー対処しながらソースを書いています.適当に飛ばしてください

$ wget http://downloads.sourceforge.net/tmux/tmux-1.9a.tar.gz
$ tar zxvf tmux-1.9a.tar.gz
$ cd tmux-1.9a/
$ ./configure --prefix=$HOME/local

configure: error: "libevent not found"

的なことを言われたので,libeventを入れます

$ wget http://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.21-stable.tar.gz/download
$ tar zxvf libevent-2.0.21-stable.tar.gz
$ cd libevent-2.0.21-stable/
$ ./configure --prefix=$HOME/local
$ make && make install

これでlibeventのインストールは完了です.
では,tmuxのインストールに戻ります.
このままインストールするとlibeventが見つかれませんと出るので,ライブラリフォルダを指定してやります
ncursesを求められるときもあるのですが,今回はとくに必要なかったので,インストール処理は飛ばしております.
tmuxのconfigure時にncursesを求められた場合,インストールしてください

$ /configure CFLAGS="-I$HOME/local/include" LDFLAGS="-L$HOME/local/lib" --prefix=$HOME/local
$ make && makeinstall

これで一応完了ですが,pathを通してやらないといけなくて,tmux起動時にlibeventを指定しないと起動しません.
なので,.bashrcにでも

alias tmux='LD_LIBRARY_PATH=$HOME/local/lib $HOME/local/bin/tmux'

を追加するとtmuxが起動してくれます.

管理者権限なしでホーム下にgit2.0をインストールしてみた

環境

CentOS release 6.4

git2.0のインストール

gitの公式からソースファイルをダウンロードする前に,
zlibが入ってないとエラーが出たので,zlibからインストールを行います.

$ wget http://zlib.net/zlib-1.2.8.tar.gz
$ tar zxvf zlib-1.2.8.tar.gz
$ cd zlib-1.2.8
$ ./configure --prefix=$HOME/local
$ make
$ make install

で完了です.あとでzlib.hが見当たりませんでしたみたいなエラーがでたので,
ついでに以下のコマンドもしときます.

$ export CPPFLAGS="-I$HOME/local/include" LDFLAGS="-L$HOME/local/lib"

肝心のgitのインストールを行います.
gitをconfigureする前にNO_OPENSSLなどをつけないといけないようです.
参考

$ wget https://www.kernel.org/pub/software/scm/git/git-2.0.0.tar.gz
$ tar zxvf git-2.0.0.tar.gz
$ cd git-2.0.0
$ ./configure --prefix=$HOME/local NO_OPENSSL=1 NO_CURL=1
$ make
$ make install
$ git


これで無事インストール完了したと思います.

管理者権限なしでpython3.4をインストールする 改訂2015/05/20

Python3.4を管理者権限なしで入れてみます.

環境

CentOS release 6.4
本記事では,$HOME以下の.opt/python3にインストールします.
$HOMEは適宜書き換えてください

Python3.4のインストール

wgetで証明書がどうとか言われてダウンロードできなかったので,--no-check-certificateを付加しています.

$ wget --no-check-certificate https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
$ tar zxf Python-3.4.3.tgz
$ cd Python-3.4.3
$ ./configure --prefix=$HOME/.opt/python3
$ make -j
$ make -j install
...
Ignoring ensurepip failure: pip 6.0.8 requires SSL/TLS

以上でPython3.4のインストールは完了です.
以下は,そのままpipをインストールしたい場合実行してください

        • -

pipをインストールする際に,sslが要求されるみたいです.
sslをインストールします.この場合は./configureではなくて./configなので注意してください.

$ cd ..
$ cd open-ssl-1.0.1h
$ wget http://www.openssl.org/source/openssl-1.0.1h.tar.gz
$ ./config --prefix=$HOME/local
$ make
$ make install

再度Python3.4をインストールしたいと思います.

$ cd ..
$ cd Python-3.4.1
$ ./configure --prefix=$HOME/local
$ make
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm
_lzma                 _sqlite3              _tkinter
readline              zlib
To find the necessary bits, look in setup.py in detect_modules() for the module's name.


Failed to build these modules:
_curses               _curses_panel         _hashlib
_ssl

ん?こんなエラーでてたんですね.
とりあえず,アンダーバーがついているものは飛ばして,アンダーバーついていないものをインストールします.

$ cd ..
$ wget ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz
$ tar zxvf readline-6.3.tar.gz
$ cd readline-6.3
$ ./configure --prefix=$HOME/local
$ make
$ make install
$ cd ..
$ wget http://zlib.net/zlib-1.2.8.tar.gz
$ tar zlib-1.2.8.tar.gz
$ cd zlib-1.2.8
$ ./configure --prefix=$HOME/local
$ make
$ make install

この後,Python3.4を再度インストールしても同じエラーがでました
Pythonを起動できなので,これでひとまず完了