2010. 10. 15. 12:51

APT 명령으로 관리하기

Ubuntu에서는 주로 APT(Advanced Package Tool)과 dpkg(Debian package)로 SW를 관리합니다.
우선 Ubuntu, Debian, Redhat, Linux의 관계 부터 알려드립니다.

  • Ubuntu는 Debian GNU/Linux(www.debian.org/)를 기반으로 한 OS이다.
  • Debian은 90년대 초부터 안정성과 보안성이라는 말로 Linux 배포를 주도해 왔다.
  • Debian은 Free Software이다.
  • Redhat은 또다른 Linux의 배포판이다.
  • Redhat는 대표적으로 Fedora가 있다.
  • Debian과 Redhat은 기본적으로 큰 차이가 없으며, 쉘과 패키징 관리에서 다르다.
  • 일반적으로, 사용 편의성은 UI쪽을 잘 다듬은 Ubuntu가, 범용성은 Fedora가 좋다고 한다.

Debian Software Package 작업하기
  • APT
    온라인 저장소로 부터 패키지를 다운로드하고 설치하는데 사용된다.
  • dkpg
    CD-ROM이나 다른 디스크로 부터의 .deb 파일과 함께 작동한다.
    시스템 소프트웨어의 설정/설치/정보 획득등의 옵션을 제공한다.
  • aptitude
    온라인 저장소로에서의 작업을 제공한다.
    dkpg나 APT에 비해 자동화된 작업을 제공하므로, 처음 사용시 추천되는 툴이다.

다음과 같이 apt-cache를 이용하여 현재 가능한 패키지의 Total을 보고받을 수 있습니다.

 ~$ apt-cache stats
Total package names: 39457 (1,578k)
  Normal packages: 29933
  Pure virtual packages: 526
  Single virtual packages: 2747
  Mixed virtual packages: 296
  Missing: 5955
Total distinct versions: 32525 (1,821k)
Total distinct descriptions: 32525 (781k)
Total dependencies: 211445 (5,920k)
Total ver/file relations: 34332 (549k)
Total Desc/File relations: 32525 (520k)
Total Provides mappings: 5833 (117k)
Total globbed strings: 149 (1,936)
Total dependency version space: 1,057k
Total slack space: 112k
Total space accounted for: 10.1M


APT로 SW 관리하기

APT와 dkpg는 그 기능상 겹치는 부분이 많으나, Debian에서의 대부분의 install, download, upgrade, search 등등의 작업은 APT로도 충분합니다. 이러한 APT의 주요한 명령을 기술합니다.
  • sudo apt-get update
    /etc/apt/soruces.list에 따라 available package의 DB를 업데이트한다.
    물론, soruces.list가 변경되었다면, 꼭 실행해 주도록 한다.
  • apt-cache search <keyword>
    주어진 keyword에 따라 대소문자 구별 없이 DB를 검색한다.
  • sudo apt-get install <pacakage>
    해당 package를 다운로드하고 설치한다.
  • sudo apt-get -d install <package>
    해당 package를 /var/cache/apt/archives에 다운로드한다.
  • apt-cache show <package>
    해당 package로 부터 정보를 표시한다.
  • sudo apt-get upgrade
    설치된 package의 업데이트를 체크한뒤 다운로드하고 설치한다.
  • sudo apt-get disp-upgrade
    삭제된것 포함하여 시스템의 모든 package를 업데이트한다. (추천하지 않는 명령)
  • sudo apt-get autoclean
    다운로드된 package나 더이상 설치되지 않은 package를 삭제한다.
  • sudo apt-get clean
    디스크 공간 확보를 위해 /var/cahce/apt/archive에 cache된 package를 삭제한다.
  • sudo apt-get --purge remove <package>
    해당 package와 그것의 설정 파일을 모두 제거한다.
  • sudo apt-get -f install
    깨진 packge를 위해 정상 체크를 수행한다.
  • apt-config -V
    APT utility의 버전을 표기한다.
  • sudo apt-key list
    APT가 알고있는 gpg 키를 나열한다.
  • apt-cache status
    설치된 모든 package의 통계를 표기한다.
  • apt-cache depends
    package의 dependency를 표기한다. (설치 여부 관계없음)
  • apt-cache pkgnames
    시스템에 설치된 모든 package를 나열한다.


APT 저장소와 3rd-Party signature key 추가하기

Google repository를 사용하기 위해서는, /etc/apt/sources.list에 다음을 추가합니다.
# cn – added for google software
deb http://dl.google.com/linux/deb/ stable non-free
즉, ~$ sudo vi /etc/apt/sources.list하여 위 부분을 추가합니다.

그다음, google package 인증을 위한 signing key를 다운로드하고 설치해야 합니다. 그리고, 제대로 설치되었는지 확인해 봅니다.

~$ wget https://dl-ssl.google.com/linux/linux_signing_key.pub -O /tmp/key.pub
--2010-10-04 00:11:16--  https://dl-ssl.google.com/linux/linux_signing_key.pub
Connecting to xxx.xxx.xxx.xxx:xxxx... connected.
Proxy request sent, awaiting response... 200 OK
Length: 1745 (1.7K) [text/plain]
Saving to: `/tmp/key.pub'

100%[=================================================================================>] 1,745       --.-K/s   in 0.007s

2010-10-04 00:11:18 (259 KB/s) - `/tmp/key.pub' saved [1745/1745]
~$ sudo apt-key add /tmp/key.pub
[sudo] password for greenfish:
OK
~$ sudo apt-key list
/etc/apt/trusted.gpg
--------------------
pub   1024D/437D05B5 2004-09-12
uid                  Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>
sub   2048g/79164387 2004-09-12

pub   1024D/FBB75451 2004-12-30
uid                  Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>

pub   1024D/7FAC5991 2007-03-08
uid                  Google, Inc. Linux Package Signing Key <linux-packages-keymaster@google.com>
sub   2048g/C07CB649 2007-03-08

그러면, sudo apt-get update를 통해 google package를 업데이트할 수 있습니다.

이 과정을 모두 거치면, 아래와 같이 google의 picasa를 검색/설치/업데이트해 볼 수 있습니다.
~$ apt-cache search picasa
~$ apt-cache show picasa
~$ apt-cache depends picasa
~$ sudo apt-get install picasa


dpkg로 소프트웨어 관리하기

dkpg는 APT보다 낮은 Level에서 작동합니다. 즉, APT는 dpkg를 뒷단에서 사용하게 됩니다. APT와 dpkg는 Red Hat Linux의 yum과 rpm과 유사하게 동작합니다. 이러한 dpkg의 주요한 명령은 다음과 같습니다.
  • dkpg -c <.deb file>
    주어진 .deb 파일에 의해 설치된 항목을 명기한다.
  • dpkg -I <.deb file>
    주어진 .deb 파일의 정보를 표시한다.
  • dpkg -p <package>
    해당 package의 정보를 표시한다.
  • dpkg -s <filename>
    주어진 파일이름이 발견된 package를 표시한다. 경로나 파일 이름이 가능하다.
  • dpkg -l
    설치된 package를 표시한다.
  • dpkg -L <package>
    해당 package의 설치된 파일들을 표시한다.
  • dpkg -s <package>
    해당 package의 상태를 표시한다.
  • sudo dpkg -i <package>
    주어진 .deb 파일을 설치한다.
  • sudo dpkg -r <package>
    주어진 package를 삭제하지만, 파일은 남겨둔다.
  • sudo dpkg -p <package>
    주어진 package와 설정 파일을 삭제한다.
  • sudo dpkg -x <.deb file> <directory>
    .deb 파일에 포함된 파일을 해당 directory에 압축해제 한다.
    추가적으로, 해당 directory의 permission을 초기화한다.

~$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                 Version              Description
+++-====================-====================-========================================================
ii  acpi-support         0.136                scripts for handling many ACPI events
ii  acpid                1.0.10-5ubuntu2      Advanced Configuration and Power Interface event daemon
...
ii  zip                  3.0-2                Archiver for .zip files
ii  zlib1g               1:1.2.3.3.dfsg-15ubu compression library - runtime