Bash, Vim, Git

Өмнөх бичлэг дээр SAKURA Internet гээд компаниас shared host авсан гэж бичиж байсан. Тэгээд тэрэн дээрээ Bash, Vim, Git 3-ыг суулгах болсон юм. Юуны түрүүнд энэ 3 нь юу вэ гэдгийг товчхон дурьдая.

  • Bash гэдэг нь нэгэн төрлийн shell юм. OS X дээр цаанаасаа тохируулчихсан ирдэг юм. Би OS X хэрэглэдэг болохоор, яагаад ч юм Bash дээр дасчихсан. Тийм болохоор суулгая гэж бодсон юм.
  • Vim гэдэг нь command line editor-ын нэг төрөл. Бас Emacs гээд text editor байгаа, гэхдээ олон хүмүүс Vim нь илүү гэлцэх юм билээ. Зарим хүмүүс “GUI-тэй олон хүчтэй editor-ууд байхад яагаад заавал хэрэглэхэд хэцүү command line editor хэрэглэх ёстой юм?” гэж бодож магадгүй. Би ч гэсэн хааяа тэгж боддог. Гэхдээ миний хувьд command line editor ашиглах нэг шалтгаан байдаг. Тэр нь server дээрх file-ыг шууд засварлах явдал юм. Ганц 2 мөр засварлахын төлөө, өөрийнхөө компьютер дээр засварлаад, тэр зассан file-аа FTP эсвэл SSH-ээр server-рүүгээ хуулаад байх төвөгтэй шүү дээ. Сүүлийн үед PHP code-ыг бол дандаа Vim ашиглаад шууд server дээрээ бичээд явдаг болчихсон. Сайн судалвал бараг юм бүхнийг хийж болохоор нэлээн хүчтэй editor юм шиг байна лээ. Бүгдийг нь сурахад хэцүү ч, юуны түрүүнд, copy, paste, undo, redo, search, replace гэх мэт энгийн үйлдлүүдийг сураад авах хэрэгтэй гэж бодож байна.
  • Git гэдэг нь нэгэн төрлийн version control system юм. Өмнө нь Монголд ажилдаг байхдаа SVN гэдэг version control system ашиглаж байсан. Тэгэхдээ дэлхийн чиг хандлага ер нь Git-рүү чиглээд байгаа юм шиг санагдаад байгаа болохоор бичсэн source code-оо Git-ээр удирдаж байхыг санал болгож байна. Мөн GitHub гээд үнэгүй source code-оо байрлуулдаг үйлчилгээ байгаа.

За ингээд SAKURA Internet дахь shared host дээрээ хэрхэн энэ 3-ыг суулгасан талаараа бичье.

Bash-ыг суулгах

Эхлээд яг одоо ямар shell хэрэглэж байгаагаа мэдэх хэрэгтэй. Дараах байдлаар мэдэж болно.

%echo $SHELL
/bin/csh
%

Эндээс харвал миний одоо хэрэглэж байгаа shell бол C shell гэдгийг мэдэж болно. Харин дараах байдлаар server дээрх shell-үүдийн жагсаалтыг харж болно.

%cat /etc/shells 
# $FreeBSD: src/etc/shells,v 1.5.36.1.4.1 2010/06/14 02:09:06 kensmith Exp $
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/sh
/bin/csh
/bin/tcsh
/usr/local/bin/bash
/usr/local/bin/rbash
/usr/local/bin/zsh
/usr/local/bin/rzsh
/usr/bin/passwd
%

/usr/local/bin/bash гэдэг нь Bash юм. Тэгэхээр одоо байнга хэрэглэх shell дээрээ Bash-ыг тохируулж өгье.

%chsh -s /usr/local/bin/bash
Password: 
chsh: user information updated
%

Ингээд, дараагийн удаа server-рүүгээ холбогдох үед чинь C shell биш Bash таныг угтах болно. Үүний дараа, $HOME folder дотроо .bash_profile болон .bashrc гэсэн 2 file-ыг үүсгэх хэрэгтэй. Энэ 2 file-ын дэлгэрэнгүйг эндээс уншаарай. .bash_profile дээрээ .bashrc-ыг дууддаг code бичээд, .bashrc-ээ өөрчлөөд явах нь хамгийн дажгүй арга гэж бодож байна. Жишээ нь .bash_profile нь дараах байдалтай байна.

# Энэ file(.bash_profile)-ыг дахин өөрчлөх шаардлагагүй
if [ -f ~/.bashrc ]; then
	source ~/.bashrc
fi

Харин .bashrc нь дараах байдалтай байна.

# UTF-8 encoding-ыг тохируулж өгснөөр Япон, Монгол гэх мэт хэлнүүдийг ашиглаж болно
export LANG=en_US.UTF-8

# Бусад тохиргоонууд
...
...
...

Заавал хийх албагүй ч гэсэн, дараах тохиргоог санал болгож байна.

# vi гэсэн комманд оруулахад автоматаар vim болгон хувиргана
alias vi=vim

# file болон folder-ын жагсаалтыг харуулахдаа өнгөөр ялган харуулна
alias ls='ls -G'

Vim-ыг суулгах

Хэрвээ өөрийнхөө server дээр суулгах бол APT гэх мэт хэрэгслүүдээр амархан суулгаж болох байх л даа. Тэгэхдээ харамсалтай нь shared host болохоор, нэлээн хязгаарлагдмал, зөвхөн өөрийнхөө зөвшөөрөгдсөн хэсэгт л file хуулах боломжтой. Тиймээс Vim-ын source code-ыг нь татаж аваад compile хийх юм.

Суулгахын өмнө яг аль folder дотор суулгавал зүгээр вэ гэж эргэлзэж магадгүй. Тэгвэл эндээс уншаарай. Ер нь хаана ч байж болох ч, би дараах байдлаар folder-оо хуваарьлахаар шийдлээ.

  • $HOME/bin Local binaries
  • $HOME/etc Host-specific system configuration for local binaries
  • $HOME/games Local game binaries
  • $HOME/include Local C header files
  • $HOME/lib Local libraries
  • $HOME/lib64 Local 64-bit libraries
  • $HOME/man Local online manuals
  • $HOME/sbin Local system binaries
  • $HOME/share Local architecture-independent hierarchy
  • $HOME/src Local source code

Яг одоогийн байдлаар Vim-ын хамгийн сүүлийн хувилбар нь 7.3.911 юм. Тэгэхээр 7.3-ын source code-ыг татаад, дээрээс нь 1 ээс 911 хүртлэх patch-ыг татна гэсэн үг. 7.3 хувилбараас эхлэн нэмэлт file-уудыг өөртөө агуулдаг болсон тул, тусд нь extra package татах шаардлагагүй юм. Дараах байдлаар source code болон patch-аа татна.

[barbayar@www2792 ~]$ cd $HOME
[barbayar@www2792 ~]$ mkdir src
[barbayar@www2792 ~]$ cd src
[barbayar@www2792 ~/src]$ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2 
[barbayar@www2792 ~/src]$ tar jxf vim-7.3.tar.bz2
[barbayar@www2792 ~/src]$ cd vim73/
[barbayar@www2792 ~/src/vim73]$ mkdir patches
[barbayar@www2792 ~/src/vim73]$ cd patches/
[barbayar@www2792 ~/src/vim73/patches]$ curl -O 'ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.[001-911]'
[barbayar@www2792 ~/src/vim73/patches]$ cd ..
[barbayar@www2792 ~/src/vim73]$ cat patches/7.3.* | patch -p0
[barbayar@www2792 ~/src/vim73]$

Харамслтай нь манай server дээрх patch нь хуучин хувилбар нь болохоор ч тэр үү, patch хийх явцад 225-р patch дээр алдаа гараад зогсчихлоо. Тэгэхээр нь яг адилхан байдлаар өөрийнхөө компьютер дээр ажлуулаад, patch хийсний дараах source code-ыг server-рүүгээ хууллаа. Одоо compile-дах үлдлээ.

[barbayar@www2792 ~/src/vim73]$ ./configure --enable-multibyte --enable-xim --enable-fontset --with-features=huge --prefix=$HOME
[barbayar@www2792 ~/src/vim73]$ make
[barbayar@www2792 ~/src/vim73]$ make install

Суулгасны дараа manual page-үүд нь $HOME/man-руу биш, $HOME/share/man-руу орчихсон байсан тул, manual page-үүдээ $HOME/man-руу зөөлөө.

Одоо $HOME folder дотроо .vimrc гэдэг file үүсгээд Vim-ынхээ тохиргоог оруулах үлдлээ. Миний хувьд дараах тохиргоог ашигладаг.

" keyboard дээрх дээшээ/доошоо/зүүн/баруун гэсэн товчнуудыг хэвийн ажиллагаанд оруулна
set nocompatible

" backspace болон delete товчнуудыг хэвийн ажиллагаанд оруулна
set backspace=2 "

" мөрийн дугаарыг гаргана
set number

" terminal-ын чинь title дээр засварлаж байгаа file-ын нэрийг харуулна
set title

" cursor одоо хаана байгааг баруун доод буланд харуулна
set ruler

" tab тэмдэгтийн хэмжээг 2 space хэмжээтэй болгоно
set tabstop=2

" tab тэмдэгтийг space тэмдэгт болгон хөрвүүлнэ
set expandtab

" хамгийн доод хэсгээс 3 мөр дутуу байхад хуудсыг нь доош нь гүйлгэдэг болгоно
set scrolloff=3

" source code-ыг өнгөөр ялган харуулна
syntax on

" дараагийн мөр рүү шилжэх үед өмнөх мөрийн эгц доороос эхлэн бичнэ
set autoindent

" mouse ашигладаг болно
set mouse=a

" Windows төрлийн keyboard ашиглах үед баруун талын хэсэгт байдаг numeric keypad-ыг хэвийн ажиллагаанд оруулна
imap <Esc>Oq 1
imap <Esc>Or 2
imap <Esc>Os 3
imap <Esc>Ot 4
imap <Esc>Ou 5
imap <Esc>Ov 6
imap <Esc>Ow 7
imap <Esc>Ox 8
imap <Esc>Oy 9
imap <Esc>Op 0
imap <Esc>On .
imap <Esc>OR *
imap <Esc>OQ /
imap <Esc>Ol +
imap <Esc>OS -

 Git-ыг суулгах

Яг одоогийн байдлаар Git-ын хамгийн сүүлийн хувилбар нь 1.8.2.2 юм байна. Гэхдээ энэ хувилбар нь суулгах үед алдаа гарсан тул, 1.8.1-ыг суулгахаар шийдлээ.

[barbayar@www2792 ~]$ cd $HOME/src
[barbayar@www2792 ~/src]$ wget http://git-core.googlecode.com/files/git-1.8.1.tar.gz
[barbayar@www2792 ~/src]$ tar zxvf git-1.8.1.tar.gz
[barbayar@www2792 ~/src]$ cd git-1.8.1
[barbayar@www2792 ~/src/git-1.8.1]$ ./configure --prefix=$HOME
[barbayar@www2792 ~/src/git-1.8.1]$ gmake
[barbayar@www2792 ~/src/git-1.8.1]$ gmake install

Суулгасны дараа, Vim-тэй адилхан, manual page-үүд нь $HOME/share/man-руу орчихсон байсан тул, $HOME/man-руу зөөлөө. Мөн үндсэн manual page-үүд нь тусдаа package болсон байгаа тул, 1.8.1-ын manual page-үүдийг эндээс татаж аваад, $HOME/man-руу хийж өгч болно.

[barbayar@www2792 ~]$ cd $HOME/man
[barbayar@www2792 ~/man]$ wget http://git-core.googlecode.com/files/git-manpages-1.8.1.tar.gz
[barbayar@www2792 ~/man]$ tar zxvf git-manpages-1.8.1.tar.gz

Одоо Git-дээрээ өөрийнхөө нэр болон email хаягийг тохируулж өгнө.

[barbayar@www2792 ~]$ git config --global user.email "example@mail.com"
[barbayar@www2792 ~]$ git config --global user.name "Barbayar Dashzeveg"

# зөв орсон эсэхээ шалгах бол дараах байдлаар шалгана
[barbayar@www2792 ~]$ git config --global user.email
example@mail.com
[barbayar@www2792 ~]$ git config --global user.name
Barbayar Dashzeveg

Асуулт / Хариулт

Татаж авсан file-ууд болон, тэдгээрийг задлахад үүссэн folder-уудыг устгаж болох уу?
Мэдээж болно. Татаж авсан package file-ууд болон, $HOME/src folder дахь source code-уудаа устгаж зайгаа хэмнэж болно.

(g)make install хийх үед manual page-үүдийг автоматаар $HOME/share/man-руу хуулаад байхад, яагаад дахиж хүчээр $HOME/man-руу хуулаад байгаа юм?
Ер нь бол manual page, source code нар хаана ч байрлаж болно. Би зүгээр энд бичсэний дагуу folder-ынхоо бүтцийг шийдчихсэн юм. Тэгээд тэр бүтцэндээ тааруулах гээд, хүчээр хуулж байгаа юм. Мөн энэ бүтцээр явбал, $PATH болон manual page-ын замуудыг дахин тохируулах шаардлагагүйгээр шууд ажиллах байсан юм. Мэдээж server бүрээс хамаараад, $PATH болон manual page-ын замуудыг дахин тохируулах шаардлага гарч ирж магадгүй.