1 / 49

[ 2014-1] 운영체제 – Linux 실습 LAB#9 : 소프트웨어 관리하기

[ 2014-1] 운영체제 – Linux 실습 LAB#9 : 소프트웨어 관리하기 . 참고교재 : 페도라리눅스 시스템 & 네트워크 ( 한빛 ). 목차. 00. 개요 01. RPM 패키지 설치 02. yum 을 이용한 패키지 설치 03. 파일 아카이브와 압축 04. 소프트웨어 컴파일. RPM 의 장점과 단점을 설명할 수 있다 . rpm 명령으로 패키지를 설치하고 업그레이드할 수 있다 . rpm 명령으로 패키지를 검색하고 상세 정보를 확인할 수 있다 .

becca
Download Presentation

[ 2014-1] 운영체제 – Linux 실습 LAB#9 : 소프트웨어 관리하기

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. [2014-1] 운영체제 – Linux 실습LAB#9 : 소프트웨어 관리하기 참고교재 : 페도라리눅스 시스템&네트워크(한빛)

  2. 목차 00. 개요 01. RPM 패키지 설치 02. yum을 이용한 패키지 설치 03. 파일 아카이브와 압축 04. 소프트웨어 컴파일

  3. RPM의 장점과 단점을 설명할 수 있다. rpm 명령으로 패키지를 설치하고 업그레이드할 수 있다. rpm 명령으로 패키지를 검색하고 상세 정보를 확인할 수 있다. yum 명령으로 설치한 패키지와 설치 가능한 패키지, 업데이트할 수 있는 패키지의 목록을 확인할 수 있다. yum 명령으로 패키지를 설치하고 업데이트하고 삭제할 수 있다. tar 명령으로 아카이브를 생성하고, 내용을 확인하고 풀 수 있다. 파일을 압축하고 압축을 풀 수 있다. gcc로 C 파일을 컴파일할 수 있다. makefile을 작성하여 make 명령으로 실행 파일을 만들 수 있다.

  4. 리눅스 실습 스터디맵

  5. 00 개요 [그림 9-1] 9장의 내용 구성

  6. 01 RPM 패키지 설치 • 리눅스에서 주로 사용하는 패키지 • RPM(RedhatPackage Manager): 레드햇에서 만든 패키지 관리도구 • .deb: 데비안, 우분투 계열에서 사용하는 패키지 • RPM의 특징 • 바이너리 파일로 구성되어 있어 컴파일이 필요 없다. • 패키지의 파일들이 관련 디렉터리로 바로 설치된다. • 한 번에 설치된 패키지의 파일을 일괄적으로 삭제할 수 있다. • 기존에 설치된 패키지를 삭제하지 않고 바로 업그레이드할 수 있다. • 패키지의 설치 상태를 검증할 수 있다. • 패키지에 대한 정보를 제공한다. • 단점: 패키지 의존성에 따라 관련 패키지가 먼저 설치되어 있지 않으면 설치할 수 없다. • RPM 패키지의 이름 구성 • 패키지 이름 : 첫 번째 항목에는 패키지의 이름 • 패키지 버전 : 두 번째 항목은 패키지의 버전 • 패키지 릴리즈: 릴리즈는 해당 버전에서 몇 번째 만들어진 것인지를 나타냄. ‘1.fc19’에서 1은 첫 번째 만들어진 패키지임을, fc19는 페도라19용으로 만들어진 것임을 의미 • 아키텍처 : 사용하는 시스템 아키텍처로 x86은 인텔 x86 CPU를, 64는 64비트 운영체제임을 의미 • 확장자: RPM 패키지의 확장자는.rpm을 사용하여 다른 패키지와 구분

  7. 01 RPM 패키지 설치 • rpm 명령 • 현재 사용 중인 rpm의 버전 확인 [root@localhost ~]# rpm --version RPM 버전 - 4.11.1 [root@localhost ~]#

  8. 01 RPM 패키지 설치 • RPM 패키지 설치하기 • CD/DVD 장치 연결하기 • 페도라iso파일 마운트 • Player→RemovableDevices→CD/DVD→Settings • ISO image file이 선택되어 있어야 함 [그림 9-3] CD/DVD장치확인

  9. 01 RPM 패키지 설치 • CD/DVD 장치 연결하기 • CD/DVD 마운트 • 패키지 위치 찾기: Packages 디렉터리 아래에 패키지 이름의 첫 글자별로 모아서 디렉터리로 구분 • x 디렉터리에서 xterm패키지를 찾아보자. [root@localhost ~]# mount -r -t iso9660 /dev/cdrom /mnt/cdrom [root@localhost ~]# cd /mnt/cdrom [root@localhostcdrom]# ls EFI LiveOS Packages TRANS.TBL images isolinuxrepodata [root@localhostcdrom]# [root@localhost cdrom]# cd Packages [root@localhost Packages]# ls TRANS.TBL b d f h j l n p r t v x z a c e g i k m o q s u w y [root@localhost Packages]# [root@localhost Packages]# cd x [root@localhost x]# ls xterm* xterm-293-1.fc19.x86_64.rpm [root@localhost x]#

  10. 01 RPM 패키지 설치 • 패키지 설치와 의존성: ivh옵션 • xterm패키지를 설치하려면 libXaw.so.7이 필요하다는 것: libXaw부터 설치해야함 • 다시 xterm설치 [root@localhost x]# rpm -ivh xterm-293-1.fc19.x86_64.rpm 오류: Failed dependencies: libXaw.so.7()(64bit) is needed by xterm-293-1.fc19.x86_64 [root@localhost x]# [root@localhost x]# cd .. [root@localhost Packages]# cd l [root@localhost l]# lslibXaw* libXaw-1.0.11-5.fc19.x86_64.rpm libXaw-devel-1.0.11-5.fc19.x86_64.rpm [root@localhost l]# rpm -ivh libXaw-1.0.11-5.fc19.x86_64.rpm 준비 중... ################################# [100%] Updating / installing... 1:libXaw-1.0.11-5.fc19 ################################# [100%] [root@localhost l]# [root@localhost l]# cd ../x [root@localhost x]# rpm -ivh xterm-293-1.fc19.x86_64.rpm 준비 중... ################################# [100%] Updating / installing... 1:xterm-293-1.fc19 ################################# [100%] [root@localhost x]#

  11. 01 RPM 패키지 설치 • xterm설치 확인 및 실행 • xterm명령 확인 • xterm실행: X 윈도 환경에서 터미널을 에뮬레이션해주는 프로그램 [root@localhost x]# whereisxterm xterm: /bin/xterm /usr/bin/xterm /usr/share/man/man1/xterm.1.gz [root@localhost x]# [그림 9-4] xterm동작 화면

  12. 01 RPM 패키지 설치 • 패키지 강제 설치하기 • 이미 설치된 패키지를 다시 설치할 경우 • 강제로 패키지를 설치할 때는 --replacepkgs옵션을 사용 [root@localhost x]# rpm -ivh xterm-293-1.fc19.x86_64.rpm 준비 중... ################################# [100%] xterm-293-1.fc19.x86_64 패키지는 이미 설치되어 있습니다 [root@localhost x]# [root@localhost x]# rpm -ivh --replacepkgs xterm-293-1.fc19.x86_64.rpm 준비 중... ################################# [100%] Updating / installing... 1:xterm-293-1.fc19 ################################# [100%] [root@localhost x]#

  13. 01 RPM 패키지 설치 • RPM 패키지 업그레이드하여 설치하기: -Uvh • -U 옵션으로 패키지를 설치할 때 기존에 설치되어 있던 패키지는 업그레이드하여 설치하고 새로운 패키지는 그대로 설치 -> 따라서 -i옵션보다는 -U 옵션을 더 많이 사용 [root@localhost x]# cd ../l [root@localhost l]# rpm -Uvh lynx-2.8.8-0.1.dev15.fc19.x86_64.rpm 준비 중... ################################# [100%] Updating / installing... 1:lynx-2.8.8-0.1.dev15.fc19 ################################# [100%] [root@localhost l]#

  14. 01 RPM 패키지 설치 • 패키지 정보 검색하기: -q • 전체 패키지 목록 출력하기 : -qa [root@localhost l]# rpm -qa kexec-tools-2.0.4-10.fc19.x86_64 libnice-0.1.3-2.fc19.x86_64 pam-1.1.6-12.fc19.x86_64 mtdev-1.1.3-3.fc19.x86_64 gnome-user-docs-3.8.2-1.fc19.noarch (생략)

  15. 01 RPM 패키지 설치 • 특정 패키지 설치 여부 확인하기 : -qa | grep • 특정 파일을 포함한 패키지 확인하기 : -qf • 왜 오류 발생? -> -f 옵션으로 파일을 지정할 때는 절대 경로 사용 [root@localhost l]# rpm -qa | grep bash bash-completion-2.1-2.fc19.noarch bash-4.2.45-1.fc19.x86_64 [root@localhost l]# [root@localhost l]# rpm -qfls 오류:/mnt/cdrom/Packages/l/ls파일: 그런 파일이나 디렉터리가 없습니다’ [root@localhost l]# [root@localhost l]# rpm -qf /usr/bin/ls coreutils-8.21-11.fc19.x86_64 [root@localhost l]#

  16. 01 RPM 패키지 설치 • 패키지 상세 정보 확인하기 : -qi • 패키지 이름 구성에서 첫 번째 항목에 해당하는 부분을 지정 [root@localhost l]# rpm -qi bash Name : bash Version : 4.2.45 Release : 1.fc19 Architecture : x86_64 Install Date : Group : System Environment/Shells Size : 3648696 License : GPLv3+ Signature : RSA/SHA256, 2013년 03월 14일 (목) 오후 02시 36분 55초, Key ID 07477e65fb4b18e6 Source RPM : bash-4.2.45-1.fc19.src.rpm Build Date : Build Host : buildvm-19.phx2.fedoraproject.org Relocations : (not relocatable) Packager : Fedora Project Vendor : Fedora Project URL : http://www.gnu.org/software/bash Summary : The GNU Bourne Again shell Description : The GNU Bourne Again shell (Bash) is a shell or command language interpreter that is compatible with the Bourne shell (sh). Bash incorporates useful features from the Korn shell (ksh) and the C shell (csh). Most sh scripts can be run by bash without modification. [root@localhost l]#

  17. 01 RPM 패키지 설치 • 패키지 상세 정보 확인하기 : –qif • -f 옵션을 사용할 경우, 해당 파일이 속한 패키지의 상세 정보가 출력 [root@localhost l]# rpm -qif /usr/bin/ls Name : coreutils Version : 8.21 Release : 11.fc19 Architecture : x86_64 Install Date : Group : System Environment/Base Size : 14559867 License : GPLv3+ Signature : RSA/SHA256, 2013년 05월 09일 (목) 오전 12시 56분 21초, Key ID 07477e65fb4b18e6 Source RPM : coreutils-8.21-11.fc19.src.rpm (생략)

  18. 01 RPM 패키지 설치 • 패키지 상세 정보 확인하기 : -qip • -p 옵션을 사용할 때는 해당 패키지가 위치한 디렉터리를 지정: 패키지 이름만 지정할 경우 오류 발생 • -p 옵션을 사용할 때는 다음과 같이 패키지 파일이 위치한 디렉터리로 이동하거나 경로를 지정 [root@localhost l]# rpm -qip bash 오류: bash(을)를 여는데 실패함: 그런 파일이나 디렉터리가 없습니다 [root@localhost l]# [root@localhost l]# cd ../c [root@localhost c]# rpm -qip coreutils-8.21-11.fc19.x86_64.rpm Name : coreutils Version : 8.21 Release : 11.fc19 Architecture : x86_64 Install Date : (not installed) Group : System Environment/Base Size : 14559867 License : GPLv3+ (생략)

  19. 01 RPM 패키지 설치 • 패키지가 설치한 파일 목록 확인하기 : -ql • 패키지의 의존성 확인하기 : -qR [root@localhost c]# rpm -ql bash /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc /usr/bin/alias /usr/bin/bash /usr/bin/bashbug (생략) [root@localhost c]# rpm -qR xterm /bin/sh /bin/sh /bin/sh /bin/sh libICE.so.6()(64bit) libX11.so.6()(64bit) libXaw.so.7()(64bit) libXft.so.2()(64bit) libXmu.so.6()(64bit) libXpm.so.4()(64bit) (생략)

  20. 01 RPM 패키지 설치 • 패키지 삭제하기 • 앞에서 설치한 xterm패키지를 삭제 [root@localhost c]# rpm -e xterm [root@localhost c]# rpm -qa | grep xterm [root@localhost c]#

  21. 02 yum을 이용한 패키지 설치 • yum이란? • ‘Yellowdog Updater Modified’의 약자 • Yellowdog이라는 리눅스배포판에서제작했던 패키지 관리 도구(yup)와 비슷하다는 데서 이름이 유래 • yum은 rpm 기반의 패키지 관리 도구 • yum의 특징 • 패키지를 분석하여 패키지의 의존성을 해결하고 원격 자동 업데이트와 설치를 할 수 있다. • 설치 가능한 패키지에 대한 정보가 담긴 저장소(repository)를 가지고 있다. • 저장소의 정보에 의거하여 패키지를 관리한다. • yum의 기본 형식

  22. 02 yum을 이용한 패키지 설치 • 패키지 목록 확인하기 • yum list 명령의 출력 형식 패키지명.아키텍쳐 버전-릴리즈 저장소 또는 @설치한 저장소 [root@localhost ~]# yum list | more Loaded plugins: langpacks, refresh-packagekit Installed Packages GConf2.x86_64 3.2.6-6.fc19 @anaconda LibRaw.x86_64 0.14.8-3.fc19.20120830git98d925 @updates ModemManager.x86_64 0.6.2.0-1.fc19 @anaconda NetworkManager.x86_64 1:0.9.8.2-9.git20130709.fc19 @updates NetworkManager-glib.x86_64 1:0.9.8.2-9.git20130709.fc19 @updates NetworkManager-l2tp.x86_64 0.9.8-4.fc19 @updates NetworkManager-openconnect.x86_64 0.9.7.0-2.git20120918.fc19 @anaconda NetworkManager-openvpn.x86_64 1:0.9.8.2-3.fc19 @updates (생략)

  23. 02 yum을 이용한 패키지 설치 • yum list 명령에서 사용할 수 있는 옵션

  24. 02 yum을 이용한 패키지 설치 • yum list available: 설치 가능한 패키지의 목록 검색 • yum list updates: 업데이트가 가능한 패키지의 목록 • yum list installed : 현재 시스템에 설치되어 있는 패키지 목록을 출력 [root@localhost ~]# yum list available | more Loaded plugins: langpacks, refresh-packagekit Available Packages 0ad.x86_64 0.0.14-1.fc19 updates 0ad-data.noarch 0.0.14-1.fc19 updates 0xFFFF.x86_64 0.3.9-9.fc19 fedora 2ping.noarch 2.0-1.fc19 updates 389-admin.i686 1.1.35-1.fc19 updates 389-admin.x86_64 1.1.35-1.fc19 updates 389-admin-console.noarch 1.1.8-5.fc19 fedora 389-admin-console-doc.noarch 1.1.8-5.fc19 fedora (생략) [root@localhost ~]# yum list updates Loaded plugins: langpacks, refresh-packagekit Updated Packages yum-langpacks.noarch 0.4.1-3.fc19 updates [root@localhost ~]#

  25. 02 yum을 이용한 패키지 설치 • yum check-update: 업데이트 가능한 패키지 목록 확인하기 [root@localhost ~]# yum check-update Loaded plugins: langpacks, refresh-packagekit yum-langpacks.noarch 0.4.1-3.fc19 updates [root@localhost ~]#

  26. 02 yum을 이용한 패키지 설치 • 패키지 설치하기: yum install 패키지명 • 먼저 의존성이 있는 패키지의 존재 여부를 확인 • 함께 설치해야 할 패키지 목록 출력 • 내려받을파일의 크기와 실제로 설치되었을 때 필요한 디스크 용량 • 설치를 진행할 것인지 확인 • 예: autotrace패키지 설치 -> 의존성 확인 및 함께 설치할 패키지 목록 출력 [root@localhost ~]# yum install autotrace Loaded plugins: langpacks, refresh-packagekit Resolving Dependencies --> Running transaction check ---> Package autotrace.x86_64 0:0.31.1-36.fc19 will be installed (생략) Dependencies Resolved =================================================================================== Package Arch Version Repository Size =================================================================================== Installing: autotrace x86_64 0.31.1-36.fc19 updates 130 k Installing for dependencies: ImageMagick x86_64 6.7.8.9-5.fc19 fedora 2.1 M OpenEXR-libs x86_64 1.7.1-5.fc19 fedora 214 k ilmbase x86_64 1.0.3-5.fc19 fedor 99 k libwmf-lite x86_64 0.2.8.4-36.fc19 fedora 65 k

  27. 02 yum을 이용한 패키지 설치 • 패키지 설치하기 • 예: autotrace패키지 설치 -> 용량 확인 및 설치 여부 문의 • 설치: y로 응답한 경우 Transaction Summary =================================================================================== Install 1 Package (+4 Dependent packages) Total download size: 2.6 M Installed size: 9.4 M Is this ok [y/d/N]: Downloading packages: (1/5): ImageMagick-6.7.8.9-5.fc19.x86_64.rpm | 2.1 MB 00:01 (2/5): OpenEXR-libs-1.7.1-5.fc19.x86_64.rpm | 214 kB 00:00 (3/5): ilmbase-1.0.3-5.fc19.x86_64.rpm | 99 kB 00:00 (생략) Installed: autotrace.x86_64 0:0.31.1-36.fc19 Dependency Installed: ImageMagick.x86_64 0:6.7.8.9-5.fc19 OpenEXR-libs.x86_64 0:1.7.1-5.fc19 ilmbase.x86_64 0:1.0.3-5.fc19 libwmf-lite.x86_64 0:0.2.8.4-36.fc19 Complete! [root@localhost ~]#

  28. 02 yum을 이용한 패키지 설치 • 패키지 업데이트하기: yum update 패키지명 • y로 응답하면 업데이트 진행 • [root@localhost ~]# yum update yum-langpacks • Loaded plugins: langpacks, refresh-packagekit • Resolving Dependencies • --> Running transaction check • ---> Package yum-langpacks.noarch 0:0.4.1-2.fc19 will be updated • ---> Package yum-langpacks.noarch 0:0.4.1-3.fc19 will be an update • Finished Dependency Resolution • Dependencies Resolved • =================================================================================== • Package Arch Version Repository Size • =================================================================================== • Updating: • yum-langpacksnoarch 0.4.1-3.fc19 updates 27 k • Transaction Summary • =================================================================================== • Upgrade 1 Package • Total download size: 27 k • Is this ok [y/d/N]:

  29. 02 yum을 이용한 패키지 설치 • 패키지 정보 검색하기: yum info 패키지명 • 패키지 이름, 패키지 아키텍처, 버전, 릴리즈, 패키지 파일 크기, 저장소, 요약 정보, URL, 라이선스, 설명 출력 [root@localhost ~]# yum info autotrace Loaded plugins: langpacks, refresh-packagekit Installed Packages Name : autotrace Arch : x86_64 Version : 0.31.1 Release : 36.fc19 Size : 339 k Repo : installed From repo : updates Summary : Utility for converting bitmaps to vector graphics URL : http://autotrace.sourceforge.net/ License : GPLv2+ and LGPLv2+ Description : AutoTrace is a program for converting bitmaps to vector graphics. (생략) Available Packages Name : autotrace Arch : i686 Version : 0.31.1 Release : 36.fc19 (생략) [root@localhost ~]#

  30. 02 yum을 이용한 패키지 설치 • 패키지 삭제하기: yum remove 패키지명 • 패키지를 삭제할 때도 의존성을 확인한 후, 패키지 삭제를 진행할 것인지를 물어봄 [root@localhost ~]# yum remove autotrace Loaded plugins: langpacks, refresh-packagekit Resolving Dependencies --> Running transaction check ---> Package autotrace.x86_64 0:0.31.1-36.fc19 will be erased --> Finished Dependency Resolution Dependencies Resolved =================================================================================== Package Arch Version Repository Size =================================================================================== Removing: autotrace x86_64 0.31.1-36.fc19 @updates 339 k Transaction Summary =================================================================================== Remove 1 Package Installed size: 339 k Is this ok [y/N]:

  31. 03 파일 아카이브와 압축 • 파일 아카이브 • 파일을 묶어서 하나로 만든 것 • tar(tape archive) 명령은 원래 여러 파일이나 디렉터리를 묶어서 마그네틱테이프와 같은 이동식 저장 장치에 보관하기 위해 사용하는 명령 • 현재는 다른 시스템과 파일을 주고받거나, 백업을 하기 위해 여러 파일이나 디렉터리를 하나의 아카이브 파일로 생성하거나, 기존 아카이브에서 파일을 추출하기 위해 사용

  32. 03 파일 아카이브와 압축 • 아카이브 생성하기 : cvf • tar 명령으로 파일을 묶어서 아카이브 파일을 만들어도 원본 파일은 그대로 있음 [user1@localhost linux_ex]$ tar cvf ch2.tar ch2 ch2/ ch2/data1.sl ch2/data1.ln ch2/data ch2/temp/ ch2/temp/data1.cp ch2/temp/services ch2/temp/hosts ch2/temp/text1 ch2/test ch2/one/ ch2/one/tmp/ ch2/one/tmp/test/ [user1@localhost linux_ex]$ ls ch2/ ch2.tar ch3/ ch4/ ch5/ ch6/ [user1@localhost linux_ex]$

  33. 03 파일 아카이브와 압축 • 아카이브 내용 확인하기 : tvf [user1@localhost linux_ex]$ tar tvf ch2.tar drwxrwxr-x user1/user1 0 2013-03-20 12:55 ch2/ lrwxrwxrwx user1/user1 0 2013-03-19 03:52 ch2/data1.sl -> data1 -rw-r--r-- user1/user1 158 2013-03-18 20:38 ch2/data1.ln -rw-r--r-- user1/user1 659878 2013-03-19 05:45 ch2/data drwxrwxr-x user1/user1 0 2013-03-19 08:17 ch2/temp/ -rw-r--r-- user1/user1 158 2013-03-19 05:09 ch2/temp/data1.cp -rw-r--r-- user1/user1 659878 2013-03-18 18:56 ch2/temp/services -rw-r--r-- user1/user1 158 2013-03-18 18:56 ch2/temp/hosts -rw-r--r-- user1/user1 158 2013-03-18 18:45 ch2/temp/text1 -rw-rw-r-- user1/user1 0 2013-01-01 12:00 ch2/test drwxrwxr-x user1/user1 0 2013-03-18 11:04 ch2/one/ drwxrwxr-x user1/user1 0 2013-03-19 08:12 ch2/one/tmp/ drwxrwxr-x user1/user1 0 2013-03-18 11:04 ch2/one/tmp/test/ [user1@localhost linux_ex]$

  34. 03 파일 아카이브와 압축 • 아카이브 풀기 : xvf [user1@localhost linux_ex]$ mkdir ch9 [user1@localhost linux_ex]$ mv ch2.tar ch9 [user1@localhost linux_ex]$ cd ch9 [user1@localhost ch9]$ tar xvf ch2.tar ch2/ ch2/data1.sl ch2/data1.ln (생략) [user1@localhost ch9]$ ls ch2/ ch2.tar [user1@localhost ch9]$

  35. 03 파일 아카이브와 압축 • 아카이브 업데이트하기 : uvf • u 기능은 지정한 파일이 아카이브에 없는 파일이거나, 아카이브에있는 파일이지만 수정된 파일일 경우 아카이브의 마지막에 추가 -> ch2/data 파일의 수정시간을 touch 명령으로 수정후아카이브 업데이트 [user1@localhost ch9]$ tar uvf ch2.tar data [user1@localhost ch9]$ touch ch2/data [user1@localhost ch9]$ tar uvf ch2.tar ch2/data ch2/data [user1@localhost ch9]$ tar tvf ch2.tar drwxrwxr-x user1/user1 0 2013-03-20 12:55 ch2/ lrwxrwxrwx user1/user1 0 2013-03-19 03:52 ch2/data1.sl -> data1 -rw-r--r-- user1/user1 158 2013-03-18 20:38 ch2/data1.ln -rw-r--r-- user1/user1 659878 2013-03-19 05:45 ch2/data drwxrwxr-x user1/user1 0 2013-03-19 08:17 ch2/temp/ -rw-r--r-- user1/user1 158 2013-03-19 05:09 ch2/temp/data1.cp -rw-r--r-- user1/user1 659878 2013-03-18 18:56 ch2/temp/services -rw-r--r-- user1/user1 158 2013-03-18 18:56 ch2/temp/hosts -rw-r--r-- user1/user1 158 2013-03-18 18:45 ch2/temp/text1 -rw-rw-r-- user1/user1 0 2013-01-01 12:00 ch2/test drwxrwxr-x user1/user1 0 2013-03-18 11:04 ch2/one/ drwxrwxr-x user1/user1 0 2013-03-19 08:12 ch2/one/tmp/ drwxrwxr-x user1/user1 0 2013-03-18 11:04 ch2/one/tmp/test/ -rw-r--r-- user1/user1 659878 2013-06-10 11:29 ch2/data [user1@localhost ch9]$

  36. 03 파일 아카이브와 압축 • 파일 압축과 아카이브 • 아카이브를 생성하면서 동시에 압축 수행 • 예: gzip으로 압축 [user1@localhost ch9]$ cp /etc/hosts . [user1@localhost ch9]$ tar rvf ch2.tar hosts hosts [user1@localhost ch9]$ tar tvf ch2.tar drwxrwxr-x user1/user1 0 2013-03-20 12:55 ch2/ lrwxrwxrwx user1/user1 0 2013-03-19 03:52 ch2/data1.sl -> data1 (생략) -rw-r--r-- user1/user1 659878 2013-06-10 11:29 ch2/data -rw-r--r-- user1/user1 158 2013-06-10 11:35 hosts [user1@localhost ch9]$

  37. 03 파일 아카이브와 압축 • 파일 압축과 아카이브 • 아카이브를 생성하면서 동시에 압축 실행 • 예: 아키이브 생성과 동시에 gzip으로 압축 실행: gzip로 압축할 경우 z 옵션을 사용 • 예: bzip2로 압축 실행: bzip2로 압축할 경우 j 옵션을 사용 [user1@localhost ch9]$ tar cvzf ch2.tar.gz ch2 ch2/ ch2/data1.sl ch2/data1.ln (생략) [user1@localhost ch9]$ [user1@localhost ch9]$ tar cvjf ch2.tar.bz2 ch2 ch2/ ch2/data1.sl ch2/data1.ln (생략) [user1@localhost ch9]$

  38. 03 파일 아카이브와 압축 • 파일 압축과 아카이브 • tar 파일로 생성한 것과 압축한 결과의 파일 크기를 비교 • 압축한 아카이브 파일의 내용은 tvf로 확인이 가능하며 xvf로 추출 가능 [user1@localhost ch9]$ ls -l 합계 2396 drwxrwxr-x. 4 user1 user1 4096 3월 20 12:55 ch2/ -rw-rw-r--. 1 user1 user1 1996800 6월 10 11:35 ch2.tar -rw-rw-r--. 1 user1 user1 173846 6월 10 12:57 ch2.tar.bz2 -rw-rw-r--. 1 user1 user1 266708 6월 10 12:57 ch2.tar.gz -rw-r--r--. 1 user1 user1 158 6월 10 11:35 hosts [user1@localhost ch9]$ [user1@localhost ch9]$ tar tvf ch2.tar.gz drwxrwxr-x user1/user1 0 2013-03-20 12:55 ch2/ lrwxrwxrwx user1/user1 0 2013-03-19 03:52 ch2/data1.sl -> data1 -rw-r--r-- user1/user1 158 2013-03-18 20:38 ch2/data1.ln -rw-r--r-- user1/user1 659878 2013-06-10 11:29 ch2/data (생략)

  39. 03 파일 아카이브와 압축 • 파일 압축하기: gzip/gunzip- .gz파일 [user1@localhost ch9]$ rm ch2.tar.gz rm: remove 일반 파일 'ch2.tar.gz'? y [user1@localhost ch9]$ gzip ch2.tar [user1@localhost ch9]$ ls ch2/ ch2.tar.bz2 ch2.tar.gz hosts [user1@localhost ch9]$ [user1@localhost ch9]$ gzip -l ch2.tar.gz compressed uncompressed ratio uncompressed_name 399788 1996800 80.0% ch2.tar [user1@localhost ch9]$

  40. 03 파일 아카이브와 압축 • 압축 파일의 내용 보기 : zcat [user1@localhost ch9]$ zcat ch2.tar.gz | more ch2/ 0000000 t4.localdomain4 ::1 localhostlocalhost.localdomain localhost6 localhost6.localdomain6 # $Id: services,v 1.53 2011/06/13 15:00:06 ovasikExp $ # # Network services, Internet style # IANA services version: last updated 2011-06-10 (생략)

  41. 03 파일 아카이브와 압축 • 압축 풀기 : gunzip [user1@localhost ch9]$ gunzip ch2.tar.gz [user1@localhost ch9]$ ls ch2/ ch2.tar ch2.tar.bz2 hosts [user1@localhost ch9]$

  42. 03 파일 아카이브와 압축 • bzip2/bunzip2 : .bz2 파일 [user1@localhost ch9]$ rm ch2.tar.bz2 rm: remove 일반 파일 'ch2.tar.bz2'? y [user1@localhost ch9]$ bzip2 ch2.tar [user1@localhost ch9]$ ls ch2/ ch2.tar.bz2 hosts [user1@localhost ch9]$

  43. 03 파일 아카이브와 압축 • 압축 파일의 내용 보기 : bzcat • 압축 풀기 : bunzip2 [user1@localhost ch9]$ bunzip2 ch2.tar.bz2 [user1@localhost ch9]$ ls ch2/ ch2.tar hosts [user1@localhost ch9]$

  44. 04 소프트웨어 컴파일 • 컴파일러 설치하기 • C 언어로 작성한 프로그램을 컴파일하기 위해서는 C 컴파일러가 필요 • 리눅스에서 사용하는 C 컴파일러는 GNU C 컴파일러로 패키지 이름이 gcc • gcc설치 여부 확인 -> 설치되어 있지 않음 • gcc설치 [user1@localhost ~]$ rpm -qa | grep gcc libgcc-4.8.1-1.fc19.x86_64 [user1@localhost ~]$ [root@localhost ~]# yum install gcc Loaded plugins: langpacks, refresh-packagekit Resolving Dependencies --> Running transaction check ---> Package gcc.x86_64 0:4.8.1-1.fc19 will be installed --> Processing Dependency: cpp = 4.8.1-1.fc19 for package: gcc-4.8.1-1.fc19.x86_64 --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.1-1.fc19.x86_64 (생략) Installed: gcc.x86_64 0:4.8.1-1.fc19 Dependency Installed: cpp.x86_64 0:4.8.1-1.fc19 glibc-devel.x86_64 0:2.17-18.fc19 glibc-headers.x86_64 0:2.17-18.fc19 kernel-headers.x86_64 0:3.11.2-201.fc19 libmpc.x86_64 0:1.0.1-1.fc19 Complete! [root@localhost ~]#

  45. 04 소프트웨어 컴파일 • 간단한 C 프로그램 작성하기 • C 프로그램 컴파일하기: 실행파일명은 a.out • C 프로그램 실행하기: 경로지정 확인 [user1@localhost ch9]$ vi hello.c #include <stdio.h> main() { printf("Hello, World.\n"); } :wq [user1@localhost ch9]$ gcc hello.c [user1@localhost ch9]$ ls a.out* ch2/ ch2.tar hello.c hosts [user1@localhost ch9]$ [user1@localhost ch9]$ ./a.out Hello, World. [user1@localhost ch9]$

  46. 04 소프트웨어 컴파일 • 실행 파일명 변경하기 • gcc로 생성한 기본 실행 파일은 a.out • 사용자가 원하는 이름으로 지정하려면 –o 옵션 사용 [user1@localhost ch9]$ gcc -o hello hello.c [user1@localhost ch9]$ ./hello Hello, World. [user1@localhost ch9]$

  47. 04 소프트웨어 컴파일 • make 명령 사용하기 • make 명령은 makefile(또는 Makefile)에 설정된 정보를 읽어서 여러 소스 파일을 컴파일하고 링크하여 최종 실행 파일을 생성 • 소스파일 준비 • 컴파일 하면 오류 발생: two()가 무엇인지 모르겠다는 메시지 [user1@localhost ch9]$ vi one.c #include <stdio.h> extern int two(); main() { printf("Go to Module Two--\n"); two(); printf("End of Module One.\n"); } :wq [user1@localhost ch9]$ gccone.c /tmp/ccBLblUS.o: In function 'main': one.c:(.text+0x14): undefined reference to 'two' collect2: error: ld returned 1 exit status [user1@localhost ch9]$

  48. 04 소프트웨어 컴파일 • make 명령 사용하기 • 두 번째 파일 생성: two() 함수 정의 • makefile작성하기 [user1@localhost ch9]$ vi two.c #include <stdio.h> two() { printf("In Module Two--\n"); printf("--- This is a Moudule Two.\n"); printf("End of Module Two.\n"); } :wq [user1@localhost ch9]$ vi maekfile TARGET=one OBJECTS=one.otwo.o ${TARGET} : ${OBJECTS} gcc -o ${TARGET} ${OBJECTS} one.o : one.c gcc -c one.c two.o : two.c gcc -c two.c :wq

  49. 04 소프트웨어 컴파일 • make 파일 실행 [user1@localhost ch9]$ make gcc -c one.c gcc -c two.c gcc -o one one.otwo.o [user1@localhost ch9]$ ./one Go to Module Two-- In Module Two-- --- This is a Moudule Two. End of Module Two. End of Module One. [user1@localhost ch9]$

More Related