[리눅스마스터1급] 2.1.4 소프트웨어 설치 및 관리

cateto·2022년 3월 7일
0

li-master1

목록 보기
15/27
post-thumbnail

2.리눅스 시스템 관리 / 2.장치 관리 / 2.1.4 소프트웨어 설치 및 관리

소프트웨어 설치는 거의 매일(?) 프로젝트마다 빈번하게 이루어지는 행위이다. 그때마다 구글에 검색해서 하는데.. 물론 이걸 정리한다고 해도 구글에 검색하는 건 변하지 않을것 같지만...그래도 시야가 넓어질 것 같다. 리눅스 마스터 1급 합격은 덤 ! 아 생각해보니까 docker에서 JAVA_HOME 환경변수 설정하는것 때문에 애먹었던 기억,,,아직 해결 전이여서 더 파봐야겠다;;

패키지를 통한 설치

배포판 별 관리 기법

배포판기본 패키지 관리 기법온라인 패키지 관리 기법
redhat 계열RPMYUM
devian 계열Dpkgapt-get
Suse 계열YaSTzypper

RPM

YUM

Debian Package 관리

dpkg

apt-get

소스 코드 컴파일

cmake

tar 및 압축 관련 유틸리티

tar(tape archive)

파일을 하나의 파일로 묶어주는 명령이다. 지원되는 압축형식에는 compress, gzip, bzip2, xz 등이 있다.
예)
tar cvf posein.tar *.c : 현재 디렉터리의 .c로 끝나는 모든 파일을 묶는데 진행결과를 출력한다.
tar xvf posein.tar : 현재 디렉터리에 파일을 푼다.
tar zxvf php.tar.gz : gz로 압축된 파일을 푼다.
tar jxvf php.tar.bz2 : bzip2로 압축된 파일을 푼다.
tar Jxvf test.xz : xz로 압축된 파일을 푼다.

compress, uncompress

전통적으로 유닉스에서 사용한 압축프로그램. 압축률이 낮아 현재는 거의 사용하지 않는다.
확장자 Z가 붙는다.

gzip, gunzip

GNU에서 만든 압축프로그램. 유닉스의 compress를 대신하여 만들어졌다.
확장자 gz가 붙는다.

bzip2, bunzip2

gzip보다 압축률은 좋지만 시간이 더 걸림.
확장자 bz2가 붙는다.

xz, unxz

LZMA2(Lempel-Ziv-Markov chain algorithm) 라는 알고리즘을 이용해 만든 데이터 무손실 압축 프로그램이다. xz > bzip2 > gzip 순으로 압축률이 높다.
확장자 xz가 붙는다.

zip, unzip

zip은 DOS/Windows 계열에서 많이 사용되던 압축 프로그램으로 리눅스에서도 zip이라는 명령으로 사용 가능하다.
예) zip posein posein.tar posein.tar 파일을 압축한다. -> posein.zip이 생성
zip -r backup data/ 디렉터리를 backup이라는 이름으로 압축 -> backup.zip이 생성
``

gcc(GNU Complier Collection)

GNU 프로젝트에 의해 만들어진 일종의 컴파일러 모음 (C, C++, Objective-C, Fortran, Java, Ada, Go 등을 지원)
예)
1. gcc sum.c : sum.c 파일을 컴파일하여 실행파일을 생성한다.
2. gcc -o sum sum.c : sum.c라는 파일을 컴파일하여 sum이라는 실행 파일을 생성한다.
3. gcc -c sum.c : sum.c를 컴파일하여 오브젝트 파일을 생성한다. 기본적으로 sum.o로 생성된다.
4. gcc -o LinkedList LinkedList.c Test_LinkedList.c : LinkedList.c 및 Test_LinkedList.c를 컴파일하여 LinkedList라는 실행 파일을 생성한다.

make 유틸리티 활용

make는 GNU 프로젝트에 의해 만들어진 프로그램으로 컴파일을 자동화해주는 도구이다.
make는 Makefile의 정보를 토대로 빌드(Build)한다.

Makefile

라이브러리(Library) 관리

라이브러리란

도서관을 뜻하는데, 컴퓨터에서 말하는 라이브러리는 프로그램에서 특정한 기능을 하는 루틴(Routine)을 모아놓은 것으로 하나 이상의 서브 루틴, 함수(Function), 클래스(Class)로 만든다.

리눅스에서의 공유라이브러리

운영체제에서 동일한 라이브러리가 정적으로 링크된 상태로 여러 프로그램이 실행될 경우에는 메모리 낭비를 초래한다. 이러한 문제를 없애기 위해 많은 프로그램이 동적 링크를 사용한다. 실행시에만 링크가 되는것이다. 이때 공유되는 라이브러리를 공유 라이브러리(Shared Library)라고 부르며 공유 라이브러리는 공유물(Shared Object)라는 의미로 .so가 덧붙여져 있다.
또한 /lib 에는 ls, mv 등의 기본 명령어 및 라이브러리가, /usr/lib에는 응용 프로그램과 관련된 라이브러리가 위치하였다. 또한 특정 디렉토리를 라이브러리 관련 디렉토리로 등록하려면 /etc/ld.so.conf 파일을 사용하였다. CentOS7 버전부터는 x_86_64 용으로만 배포되면서 대부분 공유 라이브러리를 lib64에서 관리한다.

관련 파일

  1. /etc/ld.so.conf : 다른 특정 디렉토리에 공유 라이브러리를 위치시킬 때 사용하는 환경설정 파일. 등록한 후에 ldconfig 명령어를 수행하여 정보를 갱신해야 한다.
  2. /etc/ld.so.cache : /lib, /usr/lib 뿐만 아니라, /etc/ld.so.conf 파일에 명시한 디렉터리에서 찾을 수 있는 라이브러리 파일 목록을 담고 있는 파일이다.

공유 라이브러리 관련 명령어

ldconfig

공유 라이브러리 관련 정보를 갱신하고 설정하는 명령으로 주로 변경된 /etc/ld.so.conf 파일의 내용을 갱신할 때 사용한다.

예) ldconfig : /etc/ld.so.conf 파일의 내용을 다시 읽어들인다. 파일 내용이 갱신된 경우에는 반드시 실행해야 적용된다.
ldconfig -p : 현재 캐시에 저장되어있는 공유 라이브러리 목록 정보를 출력한다.

ldd

특정 파일이나 프로그램이 의존하고 있는 공유 라이브러리 정보를 출력하는 명령

예) ldd /bin/ls, ldd /bin/ps : 입력하면 해당 명령어가 의존하고 있는 공유 라이브러리가 출력됨.
ldd -v /bin/cp : -v(--verbose) : 공유 라이브러리 정보를 버전 등 더 자세히 출력됨.

공유 라이브러리 관련 환경변수

LD_LIBRARY_PATH=/usr/local/mysql/lib
export LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH

/usr/local/mysql/lib

계속 쓰고 싶으면 /etc/profile이나 ~/.bash_profile에 등록해야 한다.

profile
Curious for Everything

0개의 댓글