日曜技術者のメモ

趣味でやった事のメモ書きです。

root権限のないlinuxへ色々インストールしてみた

root権限がないlinux上で色々ツールを使いたかったのでやってみた。

今回のターゲットは以下の制限がついています。

  • root権限がない
    • yum使えない
    • アクセスできる範囲が限られている
  • インターネットにつながらない
    • wgetが使えない
    • sambaとFTPは動いている。

こういう場合の基本方針は以下の通り

・必要なライブラリはすべて別PCでダウンロード -> Samba or FTPで転送
・configure -> make -> make installの流れ
・--prefixでインストールパス設定
・ライブラリパスはsetやLD_LIBRARY_PATHで指定

インストールしたのは↓
Perl+module
・tmux
Python
Vim
・tree
・OpenBox

折角なので一気にインストールするスクリプトを書いてみた。
set INSTHOME でインストール先の設定。
set ??_INST=でインストールする/しないを選択

#! /bin/csh -f
set lNSTHOME = <ツールインストール先>
set TOOLHOME = ./
setenv PKG_CONFlG_PATH $lNST_HOME/lib/pkgconfig

set PERL_INST=0

set PERL_MOD_INST=0
set PERL_MOD_LIST
set PERL_MOD_LIST = ($PERL_MOD_LIST Verilog-Perl-3.313.tar.gz)
set PERL_MOD_LlST = ($PERL_MOD_LIST Jcode2.0.7.tar.gz)
set PERL_MOD_LIST = ($PERL_MOD_LIST XML-Parser-2.36.tar.gz)
set PERL_MOD_LlST = ($PERL_MOD_LlST Tk-804.030.tar.gz)
set PERL_MOD_LlST = ($PERL_MOD_LIST Spreadsheet-ParseExcel-0.59.tar.gz)
set PERL_MOD_LlST = ($PERL_MOD_LlST Crypt-RC4-2.02.tar.gz Digest-Perl-MD5-1.8.tar.gz OLE-Storage_Lite-0.19.tar.gz IO-stringy.tar.gz
set PERL_MOD_LIST = ($PERL_MOD_LlST Spreadsheet-WriteExcel-2.37.tar.gz) #<-Warning:prerequisiteParse::RecDescent 0 not fount
set TMUX_lNST=0
set PYTHON_INST=0
set VIM_INST=1
set TREE_INST=0
set OPENBOX_INST=0

#perl 5.14.2 ##

if ($PERL_INST == "1") then
	cd $TOOL_HOME/perl/
	tar zxvf perl-5.14.2.tar.gz
	cd perl-5.14.2
	./Configure -des -Dprefix=$INST_HOME

	#make test
	make -j 4
	make install
	
	if(-e $INST_HOME/bin/perl) then
		rm -rf perl-5.14.2
	endif

	## perl module ##
	if($PERL_MOD_INST ==  "1") then
		foreach hoge ( $PERL_MOD_LlST )
			tar zxvf $hoge
			cd `echo $hoge | sed 's/.tar.gz//g'`
			$INST_HOME/bin/perl Makefile.PL
			make 
			#make test
			make install
			cd ../
			rm -rf `echo $hoge | sed 's/.tar.gz//g'`
		end
	endif
	cd ../
endif

## tmux ##
if ($TMUX_INST == "1")  then
	cd tmux
	tar zxvf libevent-2.0.16-stable.tar.gz
	cd libvevnt-2.0.16-stable.tar.gz
	make -j 4
	make install
	cd ../
	rm -rf libevent-2.0.16-stable
	
	tar zxvf tmux-1.5.tar.gz
	cd tmux-1.5
	./configure --prefix=$lNST_HOME -CFLAGS="-l$INST_HOME/include" LDFLAGS="-L$lNST-HOME/lib"
	make -j 4
	make install
	rm -rf tmux-1.5
	cd ../
endif

## Python ##
if ($PYTHON_INST == "1") then
	cd Python
	tar zxvf Python-2.7.2.tar.gz
	cd Python-2.7.2
	./configure --prefix=$INST_HOME CFLAGS="-l$lNST_HOME/include" LDFLAGS="-L$INST_HOME/lib"
	make -j 4
	make install
	cd ../
	rm -rf Python-2.7.2
	cd ../
endif
## Vim ##
	if ($VIM_INST == "1") then
	tar jxvf vim-7.3.tar.gz
	cd vim73
	cat ../patches_vim73/7.3.* | patch -p0
	./configure --enable-multibyte --enable-fontset --wlth-features=big--enable-perlinterp --prefix=$INST_HOME CFLAGS="-l$lNST_HOME/include" LDFLAGS="-L$lNST_HOME/lib"
	make -j 4
	env LANG="ja_JP.UTF-8" makeinstall #LANG設定はsed-4.1.5のバグ(?)回避
	cd ../
	rm -rf vim73
	cd ../
endif

## tree ##
if ($TREE_INST == "1") then
	tar zxvf tree-1.6.0
	make -j 4
	tar zxvf tree-1.6.0.tar
	cd tree-1.6.0
	make -j 4
	cp tree $INST_HOME/bin
	cd ../
	rm -rf tree-1.6.0
endif

## openbox ##
if ($OPENBOX_INST == "1") then
	cd openbox
	tar zxvf imlib2-1.4.4.tar.gz
	cd  imlib2-1.4.4
	./configure --prefix=$INST_HOME CFLAGS="-l$lNST_HOME/include" LDFLAGS="-L$INST_HOME/lib"
	make -j 4
	make install
	cd ../
	rm imlib2-1.4.4
	
	tar zxvf hsetroot-1.0.2.tar.gz
	cd hsetroot-1.0.2
	./configure --prefix=$INST_HOME CFLAGS="-l$lNST_HOME/include" LDFLAGS="-L$INST_HOME/lib"
	make -j 4
	make install
	cd ../
	rm hsetroot
	
	tar zxvf openbox-3.4.0.tar.gz
	cd openbox-3.4.0
	./configure --prefix=$INST_HOME CFLAGS="-l$lNST_HOME/include" LDFLAGS="-L$INST_HOME/lib"
	make -j 4
	make install
	cd ../
	rm -rf openbox-3.4.0
	tar zxvf obconf-2.0.0.tar.gz
	cd obconf-2.0.0
	./configure --prefix=$INST_HOME CFLAGS="-l$lNST_HOME/include" LDFLAGS="-L$INST_HOME/lib"
	make -j 4
	make install
	cd ../
	rm -rf obconf-2.0.0.tar.gz

	#pypanel
	cd PyPanel
	tar zxvf python-xlib-0.15rc1.tar.gz
	cd python-xlib-0.15rc1
	$INST_HOME/bin./python ./setup.py install
	cd ../
	rm -rf python-xlib-0.15rc1
	
	tar zxvf PyPanel-2.4.tar.gz
	cd PyPanel-2.4
	patch < ./setup_path_change.py.patch # <-setup.pypyのパス(configsとimlib2)を書き換え
	$INST_HOME/bin/python ./setup.py install
	cd ../
	rm -rf PyPanel-2.4
	
	cd ../

endif