가짜 low battery 알림 때문에 testing repo를 pinning해 NUT을 올리기
멀쩡히 전기가 들어오고 있는데 LOWBATT 알림이 간헐적으로 왔다. 배터리를 갈아야 하나 싶었는데 아니었다.
APC의 특정 기종에서 UPS가 LB 신호를 잘못 보내는 알려진 이슈다. BXnnnnMI 계열이 여기 해당한다.
NUT 2.8.4에 이걸 걸러내는 옵션이 들어갔다.
Added support for lbrb_log_delay_sec=N setting to delay propagation of LB or LB+RB state (buggy with APC BXnnnnMI devices circa 2023-2024).
[apc]
pollonly
lbrb_log_delay_sec = 3
lbrb_log_delay_without_calibrating
신호가 3초 이상 유지될 때만 진짜 LB로 본다는 뜻이다. 순간적으로 튀는 가짜 신호는 걸러진다.
문제는 stable에 2.8.4가 없다는 것
Debian stable에 들어 있는 건 2.8.1이다. 이 옵션은 2.8.4부터라 그냥은 못 쓴다. testing repo를 넣어야 하는데, 그대로 두면 시스템 전체가 testing 쪽 패키지로 끌려간다.
apt pinning으로 nut 관련 패키지만 testing에서 가져오게 했다.
먼저 repo를 추가한다.
deb http://deb.debian.org/debian testing main
그리고 우선순위를 나눈다.
# 모든 패키지에 대해 testing repo의 우선순위를 아주 낮게
Package: *
Pin: release a=testing
Pin-Priority: 100
# nut 관련 패키지만 아주 높게
Package: nut nut-* libnut* libupsclient*
Pin: release a=testing
Pin-Priority: 1001
Pin-Priority: 100 은 "이미 설치된 것보다 낮음"이라 알아서 끌려오지 않는다. 1001 은 다운그레이드까지 허용하는 값이라 명시한 패키지는 무조건 testing 쪽을 쓴다.
어떤 패키지를 목록에 넣을지 미리 확인한다
Package: 줄에 무엇을 적을지가 중요하다. 빠뜨리면 그 의존성만 stable에 남아 버전이 안 맞는다.
시뮬레이션으로 먼저 본다.
$ apt -s install nut
NOTE: This is only a simulation!
Installing:
nut
Installing dependencies:
libltdl7 libnspr4 libnss3 libnutscan2 libupsclient6t64 nut-client nut-server
여기 나온 것 중 nut과 관련된 것들이 nut-*, libnut*, libupsclient* 패턴에 걸리는지 확인하고 나서 pinning 파일을 썼다.
$ apt update
$ apt policy nut
$ apt install nut/testing
apt policy nut 으로 어느 쪽이 우선인지 확인한 다음 설치한다.