강제 apt-get 프롬프트 예/아니요

강제 apt-get 프롬프트 예/아니요

apt-get예/아니오 메시지를 강제로 표시하는 방법이 있나요 ? 옵션 이 있지만 없거나 유사한 옵션이 --force-yes있는 것 같습니다 . --force-prompt모든 종속성이 설치된 패키지를 설치하려고 하면 예/아니요 프롬프트가 표시되지 않고 설치가 시작됩니다. 잠재적인 종속성이 미리 설치되었는지 알 수 없기 때문에 종속성이 존재하는지, 어떤 종속성이 설치될지 확인하려는 경우 이는 문제가 될 수 있습니다.

노트:"apt-get install"은 언제 계속할지 여부를 확인하도록 요청합니까?프롬프트가 표시되는 표준 조건을 설명하므로 다소 관련이 있습니다. 강제로 하는 방법을 알고 싶습니다.

답변1

현재 apt-get 구현에서는 이를 수행할 수 없으므로 기능 요청을 제출하고 관리자에게 호소해야 합니다. apt-get의 현재 동작은 설치된 패키지 목록이 설치될 패키지 목록과 동일하고 다른 패키지가 업그레이드 또는 중단의 영향을 받지 않도록 명시적으로 요청하는 경우,apt-get은 사용자가 무엇을 할지 이미 결정했다고 가정합니다., 패키지를 실제로 설치하지 않고 어떤 일이 일어날지 확실하지 않거나 분석하고 싶다면 다음을 사용할 수 있습니다.코스타스가 추천하는-s, --simulate, --just-print, --dry-run, --recon, --no-act.

설치할 패키지의 버전(이 경우 버그)을 분석하고 실제로 설치하기 전에 경고할 수 있는 apt-listbugs와 같은 다른 도구가 있습니다.

답변2

yes이 명령은 설치할 때만 가정합니다.(명령줄에서 시작) 및모든 종속성시스템은 이미 필수 패키지를 제외하고는 아무것도 설치할 필요가 없습니다.

즉, "볼 것이 없으면(추가 패키지 없음) 팁도 없습니다(묻는 것이 없음)"입니다.

테스트 목적으로 키를 사용할 수 있습니다-s, --simulate, --just-print, --dry-run, --recon, --no-act

답변3

오래된 질문인 것 같습니다. 하지만 지금은 비슷한 상황입니다.대개나는 무언가를 사용 sudo aptitude install -P PACKAGE_NAME하고 설치하기 전에 항상 묻습니다. 그러나 현재 Debian의 기본 패키지 관리자에는 apt|apt-get이 기능이 없습니다. 물론, 여전히 설치 aptitude하고 사용할 수 있습니다... 하지만 설치하기 전에 물어볼 작은 sh/bash 래퍼 함수/스크립트를 작성했습니다 apt-get. 정말 원시적이어서 터미널에 함수로 작성했습니다.

$ f () { sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf'; read -p 'Do You want to continue (y/N): ' ans; case $ans in [yY] | [yY][eE][sS]) sudo apt-get -y install "$@";; *);; esac; }

이제 좀 더 명확하게 설명하자면 다음과 같습니다.

f () {
  # Do filtered simulation - without lines contains 'Inst' and 'Conf'
  sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';

  # Interact with user - If You want to proceed and install package(s),
  # simply put 'y' or any other combination of 'yes' answer and tap ENTER.
  # Otherwise the answer will be always not to proceed.
  read -p 'Do You want to continue (y/N): ' ans;
  case $ans in
    [yY] | [yY][eE][sS])
      # Because we said 'yes' I put -y to proceed with installation
      # without additional question 'yes/no' from apt-get 
      sudo apt-get -y install "$@";
    ;;
    *)
      # For any other answer, we just do nothing. That means we do not install
      # listed packages.
    ;;
  esac
}

이 기능을 sh/bash 스크립트로 사용하려면 스크립트 파일( my_apt-get.sh예: 내용이 포함된 스크립트 파일)을 생성하세요(참고: 목록에는 더 짧게 만들기 위한 주석이 포함되어 있지 않습니다 ;-)).

#!/bin/sh

f () {
  sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';
  read -p 'Do You want to continue (y/N): ' ans;
  case $ans in
    [yY] | [yY][eE][sS])
      sudo apt-get -y install "$@";
    ;;
    *)

    ;;
  esac
}

f "$@"

그런 다음 예를 들어 ~/bin/실행 가능하게 만드십시오 $ chmod u+x ~/bin/my_apt-get.sh. 디렉토리가 변수 ~/bin에 포함되어 있으면 PATH다음을 사용하여 간단히 수행할 수 있습니다.

$ my_apt-get.sh PACKAGE_NAME(S)_TO INSTALL

참고:

  • 이 코드는 을 사용합니다 sudo. 계정을 사용하는 경우 root조정이 필요할 수 있습니다.
  • 코드가 셸 자동 완성을 지원하지 않습니다.
  • 코드가 쉘 모드(예: "!", "*", "?", ...)에서 어떻게 작동하는지 모릅니다.

관련 정보