Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
87 lines (59 sloc) 2.33 KB

Ubuntu

Hold packages

Manually

To prevent the update of a package, although a newer version is available, the package must be set to hold.

$ sudo apt-mark hold linux-firmware linux-generic
linux-firmware set on hold.
linux-generic set on hold.

$ sudo apt-mark showhold
linux-firmware
linux-generic

Packages on hold will not be updated anymore.

$ sudo apt-get dist-upgrade
[...]
The following packages have been kept back:
  linux-firmware linux-generic linux-headers-generic linux-image-generic
[...]

To check the changelog of packages on hold, the following call can be used (source: https://wiki.debianforum.de/Pakete_auf_hold_setzen).

$ dpkg -l | awk '$1=="hi" {printf "%s %s %s\n", $2, $3, $4}' | while read pkg ver arch; do apt-get -qq changelog $pkg | sed "/$pkg ($ver)/q" | pager; done

With unhold the lock can be removed again.

$ apt-mark unhold linux-firmware linux-generic
Canceled hold on linux-firmware.
Canceled hold on linux-generic.

Automatically

Create a playbook with the name playbook-hold.yml in the environment generic. Packages can be defined via the parameter packages_hold.

---
- name: Hold packages
  hosts: all
  gather_facts: no

  vars:
    packages_hold:
      - linux-firmware
      - linux-generic

  tasks:
  - name: Hold package
    command: "apt-mark hold {{ item }}"
    register: result
    changed_when: "'was already set on hold' not in result.stdout"
    become: true
    with_items: "{{ packages_hold }}"

The playbook can now be executed with osism-run.

$ osism-run generic hold -l 10-11.betacloud.xyz
PLAY [Hold packages] *********************************************

TASK [Hold package] ***********************************************
ok: [10-11.betacloud.xyz] => (item=linux-firmware)
ok: [10-11.betacloud.xyz] => (item=linux-generic)

PLAY RECAP *********************************************************
10-11.betacloud.xyz : ok=1    changed=0    unreachable=0    failed=0

To unlock packages again, create an additional playbook playbook-unhold.yml and use unhold instead of hold.

You can’t perform that action at this time.