dpkg는 자유 운영 시스템 데비안과 그것의 파생-제품에서 패키지 관리 시스템 기반에 있는 소프트웨어입니다. dpkg는 .deb 패키지를 설치, 제거하고 그 정보를 제공하기 위해 사용됩니다.
dpkg (데비안 패키지) 자체는 저-수준 도구입니다. 고급 도구인 APT (Advanced Package Tool)는 원격 위치에서 패키지를 가져오고 종속성 해결과 같은 복잡한 패키지 관계를 처리할 수 있으므로 dpkg보다 더 공통적으로 사용됩니다. aptitude (ncurses) 및 synaptic (GTK)과 같은 APT에 대한 프런트엔드는 보다 친숙한 인터페이스에 사용됩니다.
데비안 패키지 "dpkg"는 dpkg 프로그램, dpkg-deb, dpkg-split, dpkg-query, dpkg-statoverride, dpkg-divert 및 dpkg-trigger를 포함하는 패키징 시스템의 런-타임 기능성에 필요한 여러 다른 프로그램을 제공합니다. 그것은 역시 update-alternatives 및 start-stop-daemon와 같은 프로그램을 포함합니다. install-info 프로그램도 포함되어 있었지만, 현재는 별도로 개발 및 배포되기 때문에 나중에 제거되었습니다. 데비안 패키지 "dpkg-dev"는 아래에 설명된 수많은 빌드 도구를 포함합니다.
dpkg 호환성 문제
다행스럽게도 1.21.18 버전에 zstd 관련 패치가 적용되었습니다. 이제, 이 문제는 역사 속으로 사라질 예정입니다.
보통 우분투에서 제작된 deb 패키지는 데비안에서 가능한 사용되었지만, jammy 이후의 빌드된 패키지는 사용할 수 없습니다. dpkg가 바이너리 레벨에서 호환성이 유지되지 않고, 데비안에서 zstd 형식을 지원하는 것을 논의 중이지만, 아직 적용이 되지 않았습니다.
build debian package
패키지 제작에서 zstd를 사용하지 않으려면, --compression=xz, 또는 -Zxz와 같이 정의해서 빌드할 수 있습니다. 이때, 대문자임에 주의해야 합니다.
위의 경우가 제대로 동작하지 않는다는 보고가 있고, 다른 방법은 debian/rules 파일에서 다음을 변경/추가해서 적용해 볼 수 있습니다:
override_dh_builddeb:
dh_builddeb -- -Zxz
이때, 공백으로 분리하는 것이 아니라 탭으로 분리해야 합니다.
History
dpkg는 원래 Ian Murdock에 의해 1994년 1월에 쉘 스크립트로 작성되었습니다. Matt Welsh, Carl Streeter 및 Ian Murdock은 그 다음에 Perl로 다시 작성했었고, 그 후 나중에 주요 부분은 1994년 Ian Jackson에 의해 C로 다시 작성되었습니다. 이름 dpkg는 원래 "데비안 패키지"의 줄임말이었지만, dpkg 소프트웨어가 deb 패키지 형식과 데비안 패키지가 데비안에서 작동하는 방식을 정의하는 데비안 정책 매뉴얼과 직교하기 때문에 이 문구의 의미가 크게 발전했습니다.
Example use
deb 패키지를 설치하기 위해:
dpkg -i filename.deb
여기서 filename.deb는 데비안 패키지의 이름입니다 (예를 들어, pkgname_0.00-1_amd64.deb).
설치된 패키지의 목록은 다음에 의해 얻어질 수 있습니다:
dpkg -l [optional pattern]
설치된 패키지를 제거하기 위해:
dpkg -r packagename
remove rc list
우분투 패키지가 업데이트되면서, 필요하다고 판단되는 일부 설정 파일을 제거하지 않고 버전별로 남겨둡니다.
물론 설정과 로컬에서 필요한 파일을 별도로 백업하는 것은 매우 중요한 일이고, 반드시 시스템별로 해결책을 마련해 두어야 하지만, 이런 쓸모없는 파일들이 패키지 검색에 항상 같이 출력되는 것이 작업의 효율을 떨어뜨리므로, 제거하는 것이 좋겠습니다.
- dpkg --list | grep "^rc"
- dpkg --list | grep "^rc" | cut -d " " -f 3
- dpkg --list | grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge
또는 아래와 같이 제거할 수 있습니다
- sudo apt-get remove --purge $(dpkg -l | grep "^rc" | awk '{print $2}')
순서대로
- 목록 정보 전체 얻기
- 오직 목록 이름 정보 얻기
- 목록에 나온 패키지 설정 제거
repacking
어떤 이유에서든지, 로컬에 설치된 deb 패키지를 로컬에 deb 형식으로 만들 필요가 생길 수 있습니다.
- sudo nala install dpkg-repack
- dpkg-repack firefox
Development tools
dpkg-dev는 데비안 소스 패키지를 풀고, 빌드하고 업로드하는 것에 필요한 일련의 개발 도구를 포함합니다. 이것들은 다음을 포함합니다:
- dpkg-source – 데비안 패키지의 소스 파일을 묶고 풉니다.
- dpkg-gencontrol – 압축을 푼 데비안 트리 소스에서 정보를 읽고 이진 패키지 제어 패키지를 생성하여, 데비안/파일에 대한 엔트리를 만듭니다.
- dpkg-shlibdeps – 라이브러리에 관한 실행의 종속성을 계산합니다.
- dpkg-genchanges – 압축을 푼 데비안 트리 소스에서 정보를 읽어 한 번 구성하면 제어 파일 (.changes)을 만듭니다.
- dpkg-buildpackage – 패키지를 자동적으로 구성하기 위해 사용될 수 있는 자동 스크립트입니다.
- dpkg-distaddfile – 데비안/파일에 입력 파일을 더합니다.
- dpkg-parsechangelog – 압축을 푼 데비안 트리 소스의 변경 파일 (changelog)을 읽고 해당 변경 사항에 대한 정보로 편리하게 준비된 출력을 생성합니다.
Database
dpkg 데이터베이스는 /var/lib/dpkg 아래에 있습니다; "상태" 파일은 현재 시스템에 설치된 소프트웨어 목록을 포함합니다. 이 데이터베이스는 저장소에 대한 정보가 없습니다.
wpkg packager for Windows
wpkg는 마이크로소프트 윈도우 운영 시스템 아래에서 실행되는 dpkg와 유사한 것으로 만들어졌습니다. 이후 APT 제품군의 일부와 유사한 기능, 향상된 저장소 관리, 배포 관리를 포함하도록 발전했으며 Cygwin, Mingw32, macOS, OpenSolaris 및 FreeBSD를 포함하는 리눅스와 유닉스-계열 시스템으로 이식되었습니다. 그것은 .deb 파일 형식 호환성을 유지하고 즉시 사용 가능한 실행 파일 wpkg.exe와 함께 제공됩니다. 2018년 11월 기준으로 소프트웨어의 가장 최근 출시는 2015년이었습니다.