apt: 기본 답변을 "Y"에서 "N"으로 변경합니다.

apt: 기본 답변을 "Y"에서 "N"으로 변경합니다.

RPM Linux에 무엇이든 설치할 때 dnf가장 간단한 호출로 메시지가 표시되면 기본 대답은 "N"(아니요)이고 사용자는 "Y"(또는 "y")를 누른 다음 Enter를 눌러 소프트웨어 패키지를 설치해야 합니다. 설치를 중단하려면 Enter 키를 누르기만 하면 됩니다.

Debian 기반 시스템에서 동일한 작업을 수행하면 apt기본값은 "Y"(예)입니다. 실수로 Enter 키를 두 번 누르면 시스템에 심각한 결과를 초래할 수 있습니다(특히 apt패키지가 시도하려는 패키지와 충돌하는 경우). install 을 실행하면 패키지가 동일한 프로세스로 제거됩니다.))

apt그래서 내 질문은: 프롬프트도 기본값으로 "N"으로 설정할 수 있습니까 ?

시스템이 배포되는 동안 이는 별칭 명령줄 옵션이 아닌 구성이어야 합니다.

답변1

찌르다원천:

      if (YnPrompt(_("Do you want to continue?")) == false)

다양한 위치의 종속성 함수YnPrompt()이를 위해:

// YnPrompt - Yes No Prompt.                      /*{{{*/
// ---------------------------------------------------------------------
/* Returns true on a Yes.*/
bool YnPrompt(char const * const Question, bool const Default, bool const ShowGlobalErrors, std::ostream &c1o, std::ostream &c2o)
{
...
bool YnPrompt(char const * const Question, bool const Default)
{
   return YnPrompt(Question, Default, true, c1out, c2out);
}

그리고Default기본값은true:

// prompting
APT_PUBLIC bool YnPrompt(char const *const Question, bool Default = true);
bool YnPrompt(char const * const Question, bool const Default, bool const ShowGlobalErrors, std::ostream &c1o, std::ostream &c2o);

[Y/n]힌트가 활성화된 경우 다양한 언어 또는 덜 일반적인 언어(존재하는 언어, 아래 예 참조)로 디스플레이를 번역/현지화하는 섹션이 있습니다 .[y/N]

   if (Default == true)
      // TRANSLATOR: Yes/No question help-text: defaulting to Y[es]
      //             e.g. "Do you want to continue? [Y/n] "
      //             The user has to answer with an input matching the
      //             YESEXPR/NOEXPR defined in your l10n.
      c2o << " " << _("[Y/n]") << " " << std::flush;
   else
      // TRANSLATOR: Yes/No question help-text: defaulting to N[o]
      //             e.g. "Should this file be removed? [y/N] "
      //             The user has to answer with an input matching the
      //             YESEXPR/NOEXPR defined in your l10n.
      c2o << " " << _("[y/N]") << " " << std::flush;

그런 다음그 부분대답이 없으면 프롬프트의 입력을 검색합니다.APT 구성에 의해 강제됨.

Default그래서 힌트는 함수를 호출할 때 사용하는 매개변수 값에 따라 달라집니다.

[Y/n]이 매개변수는 기본 프롬프트/ 답변 을 벗어나 몇 군데에서만 제공되며 Yes, 매번 상수로 직접 제공되므로 APT 구성에 의존하지 않습니다. 예는 다음에서 찾을 수 있습니다.원천을 위한 apt-mark:

      if (YnPrompt(_("Do you want to continue?"), false) == false)

그리고잘못된다음과 같이 힌트를 요청합니다 [y/N].

# apt-mark minimize-manual
The following packages will be marked as automatically installed:
[...]
Do you want to continue? [y/N] 
#

따라서 이러한 프롬프트가 발생하지 않도록 APT 구성이 있습니다.APT::Get::Assume-Yes또는APT::Get::Assume-NoYes프롬프트를 No은직접 / 에서 / 로 변경되며 , 기본 프롬프트/응답은 / 에서 / 로 변경 될 수 없습니다 .APT::Mark::Simulate[Y/n]Yes[y/N]No[y/N]No[Y/n]Yes


결론: 이 기능은 현재 사용할 수 없습니다. 이는 전달된 매개변수가 평가되는 방식을 변경하기 위해 검사할 수 있는 하나 또는 두 개의 새로운 전용 APT 구성 매개변수("어떻게" 및 "작업"과 유사)를 생성하여 APT::Get::Assume-Yes달성할 수 있습니다 . 또는 쿼리 시 해당 명령이 전달하는 내용을 변경하기 위해 특정 APT 명령(예: )과 관련된 다른 APT 구성 매개변수가 있을 수 있지만 현재는 존재하지 않습니다.APT::Get::Assume-NoYnPrompt()Defaultapt-markYnPrompt()

관련 정보