현 블로그는 모바일 환경이 아닌 PC환경에 최적화 되어있습니다.

 Mir의 운영환경



apt란?


 

Advanced Package Tool의 약자로 우분투(Ubuntu)를 포함한 데비안(Debian)계열의 리눅스에서 쓰이는 패키지 관리 도구


요즘 우분투는 GUI버전도 있기 때문에 GUI를 이용한 프로그램 설치도 가능하지만 

커멘드기반으로만 서버를 운영하려면 apt 명령어로 패키지를 관리해주어야 한다.

apt 명령어중 자주 사용하는 또는 알아두면 좋은 명령어들을 하나하나 확인해 보자.


1. apt-get update  - 패키지 업데이트

$   apt-get update
[생략]...
받기:37 http://security.ubuntu.com precise-security/universe TranslationIndex [205 B]
기존 http://security.ubuntu.com precise-security/main Translation-en
기존 http://security.ubuntu.com precise-security/multiverse Translation-en
기존 http://security.ubuntu.com precise-security/restricted Translation-en
기존 http://security.ubuntu.com precise-security/universe Translation-en
내려받기 4,860 k바이트, 소요시간 2분 11초 (36.9 k바이트/초)
패키지 목록을 읽는 중입니다... 완료           

우선적으로 현재 우분투에 있는 패키지를 최신버전으로 업데이트를 한번 해주었다.

앞에 받기는 새로 업데이트 된 혹은 버전업된 패키지들이고 기존은 업데이트가 되지 않는 패키지라는 뜻이다.


2. apt-cache stats  - 캐시 현황 확인

$   apt-cache stats
전체 패키지 이름 : 54084 (1,082 k)
전체 패키지 구조: 91748 (5,138 k)
  일반 패키지: 63090
  순수 가상 패키지: 1570
  단일 가상 패키지: 6108
  혼합 가상 패키지: 1565
  빠짐: 19415
개별 버전 전체: 74504 (5,364 k)
개별 설명 전체: 85848 (2,060 k)
전체 의존성: 604710 (16.9 M)
전체 버전/파일 관계: 82962 (1,991 k)
전체 설명/파일 관계: 85848 (2,060 k)
전체 제공 매핑: 21653 (433 k)
전체 패턴 문자열: 313 (3,371 )
전체 의존성 버전 용량: 2,918 k
전체 빈 용량: 38.7 k
차지하는 전체 용량: 29.9 M

현재 사용되는 패키지의 전체적인 상태를 확인해볼수 있는 명령어이다.


3. apt-cache pkgnames - 사용할수 있는 패키지 확인

$   apt-cache pkgnames
..[생략]..
dvipng
linux-headers-3.2.0-63
linux-headers-3.2.0-58
libgnome2-bin
wicd-curses
tao-lifecycle
ser-postgres-module
r-cran-lpsolve
openjdk-7-jdk
libsyntax-highlight-engine-simple-languages-perl
libnuclient4
liblog4cxx10-dev
libghc-hfuse-prof
libdbix-class-inflatecolumn-ip-perl
libghc-cgi-prof
..[생략]..

현재 내가 설치 할수 있는 패키지의 리스트를 출력한다. (설치된 패키지 리스트가 아니며 이미 설치된 패키지도 포함)

필자는 현재 jdk를 설치할려고 준비중이라 리스트에 openjdk-7-jdk가 있는것을 확인 하였다.


4.apt-cache search [검색어] - 검색어와 연관된 패키지 이름과 설명 출력

$   apt-cache search jdk
[생략]...
openjdk-6-jre-zero - Alternative JVM for OpenJDK, using Zero/Shark
openjdk-7-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-7-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-7-doc - OpenJDK Development Kit (JDK) documentation
openjdk-7-jdk - OpenJDK Development Kit (JDK)
openjdk-7-jre-zero - Alternative JVM for OpenJDK, using Zero/Shark
openjdk-7-source - OpenJDK Development Kit (JDK) source files
substance - cross-platform look & feel for Swing applications
[생략]...

실제로 apt-cache pkgnames 명령어를 사용하면 리스트가 상당히 많기 때문에

내가 필요한 패키지가 존재하는지 검색할때 apt-cache search 명령어를 사용한다.

jdk라고 검색을 하니 간단한 설명과 함께 여러 패키지의 리스트가 확인된다.


5. apt-cache show [패키지명] - 검색 패키지 정보 확인

$   apt-cache show openjdk-7-jdk
Package: openjdk-7-jdk
Priority: optional
Section: universe/java
Installed-Size: 36451
Maintainer: Ubuntu Developers 
Original-Maintainer: OpenJDK Team 
Architecture: amd64
Source: openjdk-7
Version: 7~u3-2.1.1~pre1-1ubuntu2
Provides: java-compiler, java-sdk, java2-sdk, java5-sdk, java6-sdk, java7-jdk
Depends: openjdk-7-jre (>= 7~u3-2.1.1~pre1-1ubuntu2), libc6 (>= 2.2.5)
Recommends: libxt-dev
Suggests: openjdk-7-demo, openjdk-7-source, visualvm
Filename: pool/universe/o/openjdk-7/openjdk-7-jdk_7~u3-2.1.1~pre1-1ubuntu2_amd64.deb
Size: 12018022
MD5sum: 23ee5cde6777cb64a595eb5c6b5e188c
SHA1: 1fe68e15d0de048d2dfb53668e0c30c9225ae7d3
SHA256: 12e325498e687f51a2061a05e9c6ae211d90865378084892c26cc5ca9edf201c
Description-en: OpenJDK Development Kit (JDK)
 OpenJDK is a development environment for building applications,
 applets, and components using the Java programming language.
 .
 The packages are built using the IcedTea build support and patches
 from the IcedTea project.
Multi-Arch: same
Homepage: http://openjdk.java.net/
Description-md5: eaff50443f15582a8beb0901034b62cf
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu

설치할 jdk를 확실하게 알기 위해 openjdk-7-jdk의 정보를 한번 확인해보았다.

openjdk-7-jdk의 버전과 설치시 용량등등 여러 정보가 상세하게 표시된다. 


6.apt-get install [패키지명] - 패키지 설치

$   apt-get install openjdk-7-jdk
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  linux-headers-3.2.0-24 linux-headers-3.2.0-24-generic icedtea-7-jre-cacao openjdk-7-jre-lib
이들을 지우려면 'apt-get autoremove'를 사용하십시오.
제안하는 패키지:
  openjdk-7-demo openjdk-7-source visualvm
다음 새 패키지를 설치할 것입니다:
  openjdk-7-jdk
0개 업그레이드, 1개 새로 설치, 0개 제거 및 2개 업그레이드 안 함.
0 바이트/16.5 M바이트 아카이브를 받아야 합니다.
이 작업 후 20.7 M바이트의 디스크 공간을 더 사용하게 됩니다.
Selecting previously unselected package openjdk-7-jdk.
(데이터베이스 읽는중 ...현재 94851개의 파일과 디렉터리가 설치되어 있습니다.)
openjdk-7-jdk 패키지를 푸는 중입니다 (.../openjdk-7-jdk_7u79-2.5.5-0ubuntu0.12.04.1_amd64.deb에서) ...
openjdk-7-jdk (7u79-2.5.5-0ubuntu0.12.04.1) 설정하는 중입니다 ...
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/appletviewer 사용해서 자동 모드에서 /usr/bin/appletviewer (appletviewer) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/extcheck 사용해서 자동 모드에서 /usr/bin/extcheck (extcheck) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/idlj 사용해서 자동 모드에서 /usr/bin/idlj (idlj) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jar 사용해서 자동 모드에서 /usr/bin/jar (jar) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jarsigner 사용해서 자동 모드에서 /usr/bin/jarsigner (jarsigner) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/javac 사용해서 자동 모드에서 /usr/bin/javac (javac) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/javadoc 사용해서 자동 모드에서 /usr/bin/javadoc (javadoc) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/javah 사용해서 자동 모드에서 /usr/bin/javah (javah) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/javap 사용해서 자동 모드에서 /usr/bin/javap (javap) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jcmd 사용해서 자동 모드에서 /usr/bin/jcmd (jcmd) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jconsole 사용해서 자동 모드에서 /usr/bin/jconsole (jconsole) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jdb 사용해서 자동 모드에서 /usr/bin/jdb (jdb) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jhat 사용해서 자동 모드에서 /usr/bin/jhat (jhat) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jinfo 사용해서 자동 모드에서 /usr/bin/jinfo (jinfo) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jmap 사용해서 자동 모드에서 /usr/bin/jmap (jmap) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jps 사용해서 자동 모드에서 /usr/bin/jps (jps) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jrunscript 사용해서 자동 모드에서 /usr/bin/jrunscript (jrunscript) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jsadebugd 사용해서 자동 모드에서 /usr/bin/jsadebugd (jsadebugd) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jstack 사용해서 자동 모드에서 /usr/bin/jstack (jstack) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jstat 사용해서 자동 모드에서 /usr/bin/jstat (jstat) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/jstatd 사용해서 자동 모드에서 /usr/bin/jstatd (jstatd) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/native2ascii 사용해서 자동 모드에서 /usr/bin/native2ascii (native2ascii) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/rmic 사용해서 자동 모드에서 /usr/bin/rmic (rmic) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/schemagen 사용해서 자동 모드에서 /usr/bin/schemagen (schemagen) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/serialver 사용해서 자동 모드에서 /usr/bin/serialver (serialver) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/wsgen 사용해서 자동 모드에서 /usr/bin/wsgen (wsgen) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/wsimport 사용해서 자동 모드에서 /usr/bin/wsimport (wsimport) 제공.
update-alternatives: /usr/lib/jvm/java-7-openjdk-amd64/bin/xjc 사용해서 자동 모드에서 /usr/bin/xjc (xjc) 제공.

openjdk-7-jdk 패키지를 설치하였다. 


7.apt-get upgrade - 설치된 패키지 업데이트

$   apt-get upgrade
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 패키지를 과거 버전으로 유지합니다:
  landscape-common linux-headers-server
0개 업그레이드, 0개 새로 설치, 0개 제거 및 2개 업그레이드 안 함.

설치된 패키지의 최신판을 검색하여 업데이트 해준다.

apt-get update와 다른점은 apt-get update는 설치할수 있는 패키지 리스트를 업데이트 해주는것이고

apt-get upgrade는 이미 설치된 패키지들을 최신판으로 업데이트 해주는것이다.

보통 새로운 패키지를 설치하면 꼭 한번씩 해준다.

 

8.apt-get autoremove - 필요없는 패키지 자동삭제

$   apt-get autoremove
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 패키지를 지울 것입니다:
  icedtea-7-jre-cacao linux-headers-3.2.0-24 linux-headers-3.2.0-24-generic openjdk-7-jre-lib
0개 업그레이드, 0개 새로 설치, 4개 제거 및 2개 업그레이드 안 함.
이 작업 후 67.7 M바이트의 디스크 공간이 비워집니다.
계속 하시겠습니까 [Y/n]? y
(데이터베이스 읽는중 ...현재 94986개의 파일과 디렉터리가 설치되어 있습니다.)
icedtea-7-jre-cacao 패키지를 지우는 중입니다 ...
linux-headers-3.2.0-24-generic 패키지를 지우는 중입니다 ...
linux-headers-3.2.0-24 패키지를 지우는 중입니다 ...
openjdk-7-jre-lib 패키지를 지우는 중입니다 ...

install로그에 보면 몇몇 패키지가 더이상 필요없으니 apt-get autoremove를 실행하라고 친절히 설명해준다.

apt-get utoremove는 현재 설치된 패키지중 더이상 사용하지 않는 패키지를 자동으로 찾아서 지워준다.


이렇게 하나의 패키지를 설치해보았다.

하나의 패키지를 설치하는데 굳이 이렇게 여러 명령어를 사용할 필요는 없지만 

update후 패키지를 설치하고 패키지를 설치후 upgrade를 하는 것은 잊지 않고 해주는것이 좋다.


자 이제 마지막으로 패키지를 지우는 명령어를 알아보자


9.apt-get remove - 설정 파일을 보존 하면서 패키지 삭제

$   apt-get remove openjdk-7-jdk
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  libpolkit-backend-1-0 sound-theme-freedesktop libgconf-2-4 libsm-dev libatk1.0-0 gconf2-common libgtk2.0-common libxfixes3 hicolor-icon-theme libxcomposite1 libice-dev cryptsetup-bin
  ttf-dejavu-extra libgnome2-0 libnss3 libxxf86dga1 libgudev-1.0-0 dconf-gsettings-backend libjpeg-turbo8 libpthread-stubs0 libcairo-gobject2 libbonobo2-common libjpeg8 libatk1.0-data
  libsgutils2-2 x11-utils libgnome2-bin udisks icedtea-netx openjdk-7-jre libxxf86vm1 liblcms2-2 libgl1-mesa-dri libbonobo2-0 libtdb1 libgnomevfs2-common libxcb-glx0 libgl1-mesa-glx gvfs-libs
  gconf2 java-common icedtea-6-jre-cacao default-jre-headless libx11-xcb1 libglapi-mesa libavahi-glib1 policykit-1 gvfs-common libpam-ck-connector libcanberra0 openjdk-6-jre-lib libthai-data
  x11proto-kb-dev libatk-wrapper-java libdatrie1 openjdk-6-jre-headless xtrans-dev fontconfig libavahi-common-data libidl-common libck-connector0 libgconf2-4 libjson0 libgdk-pixbuf2.0-0
  libgtk-3-bin icedtea-netx-common x11proto-input-dev libxaw7 libcups2 libgdu0 libgnome2-common default-jre libxinerama1 libgif4 libgtk-3-0 libxft2 libgnomevfs2-0 icedtea-6-jre-jamvm
  libxt-dev tzdata-java libatk-wrapper-java-jni libice6 libthai0 libidl0 policykit-1-gnome libxmu6 libvorbisfile3 libasound2 libxpm4 libflac8 libnspr4 libatasmart4 libvorbisenc2 libxau-dev
  libasyncns0 libdconf0 liblvm2app2.2 libtiff4 libfontenc1 libjasper1 icedtea-7-jre-jamvm libgnome-keyring0 libgnome-keyring-common libxtst6 libcryptsetup4 liborbit2 libavahi-client3
  x11-common libpolkit-agent-1-0 xorg-sgml-doctools ca-certificates-java gconf-service libpango1.0-0 libsm6 libpulse0 libx11-dev libxdamage1 gvfs libx11-doc libgtk2.0-bin libxi6 libvorbis0a
  libxcb1-dev libxcb-shape0 libxcursor1 dconf-service libxt6 libxv1 openjdk-6-jre libavahi-common3 libxrandr2 libgtk-3-common libnss3-1d x11proto-core-dev libsndfile1 openjdk-7-jre-headless
  libgtk2.0-0 libxdmcp-dev libpthread-stubs0-dev libgdk-pixbuf2.0-common libltdl7 gvfs-daemons gconf-service-backend libllvm3.0 libogg0 consolekit
이들을 지우려면 'apt-get autoremove'를 사용하십시오.
다음 패키지를 지울 것입니다:
  openjdk-7-jdk
0개 업그레이드, 0개 새로 설치, 1개 제거 및 2개 업그레이드 안 함.
이 작업 후 20.7 M바이트의 디스크 공간이 비워집니다.
계속 하시겠습니까 [Y/n]? y
(데이터베이스 읽는중 ...현재 72976개의 파일과 디렉터리가 설치되어 있습니다.)
openjdk-7-jdk 패키지를 지우는 중입니다 ...


10.apt-get purge - 패키지 완전 삭제

$   apt-get purge openjdk-7-jdk
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  libpolkit-backend-1-0 sound-theme-freedesktop libgconf-2-4 libsm-dev libatk1.0-0 gconf2-common libgtk2.0-common libxfixes3 hicolor-icon-theme libxcomposite1 libice-dev cryptsetup-bin
  ttf-dejavu-extra libgnome2-0 libnss3 libxxf86dga1 libgudev-1.0-0 dconf-gsettings-backend libjpeg-turbo8 libpthread-stubs0 libcairo-gobject2 libbonobo2-common libjpeg8 libatk1.0-data
  libsgutils2-2 x11-utils libgnome2-bin udisks icedtea-netx openjdk-7-jre libxxf86vm1 liblcms2-2 libgl1-mesa-dri libbonobo2-0 libtdb1 libgnomevfs2-common libxcb-glx0 libgl1-mesa-glx gvfs-libs
  gconf2 java-common icedtea-6-jre-cacao default-jre-headless libx11-xcb1 libglapi-mesa libavahi-glib1 policykit-1 gvfs-common libpam-ck-connector libcanberra0 openjdk-6-jre-lib libthai-data
  x11proto-kb-dev libatk-wrapper-java libdatrie1 openjdk-6-jre-headless xtrans-dev fontconfig libavahi-common-data libidl-common libck-connector0 libgconf2-4 libjson0 libgdk-pixbuf2.0-0
  libgtk-3-bin icedtea-netx-common x11proto-input-dev libxaw7 libcups2 libgdu0 libgnome2-common default-jre libxinerama1 libgif4 libgtk-3-0 libxft2 libgnomevfs2-0 icedtea-6-jre-jamvm
  libxt-dev tzdata-java libatk-wrapper-java-jni libice6 libthai0 libidl0 policykit-1-gnome libxmu6 libvorbisfile3 libasound2 libxpm4 libflac8 libnspr4 libatasmart4 libvorbisenc2 libxau-dev
  libasyncns0 libdconf0 liblvm2app2.2 libtiff4 libfontenc1 libjasper1 icedtea-7-jre-jamvm libgnome-keyring0 libgnome-keyring-common libxtst6 libcryptsetup4 liborbit2 libavahi-client3
  x11-common libpolkit-agent-1-0 xorg-sgml-doctools ca-certificates-java gconf-service libpango1.0-0 libsm6 libpulse0 libx11-dev libxdamage1 gvfs libx11-doc libgtk2.0-bin libxi6 libvorbis0a
  libxcb1-dev libxcb-shape0 libxcursor1 dconf-service libxt6 libxv1 openjdk-6-jre libavahi-common3 libxrandr2 libgtk-3-common libnss3-1d x11proto-core-dev libsndfile1 openjdk-7-jre-headless
  libgtk2.0-0 libxdmcp-dev libpthread-stubs0-dev libgdk-pixbuf2.0-common libltdl7 gvfs-daemons gconf-service-backend libllvm3.0 libogg0 consolekit
이들을 지우려면 'apt-get autoremove'를 사용하십시오.
다음 패키지를 지울 것입니다:
  openjdk-7-jdk*
0개 업그레이드, 0개 새로 설치, 1개 제거 및 2개 업그레이드 안 함.
이 작업 후 20.7 M바이트의 디스크 공간이 비워집니다.
계속 하시겠습니까 [Y/n]? y
(데이터베이스 읽는중 ...현재 72976개의 파일과 디렉터리가 설치되어 있습니다.)
openjdk-7-jdk 패키지를 지우는 중입니다 ...


설정파일을 보관하면서 패키지를 삭제하는 remove와

설정파일까지 모두다 삭제하는 purge 

둘다 실행해보았지만 따로 설정한 경우가 없어서 그런지 현재는 차이가 나지 않는다.


openjdk-7-jdk삭제후 필요없어진 패키지를 정리할려면 다시한번 apt-get autoremove 명령어를 실행해 주면된다.


자주 사용하는 apt 명령어에 대하여 간단히 알아보았다. 

위에 나와있는 기본적인 명령어 이외의 많은 명령어가 있으며 기본적으로 명령어 창에 apt-get 혹은 apt-cache만 쳐도 설명이 나오니 한번씩 쳐보고 읽는 것도 추천한다.



 

 

 


 

+ Recent posts