Jump to content

APT (software)

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning
Advanced Package Tool
Developer(s)The Debian Project
Initial release31 March 1998; 26 years ago (1998-03-31)[1]
Stable release
2.9.1[2] / 14 April 2024; 2 months ago (2024-04-14)
Repositorysalsa.debian.org/apt-team/apt.git
Written inC++
Operating systemUnix-like
TypePackage manager
LicenseGPLv2+
Websitewiki.debian.org/Apt

Advanced Package Tool, 또는 APT데비안, 우분투, 및 관련된 리눅스 배포판에서 소프트웨어의 설치와 제거를 처리하기 위해 코어 라이브러리(core libraries)와 함께 작동하는 자유-소프트웨어(free-software) 사용자 인터페이스(user interface)입니다.[3] APT는, 사전 컴파일된 파일 또는 소스 코드를 컴파일하여, 소프트웨어 패키지(software packages)의 검색, 구성과 설치를 자동화함으로써 유닉스-계열 컴퓨터 시스템에서 소프트웨어를 관리하는 과정을 단순화합니다.[3]

Usage

APT는 apt라는 패키지에 배포된 도구의 모음입니다. APT의 중요한 부분은 C++ 함수의 라이브러리에 정의되어 있습니다; APT는 역시 그 라이브러리를 사용하는 패키지를 처리하기 위한 명령줄 프로그램을 포함하고 있습니다. 셋의 그러한 프로그램은 apt, apt-getapt-cache입니다. 그것들은 간단하고 데비안 계열의 어디에나 있기 때문에 예제에서 공통적으로 사용됩니다. apt 패키지는 모든 현재 데비안 릴리스에서 "important" 우선순위이고, 따라서 기본 데비안 설치에 포함됩니다. APT는 dpkg의 프론트엔드로 여길 수 있으며, 이전의 dselect 프론트엔드보다 사용자 친화적입니다. 반면에 dpkg는 개별 패키지에 대한 작업을 수행하고, APT는 패키지 사이의 관계 (특히 의존성)를 유지-관리하고, 마찬가지로 상위-수준 버전 결정 (릴리스 추적과 버전 고정)의 출처를 명시하고 유지-관리합니다.

APT는 종종 데비안의 최고의 기능 중 하나로 환영받고 있으며,[4][5][6][7] 이것은 데비안 개발자에 의한 데비안 정책의 엄격한 품질 관리에 기인합니다.[8][9]

APT의 주요 기능은 dpkg를 호출하는 방식입니다 – 그것은 설치 또는 제거할 패키지 목록의 토폴로지 정렬을 수행하고 가능한 최상의 순서로 dpkg를 호출합니다. 어떤 경우에서, 그것은 dpkg--force 옵션을 사용합니다. 어쨌든, 그것은 dpkg가 강제 조치를 요구하는 이유를 피하는 방법을 계산할 수 없는 때 오직 수행합니다.

Downgrading package

특정 소프트웨어를 업데이트 후에 문제가 발생하면, 이전 버전으로 되돌리고 싶을 수 있습니다. 특히, 지역에서 컴파일 후 업그레이드한 패키지에서 문제가 발생하면, 저장소 버전으로 다운그레이드를 할 필요가 생깁니다.

먼저, 저장소에 있는 버전을 다운그레이드하는 방법입니다. 우선, 예를 들어, firefox-esr 버전을 다운그레이드하기 위해, 패키지를 검색합니다:

  • sudo apt-cache showpkg firefox-esr
91.9.0esr-1~deb11u1
78.15.0esr-1~deb11u1

두 개의 버전이 보입니다. 이런 경우에는 다운그레이드가 쉬운데, 아마도 의존성 패키지들도 필요하면 적절히 다운그레이드될 가능성이 높기 때문입니다:

  • sudo apt install firefox-esr=78.15.0esr-1~deb11u1

다음으로 지역적으로 설치된 버전, 예를 들어, binutils를 다운그레이드하는 과정을 소개합니다. 먼저, 검색을 합니다:

  • sudo apt-cache showpkg binutils
2.38.50.20220512-1
2.35.2-2

처음 것이 로컬에서 설치된 것이고 두 번째 것이 데비안 저장소 버전입니다.

  • sudo apt install binutils=2.35.2-2

이렇게 입력해도 의존성으로 설치가 되지 않습니다. 문제가 되는 의존성 패키지를 하나씩 추가해서, 모든 의존성 패키지를 동시에 다운그레이드하도록 시도합니다. 비록 다운그레이드가 잘 된 것처럼 보일지라도, 의존성을 완전히 해결해 주지는 않기 때문에, 아래와 같이 남은 버전이 있는지 확인을 합니다:

  • dpkg -l | grep 2.38.50.20220512-1

만약 남은 프로그램이 있으면, 마찬가지로 위와 같은 방법으로 설치해 줍니다:

  • sudo apt install libctf-nobfd0=2.35.2-2

Install a specific package version

간혹, 같은 패키지 이름에 대해 여러 버전이 존재할 수 있습니다. 예를 들어, firefox는 데비안 시드에서 소스가 제공되기 전에 모질라에서 배포하는 소스를 기반으로 패키지를 제작합니다.

아마도, 시드 소스가 제공되기 전에, 또는 제공되더라도, 패치에 변화가 없으면 모질라 소스 패키징을 그대로 유지하고, 시드 소스 패키지도 같이 존재할 수 있습니다. 따라서, 특정 버전을 설치하는 방법을 알아 둘 필요가 있습니다. 현재 모질라 소스 패키징은 102.0-1이고 시드 소스 패키징은 101.0.1-1입니다. 보통 그냥 설치하면, 최신 버전이 설치되므로, 아래와 같이 명시적으로 버전 정보 제공해서 설치할 수 있습니다:

  • sudo apt install firefox=101.0.1-1

Installing software

사용자는 하나 이상의 패키지를 설치할 필요를 나타냅니다. 각 패키지 이름은 완전히 정규화된 파일 이름이 아니라 단지 패키지의 이름 부분으로 표현됩니다 (예를 들어, 데비안 시스템에서, libc6_1.9.6-2.deb가 아니라 libc6가 인수로 제공됩니다). 특히, APT는 (만약 필요하다면) 표시된 패키지가 의존하는 패키지를 자동으로 가져와 설치합니다. 이것은 APT-기반 패키지 관리 시스템의 원래의 고유한 특징이었는데, 왜냐하면 그것이 누락 종속성, 종속성 지옥의 유형으로 인한 설치 실패를 방지하기 때문입니다.

또 다른 차이점은 원격 저장소에서 패키지를 검색한다는 것입니다. APT는 위치 구성 파일 (/etc/apt/sources.list)을 원하는 패키지를 탐색하기 위해 사용하며, 예를 들어 네트워크나 이동식 저장 매체에서 사용할 수 있는 파일을 검색하고, 사용 가능한 (그러나 설치되지 않은) 패키지에 대한 정보도 얻을 수 있습니다.

APT는 apt-get의 충돌 해결 시스템에서 내린 결정을 덮어쓰는 다른 명령 옵션을 제공합니다. 한 가지 옵션은 특정 버전의 패키지를 강제하는 것입니다. 이것은 패키지를 다운그레이드하고 종속 소프트웨어를 작동 불가능하게 만들 수 있으므로, 사용자는 주의해야 합니다.

마지막으로, apt_preferences 메커니즘은 사용자에게 개별 패키지에 대한 대체 설치 정책을 만드는 것을 허용합니다.

사용자는 POSIX 정규 표현식을 사용하여 패키지를 지정할 수 있습니다.

APT는 캐시된 패키지의 목록을 검색하고 설치되거나 업데이트되어야 하는 종속성을 나열합니다.

APT는 종속성을 자동으로 검색, 구성 및 설치합니다.

트리거는 지연된 동작의 처리입니다.

Update, upgrade and dist-upgrade

설치된 패키지 업데이트를 용이하게 하는 aptapt-get의 사용 모드는 다음과 같습니다:

  • update는 그것들의 소스에서 패키지 인덱스 파일을 재동기화하기 위해 사용됩니다. 사용 가능한 패키지 목록은 /etc/apt/sources.list에 지정된 위치에서 가져옵니다. 예를 들어, 데비안 아카이브를 사용할 때, 이 명령은 새 패키지와 업데이트된 패키지에 대한 정보를 사용할 수 있도록 Packages.gz 파일을 검색하고 조사합니다.
  • upgrade/etc/apt/sources.list에 열거된 소스에서 시스템에 현재 설치된 모든 패키지의 최신 버전을 설치하기 위해 사용됩니다. 사용 가능한 새 버전으로 현재 설치된 패키지가 검색되고 업그레이드됩니다; 어떤 상황에서도 현재 설치된 패키지가 제거되거나, 아직 설치되지 않은 패키지가 검색되고 설치되지 않습니다. 또 다른 패키지의 설치 상태 변경없이 업그레이드될 수 없는 현재 설치된 패키지의 새 버전은 현재 버전으로 남겨질 것입니다.
  • full-upgrade (apt)와 dist-upgrade (apt-get)는, upgrade의 기능을 수행하는 것 외에도, 역시 새 버전의 패키지로 변경하는 의존성을 지능적으로 처리합니다; aptapt-get는 "똑똑한" 충돌 해결 시스템을 가지고 있고, 필요하면 덜 중요한 패키지를 희생시키면서 가장 중요한 패키지를 업그레이드하려고 시도합니다. /etc/apt/sources.list 파일은 원하는 패키지 파일을 검색할 위치의 목록을 포함하고 있습니다.[3] aptitudefull-upgrade라고 하는 더 똑똑한 dist-upgrade 특색을 가집니다.[10]

Configuration and files

/etc/apt는 APT 구성 폴더와 파일을 포함하고 있습니다.

apt-config는 APT 구성 질의 프로그램입니다.[11] apt-config dump는 구성을 보여줍니다.[12]

Files

  • /etc/apt/sources.list:[13] 어디로부터 패키지를 가져올 위치.
  • /etc/apt/sources.list.d/: 추가적인 소스 목록 조각.
  • /etc/apt/apt.conf: APT 구성 파일.
  • /etc/apt/apt.conf.d/: APT 구성 파일 조각.
  • /etc/apt/preferences.d/: 버전 기본 설정 파일을 갖는 디렉토리. 이것은 "고정", 즉 별도의 소스나 다른 버전의 배포판에서 특정 패키지를 얻기 위한 기본 설정을 지정하는 곳입니다.
  • /var/cache/apt/archives/: 검색된 패키지 파일에 대한 저장 영역.
  • /var/cache/apt/archives/partial/: 전송 중인 패키지 파일의 저장 영역.
  • /var/lib/apt/lists/: sources.list에 지정된 각 패키지 자원에 대해 상태 정보에 대한 저장 영역
  • /var/lib/apt/lists/partial/: 전송 중인 상태 정보를 위한 저장 영역.

Sources

APT는 소프트웨어를 찾고 의존성을 해결하기 위해 저장소의 개념에 의지합니다. APT에 대해, 저장소는 인덱스 파일과 함께 패키지를 포함하는 디렉토리입니다. 이것은 네트워크 또는 CD-ROM 위치로 지정할 수 있습니다. 데비안 프로젝트는 25,000개 이상의 소프트웨어 패키지를 다운로드하고 설치할 수 있는 중앙 저장소를 유지합니다.

추가적인 저장소의 임의의 개수가 APT의 sources.list 구성 파일 (/etc/apt/sources.list)에 더해질 수 있고 그런-다음 APT에 의해 질의될 수 있습니다. 그래픽 프론트-엔드는 종종 sources.list를 더 간단하게 수정하는 것을 허용합니다 (apt-setup). 한번 패키지 저장소가 예를 들어, 시스템 설치 중에 지정되면, 해당 저장소에서 패키지는 소스를 지정없이 설치될 수 있고 자동으로 최신 상태로 유지될 것입니다.

네트워크 저장소 외에도, 컴팩트 디스크와 다른 저장 매체 (USB 키드라이브, 하드 디스크...) apt-cdrom을 사용하거나[14] 소스 목록 파일에 file:/ URI를 추가하여 사용될 수 있습니다.[15] apt-cdrom-d 옵션을 사용하여 CD-ROM 이외의 폴더 (즉, 하드 디스크 또는 USB 키 드라이브)를 지정할 수 있습니다. 다운로드에 대해 이용할 수 있는 데비안 CD는 데비안 저장소를 포함하고 있습니다. 이것은 네트워크에 연결되지 않은 시스템을 업그레이드되는 것을 허용합니다. 우리는 apt-zip을 사용할 수도 있습니다.

여러 소스가 같은 패키지를 제공할 때 문제가 나타날 수 있습니다. 그러한 충돌 가능성이 있는 소스를 가지는 시스템은 어떤 소소가 선호되어야 하는지를 제어하기 위해 APT 고정을 사용할 수 있습니다.

APT pinning

APT 고정(APT pinning) 특색은 사용자에게 APT를 다른 저장소에서 다른 버전을 사용할 수 있는 특정 버전의 패키지를 선택하하기 위해 강제하는 것을 허용합니다. 이것은 관리자에게 패키지가 시스템의 다른 패키지와 충돌할 수 있거나 원치 않는 변경에 대해 충분히 테스트되지 않은 버전으로 업그레이드되지 않도록 보장하는 것을 허용합니다.

이렇게 하기 위해, APT의 환경 설정 파일 (/etc/apt/preferences)에서 (pins)가 수정되어야 하지만,[16] 그래픽 프론트-엔드가 종종 고정을 더 간단하게 만듭니다.

Front-ends

Synaptic Package Manager is one of the front-ends available for APT.

더 고급 설치 기능과 더 직관적인 인터페이스를 제공하는 APT에 대한 몇 가지 다른 프런트-엔드가 있습니다. 이것들은 다음을 포함합니다:

  • Synaptic, GTK 그래픽 사용자 인터페이스
  • Ubuntu Software Center, 우분투 프로젝트에 의해 개발된 GTK 그래픽 사용자 인터페이스
  • aptitude, CLIncurses-기반 TUI 인터페이스를 갖는 콘솔 클라이언트
  • KPackage, KDE의 일부
  • Adept Package Manager, KDE (deb, rpm, bsd)에 대해 그래픽 사용자 인터페이스
  • PackageKit, freedesktop.org 프런트-엔드.
  • GDebi, 우분투를 위해 후원되는 GTK-기반 도구. (Qt 버전도 있으며, 우분투 저장소에서 gdebi-kde로 사용할 수 있습니다.)
  • apt-cdrom, APT의 사용 가능한 sources.lists (사용할 수 있는 저장소의 목록)에 새 CDROM을 추가하는 방법. APT 시스템에 CD를 추가하기 위해 apt-cdrom을 사용해야 하며, 수동으로 수행될 수 없습니다.
  • apt-zip, 이동식 미디어, 특히 USB 플래시 드라이브와 함께 apt를 사용하는 방법.
  • aptURL, 브라우저를 통해 클릭 한 번으로 최종-사용자 응용 프로그램을 설치할 수 있도록 하는 우분투 소프트웨어 패키지.[17][18]
  • Cydia, APT를 기반으로 하는 탈옥 iOS를 위한 패키지 관리자 (Telesphoreo 프로젝트의 일부로 iOS에 이식됨).[19][20]
  • Sileo, Cydia와 마찬가지로, 더 최신 버전의 APT를 기반으로 하는 탈옥 iOS용 패키지 관리자 (Electra 팀에 의해 iOS로 이식됨)
  • gnome-apt, GTK/GNOME-위젯-기반 그래픽 프런트-엔드. Havoc Pennington에 의해 개발됨[21]
  • Muon Discover (previous Muon Software Center), Qt-기반 그래픽 사용자 인터페이스
  • Hildon Application Manager (Maemo Application), Maemo 프런트-엔드
  • apticron, 시스템 관리자에게 보류 중인 업데이트 알림을 이메일로 보내기 위해 cron을 통해 실행되도록 설계된 서비스.
  • APT Daemon, 사용자에게 PolicyKit을 통해 소프트웨어를 설치하도록 허용하는 서비스로 실행되는 프런트-엔드이고 차례로 (리눅스 민트 소프트웨어 관리자와 함께) 우분투 소프트웨어 센터에서 사용되는 프레임워크입니다.
  • Package Installer, MX Linux의 일부.[1]
  • Apt-offline: 직접 인터넷 연결없이 모든 데비안-유형 리눅스 설치에 임의의 사용 가능한 컨테이너화되지 않은 변경을 만드는 편리한 방법. 어쨌든, 일부 관련 리눅스의 유형에 Apt-offline을 설치하고 PPA를 소스-목록에 추가하는 것과 같이 임시 직접 연결이 요구될 수 있습니다.

APT 프런트-엔드는 다음을 수행할 수 있습니다:

  • 새로운 패키지를 검색.
  • 패키지를 업그레이드.
  • 패키지를 설치 또는 제거.
  • 새로운 출시로 전체 시스템을 업그레이드.

APT 프런트-엔드는 설치 또는 업그레이드 중인 패키지의 의존성을 나열하고, 새로 설치된 패키지에서 권장하거나 제안한 패키지도 설치해야 하는지 관리자에게 문의하고, 의존성을 자동으로 설치하고, 시스템에서 사용되지 않는 파일 및 패키지 제거와 같은 기타 작업을 수행할 수 있습니다.

History

apt-get 프로그램으로 이어진 원래의 노력은 코드명 deity로 알려진 dselect 교체 프로젝트였습니다.[22] 이 프로젝트는 1997년 당시 데비안 릴리스 관리자였던 Brian White에 의해 의뢰되었습니다. apt-get의 최초 동작하는 버전은 dpkg-get이라고 불리웠고 새로운 UI를 뒷받침할 핵심 라이브러리 기능에 대한 테스트 프로그램으로만 의도되었습니다.[23]

APT의 대부분의 원래 개발은 IRC에서 이루어졌으므로, 기록이 손실되었습니다. 'Deity Creation Team' 메일링 리스트 아카이브는 주요 하이라이트만 포함하고 있습니다.

'Deity'라는 이름은 그 이름의 종교적 본성에 걸친 우려로 프로젝트에 대해 공식 이름에서 포기되었습니다. APT라는 이름은 상당한 내부와 공개 토론 끝에 결국 결정되었습니다. 궁극적으로 그 이름은 IRC에서 제안되었고, 수락되고 그런-다음 메일링 리스트에 올려졌습니다.[24]

APT는 1998년에 도입되었고 원래의 테스트 빌드가 IRC에서 유포되었습니다. 그것을 포함하는 최초의 데비안 버전은 1999년 3월 9일에 출시된 데비안 2.1이었습니다.[25]

결국 dselect 사용자 인터페이스를 교체하려는 Deity 프로젝트의 원래 목표는 끝내 실패였습니다. 프로젝트의 사용자 인터페이스 부분에 대한 작업은 apt-get의 첫 번째 공개 출시 이후 버려졌습니다 (UI 디렉토리는 CVS 시스템에서 제거되었습니다). dselect 방법과 명령줄 도구로서의 APT에 대한 반응은 매우 훌륭하고 긍정적이어서 모든 개발 노력은 도구를 유지 관리하고 개선하는 데 집중되었습니다. 얼마 지나지 않아 여러 독립적인 사람들이 libapt-pkg 위에 사용자 인터페이스를 구축했습니다.

결국, 새로운 팀이 프로젝트를 선택하고, 새로운 기능을 구축하기 시작했고 패키지 저장소를 인증하기 위해 강력한 암호화 서명을 사용하여 Secure APT 기능을 도입한 APT 버전 0.6을 출시했습니다.[26]

Variants

APT는 원래 dpkg에 대해 데비안의 .deb 패키지와 함께 동작하기 위한 프론트-엔드로 설계되었습니다. RPM 패키지 관리자 시스템에서도 작동하도록 수정된 APT의 버전이 APT-RPM으로 출시되었습니다.[27] Fink 프로젝트는 일부 자체 패키지 관리 임무를 위해 APT를 Mac OS X로 이식해 왔고,[28] APT는 OpenSolaris에서도 사용할 수 있습니다.

apt-file

apt-file은 어떤 패키지가 지정된 파일을 포함하는 것을 찾거나 원격 저장소의 패키지에 포함된 모든 파일을 나열하기 위해 APT와 별도로 패키지된 명령입니다.[29]

Troubleshootings

패키지 유지
간혹 문제가 되는 패키지를 이전 버전으로 유지할 필요가 있습니다:
  • sudo apt-mark hold libsdl2-2.0-0
유지된 목록 보기
  • apt-mark showhold
유지된 패키지 풀기
  • sudo apt-mark unhold libsdl2-2.0-0
특정 저장소 설치 패키지 목록
  • sudo apt list --installed |grep experimental
All package reinstall
다음 스크립트를 참조하십시오:
#!/bin/bash
#
# Script to pre-populate apt-get proxy for faster later downloads.
# It uses apt-get and wget to pull all the specified packages.
#

# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
   echo "You're not root, are you?" 1>&2
   exit 1
fi

# Specify wanted packages
PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)

# Clears out the local repository of retrieved package files
apt-get clean

# Resynchronize the package index files from their sources
apt-get update

# Re-install specified packages at the newest version. 
apt-get install --reinstall $PKGLIST
간혹, 미러 서버에서 파일을 모두 받지 못해서 문제가 생길 수 있기 때문에, 그럴 경우 두 번째에 clean update를 주석처리하고 진행하십시오

See also

References

  1. ^ "Initial release". apt package changelog. The Debian project. 31 March 1998. Retrieved 18 December 2021.
  2. ^ "Details of package apt in bullseye". Debian packages. The Debian project. 14 April 2024. Retrieved 18 April 2024.
  3. ^ a b c "apt-get(8)". Debian Manpages.
  4. ^ Byfield, Bruce (2004-12-09). "An apt-get primer".
  5. ^ "From the archives: the best distros of 2000". Tux Radar.
  6. ^ Dorgan, David (2004-01-19). "Migrating to Debian". linux.ie. Archived from the original on 2010-04-19.
  7. ^ "Mobile Linux development with Familiar and a minimal Debian". Mobile Tux.
  8. ^ "Why Debian".
  9. ^ "Debian policy manual".
  10. ^ "Discussion on dist-upgrade vs. full-upgrade".
  11. ^ "apt-config(8)". Debian Manpages.
  12. ^ "Query APT Configuration Using apt-config - Debian Admin".
  13. ^ "SourcesList". Debian Wiki.
  14. ^ "apt-cdrom(8)". Debian Manpages.
  15. ^ e.g. deb file:/mnt/install stable main contrib non-free.{{citation}}: CS1 maint: postscript (link)
  16. ^ "AptConfiguration". Debian Wiki. Retrieved 2020-05-18.
  17. ^ "AptURL". Ubuntu Wiki. Retrieved 16 April 2016.
  18. ^ "How To Install Software in Ubuntu Linux: A Complete Guide for Newbie".
  19. ^ Jurick, David (2009). iPhone Hacks: Pushing the iPhone and iPod touch Beyond Their Limits. O'Reilly Media, Inc. p. 20. ISBN 9780596516642. Retrieved January 18, 2013.
  20. ^ Adhikari, Richard (March 20, 2008). "Android, Schmandroid: Linux on the iPhone". LinuxInsider. Retrieved January 18, 2013.
  21. ^ Mullikin, Glenn (Dec 2001). "The Evolution of Debian Package Management Systems". AUUGN. Vol. 22, no. 4. p. 50. ISSN 1035-7521. gnome-apt was written by Havoc Pennington
  22. ^ White, Brian C. (1997-04-11). ""dselect" replacement project ("deity")". deity@lists.debian.org (Mailing list).
  23. ^ Gunthorpe, Jason (1998-03-02). "It's working". deity@lists.debian.org (Mailing list).
  24. ^ Gunthorpe, Jason (1998-03-19). "Re: 2 things (!)". deity@lists.debian.org (Mailing list).
  25. ^ "A Brief History of Debian". debian.org.
  26. ^ "Secure APT". Debian Wiki. Retrieved 2006-09-05.
  27. ^ "APT-RPM". apt-rpm.org. Archived from the original on 21 April 2008. Retrieved 2008-05-12.
  28. ^ "Fink - About". www.finkproject.org. Archived from the original on 11 May 2008. Retrieved 2008-05-12.
  29. ^ "Inspecting and extracting Debian package contents". Packagecloud blog. 2015-10-13.

External links