devRenio

소프트웨어 관리

서버프로그래밍(황승연) 10주차 강의내용

패키지 설치

  • 우분투에서 패키지를 설치하는 3가지 방법
    • APT(Advanced Package Tool) 명령 사용
    • dpkg(Debian package) 명령 사용
    • aptiude 명령 사용
  • APT 명령
    • APT의 대표적인 명령 : apt-cache 명령과 apt-get 명령
    • Ubuntu 18.04 LTS 버전부터 apt-cache 명령과 apt-get 명령을 일부 통합한 apt 명령을 제공하고 있지만
    • apt-cache명령과 apt-get 명령을 모두 대체할 수 있는 상황은 아니므로 여기서는 apt-cache 명령과 apt-get 명령을 모두 사용

apt-cache [옵션] [서브 명령] : APT 캐시에서 패키지와 관련된 정보를 출력
패키지 이름, 버전, 설명, 의존성, 설치 가능 여부 확인 가능
패키지를 설치하지 않고도 미리 확인할 수 있음

옵션/서브 명령 설명
-f 패키지에 대한 전체 정보 출력
-h 관련 도움말 출력
stats 캐시 통계 정보(전체 패키지 이름과 단일 가상 패키지 등) 출력
dump 패키지 관리 시스템이 현재 알고 있는 모든 패키지 정보를 출력
pkgnames 사용 가능한 모든 패키지의 이름 출력
search [키워드] 키워드에 해당하는 패키지 검색
show [패키지 이름] 해당 패키지의 정보 출력
showpkg [패키지 이름] 패키지의 의존성과 역의존성에 대한 정보 출력


입력 예 : apt-cache stats

  • 패키지 관리 시스템이 보유하고 있는 로컬 패키지 캐시의 통계 정보
  • 출력 내용에는 전체 패키지 개수, 설치 가능한 일반 패키지 수, 순수 가상 패키지(pure virtual), 단일 가상 패키지(single virtual), 혼합 가상 패키지(mixed virtual) 등의 항목이 포함
  • (순수 가상 패키지) 이름만 있고 실제 파일은 없음 → 이 이름으로 설치되는 다른 패키지가 존재
  • (단일 가상 패키지) 가상 이름이지만, 그 이름과 연결된 실제 패키지가 하나인 경우
  • (혼합 가상 패키지) 혼합 가상 패키지는 실제 패키지가 존재하면서 동시에 다른 패키지들도 그 이름(가상 이름)을 제공하는 패키지

apt-get [옵션] [서브 명령] : 패키지 설치 및 업데이트 명령

옵션/서브 명령 설명
-d 패키지 다운로드 수행
-f 의존성이 깨진 패키지 수정
-h 관련 도움말 출력
update 패키지 저장소에서 새로운 패키지 정보를 가져옴
upgrade 모든 패키지를 최신 버전으로 업그레이드
install [패키지 이름] 해당 패키지 설치
-y 패키지를 설치할 때 자동으로 y 입력
remove [패키지 이름] 설치된 해당 패키지 제거(설정 파일 잔존)
purge [패키지 이름] 설치된 해당 패키지와 설정 파일을 모두 삭제
autoremove 시스템에 설치된 패키지를 자동으로 정리 및 삭제
download [패키지 이름] [패키지 이름] ... 해당 패키지를 현재 디렉터리에 다운로드
autoclean 오래된 패키지 또는 불완전한 다운로드 패키지 제거
check 의존성이 깨진 패키지 확인
clean /var/cache/apt/archives 디렉터리에 캐시되어 있는 모든 패키지를 제거하여 디스크 공간 확보

입력 예 : sudo apt-get update
update 명령을 수행하면 /etc/apt/sources.list.d/ubuntu.sources에서 새로운 패키지 정보를 가져와서 APT 캐시를 수정
만약 이 파일을 수정하였다면 반드시 이 명령을 수행해야 함

dpkg [옵션] [패키지/파일 이름] : .deb 패키지를 직접 설치, 제거, 조회

  • APT 명령은 소프트웨어 관리를 위해 내부적으로 DPKG 명령을 이용
  • DPKG는 저장소(repository)가 없기 때문에 의존성 자동 해결, 원격 다운로드 기능은 제공하지 않음
  • DPKG 명령과 APT 명령의 차이점
    - DPKG 명령은 시스템의 특정 파일이 어느 패키지에 포함되어 있는지 등에 대한 구체적인 기능을 확인할 때 옵션과 함께 사용
옵션/명령 설명
-l 설치된 패키지 목록 전체 출력
-l [패키지 이름] 해당 패키지의 설치상태 정보 출력
-r [패키지 이름] sudo 명령을 사용하여 해당 패키지를 삭제
-P [패키지 이름] sudo 명령을 사용하여 해당 패키지와 설정 정보 모두 삭제
-s [패키지 이름] 해당 패키지의 자세한 정보 출력
-L [패키지 이름] 해당 패키지가 설치된 파일목록 출력
-S [경로명] 경로명이 포함된 패키지 검색
-c [.파일 확장자] 해당 파일 확장자를 가진 파일의 내용 출력
-i [.파일 확장자] sudo 명령으로 해당 파일 확장자를 가진 파일 설치
-x [.파일 확장자] [디렉터리명] 해당 파일 확장자를 가진 파일을 지정한 디렉터리에 풀어놓음



파일 아카이브와 압축

파일 아카이브

  • 아카이브(Archive)란 특정 시간에 함께 묶인 파일이나 디렉터리의 집합을 의미(저장소 또는 보관소)
  • 아카이브는 다른 시스템과 파일이나 디렉터리를 주고 받거나 파일을 백업하는 용도로 사용
  • 파일 아카이브를 위해 사용되는 명령은 tar, cpio, ar 등이 있음

tar [기능[옵션]] [아카이브 생성 파일명] [대상 파일명]

구분 옵션 설명
기능 c 새로운 tar 아카이브 생성
r 새로운 파일 추가
t tar 파일에 존재하는 파일 리스트 출력
u 수정된 파일에 대해 업데이트 수행
x tar 파일에 있는 원본 파일을 추출
옵션 C [디렉터리명] 파일들을 특정 디렉터리에 풀어 놓음
f [디바이스명 또는 파일명] 아카이브 파일 또는 테이프 장치를 지정 (디바이스명을 -으로 지정하면 tar 파일 대신 표준입력에서 읽어 들임)
h 심볼릭 링크의 원본 파일 포함
j bzip2로 압축 또는 해제
p 파일 복구 시 원래의 접근 권한을 유지
v 처리하고 있는 파일의 정보 출력
z gzip으로 압축 또는 해제
Z compress를 통해 아카이브를 필터링

입력 예 : tar cvf arch_test.tar arch_test
arch_test 디렉터리를 대상으로 아카이브 파일 arch_test.tar을 생성

입력 예 : tar tvf arch_test.tar
arch_test.tar 파일에 대한 상세한 정보를 출력(ls -l과 유사)

입력 예 : tar xvf arch_test.tar
아카이브 파일 arch_test.tar을 해제

입력 예 : tar uvf arch_test.tar arch_test
arch_test.tar의 내용을 arch_test의 내용으로 업데이트

입력 예 : tar rvf arch_test.tar hosts
arch_test.tar 내에 hosts 파일을 추가

입력 예 : tar cvzf arch_test.tar.gz arch_test
아카이브를 생성하는 동시에 arch_test.tar.gz(gzip 형식으로 압축) 압축 파일로 생성

입력 예 : tar cvjf arch_test.tar.bz2 arch_test
아카이브를 생성하는 동시에 arch_test.tar.bz2(bzip2 형식으로 압축) 압축 파일로 생성

tar xvzf/xvjf : 압축 해제

파일 압축과 해제

gzip [옵션] [파일명] : 파일을 gzip 형식으로 압축

옵션 설명
-d 파일 압축 해제
-l 압축된 파일의 정보 출력
-r 하위 디렉터리로 이동하여 파일 압축
-t 압축 파일 검사
-v 압축 정보를 화면에 출력
-9 최대한 압축

입력 예 : gzip arch_test.tar arch_test
arch_test.tar 파일을 arch_test.tar.gz 파일로 압축
arch_test의 경우 디렉터리이기 때문에 압축이 불가능

zcat [파일명] : 압축 파일 내용 확인
입력 예 : zcat arch_test.tar.gz

gunzip [파일명] : 압축 파일 해제(g+un+zip)
입력 예 : gunzip arch_test.tar.gz

bzip2 : 파일을 bzip2 형식으로 압축
bzip2는 gzip에 비해 압축률은 좋지만 속도가 약간 느림

옵션 설명
-d 파일 압축 해제
-l 압축된 파일의 정보 출력
-t 압축 파일 검사
-v 압축 정보를 화면에 출력
-best 최대한 압축

입력 예 : bzip2 arch_test.tar arch_test
arch_test.tar 파일을 arch_test.tar.bz2 파일로 압축
arch_test의 경우 디렉터리이기 때문에 압축이 불가능

bzcat [파일명] : 압축 파일 내용 확인
입력 예 : bzcat arch_test.tar.bz2

bunzip2 [파일명] : 압축 파일 해제(b+un+zip2)
입력 예 : bunzip2 arch_test.tar.bz2

소프트웨어 컴파일

  • 컴파일러의 개념
    • 컴파일러(Compiler)란 자연어로 구성된 고급언어(C 언어, Java 등)를 컴퓨터가 이해할 수 있는 기계어(0과 1)로 번역해 주는 소프트웨어를 의미
    • 자연어를 기계어로 번역해 주는 과정을 컴파일(Compile)라고 함
    • C 언어로 작성한 프로그램을 컴퓨터가 실행할 수 있도록 컴파일을 수행하려면 C 컴파일러가 필요
  • gcc 컴파일러
    • 우분투에서 사용하는 C 컴파일러는 gcc

gcc [옵션] [파일명] : c 소스 파일에 대한 컴파일을 수행
디폴트 실행 파일명 : a.out

입력 예 : gcc ex_01.c
ex_01.c 파일을 컴파일하여 실행 파일 a.out으로 생성
a.out 실행 시 ./a.out과 같이 주소 지정 필요(경로가 설정되지 않았기 때문)

gcc -o [변경할 실행파일명] [C 프로그램 소스 파일명] : 실행파일명 지정

geany IDE

geany IDE를 사용하여 C 프로그래밍 환경 구성