VirtulBoxでUbuntu 12.04.1 LTS i686を実行しています。更新を確認するたびに、新しいLinuxカーネルがあります。新しいカーネルをインストールする場合、Virtulbox Guest Additionsを再度インストールし、サーバーを再起動する必要があります。毎週これをやりたくありません。アップデートマネージャからカーネルパッケージを手動でチェック解除できることは知っていますが、カーネルアップデートを自動的にスキップする方法はありますか?ここで答えを見つけましたが、それはUbuntu 10用です。ありがとう。
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カーネルの更新が非表示になっていることがわかります。
上記のカーネルのパッケージ名を覚えておいてください。
ターミナルを開いて実行します:
Sudo -s
そしてヒット enter。
Sudoのパスワードを入力します。
echo kernel_package_name hold | dpkg --set-selections
kernel_package_name
を、ピン留めするカーネルの名前に置き換えます。
今実行してください:
Sudo apt-get update && Sudo apt-get upgrade
ターミナルを開く
Sudo -s
echo kernel_package install | dpkg --set-selections
Kernel_packageを固定するパッケージに置き換えます。
今実行してください:
Sudo apt-get update && Sudo apt-get upgrade
あなたがしようとしていることは、ピン止めと呼ばれています。上記で提供したソースには、手元のタスクを達成するために何をする必要があるかについての基本事項があります。
1行では次のとおりです。
echo $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}') hold | dpkg --set-selections
これにより、カーネルのイメージ状態がinstallからholdに設定され、更新ができなくなります。
クリストフのワンライナーは、追加のパッケージを考慮していません(例:linux-image-extra-3.13.0-45-generic)。むしろこれを使用してください:
for i in $(dpkg -l "* $(uname -r)*" | grep image | awk '{print $ 2}');エコー$ iホールドする| dpkg --set-selections;やった
関連して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)」の代わりに上記で使用する必要があります。)
ただし、カーネルの更新は主にセキュリティ更新であるため、インストールすることをお勧めします。
短いバージョン:(ピンを削除するには、「ホールド」を「インストール」に置き換えます)
dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2,"hold"}' | Sudo dpkg --set-selections
すべてのカーネルイメージとヘッダーの状態を確認するには、次を実行します。
dpkg --get-selections | grep "linux-"
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
見つけるだろう:
hi linux-image-4.4.0-34-generic ...
hi linux-image-extra-4.4.0-34-generic ...
タグはhi
ではなくii
を読み取ることに注意してください
ピンを取り外す
for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i install | Sudo dpkg --set-selections; done