ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 소프트웨어 관리 2
    linux/centOS 2018. 7. 2. 12:12

    YUM(Yellowdog Update Manager, Yellowdog Update Modified)

     

    기존의 rpm의 경우 wget을 이용하여 rpm패키지가 저장된 서버의 주소를 모두 입력하고 rpm -i옵션을 이용해 패키지

    를 성치해야만 했다. 그러나 yumrpm패키지가 저장된 서버에 자동으로 접속하고 설치하고자 하는 패키지를 다운

    로드하여 설치한다. 또한 의존성을 가지는 다른 rpm패키지까지 알아서 다운로드하여 설치하며 rpm 패키지들을 안전

    하게 설치, 삭제 및 업데이트를 한다. yumrpm에 비해 이미 설치되었거나 혹은 저장소에 설치 가능한 패키지에

    관한 정보를 효율적이고 쉽게 검색 할 수 있고, 일일이 수동 업그레이드를 할 필요가 없으므로 많은 시스템을 관리

    할 때 더더욱 유용하게 쓰인다. (rpmyum이 설치 되어 있어야만 사용이 가능하다.)

     

    (명령어 형식)

    # yum [options] COMMAND

     

    (명령어 사용예)

    # yum list (# yum list all)

    # yum list installed

    # yum list available

     

    # yum -y update

    # yum -y update php

    # yum -y install php (yum에서 installrpm에서 Uvh와 같은 기능을 한다.)

    (없으면 설치하고 있으면 업데이트한다.)

     

    # yum -y localinstall php.rpm

     

     

     

    YUM 패키지 실습

    yum 패키지 설치 확인

    # rpm -qa | grep yum

     

    -> yum 패키지가 기본적으로 설치 되어 있다.

    -> 만약 설치가 되어 있지 않다면 CD안에서 설치하면 된다.

     

    설치된 패키지와 업데이트 가능한 패키지 확인

    # yum list

     

    설치된 패키지 목록 확인

    # yum list installed

     

    # yum list installed mysql (# yum list installed | grep mysql, # rpm -qa | grep mysql)

     

    # yum list all (# yum list)

    # yum list installed [패키지이름]

    # yum list available [패키지이름]

     

    # yum list updates [패키지이름]

    # yum list extras [패키지이름]

    # yum list recent

     

    가장 최근에 추가된 패키지 목록 확인

    yum site에서 가장 최근에 업데이트된 목록을 확인한다.

    # yum list recent

     

    업데이트 가능한 패키지 목록 확인

    yum site와 현재 시스템에 설치된 패키지를 비교하여 현재 시스템에 업데이트 가능한 목록을 보여준다.

     

    # yum check-update

    -> 이전에 업데이트(# yum updates)가 되었으면 더이상 업데이트 할 것이 없다고 나온다.

     

    패키지 설치 및 확인

    (가정) php 패키지가 설치 되어 있지 않다고 가정한다.

    # rpm -qa | grep php

    # rpm -e php

     

     

    # yum -y install php (-y : yes)

     

    설치가 되었는지 확인 한다

    # yum list | grep php (# yum list installed | grep php)

     

    php 패키지 삭제

    # yum remove php (# yum [-y] erase php)

     

    패키지의 자세한 정보 확인

     

    # yum info bash /* 현재 시스템 + yum site 패키지 정보 */

    # yum info installed bash /* 현재 시스템에 설치된 패키지 정보만 */

     

    # yum info php

     

    패키지 검색

    # yum search php 이 방법 보다는 yum list | grep php 이런식으로 검색하는게 더 낫다.

     

    php 패키지 다시 설치

    # yum -y install php

     

    # rpm -qa | grep php (# yum list installed | grep php)

     

     

     

    ☆ 소스 파일로 설치하기

     

    시스템을 관리하는데 있어서 간편한 RPM 패키지 설치보다는, 경우에 따라서 소스 코드를 직접 컴파일하여 설치해야

    하는 경우도 적지 않다. 특히 프로그램 버그에 대한 패치를 적용하기 위해서는 소스 코드가 있어야 하며, 소스 코

    드에 패치를 가하여 컴파일하여 설치하므로써 프로그램의 버그를 고칠 수 있다.

     

    RPM 패키지를 지원하지 않는 프로그램이나 RPM 패키지 지원이 느려 바로 업데이트를 적용할 수 없는 프로그램을 설

    치하기 위해서는 소스 코드를 이용하여 컴파일하여 설치할 수 밖에 없다. 또한, 바이너리 RPM 패키지에는 적용되지

    않은 특정한 옵션을 다시 부여해야 하는 경우라든지, --prefix 옵션을 적용하여 어느 특정한 디렉토리로 프로그램

    이 설치 되도록 한다든지, 패키지 제작에 어떠한 옵션들이 적용되며, 어떻게 만들어지는지 궁금할 경우 소스 코드

    의 컴파일에 필요하게 된다. 그러나 소스 코드 컴파일은 컴파일하는데 사용자의 시스템 환경에 따라서 시간이 오래

    걸릴뿐더러, gcc 또는 make와 같은 컴파일러 도구나 라이브러리 패키지 등 컴파일이 가능한 환경이 구비되지 않거

    나 컴파일 환경이 갖춰져 있더라도 소스 개발자의 시스템 환경과 다소 차이가 있어서 컴파일시 오류가 발생하는 경

    우에는 컴파일을 성공적으로 수행되지 않는 어려움이 있다. 또한 소스 코드 컴파일상의 간단한 오류가 발생되었을

    때 이에 대한 프로그래밍 능력 대처가 없다면 소스 코드 컴파일은 더욱 힘든 작업이 될 수 있다.

     

     

     

    [EX1] Apache 2.X 소스 컴파일(Source Comile)

     

    다음은 Apache 2.X 소스를 다운로드 하여 설치하는 예이다.

     

    Apache 소스 프로그램 설치 과정

    () 소스 파일 다운로드

    () 압축 해제

    () configure && make && make install

    () 웹서비스 시작 및 확인

     

     

    프로그램 다운로드 디렉토리 : /test

    프로그램 소스 디렉토리 : /usr/local/src

    프로그램 설치 디렉토리 : /usr/local/apache2

     

    Apache 2.X 소스 파일 다운로드

     

    Apache 소스 프로그램 설치 과정

    () 소스 파일 다운로드

    () 압축 해제

    () configure && make && make install

    () 웹서비스 시작 및 확인

     

    "http://httpd.apache.org/download.cgi#apache22" 사이트에서 최신 버전의 프로그램을 확인하고 URL을 복사한다.

     

    # cd /test

    # wget http://apache.tt.co.kr//httpd/httpd-2.2.26.tar.gz

     

    -> 만약 버전이 없어서 에러가 생기는 경우에는 apache 사이트에 직접 들어가서 최신 버전의 URL를 다시 복사하여

    사용해야 한다.

     

    컴파일러 설치 확인

    소스코드를 컴파일 하기 위해서는 gcc컴파일러나 make 컴파일러가 설치되어 있어야 한다. 컴파일러 설치 여부를 확

    인하고 설치 되어 있지 않은 경우 yum을 이용하여 설치한다.

     

    # rpm -q gcc make

    gcc-4.1.2-54.el5

    make-3.81-3.el5

     

    (설치되어 있지 않으면 설치)

    # yum -y install gcc* make*

     

    아파치 소스코드 압축/아카이빙 해제 및 확인

    프로그램 소스 코드는 RPM 소스 패키지 형태로 제공되는 경우도 있으나, 대부분 tar 아카이브 파일로 배포된다. tar 소스 파일을 구한 앞서 배운대로 tar 명령으로 해당 파일의 압축과 아카이빙을 풀때 사용한다. 소스의 효울적이고 체계적인 관리를 위해서 tar 파일의 압축을 풀 때 -C 옵션으로 소스가 풀어질 경로를 지정해 놓으면 나중에도 소스를 재 컴파일 해야 한다든지 패치를 적용해야 할 때 소스가 어디에 있는지 우왕좌왕하지 않고 쉽게 찾을 수 있다.

     

    Apache 소스 프로그램 설치 과정

    () 소스 파일 다운로드

    () 압축 해제

    () configure && make && make install

    () 웹서비스 시작 및 확인

     

    # cd /test

    # tar xvzf httpd-2.2.26.tar.gz -C /usr/local/src /* -C : change directory */

     

    # cd /usr/local/src

    # ls -l

    drwxr-xr-x 11 user01 games 4.0K Nov 14 01:51 httpd-2.2.26/

     

     

    INSTALL 문서 확인

    소스 코드에 어떤 옵션을 부여해서 어떻게 컴파일해야 하는지 컴파일 방법에 대한 자세한 정보가 있는 설치 문서인

    README 또는 INSTALL 파일이 소스 파일내에 포함되어 있으므로, 컴파일하기 전에 이러한 문서를 잘 읽어 보고 컴파

    일하는 것이 좋다. 소스 코드의 컴파일 순서는 대부분 소스의 경우에는 동일하지만, 약간의 차이가 있는 경우도 있

    으므로, 항상 설치 문서를 참고하는 습관을 갖는 것이 현명하다.

     

    # cd httpd-2.2.26

    # ls

    ABOUT_APACHE LAYOUT README-win32.txt config.layout httpd.mak os/

    Apache.dsw LICENSE README.platforms configure* httpd.spec server/

    BuildAll.dsp Makefile.in ROADMAP configure.in include/ srclib/

    BuildBin.dsp Makefile.win VERSIONING docs/ libhttpd.dep support/

    CHANGES NOTICE acinclude.m4 emacs-style libhttpd.dsp test/

    INSTALL NWGNUmakefile build/ httpd.dep libhttpd.mak

    InstallBin.dsp README buildconf* httpd.dsp modules/

     

    # cat INSTALL | more

    APACHE INSTALLATION OVERVIEW

     

    Quick Start - Unix

    ------------------

     

    For complete installation documentation, see [ht]docs/manual/install.html or

    http://httpd.apache.org/docs/2.2/install.html

     

    $ ./configure --prefix=PREFIX /* ./configure --prefix=/usr/local/apache2 */

    $ make

    $ make install

    $ PREFIX/bin/apachectl start

     

    NOTES: * Replace PREFIX with the filesystem path under which

    Apache should be installed. A typical installation

    might use "/usr/local/apache2" for PREFIX (without the

    quotes).

    ..... (중략) .....

     

    컴파일 환경 설정

    대부분의 소스에 있어서 소스 코드의 컴파일 순서는 configure, make, make install로 진행된다. 그 첫 번째 과정

    configure 작업은 컴파일을 하는데 있어서 컴파일러 존재 여부 확인, 컴파일 환경 옵션 지정, 컴파일에 필요한 라이브러리 검색 등 컴파일 환경을 준비하는 과정으로, configure 명령에 의해서 Makefile 파일이 준비되는 과정이다. Makefile 파일은 make 명령으로 컴파일될 때 이용되는 파일로 이 파일이 생성되지 않으면 컴파일될 수 없으며,컴파일 환경 설정 작업에 잘못 되었거나 수정해야 할 경우 configure 명령을 재실행하지 않고서도 이 파일의 설정값을 에디터로 수정하여 할 수 있다.

     

    소스 컴파일 시 configure 명령에 가장 많이 사용되는 옵션중의 하나가 --prefix= 옵션이다. 이 옵션을 이용하면

    소스 컴파일 후 컴파일된 프로그램이 설치될 경로를 지정해 줄 수 있고, 컴파일된 프로그램을 제거할 때 --prefix=

    옵션으로 명시한 디렉토리를 통째로 삭제해 줌으로써 쉽게 프로그램을 제거할 수 있는 이점이 있다.

     

    Apache 소스 프로그램 설치 과정

    () 소스 파일 다운로드

    () 압축 해제

    () configure && make && make install

    () 웹서비스 시작 및 확인

     

    # ./configure --help

    `configure' configures this package to adapt to many kinds of systems.

     

    Usage: ./configure [OPTION]... [VAR=VALUE]...

     

    To assign environment variables (e.g., CC, CFLAGS...), specify them as

    VAR=VALUE. See below for descriptions of some of the useful variables.

     

    Defaults for the options are specified in brackets.

     

    Configuration:

    -h, --help display this help and exit

    --help=short display options specific to this package

    --help=recursive display the short help of all the included packages

    -V, --version display version information and exit

    -q, --quiet, --silent do not print `checking ...' messages

    --cache-file=FILE cache test results in FILE [disabled]

    -C, --config-cache alias for `--cache-file=config.cache'

    -n, --no-create do not create output files

    --srcdir=DIR find the sources in DIR [configure dir or `..']

    ..... (중략) .....

    -> configure 명령어의 사용법을 확인 한다.

     

    # ./configure -prefix=/usr/local/apache2 (없는 디렉토리를 지정해줘야 한다.)

    ..... (중략) .....

    config.status: creating support/apachectl

    config.status: creating support/dbmmanage

    config.status: creating support/envvars-std

    config.status: creating support/log_server_status

    config.status: creating support/logresolve.pl

    config.status: creating support/phf_abuse_log.cgi

    config.status: creating support/split-logfile

    config.status: creating build/rules.mk

    config.status: creating build/pkg/pkginfo

    config.status: creating build/config_vars.sh

    config.status: creating include/ap_config_auto.h

    config.status: executing default commands

    -> configure 과정이 잘 수행 되었는지 확인하기 위해서 $? 변수를 사용할 수 있다.

    # ./configure --prefix=/usr/local/apache2

    ......

    # echo $?

    0

    -> configure 명령어가 수행이 되면 출력되는 내용을 로그 파일로 저장하기 위해서는 리다이렉션 기호를 사용할 수

    있다.

    # ./configure --prefix=/usr/local/apache2 > apache.log 2>&1

    # cat apache.log

     

    컴파일(make)

    configure로 컴파일 환경을 설정한 후 make 명령으로 소스를 컴파일한다. 다음은 아파치 소스를 make로 컴파일하는

    일부 과정이다.

     

    # make

    ..... (중략) .....

    od_negotiation.la modules/mappers/libmod_dir.la modules/mappers/libmod_actions.la

    modules/mappers/libmod_userdir.la modules/mappers/libmod_alias.la modules/mappers/libmod_so.la

    server/mpm/prefork/libprefork.la os/unix/libos.la -lm

    /usr/local/src/httpd-2.2.26/srclib/pcre/libpcre.la

    /usr/local/src/httpd-2.2.26/srclib/apr-util/libaprutil-1.la

    /usr/local/src/httpd-2.2.26/srclib/apr-util/xml/expat/libexpat.la

    /usr/local/src/httpd-2.2.26/srclib/apr/libapr-1.la -lrt -lcrypt -lpthread -ldl

    make[1]: Leaving directory `/usr/local/src/httpd-2.2.26'

     

    컴파일된 프로그램 설치(make install)

    make 명령으로 컴파일된 소스 프로그램은 make install 명령에 의해서 --prefix= 옵션으로 명시된 경로로 설치된다. 보통 makemake install 명령을 다음과 같이 한 번에 내릴 수 있다.

     

    # make install

    ..... (중략) .....

    mkdir /usr/local/apache2/cgi-bin

    Installing header files

    Installing build system files

    Installing man pages and online manual

    mkdir /usr/local/apache2/man

    mkdir /usr/local/apache2/man/man1

    mkdir /usr/local/apache2/man/man8

    mkdir /usr/local/apache2/manual

    make[1]: Leaving directory `/usr/local/src/httpd-2.2.26'

     

    [참고] configure && make && make install

    # ./configure --prefix=/usr/local/apache2 && make && make install

     

     

     

     

    웹서비스 테스트

     

    Apache 소스 프로그램 설치 과정

    () 소스 파일 다운로드

    () 압축 해제

    () configure && make && make install

    () 웹서비스 시작 및 확인

     

    # cd /usr/local/apache2

    # ls

    bin/ cgi-bin/ error/ icons/ lib/ man/ modules/

    build/ conf/ htdocs/ include/ logs/ manual/

     

    /usr/local/apache2 ----+---- bin (명령어, 데몬)

    +---- conf (설정 파일)

    +---- htdocs (소스 코드)

    # cd bin

    # ./apachectl start 기동하기 전에 반드시 기존에 실행되던 데몬을 내려줘야 한다!

    # pgrep -lf httpd

    21404 /usr/local/apache2/bin/httpd -k start

    21405 /usr/local/apache2/bin/httpd -k start

    21406 /usr/local/apache2/bin/httpd -k start

    21407 /usr/local/apache2/bin/httpd -k start

    21408 /usr/local/apache2/bin/httpd -k start

    21409 /usr/local/apache2/bin/httpd -k start

    -> 떠 있는 데몬 확인

     

    # cat /usr/local/apache2/htdocs/index.html

    <html><body><h1>It works!</h1></body></html>

     

    # firefox & (# firefox http://127.0.0.1)

    -> http://localhost (http://127.0.0.1)

    -> 자신의 서버에 웹서비스 요청을 하여 메인 페이지가 보이는지 확인 한다.

     

    컴파일한 프로그램 제거하기

    # cd /usr/local/apache2/bin

    # ./apachectl stop

    # pgrep lf httpd

    #

     

    # cd

    # rm -rf /usr/local/apache2

     

     

     

    예제1) 소스 형태로 설치한 프로그램(EX: apache2)“rpm qa | grep apache” 확인이 가능한가?

     

    가능하지 않다. 소스 형태로 설치한건 따로 관리해줘야 한다.

     

    예제2) “rm rf /usr/local/apache2” 디렉토리 삭제 후 다시 만들고 싶다면?

     

    /usr/local/src에 있는 make install을 실행하면 된다.

     

    예제3) 소스 디렉토리(EX: /usr/local/src)에서 cinfigure/make/make install를 다시 실행하고 싶다면?

     

    # cd /usr/local/src

    # make clean

     

     

    => 소스형태로 소프트웨어를 관리하는 것이 어렵다.

    => 왜 실무에서는 소스형태로 소프트웨어를 설치하는가?

    1. 최신버전은 개발자가 소스형태로만 제공되기 때문이다. 패키지는 추후에 밴더업체들이 제공한다.

    2. 경량화. 소스형태로 s/w를 설치하면 필요한 기능만 설치할 수 있다.

     

     

     

    (정리) 패키지 관리

     

    rpm CMD(RedHat Packages Manager)

    # rpm -ivh [--nodeps] pkg.rpm

    # rpm -Uvh [--nodeps] pkg.rpm

    # rpm -Fvh [--nodeps] pkg.rpm

     

    # rpm -qa | grep pkg

    # rpm -q pkg

     

    # rpm -qf /etc/passwd

    # rpm -ql pkg

    # rpm qi pkg

    # rpm qi -p pkg.rpm

     

    # rpm -e [--nodeps] pkg

    yum CMD(Yellowdog Update Manager)

    # yum install pkg (# yum -y install pkg)

    # yum update pkg

    # yum -y update

     

    # yum list (# yum list installed)

    # yum search pkg

     

    # yum info pkg

     

    # yum remove pkg (# yum erase pkg)

    [참고] kernel upgrad

    # rpm ivh kernel.rpm

    # yum install kernel.rpm

     

    Source Compile(EX: pkg.tar.gz)

    # tar xvzf pkg.tar.gz

    # cd pkg

    # ./configure --prefix=/usr/local/pkg (# ./configure --help)

    # make

    # make install

    [참고] APM(Apache + PHP + MySQL) 설치

    ATJO(Apache + Tomcat + JAVA(JDK/SDK) + Oracle) 설치

     

    'linux > centOS' 카테고리의 다른 글

    사용자 그룹 관리  (0) 2018.07.04
    리눅스 부팅 과정  (0) 2018.07.03
    소프트웨어 관리 1  (0) 2018.06.29
    SWAP 관리  (0) 2018.06.27
    RAID 관리  (0) 2018.06.26

    댓글

Designed by Tistory.