我需要从另一个目标版本重新安装软件包。问题是如果已经安装了包,则不采取任何措施。我的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已更新
答案 0 :(得分:0)
解决方案是在apt任务中包含要安装的软件包的确切版本。可以通过apt-cache
(apt-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] }}"