カーネルの更新をスキップする方法は?


25

VirtulBoxでUbuntu 12.04.1 LTS i686を実行しています。更新を確認するたびに、新しいLinuxカーネルがあります。新しいカーネルをインストールする場合、Virtulbox Guest Additionsを再度インストールし、サーバーを再起動する必要があります。毎週これをやりたくありません。アップデートマネージャーからカーネルパッケージを手動でチェック解除できることは知っていますが、カーネルアップデートを自動的にスキップする方法はありますか?ここで答えを見つけましたが、Ubuntu 10用です。ありがとう。

回答:


18

APT(Advanced Packaging Tool)は、システムにインストールされているすべてのソフトウェアを管理するためにUbuntuが使用するシステムです。パッケージを特定のバージョンに「固定」して、Update Managerの実行時に更新されないようにすることができます。

カーネルパッケージを固定するには、まずカーネルのバージョンを確認する必要があります。これを行う1つの方法は、システム>管理で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を閉じます。Update Managerを開くと、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、あなたはシナプスをインストールし、私はあなたに言った修正プログラムをインストール、または私はそれをより多くの情報を入れているように、再質問を読むことができます
LnxSlck

2
@ LnxSlck、Synapticをインストールし、指示に従いました。できます。ありがとう。
garconcn

16

1行では次のとおりです。

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

これにより、カーネルのイメージ状態がインストールから保持に設定され、更新が防止されます。


8

クリストフのワンライナーは、余分なパッケージを考慮していません(例:linux-image-extra-3.13.0-45-generic)。むしろこれを使用してください:

for i in $(dpkg -l "* $(uname -r)*" | grep image | awk '{print $ 2}'); エコー$ iホールドする| dpkg --set-selections; やった

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
extras / headers / etcパッケージがマークされていない場合、問題はありますか?または、完全性のためにそれらをマークすることを提案していますか?Ubuntuは、linux-imageがインストールされるまで、ヘッダーが更新されたパッケージをインストールしようとしないことを期待しています(ヘッダーはイメージの依存関係です)。私はまだこれを確認していません。
whitehat101

2
皆さんは、3つのアンサーを重ねる代わりに、1つのワンライナーで共同作業することができます。= P Just sayin
cubuspl42

1
それはあなたがすでにAWKを使用している場合はgrepを呼び出すためにunnecesaryです:dpkg -l "*$(uname -r)*" | awk '/kernel/{print $2}'
ハビエル・ロペス

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

見つけるだろう:

こんにちは linux-image-4.4.0-34-generic ...

こんにちは linux-image-extra-4.4.0-34-generic ...

タグはを読み取りますがhiii

ピンを取り外す

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

いい答えですがsudo、コマンドではなくコメントを入力します
...-WinEunuuchs2Unix

0

短いバージョン:(ピンを削除するには、「ホールド」を「インストール」に置き換えます)

 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.