단일 데비안 패키지를 "수동 설치"로 표시하지 않고 어떻게 업그레이드할 수 있나요? apt install upgradeable-lib
물론입니다. 하지만 그렇게 해야 합니다 apt-mark auto
(그렇지 않으면 패키지가 더 이상 자동으로 제거될 수 없습니다).
답변1
통과소스 탐색, 귀하가 찾고 있는 기능을 찾았지만 해당 기능은 다음에서만 사용할 수 있습니다.몇 달 전에 한 약속, 그래서 불스아이(향후 Debian 11)에서만 사용할 수 있습니다:
새로 설치된 모든 패키지를 자동으로 설치된 것으로 표시 지원
새로 설치된 모든 패키지를 자동 설치로 표시하려면 "apt install"에 "--mark-auto" 옵션을 추가하세요.
동등한 구성 옵션(Debian 10에서는 유효하지 않음)은 입니다 APT::Get::Mark-Auto
.
답변2
복사 붙여넣기가 지겨워서 결국 글을 쓰게 되었어요적절한지정된 패키지를 업그레이드하는 간단한 작업을 완료합니다(또는 업그레이드 가능한 목록에서 선택하여 dialog
). apt-mark showauto pkg...
나중에 복원할 수 있는 자동 설치 상태를 인쇄합니다 apt-install
.
답변3
나는 얼마 전에 dpkg -l
이전 시스템에서 실행하여 제공되는 패키지 목록을 사용하여 이전 설치에서 새 설치로 모든 것을 설치하려고 시도하면서 이 문제에 직면했습니다.
이전에 가지고 있던 모든 것을 원하지만 설치된 시스템의 수명 동안 설치한 모든 것을 기억할 수 없는 경우에 유용합니다.
다음 스크립트는 install_new
이 함수를 사용하여 모든 것을 설치하려고 시도하여 이를 수행합니다. 비결은 먼저 실행하는 것입니다 dpkg -s package-name
. 패키지를 찾을 수 없으면 패키지가 아직 설치되지 않았음을 알 수 있도록 오류가 반환됩니다.
아래 스크립트에는 명령 echo
에 접두사가 있으므로 apt
접두사를 제거하기 전 테스트 실행이 됩니다. 이를 통해 입력 목록을 편집하고 새 시스템에 보관하고 싶지 않은 항목을 제거하거나 나중에 설치를 위해 실행할 스크립트 출력을 파일로 리디렉션할 수 있도록 먼저 수행할 작업을 확인할 수 있습니다. 이는 일부 "재설치"가 실패할 수 있으므로 특히 유용합니다. 따라서 문제를 해결하고 파일을 편집하여 중단한 부분부터 다시 시작해야 할 수도 있습니다.
이 스크립트를 사용하여 설치 스크립트를 생성하고 echo
스크립트의 다른 명령을 주석 처리해야 합니다.
#!/bin/bash
function install_new () {
if [[ -z "$1" ]]
then
echo "install_new called with empty argument"
rc=1
else
dpkg -s "$1" &> /dev/null
rc=$?
if (( rc ))
then
echo sudo apt-get install "$1"
rc=$?
else
echo -e "\tSkipping [$1] - already installed"
rc=1
fi
fi
return ${rc}
}
while read package action
do
echo "Package [${package}] Action [${action}]"
action="${action:-install}" ## If action is not present, default to install
case "${action}" in
#
"install")
install_new "${package}"
;;
#
*)
echo -e "\tDon't know how to ${action} ${package}"
;;
esac
done < "${1}"
답변4
apt
그러나 대화형 모드 에서는 aptitude
이 작업을 수행할 수 없습니다 .
왜 이런 일을 하게 되었는지 궁금합니다. 자동으로 설치된 라이브러리는 설치를 원한다고 표시한 라이브러리를 실행해야 하기 때문에 설치됩니다. apt
다른 버전의 라이브러리 설치를 요청함으로써 귀하는 해당 버전을 설치하고 싶다는 뜻을 표현합니다. 더 이상 자동이 아닙니다. 사용자가 요청한 것이므로 apt
종속 패키지가 사라지면 더 이상 제거 가능한 것으로 간주되지 않습니다.