"/boot/grub/menu.lst의 새 버전을 사용할 수 있습니다" 옵션을 사전 설정하는 방법

"/boot/grub/menu.lst의 새 버전을 사용할 수 있습니다" 옵션을 사전 설정하는 방법

나는 추가했다biosdevname=1그리고 내 다른 설정 중 일부/etc/default/grub우분투 16.04에서. 커널 업데이트가 있을 때마다 다음과 같은 질문을 받습니다.

Found kernel: /boot/vmlinuz-4.15.0-136-generic
Found kernel: /boot/vmlinuz-4.15.0-135-generic
A new version of /boot/grub/menu.lst is available, but the version installed currently has
been locally modified.

  1. install the package maintainer's version
  2. keep the local version currently installed
  3. show the differences between the versions
  4. show a side-by-side difference between the versions
  5. show a 3-way difference between available versions
  6. do a 3-way merge between available versions (experimental)
  7. start a new shell to examine the situation

What would you like to do about menu.lst? 2

업데이트해야 할 컴퓨터가 약 60대 있는데, 이로 인해안시푸르기존 grub 기본값을 유지하려면 수동으로 각 시스템으로 이동하여 "2"를 선택해야 했습니다.

apt에 "항상 덮어쓰기" 또는 "항상 보존"을 지시하는 dpkg 환경 변수가 있다는 것을 알고 있지만 단일 패키지를 선택하도록 지시하는 방법은 없습니다.

내가 어떻게 알아쉬운내 것을 "항상 유지"하세요/etc/default/grub구성?

답변1

이 문제를 제공하는 프로그램을 이라고 합니다 dpkg. apt데비안 계열 시스템에서는 패키지 설치 후반에 호출 됩니다 . 를 사용하여 구성 옵션을 전달할 수 있습니다 -o Dpkg::Options::="OPTIONS". (강제 구성 - 이전) 실행을 dpkg사용 하려면 --force-confold다음 명령을 사용하십시오.

apt-get install -o Dpkg::Options::="--force-confold" …

이렇게 하면 비활성화됩니다.모두구성 파일 수정. --force-confdef이를 수정되지 않은 구성과 결합하여 구성을 업데이트 할 수 있습니다 .

apt-get install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" …

또한보십시오:apt-get은 설치 중에 구성 파일의 현재 버전을 자동으로 유지합니다.

답변2

@jiwopene의 답변은 좋지만 효과가 있습니다.패키지당시스템에서 업그레이드가 수행되었습니다. 구성 파일에 오래되고 더 이상 사용되지 않는 옵션이 있으면 일부 업그레이드된 소프트웨어가 실행되지 않기 때문에 이것은 제가 묻는 질문이 아닙니다. 다른 패키지는 경고 메시지(예:)로만 로그 파일을 채웁니다. sshd이로 인해 postfix중앙 로깅(데이터베이스 인덱싱, 저장소, 검색 성능 등)에 불필요한 오버헤드가 발생할 수 있습니다. 결국 아래 스크립트를 사용했습니다. @jiwopene에서 언급한 옵션을 적용하지만 업그레이드만 지정합니다.리눅스 일반팩. 그런 다음 autoremove동일한 옵션을 사용하여 이전 커널을 제거합니다.

일부 시스템에서는 설치된 프로필을 덮어쓸지 여부를 묻는 텍스트 모드 대화 상자(설치 중인 패키지에서 가져온 것으로 가정)를 표시하고 지정된 옵션을 무시하는 것처럼 보이기 때문에 환경 DEBIAN_FRONTEND=noninteractive변수가 필요합니다 .dialogdpkg

#!/bin/bash
# disable any dialog prompts
export DEBIAN_FRONTEND=noninteractive

# check if linux-generic package is installed here
dpkg -l linux-generic &>/dev/null

# if so, upgrade linux-generic package only and force-keep any config files
if [ "$?" -eq 0 ]; then
   apt-get install -y --only-upgrade -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" linux-generic

   # next, autoremove the old kernels and again force-keep grub config
   apt-get -y autoremove -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"
fi

관련 정보