소프트웨어 설치는 거의 매일(?) 프로젝트마다 빈번하게 이루어지는 행위이다. 그때마다 구글에 검색해서 하는데.. 물론 이걸 정리한다고 해도 구글에 검색하는 건 변하지 않을것 같지만...그래도 시야가 넓어질 것 같다. 리눅스 마스터 1급 합격은 덤 ! 아 생각해보니까 docker에서 JAVA_HOME 환경변수 설정하는것 때문에 애먹었던 기억,,,아직 해결 전이여서 더 파봐야겠다;;
배포판 | 기본 패키지 관리 기법 | 온라인 패키지 관리 기법 |
---|---|---|
redhat 계열 | RPM | YUM |
devian 계열 | Dpkg | apt-get |
Suse 계열 | YaST | zypper |
파일을 하나의 파일로 묶어주는 명령이다. 지원되는 압축형식에는 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로 압축된 파일을 푼다.
전통적으로 유닉스에서 사용한 압축프로그램. 압축률이 낮아 현재는 거의 사용하지 않는다.
확장자 Z
가 붙는다.
GNU에서 만든 압축프로그램. 유닉스의 compress를 대신하여 만들어졌다.
확장자 gz
가 붙는다.
gzip보다 압축률은 좋지만 시간이 더 걸림.
확장자 bz2
가 붙는다.
LZMA2(Lempel-Ziv-Markov chain algorithm) 라는 알고리즘을 이용해 만든 데이터 무손실 압축 프로그램이다. xz > bzip2 > gzip
순으로 압축률이 높다.
확장자 xz
가 붙는다.
zip은 DOS/Windows 계열에서 많이 사용되던 압축 프로그램으로 리눅스에서도 zip이라는 명령으로 사용 가능하다.
예) zip posein posein.tar
posein.tar 파일을 압축한다. -> posein.zip이 생성
zip -r backup data/
디렉터리를 backup이라는 이름으로 압축 -> backup.zip이 생성
``
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는 GNU 프로젝트에 의해 만들어진 프로그램으로 컴파일을 자동화해주는 도구이다.
make는 Makefile
의 정보를 토대로 빌드(Build)한다.
도서관을 뜻하는데, 컴퓨터에서 말하는 라이브러리는 프로그램에서 특정한 기능을 하는 루틴(Routine)을 모아놓은 것으로 하나 이상의 서브 루틴, 함수(Function), 클래스(Class)로 만든다.
운영체제에서 동일한 라이브러리가 정적으로 링크된 상태로 여러 프로그램이 실행될 경우에는 메모리 낭비를 초래한다. 이러한 문제를 없애기 위해 많은 프로그램이 동적 링크를 사용한다. 실행시에만 링크가 되는것이다. 이때 공유되는 라이브러리를 공유 라이브러리(Shared Library)라고 부르며 공유 라이브러리는 공유물(Shared Object)라는 의미로 .so
가 덧붙여져 있다.
또한 /lib
에는 ls
, mv
등의 기본 명령어 및 라이브러리가, /usr/lib
에는 응용 프로그램과 관련된 라이브러리가 위치하였다. 또한 특정 디렉토리를 라이브러리 관련 디렉토리로 등록하려면 /etc/ld.so.conf
파일을 사용하였다. CentOS7 버전부터는 x_86_64 용으로만 배포되면서 대부분 공유 라이브러리를 lib64
에서 관리한다.
/etc/ld.so.conf
: 다른 특정 디렉토리에 공유 라이브러리를 위치시킬 때 사용하는 환경설정 파일. 등록한 후에 ldconfig
명령어를 수행하여 정보를 갱신해야 한다./etc/ld.so.cache
: /lib
, /usr/lib
뿐만 아니라, /etc/ld.so.conf
파일에 명시한 디렉터리에서 찾을 수 있는 라이브러리 파일 목록을 담고 있는 파일이다.공유 라이브러리 관련 정보를 갱신하고 설정하는 명령으로 주로 변경된 /etc/ld.so.conf
파일의 내용을 갱신할 때 사용한다.
예) ldconfig
: /etc/ld.so.conf 파일의 내용을 다시 읽어들인다. 파일 내용이 갱신된 경우에는 반드시 실행해야 적용된다.
ldconfig -p
: 현재 캐시에 저장되어있는 공유 라이브러리 목록 정보를 출력한다.
특정 파일이나 프로그램이 의존하고 있는 공유 라이브러리 정보를 출력하는 명령
예) 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
에 등록해야 한다.