운영체제/UBUNTU

[Ubuntu 18.04 LTS] apt dist-upgrade시 "menu.lst" 자동 확인

louky 2019. 5. 16. 10:24
반응형

[Ubuntu 18.04 LTS] apt dist-upgrade시 "menu.lst" 자동 확인

 

 

Ubuntu 18.04 로  버전이 올라 가면서 변화가 있는거 같다... 

크게는 네트워크 설정도 netplan으로 변경되었다. (물론 이전 설정 방법으로도 설정은 가능하다)

 

netplan말고도 apt dist-upgrade시 뭔가 확인하는 단계가 추가 되었다.(이전에도 있었는지는 몰랐거나 무심했던거일 수도 있다.)

 

보통 bash  script를 이용하여 시스템을 설정 하거나 무언가를 설치/설정하는 auto install/setup script를 많이 작성하는데

이때 확인하는 단계가 생기다 보니 script를 주시하고 있어야 하는 상황이 발생한다. (물론 중요한 부분이라면 주시해야겠지만.....)

 

그래서 하도 답답해서 검색을 통해 해결할 수 있는 방법을 찾았고 

내 기억을 믿지 못하기에 오늘도 여기에 끄적거린다. 

 

 

Ubuntu를 설치하고 추가적으로 어떤 PKG를 설치하려하면 아래 단계를 꼭 해야 하는 상황이 발생한다. 

apt update
apt dis-upgrade

 

다른 PKG들은 보통 설치만 하고 끝나는데 여기서 apt dist-upgrade는 꼭 중간에 확인하는 창이 나타난다. 

그것도 확인하는 창이 두번 나오는데 서로 다른것도 아니고 같은 확인창이 두번 나온다. (아래 그림과 같이...)

 

 

script로 자동처리하고 싶은  필자이게 저런 부분은 그냥 스킵하고 후다닥 설치 하고 싶다. 

 

해결 방법은 의외로  간단하며  몇가지 옵션을 통해 쉽게 설정이 가능하다. 

명령어 실행 전 아래 환경 설정을 한다. 

unset UCF_FORCE_CONFFOLD
export UCF_FORCE_CONFFNEW=YES
ucf --purge /boot/grub/menu.lst
export DEBIAN_FRONTEND=noninteractive

환경 설정에 앞서 "UCF_FORCE_CONFFOLD"가 뭔가 설정되어 있나 싶어 확인해 보니 설정은 되어 있지 않았다.

root@test:~# echo "${UCF_FORCE_CONFFOLD}"

root@test:~#

 

여기까지는 그냥 주저리주저리 떠든 것분이고 실제 설정을 아래부터다. 

 

환경 설정을 한다. 

root@test:~# unset UCF_FORCE_CONFFOLD
root@test:~# export UCF_FORCE_CONFFNEW=YES
root@test:~# ucf --purge /boot/grub/menu.lst
root@test:~# export DEBIAN_FRONTEND=noninteractive

 

apt dist-upgrade 명령어를 실행한다.

root@test:~# apt -o Dpkg::Options::="--force-confnew" --force-yes -fuy dist-upgrade

 

이렇게 하면 중간에 확인하는 창이 나오지 않고 설치 할 수 있다. script 작성시 사용하면 유용할거 같다. 

 

추가적으로 Dpkg option 종류는 아래와 같다 

 

--force-confold

do not modify the current configuration file, the new version is installed with a .dpkg-dist suffix. With this option alone, even configuration files that you have not modified are left untouched. You need to combine it with --force-confdef to let dpkg overwrite configuration files that you have not modified..

현재 구성 파일을 수정하지 말고, 새 버전은 .dpkg-dist 접미사와 함께 설치됩니다. 이 옵션 만 사용하면 수정하지 않은 구성 파일도 변경되지 않습니다. dpkg가 수정하지 않은 구성 파일을 덮어 쓰게하려면 --force-confdef와 결합해야합니다.

--force-confdef

ask dpkg to decide alone when it can and prompt otherwise. This is the default behavior of dpkg and this option is mainly useful in combination with --force-confold.

dpkg에게 할 수있을 때 혼자서 결정하고 그렇지 않으면 프롬프트하라. 이것은 dpkg의 기본 동작이며이 옵션은 주로 --force-confold와 함께 사용하면 유용합니다.

--force-confnew

always install the new version of the configuration file, the current version is kept in a file with the .dpkg-old suffix.

항상 새 버전의 구성 파일을 설치합니다. 현재 버전은 .dpkg-old 접미사가 붙은 파일로 유지됩니다.

--force-confmiss

ask dpkg to install the configuration file if it’s currently missing (for example because you have removed the file by mistake).

dpkg에 현재 (예를 들어 실수로 파일을 삭제했기 때문에) 설정 파일이 없으면 설치하도록 요청하십시오..

 

--force-confold 과 --force-confdef은 같이 사용해야 한다. 

예시> 

# apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

 

 

해당 옵션에 대한 자세한 설명은 검색하여 확인하기 바랍니다. ~~

 

 

 

반응형