49
운운운운 – Linux 운운 LAB#9 : 운운운운운 운운운운 운운운운 : 운운운운운운 운운운 & 운운운운 ( 운운 )

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

  • Upload
    becca

  • View
    108

  • Download
    2

Embed Size (px)

DESCRIPTION

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

Citation preview

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

운영체제 – Linux 실습

LAB#9 : 소프트웨어 관리하기

참고교재 : 페도라리눅스 시스템 & 네트워크 ( 한빛 )

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

목차

00. 개요

01. RPM 패키지 설치

02. yum 을 이용한 패키지 설치

03. 파일 아카이브와 압축

04. 소프트웨어 컴파일

2

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

RPM 의 장점과 단점을 설명할 수 있다 . rpm 명령으로 패키지를 설치하고 업그레이드할 수 있다 . rpm 명령으로 패키지를 검색하고 상세 정보를 확인할 수 있다 . yum 명령으로 설치한 패키지와 설치 가능한 패키지 , 업데이트할 수

있는 패키지의 목록을 확인할 수 있다 . yum 명령으로 패키지를 설치하고 업데이트하고 삭제할 수 있다 . tar 명령으로 아카이브를 생성하고 , 내용을 확인하고 풀 수 있다 . 파일을 압축하고 압축을 풀 수 있다 . gcc 로 C 파일을 컴파일할 수 있다 . makefile 을 작성하여 make 명령으로 실행 파일을 만들 수 있다 .

3

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

리눅스 실습 스터디 맵

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

00 개요

[ 그림 9-1] 9 장의 내용 구성

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

01 RPM 패키지 설치

리눅스에서 주로 사용하는 패키지 RPM(Redhat Package Manager): 레드햇에서 만든 패키지 관리 도구

.deb: 데비안 , 우분투 계열에서 사용하는 패키지

RPM 의 특징 바이너리 파일로 구성되어 있어 컴파일이 필요 없다 . 패키지의 파일들이 관련 디렉터리로 바로 설치된다 . 한 번에 설치된 패키지의 파일을 일괄적으로 삭제할 수 있다 . 기존에 설치된 패키지를 삭제하지 않고 바로 업그레이드할 수 있다 . 패키지의 설치 상태를 검증할 수 있다 . 패키지에 대한 정보를 제공한다 . 단점 : 패키지 의존성에 따라 관련 패키지가 먼저 설치되어 있지 않으면 설치할 수 없다 .

RPM 패키지의 이름 구성 패키지 이름 : 첫 번째 항목에는 패키지의 이름 패키지 버전 : 두 번째 항목은 패키지의 버전 패키지 릴리즈 : 릴리즈는 해당 버전에서 몇 번째 만들어진 것인지를

나타냄 . ‘1.fc19’ 에서 1 은 첫 번째 만들어진 패키지임을 , fc19 는 페도라 19 용으로 만들어진 것임을 의미 아키텍처 : 사용하는 시스템 아키텍처로 x86 은 인텔 x86 CPU 를 , 64 는 64 비트 운영체제임을 의미

확장자 : RPM 패키지의 확장자는 .rpm 을 사용하여 다른 패키지와 구분

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

01 RPM 패키지 설치

rpm 명령

현재 사용 중인 rpm 의 버전 확인

[root@localhost ~]# rpm --versionRPM 버전 - 4.11.1[root@localhost ~]#

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

01 RPM 패키지 설치

RPM 패키지 설치하기

CD/DVD 장치 연결하기 페도라 iso 파일 마운트 Player→Removable Devices→CD/DVD→Settings ISO image file 이 선택되어 있어야 함

[ 그림 9-3] CD/DVD 장치확인

Page 9: [ 2014-1]  운영체제  – Linux  실습 LAB#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@localhost cdrom]# lsEFI LiveOS Packages TRANS.TBL images isolinux repodata[root@localhost cdrom]#

[root@localhost cdrom]# cd Packages[root@localhost Packages]# lsTRANS.TBL b d f h j l n p r t v x za 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]#

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

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]# ls libXaw*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]#

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

01 RPM 패키지 설치

xterm 설치 확인 및 실행 xterm 명령 확인

xterm 실행 : X 윈도 환경에서 터미널을 에뮬레이션해주는 프로그램

[root@localhost x]# whereis xtermxterm: /bin/xterm /usr/bin/xterm /usr/share/man/man1/xterm.1.gz[root@localhost x]#

[ 그림 9-4] xterm 동작 화면

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

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]#

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

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]#

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

01 RPM 패키지 설치

패키지 정보 검색하기 : -q

전체 패키지 목록 출력하기 : -qa[root@localhost l]# rpm -qakexec-tools-2.0.4-10.fc19.x86_64libnice-0.1.3-2.fc19.x86_64pam-1.1.6-12.fc19.x86_64mtdev-1.1.3-3.fc19.x86_64gnome-user-docs-3.8.2-1.fc19.noarch( 생략 )

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

01 RPM 패키지 설치

특정 패키지 설치 여부 확인하기 : -qa | grep

특정 파일을 포함한 패키지 확인하기 : -qf

왜 오류 발생 ? -> -f 옵션으로 파일을 지정할 때는 절대 경로 사용

[root@localhost l]# rpm -qa | grep bashbash-completion-2.1-2.fc19.noarchbash-4.2.45-1.fc19.x86_64[root@localhost l]#

[root@localhost l]# rpm -qf ls오류 :/mnt/cdrom/Packages/l/ls 파일 : 그런 파일이나 디렉터리가 없습니다’[root@localhost l]#

[root@localhost l]# rpm -qf /usr/bin/lscoreutils-8.21-11.fc19.x86_64[root@localhost l]#

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

01 RPM 패키지 설치

패키지 상세 정보 확인하기 : -qi 패키지 이름 구성에서 첫 번째 항목에 해당하는 부분을 지정

[root@localhost l]# rpm -qi bashName : bashVersion : 4.2.45Release : 1.fc19Architecture : x86_64Install Date :Group : System Environment/ShellsSize : 3648696License : GPLv3+Signature : RSA/SHA256, 2013 년 03 월 14 일 ( 목 ) 오후 02 시 36 분 55 초 , Key ID 07477e65fb4b18e6Source RPM : bash-4.2.45-1.fc19.src.rpmBuild Date :Build Host : buildvm-19.phx2.fedoraproject.orgRelocations : (not relocatable)Packager : Fedora ProjectVendor : Fedora ProjectURL : http://www.gnu.org/software/bashSummary : The GNU Bourne Again shellDescription :The GNU Bourne Again shell (Bash) is a shell or command languageinterpreter that is compatible with the Bourne shell (sh). Bashincorporates 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]#

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

01 RPM 패키지 설치

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

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

01 RPM 패키지 설치

패키지 상세 정보 확인하기 : -qip -p 옵션을 사용할 때는 해당 패키지가 위치한 디렉터리를 지정 : 패키지 이름만 지정할 경우 오류 발생

-p 옵션을 사용할 때는 다음과 같이 패키지 파일이 위치한 디렉터리로 이동하거나 경로를 지정[root@localhost l]# cd ../c[root@localhost c]# rpm -qip coreutils-8.21-11.fc19.x86_64.rpmName : coreutilsVersion : 8.21Release : 11.fc19Architecture : x86_64Install Date : (not installed)Group : System Environment/BaseSize : 14559867License : GPLv3+( 생략 )

[root@localhost l]# rpm -qip bash오류 : bash( 을 ) 를 여는데 실패함 : 그런 파일이나 디렉터리가 없습니다[root@localhost l]#

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

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/shlibICE.so.6()(64bit)libX11.so.6()(64bit)libXaw.so.7()(64bit)libXft.so.2()(64bit)libXmu.so.6()(64bit)libXpm.so.4()(64bit)( 생략 )

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

01 RPM 패키지 설치

패키지 삭제하기

앞에서 설치한 xterm 패키지를 삭제

[root@localhost c]# rpm -e xterm[root@localhost c]# rpm -qa | grep xterm[root@localhost c]#

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

02 yum 을 이용한 패키지 설치

yum 이란 ? ‘Yellowdog Updater Modified’ 의 약자 Yellowdog 이라는 리눅스 배포판에서 제작했던 패키지 관리 도구 (yup) 와 비슷하다는 데서 이름이 유래 yum 은 rpm 기반의 패키지 관리 도구

yum 의 특징 패키지를 분석하여 패키지의 의존성을 해결하고 원격 자동 업데이트와 설치를 할 수 있다 . 설치 가능한 패키지에 대한 정보가 담긴 저장소 (repository) 를 가지고 있다 . 저장소의 정보에 의거하여 패키지를 관리한다 .

yum 의 기본 형식

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

02 yum 을 이용한 패키지 설치

패키지 목록 확인하기 yum list 명령의 출력 형식

패키지명 . 아키텍쳐 버전 - 릴리즈 저장소 또는 @ 설치한 저장소

[root@localhost ~]# yum list | moreLoaded plugins: langpacks, refresh-packagekitInstalled PackagesGConf2.x86_64 3.2.6-6.fc19 @anacondaLibRaw.x86_64 0.14.8-3.fc19.20120830git98d925 @updatesModemManager.x86_64 0.6.2.0-1.fc19 @anacondaNetworkManager.x86_64 1:0.9.8.2-9.git20130709.fc19 @updatesNetworkManager-glib.x86_64 1:0.9.8.2-9.git20130709.fc19 @updatesNetworkManager-l2tp.x86_64 0.9.8-4.fc19 @updatesNetworkManager-openconnect.x86_64 0.9.7.0-2.git20120918.fc19 @ana-condaNetworkManager-openvpn.x86_64 1:0.9.8.2-3.fc19 @up-dates( 생략 )

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

02 yum 을 이용한 패키지 설치

yum list 명령에서 사용할 수 있는 옵션

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

02 yum 을 이용한 패키지 설치

yum list available: 설치 가능한 패키지의 목록 검색

yum list updates: 업데이트가 가능한 패키지의 목록

yum list installed : 현재 시스템에 설치되어 있는 패키지 목록을 출력

[root@localhost ~]# yum list available | moreLoaded plugins: langpacks, refresh-packagekitAvailable Packages0ad.x86_64 0.0.14-1.fc19 updates0ad-data.noarch 0.0.14-1.fc19 updates0xFFFF.x86_64 0.3.9-9.fc19 fedora2ping.noarch 2.0-1.fc19 updates389-admin.i686 1.1.35-1.fc19 updates389-admin.x86_64 1.1.35-1.fc19 updates389-admin-console.noarch 1.1.8-5.fc19 fedora389-admin-console-doc.noarch 1.1.8-5.fc19 fe-dora( 생략 )[root@localhost ~]# yum list updatesLoaded plugins: langpacks, refresh-packagekitUpdated Packagesyum-langpacks.noarch 0.4.1-3.fc19 updates[root@localhost ~]#

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

02 yum 을 이용한 패키지 설치

yum check-update: 업데이트 가능한 패키지 목록 확인하기

[root@localhost ~]# yum check-updateLoaded plugins: langpacks, refresh-packagekityum-langpacks.noarch 0.4.1-3.fc19 updates[root@localhost ~]#

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

02 yum 을 이용한 패키지 설치

패키지 설치하기 : yum install 패키지명 먼저 의존성이 있는 패키지의 존재 여부를 확인 함께 설치해야 할 패키지 목록 출력

내려받을 파일의 크기와 실제로 설치되었을 때 필요한 디스크 용량 설치를 진행할 것인지 확인

① 예 : autotrace 패키지 설치 -> 의존성 확인 및 함께 설치할 패키지 목록 출력[root@localhost ~]# yum install autotraceLoaded plugins: langpacks, refresh-packagekitResolving 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 kInstalling 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

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

02 yum 을 이용한 패키지 설치

패키지 설치하기② 예 : autotrace 패키지 설치 -> 용량 확인 및 설치 여부 문의

③ 설치 : y 로 응답한 경우

Transaction Summary===================================================================================Install 1 Package (+4 Dependent packages)Total download size: 2.6 MInstalled size: 9.4 MIs 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.fc19Dependency 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.fc19Complete![root@localhost ~]#

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

02 yum 을 이용한 패키지 설치

패키지 업데이트하기 : yum update 패키지명

y 로 응답하면 업데이트 진행

[root@localhost ~]# yum update yum-langpacksLoaded plugins: langpacks, refresh-packagekitResolving 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-langpacks noarch 0.4.1-3.fc19 updates 27 kTransaction Summary===================================================================================Upgrade 1 PackageTotal download size: 27 kIs this ok [y/d/N]:

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

02 yum 을 이용한 패키지 설치

패키지 정보 검색하기 : yum info 패키지명 패키지 이름 , 패키지 아키텍처 , 버전 , 릴리즈 , 패키지 파일 크기 , 저장소 , 요약 정보 , URL, 라이선스 ,

설명 출력[root@localhost ~]# yum info autotraceLoaded plugins: langpacks, refresh-packagekitInstalled PackagesName : autotraceArch : x86_64Version : 0.31.1Release : 36.fc19Size : 339 kRepo : installedFrom repo : updatesSummary : Utility for converting bitmaps to vector graphicsURL : http://autotrace.sourceforge.net/License : GPLv2+ and LGPLv2+Description : AutoTrace is a program for converting bitmaps to vector graphics.( 생략 )

Available PackagesName : autotraceArch : i686Version : 0.31.1Release : 36.fc19( 생략 )[root@localhost ~]#

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

02 yum 을 이용한 패키지 설치

패키지 삭제하기 : yum remove 패키지명

패키지를 삭제할 때도 의존성을 확인한 후 , 패키지 삭제를 진행할 것인지를 물어봄

[root@localhost ~]# yum remove autotraceLoaded plugins: langpacks, refresh-packagekitResolving Dependencies--> Running transaction check---> Package autotrace.x86_64 0:0.31.1-36.fc19 will be erased--> Finished Dependency ResolutionDependencies Resolved=================================================================================== Package Arch Version Reposi-tory Size===================================================================================Removing: autotrace x86_64 0.31.1-36.fc19 @updates 339 kTransaction Summary===================================================================================Remove 1 PackageInstalled size: 339 kIs this ok [y/N]:

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

03 파일 아카이브와 압축

파일 아카이브 파일을 묶어서 하나로 만든 것 tar(tape archive) 명령은 원래 여러 파일이나 디렉터리를 묶어서 마그네틱테이프와 같은 이동식 저장 장치에

보관하기 위해 사용하는 명령 현재는 다른 시스템과 파일을 주고받거나 , 백업을 하기 위해 여러 파일이나 디렉터리를 하나의 아카이브 파일로

생성하거나 , 기존 아카이브에서 파일을 추출하기 위해 사용

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

03 파일 아카이브와 압축

아카이브 생성하기 : cvf

tar 명령으로 파일을 묶어서 아카이브 파일을 만들어도 원본 파일은 그대로 있음

[user1@localhost linux_ex]$ tar cvf ch2.tar ch2ch2/ch2/data1.slch2/data1.lnch2/datach2/temp/ch2/temp/data1.cpch2/temp/servicesch2/temp/hostsch2/temp/text1ch2/testch2/one/ch2/one/tmp/ch2/one/tmp/test/[user1@localhost linux_ex]$ lsch2/ ch2.tar ch3/ ch4/ ch5/ ch6/[user1@localhost linux_ex]$

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

03 파일 아카이브와 압축

아카이브 내용 확인하기 : tvf[user1@localhost linux_ex]$ tar tvf ch2.tardrwxrwxr-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/datadrwxrwxr-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/ser-vices-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/testdrwxrwxr-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]$

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

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.tarch2/ch2/data1.slch2/data1.ln( 생략 )[user1@localhost ch9]$ lsch2/ ch2.tar[user1@localhost ch9]$

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

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/datach2/data[user1@localhost ch9]$ tar tvf ch2.tardrwxrwxr-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/datadrwxrwxr-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/ser-vices-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/testdrwxrwxr-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]$

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

03 파일 아카이브와 압축

파일 압축과 아카이브 아카이브를 생성하면서 동시에 압축 수행 예 : gzip 으로 압축

[user1@localhost ch9]$ cp /etc/hosts .[user1@localhost ch9]$ tar rvf ch2.tar hostshosts[user1@localhost ch9]$ tar tvf ch2.tardrwxrwxr-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]$

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

03 파일 아카이브와 압축

파일 압축과 아카이브 아카이브를 생성하면서 동시에 압축 실행 예 : 아키이브 생성과 동시에 gzip 으로 압축 실행 : gzip 로 압축할 경우 z 옵션을 사용

예 : bzip2 로 압축 실행 : bzip2 로 압축할 경우 j 옵션을 사용

[user1@localhost ch9]$ tar cvzf ch2.tar.gz ch2ch2/ch2/data1.slch2/data1.ln( 생략 )[user1@localhost ch9]$

[user1@localhost ch9]$ tar cvjf ch2.tar.bz2 ch2ch2/ch2/data1.slch2/data1.ln( 생략 )[user1@localhost ch9]$

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

03 파일 아카이브와 압축

파일 압축과 아카이브 tar 파일로 생성한 것과 압축한 결과의 파일 크기를 비교

압축한 아카이브 파일의 내용은 tvf 로 확인이 가능하며 xvf 로 추출 가능

[user1@localhost ch9]$ ls -l합계 2396drwxrwxr-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.gzdrwxrwxr-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( 생략 )

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

03 파일 아카이브와 압축

파일 압축하기 : gzip/gunzip - .gz 파일

[user1@localhost ch9]$ rm ch2.tar.gzrm: remove 일반 파일 'ch2.tar.gz'? y[user1@localhost ch9]$ gzip ch2.tar[user1@localhost ch9]$ lsch2/ 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]$

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

03 파일 아카이브와 압축

압축 파일의 내용 보기 : zcat

[user1@localhost ch9]$ zcat ch2.tar.gz | morech2/0000000t4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6# $Id: services,v 1.53 2011/06/13 15:00:06 ovasik Exp $## Network services, Internet style# IANA services version: last updated 2011-06-10( 생략 )

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

03 파일 아카이브와 압축

압축 풀기 : gunzip

[user1@localhost ch9]$ gunzip ch2.tar.gz[user1@localhost ch9]$ lsch2/ ch2.tar ch2.tar.bz2 hosts[user1@localhost ch9]$

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

03 파일 아카이브와 압축

bzip2/bunzip2 : .bz2 파일

[user1@localhost ch9]$ rm ch2.tar.bz2rm: remove 일반 파일 'ch2.tar.bz2'? y[user1@localhost ch9]$ bzip2 ch2.tar[user1@localhost ch9]$ lsch2/ ch2.tar.bz2 hosts[user1@localhost ch9]$

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

03 파일 아카이브와 압축

압축 파일의 내용 보기 : bzcat

압축 풀기 : bunzip2

[user1@localhost ch9]$ bunzip2 ch2.tar.bz2[user1@localhost ch9]$ lsch2/ ch2.tar hosts[user1@localhost ch9]$

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

04 소프트웨어 컴파일

컴파일러 설치하기 C 언어로 작성한 프로그램을 컴파일하기 위해서는 C 컴파일러가 필요 리눅스에서 사용하는 C 컴파일러는 GNU C 컴파일러로 패키지 이름이 gcc gcc 설치 여부 확인 -> 설치되어 있지 않음

gcc 설치

[user1@localhost ~]$ rpm -qa | grep gcclibgcc-4.8.1-1.fc19.x86_64[user1@localhost ~]$

[root@localhost ~]# yum install gccLoaded plugins: langpacks, refresh-packagekitResolving 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.fc19Dependency 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.fc19Complete![root@localhost ~]#

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

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]$ lsa.out* ch2/ ch2.tar hello.c hosts[user1@localhost ch9]$

[user1@localhost ch9]$ ./a.outHello, World.[user1@localhost ch9]$

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

04 소프트웨어 컴파일

실행 파일명 변경하기 gcc 로 생성한 기본 실행 파일은 a.out 사용자가 원하는 이름으로 지정하려면 – o 옵션 사용

[user1@localhost ch9]$ gcc -o hello hello.c[user1@localhost ch9]$ ./helloHello, World.[user1@localhost ch9]$

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

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]$ gcc one.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]$

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

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 maekfileTARGET=oneOBJECTS=one.o two.o${TARGET} : ${OBJECTS} gcc -o ${TARGET} ${OBJECTS}one.o : one.c gcc -c one.ctwo.o : two.c gcc -c two.c:wq

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

04 소프트웨어 컴파일

make 파일 실행

[user1@localhost ch9]$ makegcc -c one.cgcc -c two.cgcc -o one one.o two.o[user1@localhost ch9]$ ./oneGo to Module Two--In Module Two----- This is a Moudule Two.End of Module Two.End of Module One.[user1@localhost ch9]$