diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 239321da72c91582570759f48488d92efd193a51..63a94042b0b371c4d9805d669de15b9cf56d403e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,5 @@
 variables:
-  CAISAR_VERSION: "2.0.0"
+  CAISAR_VERSION: "2.0"
   TAG: "2.0.0"
 
 default:
diff --git a/Makefile b/Makefile
index 6d27436cab68a752948cb2b5df5818b85543590f..ec4358d5148f2648c23891c97905fe264eda8da8 100644
--- a/Makefile
+++ b/Makefile
@@ -36,21 +36,19 @@ view-doc: doc
 ###################################
 
 PROJECT_ID=1082
-TAG=$(shell dune-release tag -f --yes > /dev/null 2>&1 && git describe --tags --abbrev=0)
 PKG="caisar-$(TAG).tbz"
 REG_VERSION=$(cat VERSION)
 PACKAGE_URL="https://git.frama-c.com/api/v4/projects/$(PROJECT_ID)/packages/generic/caisar/$(TAG)/$(PKG)"
 DESCRIPTION="$(shell sed -n -e "p;n;:next;/^##/Q;p;n;b next" CHANGES.md | perl -pe 's/\n/\\n/')"
 
 release:
-	@echo "Are git tag $(TAG) and VERSION file $(REG_VERSION) the same? (y/n)?"
+	@echo "Read $(REG_VERSION) from VERSION file. Proceed to release CAISAR with this version? (y/n)?"
 	@read yesno; test "$$yesno" = y
 	./update_version.sh
 	@echo -n $(DESCRIPTION)
 	@echo "Is the CHANGES.md correct for $(TAG) (y/n)?"
 	@read yesno; test "$$yesno" = y
-	@echo $(TAG) > VERSION
-	dune-release tag $(TAG)
+	dune-release tag $(REG_VERSION)
 	dune-release distrib --skip-build --skip-lint
 	curl --header "PRIVATE-TOKEN: $(GITLAB_TOKEN)" \
 	--upload-file _build/$(PKG) \
diff --git a/doc/conf.py b/doc/conf.py
index 44356ae192deb649d56ea115d3fc8cf83a1fdda5..acb529afc31443aa272684d7af0704dd9cf37b39 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -29,7 +29,7 @@ author = 'The CAISAR Development Team'
 # built documents.
 #
 # The short X.Y version.
-version = '2.0.0'
+version = '2.0'
 # The full version, including alpha/beta/rc tags.
 release = '2.0.0'
 
diff --git a/update_version.sh b/update_version.sh
index a5e376e1c4a447a86d779d9a3e14d1ee7fdf2689..9c26d3d75d12095c7a8013e01fb842ef8ece0a4f 100755
--- a/update_version.sh
+++ b/update_version.sh
@@ -1,19 +1,35 @@
 #!/usr/bin/env bash
+# set -xe
 
-set -xe
+if ! test -f VERSION; then
+  echo "This script must be run from CAISAR root directory."
+  exit 2
+fi
 
 # Update headers in source files to match current year
 NEW_DATE=$(date "+%Y")
 OLD_DATE=$(date -d '1 year ago' "+%Y")
 find . \( -type d -name .git -prune \) \( -type d -name ._build -prune \) -o -type f -print0 | xargs -0 sed -i 's/(C) '${OLD_DATE}'/(C) '${NEW_DATE}'/g'
 
-# Update version in manual, ci and main.ml according to the VERSION file
+# Update version in manual, ci and dune-project according to the VERSION file
 VERSION=$(cat VERSION)
-sed -E -i 's/let version = "([0-9]\.)+[0-9]" in/let version = "2.0.0" in/g' src/main.ml
-sed -E -i 's/version = \x27([0-9]\.)+[0-9]\x27/version = \x27'${VERSION}'\x27/g' doc/conf.py
+MAJOR=$(echo "$VERSION" | awk -F '.' '{print $1}')
+MINOR=$(echo "$VERSION" | awk -F '.' '{print $2}')
+REV=$(echo "$VERSION" | awk -F '.' '{print $3}')
+MAJOR_MINOR=${MAJOR}.${MINOR}
+
+echo "Updating CAISAR version number to $VERSION".
+
+sed -E -i 's/let version = "([0-9]\.)+[0-9]" in/let version = "'${VERSION}'" in/g' src/main.ml
+echo "Changing version in CAISAR's manual."
+sed -E -i 's/version = \x27([0-9]\.)+[0-9]\x27/version = \x27'${MAJOR_MINOR}'\x27/g' doc/conf.py
 sed -E -i 's/release = \x27([0-9]\.)+[0-9]\x27/release = \x27'${VERSION}'\x27/g' doc/conf.py
-sed -E -i 's/CAISAR_VERSION: "([0-9]\.)+[0-9]"/CAISAR_VERSION: "'${VERSION}'"/g' .gitlab-ci.yml
+echo "Changing version in CAISAR's CI."
+sed -E -i 's/CAISAR_VERSION: "([0-9]\.)+[0-9]"/CAISAR_VERSION: "'${MAJOR_MINOR}'"/g' .gitlab-ci.yml
 sed -E -i 's/TAG: "([0-9]\.)+[0-9]"/TAG: "'${VERSION}'"/g' .gitlab-ci.yml
+echo "Changing version in dune-project."
+sed -E -i 's/version ([0-9]\.)+[0-9]/version '${MAJOR_MINOR}'/g' dune-project
 
 # Update version in tests
+echo "Changing version in dune tests."
 sed -E -i 's/([0-9]\.)+[0-9]/'${VERSION}'/g' tests/help.t