Linux 5 (compile)

다원·2023년 1월 6일
0

software compile

  • Complie 과정
    ./configure --options(설치 환경 지정) > make(기계어로 변경) > make install(시스템에 설치)
  • ./configure : 해당 소프트웨어와 종속되는 패키지를 함께 설치하거나, 다른 패키지와 연계해서 설치, 특정 경로를 지정해서 설치
  • configure 옵션
    <옵션을 주지 않을 경우 Default 환경을 잡아서 complie>
    -disable
    -enable
    -prefix
  • 확장자가 없는 실행 파일일 경우 ./configure
  • 실행 파일에 확장자가 있을 경우
    ex) deamon.sh 파일을 실행 할 경우 : bash deamon.sh (./deamon.sh)

yum vs compile

yum: 소스 코드로 default 설치 후 바로 사용
compile: 사용자 환경에 맞추어 설치하기 위해 compile 시 옵션을 주어 설치 진행
일반적인 설치의 경우 경로가 default로 설치되어 랜섬웨어 등의 공격이 가능
컴파일하여 사용자가 옵션을 주어 설치 할 경우 경로 변경이 가능

socket install compile

컴파일러 설치

sample socket file 다운로드

wget http://www.dest-unreach.org/socat/download/Archive/socat-1.4.2.0.tar.gz

압축 파일을 풀고 확인했을 때 configure, README 등의 파일이 있을 경우 컴파일하여 사용해야됨

README: 프로그램에 대한 설명

socket complie

Default로 설치하기 때문에 옵션없이 진행: ./configure > make > make install

http install compile

httpd

wget https://archive.apache.org/dist/httpd/httpd-2.4.9.tar.gz

  • 압축 해제 및 소프트 링크 연결 (httpd-2.4.9 > httpd)

apr

apr-util

  • httpd 디렉터리에서 apr-util 다운로드
    wget http://mirror.apache-kr.org/apr/apr-util-1.6.1.tar.gz
  • 압축 해제 및 소프트 링크 연결
  • apr-util의 경우 apr과 같이 사용됨으로 컴파일 시 옵션 필요
    ./configure --prefix=/usr/src/httpd --with-apr=/usr/src/httpd/apr
    && make && make install

httpd compile 실행

  • compile 작업 실행 전 gcc-c++ 확인 필요

  • httpd/srclib 디렉터리에 소프트링크되어있는 apr apr-util 복사
    sudo cp -r apr-1.6.5 srclib/apr && sudo cp -r apr-util-1.6.1 srclib/apr-util

  • httpd conpile
    apr과 apr-util을 포함하여 사용하며, 허용 목록과 디렉터리 경로 설정
    sudo ./configure --prefix=/usr/src/httpd --with-included-arp=/usr/src/httpd/apr --with-included-apr-util=/usr/src/httpd/apr-util --enable-module=so --enable-mods-shared=all --enable-so --enable-rewrite
    && make && make install

  • firewall port

    firewall-cmd --permanent --add-port=80/tcp
    firewall-cmd --permanent --add-port=443/tcp
    firewall-cmd --reload
    setenforce 0

  • 설정한 경로 bin 파일에서 apachctl 실행
    /usr/src/httpd/apachectl 실행 파일 확인
    ./apachectl start

    yum 종속적으로 설치할 경우 service httpd start 로 시작
    현재 compile하면서 apr과 apr-util을 사용하도록 지정하여 achectl로 시작해야됨

  • 홈페이지 설정
    사용자가 컴파일하면서 경로를 /usr/src/httpd로 설정하였기 때문에 /var/httpd에서 홈페이지 설정하지 않음

  • localhost http 확인

    yum


    repository 확인
    yum update : 변경된 repository를 업데이트
    yum updateinfo list |wc -l
    yum update -x httpd: httpd에 대한 업데이트를 하지 않음
    yum update --nogpgcheck --skip-broken: 문제가 있는 yum 연계되지 않은 애들은 update 하지 않음
    yum -y install yum-plugin-security: security에 연결된 plugin 파일을 받을 수 있음
    yum security check-update: security에서 update된 것 check
    yum update --security: security 부분만(특정부분만) 업데이트 할 수 있음
    yum check-update firefox

Patch 파일

문제점이나 개선 등을 목적으로 개발한 파일, 필요한 부분만 업데이트

  • 업데이트(update): 일부 정보, 리포지터리 등을 새롭게 갱신 하는 것
  • 업그레이드(upgrade): 완전히 상위 버전으로 올리는 것
  • 패치(patch): 부분적으로 올리는 것

Patch의 경우 낮은 버전부터 단계적으로 진행 역 패치나 알렌콕스 패치 등의 기법을 사용
업데이트 할 모든 패치 프로그램들의 압축을 풀어서 차례대로 두고, batch 파일 형태의 쉘 스크립트를 작성하여 낮은 버전부터 차례대로 진행
Patch 레벨 -p0, -p1 등의 식으로 지정
-> /home/centos/ABC/abc 이면 -p0:/, -p1: /home, -p2: /home/centos 방식으로 지정

Batch

두 버전에서 차이 나는 내용이나 파일들을 추출해서 패치 파일 생성

  • diff 명령어 사용
    diff -urN 원본파일 비교파일 > 패치파일.patch : 패치파일 생성
  • a.txt 와 b.txt 파일 생성
  • 두 개를 비교 및 파일 읽기
    ---: 원본 파일과 +++생성된 파일

    -: 원본 파일에 없는 부분
    +: 업데이트 된 파일에서 추가된 부분

Patch

  • root 디렉터리에서 실행
    patch 패치될파일 < 패치파일.patch :패치_파일 적용
    patch level -p0: root에 존재함으로

    a.txt 파일의 내용이 변경됨

하위 디렉터리 생성하여 실행

  • 디렉터리 생성
    mkdir -p 옵션: 처음만드는 디렉터리(test) 밑에 하위 디렉터리(123,456) 생성
  • 두 개의 파일 생성
  • Batch 파일 생성

    patch level 어디에서든 적용을 하면 적용이 되어야됨, 그러나 변경이 없는 부분을 확인해야됨으로써 낭비가 발생

디렉터리 변경

  • mv A B: 동일한 디렉터리(위치)에서는 이름 변경
  • mv A /tmp/B: 동일하지 않은 디렉터리에서는 다른디렉터리(/tmp)로 이동
  • rename A B: 파일의 이름 혹스 확장자를 변경할 수 있음
profile
공부일지,

0개의 댓글