
APT Pinning 은 특정 패키지나 저장소의 우선순위를 직접 설정하는 강력한 기능을 가리킴.
- APT Pinning 의 목적은 패키지가 의도치 않게 업데이트되거나 다운그레이드되는 것을 방지하는 것임.
- APT Pinning 은
- 시스템의 안정성을 유지하면서도
- 필요한 패키지를 특정 버전으로 고정하거나,
- 실험적인 저장소의 패키지를 우선 설치하는 것을 가능케 함.
Pinning 설정은 /etc/apt/preferences 파일이나 /etc/apt/preferences.d/ 디렉터리 내의 파일에 pinning 규칙을 추가하는 작업을 통해 이루어짐.
일반적으로 /etc/apt/preferences.d/ 에
패키지명.pref 와 같이 별도의 파일을 만들어
관리하는 것이 좋은 방법.
Pinning 필드에 대한 참고 자료
Pinning 규칙은 APT가 패키지 저장소의 Release 파일에서 읽어오는 다양한 필드를 조건으로 활용하여 구성됨.
때문에, 이 필드들을 정확히 이해하는 것이 중요한 요소.
a(Archive): 저장소의 배포판 이름(코드네임)을 지정하는 필드. 예시로 jammy, jammy-updates 등이 있는 것.o(Origin): 패키지를 제공하는 주체(공급자)를 지정하는 필드. 예시로 Ubuntu, UbuntuESMApps 등이 있는 것.n(Codename / Suite): a와 유사하게 저장소의 코드네임을 지정하는 필드.l(Label): 저장소의 라벨(레이블)을 지정하는 필드. 예시로 Ubuntu, Ubuntu-Security 등이 있는 것.v(Version): 배포판의 버전 번호를 지정하는 필드. 예시로 18.04, 22.04 등이 있는 것.c(Component): 저장소의 컴포넌트(섹션)를 지정하는 필드. 예시로 main, universe 등이 있는 것.
위의 필드들은 다음의 경로의 파일들로 참고 가능함:
/var/lib/apt/lists
# 다음의 명령어를 응용.
grep -E '^(Archive|Origin|Codename|Suite|Label|Version|Component):' /var/lib/apt/lists/*Release
2025.08.10 - [Linux] - [Ubuntu] /var/lib/apt/lists 디렉터리의 용도
[Ubuntu] /var/lib/apt/lists 디렉터리의 용도
/var/lib/apt/lists directory:"APT(Advanced Package Tool)의 패키지 저장소" 의 메타데이터 저장용 디렉터리."sources.list에 정의된 저장소"로부터 실제로 다운로드된 패키지 '목록'을 저장하는 캐시 디렉터리.APT
ds31x.tistory.com
Pinning 규칙의 구성 요소
Pinning 규칙은 다음 세 가지 요소로 이루어지는 구조.
Package:- 규칙을 적용할 패키지
- 모든 패키지에 적용하려면
*를 이용.
Pin:- 위에 설명된 필드들을 조합하여 Pinning을 적용할 조건을 지정하는 필드.
Pin-Priority:- Pinning 규칙에 부여할 우선순위
숫자로, - 숫자가 높을수록 우선순위가 높아지는 방식.
- Pinning 규칙에 부여할 우선순위
중요:
- APT는 우선순위가 높은 저장소를 항상 선호하는 원칙을 따르는 시스템임.
- 동일 버전의 패키지가 우선순위가 다른 두 저장소에 존재한다면, APT는 우선순위가 더 높은 저장소의 패키지를 선택하는 것이 규칙.
Pinning 활용 방법 예시
1. 특정 패키지를 고정하여 업데이트 방지
vim 패키지를 현재 설치된 버전으로 고정하고, apt upgrade 시 업데이트되지 않도록 설정하는 방법.
/etc/apt/preferences.d/vim-hold.pref 파일 생성:
Package: vim
Pin: version 2:8.2.3995-1ubuntu2.24
Pin-Priority: 1001
이 설정은 vim의 특정 버전(2:8.2.3995-1ubuntu2.24)에 우선순위 1001을 부여하여, 다른 어떤 버전이 존재하더라도 이 버전을 항상 최우선으로 선택하게 하는 방식.
2. WSL에서 NVIDIA CUDA 설치 시 Pinning 활용
WSL(Windows Subsystem for Linux)에서 NVIDIA CUDA를 설치할 때,
- 공식 NVIDIA 저장소의 패키지가 기본 Ubuntu 저장소의 패키지와 충돌하는 경우가 종종 발생함.
- 이를 방지하기위해 Pinning을 사용하는 방식을 채택함.
일반적으로 NVIDIA는 설치 스크립트를 통해 아래와 같은 Pinning 설정을 추가.
/etc/apt/preferences.d/cuda.pref 파일 내용:
Package: *
Pin: origin nvidia.github.io
Pin-Priority: 600
이 설정은 origin이 nvidia.github.io인 저장소의 패키지에 우선순위 600을 부여하는 방법.
- 이를 통해 기본 Ubuntu 저장소의 우선순위 500보다 높은 우선순위를 갖게 하는 목적이 있음.
- 결과적으로, Ubuntu 저장소의 호환되지 않는 패키지가 설치되는 것을 방지하고, NVIDIA 드라이버가 정상적으로 작동하도록 보장하는 방식.
3. 설정된 Pinning 규칙 제거
더 이상 특정 저장소의 우선순위를 유지할 필요가 없을 경우, Pinning 규칙을 제거할 수 있음.
가장 간단한 방법은 Pinning 규칙이 담긴 파일을 삭제하는 것.
위에서 설정한 WSL CUDA Pinning의 예시를 기준으로 설명하며 다음과 같음:
sudo rm /etc/apt/preferences.d/cuda.pref
이 명령어를 실행하면 cuda.pref 파일이 삭제되고, 다음 apt 명령 실행 시 Pinning 규칙이 적용되지 않음.
파일을 삭제한 후에는 apt-cache policy 명령어로 우선순위가 원래대로 돌아왔는지 확인하는 것이 좋은 방법임.
설정 적용 및 확인
앞서 말했듯이 Pinning 설정 파일을 생성하거나 수정한 후에는sudo apt update를 실행할 필요가 없음.
apt 명령어는 실행될 때마다 preferences.d 디렉터리의 내용을 자동으로 읽는 방식으로 동작하므로 굳이 update가 필요없음.
명시적으로 설정 적용 여부를 확인하려면 apt-cache policy 명령어를 사용할 것.
apt-cache policy <패키지명>
이 명령어를 실행하면 Pinning 규칙에 따라 우선순위가 변경된 것을 확인할 수 있음.
같이보면 좋은 자료들
https://dsaint31.tistory.com/454
[Linux] Debian 계열 패키지 관리 툴: apt, apt-get
apt (apt-get, apt-cache)apt는Debian 계열의 Linux에서 패키지 관리 SW로서,Package Management System (패키지관리시스템, Package Manager)의High Level Command Line Interface를 제공한다. 달리 말하면 apt-get과 apt-cache와 같은
dsaint31.tistory.com
'Linux' 카테고리의 다른 글
| WSL 을 winget으로 설치 및 제거하기 (1) | 2026.01.05 |
|---|---|
| [Ubuntu] /var/lib/apt/lists 디렉터리의 용도 (1) | 2025.08.10 |
| [Linux] ln: link command (2) | 2025.06.08 |
| [Linux] scp: Secure Copy Protocol (1) | 2024.12.26 |
| [Linux] cron and crontab (0) | 2024.06.27 |