Contents

dpkg 를 사용하여 소프트웨어 관리해보기

   Mar 17, 2017     2 min read     - Comments

나의 메인 OS는 mac OS 이다. 업무용으로 ubuntu 14.04 을 쓴다. 사실 회사에서의 일만 아니면 쓸일이 없다.

I love Windows.

업무적으로 쓰는 package를 관리하기 위해 .deb 파일을 쓴다.

deb 패키지

.deb는 dpkg 명령으로 설치할수 있다.

패키지 받기

설치에 앞서 테스트에 사용할 패키지파일을 받아보겠다.

ubuntu 에서는 시스템에 필요한 소프트웨어 패키지 설치, 검색, 다운로드, 업그레이드등을 apt를 이용해서 관리한다.

그럼 apt 를 이용해서 openvpn을 받아보겠다.

-d 명령어를 쓰면 설치하지 않고, deb 파일을 다운받는다.

Package 저장경로

다운받은 파일은 /var/cache/apt/archives 에 저장된다.

디스크 공간 확보를 위해 디랙토리에 캐시되어 있는 패키지를 삭제하려면 clean 을 입력하면된다.

apt-get clean
.
|-- lock
`-- partial

나의 경우 pogopulg를 심심풀이로 가지고 노는데 용량이 부족한경우가 많아 종종 위의 명령어를 이용한다.

그럼 패키지파일을 다운받아보겠다.

cd /var/cache/apt/archives
apt-get -d install openvpn easy-rsa

tree
.
|-- easy-rsa_2.2.2-1_all.deb
|-- lock
|-- openvpn_2.3.2-7ubuntu3.1_amd64.deb
`-- partial

openvpn_2.3.2-7ubuntu3.1_amd64.deb 과 easy-rsa_2.2.2-1_all.deb 파일을 볼수있다.

아직설치는 안된상태이다.

Package 설치

설치를 해보겠다.

설치는 -i 명령어를 이용하면된다.

dpkg -i <.deb file>
dpkg -i openvpn_2.3.2-7ubuntu3.1_amd64.deb

Package 설치 리스트

설치가 되었는지 보겠다. -l 명령어를 이용하면된다.

dpkg -l < package Name>
dpkg -l | grep openvpn
ii  openvpn                          2.3.2-7ubuntu3.1                    amd64        virtual private network daemon

Package 삭제

패키지 삭제는 -r 옵션을 이용하면된다.

dpkg -r < package Name >

그럼 다운받은 .deb 파일을 풀어보겠다.

Package 풀기

패키지를 푸는것은 -x 를 이용하면된다.

데비안 우분투 패키지는 .deb라는 단일 파일로 묶여있다. 각각의 .deb 파일은 그 내부에 빌드된 파일들을 풀어서 어떤 파일들으 있는지 확인 가능하다.

/tmp/openvpn 폴더에 풀어서 보겠다.

dpkg -x openvpn_2.3.2-7ubuntu3.1_amd64.deb /tmp/openvpn

Package 내부스크립트 풀기

.deb의 내부 제어 스크립트파일은 -e 명령어로 풀수있다.

dpkg -e openvpn_2.3.2-7ubuntu3.1_amd64.deb /tmp/$RANDOM

설치된 리스트 확인

설치된 리스트 확인은 -L 명령을 이용하면 된다.

dpkg -L openvpn

deb 패키지만들기

Random 으로 만든파일을 debian 폴더로 변경후 /tmp/openvpn 에 넣어준다.

아래와 같은 구조가 되겠다.

.
|-- debian
|-- etc
|   |-- bash_completion.d
|   |-- default
|   |-- init.d
|   |-- network
|   |   |-- if-down.d
|   |   `-- if-up.d
|   `-- openvpn
`-- usr
    |-- include
    |   `-- openvpn
    |-- lib
    |   `-- openvpn
    |-- sbin
    `-- share
        |-- doc
        |   `-- openvpn
        |       `-- examples
        |           |-- sample-config-files
        |           |-- sample-keys
        |           `-- sample-scripts
        |-- man
        |   `-- man8
        `-- openvpn