从另一个版本重新安装deb软件包

时间:2017-05-02 17:18:23

标签: package ansible version apt

我需要从另一个目标版本重新安装软件包。问题是如果已经安装了包,则不采取任何措施。我的ansible剧本片段是:

- name: Add jessie-backports repo
  apt_repository:
    repo: 'deb http://httpredir.debian.org/debian jessie-backports main'
    state: present

- name: install libssl from jessie-backports
  apt:
    name: libssl1.0.0
    default_release: jessie-backports

和ansible答案是:

ptmp3 | SUCCESS => {
    "cache_update_time": 1493744770, 
    "cache_updated": true, 
    "changed": false, 
    "invocation": {
        ....
    }
}

我可以在安装新版本之前删除旧版本,但是整堆软件包取决于libssl(例如ssh)。

远程主机上的Btw命令apt-get install libssl1.0.0 -t jessie-backports正常工作,并且libssl已更新

1 个答案:

答案 0 :(得分:0)

解决方案是在apt任务中包含要安装的软件包的确切版本。可以通过apt-cacheapt-cache policy libssl1.0.0)检索确切版本。

适当的剧本块将是:

- name: Add jessie-backports repo
  apt_repository:
    update_cache: yes
    repo: 'deb http://httpredir.debian.org/debian jessie-backports main'
    state: present

- name: get libssl1.0.0 jessie-backports version
  shell: apt-cache policy libssl1.0.0 | grep jessie-backports -B1 | head -n1 | sed -e 's/^\s*\**\s*\(\S*\).*/\1/'
  register: libsslinstalled

- name: install libssl from jessie-backports
  apt:
    name: "libssl1.0.0={{ libsslinstalled.stdout_lines[0] }}"