apt-get에서 예 / 아니요


11

apt-get예 / 아니요 프롬프트를 표시 하는 방법이 있습니까? --force-yes옵션은 존재하지만 더있을 것 같다 --force-prompt또는 이와 유사한 옵션을 선택합니다. 모든 종속성이 이미 설치된 패키지를 설치하려고하면 예 / 아니요 프롬프트가 표시되지 않고 설치가 시작됩니다. 잠재적 종속성이 미리 설치되어 있는지 알 수 없기 때문에 종속성이 있는지 여부와 설치할 종속성을 검토하려는 경우 귀찮을 수 있습니다.

참고 : "apt-get install"은 언제 계속할 것인지 묻는 메시지를 표시합니까? 프롬프트가 표시되는 표준 조건에 대해 설명한다는 점에서 다소 관련이 있습니다. 나는 그것을 강제하는 방법을 알고 싶습니다.


1
"종속성이 있는지 여부와 설치 될 항목을 검토하려는 경우이 작업이 번거로울 수 있습니다." 나는 이것으로 혼란스러워합니다. 종속성이 설치되어 있지 않으면 무엇을 검토하고 있습니까?
Faheem Mitha

2
흥미로운 질문입니다. apt-get적절한 옵션 으로 패치 하는 것이 부족한 방법은 없습니다 . 그러나이 가상 옵션은 솔직히 나에게 유용하지 않습니다.
Faheem Mitha

@FaheemMitha이 작업을 수행하는 목적은을 (를) 사용 apt-get install하지 않고 사용할 수있는 새로운 종속성을 찾는 것이 훨씬 쉽다는 것 apt-cache showpkg입니다.
user369450

답변:


10

현재 apt-get 구현 으로이 작업을 수행 할 수있는 방법이 없으므로 기능 요청을 열고 관리자에게 호소해야합니다. apt-get의 현재 동작은 암시 적으로 설치되도록 선언 한 패키지 목록이 설치 될 패키지 수와 같고 다른 패키지가 업그레이드 또는 중단의 영향을받지 않는 경우 apt-get은 이미 사용자를 가정합니다. 확실 할 것입니다 것입니다 당신이 확실하지 않거나 실제로 패키지를 설치하지 않고 수행됩니다 무엇을 분석 할 경우, 당신은 사용할 수 있습니다 코스타스 추천 의를 -s, --simulate, --just-print, --dry-run, --recon, --no-act.

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


4

이 명령은 가정 yes설치하는 경우 단지 하나 개의 패키지 (명령 줄에서 시작) 및 모든 종속 하나의 패키지를 물었다 제외하고 설치하기 위해 시스템이 이미 즉, 아무것도.

다시 말하면 "보이지 않는 패키지 (추가 패키지 없음)이면 프롬프트가 표시되지 않는 것"입니다.

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


@cpburnz 경우 all dependecies are installed이미 당신은 할 수 없습니다 다른 패키지가 설치되지 않도록 promted되었다.
Costas

0

오래된 질문은 알 수 있지만 지금은 비슷한 상황입니다. 일반적으로 나는 sudo aptitude install -P PACKAGE_NAME설치하기 전에 항상 묻는 것을 사용합니다. 그러나 현재 데비안의 기본 패키지 관리자는 apt|apt-get이 기능이 없습니다. 물론 나는 여전히 aptitude그것을 설치 하고 사용할 수 있습니다 ... 그러나 나는 apt-get설치하기 전에 물어볼 작은 sh / bash 래퍼 함수 / 스크립트를 작성했습니다 . 그것은 실제로 원시적이며 터미널에서 함수로 작성했습니다.

$ 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. 디렉토리 ~/binPATH변수에 포함되어 있으면 다음과 같이 간단히 디렉토리 를 실행할 수 있습니다.

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

참고 :

  • 코드는를 사용 sudo합니다. root계정 을 사용하는 경우 계정을 조정해야합니다.
  • 이 코드는 쉘 자동 완성을 지원하지 않습니다
  • 코드가 쉘 패턴과 어떻게 작동하는지 전혀 모릅니다 (예 : "!", "*", "?", ...)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.