diff --git a/media/css/main.css b/media/css/main.css
index a27ab0d..0eb6e06 100644
--- a/media/css/main.css
+++ b/media/css/main.css
@@ -1526,3 +1526,14 @@ table.sponsor-table tbody tr td:nth-child(3) {
font-size: 1.5rem;
}
}
+
+/* Script copy buttons */
+.pg-script-container {
+ position: relative;
+}
+
+.pg-script-copy-btn {
+ position: absolute;
+ top: 8px;
+ right: 8px;
+}
\ No newline at end of file
diff --git a/media/js/main.js b/media/js/main.js
index 0b37fee..aa939f1 100644
--- a/media/js/main.js
+++ b/media/js/main.js
@@ -18,12 +18,58 @@ if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow);
-/*
- * Debian/Ubuntu download dropdowns
+/* Copy a script from an HTML element to the clipboard,
+ * removing comments and blank lines.
+ * Arguments:
+ * trigger: The button calling the function, whose label will be updated
+ * elem: The element containing the script to copy
*/
-$(function() {
- $('select#debseries').change(function() {
- var deb = document.getElementById('series-deb');
- deb.innerHTML = $(this).val();
- });
-});
+
+function copyScript(trigger, elem) {
+ var raw = document.getElementById(elem).innerHTML;
+
+ // Create a scratch div to copy from
+ var scratch = document.createElement("div");
+ document.body.appendChild(scratch);
+
+ // Copy the contents of the script box into the scratch div, removing
+ // comments and blank lines
+ var lines = raw.split("\n");
+ var output = '';
+ for (var l = 0; l < lines.length; l++) {
+ if (lines[l][0] != '#' && lines[l].trim() != '')
+ output += lines[l] + '
';
+ }
+ scratch.innerHTML = output.trim();
+
+ // Perform the copy
+ if(document.body.createTextRange) {
+ // IE 11
+ var range = document.body.createTextRange();
+ range.moveToElementText(scratch);
+ range.select();
+ document.execCommand("Copy");
+ document.getSelection().removeAllRanges()
+ }
+ else if(window.getSelection) {
+ // Sane browsers
+ var selection = window.getSelection();
+ var range = document.createRange();
+ range.selectNodeContents(scratch);
+ selection.removeAllRanges();
+ selection.addRange(range);
+ document.execCommand("Copy");
+ selection.removeAllRanges();
+ }
+
+ // Remove the scratch div
+ scratch.parentNode.removeChild(scratch);
+
+ // Indicate to the user that the script was copied
+ var label = trigger.innerHTML;
+ trigger.innerHTML = 'Copied!';
+
+ setTimeout(function() {
+ trigger.innerHTML = label;
+ }, 3000);
+}
diff --git a/templates/downloads/js/yum.js b/templates/downloads/js/yum.js
index 74b5702..ed6a493 100644
--- a/templates/downloads/js/yum.js
+++ b/templates/downloads/js/yum.js
@@ -119,13 +119,11 @@ function archChanged() {
var ver = document.getElementById('version').value;
var plat = document.getElementById('platform').value;
var arch = document.getElementById('arch').value;
+ var scriptBox = document.getElementById('script-box')
if (!plat || plat == -1) {
- document.getElementById('reporpm').innerHTML = 'Select version and platform above';
- document.getElementById('clientpackage').innerHTML = 'Select version and platform above';
- document.getElementById('serverpackage').innerHTML = 'Select version and platform above';
- document.getElementById('initdb').innerHTML = 'Select version and platform above';
- document.getElementById('dnfmodule').style.display = 'none';
+ document.getElementById('copy-btn').style.display = 'none';
+ scriptBox.innerHTML = 'Select version and platform above';
return;
}
@@ -135,21 +133,31 @@ function archChanged() {
var url = 'https://download.postgresql.org/pub/repos/yum/reporpms/' + plat + '-' + arch + '/pgdg-' + get_rpm_prefix(plat) +'-repo-latest.noarch.rpm';
var installer = get_installer(plat);
- document.getElementById('reporpm').innerHTML = installer + ' install ' + url;
- document.getElementById('clientpackage').innerHTML = installer + ' install postgresql' + shortver;
- document.getElementById('serverpackage').innerHTML = installer + ' install postgresql' + shortver + '-server';
+ scriptBox.innerHTML = '# Install the repository RPM:\n';
+ scriptBox.innerHTML += installer + ' install ' + url + '\n\n';
- document.getElementById('dnfmodule').style.display = disable_module_on(plat) ? 'list-item' : 'none';
+ scriptBox.innerHTML += '# Install client tools:\n';
+ scriptBox.innerHTML += installer + ' install postgresql' + shortver + '\n\n';
+ scriptBox.innerHTML += '# Optionally install the database server:\n';
+ scriptBox.innerHTML += installer + ' install postgresql' + shortver + '-server\n\n';
+
+ if (disable_module_on(plat)) {
+ scriptBox.innerHTML += '# Disable the built-in PostgreSQL module:\n';
+ scriptBox.innerHTML += 'dnf -qy module disable postgresql\n\n';
+ }
+
+ scriptBox.innerHTML += '# Optionally initialize the database and enable automatic start:\n';
if (uses_systemd(plat)) {
var setupcmd = 'postgresql-' + shortver + '-setup';
if (ver < 10) {
- setupcmd = 'postgresql' + shortver + '-setup';
+ setupcmd = 'postgresql' + shortver + '-setup';
}
-
- document.getElementById('initdb').innerHTML = '/usr/pgsql-' + ver + '/bin/' + setupcmd + ' initdb
systemctl enable postgresql-' + ver + '
systemctl start postgresql-' + ver;
+ scriptBox.innerHTML += '/usr/pgsql-' + ver + '/bin/' + setupcmd + ' initdb\nsystemctl enable postgresql-' + ver + '\nsystemctl start postgresql-' + ver;
}
else {
- document.getElementById('initdb').innerHTML = 'service postgresql-' + ver + ' initdb
chkconfig postgresql-' + ver + ' on
service postgresql-' + ver + ' start';
+ scriptBox.innerHTML += 'service postgresql-' + ver + ' initdb\nchkconfig postgresql-' + ver + ' on\nservice postgresql-' + ver + ' start';
}
+
+ document.getElementById('copy-btn').style.display = 'block';
}
diff --git a/templates/pages/download/linux/debian.html b/templates/pages/download/linux/debian.html
index 0944edb..236f36c 100644
--- a/templates/pages/download/linux/debian.html
+++ b/templates/pages/download/linux/debian.html
@@ -41,30 +41,23 @@ versions of Debian:
To use the apt repository, follow these steps:
-
- deb http://apt.postgresql.org/pub/repos/apt/ YOUR_DEBIAN_VERSION_HERE-pgdg main
- - wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - - sudo apt-get update-
# Create the file repository configuration: +sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' + +# Import the repository signing key: +wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - + +# Update the package lists: +sudo apt-get update + +# Install the latest version of PostgreSQL. +# If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql': +apt-get install postgresql+ +
For more information about the apt repository, including answers to frequent questions, please see the apt page on diff --git a/templates/pages/download/linux/redhat.html b/templates/pages/download/linux/redhat.html index bc309d6..29161dd 100644 --- a/templates/pages/download/linux/redhat.html +++ b/templates/pages/download/linux/redhat.html @@ -59,20 +59,11 @@ To use the PostgreSQL Yum Repository, follow these steps:
dnf -qy module disable postgresql-
To use the apt repository, follow these steps:
-/etc/apt/sources.list.d/pgdg.list and add a line
- for the repository
- deb http://apt.postgresql.org/pub/repos/apt/ YOUR_UBUNTU_VERSION_HERE-pgdg main
- wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - -sudo apt-get update-
# Create the file repository configuration: +sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' + +# Import the repository signing key: +wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - + +# Update the package lists: +sudo apt-get update + +# Install the latest version of PostgreSQL. +# If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql': +apt-get install postgresql+ +
For more information about the apt repository, including answers to frequent questions, please see the PostgreSQL Apt Repository page on