diff --git a/roles/nhc/tasks/main.yml b/roles/nhc/tasks/main.yml
index bcc820f613e5205c334117e0524359366fed7912..868712bb3e024c541edfdab3f2f634221cf56f61 100644
--- a/roles/nhc/tasks/main.yml
+++ b/roles/nhc/tasks/main.yml
@@ -18,24 +18,24 @@
 - name: unarchive nhc
   unarchive:
   args:
-    src: "http://consistency0/src/{{ nhc_version }}.tar.gz"
+    src: "https://github.com/mej/nhc/archive/refs/tags/{{ nhc_version }}.tar.gz"
     copy: no
-    dest: /tmp
-    creates: /tmp/nhc-{{ nhc_version }}/autogen.sh
+    dest: /opt/src
+    creates: /opt/src/nhc-{{ nhc_version }}/autogen.sh
   when: not nhc_binary.stat.exists
 
 - name: build nhc
   shell: ./autogen.sh && ./configure --prefix={{ nhc_dir }} && make
   args:
-    chdir: /tmp/nhc-{{ nhc_version }}
-    creates: /tmp/nhc-{{ nhc_version }}/configure
+    chdir: /opt/src/nhc-{{ nhc_version }}
+    creates: /opt/src/nhc-{{ nhc_version }}/configure
   when: not nhc_binary.stat.exists
 
 - name: install nhc
   shell: make install
   become: true
   args:
-      chdir: /tmp/nhc-{{ nhc_version }}
+      chdir: /opt/src/nhc-{{ nhc_version }}
   when: not nhc_binary.stat.exists
 
 - name: ensure sysconfig dir exists
diff --git a/roles/slurm-common/tasks/installMungeFromSource.yml b/roles/slurm-common/tasks/installMungeFromSource.yml
index cf39c3f9273c7d3c7347fd73efe5d226d5033744..4978c4dd2e6c78994b686eac23367bdbe2eeb88d 100644
--- a/roles/slurm-common/tasks/installMungeFromSource.yml
+++ b/roles/slurm-common/tasks/installMungeFromSource.yml
@@ -5,7 +5,8 @@
 - name: unarchive munge
   unarchive:
   args:
-    src: "http://consistency0/src/munge-{{ munge_version }}.tar.bz2"
+    #src: "http://consistency0/src/munge-{{ munge_version }}.tar.bz2"
+    src: "https://github.com/dun/munge/releases/download/munge-{{ munge_version }}/munge-{{ munge_version }}.tar.xz"
     copy: no
     dest: /tmp
     creates: /tmp/munge-{{ munge_version }}/configure
diff --git a/roles/slurm-common/tasks/installSlurmFromSource.yml b/roles/slurm-common/tasks/installSlurmFromSource.yml
index 04304d902ea1d5abe67c6da6d17c63603d39b6ea..0f0db7832101a4fd9f6eb32743b8fea3db61302d 100644
--- a/roles/slurm-common/tasks/installSlurmFromSource.yml
+++ b/roles/slurm-common/tasks/installSlurmFromSource.yml
@@ -1,6 +1,16 @@
+
+- name: Create ucx directory if it does not exist
+  file:
+    path: /opt/src
+    state: directory
+    owner: "{{ ansible_user }}"
+    group: root
+    mode: u=rwx,g=rx,o=rx
+  become: true
+
 - name: remove all install
   file:
-    path: "/tmp/slurm-{{ slurm_version }}"
+    path: "/opt/src/{{ slurm_src_dir }}"
     state: absent
   become: true
   when: force_slurm_recompile is defined
@@ -14,64 +24,62 @@
 
 - name: unarchive slurm
   unarchive:
-    src: "http://consistency0/src/slurm-{{ slurm_version }}.tar.bz2"
-    dest: /tmp
+    src: "https://github.com/SchedMD/slurm/archive/refs/tags/slurm-{{ slurm_version_hyphen }}.tar.gz"
+    dest: /opt/src
     remote_src: yes
-    creates: "{{ slurm_dir }}/bin/srun"
+    creates: "/opt/src/{{ slurm_src_dir }}"
 
 - name: stat srun
   stat: path="{{ slurm_dir }}/bin/srun"
   register: stat_srun
 
 - name: stat ucx
-  stat: path="/usr/local/ucx/"
+  stat: 
+    path: "{{ ucx_dir }}"
   register: stat_ucx
 
 - name: Create ucx directory if it does not exist
   file:
-    path: '/usr/local/ucx/'
+    path: "{{ ucx_dir }}"
     state: directory
     owner: root
     group: root
-    mode: u=rw,g=rx,o=rx
+    mode: u=rwx,g=rx,o=rx
   become: true
   when: not stat_ucx.stat.exists
 
 - name: unarchive ucx
   unarchive:
   args:
-    src: "http://consistency0/src/ucx_1_8_0.tar.gz"
+    src: "https://github.com/openucx/ucx/releases/download/v{{ ucx_version }}/ucx-{{ ucx_version }}.tar.gz"
     copy: no
-    dest: /usr/local/ucx/
-    creates: /usr/local/ucx/1.8.0
+    dest: /opt/src
+    creates: "/opt/src/ucx-{{ ucx_version }}"
   become: true
   register: newucx
 
-- name: symlink ucx to latest
-  file:
-    src: '/usr/local/ucx/1.8.0'
-    dest: '/usr/local/ucx/latest'
-    state: link
-    owner: root
-    group: root
-    mode: u=rw,g=rx,o=rx
+- name: install ucx
+  shell: "./contrib/configure-release --prefix={{ ucx_dir }} && make -j8 && make install"
+  args:
+    chdir: "/opt/src/ucx-{{ ucx_version }}"
+    create: " {{ ucx_dir }}/bin/ucx_info"
   become: true
-  when: newucx.changed
+    #  when: not stat_ucx.stat.exists
 
 - name: configure slurm centos
-  command: /tmp/slurm-{{ slurm_version }}/configure --prefix={{ slurm_dir }} --with-munge={{ munge_dir }} --enable-pam --with-pmix=/usr/local/pmix/latest --with-ucx=/usr/local/ucx/1.8.0
+  command: /opt/src/{{ slurm_src_dir }}/configure --prefix={{ slurm_dir }} --with-munge={{ munge_dir }} --enable-pam --with-pmix=/usr/local/pmix/latest --with-ucx={{ ucx_dir }}
   args:
     creates: "{{ slurm_dir }}/bin/srun"
-    chdir: /tmp/slurm-{{ slurm_version }}
+    chdir: /opt/src/{{ slurm_src_dir }}
   when:
     - force_slurm_recompile is defined or not stat_srun.stat.exists
     - ansible_os_family == 'RedHat'
 
 - name: configure slurm ubuntu
-  command: /tmp/slurm-{{ slurm_version }}/configure --prefix={{ slurm_dir }} --with-munge={{ munge_dir }} --enable-pam --with-pmix --with-ucx=/usr/local/ucx/1.8.0
+  command: /opt/src/{{ slurm_src_dir }}/configure --prefix={{ slurm_dir }} --with-munge={{ munge_dir }} --enable-pam --with-pmix --with-ucx={{ ucx_dir }}
   args:
     creates: "{{ slurm_dir }}/bin/srun"
-    chdir: /tmp/slurm-{{ slurm_version }}
+    chdir: /opt/src/{{ slurm_src_dir }}
   when:
     - force_slurm_recompile is defined or not stat_srun.stat.exists
     - ansible_os_family == 'Debian'
@@ -80,64 +88,64 @@
   command: make
   args:
     creates: "{{ slurm_dir }}/bin/srun"
-    chdir: /tmp/slurm-{{ slurm_version }}
+    chdir: /opt/src/{{ slurm_src_dir }}
   when: force_slurm_recompile is defined or not stat_srun.stat.exists
 
 - name: install slurm
   shell: make install
   become: true
   args:
-    chdir: /tmp/slurm-{{ slurm_version }}
+    chdir: /opt/src/{{ slurm_src_dir }}
     creates: "{{ slurm_dir }}/bin/srun"
   when: force_slurm_recompile is defined or not stat_srun.stat.exists
 
 - name: build pmi
   command: make
   args:
-    chdir: /tmp/slurm-{{ slurm_version }}/contribs/pmi
+    chdir: /opt/src/{{ slurm_src_dir }}/contribs/pmi
   when: force_slurm_recompile is defined or not stat_srun.stat.exists
 
 - name: install pmi
   shell: make install
   become: true
   args:
-    chdir: /tmp/slurm-{{ slurm_version }}/contribs/pmi
+    chdir: /opt/src/{{ slurm_src_dir }}/contribs/pmi
   when: force_slurm_recompile is defined or not stat_srun.stat.exists
 
 - name: build pmi2
   command: make
   args:
-    chdir: /tmp/slurm-{{ slurm_version }}/contribs/pmi2
+    chdir: /opt/src/{{ slurm_src_dir }}/contribs/pmi2
   when: force_slurm_recompile is defined or not stat_srun.stat.exists
 
 - name: install pmi2
   shell: make install
   become: true
   args:
-    chdir: /tmp/slurm-{{ slurm_version }}/contribs/pmi2
+    chdir: /opt/src/{{ slurm_src_dir }}/contribs/pmi2
   when: force_slurm_recompile is defined or not stat_srun.stat.exists
 
 - name: build pam_slurm
   command: make
   args:
-    chdir: /tmp/slurm-{{ slurm_version }}/contribs/pam
+    chdir: /opt/src/{{ slurm_src_dir }}/contribs/pam
   when: force_slurm_recompile is defined or not stat_srun.stat.exists
 
 - name: install pam_slurm
   shell: make install
   become: true
   args:
-    chdir: /tmp/slurm-{{ slurm_version }}/contribs/pam
+    chdir: /opt/src/{{ slurm_src_dir }}/contribs/pam
   when: force_slurm_recompile is defined or not stat_srun.stat.exists
 
 - name: build pam_slurm_adopt
   make:
-    chdir: /tmp/slurm-{{ slurm_version }}/contribs/pam_slurm_adopt
+    chdir: /opt/src/{{ slurm_src_dir }}/contribs/pam_slurm_adopt
   when: force_slurm_recompile is defined or not stat_srun.stat.exists
 
 - name: install pam_slurm_adopt
   make:
-    chdir: /tmp/slurm-{{ slurm_version }}/contribs/pam_slurm_adopt
+    chdir: /opt/src/{{ slurm_src_dir }}/contribs/pam_slurm_adopt
     target: install
   when: force_slurm_recompile is defined or not stat_srun.stat.exists
   become: true
diff --git a/roles/slurm-common/tasks/main.yml b/roles/slurm-common/tasks/main.yml
index 70b22faf1de096dd56b154b4ad55783129aaa27e..225399ac72ae40369fa04765c3a6a998a69dfb18 100644
--- a/roles/slurm-common/tasks/main.yml
+++ b/roles/slurm-common/tasks/main.yml
@@ -82,6 +82,7 @@
     state: present
     name:
       - gcc
+      - build-essential
       - wget
       - libssl-dev # downgrade needed for bionic see https://github.com/dun/munge/issues/54
       - libpam0g-dev