커널 업데이트를 건너 뛰는 방법?


25

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

답변:


18

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

출처

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


1
답장을 보내 주셔서 감사합니다. 다른 버전을 사용하고있는 것 같습니다. Ubuntu 12.04에 Synaptic Package Manager 및 / etc / apt / preferences가 없습니다.
garconcn

2
예, 기본적으로 Synaptic은 더 이상 설치되지 않습니다.
ish

1
@garconcn, 당신은 Synaptic을 설치하고 내가 당신에게 말한 수정 프로그램을 설치하거나 더 많은 정보를 넣었을 때 질문을 다시 읽을 수 있습니다
LnxSlck

2
@LnxSlck, Synaptic을 설치하고 지시를 따랐습니다. 작동합니다. 감사.
garconcn

16

한 줄에 :

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

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


8

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

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

4

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

1
엑스트라 / 헤더 / 등 패키지가 표시되어 있지 않으면 문제가 있습니까? 또는 완성도를 위해 표시 할 것을 제안하고 있습니까? 우분투는 linux-image가 설치 될 때까지 업데이트 된 헤더 패키지를 설치하려고 시도하지 않을 것으로 기대합니다 (헤더는 이미지의 종속성입니다). 아직 확인하지 않았습니다.
whitehat101

2
3 명의 답변을 서로 쌓아 올리는 대신 하나의 라이너로 공동 작업을 할 수 있습니다. = P 방금 말
하세요

1
이미 awk를 사용하고 있다면 grep을 호출 할 필요가 없습니다.dpkg -l "*$(uname -r)*" | awk '/kernel/{print $2}'
Javier López

1

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

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

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

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


0

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

좋은 대답이지만 sudo명령이 아닌 해설에 넣었습니다 ...
WinEunuuchs2Unix

0

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

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

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

 dpkg --get-selections | grep "linux-"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.