┗System∑Sec†ion┛

Home

MediaLog

Guestbook

Admin

Write

'컴퓨터 서적 정리/Ubuntu Linux Toolbox'에 해당되는 글 41건

2011.08.08 [Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs)

2011.08.08 [Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted)

2011.08.07 [Chap7 #01] - 파일시스템 기초 이해

2011.08.07 [Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum)

2011.08.07 [Chap4 #05] - 확장 파일시스템의 파일 속성 변경(lsattr, chattr)

2011.08.07 [Chap4 #04] - 파일 복사하기(cp, dd)

2011.08.07 [Chap4 #03] - 파일시스템 살펴보기 (cd, pwd, pushd, popd)

2011.08.07 [Chap3 #02] - 리눅스 쉘 사용(3) (Redirection, pipe, xargs)

2011.08.06 [Chap3 #02] - 리눅스 쉘 사용(2) (watch, tail)

2011.08.06 [Chap3 #02] - 리눅스 쉘 사용(1) (쉘 사용자 환경, history, alias)

2011.08.06 [Chap3 #01] - 리눅스 가상 콘솔(터미널) 사용

2011.08.06 [Chap2 #07] - deb 패키지 만들기

2011.08.06 [Chap2 #06] - debsums를 사용하여 설치된 패키지 검증

2011.08.05 [Chap2 #05] - aptitude를 사용하여 Software 관리

2011.08.05 [Chap2 #04] - dpkg를 사용하여 Software 관리

2011.08.04 [Chap2 #03] - APT 사용하여 Software 관리

2011.08.04 [Chap2 #02] - Debian Software Package 사용

2011.08.04 [Chap1 #04] - 리눅스 참고 정보(help, man, info)

2011.08.04 [Chap1 #03] - 리눅스 명령어 찾기

2011.08.03 [Chap1 #01] - 우분투, 데비안, 그리고 리눅스

2011.08.08 21:09

[Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs)

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 디스크 파티션과 관련하여 라벨(label)이라는 용어는 두 가지 다른 의미를 가짐.

⌒ 디스크 라벨은 parted 출력에서 볼 수 있뜻이 파티션 테이블의 또 다른 이름.

⌒ 파티션 라벨은 각각의 개별 파티션이 가진 이름을 의미.

■ e2label - 리눅스 파일시스템(ext2,ext3,ext4) 라벨 변경.

e2label device [ new-label ]

▷ e2label 명령어를 사용하여 파티션의 라벨을 출력.

$ sudo e2label /dev/sda2

/home

▷ e2label 명령어로 파티션 라벨 설정.

$ sudo e2label /dev/sda2 datapartition

▷ /etc/fstab에서도 파티션을 마운트하기 위해 파티션라벨을 사용할 수 있다.

LABEL=/boot

/boot

ext3

defaults

1 2

☞ 그러나 라벨 변경 작업으로 인해 시스템이 부팅하지 못하는 경우를 주의.

■ findfs - UUID나 LABEL을 이용하여 파일시스템(or 파티션) 찾기

findfs LABEL=label

findfs UUID=uuid

▶ findfs 명령어를 사용하여 label 이나 uuid로 파티션 찾기.

$ sudo findfs LABEL=datapartition

/dev/sda2

$ sudo findfs UUID=01b059a5-5924…

/dev/sda2

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap7 #03] - (1) fstab 파일의 파일시스템 마운트  (0) | 2011.08.09
[Chap7 #02] - (3) 파일시스템 포맷(mkfs), 가상 파일 생성  (0) | 2011.08.09
[Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs)  (0) | 2011.08.08
[Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted)  (0) | 2011.08.08
[Chap7 #01] - 파일시스템 기초 이해  (0) | 2011.08.07
[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum)  (0) | 2011.08.07

Posted by devanix

TAGe2label, findfs, label, 파일시스템 라벨

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/238

2011.08.08 07:13

[Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted)

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 전통적으로 PC 하드디스크는 마스터 부트 레코드(MBR)가 포함된 32bit PC-BIOS

파티션 테이블을 사용해왔다. 이러한 조건 때문에 파티션 하나의 크기는 최대 2TB

가 한계이며, 각 드라이브당 네 개의 주(primary) 파티션만을 가질 수 있었다.

확장 파티션은 이러한 주 파티션의 개수의 제한을 극복하기 위한 방법이다.

최근에는 2TB파티션 용량 제한을 해결하기 위해 PC-BIOS 파티션 테이블을

GTP(GUID 파티션테이블)로 대체 하고 있다.

기존 디스크 파티션 작업을 위한 표준 명령어로는 fdisk가 있다. 그러나 fdisk는

현재 새로운 GTP 파티션을 지원하지 못하기 때문에 사용빈도가 줄어들 것이다.

대신 적극적으로 지원받고 있는 새로운 명령어인 parted가 부각되고 있다.

⌒그래픽 파티셔닝 툴 : gparted, qtparted

■ fdisk를 사용하여 디스크 파티션 변경

♧ fdisk 명령어는 디스크 파티션을 나열하고 변경하는데 유용한 툴.

▶ 파티션 정보 출력

$ sudo fdisk -l

Disk /dev/sda: 19.3 GB, 19327352832 bytes

255 heads, 63 sectors/track, 2349 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0003ed61

Device Boot Start End Blocks Id System

/dev/sda1 * 1 2220 17824768 83 Linux

/dev/sda2 2220 2350 1046529 5 Extended

/dev/sda5 2220 2350 1046528 82 Linux swap / Solaris

☞ 리눅스 커널 2.6.20 버전부터 IDE와 SCSI 디스크 모드 /dev/sd? 디바이스명 사용.(여기서 ? 표시는 a,b,c 등)

우분투의 오래된 버전은 SCSI 디스크와 USB디스크만 /dev/sd?를 사용하며,

IDE 하드드라이브는 /dev/hd?를 사용했다.

☞ 특정 디스크에 대한 파티션 목록 출력 : $ sudo fdisk -l /dev/sdb

▶ 간략한 fdisk 명령어 사용 예:

$ sudo fdisk /dev/sdb

Command (m for help):m

도움말 출력

Command (m for help):d

Partition number (1-4): 1

파티션 삭제 요청

삭제할 파티션 번호 입력

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-130, default 1): 1

Last cylinder … +size{K,M,G} (1-130, default 130): 130

새로운 파티션 생성

확장 파티션

주 파티션

주 파티션 선택

주 파티션 번호 1번 선택

시작 위치 선택(또는 그냥 엔터)

끝 위치 선택 (또는 그냥 엔터)

Command (m for help): a

Partition number (1-4): 1

부팅 가능한 파티션 선택

부팅 가능한 파티션 번호 입력

Command (m for help): t

Hex code (type L to list codes): L

Hex code (type L to list codes): 82

파일시스템 유형 선택

선택할 코드 리스트 출력

스왑 파티션으로 지정

Command (m for help): w

변경 내용 파티션 테이블에 쓰고 종료

■ sfdisk를 사용하여 파티션 테이블 복사

♧ 디스크 파티션 테이블을 백업하거나 복사하는 경우 sfdisk 사용

$ sudo sfdisk -d /dev/sda > sda-table

파티션 테이블을 파일로 복사

$ sudo sfdisk /dev/sda < sda-table

파일로부터 파티션 테이블을 복구

$ sudo sfdisk -d /dev/sda | sfdisk /dev/sdb

디스크에서 다른 디스크로 파티션 테이블 복사

■ parted를 사용하여 디스크 파티션 변경

♧ fdisk와 같이 parted 역시 디스크 파티션 정보를 확인하거나 변경하는 툴

▶ 디스크 파티션 목록 출력

$ sudo parted /dev/sda print

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sda: 19.3GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Number Start End Size Type File system Flags

1 1049kB 18.3GB 18.3GB primary ext4 boot

2 18.3GB 19.3GB 1072MB extended

5 18.3GB 19.3GB 1072MB logical linux-swap(v1)

▶ 대화식 모드

$ sudo parted

GNU Parted 2.3

Using /dev/sda

Welcome to GNU Parted! Type 'help' to view a list of commands.

☞ 특정 디스크 파티션 작업 : $ sudo parted /dev/sdb

※ fdisk와는 다르게, parted는 별도의 쓰기 과정 없이 파티션에 변경 작업을 즉시 적용.

따라서 단순히 parted를 종료하는 것으로는 어떠한 변경도 되돌릴 수 없기 때문에 신중하게 작업해야 함.

▶ 간략한 parted 명령어 사용 예:

$ sudo parted /dev/sdb

(parted) help mklabel

특정 도움말 자세히 출력

(parted) mklabel msdos

새로운 디스크 레이블 만듬(리눅스: msdos)

(parted) rm

Partition number? 1

파티션 삭제 요청

삭제할 파티션 번호 입력

(parted) mkpart

Partition type? primary/extended? primary

File system type? [ext2]? ext3

Start? 1

End? -1

새로운 파티션 생성

파티션 타입

파일 시스템 타입

시작 위치

끝 위치 (-1: 끝까지 의미)

(parted) print

파티션 테이블 출력

(parted) quit

종료

☞ 명령어와 함께 입력 (예: rm 1, mkpart primary ext3 0 -1)

☞ parted의 mkpartfs 명령은 ext3 파티션을 제대로 생성하지 못하므로 가급적 사용을 피한다

☞ 일반적으로 parted는 ext3, ext4 파일시스템 지원이 미비 하므로 mkfs.ext? 명령 이용하여 파티션 포맷.

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap7 #02] - (3) 파일시스템 포맷(mkfs), 가상 파일 생성  (0) | 2011.08.09
[Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs)  (0) | 2011.08.08
[Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted)  (0) | 2011.08.08
[Chap7 #01] - 파일시스템 기초 이해  (0) | 2011.08.07
[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum)  (0) | 2011.08.07
[Chap4 #05] - 확장 파일시스템의 파일 속성 변경(lsattr, chattr)  (0) | 2011.08.07

Posted by devanix

TAGfdisk, parted, sfdisk

trackback 1 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/237

2011.08.07 23:48

[Chap7 #01] - 파일시스템 기초 이해

컴퓨터 서적 정리/Ubuntu Linux Toolbox

파일시스템은 파일, 디렉토리, 디바이스, 그리고 리눅스 시스템을 구성하는 다른 요소들에

대한 구조적 체계를 제공한다. 리눅스는 다양한 파일시스템 유형을 지원할 뿐만 아니라,

이 파일시스템으로 구성되어 있는 다양한 미디어(하드디스크, CD, USB 디스크, ZIP 드라이브 등) 역시 지원.

디스크 파티션과 이들 파티션에 파일시스템을 생성하고 관리하는 작업은 리눅스 시스템 관리에 있어

가장 핵심적인 작업 가운데 하나이다. 파일시스템에 문제가 생길 경우, 컴퓨터 하드디스크 또는

usb 디스크 같은 이동식 저장장치에 저장되어 있는 중요한 데이터를 잃을 가능성이 아주 높기 때문이다.

▷ 리눅스에서 요구하는 기본적 파일시스템 환경을 위한 세 개의 파티션 구성

- 부트로더 및 리눅스커널을 저장하는 부트 파티션,

- 루트 파일시스템을 위한 파티션

- 스왑 파티션(RAM에 데이터를 저장할 공간이 부족할 경우 사용)

(3 개의 파티션으로 나누는 것은 항상 이상적인 형태는 아니고, 시스템의 사용목적과 조건에 따라 달라질 수 있음)

▶ 리눅스에서 지원하고 있는 대표적인 파일시스템 유형들

[ 파일시스템 유형 ]

[ 설 명 ]

ext2

ext3 파일시스템이 개발되기 이전 버전의 파일시스템으로,

(저널링 기능은 제공하지 않음)

ext3

리눅스에서 일반적으로 사용되고 있는 파일시스템으로, 안전한 데이터

관리와 비정상적인 종료 후에 신속하게 재부팅하기 위한 저널링 기능 지원

iso9660

High Sierra 파일시스템(CD-ROM의 초기 표준으로 사용)에 기초한

파일시스템으로, 로그 파일 이름과 다른 정보 (파일 퍼미션, 소유권, 링크)를

지원하기 위한 Rock Ridge 확장을 포함하고 있다.

현재 CD-ROM의 표준 파일 시스템.

jffs2

USB 디스크와 같은 플래시 드라이브를 효과적으로 이용할 수 있도록

고안된 저널링 플래시 파일시스템(JFS)의 두번째 버전(JFFS2).

jfs

IBS OS/2 워프 운영체제에 사용되었던 파일시스템으로,

대용량의 파일시스템과 고성능을 요하는 환경에 적합하도록 개량.

msdos

MS-DOS 파일시스템.

플로피디스크와 같이 오래된 MS-DOS 파일시스템을 마운트할 때 사용.

ntfs

윈도우에서 사용하는 파일시스템의 하나로, 윈도우 시스템

(다중 부팅 환경 또는 이동식 드라이브 등)과 파일을 공유해야 할 때 유용.

ReiserFS

SUSE, Slackware와 다른 리눅스 시스템에서 기본으로 사용하고 있는

저널링 파일시스템.

squashfs

압축되고, 읽기전용의 파일시스템으로 많은 리눅스 라이브CD에서 사용.

swap

데이터가 넘쳐 RAM에 여유가 없을 경우, 임시적으로 넘치는 데이터를

저장하는 목적의 SWAP 파티션에 사용되는 파일시스템.

ufs

썬마이크로시스템즈의 솔라리스와 SunOS 운영체제에서

사용하고 있는 파일시스템

vfat

확장 FAT(VFAT) 파일시스템. 윈도우 시스템 (듀얼 부팅 환경 또는

이동식 드라이브 등)과 파일을 공유해야 할 때 유용.

xfs

고성능을 요하는 환경을 위한 저널링 파일시스템으로, 시스템이 대용량

데이터를 관리할 수 있으며, 초당 수 기가 바이트를 전송할 수 있도록 해줌.

☞ 이 표에 소개된 파일시스템뿐 아니라, 네트워크상의 공유를 목적으로 사용되는 파일시스템도 있다.

로컬 시스템에서 보자면 이들 네트워크 공유 파일시스템 역시 ext3, ntfs 등과 같은 파일시스템일 것이다.

그렇지만 이 파일시스템은 모두 Samba(smbfs 또는 cifs 파일시스템 유형), NFS(nfs), NetWare(ncpfs)와

같은 프로토콜을 통해 네트워크에 공유될 수 있다.

모든 파일시스템 유형이 새로운 파일시스템에 적합하거나 모든 리눅스 버전에서 지원되는 것은 아니다.

예를 들어, minix(Minix 시스템용), befs(BeOS 시스템용), affs(Amiga 시스템용) 같은 파일시스템들은

이들 시스템에서 사용되었던 오래된 백업 미디어를 마운트하거나 접근해야 할 경우에만 유용하다.

물론 유명한 파일시스템이라고 해서 완전히 지원되는 것은 아니다.

reiserfs 파일시스템은 우분투 버전 중 Kubuntu에서 쓰기 기능이 지원되지 않는다.

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs)  (0) | 2011.08.08
[Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted)  (0) | 2011.08.08
[Chap7 #01] - 파일시스템 기초 이해  (0) | 2011.08.07
[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum)  (0) | 2011.08.07
[Chap4 #05] - 확장 파일시스템의 파일 속성 변경(lsattr, chattr)  (0) | 2011.08.07
[Chap4 #04] - 파일 복사하기(cp, dd)  (0) | 2011.08.07

Posted by devanix

TAGfilesystem, 파일시스템

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/236

2011.08.07 19:42

[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum)

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 소프트웨어 패키지나 CD 또는 DVD 이미지와 같은 파일을 인터넷을 통해 공유 하고자 할 때,

SHA1SUM 또는 MD5SUM 파일이 함께 배포되는 경우가 많다.

이러한 파일은 다운로드 받은 파일이 원본 파일과 정확히 동일한 파일인지 확인하는데

사용되는 파일로써, 체크섬(checksum) 정보가 포함되어 있다.

MD5 (128 비트) 체크섬을 확인

SHA1 (160 비트) 체크섬을 확인

md5sum [ OPTION ]... [ FILE ]...

sha1sum [ OPTION ]... [ FILE ]...

[ 옵션 ]

-b, --binary

바이너리 모드로 읽기

-c, --check

파일에 (md5, sha1) 합계를 읽고 체크.

-t, --text

텍스트 모드로 읽기 (기본값)

체크섬을 검증 하는 경우의 옵션

--quiet

체크섬 검증이 성공한 메시지는 출력 안함

▶ md5sum, sha1sum 명령어를 사용해 파일의 체크섬을 생성.

$ touch devanix

$ md5sum devanix

d41d8cd98f00b204e9800998ecf8427e devanix

$ sha1sum devanix

da39a3ee5e6b4b0d3255bfef95601890afd80709 devanix

☞ 파일의 유효성을 검증하기 위해 md5sum 또는 sha1sum 정보 중 무엇을 선택할지는 전적으로 배포자의 결정.

▶ Xubuntu 11.04 (Natty Narwhal) 배포판 사이트에서 MD5SUMS 파일 검증.

/* Xubuntu 11.04(Natty Narwhal) 다운 */

$ wget http://cdimage.ubuntu.com/xubuntu/releases/11.04/release/xubuntu-11.04-desktop-i386.iso

--2011-08-07 18:57:05-- http://cdimage.ubuntu.com/xubuntu/releases/11.04/release/xubuntu-11.04-desktop-i386.iso

Resolving cdimage.ubuntu.com... 91.189.92.164

접속 cdimage.ubuntu.com|91.189.92.164|:80... 접속됨.

HTTP request sent, awaiting response... 200 OK

Length: 722745344 (689M) [application/x-iso9660-image]

Saving to: `xubuntu-11.04-desktop-i386.iso'

100%[==========================================>] 722,745,344 6.70M/s in 2m 51s

2011-08-07 18:59:57 (4.03 MB/s) - `xubuntu-11.04-desktop-i386.iso' saved [722745344/722745344]

/* 해당 사이트 MD5SUMS 파일 다운 */

$ wget http://cdimage.ubuntu.com/xubuntu/releases/11.04/release/MD5SUMS

--2011-08-07 19:03:00-- http://cdimage.ubuntu.com/xubuntu/releases/11.04/release/MD5SUMS

Resolving cdimage.ubuntu.com... 91.189.92.174

접속 cdimage.ubuntu.com|91.189.92.174|:80... 접속됨.

HTTP request sent, awaiting response... 200 OK

Length: 266 [text/plain]

Saving to: `MD5SUMS'

100%[==========================================>] 266 --.-K/s in 0s

2011-08-07 19:03:01 (5.88 MB/s) - `MD5SUMS' saved [266/266]

/* 체크섬 파일(MD5SUMS) 내용 보기 */

$ cat MD5SUMS

ab4b5b18892afd8d4d3228fbc30061d9 *xubuntu-11.04-alternate-amd64.iso

d5b6d8595c44e9954ebc4f188cb9fb49 *xubuntu-11.04-alternate-i386.iso

f1b224166bea923042e53b0e9d5ff63f *xubuntu-11.04-desktop-amd64.iso

78719bfee11576729a62b4a241d40b19 *xubuntu-11.04-desktop-i386.iso

/* MD5SUMS 파일에 기록되어 있는 모든 파일을 한 번에 검증 */

$ md5sum -c MD5SUMS

md5sum: xubuntu-11.04-alternate-amd64.iso: 그런 파일이나 디렉터리가 없습니다

xubuntu-11.04-alternate-amd64.iso: 열기 또는 읽기 실패

md5sum: xubuntu-11.04-alternate-i386.iso: 그런 파일이나 디렉터리가 없습니다

xubuntu-11.04-alternate-i386.iso: 열기 또는 읽기 실패

md5sum: xubuntu-11.04-desktop-amd64.iso: 그런 파일이나 디렉터리가 없습니다

xubuntu-11.04-desktop-amd64.iso: 열기 또는 읽기 실패

xubuntu-11.04-desktop-i386.iso: 성공

md5sum: 경고: 3 중 4 개의 파일들을 읽을 수 없었음

/* 체크섬 파일에 있는 파일 목록 중 하나만을 검증 */

$ cat MD5SUMS | grep *desktop-i386* | md5sum -c

xubuntu-11.04-desktop-i386.iso: 성공

☞ MD5SUMS 파일 대신 SHA1SUMS 파일을 가지고 있더라도, sha1sum 명령어와 동일

[ /etc 디렉토리의 모든 파일에 대한 체크섬 생성 & 검증 ]

♧ find 명령어와 md5sum 명령어를 함께 사용한다면 파일시스템의 어떠한 부분이라도 검증할 수 있다.

① /etc 디렉토리의 모든 파일에 대한 md5 체크섬 생성

$ sudo find /etc -type f -exec md5sum {} \; > /tmp/md5.list 2> /dev/null

☞ 128비트 체크섬이 기록된 /tmp/md5.list 파일 생성.

② 시간이 지난 뒤, 이들 중 어떤 것이 변경 되었는지 확인

$ sudo md5sum --quiet -c /tmp/md5.list

/etc/hosts.allow: 실패

md5sum: *경고*: 1588 중 1개가 서로 일치하지 않는 체크섬으로 계산됨match

☞ 결과에서 볼 수 있듯이, 하나의 파일(hosts.allow)만 변경 되었다.

☞ 필요 하다면 다음 단계로 변경된 파일을 조사하여 의도적인 것인지 살펴본다.

맨 페이지(manpage) 참조 : md5sum, sha1sum

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted)  (0) | 2011.08.08
[Chap7 #01] - 파일시스템 기초 이해  (0) | 2011.08.07
[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum)  (0) | 2011.08.07
[Chap4 #05] - 확장 파일시스템의 파일 속성 변경(lsattr, chattr)  (0) | 2011.08.07
[Chap4 #04] - 파일 복사하기(cp, dd)  (0) | 2011.08.07
[Chap4 #03] - 파일시스템 살펴보기 (cd, pwd, pushd, popd)  (0) | 2011.08.07

Posted by devanix

TAGchecksum, MD5, md5sum, SHA, sha1sum, 파일 무결성

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/234

2011.08.07 17:33

[Chap4 #05] - 확장 파일시스템의 파일 속성 변경(lsattr, chattr)

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 리눅스 파일시스템의 모든 파일과 디렉토리는 사용자, 그룹,

그리고 타인에 대한 읽기, 쓰기 실행 퍼미션을 가지고 있다. 또한

파일과 디렉토리는 퍼미션 외에도 특정 파일시스템 유형과 관련된 다른 속성들도 가지고 있다.

ext2와 ext3 파일시스템에 있는 파일은 사용자가 선택할 수 있는 특별한 속성들을 가지고 있다.

lsattr 명령어를 사용하면 이들 속성 목록을 볼 수 있는데,

속성 대부분은 잘 알려져 있지 않으며 기본적으로 비활성화되어 있다.

[ 속성들 ]

[ 속 성 ]

[ 설 명 ]

대시(-)

ext2/ext3등 파일시스템에서 설정할 수 있는 13개의 속성을 의미

a

쓰기시에 오로지 추가모드로만 열 수 있다.

c

커널에 의해 디스크 상에 압축 상태로 저장.

d

dump(8)명령 수행시 백업 되지 않는다 (덤프 방지)

i

삭제,이름변경,링크등 어떤 자료도 변경 불가. (root 조차 변경 불가)

j

데이터 저널링

s

지워질 때 블록들이 모두 0으로 되고 다시 디스크상에에 씌여짐(안전한 삭제)

t

하단 결합 불가

u

삭제가 되었을 경우에는 그 내용이 저장 (데이터로 복구 가능)

A

접근시간(atime) 갱신 안함

D

동기화된 디렉토리 업데이트

S

수정될 때 그 변화가 디스크 상에 동기화 (동기화된 업데이트)

T

디렉토리 계층구조의 최상위

[ 읽기 전용 속성 ]

h

큰 파일(huge file)

E

압축 오류(compression error)

I

색인 디렉토리(indexed directory)

X

압축 로우 액세스(compression raw access)

Z

compressed dirty file

■ lsattr - 확장 파일시스템 상의 파일 속성 출력

lsattr [ -Radv ] [ files… ]

[ 옵션 ]

-R

디렉토리와 그 이하 모든 내용에 대해 재귀적으로 속성값 출력.

-a

' . '로 시작하는 파일을 포함한 디렉토리 내 모든 파일을 출력.

-d

디렉토리를 보여줄 때 안에든 파일을 보여주는 것이 아니라 일반 파일처럼 출력.

-v

파일 버전 출력.

▶ 일반적인 lsattr 명령어의 사용 예:

$ lsattr /etc/host*

-----------------e- /etc/host.conf

-----------------e- /etc/hostname

-----------------e- /etc/hosts

-----------------e- /etc/hosts.allow

-----------------e- /etc/hosts.deny

☞ 모든 /tmp 속성을 재귀적으로 나열 : $ lsattr -aR /tmp/ | less

■ chattr - 확장 파일시스템 상의 파일 속성 변경

chattr [ -RVf ] [ -v version ] [ mode ] files…

[ 옵션 ]

-R

디렉토리와 그 이하 모든 내용의 속성을 재귀적으로 변환.

-V

변화된속성에 대하여 자세히 출력.

-f

오류 메시지 표시.

-v version

파일에 버전을 설정

[ 속성 연산자 ]

'+'

파일의 속성에 추가

'-'

파일의 속성을 제거

'='

파일이 갖는 속성을 오로지 주어진 속성만 갖도록 설정.

▶ ' i ' 속성을 부여하여 이동,삭제,내용수정등 변경불가 (파일 보호)

$ touch test

$ sudo chattr +i test

$ lsattr test

----i------------e- test

/* 쓰기 불가 */

$ sudo echo "write" > test

-bash: test: 허가 거부

/* 이동 불가 */

$ sudo mv test xxxx

mv: `test'를 `xxxx'로 옮길 수 없음: 명령을 허용하지 않음

/* 삭제 불가 */

$ sudo rm -f test

rm: `test'를 지울 수 없음: 명령을 허용하지 않음

☞ root 조차 속성이 해제되기 전까지는 변경할 수 없다

☞ 다시 삭제하려면 기호(-)를 사용하여 속성을 제거후 삭제($ sudo chattr -i test)

▶ -R 옵션을 사용하여 +A 속성을 재귀적으로 한번에 설정하여 접근 시간(atime) 갱신 안함.

$ touch test_aaa test_bbb test_ccc

$ sudo chattr -R +A test_*

$ lsattr test_*

-------A---------e- test_aaa

-------A---------e- test_bbb

-------A---------e- test_ccc

☞ test_* 파일들은 더 이상 접근 시간(atime) 수정 되지 않는다.

☞ A 속성은 노트북 또는 USB 디스크 등 비교적 느린 디스크 환경에서 디스크 I/O를 줄일 수 있다.

▶ ' d ' 속성이 부여된 파일은 dump명령에 의하여 백업되지 않도록 보호.

$ touch test

$ sudo chattr +d test

$ lsattr test

------d----------e- test

☞ dump 명령어를 사용하여 ext(n) 파일시스템을 백업하고 있다면 해당 파일은 백업되지 않도록 보호함.

이러한 특징을 적용해 크기가 큰 ISO 이미지 파일 등을 백업에서 제외시킬 수 있다.

맨 페이지(man page) 참조 :man lsattr, man chattr

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap7 #01] - 파일시스템 기초 이해  (0) | 2011.08.07
[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum)  (0) | 2011.08.07
[Chap4 #05] - 확장 파일시스템의 파일 속성 변경(lsattr, chattr)  (0) | 2011.08.07
[Chap4 #04] - 파일 복사하기(cp, dd)  (0) | 2011.08.07
[Chap4 #03] - 파일시스템 살펴보기 (cd, pwd, pushd, popd)  (0) | 2011.08.07
[Chap3 #02] - 리눅스 쉘 사용(3) (Redirection, pipe, xargs)  (0) | 2011.08.07

Posted by devanix

TAGchattr, lsattr, 파일 속성

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/233

2011.08.07 06:38

[Chap4 #04] - 파일 복사하기(cp, dd)

컴퓨터 서적 정리/Ubuntu Linux Toolbox

■ cp 명령

♧ cp명령어는 파일을 새로운 이름으로 복사하거나, 새로운 디렉토리에 동일한 파일명

(복사된 파일은 새로운 시간정보를 가짐) 으로 복사할 수 있다.

cp 명령어에는 날짜 . 시간 정보를 유지하게 하거나,

재귀적으로 복사 하거나, 기존에 동일한 파일이 있는 경우 덮어 쓸지 여부를 사용자에게 확인

하도록하는 옵션들을 가지고 있다.

▶ cp명령을 사용한 몇 가지 예제:

$ cd ; touch index.html

$ mkdir /tmp/html

/* cp -i : 만약 /tmp/html 디렉토리에 index.html 파일이 존재하면 사용자에게 확인 */

$ cp -i index.html /tmp/html/

/* cp -l : index.html 파일이 /tmp/html디렉토리에 동일한 이름의 파일로 하드링크 됨 */

$ rm /tmp/html/index.html

$ cp -il index.html /tmp/html/

/* cp -a : /tmp/html 디렉토리에 있는 모든 파일의 소유권과 퍼미션 설정을 그대로 유지한 상태로 복사 */

$ mkdir /tmp/back

$ cp -a /tmp/html /tmp/back/

/* cp -R : 디렉토리 구조를 바탕으로 지정된 디렉토리 이하 모든 파일과 디렉토리를 재귀적으로 복사 */

$ cp -R /tmp/html /tmp/back/

■ dd 명령

♧ dd 명령어는 데이터를 복사하는 또 다른 방법.

리눅스 시스템은 하드웨어 디바이스를 포함해 모든 것을 파일로 간주하기 때문에

dd는 매우 강력한 명령어이다.

▶ null문자로 채워진 512 바이트크기의 파일을 만듬.

$ dd if=/dev/zero of=/tmp/mynullfile count=1

1+0 레코드 들어옴

1+0 레코드 나감

512 바이트 (512 B) 복사됨, 0.000108411 초, 4.7 MB/초

☞ /dev/zero는 null 문자를 만들어내는 특별한 파일.

☞ dd 명령어는 /dev/zero파일을 입력파일로 하고, /tmp/mynullfile을 출력파일로 실행.

☞ count는 출력파일의 블록 개수를 설정하는 옵션이고 기본적으로 하나의 블록은 512 바이트.

☞ 결과 확인 : $ od -vt x1 /tmp/mynullfile ( 파일을 8진수로 덤프하여 출력 )

▶ 블록사이즈를 2바이트로 설정하고 10블록(20 바이트)을 복사.

$ dd if=/dev/zero of=/tmp/mynullfile count=10 bs=2

10+0 레코드 들어옴

10+0 레코드 나감

20 바이트 (20 B) 복사됨, 0.000241805 초, 82.7 kB/초

▶ 마스터 IDE 드라이브의 첫 번째 파티션의 복사본을 만듬

$ sudo dd if=/dev/hda1 of=/dev/hdb2

☞ 이 명령은 하드드라이브의 일부를 덮어쓸 수 있으므로 매우 조심스럽게 사용

▶ 마스터 IDE 드라이브의 첫 번째 파티션에 대한 압축된 백업 파일을 만듬

$ sudo umount /dev/hda1

$ sudo dd if=/dev/hda1 | gzip > bootpart.gz

▶ 마스터 IDE 하드드라이브의 마스터 부트 레코드(MBR)를 mymbrfile파일로 복사

$ dd if=/dev/hda of=mymbrfile bs=512 count=1

▶ CD나 DVD로부터 ISO 이미지 복사본 생성

$ dd if=/dev/cdrom of=whatever.iso

☞ 우분투는 /dev/cdrom뿐만 아니라 /dev/cdrw와 /dev/dvd 디바이스 파일도 생성

▶ CD 또는 DVD로부터 생성한 ISO 이미지 파일을 USB 디스크로 복사

$ sudo dd if=whatever.iso of=/dev/sdb1

(USB 디스크는 /dev/sdb1과 같은 장치파일로 나타날 것이다)

☞ 이 명령은 파일 내에 있는 데이터를 바이너리 복사하기 때문에

의도와 다른 결과를 가져올 수 있으므로 주의

맨 페이지(man page) 참조 : man cp, man dd, man 4 null

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum)  (0) | 2011.08.07
[Chap4 #05] - 확장 파일시스템의 파일 속성 변경(lsattr, chattr)  (0) | 2011.08.07
[Chap4 #04] - 파일 복사하기(cp, dd)  (0) | 2011.08.07
[Chap4 #03] - 파일시스템 살펴보기 (cd, pwd, pushd, popd)  (0) | 2011.08.07
[Chap3 #02] - 리눅스 쉘 사용(3) (Redirection, pipe, xargs)  (0) | 2011.08.07
[Chap3 #02] - 리눅스 쉘 사용(2) (watch, tail)  (0) | 2011.08.06

Posted by devanix

TAGCP, DD, 파일 복사

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/232

2011.08.07 05:25

[Chap4 #03] - 파일시스템 살펴보기 (cd, pwd, pushd, popd)

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 파일시스템 이동에 사용되는(cd, pwd, pushd, popd ..등) 이러한 명령어가 가진 조금 덜 알려진 옵션에 초점.

▶ cd 명령을 사용한 몇 가지 예제:

$ cd

홈 디렉토리 이동

$ cd $HOME

홈 디렉토리 이동

$ cd ~

홈 디렉토리 이동

$ cd ~devanix devanix

유저의 홈 디렉토리로 이동

$ cd -

이전에 작업한 디렉토리로 이동

$ cd $OLDPWD

이전에 작업한 디렉토리로 이동

$ cd ~/public_html

홈 디렉토리의 public_html 디렉토리로 이동

$ cd ..

현재 디렉토리의 상위(부모) 디렉토리로 이동

$ /usr/bin

루트 디렉토리에서 usr/bin 디렉토리로 이동

$ cd usr/bin

현재 디렉토리 밑에 있는 usr/bin 디렉토리로 이동

▶ 심볼릭 링크를 생성하고, 링크된 디렉토리가 어떻게 표현되는지 보여주는 몇 가지 예제:

$ cd $HOME

/* 홈 디렉토리에서 /tmp 디렉토리를 향하는 심볼릭 링크 생성 */

$ ln -s /tmp tmp-link

/* ls -l 출력하여 심볼릭 링크가 가리키는 곳을 확인 */

$ ls -l tmp-link

lrwxrwxrwx 1 devanix devanix 4 2011-08-07 04:56 tmp-link -> /tmp

/* tmp-link/로 이동 */

$ cd tmp-link/

/* 현재 디렉토리 확인 */

$ pwd

/home/devanix/tmp-link

/* -P : 심볼릭 링크된 디렉토리에서 고정된 위치를 기준으로 pwd 출력 */

$ pwd -P

/tmp

/* -L : 링크된 위치를 기준으로 pwd 출력 */

$ pwd -L

/home/devanix/tmp-link

/* cd -L역시 pwd -L과 같이 링크된 기준에서 상위디렉토리(..) 이동 */

$ cd -L ..

$ pwd

/home/devanix

$ cd tmp-link

/* cd -P 역시 pwd -P와 같이 목적지의 고정된 위치를 기준으로 상위디렉토리(..) 이동 */

$ cd -P ..

$ pwd

/

♧ bash는 작업 디렉토리 목록을 기억할 수 있다.

이 목록은 이전에 방문했던 디렉토리로 돌아가려는 경우 유용 하다.

저장된 목록은 스택(stack)의 형태로 구성되어 있기 때문에

pushd와 popd 명령어를 사용하여 디렉토리를 추가하거나 제거할 수 있다.

▶ pushd와 popd 명령어 사용 예제:

$ pwd

/home/devanix

$ pushd /usr/share/man/

/usr/share/man ~

$ pushd /var/log/

/var/log /usr/share/man ~

$ dirs

/var/log /usr/share/man ~

$ dirs -v

0 /var/log

1 /usr/share/man

2 ~

$ popd

/usr/share/man ~

$ pwd

/usr/share/man

$ popd

~

$ pwd

/home/devanix

☞ dirs, pushd, popd 명령어는 스택에 저장된 디렉토리를 순서대로 저작하는데 사용될 수 있다.

pushd -0은 스택에 있는 마지막 디렉토리를 스택의 제일 위에 넣는다(현재 디렉토리로 만든다)

pushd -1은 스택에 있는 맨위의 디렉토리를 스택의 제일 마지막에 넣는다(pushd -0과 반대)

pushd -2 명령은 스택 밑에서 세 번째에 위치한 디렉토리를 스택 제일 위에 넣는다.

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap4 #05] - 확장 파일시스템의 파일 속성 변경(lsattr, chattr)  (0) | 2011.08.07
[Chap4 #04] - 파일 복사하기(cp, dd)  (0) | 2011.08.07
[Chap4 #03] - 파일시스템 살펴보기 (cd, pwd, pushd, popd)  (0) | 2011.08.07
[Chap3 #02] - 리눅스 쉘 사용(3) (Redirection, pipe, xargs)  (0) | 2011.08.07
[Chap3 #02] - 리눅스 쉘 사용(2) (watch, tail)  (0) | 2011.08.06
[Chap3 #02] - 리눅스 쉘 사용(1) (쉘 사용자 환경, history, alias)  (0) | 2011.08.06

Posted by devanix

TAGcd, popd, pushd, pwd

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/231

2011.08.07 03:05

[Chap3 #02] - 리눅스 쉘 사용(3) (Redirection, pipe, xargs)

컴퓨터 서적 정리/Ubuntu Linux Toolbox

■ 리다이렉션(Redirection)

♧ 명령이 실행되기에 앞서 쉘에 의해 특별하게 해석되는 표시를 사용하여

입력과 출력을 방향 전환 또는 리다이렉트 할 수 있다.

stdin

키보드 (표준입력, 0)

stdout

모니터 (표준출력, 1)

stderr

모니터 (에러출력, 2)

>

출력 리다이렉션 (stdout 만을 보냄)

<

입력 리다이렉션 (stdin 파일로부터 데이터를 받음)

>>

추가 출력 리다이렉션 (새로 덮어쓰지 않고 추가)

2>

표준에러 리다이렉션 (stderr 만을 보냄)

&>word

>& word

>word 2>&1

표준 출력과 표준에러를 동시에 리다이렉트 함

▷ 표준출력은 파일 output.txt로 리다이렉트

$ ls /tmp /tmmp > output.txt

ls: /tmmp에 접근할 수 없습니다.: 그런 파일이나 디렉터리가 없습니다

▷반대로 표준에러를 error.txt 파일에 리다이렉트.(표준출력은 그대로 화면 출력)

$ ls /tmp /tmmp 2> errors.txt

/tmp:

keyring-QC9vEx pulse-2L9K88eMlGn7 rsync_1007

orbit-devanix pulse-PKdhtXMmr18n ssh-jbzyRBjE1162

▷ 앞의 두 예제를 합쳐놓은 것.

$ ls /tmp /tmmp 2> errors.txt > output.txt

/* cat으로 errors.txt 와 output.txt 출력 */

$ cat errors.txt

ls: /tmmp에 접근할 수 없습니다.: 그런 파일이나 디렉터리가 없습니다

$ cat output.txt

/tmp:

keyring-QC9vEx

orbit-devanix

pulse-2L9K88eMlGn7

pulse-PKdhtXMmr18n

rsync_1007

ssh-jbzyRBjE1162

▷ 두 스트림(stdout, stderr) 출력을 모두 everything.txt 파일에 쓰도록 함.

$ ls /tmp /tmmp > everything.txt 2>&1

/* cat으로 everything.txt 출력 */

$ cat everything.txt

ls: /tmmp에 접근할 수 없습니다.: 그런 파일이나 디렉터리가 없습니다

/tmp:

keyring-QC9vEx

orbit-devanix

pulse-2L9K88eMlGn7

pulse-PKdhtXMmr18n

rsync_1007

ssh-jbzyRBjE1162

▷ 두 개의 그레이터 댄(>>) : 새로 덮어쓰지 않고 추가 되도록 하기

$ ls /tmp >> output.txt

▷ 에러 출력을 화면에 출력 하지 않기 (비트버킷 파일(/dev/null) 보내기)

$ ls /tmp /tmmp 2> /dev/null

/tmp:

keyring-QC9vEx pulse-2L9K88eMlGn7 rsync_1007

orbit-devanix pulse-PKdhtXMmr18n ssh-jbzyRBjE1162

▷ /etc/hosts 파일을 mail 명령어의 표준 입력 스트림으로 보내기

$ mail chris < /etc/hosts

■ 파이프( | )를 사용

♧ 하나의 프로세스 출력을 파일이 아닌 다른 프로세스로 리다이렉트.

▷ ls명령의 표준출력이 파이프를 통해 sort 명령어로 보내져 실행결과가 정렬되어 출력.

$ ls /tmp | sort

▷ 파이프 리다이렉션을 조합하여 ls 명령어의 표준출력은 정렬되고 에러출력은 비트버킷(/dev/null)으로 비운다.

$ ls /tmp /tmmp 2> /dev/null | sort

▷ 그밖에 다양한 활용.

/* 설치되어 있는 모든 패키지 에서 sql 문자열이 포함되어 있는 패키지 개수 */

$ dpkg-query -l | grep -i sql | wc -l

/* Firefox 문자를 포함하고 있는 프로세스 출력 */

$ ps auwx | grep firefox

/* 프로세스 목록 한 화면씩 출력 */

$ ps auwx | less

/* 순수하게 맨 페이지 경로만을 출력 */

$ whereis -m bash | awk '{print $2}'

■ 작은 인용부호( ` )를 사용

♧ 인용부호로 묶인 명령어의 실행결과를 나머지 명령어의 입력으로 사용

/* ps 명령어의 전체경로를 찾은 후에 이 명령어를 포함하고 있는 패키지를 찾음 */

$ dpkg-query -S `which ps` → dpkg-query -S /bin/ps

/* bash 명령어의 전체경로를 찾아 해당 명령어의 상세 목록을 보여줌 */

$ ls -l `which bash` → ls -l /bin/bash

☞ 작은 인용부호( ` )는 키보드 느낌표(!) 왼쪽에 있음.

■ xargs명령을 이용

♧ 하나의 명령의 실행결과를 다른 명령어의 인자로 넘겨주기

▷ ls명령의 /bin/b*의 실행결과는 dpkg-qeury -S 명령어의 인자로 전달

$ ls /bin/b* | xargs -t dpkg-query -S

dpkg-query -S /bin/bash /bin/bunzip2 /bin/busybox /bin/bzcat /bin/bzcmp /bin/bzdiff /bin/bzegrep /bin/bzexe /bin/bzfgrep /bin/bzgrep /bin/bzip2 /bin/bzip2recover /bin/bzless /bin/bzmore

bash: /bin/bash

bzip2: /bin/bunzip2

busybox-static: /bin/busybox

bzip2: /bin/bzcat

bzip2: /bin/bzcmp

bzip2: /bin/bzdiff

bzip2: /bin/bzegrep

bzip2: /bin/bzexe

bzip2: /bin/bzfgrep

bzip2: /bin/bzgrep

bzip2: /bin/bzip2

bzip2: /bin/bzip2recover

bzip2: /bin/bzless

bzip2: /bin/bzmore

☞ -t 옵션을 적용하면 명령어 실행시 화면에 좀 더 상세한 정보가 출력.

▷ -I{}를 이용하여 ls명령이 출력하는 각 문자열을 하나씩 dpkg-query 명령어의 입력으로 보냄.

$ ls /bin/b* | xargs -t -I{} dpkg-query -S {}

dpkg-query -S /bin/bash

bash: /bin/bash

dpkg-query -S /bin/bunzip2

bzip2: /bin/bunzip2

dpkg-query -S /bin/busybox

busybox-static: /bin/busybox

dpkg-query -S /bin/bzcat

…[중략]…

☞ 실행결과에서 볼 수 있듯이 dpkg-query -S 명령어는

ls로부터 인자로 전달된 각 개별 문자열을 사용해 반복적으로 실행.

※ 맨 페이지(man page) 참조 : man bash, man xargs

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap4 #04] - 파일 복사하기(cp, dd)  (0) | 2011.08.07
[Chap4 #03] - 파일시스템 살펴보기 (cd, pwd, pushd, popd)  (0) | 2011.08.07
[Chap3 #02] - 리눅스 쉘 사용(3) (Redirection, pipe, xargs)  (0) | 2011.08.07
[Chap3 #02] - 리눅스 쉘 사용(2) (watch, tail)  (0) | 2011.08.06
[Chap3 #02] - 리눅스 쉘 사용(1) (쉘 사용자 환경, history, alias)  (0) | 2011.08.06
[Chap3 #01] - 리눅스 가상 콘솔(터미널) 사용  (0) | 2011.08.06

Posted by devanix

TAGpipe, redirection, xargs

trackback 1 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/230

2011.08.06 23:49

[Chap3 #02] - 리눅스 쉘 사용(2) (watch, tail)

컴퓨터 서적 정리/Ubuntu Linux Toolbox

■ 명령어 감시

♧ 만약 명령어의 출력이 어떻게 변화 하는지 지켜봐야 한다면 watch 명령어를 사용.

▶ 시스템 평균 부하에 대한 정보를 감시해야 하는 경우

$ watch 'cat /proc/loadavg'

Every 2.0s: cat /proc/loadavg Sat Aug 6 23:18:58 2011

0.00 0.01 0.05 1/237 6626

☞ watch 명령으 cat 명령어를 매 2초마다 실행. <Ctrl + c> = 종료

▷ -n <초> 옵션 : 재실행 간격을 10초로 변경

$ watch -n 10 'cat /proc/loadavg'

▷ -d 옵션 : 화면이 업데이트될 때 이전 결과와의 차이점을 강조

$ watch -d 'cat /proc/loadavg'

Every 2.0s: cat /proc/loadavg Sat Aug 6 23:18:58 2011

0.00 0.01 0.05 1/237 6739

■ 파일 감시

♧ watch 명령어를 사용하여 파일의 크기를 지켜볼 수도 있다.

$ watch 'ls -l mydownload.iso'

♧ tail 명령어를 사용하면 시간이 지남에 따라 변화하는 일반 텍스트 파일의 내용을 지켜볼 수 있다.

▶ /var/log/messages 파일에 새로운 메시지가 추가되는 것을 관찰

$ tail -f /var/log/messages

자세한 내용은 man page 참조 : man watch, man tail

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap4 #03] - 파일시스템 살펴보기 (cd, pwd, pushd, popd)  (0) | 2011.08.07
[Chap3 #02] - 리눅스 쉘 사용(3) (Redirection, pipe, xargs)  (0) | 2011.08.07
[Chap3 #02] - 리눅스 쉘 사용(2) (watch, tail)  (0) | 2011.08.06
[Chap3 #02] - 리눅스 쉘 사용(1) (쉘 사용자 환경, history, alias)  (0) | 2011.08.06
[Chap3 #01] - 리눅스 가상 콘솔(터미널) 사용  (0) | 2011.08.06
[Chap2 #07] - deb 패키지 만들기  (0) | 2011.08.06

Posted by devanix

TAGtail, watch

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/229

2011.08.06 23:28

[Chap3 #02] - 리눅스 쉘 사용(1) (쉘 사용자 환경, history, alias)

컴퓨터 서적 정리/Ubuntu Linux Toolbox

■ bash 쉘 사용자 환경

♧ 텍스트 기반의 로그인 환경을 이용하든 터미널 윈도우를 이용하든 관계없이,

쉘이 실행된 후에는 쉘을 시작한 유저를 위한 환경으로 초기화 된다.

- bash 쉘은 몇 개의 파일을 통해 사용자 설정을 지원하며,

스타트업(startup) 파일과 초기화 파일 등 두가지 형태를 가짐.

- bash는 모든 로그인 쉘에 대해서 스타트업 파일을 실행.

이 파일은 사용자의 로그인 전체에 걸쳐 적용되는 설정내용을 정의하고 있다.

- bash는 또한 대화식으로 실행되는 쉘을 위해 초기화 파일들을 실행하는데,

이 파일들은 쉘 스크립트로 실행되지 않는다.

▶ 스타트업(startup) 파일

시스템 전역 초기화 파일 : /etc/profile

개인 초기화 파일 : .bash_profile > .bash_login > .profile

(3개 파일이 동시에 존재 할경우 우선순위 별로 하나의 설정 파일만 실행)

※ 다른 리눅스 배포판에서는 시스템 전체에 적용되는 설정 파일을

/etc/profile과 /etc/profile.d/ 디렉토리에 저장.

▶ 초기화 파일

시스템 전역 초기화 파일 : /etc/bash.bashrc

개인 초기화 파일 : ~/.bashrc

※ 다른 리눅스 배포판에서는 시스템 전체에 영향을 주는 초기화 파일로

/etc/bashrc 를 사용

▶ 쉘이 종료될 때: ~/.bash_logout

(파일에 기술되어 있는 모든 명령어들을 실행)

■ bash쉘 history 기능

♧ 히스트로는 과거에 실행했던 명령들을 보거나, 변경하여 재사용할 수 있도록 해주는 기능.

▶ $HISTFILE : 히스토리 파일 설정

$ echo $HISTFILE

/home/devanix/.bash_history

☞ bash는 실행될 때 ~/.bash_history 파일에 기록되어 있는 히스토리를 메모리로 읽어 들임.

bash 세션이 유지되는 동안에 실행되는 명령들은 모두 메모리에 있는 히스토리에 추가.

▶ $HISTSIZE : bash 세션동안 히스토리로 저장되는 명령어의 수

$ echo $HISTSIZE

1000

▶ $HISTFILESIZE : 히스토리 파일에 실제적으로 저장되는 명령어의 수

$ echo $HISTFILESIZE

1000

▶ history[n] 명령을 실행

$ history 5

975  mkdir extras

976   mv *doc extras/

977   ls -CF

978   vi house.txt

979   history

☞ 숫자와 함께 실행하면 최근 실행했던 명령어를 숫자만큼 보여줌.

▶ bash 히스토리로부터 명령어를 호출하여 다시 실행시키는 몇 가지 방법들

$ !!

이전에 실행한 명령을 다시 실행

$ !997

ls -CF

히스토리에 저장된 997번 명령을 실행

$ !997 *doc

히스토리에 저장된 997번 명령에 *doc를 추가.

ls -CF *doc

$ !?CF?

ls -CF *doc

이전에 실행된 명령중에 CF문자열을 포함한 명령을 실행

$ !ls

ls -CF *doc

이전에 실행한 ls명령을 실행

$ !ls:s/CF/l

이전에 실행된 ls 명령에서 CF문자열을 l로 대체하여 실행

ls -l *doc

▶ fc명령어를 이용한 명령어 히스토리 편집

$ fc 978

Edit 978번 명령을 편집한 후에 실행

$ fc

Edit 이전에 실행된 명령을 편집한 후에 실행

$ fc -e /usr/bin/nano 989

989번 명령을 나노 에디터로 편집

(다른 에디터를 사용하고 싶다면 $FCEDIT 환경변수 이용 : 예) $ FCEDIT=vi)

▶ 히스토리 문자열을 검색 : <Ctrl + r>

( <Ctrl + r>반복적으로 누르면 히스토리 목록열 역방향으로 검색)

■ 알리아스(alias) 사용

♧ alias 명령어를사용하여 알리아스를 설정하너가 기존의 알리아스 설정을 볼 수 있다.

일부 알리아스는 앞에서 시스템 또는 사용자 쉘 초기화 파일에 미리 설정 되어 있다.

▶ 현재 설정되어 있는 알리아스를 보기

$ alias

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias l='ls -CF'

alias la='ls -A'

alias ll='ls -alF'

alias ls='ls --color=auto'

▶ 현재 bash 세션에서 자신이 원하는 알리아스 정의

$ alias la='ls -la'

(~/.bashrc 파일에 앞의 내용을 추가하면, 새로운 bash 세션이 실행될 때마다 적용)

▶ 현재 bash 세션에서 알리아스 제거

$ unalias la

이전에 만들어진 알리아스 la 명령어 제거

$ unalias -a

만들어져 있는 모든 알리아스 해제

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap3 #02] - 리눅스 쉘 사용(3) (Redirection, pipe, xargs)  (0) | 2011.08.07
[Chap3 #02] - 리눅스 쉘 사용(2) (watch, tail)  (0) | 2011.08.06
[Chap3 #02] - 리눅스 쉘 사용(1) (쉘 사용자 환경, history, alias)  (0) | 2011.08.06
[Chap3 #01] - 리눅스 가상 콘솔(터미널) 사용  (0) | 2011.08.06
[Chap2 #07] - deb 패키지 만들기  (0) | 2011.08.06
[Chap2 #06] - debsums를 사용하여 설치된 패키지 검증  (0) | 2011.08.06

Posted by devanix

TAGAlias, bash, bashrc, History

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/228

2011.08.06 20:43

[Chap3 #01] - 리눅스 가상 콘솔(터미널) 사용

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 우분투가 멀티유저 모드(런 레벨 2, 3, 5)로 부팅되었을 때,

텍스트 기반 로그인 환경에서 [tty1 ~ tty6 ]으로 알려진 6개의 가상 콘솔(Virtual console)이 생성.

X 윈도우 시스템이 실행중이라면, X는 가상 콘솔 7에서 실행.

X GUI환경에서 → 텍스트 가상 콘솔로 전환 :

< Ctrl+Alt+F1 > ~ < Ctrl+Alt+F6 >

텍스트 가상 콘솔에서의 이동 :

< Alt+F1 > ~ < Alt+F6 >

텍스트 가상 콘솔 → X GUI 환경 전환 :

< Alt+F7 >

▶ 각각의 가상 터미널은 getty 프로세스가 관리.

$ ps awx | grep -v grep | grep getty

675

tty4

Ss+

0:00

/sbin/getty

-8 38400

tty4

683

tty5

Ss+

0:00

/sbin/getty

-8 38400

tty5

397

tty2

Ss+

0:00

/sbin/getty

-8 38400

tty2

702

tty3

Ss+

0:00

/sbin/getty

-8 38400

tty3

712

tty6

Ss+

0:00

/sbin/getty

-8 38400

tty6

4004

tty1

Ss+

0:00

/sbin/getty

-8 38400

tty1

▷ 첫 번째 콘솔에 로그인한다.(이 사용자 로그인은 getty에 의해 관리되며, 바로 bash 쉘을 활성화)

$ ps awx | grep -v grep | grep tty

675

tty4

Ss+

0:00

/sbin/getty

-8 38400

tty4

683

tty5

Ss+

0:00

/sbin/getty

-8 38400

tty5

397

tty2

Ss+

0:00

/sbin/getty

-8 38400

tty2

702

tty3

Ss+

0:00

/sbin/getty

-8 38400

tty3

712

tty6

Ss+

0:00

/sbin/getty

-8 38400

tty6

1111

tty7

Ss+

0:19

/usr/bin/X :0

-nr -verbose -auth …[생략]…

3794

tty1

Ss

0:00

/bin/login --

3888

tty1

S

0:01

-bash

☞ 개별 가상 콘솔은 /etc/event.d 디렉토리에 있는 tty1, tty2 …등의 콘솔 스크립트 파일을 통해 설정.

☞ 대부분의 다른 리눅스 배포판에서는 /etc/inittab 하나의 파일로 콘솔을 설정.

이 /etc/inittab 파일은 시스템 초기화를 담당하는 init 데몬이 사용하는 설정파일로,

우분투 리눅스에서는 init 프로그램이 upstart라는 새로운 프로그램으로 교체되었다.

새 upstart 프로그램은 /etc/event.d 디렉토리에 있는 설정파일들을 사용하고 있다.

※ 버전의 차이인지 패포판의 차이인지는 확인 못했으나 주분투11.04(Xubuntu) 같은 경우

/etc/event.d 이나 /etc/inittab 은 존재 하지 안았고 /etc/init/tty[숫자].conf 로 존재하였다.

맨 페이지 검색 : man upstart 으로 참조

▷ /etc/init/tty1.conf 내용

# tty1 - getty

#

# This service maintains a getty on tty1 from the point the system is

# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]

stop on runlevel [!2345]

respawn

exec /sbin/getty -8 38400 tty1

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap3 #02] - 리눅스 쉘 사용(2) (watch, tail)  (0) | 2011.08.06
[Chap3 #02] - 리눅스 쉘 사용(1) (쉘 사용자 환경, history, alias)  (0) | 2011.08.06
[Chap3 #01] - 리눅스 가상 콘솔(터미널) 사용  (0) | 2011.08.06
[Chap2 #07] - deb 패키지 만들기  (0) | 2011.08.06
[Chap2 #06] - debsums를 사용하여 설치된 패키지 검증  (0) | 2011.08.06
[Chap2 #05] - aptitude를 사용하여 Software 관리  (0) | 2011.08.05

Posted by devanix

TAGgetty, tty, Virtual Console, 가상 터미널

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/227

2011.08.06 19:14

[Chap2 #07] - deb 패키지 만들기

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 데비안 패키지를 만드는데 사용되는 .deb 파일을 재빌드하면, 현재 사용하고 있는

소프트웨어를 좀 더 유용하게 활용할 수 있다(md5sum 파일을 포함 등…).

① 재빌드 하기위해 피캐지 다운로드

$ aptitude download rsync

Get:1 http://ftp.daum.net/ubuntu/ natty/main rsync i386 3.0.7-2ubuntu3 [285 kB]

Fetched 285 kB in 0초 (1,773 kB/s)

② 다운로드 받은 .deb 파일에서 패키지 내용과 제어파일들을 풀어 놓는다.

$ sudo dpkg -x rsync_3.0.7-2ubuntu3_i386.deb /tmp/rsync_$RANDOM

$ sudo dpkg -e rsync_3.0.7-2ubuntu3_i386.deb /tmp/rsync_2752/

$ cd /tmp/rsync_2752/

$ ls -lrt

합계 40

-rwxr-xr-x 1  root root    494      2011-04-08 23:31   prerm

-rwxr-xr-x 1  root root    113      2011-04-08 23:31   postrm

-rwxr-xr-x 1  root root    712     2011-04-08 23:31   postinst

drwxr-xr-x 4 root root    4096   2011-04-08 23:32   usr

drwxr-xr-x 4 root root    4096   2011-04-08 23:32   etc

-rw-r--r-- 1   root root    37        2011-04-08 23:32   conffiles

-rw-r--r-- 1  root root     901      2011-04-08 23:32   control

-rw-r--r-- 1  root root    1676    2011-04-08 23:32   md5sums

☞ $RANDOM 디렉토리는 실행 될 때마다 랜덤한 숫자가 출력되므로 사용자마다 다를 것.

/tmp/rsync_<탭키> 누르면 자동으로 찾을 수 있다.

③ 새로운 .deb 파일을 만들기 위해서 dpkg의 포맷에 맞는 패키지 디렉토리 구조 설정.

/* rsync_3.0.7.2cn3/DEBIAN이라는 이름의 하위 디렉토리 생성후 설치 파일들을 이동 */

$ sudo mkdir -p rsync_3.0.7-2cn3/DEBIAN

$ sudo mv con* md5sums post* prerm rsync_3.0.7-2cn3/DEBIAN/

/* 또한 etc/와 usr/ 디렉토리 역시 rsync_3.0.7-2cn3로 옮김 */

$ sudo mv usr etc rsync_3.0.7-2cn3/

④ 만약 md5sums 파일이 없을 경우 : 이전 챕터(Chap2 #06)에서

[누락된 md5sum 생성 & 체크]를 참조하여 md5sums 파일을 만들어

DEBIAN 하위 디렉토리에 md5sum이라는 이름으로 이동 시킴.

(이는 debsums 검사에 사용할 수 있도록 md5sum 파일을 패키지에 포함시키는 작업)

$ sudo mv /var/lib/dpkg/info/rsync.md5sums rsync_3.0.7-2cn3/DEBIAN/md5sums

⑤ 제어 파일을 편집하여 필요한 정보를 변경

$ sudo vi rsync_3.0.7-2cn3/DEBIAN/control

Package: rsync

Version: 3.0.7-2cn3

Architecture: i386

…[중략]…

Description: Modified by CN 2011-08-06 to include md5sums.

fast remote file copy program (like rcp)

…[중략]…

☞ md5sums 파일이 포함된 새rsync 패키지가 기존 패키지와 동일한 버전으로 설치될 경우,

이들 두 버전을 구분할 수 없게 되는 등의 문제가 발생할 수 있다.

이는 시스템 관리 측면에서 매우 큰 문제이다.

따라서 텍스트 편집기(vi등)를 이용해 제어 파일을 열고 Version필드를 변경하도록 한다.

(Version 단어 다음에 콜론이 붙은 형태는 헤더 필드를 의미하므로 변경되지 않도록 주의)

정보 필드는 이러한 헤더 필드 다음에 따라오는데, 패키지 제어 파일 서식은 매우 까다롭기 때문에

콜론 문자 다음에 불필요한 공백문자나 줄 바꿈 문자가 들어가지 않도록 관리한다.

☞ Description: 필드는 패키지에 대해 좀 더 상세한 정보를 제공하는 필드이다.

(fast remote… 구문 바로 이전의 공백문자에 주의.)

이 공백문자는 dpkg가 여러 라인의 헤더와 설명문을 구분할 수 있도록 알려주는 특별한 의미를 가진 포맷이다.

만약 이 설명문이 여러 라인에 걸쳐 기술된다면 모든 라인 앞에 공백문자를 하나씩 입력.

⑥ dpkg -b 옵션을 이용해 새로운 패키지를 빌드

$ sudo dpkg -b rsync_3.0.7-2cn3/

dpkg-deb: 경고: 'rsync_3.0.7-2cn3//DEBIAN/control'에 사용자 정의 필드

`Original-Maintainer'이(가) 들어 있습니다

dpkg-deb: 경고: 컨트롤 파일과 관련된 1개 경고를 무시합니다

dpkg-deb: `rsync' 패키지 빌드하는 중입니다 (`rsync_3.0.7-2cn3.deb'에서).

☞ (사용자 정의 필드 관련하여 패키지 담당자에 대한 경고 메시지는 무시해도 무방하다)

⑦ dpkg -I 옵션을 이용해 새 패키지에 대한 정보 확인

$ dpkg -I rsync_3.0.7-2cn3.deb

new debian package, version 2.0.

size 284678 bytes: control archive= 2121 bytes.

37 bytes, 2 lines conffiles

944 bytes, 21 lines control

1676 bytes, 23 lines md5sums

712 bytes, 30 lines * postinst #!/bin/sh

113 bytes, 8 lines * postrm #!/bin/sh

494 bytes, 30 lines * prerm #!/bin/sh

Package: rsync

Version: 3.0.7-2cn3

Architecture: i386

…[중략]…

⑧ 시스템에 새로 만들어진 rsync 패키지를 설치 & 확인

$ sudo dpkg -i rsync_3.0.7-2cn3.deb

dpkg: 경고: rsync 패키지를 3.0.7-2ubuntu3 버전에서 3.0.7-2cn3 버전으로 다운그레이드.

(데이터베이스 읽는중 ...현재 170333개의 파일과 디렉터리가 설치되어 있습니다.)

rsync 3.0.7-2ubuntu3 패키지를 대체할 준비하는 중입니다 (rsync_3.0.7-2cn3.deb 사용) ...

대체되는 rsync 패키지를 푸는 중입니다 ...

rsync (3.0.7-2cn3) 설정하는 중입니다 ...

man-db에 대한 트리거를 처리하는 중입니다 ...

ureadahead에 대한 트리거를 처리하는 중입니다 ...

ureadahead will be reprofiled on next reboot

/* md5sum 파일들을 바탕으로 패키지 파일 검사*/

$ debsums rsync

/usr/bin/rsync OK

/usr/share/doc/rsync/examples/rsyncd.conf OK

/usr/share/doc/rsync/examples/logrotate.conf.rsync OK

/* 새 버전이 정상적으로 설치되었는지 rsync 패키지 정보 확인 */

$ dpkg -l rsync

희망상태=알수없음(U)/설치(I)/지우기(R)/깨끗이(P)/고정(H)

| 상태=아님(N)/설치(I)/설정(C)/풀림(U)/절반설정(F)/일부설치(H)/트리거대기(W)/

|  /     트리거밀림(T)

|/ 오류?=(없음)/다시설치필요(R) (상태, 오류가 대문자=불량)

||/ 이름 버전 설명

+++-=================-=================-==================================================

ii      rsync                              3.0.7-2cn3                     Modified by CN 2011-08-06 to include md5sums.

☞ 이 실습은 사용자 정의 패키지를 만들기 위한 기본적인 부분만을 다룬 것으로,

시스템 해킹을 위해 필요한 실제 작업내용은 포함하지 않았다. 그렇지만, 다음 예제에서 볼 수 있듯이

이렇게 만들어진 패키지도 역시 보통의 데비안 패키지와 같이 설치되고 동작한다.

물론 추가적으로 debsums 작업도 가능해졌다.

(dpkg가 다운그레이드에 대해 말해주므로 주의)

데비안 바이너리 패키지 만들기 하우투 문서 :

http://www.tldp.org/HOWTO/Debian-Binary-Package-Building-HOWTO

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap3 #02] - 리눅스 쉘 사용(1) (쉘 사용자 환경, history, alias)  (0) | 2011.08.06
[Chap3 #01] - 리눅스 가상 콘솔(터미널) 사용  (0) | 2011.08.06
[Chap2 #07] - deb 패키지 만들기  (0) | 2011.08.06
[Chap2 #06] - debsums를 사용하여 설치된 패키지 검증  (0) | 2011.08.06
[Chap2 #05] - aptitude를 사용하여 Software 관리  (0) | 2011.08.05
[Chap2 #04] - dpkg를 사용하여 Software 관리  (0) | 2011.08.05

Posted by devanix

TAGdeb, 데비안 패키지, 패키지 만들기

trackback 6 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/226

2011.08.06 05:46

[Chap2 #06] - debsums를 사용하여 설치된 패키지 검증

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 시스템에 설치되어 있지만 정상적으로 동작하지 않거나 실행조차 되지 않는

바이너리 파일이나 패키지를 만나는 경우. 불안정한 네트워크나 전력 환경 등의

여러 가지 원인으로 인해 패키지가 훼손될 수 있다.

또는 악의적인 의도로 조작한 버전으로 피해를 입힐 목적으로 교체하려고 노력할 때

패키지 속에 포함된 정보와 실제 파일시스템에 존재하는 파일들을 검사해볼 필요가 있다.

debsums 프로그램은 /var/lib/dpkg/info 디렉토리에 있는 md5sum 파일을 바탕으로

모든 설치된 패키지의 MD5 검사를 수행할 수 잇는 데비안 기반의 시스템 유틸리티이다.

▷ 설치 : $ sudo aptitude install debsums

▶ debsums의 일반적 옵션

debsums 명령

내 용

debsums -a

모든 파일들을 검사한다(기본적인 설정파일들을 포함)

debsums -e

패키지 설정 파일들만 검사.

debsums -c

변경된 파일 목록만 표준출력을 통해 보여준다.

debsums -l

md5sum 정보를 가지고 있지 않은 파일들을 보여준다.

debsums -s

에러가 발생한 목록만 보여준다.

debsums <package names>

주어진 패키지에 대한 검사를 수행.

▷ 별다른 옵션 없이 debsums 명령어만 실행할 경우. (시스템에 있는 모든 파일 검사)

$ debsums

/usr/bin/acpi

/usr/share/man/man1/acpi.1.gz

/usr/share/doc/acpi/AUTHORS

…[중략]…

debsums: no md5sums for bsdutils

debsums: no md5sums for bzip2

debsums: no md5sums for cdrecord

…[중략]…

/usr/share/locale-langpack/en_AU/LC_MESSAGES/adduser.mo

/usr/share/locale-langpack/en_AU/LC_MESSAGES/alsa-utils.mo

…[중략]…

OK

OK

OK

REPLACED

OK

☞ 성공하면 오른쪽에 OK 상태 표시.

md5sum 정보가 일치하지 않을 경우 : FAILED 상태 표시.

다른 패키지 파일에 대체 되었을 경우: REPLACE 상태 표시.

▷ -a옵션 : 각각의 패키지에서 배포한 설정파일이 변경되었는지 여부 검사

$ debsums -a

/usr/bin/acpi

/usr/share/man/man1/acpi.1.gz

/usr/share/doc/acpi/AUTHORS

…[중략]…

OK

OK

OK

▷ -e옵션 : 다른 것은 모두 무시하고 오직 설정파일만 검사

$ debsums -e

…[중략]…

/etc/X11/Xresources/x11-common

/etc/X11/Xsession

/etc/X11/rgb.txt

…[중략]…

OK

FAILED

OK

☞ 의도하지 않았거나 부주의하게 수정된 설정파일은 없는지 검사할 수 있는 좋은 방법.

▷ -c옵션 : 시스템에서 변경된 파일만 표준 출력을 통해 보여줌

$ debsums -c

debsums: no md5sums for at

debsums: no md5sums for base-files

debsums: no md5sums for bc

…[중략]…

☞ 위의 명령 실행결과에서 파일들에 대한 md5sum 정보가 없다는 것을 알 수 있다.

▷ -l옵션 : md5sum 정보가 없는 파일 목록을 확인

$ debsums -l

binutils

e2fslibs

g++

gcc-4.5-base

…[중략]…

▷ -s옵션 : 에러가 발생할 경우에만 출력

$ debsums -s

debsums: no md5sums for at

debsums: no md5sums for base-files

debsums: no md5sums for bc

…[중략]…

☞ 에러가 발생하지 않는다면 별다른 출력 없이 조용히 실행.

▷ 해당 패키지에 한해서 검사

$ debsums coreutils

/bin/cat

/bin/chgrp

/bin/chmod

…[중략]…

OK

OK

OK

☞ 해당 패키지가 가진 md5sum 파일에 기술된 파일 목록에 대해서만 검사를 수행.

이 파일은 /var/lib/dpkg/info 디렉토리에서 찾을 수 있다.

☞ 만약 패키지가 md5sum 파일을 가지고 있지 않다면 에러 발생.

$ debsums binutils

debsums: no md5sums for binutils

[ binutils 패키지에서 누락된 md5sum 데이터들을 생성&체크 ]

① md5sum 데이터들을 생성(dpkg, md5sum과 약간의 쉘 프로그래밍 조합 활용)

$ for file in `dpkg -L binutils | grep ^/`; do

> test -f "$file" && md5sum "$file";

> done > binutils.md5sums

☞ 추후 md5sum 검사가 필요할 때에 md5sum -c 옵션과 해당 데이터베이스 파일명을 지정.

$ md5sum -c ./binutils.md5sums

/usr/share/man/man1/ar.1.gz: 성공

/usr/share/man/man1/as.1.gz: 성공

/usr/share/man/man1/elfedit.1.gz: 성공

…[중략]…

②debsums에서binutils.md5sums 파일을 사용하기 위해서는 문제가 발생할 수 있는 부분 즉,

아래와 같이 '/' 문자로 시작되는 파일명부분을, sed를 이용하여 삭제 할 수 있다.

f5fe354fe982a10cf584d5cc175b0a29 /usr/share/man/man1/ar.1.gz

☞ sed를 사용하여 문제가 되는 '/' 부분을 제거후 확인.

$ sed -e 's# /# #g' binutils.md5sums > binutils.debsums

$ cat binutils.debsums

f5fe354fe982a10cf584d5cc175b0a29 usr/share/man/man1/ar.1.gz

이렇게 적절히 수정된 파일을 /var/lib/dpkg/info 디렉토리에 복사해주면, debsums 명령어를 사용하게 됨.

$ sudo mv binutils.debsums /var/lib/dpkg/info/binutils.md5sums

$ debsums binutils

/usr/share/man/man1/ar.1.gz

/usr/share/man/man1/as.1.gz

/usr/share/man/man1/elfedit.1.gz

…[중략]…

OK

OK

OK

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap3 #01] - 리눅스 가상 콘솔(터미널) 사용  (0) | 2011.08.06
[Chap2 #07] - deb 패키지 만들기  (0) | 2011.08.06
[Chap2 #06] - debsums를 사용하여 설치된 패키지 검증  (0) | 2011.08.06
[Chap2 #05] - aptitude를 사용하여 Software 관리  (0) | 2011.08.05
[Chap2 #04] - dpkg를 사용하여 Software 관리  (0) | 2011.08.05
[Chap2 #03] - APT 사용하여 Software 관리  (0) | 2011.08.04

Posted by devanix

TAGdebsums, MD5, md5sum, 패키지 검증

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/225

2011.08.05 17:34

[Chap2 #05] - aptitude를 사용하여 Software 관리

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ dpkg와 APT는 오랫동안 사용되어 온 훌륭한 도구지만, 이들 도구는 여러 측면에서

미묘한 차이를 가지고 있기 때문에 제대로 사용하기 위해서는 상당한 이해가 요구된다.

aptitude 프로그램은 curses 기반의 커맨드라인 툴로 충분히 유연하면서도,

주요 패키지 작업 과정 (패키지 설치나 업그레이드 전에 apt-get update를 실행하는 것과 같은)

을 자동화하여 가능한 쉽게 작업할 수 있도록 해준다.

이러한 이유로 가능하다면 커맨드라인에서는 aptitude 명령어를 사용할 것을 권장.

▶ aptitude의 일반적 기능

aptitude 명령어

설 명

sudo aptitude

curses 인터페이스로 시작. <Ctrl + t>를 사용하면

메뉴에 접근할 수 있으며 q 키는 프로그램을 종료.

aptitude help

aptitude 명령어의 도움말을 출력.

aptitude search <keyword>

주어진 키워드와 일치하는 패키지들을 보여줌.

sudo aptitude update

APT 리포지토리들로부터 사용 가능한 패키지를 업데이트 한다.

sudo aptitude upgrade

모든 패키지를 최신 버전으로 업그레이드 한다.

aptitude show <package>

패키지의 설치여부에 관계없이 주어진 패키지에 대한 정보를 보여줌.

sudo aptitude download <package>

주어진 패키지를 설치하지 않고 다운로드만 받는다.

sudo aptitude clean

/var/cache/apt/archives 디렉토리에 다운로드된

.deb 파일들을 모두 삭제한다.

sudo aptitude autoclean

/var/cache/apt/archives 디렉토리에 있는 오래된

.deb 파일들을 모두 삭제한다. 이 작업은 디스크 공간 낭비를

방지하면서 현재 캐시를 유지할 수 있는 방법이다.

sudo aptitude install <package>

주어진 패키지를 시스템에 설치. 특정 버전을 선택하거나

와일드카드 문자를 사용하기 위한 여러 옵션이 있다.

sudo aptitude remove <package>

시스템으로부터 주어진 패키지를 삭제한다.

sudo patitude purge <package>

패키지 제거와 환경 설정 파일도 함께 삭제.

sudo aptitude dist-upgrade

모든 패키지를 가장 최신 버전으로 업그레이드 하는데,

필요한 경우 패키지를 삭제하거나 추가적으로 설치.

■ aptitude를 사용하여 패키지 관리

## 패키지 업데이트 & 업그레이드 ##

$ sudo aptitude update

…[중략]…

$ sudo aptitude upgrade

…[중략]…

## 패키지 검색 & 정보 질의 ##

$ aptitude search minic

p minicom - friendly menu driven serial communication program

$ aptitude show minicom

Package: minicom

State: not installed

Version: 2.5-1

…[중략]…

## 패키지를 설치하지 않고 다운로드만 받기 ## (해당 디렉토리에 다운로드 받은 파일 존재)

$ sudo aptitude download minicom

Get:1 http://ftp.daum.net/ubuntu/ natty/universe minicom i386 2.5-1 [285 kB]

Fetched 285 kB in 0초 (3,149 kB/s)

## 다운로드 받은 패키지 설치 ##

$ sudo aptitude install minicom

The following NEW packages will be installed:

lrzsz{a} minicom

0 packages upgraded, 2 newly installed, 0 to remove and 1 not upgraded.

Need to get 99.9 kB/385 kB of archives. After unpacking 1,470 kB will be used.

Do you want to continue? [Y/n/?] n

## 패키지 삭제 ##

$ sudo aptitude remove minicom

The following packages will be REMOVED:

lrzsz{u} minicom

0 packages upgraded, 0 newly installed, 2 to remove and 1 not upgraded.

Need to get 0 B of archives. After unpacking 1,470 kB will be freed.

Do you want to continue? [Y/n/?] y

(데이터베이스 읽는중 ...현재 170390개의 파일과 디렉터리가 설치되어 있습니다.)

…[중략]…

## 패키지 캐시 삭제 ## (인스톨 설치시 패키지는 /var/cache/apt/archives에 저장)

(오래된 패키지만 삭제 : sudo aptitude autoclean)

$ ls

aptitude_0.6.3-3.2ubuntu1_i386.deb                                  lock

libboost-iostreams1.42.0_1.42.0-4ubuntu2_i386.deb    lrzsz_0.12.21-5_i386.deb

libcwidget3_0.5.16-3ubuntu2_i386.deb                             minicom_2.5-1_i386.deb

libsigc++-2.0-0c2a_2.2.4.2-1ubuntu1_i386.deb               partial

$ sudo aptitude clean

$ ls

lock                  partial

##### 유용한 옵션 조합 #####

/* -v : 더 많은 정보 제공 (md5sum …등) */

$ aptitude show -v minicom

Package: minicom

State: not installed

…[중략]…

Filename: pool/universe/m/minicom/minicom_2.5-1_i386.deb

MD5sum: 497900daa7807ae0c968d6630219bd4b

…[중략]…

/* -s : 실제 동작은 수행하지 않고, 어떤 작업이 수행되는지 시뮬레이션 */

$ sudo aptitude -s install minicom

The following NEW packages will be installed:

…[중략]…

Do you want to continue? [Y/n/?] y

Would download/install/remove packages.

/* -y : 모든 질문에 미리 Yes답변 */ (되돌리는 기능이 없으므로 신중히 사용)

$ sudo aptitude -vs -y install minicom

The following NEW packages will be installed:

lrzsz{a} minicom

0 packages upgraded, 2 newly installed, 0 to remove and 1 not upgraded.

Need to get 385 kB of archives. After unpacking 1,470 kB will be used.

Inst lrzsz (0.12.21-5 Ubuntu:11.04/natty [i386])

Inst minicom (2.5-1 Ubuntu:11.04/natty [i386])

Conf lrzsz (0.12.21-5 Ubuntu:11.04/natty [i386])

Conf minicom (2.5-1 Ubuntu:11.04/natty [i386])

/* -h : 도움말 기능 (사용 가능한 옵션들을 보여줌) */

$ aptitude -h

aptitude 0.6.3

Usage: aptitude [-S fname] [-u|-i]

aptitude [options] <action> ...

…[중략]…

install - Install/upgrade packages.

remove - Remove packages.

purge - Remove packages and their configuration files.

hold - Place packages on hold.

…[중략]…

Options:

-h This help text.

--no-gui Do not use the GTK GUI even if available.

-s Simulate actions, but do not actually perform them.

-d Only download packages, do not install or remove anything.

-P Always prompt for confirmation or actions.

…[중략]…

▷ moo 옵션 : 이스터에그(Easter eggs) - 즐거움을 주기 위해 프로그램 속에 숨겨져 있는 기능

$ aptitude moo

There are no Easter Eggs in this program.

$ aptitude -v moo

There really are no Easter Eggs in this program.

$ aptitude -vv moo

Didn't I already tell you that there are no Easter Eggs in this program?

$ aptitude -vvv moo

Stop it!

$ aptitude -vvvv moo

Okay, okay, if I give you an Easter Egg, will you go away?

$ aptitude -vvvvv moo

All right, you win.

/----\
-------/        \
/                   \
/                    |
-----------------/                     --------\
----------------------------------------------

…[중략]…

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap2 #07] - deb 패키지 만들기  (0) | 2011.08.06
[Chap2 #06] - debsums를 사용하여 설치된 패키지 검증  (0) | 2011.08.06
[Chap2 #05] - aptitude를 사용하여 Software 관리  (0) | 2011.08.05
[Chap2 #04] - dpkg를 사용하여 Software 관리  (0) | 2011.08.05
[Chap2 #03] - APT 사용하여 Software 관리  (0) | 2011.08.04
[Chap2 #02] - Debian Software Package 사용  (0) | 2011.08.04

Posted by devanix

TAGaptitude, Software 관리, 패키지 관리

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/224

2011.08.05 00:23

[Chap2 #04] - dpkg를 사용하여 Software 관리

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ dpkg 유틸리티는 APT 유틸리티보다 낮은 수준에서 작업을 수행.

APT는 우분투 시스템의 Software를 관리하기 위해 내부적으로는 이 dpkg를 이용한다.

APT와 dpkg의 관계는 레드햇기반 리눅스 배포판에서 yum과 rpm의 관계와 유사.

보통은 APT 명령어가 가진 기능만으로도 충분하다. 그러나 시스템에 있는 특정 파일이 어떤

패키지에 포함되어 있는지 확인하는 등의 작업을 수행하기 위해서라면 dpkg 명령이 필요.

▶ dpkg 유틸리티의 일반적 사용

dpkg 명령어

설 명

dpkg -c <.deb file>

주어진 .deb 파일이 설치한 파일 목록을 보여줌.

(.deb 파일은 '경로/파일명' 형태로 주어져야 함)

dpkg -I <.deb file>

주어진 .deb 파일에 대한 정보를 보여줌.

dpkg -p <package>

패키지에 대한 정보를 보여줌.

dpkg -S <filename>

주어진 파일명 또는 경로가 포함된 패키지들을 검색.

dpkg -l

설치된 패키지 목록을 보여줌.

이 명령은 좀 더 세부적인 정보를 위해 옵션들을 취할 수 있음.

dpkg -L <package>

주어진 패키지로부터 설치된 모든 파일목록을 보여줌.

(물론 패키지가 먼저 설치되어 있어야만 함)

dpkg -s <package>

주어진 패키지의 상태를 보여줌.

sudo dpkg -i <.deb file>

주어진 .deb 파일을 설치.

sudo dpkg -r <package>

시스템으로부터 주어진 패키지를 삭제.

그러나 파일들은 남겨둔다.

sudo dpkg -P <package>

주어진 패키지와 해당 패키지의 설정파일을 삭제.

sudo dpkg -x <.deb file> <directory>

.deb 파일에 포함되어 있는 파일들을 지정된 디렉토리에 풀어 놓음.

(이 명령은 지정된 디렉토리의 퍼미션을 초기화하므로 주의)

sudo dpkg -e <.debfile> <directory>

.deb 파일 내부의 제어스크립트를 지정된 목표 디렉토리에 추출.

■ dpkg를 사용하여 패키지 설치 & 삭제

apt-get 명령어가 저장소(Repository)에서 패키지를 찾거나 다운로드하는 등의 세부사항을 다루는데 반해

dpkg 명령어는 패키지 그 자체에 집중한다.

▷ 실습 준비를 위해 .deb 파일 다운로드.

# apt-get명령에 -d 옵션을 사용하면 다운로드만 받는다. #

$ sudo apt-get -d install minicom

# /var/cache/apt/archives 디렉토리에 .deb 파일을 다운로드 받음. #

$ ls -l /var/cache/apt/archives

lock lrzsz_0.12.21-5_i386.deb minicom_2.5-1_i386.deb

▷ 패키지 설치 & 삭제

## 패키지 설치 ##

$ sudo dpkg -i /var/cache/apt/archives/minicom_2.5-1_i386.deb

Selecting previously deselected package minicom.

…[중략]…

## 패키지 삭제 ##

$ sudo dpkg -r minicom

(데이터베이스 읽는중 ...현재 170237개의 파일과 디렉터리가 설치되어 있습니다.)

minicom 패키지를 지우는 중입니다 ...

## 패키지 설정파일 까지 삭제 ##

$ sudo dpkg -P minicom

(데이터베이스 읽는중 ...현재 170237개의 파일과 디렉터리가 설치되어 있습니다.)

minicom 패키지를 지우는 중입니다 ...

minicom의 설정 파일을 깨끗이 지우는 중입니다 ...

Cannot remove /etc/minicom, please do it manually.

man-db에 대한 트리거를 처리하는 중입니다 ...

■ dpkg를 사용하여 .deb 파일 풀기

우분투 패키지는 .deb라는 단일 파일로 묶여 있다.

.deb 파일은 그 내부에 빌드된 명령어, 관련 파일, 문서, 그리고 소스코드 등 하나 이상의 파일들을 포함.

기본적으로 .deb 파일은 컴퓨터에 설치하길 원하는 파일들로 묶인 아카이브로,

소프트웨어를 식별하기 위한 헤더정보와 제어정보(설명, 체크섬, 빌드정보 등) 등을 포함하고 있다.

$ sudo dpkg -x minicom_2.5-1_i386.deb /tmp/minicom/contents

$ ls /tmp/minicom_contents/

etc usr

■ .deb 패키지 정보 질의

## 패키지 정보 확인 ##

$ dpkg -p minicom

Package: minicom

Priority: optional

Section: comm

Installed-Size: 1164

Maintainer: Ubuntu Developers <[email-masked]>

Architecture: i386

Version: 2.5-1

…[중략]…

## 현재 디렉토리에 있는 .deb 파일 정보 ##

$ dpkg -I minicom_2.5-1_i386.deb

new debian package, version 2.0.

size 285352 bytes: control archive= 3144 bytes.

520 bytes, 13 lines control

4669 bytes, 65 lines md5sums

412 bytes, 20 lines * postinst #!/bin/sh

365 bytes, 20 lines * postrm #!/bin/sh

900 bytes, 39 lines * preinst #!/bin/sh

Package: minicom

…[중략]…

## 시스템에 설치되어 있는 모든 패키지 목록 (한 화면씩) 확인 ##

$ dpkg -l | less

…[중략]…

ii abiword-plugin-grammar 2.8.6-0.3build1 grammar checking plugin for AbiWord

ii abiword-plugin-mathview 2.8.6-0.3build1 equation editor plugin for AbiWord

…[중략]…

## 시스템에 있는 파일이 어떤 패키지에 포함되어 있는지 확인 ##

$ dpkg -S /usr/bin/rsync

rsync: /usr/bin/rsync

$ dpkg -S /sbin/ifconfig

net-tools: /sbin/ifconfig

## 설치된 패키지에 상태 정보 ##

$ dpkg -s rsync

Package: rsync

Status: install ok installed

Priority: optional

Section: net

Installed-Size: 676

Maintainer: Ubuntu Developers <[email-masked]>

…[중략]…

## 로컬 디렉토리에 있는 .deb 파일 내용 ##

$ dpkg -c minicom_2.5-1_i386.deb

drwxr-xr-x root/root 0 2011-02-05 15:31 ./

drwxr-xr-x root/root 0 2011-02-05 15:31 ./usr/

drwxr-xr-x root/root 0 2011-02-05 15:31 ./usr/share/

drwxr-xr-x root/root 0 2011-02-05 15:31 ./usr/share/man/

drwxr-xr-x root/root 0 2011-02-05 15:31 ./usr/share/man/man1/

…[중략]…

## 패키지가 시스템에 설치한 파일 목록 ##

$ dpkg -L minicom

/.

/usr

/usr/share

/usr/share/man

…[중략]…

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap2 #06] - debsums를 사용하여 설치된 패키지 검증  (0) | 2011.08.06
[Chap2 #05] - aptitude를 사용하여 Software 관리  (0) | 2011.08.05
[Chap2 #04] - dpkg를 사용하여 Software 관리  (0) | 2011.08.05
[Chap2 #03] - APT 사용하여 Software 관리  (0) | 2011.08.04
[Chap2 #02] - Debian Software Package 사용  (0) | 2011.08.04
[Chap1 #04] - 리눅스 참고 정보(help, man, info)  (0) | 2011.08.04

Posted by devanix

TAGdeb, debian package, dpkg

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/223

2011.08.04 19:22

[Chap2 #03] - APT 사용하여 Software 관리

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 실질적으로 APT는 dpkg와 함께 동작하지만, 데비안 시스템에서 필요한

소프트웨어 검색, 다운로드, 설치, 업그레이드 그리고 확인 등

대부분의 패키지 관리 작업은 APT 유틸리티만으로도 충분하다.

▶ APT(Advenced Package Tool) 일반적 사용

APT 명령어

설 명

apt-get - APT package handling utility

sudo apt-get update

/etc/apt/sources.list 를 참조해 사용할 수 있는

패키지 데이터베이스를 업데이트한다.

(source.list 파일을 변경했다면 반드시 이 명령을 실행)

sudo apt-get check

시스템 무결성 검사.

sudo apt-get install <package>

주어진 패키지명을 데이터베이스에서 찾을 수 있다면,

해당 패키지를 다운로드받아 설치.

(APT 버전 0.6부터, 이 명령어는 자동적으로 GPG키를 사용해

패키지의 신뢰성을 검증)

sudo apt-get -f install

깨진 패키지를 위해 정상여부를 검사.

(이 명령어는 의존성 문제에 대한 메시지 수정을 시도)

sudo apt-get -d install <package>

패키지를 설치하지 않고 /var/cache/apt/archives

디렉토리에 다운로드만 받음.

sudo apt-get clean

디스크 공간 확보를 위해 /var/cache/apt/archives

디렉토리에 캐시되어 있는 패키지들을 모두 삭제.

sudo apt-get autoclean

불완전하게 다운로드된 패키지나 오래된 패키지를

삭제하고자 할 때 실행.

(부분적으로 디스크 공간을 절약할 수 있다)

sudo apt-get upgrade

설치되어 있는 모든 패키지에 대한 최신 업데이트를

검사한 후, 다운로드 받아 설치.

sudo apt-get dist-upgrade

전체 시스템을 새로운 버전으로 업그레이드 한다.

여기에는 패키지 삭제도 포함되어 있다. (이 방법은

시스템을 업데이트하는 방법으로는 잘 사용되지 않음)

sudo apt-get --purge remove <package>

주어진 패키지와 그 설정파일을 삭제.

(--purge 옵션을 사용하면 설정파일까지 삭제)

apt-cache - query the APT cache

apt-cache search <keyword>

패키지 데이터베이스에서 주어진 키워드를

대소문자 구분 없이 검색.

(결과로 키워드를 포함하고 있는 패키지명과 설명이 출력)

apt-cache showpkg <package>

단일 패키지에 대한 일반적인 정보 출력.

apt-cache show <package>

주어진 패키지명에 해당하는 소프트웨어에 대한 정보 출력.

apt-cache stats

설치된 모든 패키지에 대한 상태정보를 출력.

apt-cache dump

캐시에 있는 모든 패키지를 간단한 형식으로 출력.

apt-cache dumpavail

표준출력으로 유효한 파일들을 출력.

apt-cache depends

패키지가 설치되어 있는지 여부에 관계없이,

패키지에 대한 의존성을 출력.

apt-cache pkgnames

시스템에 설치되어 있는 모든 패키지 목록을 보여줌.

apt-config - APT Configuration Query program

apt-config -v

설치된 APT 유틸리티의 버전정보 출력.

apt-key - APT key management utility

sudo apt-key list

APT가 알고 있는 gpg 키 목록을 출력.

sudo apt-key add <file>

APT에 서명키 등록.

sudo apt-key del <keyid>

신뢰할수 있는 키 리스트에서 키를 제거.

■ APT리포지토리와 써드파티 서명키 추가

Google에서 만들어 공개한 디지털 사진 공유 및 관리도구인

Picasa 프로그램(http://picasa.google.com/)을 설치해 보자.

① 구글 리포지토리를 사용하기 위해 텍스트 에디터로 /etc/apt/sources.list 파일 하단에 두 라인 추가.

$ sudo vi /etc/apt/sources.list

…

#cn - added for google software

deb http://dl.google.com/linux/deb/ stable non-free

▷ 변경에 대한 코멘트를 남기고 싶다면 다음에 보이는 바와 같이 #cn을 사용.

▷ 첫번째 필드- deb : 빌드된 패키지, deb-src: 소스 패키지

▷ 두번째 필드 - 배포판에 대한 Repository의 URL 주소.

▷ 세번째 필드 - 배포(distribution)

▷ 나머지 필드 - 소프트웨어 컴포넌트 기술

② Google Package에 대한 인증을 위해 먼저 서명키를 다운.

wget https://dl-ssl.google.com/linux/linux_signing_key.pub -O /tmp/key.pub

▷ wget 명령으로 Google 사이트로부터 파일을 다운로드 받아 저장.

(공개 암호화 키는 구글 사이트로부터 다운로드 받은 패키지 검증에 사용)

③ 다음 apt-key 명령어를 사용해 APT에 서명키를 등록.

$ sudo apt-key add /tmp/key.pub

[sudo] password for devanix:

OK

④ Google 디지털 서명키가 정상적으로 등록되었는지 확인.

$ sudo apt-key list

/etc/apt/trusted.gpg

-------------------------

…[중략]…

pub 1024D/7FAC5991 2007-03-08

uid Google, Inc. Linux Package Signing Key <[email-masked]>

sub 2048g/C07CB649 2007-03-08

⑤ 다음으로, APT 패키지 업데이트를 통해 새로운 리포지토리를 활성화 한다.

$ sudo apt-get update

■ APT를 사용하여 패키지 검색 & 설치 & 업그레이드

위 과정에서 마치고 새로운 리포지토리가 준비되었다면

해당 리포지토리에서 제공하는 새로운 소프트웨어를 검색, 설치할 수 있다.

## 패키지 검색 ##

$ apt-cache search picasa

…[중략]…

picasa - Image management application from Google

## 패키지 정보 확인 ##

$ apt-cache show picasa

Package: picasa

Version: 2.7.3736-15

Architecture: i386

Depends: libc6 (>= 2.2), libasound2, zlib1g, bash

…[중략]…

## 패키지 의존성 확인 ##

$ apt-cache depends picasa

picasa

의존: libc6

의존: libasound2

liboss-salsa-asound2

…[중략]…

## 패키지 설치 ## (이미 설치 되어 있는 경우 - 자동적으로 최신 버전으로 업데이트)

$ sudo apt-get install picasa

Reading package lists… Done

…[중략]…

## 업데이트 목록 확인 ##

$ sudo apt-get update

## 설치되어 있는 패키지 모두 업그레이드 ##

$ sudo apt-get upgrade

■ APT를 사용하여 패키지 삭제 & 캐시정보 삭제

## 패키지 삭제 ##

$ sudo apt-get rermove picasa

## 패키지 캐시정보 검색&삭제 ##

$ find /var/cache/apt/ -name \*.deb

/var/cache/apt/archives/picasa_2.7.3736-15_i386.deb

…[중략]…

$ sudo apt-get clean

▷ 다운로드한 패키지는 /var/cache/apt/에 캐시해 두는데,

이들 패키지가 다시 필요할 경우 다운로드 시간을 절약할 수 있다.

패키지 캐시는 결과적으로 많은 디스크 공간을 사용하게 된다.

물론 이 캐시도 삭제할 수 있지만, 나중에 의존성 문제 등 삭제된 패키지가 필요하게 되면

다시 다운로드받아야 한다는 단점이 있다.

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap2 #05] - aptitude를 사용하여 Software 관리  (0) | 2011.08.05
[Chap2 #04] - dpkg를 사용하여 Software 관리  (0) | 2011.08.05
[Chap2 #03] - APT 사용하여 Software 관리  (0) | 2011.08.04
[Chap2 #02] - Debian Software Package 사용  (0) | 2011.08.04
[Chap1 #04] - 리눅스 참고 정보(help, man, info)  (0) | 2011.08.04
[Chap1 #03] - 리눅스 명령어 찾기  (0) | 2011.08.04

Posted by devanix

TAGAPT, apt-cache, apt-config, apt-get, apt-key, 패키지 관리

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/222

2011.08.04 06:15

[Chap2 #02] - Debian Software Package 사용

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 우분투는 데비안 기반 시스템의 표준 패키징 방식인 데비안 패키지 포맷(실제로는 ar 아카이브 파일)을 사용.

소프트웨어는 하나 이상의 데비안 패키지(.deb 확장자) 컴포넌트로 분리될 수 있는데,

여기에는 소프트웨어 파일만 저장되어 있는 것이 아니라 패키지에 대한 많은 정보를 포함 시킬 수 있다.

이러한 메타데이터는 소프트웨어의 의존성, 컴퓨터 아키텍처, 벤더, 크기, 라이센스, 설명문 등 다양한 정보를 포함.

우분투 시스템을 설치한 후, 시스템의 사용목적에 따라 필요한 .deb 파일을 추가, 삭제, 관리할 수 있다.

우분투를 비롯한 그밖의 데비안 기반 시스템에서는 대부분 소프트웨어 설치를 위해 .deb 파일을 사용.

aptitude 툴은 그때 그때 필요한 소프트웨어를 다루는 데 아주 유용.

그러나 패키지 관리를 위해 매우 다양한 툴이 개발되어 있고 일부는 함께 사용되는 경우도 있다.

▶ 패키지 관리 툴

APT

온라인 리포지토리에서 패키지를 다운로드 받고 설치하는 데 사용되는 프로그램.

APT 명령어(apt-get, apt-cache 등)들은 로컬에서 패키지를 설치하는 데 사용할 수도 있지만,

정상적인 사용을 위해서는 온라인 환경에서 사용해야 함.

dpkg

CD-ROM이나 다른 디스크 저장장치에 있는 .deb 파일을 제어하는 경우 사용.

시스템 소프트웨어에 대한 설정, 설치, 그리고 정보 획득을 위한 옵션들을 가짐.

aptitude

커맨드라인 명령어로 온라인 리포지토리와의 작업을 위해 사용.

aptitude 도구는 APT나 dpkg를 사용할 경우 사용자가 직접 해주어야 하는 번거로운

작업들을 자동화해주기 때문에 사용자의 첫 번째 패키지툴로써 추천된다.

▷ 시냅틱 패키지 관리자(Synaptic Package Manager):

데비안 패키지 관리 시스템인 APT(Advanced Packaging Tool)의 그래픽 유저 인터페이스(GUI) 프론트엔드 프로그램.

일반적으로 deb 패키지를 기반으로 한 시스템에서 이용하지만, RPM을 베이스로 한 시스템에서도 이용할 수 있다.

소프트웨어 패키지의 설치, 삭제 그리고 업그레이드 및 소프트웨어 저장소(software repository)를 추가할 수 있다.

▷ APT 하우투 문서 : http://www.debian.org/doc/manuals/apt-howto

▷ 다른 리눅스 배포판들도 APT와 비슷한 패키징 시스템을 사용.

- 레드햇 기반의 배포판들의 경우 : yum, rpm, urpmi, smart와 같은 소프트웨어 관리 툴을 사용.

▶ 우분투(Ubuntu)에서 소프트웨어의 종류.

▷ 사용가능한 전체 패키지 수:

$ apt-cache stats

전체 패키지 이름 : 42450 (849 k)

전체 패키지 구조: 42450 (2,038 k)

일반 패키지: 32601

…[중략]…

앞에서 볼 수 있듯이 우분투에서는 기본적으로 수만 가지가 넘는 소프트웨어 패키지를 사용할 수 있다.

데비안 커뮤니티에서는 이들 패키지에 재배포 가능한 소프트웨어만 포함될 수 있도록 지속적으로 노력하고 있다.

비록 데비안이 자유 소프트웨어를 신뢰하고 있지만, 사람들이 자신의 컴퓨터에

독점 소프트웨어를 설치해야 하는 경우도 있다. 따라서 데비안에서는 독점 소프트웨어가

주요 배포판에 포함되지는 않더라도 가능한 한 언제든지 이들을 지원할 것이다.

이러한 소프트웨어는 보통 FTP 사이트의 non-free 디렉토리에서 사용할 수 있다.

우리가 직접 배포할 수는 없기 때문에 개인이 직접 설치하는 독점 소프트웨어의 수가 증가하고 있다.

이와 유사하게 Canonical사에서도 우분투 소프트웨어를 다음과 같이 네 개의 카테고리로 나누어 제공.

(http://www.ubuntu.com/community/ubuntustory/licensing)

main

우분투 팀에 의해 지원되며 자유롭게 배포할 수 있는 소프트웨어가 포함.

우분투가 설치될 때 이들 소프트웨어 중 상당수가 설치.

restricted

완전한 자유 라이선스 소프트웨어는 아니지만, 우분투팀에 의해 지원되며

많은 리눅스 시스템에서 일반적으로 사용되고 있는 소프트웨어가 포함

universe

리눅스 세계에서 사용할 수 있는 거의 대부분의 오픈소스 소프트웨어를 포함.

universe 카테고리의 소프트웨어는 자유 라이선스일 수도 있고 아닐 수도 있으며

보안에 대한 수정이나 자원을 보장받을 수는 없다.

multiverse

우분투의 핵심 라이선스 정책에 준하는 자유 소프트웨어가 아닌 소프트웨어를 포함.

이 카테고리의 소프트웨어는 어떠한 지원도 받지 못하며 라이선스의 적법성도

개인이 스스로 확인해야 한다.

▷ 서버와 같이 안정적인 서비스가 중시되는 시스템인 경우 가급적 universe, multiverse 카테고리 사용을 피한다.

[ 로케일 에러 메시지 다루기 ]

만약 우분투(Feisty Fawn)의 커맨드라인 환경에서 패키지 설치 작업을 수행하고 있다면,

다음과 유사한 로케일 에러 메시지를 접하게 될 것이다.

perl: warning: Setting locale failed.

perl: warning: Please check that your locale settings:

locale: Cannot set LC_CTYPE to default locale: No such file or directory

이러한 에러는 일반적으로 설치된 언어 설정과 관련된 문제이거나

국제화된 인코딩에 관련된 문제인 경우가 많다. 이 문제에 대한 한 가지 만족할 만한 해결 방법은

LC_ALL 환경변수의 값을LANG 변수의 값과 동일하게 설정하는 것.

$ export LC_ALL="$LANG"

▷ ~/.bashrc 파일에 해당 명령을 입력하면 local 또는 ssh 쉘이 실행될 때마다 자동 실행.

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap2 #04] - dpkg를 사용하여 Software 관리  (0) | 2011.08.05
[Chap2 #03] - APT 사용하여 Software 관리  (0) | 2011.08.04
[Chap2 #02] - Debian Software Package 사용  (0) | 2011.08.04
[Chap1 #04] - 리눅스 참고 정보(help, man, info)  (0) | 2011.08.04
[Chap1 #03] - 리눅스 명령어 찾기  (0) | 2011.08.04
[Chap1 #01] - 우분투, 데비안, 그리고 리눅스  (0) | 2011.08.03

Posted by devanix

TAGAPT, aptitude, dpkg, 우분투 소프트웨어 패키지, 패키지 관리 툴

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/221

2011.08.04 03:40

[Chap1 #04] - 리눅스 참고 정보(help, man, info)

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 전통적인 리눅스와 유닉스 문서들은 모두 맨 페이지(man pages)라고 하는 매뉴얼 페이지로 만들어져 있다.

이후에 GNU info 명령어를 통해 조금 더 정교한 문서화 방법이 제안되었다.

이렇듯 각각의 명령어는 자기 자신을 위한 다양한 형태의 도움말을 가지고 있다.

맨 페이지는 시스템 컴포넌트 지향적인 참고자료이다. 시스템에 설치되어 있는 거의 모든 명령어들에 대한

맨 페이지들뿐만 아니라 디바이스, 파일 포맷, 시스템, 개발자 정보, 그리고 리눅스 시스템의 많은 다른

컴포넌트에 대해서도 문서화되어 있다. 전체 소프트웨어 패키지의 설명서는 전통적으로

/usr/share/doc 디렉토리의 하위 디렉토리에 구분되어 저장.

우분투에서는 이들 문서 대부분이 압축되어 있기 때문에 문서를 읽으려면 먼저 압축을 풀어야 한다.

이 작업은 gzip 명령어를 이용해 수행(gzip은 파일의 내용을 출력할 뿐 디스크에 압축을 풀어놓지 않음)

mount 명령어에 대한 문서 압축을 해제하기:

$ gzip -dc /usr/share/doc/mount/README.mount.gz

mount/umount for Linux 0.97.3 and later.

…

◈ 도움말(help) 이용하기

리눅스 시스템의 거의 모든 명령어들은 자체적으로 대략적인 사용 정보를 담고 있다.

보통 명령어와 -h 또는 --help 옵션을 사용.

$ ls --help

Usage: ls [OPTION]... [FILE]...

List information about the FILEs (the current directory by default).

Sort entries alphabetically if none of -cftuvSUX nor --sort.

Mandatory arguments to long options are mandatory for short options too.

-a, --all do not ignore entries starting with .

-A, --almost-all do not list implied . and ..

…[중략]…

card 명령을 사용하여 도움말을 기본 프린터로 직접 출력.

evince 프로그램과 같은 문서뷰어를 통해 다시 볼 수 있는 포스트스크립트 파일로 저장 가능.

ps2pdf 유틸리티를 이용해 PDF 파일로 변환 가능

◈ 맨 페이지(man) 사용하기

$ man man

Reformatting man(1), please wait…

…

▶ 맨 페이지의 섹션:

번 호

매뉴얼의 종류

1

실행 가능한 프로그램이나 쉘 명령어

2

시스템 콜(커널에서 제공하는 기능)

3

라이브러리 콜(프로그램 라이브러리 기능)

4

특별한 파일들(일반적으로 /dev/ 디렉토리에 있는 파일)

5

파일 포맷과 /etc/passwd와 같은 파일 명명규칙

6

게임

7

그 외의 여러 가지것들(매크로 패키지와 명명규칙 등을 포함)

8

시스템 관리 명령어(일반적으로 root 유저를 위한 명령어)

9

커널 루틴[비 표준]

섹션이란: 맨 페이지를 주제별로 그룹화 하는 방법

▶ man 명령어 옵션:

옵 션

설 명

man -a uname

uname에 대한 모든 맨 페이지 섹션을 보여줌

man 2 uname

uname에 대한 섹션 2의 맨 페이지를 보여줌

man uname -P more

uname 맨 페이지를 more 명령어를 사용하여 페이지 단위로 보여줌

man -f uname

whatis 명령어 수행결과와 동일(키워드와 동일한 맨 페이지만 출력)

man -k crontab

apropos 명령어 수행결과와 동일(키워드가 포함된 맨 페이지 출력)

man -S 2 uname

검색할 매뉴얼 섹션들을 콜론으로 구분하여 지정.

◈ info 문서 사용하기

경우에 따라 개발자들은 info 데이터베이스에 명령어, 파일 포맷, 디바이스 또는 다른 리눅스 컴퓨넌트에

대한 좀 더 자세한 설명, 예를 들어 온라인 매뉴얼 페이지에 대한 링크 정보 등을 입력해 놓는다.

단순히 info 명령어를 입력하거나, 특정 컴포넌트를 열어 info 데이터베이스에 접근할 수 있다.

(q를 사용하면 종료)

예) ls 명령어에 대한 info 정보 :

$ info ls

이동 : Page Up, Page Down 상,하,좌,우 방향키를 이용.

info 데이터베이스가 사용하는 파일 : /usr/share/info디렉토리에 저장.

▶ info 화면에서 이동하기

키스트로크

이 동

?

info 화면에서 사용되는 기본적인 명령들을 보여줌.

Shift+l

현재 화면에서 바로 이전 노드로 이동.

n, p, u

순서대로, 다음, 이전, 그리고 위 노드로 이동.

Enter

커서가 있는 곳에 하이퍼링크를 따라 이동.

Shift+r

참조 위치를 따라간다.

q or Shift+q

info 유틸리티를 종료하고 빠져나감.

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap2 #03] - APT 사용하여 Software 관리  (0) | 2011.08.04
[Chap2 #02] - Debian Software Package 사용  (0) | 2011.08.04
[Chap1 #04] - 리눅스 참고 정보(help, man, info)  (0) | 2011.08.04
[Chap1 #03] - 리눅스 명령어 찾기  (0) | 2011.08.04
[Chap1 #01] - 우분투, 데비안, 그리고 리눅스  (0) | 2011.08.03
UBUNTU LINUX TOOLBOX  (0) | 2011.08.03

Posted by devanix

TAGHELP, info, man, 도움말, 매뉴얼 페이지, 맨 페이지

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/220

2011.08.04 00:27

[Chap1 #03] - 리눅스 명령어 찾기

컴퓨터 서적 정리/Ubuntu Linux Toolbox

▶ 명령어 에러 메시지의 여러 유형

▷ 오타 등 명령어를 잘못 입력 또는 지정된 디렉토리에 존재하지 않는 경우(PATH 변수)

-bash: sillycommand: command not found

또는 잘못된 명령이지만 비슷한 명령이 존재 하는 경우.

No command 'xxx' found, did you mean:

Command 'xdx' from package 'xdx' (universe)

Command 'x2x' from package 'x2x' (universe)

Command 'xxd' from package 'vim-common' (main)

xxx: command not found

▷ 해당 명령어가 root 계정에만 사용 가능한 경우(sudo 또는 그와 비슷한 방법을 사용)

- 해당 프로그램마다 각종 에러 메시지가 틀림.

▷ 명령어 또는 명령어가 포함된 우분투 패키지가 설치되어 있지 않는 경우.

The Program 'nmap' is currently not installed. You can install it by typing:

sudo apt-get install nmap

▶ 설치된 명령어를 찾기 위한 일반적인 리눅스 명령어들:

명령어와 출력결과의 예

설명

$ echo $PATH

/usr/local/bin:/usr/sbin:/usr/bin:..[생량]…

현재 path 변수의 내용을 보여줌.

$ which mount

/bin/mount

PATH에서 첫 번째로 검색된 mount 명령어를 보여줌.

$ find /usr -name umount

/usr/lib/klibc/bin/umount

/usr 파일 시스템에서 umount 문자열을 가진 파일

또는 디렉토리를 찾는다.

$ whereis mount

mount: /bin/mount /usr/share/man/man8/mount.8.gz

mount 명령어에 대한 첫 번째 실행 파일과

맨 페이지를 보여준다.

$ locate mount

…

/usr/bin/fdmountd

locate 명령어를 사용하여(설정되어 있는) 디렉토리

목록에서 mount를 검색.

$ apropos umount

…

umount(8) - unmount file systems

맨 페이지 설명에서 입력된 키워드인 umount를

찾는다.

$ man 8 umount

Reformatting umount(8), please wait…

맨 페이지 섹션 8에 있는 umount 맨 페이지를 본다.

(q를 입력해 종료)

▶설치된 명령어를 찾기 위한 우분투 . 데비안 기반의 명령어들:

명령어와 출력결과의 예

설명

$ apt-cache search umount

…

gnome-mount - wrapper for (un)mounting and ejecting…

패키지 캐시 목록에서 umount에 대한 명령어 또는

설명이 포함된 패키지를 찾는다.

$ dpkg-query -S umount

…

initscripts: /etc/init.d/umountnfs.sh

설치된 패키지에서 파일명에 umount를 포함하고

있는 패키지를 보여준다.

$ dpkg -L initscripts

…

/bin/mountpoint

패키지에 포함된 파일 목록을 보여준다.

$ sudo apt-get update

password:

Get:1 http://security.ubuntu.com feisty-security Relase…

…

패키지 캐시 목록을 업데이트 한다.

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap2 #03] - APT 사용하여 Software 관리  (0) | 2011.08.04
[Chap2 #02] - Debian Software Package 사용  (0) | 2011.08.04
[Chap1 #04] - 리눅스 참고 정보(help, man, info)  (0) | 2011.08.04
[Chap1 #03] - 리눅스 명령어 찾기  (0) | 2011.08.04
[Chap1 #01] - 우분투, 데비안, 그리고 리눅스  (0) | 2011.08.03
UBUNTU LINUX TOOLBOX  (0) | 2011.08.03

Posted by devanix

TAG리눅스 명령어, 리눅스 명령어 찾기, 명령어 에러, 명령어 찾기

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/219

2011.08.03 22:21

[Chap1 #01] - 우분투, 데비안, 그리고 리눅스

컴퓨터 서적 정리/Ubuntu Linux Toolbox

♧ 우분투는 데비안 GNU/리눅스(www.debian.org)에 기반한 운영체제. 1990년대 초부터

시작되어 이미 성숙단계에 들어선 데비안은 안정성과 보안성 측면에서 선도적인 리눅스

배포판으로 여겨지고 있다. 자유 소프트웨어의 기준을 엄격하게 준수하며 기여함.

▶ 배포판

Xubuntu

우분투를 기반으로 한 Xface 데스크탑 환경의 시스템

Kubuntu

우분투를 기반으로 한 KDE 데스크탑 환경의 시스템.

Lubuntu

우분투를 기반으로 한 LXDE 데스크탑 환경의 가벼운 시스템.

Edubuntu

교육적 활용에 초점을 둔 우분투 버전.

Knoppix

데비안을 기반으로 한 KDE 데스크탑 지향의 라이브 CD

Kanotix

데비안 기반의 라이브 CD

Damn Small Linux

Knoppix 기반의 작은 라이브 CD(50 MB)

Mepis

우분투와 데비안에 기반한 데스크탑 라이브 CD

▶ 우분투와 다른 리눅스 배포판 비교

우분투 시스템과 레드햇 엔터프라이즈 리눅스 또는 페도라 시스템에 커맨드 라인으로 로그인했다면

아주 약간의 차이만 느껴질 것이다. 두 시스템은 모두 공통의 디렉토리들과 유틸리티를 가지고 있고

기능 측면에서는 근본적으로 동일하다.

▷ 차이점 :

- 설치프로그램, 설치할 개별 패키지 선택, 설정 옵션등.

- 소프트웨어 관리툴 (데비안 기반 : APT(Advenced Package Tool) 계열 유틸)

- 룩앤필(Look-and-feel)관점 (초기화, 로그인 화면, 기본 데스크탑, 바탕화면, 아이콘 모음등..)

- 우분투의 경우 root계정이 신중하게 사용되도록 제한(su 대신 sudo 권장)

▶ 우분투 리소스 찾기

ubuntuforums.org

웹 포럼이자 소셜 네트워크인 이곳은 다양한 우분투 사용자와 그들을

지원하는 인력을 위한 커뮤니티 공간.

www.ubuntu.com/support

공식적으로 우분투를 지원하고 있는 Canonical사로부터 유료 지원을

제공받을 수 있는곳. 만약 포럼을 검색하거나 답변을 기다릴 시간이

없거나 보다 신속한 지원을 원하는 경우, 한 달에 약 20달러의 비용

으로Canonical사로부터 전화, 이메일 그리고 웹을 통한 지원을 받을

수 있다. 또한 기업과 기업 사용자를 위한 우분투 트레이닝도 제공.

help.ubuntu.com

각 버전에 대한 공식적인 최신 온라인 문서를 제공.

새로운 우분투 버전이 릴리즈된다면 해당 버전에 추가된 새로운

기능이나 달라진 내용이 무엇인지 이곳에서 찾을 수 있다.

screencasts.ubuntu.com

프린터 설정에서부터 삼바 파일 공유, 우분투 시스템을 최상의 상태로

유지할 수 있는 업데이트 작업까지 우분투와 관련되 다양한 사용법이

기록된 데스크탑 세션을 볼 수 있다. 이 사이트에 기여하고 싶은

우분투 사용자라면 Ubuntu Screencast Launchpad Team에

가입을 권한다.

lists.ubuntu.com/mailman/

listinfo/ubuntu-users

우분투 사용자들과 이메일을 통해 토론하고 함께 문제를 해결하고자

한다면, 우분투 사용자 메일링리스트에 가입. 우분투에 관한 것이라면

무엇이든 제안할 수 있다. 축적된 과거 자료를 보고자 한다면

https://lists.ubuntu.com/archives/ubuntu-users 참조.

wiki.ubuntu.com/IRCResourcePage

IRC 무료 채팅을 통해서 실시간으로 도움을 받고 싶다면 우분투 IRC

리소스 페이지를 방문한다. IRC 가이드라인, 클라이언트 프로그램,

채팅 서버 등에 대한 정보를 제공하고 있다. IRC를 통한 채팅 경험이

없다면 Ubuntu Code of Conduct page

(www.ubuntulinux.org/community/conduct/) 도움을 구한다.

www.linux-usb.org

리눅스와 호환된다고 알려진 USB 디바이스에 대한 정보를 공유.

이곳을 통해 USB 디바이스의 제조회사, 모델, 이름을 검색해볼 수

있으며 리눅스 환경에서의 사용 방법 등에 관한 정보도 얻을 수 있음.

www.linuxfoundation.org

리눅스 성장과 발전을 위한 비영리 단체

www.sane-project.org

SANE(Sacnner Access Now Easy)는 리눅스 환경에서의 문서

스캐닝에 초점을 맞춘 사이트. 만약 리눅스에서 스캐너 또는

스캐닝 기능이 포함된 복합기를 사용하고자 한다면, 이곳에서

리눅스를 적절히 지원 하고 있는 제조사를 찾아볼 수 있다.

tldp.org

리눅스 문서화 프로젝트는 리눅스 대한 각종 안내서, 하우투

문서 그리고 FAQ 등의 온라인 문서 보관소.

▶ 우분투 소프트웨어

우분투 패키지 웹사이트 : http://packages.ubuntu.com/

시냅틱(Synaptic), APT, 그리고 업데이트 관리자 같은 표준툴들은 대부분 동일한 소프트웨어 설치 방법을 사용.

공식적으로 우분투용 패키지를 제공하지 않는 소프트웨어나 실험적인 소프트웨어가 필요한 경우라도,

대부분의 패키지들은 MD5sum 또는 GPG 키를 제공하기 때문에 다운로드받은 소프트웨어의 위조 여부

를 검증해볼 수 있다 - http://www.debian-administration.org/articles/375

(비표준 소프트웨어 사용과 관련해서 호환성 문제가 발생하거나 업그레이드 작업의 문제가 발생할 수 있음.)

▷ 공식적인 패키지 이외의 소프트웨어들을 살표볼 수 있는 웹사이트들.

www.happypenguin.org

리눅스 게임 창고. (다양한 리눅스 환경의 게임들)

www.freshmeat.net

유닉스와 크로스플랫폼 소프트웨어, 테마, 액세서리 프로그램, 팜용

소프트웨어까지 방대한 양의 소프트웨어 제공.

www.sourceforge.net

오픈소스 개발자들이 함께 새로운 프로젝트를 시작하고자 한다면

도움을 받을 수 있다. 프로젝트 개설하면 프로젝트 관리 툴, 리소스,

사용자와의 의사소통 및 코드 관리를 위한 툴뿐 아니라 프로젝트를

위한 웹 공간까지 사용할 수 있다.

www.linux.org/apps

Linux.org는 리눅스 운동에 대한 정보를 제공하기 위해 1994년부터

운영되어 온 웹사이트. 모든 리눅스에 대한 정보의 보고로서 성장.

특히 애플리케이션 섹션은 리눅스 시스템에서 사용 가능한 광범위하고

다양한 소프트웨어를 안내할 것이다.

'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글

[Chap2 #03] - APT 사용하여 Software 관리  (0) | 2011.08.04
[Chap2 #02] - Debian Software Package 사용  (0) | 2011.08.04
[Chap1 #04] - 리눅스 참고 정보(help, man, info)  (0) | 2011.08.04
[Chap1 #03] - 리눅스 명령어 찾기  (0) | 2011.08.04
[Chap1 #01] - 우분투, 데비안, 그리고 리눅스  (0) | 2011.08.03
UBUNTU LINUX TOOLBOX  (0) | 2011.08.03

Posted by devanix

TAGubuntu, 소프트웨어, 우분투 리소스, 우분투 배포판

trackback 0 comment 0

트랙백 주소 - http://devanix.tistory.com/trackback/218

이전123 다음

home tag media location guest admin write

Total 416,640

Today 92

Yesterday 389

가입하기  RSS FEED
devanix blog is powered by Daum / designed by Tistory

devanix

카테고리

U&L Developer˚ε♡з。 (230)

예제 코드 & 코드 조각 (6)

Programming (31)

C (7)

Python (17)

Shell Script (6)

API 및 라이브러리 (26)

MySQL C API (7)

C 라이브러리 함수 (19)

Unix & Linux (33)

설치 및 활용 (6)

문제 해결 (2)

General Commands (8)

Linux Programming (7)

Essential Tools (12)

VIM - Vi IMproved (5)

Network (2)

DBMS(Database) (4)

컴퓨터 서적 정리 (69)

Binary Hacks (21)

Ubuntu Linux Toolbox (41)

좋은 프로그래밍 습관 (7)

컴퓨터 문서 모음 (8)

유닉스 & 리눅스 (2)

네트워크 프로그래밍 (4)

시스템 프로그래밍 (2)

워게임(WarGame) (38)

BOF원정대(LOF) (22)

PythonChallenge (16)

태그목록

tail 파일 덤프 CURL ubuntu Linux WarGame 오브젝트 파일 APT Binary Hacks dpkg atexit deb IT 서적 mysql c api LinkedList fstat BOF 원정대 공유 라이브러리 pythonchallenge archive 파이썬 vi 역어셈블 MD5 python challenge Python GCC objdump readelf uname md5sum 빌트인 VIM dump 정적 라이브러리 lstat vim plugin bzip2 패키지 관리 aptitude

글 보관함

2012/03 (1)

2011/12 (2)

2011/11 (10)

2011/10 (11)

2011/09 (20)

최근에 올라온 글

우분투(Ubuntu)에서...

ftplib(FTP protoco...

넷캣(Netcat) 간단... (1)

파이썬 – 날짜시간...

파이썬 – 시간(tim...

공지사항

티스토리 초대장 배포 합니다(4장)

링크

The Linux Cross Re...

The C++ Resources...

SoftPedia.

Simples (심플스).

GNU Manuals Online.

tuhs.

달력

201602  이전달 다음달

« 2016/02 »

일 | 월 | 화 | 수 | 목 | 금 | 토
| 1 | 2 | 3 | 4 | 5 | 6
7 | 8 | 9 | 10 | 11 | 12 | 13
14 | 15 | 16 | 17 | 18 | 19 | 20
21 | 22 | 23 | 24 | 25 | 26 | 27
28 | 29 | | | | |

티스토리 툴바

Daum

Tistory

로그인