커널 업데이트를 건너 뛰는 방법? 설치하면 Virtulbox Guest Additions를 다시 설치하고

VirtulBox에서 Ubuntu 12.04.1 LTS i686을 실행 중입니다. 업데이트를 확인할 때마다 새로운 Linux 커널이 있습니다. 새 커널을 설치하면 Virtulbox Guest Additions를 다시 설치하고 서버를 재부팅해야합니다. 나는 매주 이것을하고 싶지 않습니다. 업데이트 관리자에서 커널 패키지를 수동으로 선택 취소 할 수 있지만 커널 업데이트를 자동으로 건너 뛸 수있는 방법이 있습니까? 나는 여기에 답을 찾았지만 우분투 10에 대한 것입니다. 감사합니다.



답변

APT (Advanced Packaging Tool)는 Ubuntu가 시스템에 설치된 모든 소프트웨어를 관리하는 데 사용하는 시스템입니다. 업데이트 관리자를 실행할 때 업데이트되지 않도록 패키지를 특정 버전으로 “고정”할 수 있습니다.

커널 패키지를 고정하려면 먼저 커널의 버전을 확인해야합니다. 이를 수행하는 한 가지 방법은 시스템> 관리에서 Synaptic Package Manager를 여는 것입니다.

여기에 이미지 설명을 입력하십시오

빠른 검색 텍스트 필드에 “linux-generic”을 입력하고 Enter 키를 누르십시오.

여기에 이미지 설명을 입력하십시오

“설치된 버전”열에 나와있는 번호를 기록해 두십시오. 다음 단계에서 사용하겠습니다.

다음으로 / etc / apt / preferences 파일을 편집해야합니다. Alt + F2를 눌러 애플리케이션 실행 창을 열고 다음을 입력하여 엽니 다.

gksudo gedit /etc/apt/preferences

여기에 이미지 설명을 입력하십시오

gedit 창이 열립니다. 이전에 APT를 가지고 놀지 않았다면 창은 비어있을 것입니다.

창에서 다음을 입력하여 버전 번호를 Synaptic Package Manager에서 찾은 버전 번호로 바꿉니다.

Package: linux-generic linux-headers-generic linux-image-generic linux-restricted-modules-generic
Pin: version <insert version here>
Pin-Priority: 1001

여기에 이미지 설명을 입력하십시오

파일을 저장하고 gedit를 닫습니다. 업데이트 관리자를 열면 Linux 커널 업데이트가 숨겨져있는 것을 볼 수 있습니다!

여기에 이미지 설명을 입력하십시오

출처

APT / DPKG로 패키지 차단

위에서 커널의 패키지 이름을 기억하십시오.

터미널을 열고 다음을 실행하십시오.

sudo -s

그리고 쳤다 enter.

sudo의 비밀번호를 입력하십시오.

echo kernel_package_name hold | dpkg --set-selections

kernel_package_name고정하려는 커널 이름으로 바꿉니다 .

이제 다음을 실행하십시오.

sudo apt-get update && sudo apt-get upgrade

Apt / Dpkg에서 핀을 제거하려면 :

터미널을 엽니 다

sudo -s
echo kernel_package install | dpkg --set-selections

kernel_package를 고정하려는 패키지로 바꾸십시오.

이제 다음을 실행하십시오.

sudo apt-get update &&  sudo apt-get upgrade

출처

당신이하려는 것은 피닝입니다. 위에서 제공 한 소스에는 작업을 수행하기 위해 수행해야 할 작업에 대한 필수 요소가 있습니다.


답변

한 줄에 :

echo $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}') hold | dpkg --set-selections

이것은 커널의 이미지 상태를 설치 에서 보류 로 설정하여 업데이트를 방지합니다.


답변

Christoph의 단일 라이너는 추가 패키지를 고려하지 않습니다 (예 : linux-image-extra-3.13.0-45-generic). 오히려 이것을 사용하십시오 :

i의 경우 $ (dpkg -l "* $ (uname -r) *"| grep image | awk '{print $ 2}'); 에코 $ i 보류 ​​| dpkg-세트 선택; 끝난


답변

superlexx의 제안과 관련하여 해당 라인은 “headers”패키지를 놓치게됩니다.

dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic

따라서 다음을 사용하는 것은 어떻습니까?

dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'
linux-headers-3.13.0-48-generic
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic


답변

커널 업데이트를 가능하게하는 메타 커널 패키지가 제거됩니다.

sudo apt purge $(apt-cache rdepends -i --installed linux-{headers,image}-$(uname -r)|awk '!/[0-9]/ && /^[ ]/{print $1}')

(커널을 업그레이드 한 경우 먼저 새 커널로 재부팅하거나 최신 커널 릴리스를 찾아 “$ (uname -r)”대신 위의 커널을 사용해야합니다.)

커널 업데이트는 대부분 보안 업데이트이므로 설치하는 것이 좋습니다.


답변

Ubuntu 16.04.1에서 다음 코드가 작동합니다

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i hold | sudo dpkg --set-selections; done

Superlexx의 코드가 개선 sudo되었습니다.

dpkg -l | grep linux-image

당신은 발견 할 것이다:

안녕 리눅스 이미지 -4.4.0-34- 일반 …

안녕 리눅스 이미지 엑스트라-4.4.0-34-일반 …

이제 태그가 hi아닌을 읽습니다 .ii

핀을 제거

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i install | sudo dpkg --set-selections; done


답변

더 짧은 버전 : (핀을 제거하려면 “hold”를 “install”로 바꿉니다)

 dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2,"hold"}' | sudo dpkg --set-selections

모든 커널 이미지와 헤더의 상태를 보려면 다음을 실행하십시오.

 dpkg --get-selections | grep "linux-"