애플리케이션의 빌드 지침을 읽을 때 apt
.
나중에 이러한 패키지가 더 이상 필요하지 않으면 설치할 때 이 패키지 세트에 이름이나 레이블을 지정하고 싶습니다. 이렇게 하면 해당 패키지를 설치한 이유에 대한 일종의 컨텍스트를 제공하고 컬렉션 이름을 더 쉽게 참조할 수 있습니다. 배치를 언로드합니다.
그게 가능합니까?
현재는 개별 패키지를 설치하는 이유에 대해 별도의 설명을 관리해야 한다는 느낌을 받고 있습니다.
답변1
한 가지 방법은 설치 중에 apt에 임의의 옵션을 전달하는 것입니다.
예를 들어
apt -o foo=bar install when
..결과는 이 항목 내에 있습니다./var/log/history.log
root@ans4:~# tail -4 /var/log/apt/history.log
Start-Date: 2022-10-27 12:53:12
Commandline: apt -o foo=bar install when
Install: libsigsegv2:amd64 (2.13-1, automatic), when:amd64 (1.1.38-2), m4:amd64 (1.4.18-5, automatic)
End-Date: 2022-10-27 12:53:14
root@ans4:~#
따라서 일종의 -o andreas-reason=needed-for-db
구성을 사용하여 시작할 수 있습니다.
logrotate
원치 않는 회전/제거를 방지하려면 조정이 필요합니다 .
root@ans4:~# cat /etc/logrotate.d/apt
/var/log/apt/term.log {
rotate 12
monthly
compress
missingok
notifempty
}
/var/log/apt/history.log {
rotate 12
monthly
compress
missingok
notifempty
}
root@ans4:~#
답변2
파일 3개:
<packages.txt>
list
of
packages
설치 문제는... 질문에 요구 사항이 없고 너무 게으르기 때문에 작성하지 못합니다. 또한 아래 코드는 작동하지 않습니다. 왜냐하면 apt
기반 기계를 사용하기에는 너무 게으르기 때문입니다 . 적어도 이것은 설명됩니다.
#!/usr/bin/env bash
# <remove.sh>: Uninstall all packages lised in ./packages.txt.
while read PACK
do
sudo apt remove "$PACK"
done < 'packages.txt'
sudo apt autoremove
sudo apt clean
두 개의 "패키지 세트"가 교차한다고 가정합니다. 예를 들어 둘 다 gcc가 필요합니다. 그 중 하나만 제거되면 어떻게 되나요?
물론 그것은 혼란이었다. 안전하게 포맷하는 방법은 packages.txt
... 제가 아는 바가 아닙니다.
packages.txt
아이디어: 제거를 피할 수 있을 만큼 스마트하게 생성된 설치 스크립트를 만드세요 gcc
.