압축 :

xz, bzip2, gzip 


# cp /bin/gawk .

# cat /bin/sed > sed

# install /bin/mv .


# ls 

gawk mv sed ...


- xz 로 압축

# ls -l gawk 

-rwxr-xr-x 1 root root 320800 Apr  3 13:40 gawk


# xz gawk   <-- xz로 압축하기


# ls -l gawk.xz 

-rwxr-xr-x 1 root root 134252 Apr  3 13:40 gawk.xz


- bzip2 로 압축

# ls -l mv 

-rwxr-xr-x 1 root root 82116 Apr  3 13:41 mv


# bzip2 mv


# ls -l mv.bz2 

-rwxr-xr-x 1 root root 37665 Apr  3 13:41 mv.bz2


- gzip 으로 압축

# ls -l sed 

-rwxr-xr-x 1 root root 51860 Apr  3 13:40 sed


# gzip sed 


# ls -l sed.gz 

-rwxr-xr-x 1 root root 23881 Apr  3 13:40 sed.gz



- 파일 확인하기 (file 명령어 이용)

# file mv.bz2 

mv.bz2: bzip2 compressed data, block size = 900k

# file gawk.xz 

gawk.xz: data

# file sed.gz 

sed.gz: gzip compressed data, was "sed", from Unix, last modified: Thu Apr  3 13:40:34 2014



- 압축해제하기


gzip  : gzip -d  , gunzip

bzip2 : bzip2 -d , bunzip2

xz    : xz -d , unxz



- xz 압축해제

# unxz gawk.xz  or xz -d gawk.xz


- bzip2 압축해제

# bunzip2 mv.bz2 or bzip2 -d mv.bz2


- gzip 압축해제

# gunzip sed.gz or gzip -d mv.bz2



- 압축 명령어는 파일마다 압축을 한다. (하나로 묶는 것은 X)

# gzip mv gawk sed 

# gzip -d *.gz



- tar 옵션 <묶을파일명>  <파일리스트 ...>

!!! tar 묶는 역할만 하고 압축은 안한다 !!!

!!! 여러개의 파일을 묶을때는 디렉토리에 파일들을 넣고

!!! 디렉토리를 묶는다.


# tar cvf test.tar mv gawk sed

# ls -l 

-rw-r--r-- 1 root   root    460800 Apr  3 13:56 test.tar


# gzip test.tar

# ls -l test.tar.gz 

-rw-r--r-- 1 root root 218093 Apr  3 13:56 test.tar.gz




- tar + gzip

압축할때 : tar czf <파일명> <압축할 파일들 ...>

압축해제시 :  tar xzf <파일명> 

압축의 내용을 확인 :  tar tvzf <파일명> 


# tar cvzf test2.tar.gz  gawk mv sed

        ~            ~~

        |             |

        +-------------+


# tar tvzf test2.tar.gz <-- 압축을 보고자할때 -t 옵션을 사용


# tar xvzf test2.tar.gz -C /tmp <-- 다른디렉토리에 풀때 -C 




- tar + bzip2

# tar cvjf test3.tar.bz2  gawk mv sed

        ~            ~~~

        |             |

        +-------------+


- 압축된 상태를 출력한다.

# tar tvjf test3.tar.bz2 


- 현재 디렉토리에 풀린다.

# tar xvjf test3.tar.bz2  


- /usr/local/bin 디렉토리에 풀때 -C 사용

# tar xvjf test3.tar.bz2 -C /usr/local/bin  




!!! 시스템의 시간을 동기화하는 방법 !!!

# cd /etc/cron.hourly

# install /dev/null rdate.sh

# vi rdate.sh 

-- rdate.sh --

#!/bin/sh


rdate -s time.bora.net && clock -w

-- rdate.sh --


# /etc/init.d/crond restart


--> /etc/cron.hourly 에 디렉터리 넣어두면

1시간마다 자동 실행됨(스케쥴링)






LAB> 아파치 웹서버를 가지고와서 시스템에 설치해보자.

공식사이트 : httpd.apache.org



# wget http://mirror.apache-kr.org//httpd/httpd-2.4.10.tar.bz2

# tar xjf httpd-2.4.10.tar.bz2 

# cd httpd-2.4.10

# ./configure make make install  <-- 생략



===============================


#########################

## 소프트웨어 설치하기 ##

#########################

http://vault.centos.org

http://rpmfind.net


리눅스 (RedHat 계열의 리눅스) 


rpm : 소스, 컴파일

tar.gz, tar.bz2 : 소스, 컴파일 


~~~~.i386.rpm  <-- 컴파일된 rpm 파일 (윈도우 install.exe 동일)

~~~~.src.rpm   <-- 소스 rpm 파일

~~~~.tar.gz    <-- 압축된 파일 (tar + gzip) , 자바  (윈도우 이클립스처럼 압축해제)

~~~~.tar.bz2   <-- 압축된 파일 (tar + bzip2)  (윈도우 이클립스처럼 압축해제)


######################

## gzip, bzip2, tar ##

######################


o gzip

- gzip은 GNU 프로젝트를 통해 배포되는 유틸리티

- gzip으로 압축한 파일은 파일명이 : 파일명.gz 확장자를 갖는다.

- 또한 여러 파일들을 지정하면 각각의 파일명.gz 파일로 저장한다.


사용법 : gzip 옵션 파일들...

옵션 : 

-d --decompress  decompress

-1 --fast        compress faster

-9 --best        compress better


사용예 : gzip filename

- filename 을 압축해서 filename.gz 파일이 생성된다. 

- 여러 파일을 gzip으로 압축해도 각각 filename.gz 이 생성이 된다. 

- 여러개의 파일을 하나의 파일로 묶이지 않는다. 

- 여러개의 파일을 하나로 묶는 것은 tar의 역할이다. 


압축해제 : gunzip filename  or gzip -d filename


=================================================================

실습> gzip 을 이용해서 압축과 압축해제를 해보자.

# mkdir test; cd test

# cp /etc/passwd /bin/mv .

# ls -l

total 100

-rwxr--r-x 1 root root 82116 Feb 18 06:39 mv

-rw-r--r-- 1 root root  1550 Feb 18 06:39 passwd

# gzip mv 

# gzip passwd 

# ls -l

total 52

-rwxr--r-x 1 root root 38711 Feb 18 06:39 mv.gz

-rw-r--r-- 1 root root   653 Feb 18 06:39 passwd.gz

# file *

mv.gz:     gzip compressed data, was "mv", from Unix, last modified: Tue Feb 18 06:39:57 2014

passwd.gz: gzip compressed data, was "passwd", from Unix, last modified: Tue Feb 18 06:39:57 2014


# ls -li /bin/gzip

255795 -rwxr-xr-x 3 root root 63316 Jul 22  2011 /bin/gzip

# find /bin -inum 255795 -ls

255795   72 -rwxr-xr-x   3 root     root        63316 Jul 22  2011 /bin/gunzip

255795   72 -rwxr-xr-x   3 root     root        63316 Jul 22  2011 /bin/gzip

255795   72 -rwxr-xr-x   3 root     root        63316 Jul 22  2011 /bin/zcat

# gunzip mv.gz

# gzip -d passwd.gz 

# file *

mv:     ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), stripped

passwd: ASCII text


=================================================================


o bzip2

- 압축하면 나오는 파일명 : 파일명.bz2

- 대체로 gzip보다 10~20% 뛰어난 압축률이 더 좋다.


사용법 : bzip2 OPTION 파일들...

옵션 : 

-d --decompress     force decompression

-1 .. -9            set block size to 100k .. 900k

--fast              alias for -1

--best              alias for -9


사용예 : bzip2 filename

- filename 을 압축해서 filename.bz2 파일이 생성된다. 

- 여러 파일을 bzip2로 압축해도 각각 filename.bz2 가 생성이 된다. 

- 여러개의 파일을 하나의 파일로 묶이지 않는다. 

- 여러개의 파일을 하나로 묶는 것은 tar의 역할이다. 


ex) bzip2 filename


압축해제 : bunzip2 -d filename  or bzip2 -d filename


=================================================================

실습> bzip2 를 이용해서 압축과 압축해제를 해보자.


# ls -l

total 52

-rwxr--r-x 1 root root 37617 Feb 18 06:39 mv.bz2

-rw-r--r-- 1 root root   687 Feb 18 06:39 passwd.bz2

# bzip2 -d mv.bz2 

# bunzip2 passwd.bz2 

# ls -l

total 100

-rwxr--r-x 1 root root 82116 Feb 18 06:39 mv

-rw-r--r-- 1 root root  1550 Feb 18 06:39 passwd

# ls -l /usr/bin/bzip2

-rwxr-xr-x 1 root root 36180 Sep 21  2010 /usr/bin/bzip2

# ls -li /usr/bin/bzip2

256283 -rwxr-xr-x 1 root root 36180 Sep 21  2010 /usr/bin/bzip2

# ls -li /usr/bin/bunzip2 

255867 lrwxrwxrwx 1 root root 5 Feb 14 12:52 /usr/bin/bunzip2 -> bzip2

# ls -l /usr/bin/bzcat 

lrwxrwxrwx 1 root root 5 Feb 14 12:52 /usr/bin/bzcat -> bzip2

=================================================================


o tar 

- tar는 단순히 하나의 아카이브 파일로 묶어 주는 역할만 할 뿐, 파일의 크기를 줄여주는 압축 기능은 없으므로 tar 명령어 안에서 gzip이나 bzip2 명령어와 함께 사용하는 옵션이 있다.

- 파일을 원래 상태로 복원하기 위해 파일의 퍼미션이나 소유권 등의 정보를 유지하면서 여러개의 파일들을 하나의 파일로 묶는 기능을 가진다.


Usage: tar [OPTION...] [FILE]...


ex) tar options 압축파일.tar 압축할파일들 ...

tar cvf tarfile files 

gzip -9 tarfile


option

c : 새로운 아카이브의 생성

x : 아카이브로부터 파일 추출

v : 파일을 묶거나 풀 때 정보를 출력

f : 읽거나 기록할 tar 파일을 정의

z : 자료를 쓸 때 gzip으로 압축하도록 지시하거나 파일 안의 자료가 gzip으로 압축되어 있음을 알림

v : 묶거나 풀고 있는 파일을 보여줌


-C : 다른 디렉토리에 압축을 해제할때 쓴다.



=================================================================

실습> tar 를 이용해서 압축과 압축해제를 해보자.


# tar czf test1.tar.gz mv passwd    <-- tar 명령어의 z (gzip 을 이용해서 압축)

# tar cjf test2.tar.bz2 mv passwd   <-- tar 명령어의 j (bzip2를 이용해서 압축) 

# tar xzf test1.tar.gz   <-- gzip 을 이용해서 압축해제 하는데 현재 디렉토리에 해제)

# tar xjf test2.tar.bz2  <-- bzip2 를 이용해서 압축해제 하는데 현재 디렉토리에 해제)


# tar xzf test1.tar.gz -C /tmp  <-- 압축해제를 다른 디렉토리에 풀때 -C를 이용한다.


# ls /tmp

# tar xjf test2.tar.bz2 -C /tmp

# ls /tmp

mv passwd ...


# ls /var/tmp

# tar xzf test1.tar.gz -C /var/tmp

# ls /var/tmp

mv  passwd


=================================================================


=================================================================

실습> C 언어의 기본 라이브러리를 확인해보자.

!!! 라이브러리 형식 : lib<라이브러리명>.a   <-- 정적

!!! 라이브러리 형식 : lib<라이브러리명>.so  <-- 동적

# ls -l /usr/lib/libc.a 

ls

-rw-r--r-- 1 root root 3016658 2012-02-22 07:51 /usr/lib/libc.a

# ls -l /usr/lib/libc.so 

ls

-rw-r--r-- 1 root root 238 2012-02-22 07:22 /usr/lib/libc.so

# ar t /usr/lib/libc.a | head

init-first.o

libc-start.o

sysdep.o

version.o

check_fds.o

libc-tls.o

elf-init.o

dso_handle.o

errno.o

errno-loc.o



=================================================================


=================================================================

실습> 디렉토리를 묶을때 주의점

!!! 디렉토리안에 들어가서 묶지말고 반드시 디렉토리 자체로 묶는다. !!!

!!! 그러면 압축을 해제할때도 묶인 디렉토리가 그대로 나온다.


# cd /etc

# tar czf etc.tar.gz *

# mv etc.tar.gz /var/tmp

# cd /var/tmp

# ls

etc.tar.gz  mv  passwd

# tar xzf etc.tar.gz 

# ls

 ...                 <-- 압축이 여기에 풀려버린다... (문제점!!!)


# cd

# tar czf etc2.tar.gz /etc     <-- /etc 디렉토리 자체를 묶는다.

tar: Removing leading `/' from member names

# rm -rf /var/tmp/*

# ls /var/tmp/

# mv etc2.tar.gz /var/tmp/

# cd /var/tmp

# ls

etc2.tar.gz

# tar xzf etc2.tar.gz 

# ls

etc  etc2.tar.gz      <-- 문제점을 보완 ( 압축해제시 etc 디렉토리가 나온다. )


=================================================================


=================================================================

실습> 아파치를 설치하고 tar.gz 의 문제점을 파악해보자.

!!! 소스파일을 설치하면 아래 4가지 정도를 거쳐야 한다.

!!! 1. 환경설정 단계

!!! 2. 컴파일 단계

!!! 3. 설치 단계

!!! 4. 설정세팅 단계


apache_1.3.41.tar.gz


# tar xzf apache_1.3.41.tar.gz

# cd apache_1.3.41

# ./configure  \                   <-- 환경설정 단계

> --enable-shared=max \

> --enable-rule=SHARED_CORE \

> --enable-module=so

# make                             <-- 컴파일 단계

# make install                     <-- 설치 단계

# PATH=$PATH:/usr/local/apache/bin <-- 경로변수 세팅

# /etc/init.d/httpd stop           <-- 리눅스 설치시 웹서버가 설치되었다면 중지한다.

# iptables -F                      <-- 방화벽 중지

# /usr/local/apache/bin/apachectl start     <-- 새로 소스 컴파일한 웹서버를 시작한다.

# echo "Hello Linux Server" > /usr/local/apache/htdocs/index.html

# netstat -nat                     <-- 웹서버 포트 확인

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State      

  :

  :

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      

  :

  :


Host OS에서 Guest OS 리눅스로 접속을 시도해서 "Hello Linux Server" 가 나오면 성공이다.

=================================================================




#########

## rpm ##

#########


http://rpmfind.net



o rpm 이란 ? 

- rpm이란 Redhat Package Manger 의 약자로 소스설치의 어려움을 극복하기 위해서

  레드햇사에서 만들어 놓은 패키징 관리 프로그램이다.

- 의존성의 문제점을 안고 있다.


=================================================================

실습> rpm 을 이용해서 mc 패키지를 설치해보자.


Settings -> DVD 1번을 삽입 -> 리눅스에서 아래를 진행한다.


# mount /dev/cdrom /mnt

# cd /mnt/CentOS

# rpm -Uvh mc-4.6.1a-35.el5.i386.rpm

Preparing...                ########################################### [100%]

   1:mc                     ########################################### [100%]

# LANG=C

# mc




=================================================================

=================================================================

실습> 의존성이 있는 파일을 설치해보자.


# cd /mnt/CentOS

# ls firefox-3.6.26-1.el5.centos.i386.rpm 

firefox-3.6.26-1.el5.centos.i386.rpm

# rpm -Uvh firefox-3.6.26-1.el5.centos.i386.rpm 

error: Failed dependencies:

xulrunner >= 1.9.2.26-1 is needed by firefox-3.6.26-1.el5.centos.i386

libxpcom.so is needed by firefox-3.6.26-1.el5.centos.i386

libxul.so is needed by firefox-3.6.26-1.el5.centos.i386


# rpm -Uvh xulrunner-1.9.2.26-1.el5_7.i386.rpm 

Preparing...                ########################################### [100%]

   1:xulrunner              ########################################### [100%]

# rpm -Uvh firefox-3.6.26-1.el5.centos.i386.rpm 

Preparing...                ########################################### [100%]

   1:firefox                ########################################### [100%]

# firefox  

Error: no display specified   <-- Xwindow 가 없으면 실행이 안되는 문제가 발생

# rpm -Uvh xorg-x11-server-Xorg-1.1.1-48.90.el5.i386.rpm

error: Failed dependencies:

xkbcomp is needed by xorg-x11-server-Xorg-1.1.1-48.90.el5.i386

xkbdata is needed by xorg-x11-server-Xorg-1.1.1-48.90.el5.i386

xorg-x11-drv-evdev is needed by xorg-x11-server-Xorg-1.1.1-48.90.el5.i386

xorg-x11-drv-keyboard is needed by xorg-x11-server-Xorg-1.1.1-48.90.el5.i386

xorg-x11-drv-mouse is needed by xorg-x11-server-Xorg-1.1.1-48.90.el5.i386

xorg-x11-drv-vesa is needed by xorg-x11-server-Xorg-1.1.1-48.90.el5.i386

xorg-x11-drv-void is needed by xorg-x11-server-Xorg-1.1.1-48.90.el5.i386

xorg-x11-utils is needed by xorg-x11-server-Xorg-1.1.1-48.90.el5.i386


의존성있는 파일이 없으면 설치가 안된다.

혹은 되더라도 정상작동하는데 문제가 있다.

=================================================================


=================================================================

실습> yum 을 이용해서 X Window System 을 설치해보자.


# yum -y grouplist 

  :

  :

Installed Groups:                <--  이미 설치된 그룹

   Development Tools

   Dialup Networking Support

   Editors

 :

 :  

Available Groups:                <--  설치가 안된 그룹

 :

 :

   X Window System

 :

 :

Done


# yum -y groupinstall "X Window System"    <-- X Window System 그룹을 설치한다.

# startx                                   <-- X Window 가 실행된다.

# xeyes 


--> 최초 설치시 설치 했다


=================================================================


rpm 파일을 설치하는 방법

mc-4.6.1a-35.el5.i386.rpm


패키지명-버전-배포판.아키텍처.rpm


fc19

el5


src

noarch  <-- 모든 아키텍처에 설치가 가능하다.

arm..

sparc   <--- 자기 아키텍처만 설치/실행

ppc

x86_64  64bit 

i386 -> i486 -> i586 -> i686     32bit 

   <-----------------------  X

 O ------------------------>


1. DVD 넣는다.

2. mount 명령어로 DVD를 /mnt 디렉토리에 연결한다.

3. rpm 파일이 있는 디렉토리에서 파일을 설치한다.


-i 설치

-U 업그레이드 / 설치 

-v 설치할때 파일명을 출력

-h # 으로 설치진행을 출력

-e 삭제

--force 강제설치

--nodeps  의존성을 무시하고 설치 



-Uvh  설치



# mount -t iso9660 -o ro /dev/cdrom /mnt

# cd /mnt/CentOS

# rpm -i mc-4.6.1a-35.el5.i386.rpm   <-- 설치


# rpm -i mc-4.6.1a-37.el5.i386.rpm   <-- 에러 



-e 삭제


rpm -e 패키지명

rpm -e 패키지명-버전 


# yum update kerne tar xzf httpd-2.4.6.tar.gz l

# rpm -q kernel

kernel-2.6.18-348.16.1.el5

kernel-2.6.18-371.1.2.el5


- 같은 패키지명이 동시에 존재할때는 삭제할 패키지를 

  버전까지 써줘야 삭제가 된다.

# rpm -e kernel-2.6.18-371.1.2.el5  


!!! /var/lib/rpm 디렉토리를 참고 !!!


-q rpm DB에서 정보에서 찾는다.

- 실행파일 (/bin,/usr/bin,/sbin,/usr/sbin,/usr/X11R6/bin)

- 설정파일 (/etc)

- 문서파일 (/usr/share/doc)

- 도움말파일 (/usr/share/man)



1. 어떤 패키지가 이 시스템에 설치 ?

- rpm -qa 

2. 어떤 패키지가 어떤 파일들을 설치 ?

- rpm -ql coreutils

- rpm -qd coreutils

- rpm -qc coreutils

- 숙제 바이너리 파일은 어떻게 볼까 ?


3. 파일이 어떤 패키지에서 나왔는지 ?

- rpm -qf /bin/ls


===========================================================

LAB> 의존성을 무시하고 rpm 파일을 설치해보자.

!!! --nodeps 옵션을 주고 설치해도 실제 동작은 안될 수 있다. !!!


DVD 넣고


# rpm -Uvh /mnt/CentOS/gnome-mime-data-2.4.2-3.1.i386.rpm 

준비 중...               ########################################### [100%]

gnome-mime-data-2.4.2-3.1.i386 패키지는 이미 설치되어 있습니다


# rpm -Uvh /mnt/CentOS/gnome-speech-0.4.5-1.fc6.i386.rpm 

오류: Failed dependencies:

festival is needed by gnome-speech-0.4.5-1.fc6.i386


# rpm -Uvh --nodeps /mnt/CentOS/gnome-speech-0.4.5-1.fc6.i386.rpm 

준비 중...               ########################################### [100%]

   1:gnome-speech           ########################################### [100%]

===========================================================


===========================================================

LAB> /bin 디렉토리에 파일들의 패키지를 뽑고 그 패키지에 담긴

실행파일들을 확인해보자.



# install /dev/null rpmlist.sh

# vi rpmlist.sh

-- rpmlist.sh --밑에는 rpmlist.sh 내용

#!/bin/sh


# /bin 디렉토리에 있는 파일들을 검사해서 어느 패키지에 

# 나왔는지 확인하고 그 내용을 rpmlist 변수에 넣어준다.

rpmlist=$(rpm -qf /bin/* | sort | uniq)


> rpmlist.txt


# 현재 rpmlist 변수에 담긴 패키지를 검색해서 파일로 저장한다.

for i in $rpmlist

do

   echo "== $i =="       >> rpmlist.txt

   rpm -ql $i | grep bin >> rpmlist.txt

   echo ""               >> rpmlist.txt


done

-- rpmlist.sh --


# ./rpmlist.sh

# cat rpmlist.txt

   :

   :


===========================================================





rpm 패키지를 검증 (-qV)


-qVa 



S file Size differs

M Mode differs (includes permissions and file type)

5 MD5 sum differs

D Device major/minor number mismatch

L readLink(2) path mismatch

U User ownership differs

G Group ownership differs

T mTime differs


tar.gz 파일을 설치하는 방법


tar - 파일을 묶는 역할만 한다.


tar 옵션

-c 묶는다.

-x 푼다.

-f 파일명

-v 보여준다.

-t tar 에 묶여있는 파일들을 출력

-z /bin/gzip 호출

-j /usr/bin/bzip2 호출

-C <디렉토리> 특정 디렉토리에 압축을 해제

 


# mkdir -m 700 test; cd test

# mkdir -m 700 test&& cd test


# echo 1234 > 1.txt

# echo 6789 > 2.txt

# ls -l

total 8

-rw-r--r-- 1 root root 5 Nov 23 23:41 1.txt

-rw-r--r-- 1 root root 5 Nov 23 23:42 2.txt


# gzip 1.txt 2.txt 

# ls -l

total 8

-rw-r--r-- 1 root root 31 Nov 23 23:41 1.txt.gz

-rw-r--r-- 1 root root 31 Nov 23 23:42 2.txt.gz





# rpm -q atd


rpm - 패키지 파일을 설치 (인터넷 필요 x , 파일이 존재  O)

yum - 인터넷을 통해서 패키지를 설치 (파일이 존재 X , 인터넷 연결 O)



~~.i386.rpm <-- 바이너리 386 ~ 686 모두 설치가능 

~~.i586.rpm <-- 386 x 486 x 586 ~ 686 ... 786 ... 



=========================================================

실습> 파일이 변조가 되었을때 다시 설치하는 방법


# > /bin/vi

# ls -l /bin/vi

-rwxr-x--- 1 root root 0 2014-04-07 09:43 /bin/vi*

# rpm -qV vim-minimal

SM5....T    /bin/vi


- DVD 를 넣고


# mount -t iso9660 -o ro /dev/cdrom /mnt


- 이미 설치되었으므로 설치오류가 발생한다.

# rpm -Uvh /mnt/CentOS/vim-minimal-7.0.109-7.el5.i386.rpm 

준비 중...               ########################################### [100%]

vim-minimal-7.0.109-7.el5.i386 패키지는 이미 설치되어 있습니다


- -- force 옵션을 이용해서 강제로 설치한다.

# rpm -Uvh --force /mnt/CentOS/vim-minimal-7.0.109-7.el5.i386.rpm 

준비 중...               ########################################### [100%]

   1:vim-minimal            ########################################### [100%]


# ls -l /bin/vi

-rwxr-xr-x 1 root root 593160 2011-03-06 11:36 /bin/vi*

# rpm -qV vim-minimal


=========================================================


실습> http://ftp.daum.net/ 에서 ntsysv 패키지를 가져와서 시스템에 설치하기


http://ftp.daum.net/centos/5.8/os/i386/CentOS/ntsysv-1.3.30.2-2.el5.i386.rpm



# cat /etc/redhat-release   

CentOS release 5.8 (Final)

# wget

-bash: wget: command not found

# yum install wget

...

Is this ok [y/N]: y   <-- y를 입력(설치) n(취소)

# chmod -c 700  `which wget`   <-- 보안상 wget은  root 사용자만 사용!!! (`는 1왼쪽에 `이다)

` `안에 있는 명령이 먼저 실행되어 그 결과가 나온다

# wget http://ftp.daum.net/centos/5.8/os/i386/CentOS/ntsysv-1.3.30.2-2.el5.i386.rpm

# rpm -Uvh ntysv<tab 키>  <-- ntsysv 설치 

# LANG=C

# ntsysv  

network, sshd, syslog <-- 이거빼고 모두 제거 



x86_64





# rpm -qf /usr/sbin/useradd

# rpm -ql coreutils <-- 

# rpm -ql coreutils > coureutils.txt

# cat -n coureutils.txt



!!! 전체 설치된 패키지를 알아야 하고, 패키지에서 각각의 설치된 정보를 뽑아낼 수 있어야 한다. !!!


실습> coreutils 패키지에서 나온 여러가지 정보를 확인해보기


o 패키지 설치시 설치되는 파일들

 도움말, 문서파일, 실행파일, 설정파일 


# rpm -q coreutils  <-- 패키지명을 완벽하게 알때 사용 

# rpm -qa | grep core  <-- 패키지명을 모를때 ( core 만 알때 )

# rpm -qi coreutils <-- coreutils 패키지의 정보를 출력 

# rpm -qc coreutils <-- coreutils 패키지의 설정파일들을 출력

# rpm -qd coreutils <-- coreutils 패키지의 문서(도움말)파일들을 출력

# rpm -ql coreutils | grep bin  <-- coreutils 실행파일을 출력

# rpm -ql coreutils <-- 전체 설치된 파일들을 출력 


=======================================================

실습> 리눅스 패키지를 소스로 받아 컴파일해보자.

*** 리눅스 소스는 모두 공개되어 있으므로 C 언어로 개발할 수 있는 능력만 있으면 얼마든지 수정할 수 있다. ***


1. 개발툴 패키지 확인

2. 인터넷에 연결되어 있는지 확인

  - 네임서버설정

  - IP주소 세팅

  - Gateway 주소 세팅 


[root@www ~]# yum grouplist        <-- 개발툴이 설치되었는지 확인한다.

Installed Groups:

   Administration Tools

   Development Libraries

   Development Tools

   :

   :

Available Groups:

   Authoring and Publishing

   Base

   :

   :


[root@www ~]# yum -y groupinstall "Development Tools"   <-- 개발툴이 없다면 설치하고 있다면 생략한다.

[root@www ~]# cat /etc/resolv.conf    <-- 네임서버 확인

-- /etc/resolv.conf --

nameserver 168.126.63.1

nameserver 168.126.63.2

-- /etc/resolv.conf --


- coreutils 소스 다운로드

[root@www ~]# wget http://vault.centos.org/5.8/os/SRPMS/coreutils-5.97-34.el5.src.rpm 

[root@www ~]# mkdir -p /usr/src/redhat/SOURCES          <-- 디렉토리가 없으면 생성한다.

[root@www ~]# rpm -Uvh coreutils-5.97-34.el5.src.rpm    <-- 프로그램 설치

[root@www ~]# cd /usr/src/redhat/SOURCES          

[root@www SOURCES]# tar xjf coreutils-5.97.tar.bz2            <-- 압축해제

[root@www SOURCES]# cd  coreutils-5.97

[root@www coreutils-5.97]# ./configure

[root@www coreutils-5.97]# make

[root@www coreutils-5.97]# cd src

[root@www src]# ls

               <-- 컴파일된 파일을 확인한다.

[root@www src]# vi ls.c      <-- ls 소스를 수정한다.

-- ls.c --

:set nu        <-- vi 명령 : 번호 세팅

/main          <-- vi 명령 : 검색


puts("my ls");   <-- 1128번 라인에 출력 함수를 추가한다.


ESC -> :wq        <-- vi 명령 : 저장하고 종료

-- ls.c --


[root@www src]# make ls

[root@www src]# ./ls 

my ls     <-- 수정된 내용이 출력된다.

 :

 :


=======================================================



#########

## yum ##

#########


사용법 : yum [options] COMMAND

http://blog.outsider.ne.kr/346

yum : redhat 계열의 리눅스에서 사용한다.

apt-get : Debian 계열의 리눅스에서 사용한다.


ex) 

CentOS : yum install mc , yum remove mc 

Ubuntu : apt-get install mc , apt-get remove mc


참고 : http://blog.outsider.ne.kr/346




실습> yum 테스트


# ping -c 2 kr.yahoo.com    <-- 인터넷 연결 확인

# yum install vim-enhanced  <-- vim-enhanced 패키지 설치

# rpm -qa | grep cvs  <-- 전체 설치된 패키지에서 cvs 만 검색

cvs-1.11.22-11.el5

# yum remove cvs   <-- 설치된 cvs 패키지 삭제 

# yum install cvs  <-- 삭제된 cvs 패키지 설치

#

#


예전에는 리눅스에 프로그램을 설치하기 위해서는 아래와 같은 과정을 거쳤다.


소스 -> 환경설정 -> 컴파일 -> 설치 

~~~~    ~~~~~~~~

 |

 +--> 미리 컴파일 -> 패키지명.버전명.i386.rpm  -> 설치 

 |

 +--> 소스 파일 -> 설치 -> 컴파일 





==========================================================

LAB> yum 이용해서 설치/삭제에 대한 로그를 확인해보자.

로그기록 파일 : /var/log/yum.log


pts/0# tail -f /var/log/yum.log

  :

  :


Apr 08 09:35:00 Installed: 1:mc-4.6.1a-35.el5.i386 <-- 설치로그

Apr 08 09:35:35 Erased: mc  <-- 삭제로그


pts/1# yum -y install mc 


pts/1# yum -y remove mc 


==========================================================