{"id":515,"date":"2021-07-23T12:31:53","date_gmt":"2021-07-23T12:31:53","guid":{"rendered":"https:\/\/ssdsunucum.com\/blog\/how-to-set-up-a-third-party-rpm-repository-with-gpg-signatures\/"},"modified":"2021-07-23T12:31:53","modified_gmt":"2021-07-23T12:31:53","slug":"how-to-set-up-a-third-party-rpm-repository-with-gpg-signatures","status":"publish","type":"post","link":"https:\/\/ssdsunucum.com\/blog\/how-to-set-up-a-third-party-rpm-repository-with-gpg-signatures\/","title":{"rendered":"How to Set Up a Third-Party RPM Repository with GPG Signatures"},"content":{"rendered":"<\/p>\n<div class=\"col-md-9\">\n<div class=\"flex-column flex-md-row article-header\"><\/div>\n<hr>\n<h2 id=\"overview\">Overview<\/h2>\n<p>In order for third-party customers to create their own RPM repositories, they <strong>must<\/strong> create digest files and GnuPG (GPG) signatures as well as the necessary RPM files.<\/p>\n<p>Most of cPanel\u2019s software dependencies ship as RPM archives. These RPMs download from the cPanel, L.L.C. RPM repository during installations and updates. The RPM repository is a collection of RPMs that exist on an accessible HTTP server. The <code>url_templates<\/code> field in the <code>rpm.versions<\/code> file determines the location of the RPMs on this server.<\/p>\n<p>Each RPM directory contains an <code>rpm.md5<\/code> or <code>rpm.sha512<\/code> digest file, which contains the appropriate digest values for each of the directory\u2019s RPMs. The cPanel, L.L.C. update system uses the digest file to ensure the integrity of downloaded files. In addition, a GPG signature, which the system creates with cPanel, L.L.C.\u2019s private keys, accompanies each of these digest files to ensure the legitimacy of the files and to prevent the compromise of download mirrors.<\/p>\n<h2 id=\"set-up-a-third-party-rpm-repository-with-gpg-signatures\">Set up a third-party RPM repository with GPG signatures<\/h2>\n<h3 id=\"generate-rpm-sha512-digest-files\">Generate rpm sha512 digest files<\/h3>\n<p>In each directory in the repository that contains RPM files, you <strong>must<\/strong> create an <code>rpm.sha512<\/code> digest file.<\/p>\n<p>For example, consider the following directory, which contains two RPM files:\n<\/p>\n<div class=\"highlight\">\n<div style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\">\n<table style=\"border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;\">\n<tr>\n<td style=\"vertical-align:top;padding:0;margin:0;border:0;\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">1\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">2\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">3\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">4\n<\/span><\/code><\/pre>\n<\/td>\n<td style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#a6e22e\">root<\/span><span style=\"color:#960050;background-color:#1e0010\">@<\/span><span style=\"color:#a6e22e\">httpupdate1<\/span>:<span style=\"color:#f92672\">\/<\/span><span style=\"color:#a6e22e\">home<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#a6e22e\">www<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#a6e22e\">thirdparty_rpm<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#ae81ff\">11.92<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#a6e22e\">centos<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#ae81ff\">7<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#a6e22e\">x86_64<\/span><span style=\"color:#960050;background-color:#1e0010\">#<\/span> <span style=\"color:#a6e22e\">ls<\/span> <span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">l<\/span>\n<span style=\"color:#a6e22e\">total<\/span> <span style=\"color:#ae81ff\">6876<\/span>\n<span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">rw<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">r<\/span><span style=\"color:#f92672\">--<\/span><span style=\"color:#a6e22e\">r<\/span><span style=\"color:#f92672\">--<\/span> <span style=\"color:#ae81ff\">1<\/span> <span style=\"color:#a6e22e\">tux<\/span> <span style=\"color:#a6e22e\">tux<\/span> <span style=\"color:#ae81ff\">6191460<\/span> <span style=\"color:#a6e22e\">Aug<\/span> <span style=\"color:#ae81ff\">12<\/span> <span style=\"color:#ae81ff\">18<\/span>:<span style=\"color:#ae81ff\">57<\/span> <span style=\"color:#a6e22e\">cpanel<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">angularjs<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">1.4.3<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">1.<\/span><span style=\"color:#a6e22e\">cp1154<\/span>.<span style=\"color:#a6e22e\">noarch<\/span>.<span style=\"color:#a6e22e\">rpm<\/span>\n<span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">rw<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">r<\/span><span style=\"color:#f92672\">--<\/span><span style=\"color:#a6e22e\">r<\/span><span style=\"color:#f92672\">--<\/span> <span style=\"color:#ae81ff\">1<\/span> <span style=\"color:#a6e22e\">tux<\/span> <span style=\"color:#a6e22e\">tux<\/span> <span style=\"color:#ae81ff\">843872<\/span> <span style=\"color:#a6e22e\">Sep<\/span> <span style=\"color:#ae81ff\">11<\/span> <span style=\"color:#ae81ff\">17<\/span>:<span style=\"color:#ae81ff\">33<\/span> <span style=\"color:#a6e22e\">cpanel<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">angularjs<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">1.4.4<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">1.<\/span><span style=\"color:#a6e22e\">cp1154<\/span>.<span style=\"color:#a6e22e\">noarch<\/span>.<span style=\"color:#a6e22e\">rpm<\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<\/div>\n<p>To create the digest file for this directory, run the following command: <\/p>\n<div class=\"highlight\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-perl\" data-lang=\"perl\"><span style=\"color:#e6db74\">\/home\/<\/span>www<span style=\"color:#e6db74\">\/thirdparty_rpm\/<\/span><span style=\"color:#ae81ff\">11.92<\/span><span style=\"color:#e6db74\">\/centos\/<\/span><span style=\"color:#ae81ff\">7<\/span><span style=\"color:#f92672\">\/<\/span>x86_64<span style=\"color:#75715e\"># sha512sum *.rpm &gt; rpm.sha512<\/span><\/code><\/pre>\n<\/div>\n<p>This file will contain a list of the RPM file digests:<\/p>\n<div class=\"highlight\">\n<div style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\">\n<table style=\"border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;\">\n<tr>\n<td style=\"vertical-align:top;padding:0;margin:0;border:0;\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">1\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">2\n<\/span><\/code><\/pre>\n<\/td>\n<td style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#ae81ff\">01<\/span><span style=\"color:#a6e22e\">fe3fefade91693d2e03cd2f2a2cde7613e54586e994f3477658eefbe24c6ba0347129286789ad9fc8f1aa3f32859896aed16d39055031808eea057557691d2<\/span> <span style=\"color:#a6e22e\">cpanel<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">angularjs<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">1.4.3<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">1.<\/span><span style=\"color:#a6e22e\">cp1154<\/span>.<span style=\"color:#a6e22e\">noarch<\/span>.<span style=\"color:#a6e22e\">rpm<\/span>\n<span style=\"color:#a6e22e\">f91a02c9fd3ef6551809ebb23e726cbe460fa8c334f592f53c773cbccc1b0cede9d139386b7e60b91bf25cd640ce9ecfd948c077bac12d2d8e069ca08a257da2<\/span> <span style=\"color:#a6e22e\">cpanel<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">angularjs<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">1.4.4<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">1.<\/span><span style=\"color:#a6e22e\">cp1154<\/span>.<span style=\"color:#a6e22e\">noarch<\/span>.<span style=\"color:#a6e22e\">rpm<\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<\/div>\n<h3 id=\"generate-a-gpg-key-pair\">Generate a GPG key pair<\/h3>\n<p>After you create the digest file, create a GPG key pair in order to sign it. We recommend that you use the GPG command line utilities to generate the GPG key pair.<\/p>\n<ul>\n<li>\n<p>We <strong>strongly<\/strong> recommend that you generate this key on a non-public system to protect the private key\u2019s security.<\/p>\n<\/li>\n<li>\n<p>For more information, read the GnuPG documentation.<\/p>\n<\/li>\n<\/ul>\n<p>For example, to create a GPG key pair, you might run the following commands:<\/p>\n<div class=\"collapse-wrapper\">\n<p>        Click to view&#8230;<\/p>\n<div class=\"collapse\" id=\"click-to-view---1626990176712461934\">\n<div class=\"card card-body\">\n<div class=\"highlight\">\n<div style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\">\n<table style=\"border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;\">\n<tr>\n<td style=\"vertical-align:top;padding:0;margin:0;border:0;\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 1\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 2\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 3\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 4\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 5\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 6\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 7\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 8\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 9\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">10\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">11\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">12\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">13\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">14\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">15\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">16\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">17\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">18\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">19\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">20\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">21\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">22\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">23\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">24\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">25\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">26\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">27\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">28\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">29\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">30\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">31\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">32\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">33\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">34\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">35\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">36\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">37\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">38\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">39\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">40\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">41\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">42\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">43\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">44\n<\/span><\/code><\/pre>\n<\/td>\n<td style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#a6e22e\">root<\/span><span style=\"color:#960050;background-color:#1e0010\">@<\/span><span style=\"color:#a6e22e\">httpupdate1<\/span>:<span style=\"color:#960050;background-color:#1e0010\">~#<\/span> <span style=\"color:#a6e22e\">gpg<\/span> <span style=\"color:#f92672\">--<\/span><span style=\"color:#a6e22e\">gen<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">key<\/span>\n<span style=\"color:#a6e22e\">gpg<\/span> (<span style=\"color:#a6e22e\">GnuPG<\/span>) <span style=\"color:#ae81ff\">1.4.12<\/span>; <span style=\"color:#a6e22e\">Copyright<\/span> (<span style=\"color:#a6e22e\">C<\/span>) <span style=\"color:#ae81ff\">2012<\/span> <span style=\"color:#a6e22e\">Free<\/span> <span style=\"color:#a6e22e\">Software<\/span> <span style=\"color:#a6e22e\">Foundation<\/span>, <span style=\"color:#a6e22e\">Inc<\/span>.\n<span style=\"color:#a6e22e\">This<\/span> <span style=\"color:#a6e22e\">is<\/span> <span style=\"color:#a6e22e\">free<\/span> <span style=\"color:#a6e22e\">software<\/span>: <span style=\"color:#a6e22e\">you<\/span> <span style=\"color:#a6e22e\">are<\/span> <span style=\"color:#a6e22e\">free<\/span> <span style=\"color:#a6e22e\">to<\/span> <span style=\"color:#a6e22e\">change<\/span> <span style=\"color:#a6e22e\">and<\/span> <span style=\"color:#a6e22e\">redistribute<\/span> <span style=\"color:#a6e22e\">it<\/span>.\n<span style=\"color:#a6e22e\">There<\/span> <span style=\"color:#a6e22e\">is<\/span> <span style=\"color:#a6e22e\">NO<\/span> <span style=\"color:#a6e22e\">WARRANTY<\/span>, <span style=\"color:#a6e22e\">to<\/span> <span style=\"color:#a6e22e\">the<\/span> <span style=\"color:#a6e22e\">extent<\/span> <span style=\"color:#a6e22e\">permitted<\/span> <span style=\"color:#a6e22e\">by<\/span> <span style=\"color:#a6e22e\">law<\/span>.\n<span style=\"color:#a6e22e\">Please<\/span> <span style=\"color:#66d9ef\">select<\/span> <span style=\"color:#a6e22e\">what<\/span> <span style=\"color:#a6e22e\">kind<\/span> <span style=\"color:#a6e22e\">of<\/span> <span style=\"color:#a6e22e\">key<\/span> <span style=\"color:#a6e22e\">you<\/span> <span style=\"color:#a6e22e\">want<\/span>:\n   (<span style=\"color:#ae81ff\">1<\/span>) <span style=\"color:#a6e22e\">RSA<\/span> <span style=\"color:#a6e22e\">and<\/span> <span style=\"color:#a6e22e\">RSA<\/span> (<span style=\"color:#66d9ef\">default<\/span>)\n   (<span style=\"color:#ae81ff\">2<\/span>) <span style=\"color:#a6e22e\">DSA<\/span> <span style=\"color:#a6e22e\">and<\/span> <span style=\"color:#a6e22e\">Elgamal<\/span>\n   (<span style=\"color:#ae81ff\">3<\/span>) <span style=\"color:#a6e22e\">DSA<\/span> (<span style=\"color:#a6e22e\">sign<\/span> <span style=\"color:#a6e22e\">only<\/span>)\n   (<span style=\"color:#ae81ff\">4<\/span>) <span style=\"color:#a6e22e\">RSA<\/span> (<span style=\"color:#a6e22e\">sign<\/span> <span style=\"color:#a6e22e\">only<\/span>)\n<span style=\"color:#a6e22e\">Your<\/span> <span style=\"color:#a6e22e\">selection<\/span><span style=\"color:#960050;background-color:#1e0010\">?<\/span> <span style=\"color:#ae81ff\">4<\/span>\n<span style=\"color:#a6e22e\">RSA<\/span> <span style=\"color:#a6e22e\">keys<\/span> <span style=\"color:#a6e22e\">may<\/span> <span style=\"color:#a6e22e\">be<\/span> <span style=\"color:#a6e22e\">between<\/span> <span style=\"color:#ae81ff\">1024<\/span> <span style=\"color:#a6e22e\">and<\/span> <span style=\"color:#ae81ff\">4096<\/span> <span style=\"color:#a6e22e\">bits<\/span> <span style=\"color:#a6e22e\">long<\/span>.\n<span style=\"color:#a6e22e\">What<\/span> <span style=\"color:#a6e22e\">keysize<\/span> <span style=\"color:#a6e22e\">do<\/span> <span style=\"color:#a6e22e\">you<\/span> <span style=\"color:#a6e22e\">want<\/span><span style=\"color:#960050;background-color:#1e0010\">?<\/span> (<span style=\"color:#ae81ff\">2048<\/span>) <span style=\"color:#ae81ff\">2048<\/span>\n<span style=\"color:#a6e22e\">Requested<\/span> <span style=\"color:#a6e22e\">keysize<\/span> <span style=\"color:#a6e22e\">is<\/span> <span style=\"color:#ae81ff\">2048<\/span> <span style=\"color:#a6e22e\">bits<\/span>\n<span style=\"color:#a6e22e\">Please<\/span> <span style=\"color:#a6e22e\">specify<\/span> <span style=\"color:#a6e22e\">how<\/span> <span style=\"color:#a6e22e\">long<\/span> <span style=\"color:#a6e22e\">the<\/span> <span style=\"color:#a6e22e\">key<\/span> <span style=\"color:#a6e22e\">should<\/span> <span style=\"color:#a6e22e\">be<\/span> <span style=\"color:#a6e22e\">valid<\/span>.\n         <span style=\"color:#ae81ff\">0<\/span> = <span style=\"color:#a6e22e\">key<\/span> <span style=\"color:#a6e22e\">does<\/span> <span style=\"color:#a6e22e\">not<\/span> <span style=\"color:#a6e22e\">expire<\/span>\n      &lt;<span style=\"color:#a6e22e\">n<\/span>&gt;  = <span style=\"color:#a6e22e\">key<\/span> <span style=\"color:#a6e22e\">expires<\/span> <span style=\"color:#a6e22e\">in<\/span> <span style=\"color:#a6e22e\">n<\/span> <span style=\"color:#a6e22e\">days<\/span>\n      &lt;<span style=\"color:#a6e22e\">n<\/span>&gt;<span style=\"color:#a6e22e\">w<\/span> = <span style=\"color:#a6e22e\">key<\/span> <span style=\"color:#a6e22e\">expires<\/span> <span style=\"color:#a6e22e\">in<\/span> <span style=\"color:#a6e22e\">n<\/span> <span style=\"color:#a6e22e\">weeks<\/span>\n      &lt;<span style=\"color:#a6e22e\">n<\/span>&gt;<span style=\"color:#a6e22e\">m<\/span> = <span style=\"color:#a6e22e\">key<\/span> <span style=\"color:#a6e22e\">expires<\/span> <span style=\"color:#a6e22e\">in<\/span> <span style=\"color:#a6e22e\">n<\/span> <span style=\"color:#a6e22e\">months<\/span>\n      &lt;<span style=\"color:#a6e22e\">n<\/span>&gt;<span style=\"color:#a6e22e\">y<\/span> = <span style=\"color:#a6e22e\">key<\/span> <span style=\"color:#a6e22e\">expires<\/span> <span style=\"color:#a6e22e\">in<\/span> <span style=\"color:#a6e22e\">n<\/span> <span style=\"color:#a6e22e\">years<\/span>\n<span style=\"color:#a6e22e\">Key<\/span> <span style=\"color:#a6e22e\">is<\/span> <span style=\"color:#a6e22e\">valid<\/span> <span style=\"color:#66d9ef\">for<\/span><span style=\"color:#960050;background-color:#1e0010\">?<\/span> (<span style=\"color:#ae81ff\">0<\/span>) <span style=\"color:#ae81ff\">1<\/span><span style=\"color:#a6e22e\">y<\/span>\n<span style=\"color:#a6e22e\">Key<\/span> <span style=\"color:#a6e22e\">expires<\/span> <span style=\"color:#a6e22e\">at<\/span> <span style=\"color:#a6e22e\">Fri<\/span> <span style=\"color:#ae81ff\">11<\/span> <span style=\"color:#a6e22e\">Nov<\/span> <span style=\"color:#ae81ff\">2016<\/span> <span style=\"color:#ae81ff\">06<\/span>:<span style=\"color:#ae81ff\">59<\/span>:<span style=\"color:#ae81ff\">43<\/span> <span style=\"color:#a6e22e\">PM<\/span> <span style=\"color:#a6e22e\">UTC<\/span>\n<span style=\"color:#a6e22e\">Is<\/span> <span style=\"color:#a6e22e\">this<\/span> <span style=\"color:#a6e22e\">correct<\/span><span style=\"color:#960050;background-color:#1e0010\">?<\/span> (<span style=\"color:#a6e22e\">y<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#a6e22e\">N<\/span>) <span style=\"color:#a6e22e\">y<\/span>\n<span style=\"color:#a6e22e\">You<\/span> <span style=\"color:#a6e22e\">need<\/span> <span style=\"color:#a6e22e\">a<\/span> <span style=\"color:#a6e22e\">user<\/span> <span style=\"color:#a6e22e\">ID<\/span> <span style=\"color:#a6e22e\">to<\/span> <span style=\"color:#a6e22e\">identify<\/span> <span style=\"color:#a6e22e\">your<\/span> <span style=\"color:#a6e22e\">key<\/span>; <span style=\"color:#a6e22e\">the<\/span> <span style=\"color:#a6e22e\">software<\/span> <span style=\"color:#a6e22e\">constructs<\/span> <span style=\"color:#a6e22e\">the<\/span> <span style=\"color:#a6e22e\">user<\/span> <span style=\"color:#a6e22e\">ID<\/span>\n<span style=\"color:#a6e22e\">from<\/span> <span style=\"color:#a6e22e\">the<\/span> <span style=\"color:#a6e22e\">Real<\/span> <span style=\"color:#a6e22e\">Name<\/span>, <span style=\"color:#a6e22e\">Comment<\/span> <span style=\"color:#a6e22e\">and<\/span> <span style=\"color:#a6e22e\">Email<\/span> <span style=\"color:#a6e22e\">Address<\/span> <span style=\"color:#a6e22e\">in<\/span> <span style=\"color:#a6e22e\">this<\/span> <span style=\"color:#a6e22e\">form<\/span>:\n    <span style=\"color:#e6db74\">\"Heinrich Heine (Der Dichter) &lt;heinrichh@duesseldorf.de&gt;\"<\/span>\n<span style=\"color:#a6e22e\">Real<\/span> <span style=\"color:#a6e22e\">name<\/span>: <span style=\"color:#a6e22e\">Example<\/span> <span style=\"color:#a6e22e\">RPM<\/span> <span style=\"color:#a6e22e\">Repo<\/span>\n<span style=\"color:#a6e22e\">Email<\/span> <span style=\"color:#a6e22e\">address<\/span>: <span style=\"color:#a6e22e\">example_rpm_repo<\/span><span style=\"color:#960050;background-color:#1e0010\">@<\/span><span style=\"color:#a6e22e\">example<\/span>.<span style=\"color:#a6e22e\">net<\/span>\n<span style=\"color:#a6e22e\">Comment<\/span>: <span style=\"color:#a6e22e\">This<\/span> <span style=\"color:#a6e22e\">is<\/span> <span style=\"color:#a6e22e\">demonstrating<\/span> <span style=\"color:#a6e22e\">the<\/span> <span style=\"color:#a6e22e\">creationg<\/span> <span style=\"color:#a6e22e\">of<\/span> <span style=\"color:#a6e22e\">a<\/span> <span style=\"color:#a6e22e\">third<\/span> <span style=\"color:#a6e22e\">party<\/span> <span style=\"color:#a6e22e\">cPanel<\/span> <span style=\"color:#a6e22e\">RPM<\/span> <span style=\"color:#a6e22e\">repository<\/span>.\n<span style=\"color:#a6e22e\">You<\/span> <span style=\"color:#a6e22e\">selected<\/span> <span style=\"color:#a6e22e\">this<\/span> <span style=\"color:#a6e22e\">USER<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">ID<\/span>:\n    <span style=\"color:#e6db74\">\"Example RPM Repo (This is demonstrating the creationg of a third party cPanel RPM repository.) &lt;example_rpm_repo@example.net&gt;\"<\/span>\n<span style=\"color:#a6e22e\">Change<\/span> (<span style=\"color:#a6e22e\">N<\/span>)<span style=\"color:#a6e22e\">ame<\/span>, (<span style=\"color:#a6e22e\">C<\/span>)<span style=\"color:#a6e22e\">omment<\/span>, (<span style=\"color:#a6e22e\">E<\/span>)<span style=\"color:#a6e22e\">mail<\/span> <span style=\"color:#a6e22e\">or<\/span> (<span style=\"color:#a6e22e\">O<\/span>)<span style=\"color:#a6e22e\">kay<\/span><span style=\"color:#f92672\">\/<\/span>(<span style=\"color:#a6e22e\">Q<\/span>)<span style=\"color:#a6e22e\">uit<\/span><span style=\"color:#960050;background-color:#1e0010\">?<\/span> <span style=\"color:#a6e22e\">o<\/span>\n<span style=\"color:#a6e22e\">You<\/span> <span style=\"color:#a6e22e\">need<\/span> <span style=\"color:#a6e22e\">a<\/span> <span style=\"color:#a6e22e\">Passphrase<\/span> <span style=\"color:#a6e22e\">to<\/span> <span style=\"color:#a6e22e\">protect<\/span> <span style=\"color:#a6e22e\">your<\/span> <span style=\"color:#a6e22e\">secret<\/span> <span style=\"color:#a6e22e\">key<\/span>.\n<span style=\"color:#f92672\">...<\/span>\n<span style=\"color:#a6e22e\">gpg<\/span>: <span style=\"color:#a6e22e\">key<\/span> <span style=\"color:#ae81ff\">2<\/span><span style=\"color:#a6e22e\">A8507D6<\/span> <span style=\"color:#a6e22e\">marked<\/span> <span style=\"color:#a6e22e\">as<\/span> <span style=\"color:#a6e22e\">ultimately<\/span> <span style=\"color:#a6e22e\">trusted<\/span>\n<span style=\"color:#a6e22e\">public<\/span> <span style=\"color:#a6e22e\">and<\/span> <span style=\"color:#a6e22e\">secret<\/span> <span style=\"color:#a6e22e\">key<\/span> <span style=\"color:#a6e22e\">created<\/span> <span style=\"color:#a6e22e\">and<\/span> <span style=\"color:#a6e22e\">signed<\/span>.\n<span style=\"color:#a6e22e\">gpg<\/span>: <span style=\"color:#a6e22e\">checking<\/span> <span style=\"color:#a6e22e\">the<\/span> <span style=\"color:#a6e22e\">trustdb<\/span>\n<span style=\"color:#a6e22e\">gpg<\/span>: <span style=\"color:#ae81ff\">3<\/span> <span style=\"color:#a6e22e\">marginal<\/span>(<span style=\"color:#a6e22e\">s<\/span>) <span style=\"color:#a6e22e\">needed<\/span>, <span style=\"color:#ae81ff\">1<\/span> <span style=\"color:#a6e22e\">complete<\/span>(<span style=\"color:#a6e22e\">s<\/span>) <span style=\"color:#a6e22e\">needed<\/span>, <span style=\"color:#a6e22e\">PGP<\/span> <span style=\"color:#a6e22e\">trust<\/span> <span style=\"color:#a6e22e\">model<\/span>\n<span style=\"color:#a6e22e\">gpg<\/span>: <span style=\"color:#a6e22e\">depth<\/span>: <span style=\"color:#ae81ff\">0<\/span>  <span style=\"color:#a6e22e\">valid<\/span>:   <span style=\"color:#ae81ff\">1<\/span>  <span style=\"color:#a6e22e\">signed<\/span>:   <span style=\"color:#ae81ff\">0<\/span>  <span style=\"color:#a6e22e\">trust<\/span>: <span style=\"color:#ae81ff\">0<\/span><span style=\"color:#f92672\">-<\/span>, <span style=\"color:#ae81ff\">0<\/span><span style=\"color:#a6e22e\">q<\/span>, <span style=\"color:#ae81ff\">0<\/span><span style=\"color:#a6e22e\">n<\/span>, <span style=\"color:#ae81ff\">0<\/span><span style=\"color:#a6e22e\">m<\/span>, <span style=\"color:#ae81ff\">0<\/span><span style=\"color:#a6e22e\">f<\/span>, <span style=\"color:#ae81ff\">1<\/span><span style=\"color:#a6e22e\">u<\/span>\n<span style=\"color:#a6e22e\">gpg<\/span>: <span style=\"color:#a6e22e\">next<\/span> <span style=\"color:#a6e22e\">trustdb<\/span> <span style=\"color:#a6e22e\">check<\/span> <span style=\"color:#a6e22e\">due<\/span> <span style=\"color:#a6e22e\">at<\/span> <span style=\"color:#ae81ff\">2016<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">11<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">11<\/span>\n<span style=\"color:#a6e22e\">pub<\/span>   <span style=\"color:#ae81ff\">2048<\/span><span style=\"color:#a6e22e\">R<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#ae81ff\">2<\/span><span style=\"color:#a6e22e\">A8507D6<\/span> <span style=\"color:#ae81ff\">2015<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">11<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">12<\/span> [<span style=\"color:#a6e22e\">expires<\/span>: <span style=\"color:#ae81ff\">2016<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">11<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">11<\/span>]\n      <span style=\"color:#a6e22e\">Key<\/span> <span style=\"color:#a6e22e\">fingerprint<\/span> = <span style=\"color:#a6e22e\">A554<\/span> <span style=\"color:#ae81ff\">73<\/span><span style=\"color:#a6e22e\">AE<\/span> <span style=\"color:#ae81ff\">728<\/span><span style=\"color:#a6e22e\">E<\/span> <span style=\"color:#a6e22e\">CBA9<\/span> <span style=\"color:#ae81ff\">8283<\/span>  <span style=\"color:#a6e22e\">C6B3<\/span> <span style=\"color:#ae81ff\">4<\/span><span style=\"color:#a6e22e\">FE9<\/span> <span style=\"color:#a6e22e\">C226<\/span> <span style=\"color:#ae81ff\">2<\/span><span style=\"color:#a6e22e\">A85<\/span> <span style=\"color:#ae81ff\">07<\/span><span style=\"color:#a6e22e\">D6<\/span>\n<span style=\"color:#a6e22e\">uid<\/span>                  <span style=\"color:#a6e22e\">Example<\/span> <span style=\"color:#a6e22e\">RPM<\/span> <span style=\"color:#a6e22e\">Repo<\/span> (<span style=\"color:#a6e22e\">This<\/span> <span style=\"color:#a6e22e\">is<\/span> <span style=\"color:#a6e22e\">demonstrating<\/span> <span style=\"color:#a6e22e\">the<\/span> <span style=\"color:#a6e22e\">creationg<\/span> <span style=\"color:#a6e22e\">of<\/span> <span style=\"color:#a6e22e\">a<\/span> <span style=\"color:#a6e22e\">third<\/span> <span style=\"color:#a6e22e\">party<\/span> <span style=\"color:#a6e22e\">cPanel<\/span> <span style=\"color:#a6e22e\">RPM<\/span> <span style=\"color:#a6e22e\">repository<\/span>.) &lt;<span style=\"color:#a6e22e\">example_rpm_repo<\/span><span style=\"color:#960050;background-color:#1e0010\">@<\/span><span style=\"color:#a6e22e\">example<\/span>.<span style=\"color:#a6e22e\">net<\/span>&gt;\n<span style=\"color:#a6e22e\">Note<\/span> <span style=\"color:#a6e22e\">that<\/span> <span style=\"color:#a6e22e\">this<\/span> <span style=\"color:#a6e22e\">key<\/span> <span style=\"color:#a6e22e\">cannot<\/span> <span style=\"color:#a6e22e\">be<\/span> <span style=\"color:#a6e22e\">used<\/span> <span style=\"color:#66d9ef\">for<\/span> <span style=\"color:#a6e22e\">encryption<\/span>.  <span style=\"color:#a6e22e\">You<\/span> <span style=\"color:#a6e22e\">may<\/span> <span style=\"color:#a6e22e\">want<\/span> <span style=\"color:#a6e22e\">to<\/span> <span style=\"color:#a6e22e\">use<\/span>\n<span style=\"color:#a6e22e\">the<\/span> <span style=\"color:#a6e22e\">command<\/span> <span style=\"color:#e6db74\">\"--edit-key\"<\/span> <span style=\"color:#a6e22e\">to<\/span> <span style=\"color:#a6e22e\">generate<\/span> <span style=\"color:#a6e22e\">a<\/span> <span style=\"color:#a6e22e\">subkey<\/span> <span style=\"color:#66d9ef\">for<\/span> <span style=\"color:#a6e22e\">this<\/span> <span style=\"color:#a6e22e\">purpose<\/span>.<\/code><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<\/div><\/div>\n<\/p><\/div>\n<\/div>\n<h3 id=\"sign-the-rpm-sha512-digest-files\">Sign the rpm.sha512 digest files<\/h3>\n<p>In order to prevent rollback, old version, or file-copy attacks, cPanel, L.L.C. uses a specific GPG signature notation that specifies the filename on the remote server.<\/p>\n<ul>\n<li>\n<p>You <strong>must<\/strong> set this notation to use the public HTTP path for the file.<\/p>\n<\/li>\n<li>\n<p>For example, for an <code>rpm.sha512<\/code> file that exists at <code>http:\/\/example.com\/rpm_repo\/11.92\/centos\/7\/x86_64\/rpm.sha512<\/code>, set the filename notation to <code>\/rpm_repo\/11.92\/centos\/7\/x86_64\/rpm.sha512<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>To sign the file in the previous examples, you would run the following command: <\/p>\n<div class=\"highlight\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-perl\" data-lang=\"perl\">gpg <span style=\"color:#f92672\">--<\/span>output rpm<span style=\"color:#f92672\">.<\/span>sha512<span style=\"color:#f92672\">.<\/span>asc <span style=\"color:#f92672\">-<\/span>u <span style=\"color:#e6db74\">\"example_rpm_repo@example.net\"<\/span> <span style=\"color:#f92672\">--<\/span>armor <span style=\"color:#f92672\">--<\/span>sig<span style=\"color:#f92672\">-<\/span>notation <span style=\"color:#e6db74\">\"filename@gpg.notations.cpanel.net=\/thirdparty_rpm\/11.92\/centos\/7\/x86_64\/rpm.sha512\"<\/span> <span style=\"color:#f92672\">--<\/span>armor <span style=\"color:#f92672\">--<\/span>detach<span style=\"color:#f92672\">-<\/span>sign rpm<span style=\"color:#f92672\">.<\/span>sha512<\/code><\/pre>\n<\/div>\n<h3 id=\"add-your-key-to-the-vendor-keystore\">Add your key to the vendor keystore<\/h3>\n<p>In order to set up your cPanel &#038; WHM servers to use the RPM repository, you <strong>must<\/strong> add a copy of the public key that signed the RPMs to each cPanel &#038; WHM server. This allows each cPanel &#038; WHM server to verify the signed RPM digests.<\/p>\n<p>To export the public key, run the following command: <\/p>\n<div class=\"highlight\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-perl\" data-lang=\"perl\">gpg <span style=\"color:#f92672\">--<\/span>output example_rpm_repo<span style=\"color:#f92672\">.<\/span>pub<span style=\"color:#f92672\">.<\/span>asc <span style=\"color:#f92672\">--<\/span>armor <span style=\"color:#f92672\">--<\/span>export<\/code><\/pre>\n<\/div>\n<p>For the examples in this document, you could store this key as the <code>https:\/\/example.com\/rpm_repo\/example_rpm_repo.pub.asc<\/code> file.<\/p>\n<div class=\"callout callout-info\">\n<div class=\"callout-heading\">Note:<\/div>\n<div class=\"callout-content\">\n<ul>\n<li>You <strong>must<\/strong> store this key in a publicly web-accessible location.<\/li>\n<li>We <strong>strongly<\/strong> recommend that you store the key in a location that uses HTTPS\/SSL verification and encryption.<\/li>\n<\/ul><\/div>\n<\/div>\n<p>To add this key to the local system, run the following command, where <code>thirdparty<\/code> represents the vendor name and <code>release<\/code> represents the category: <\/p>\n<div class=\"highlight\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-perl\" data-lang=\"perl\"><span style=\"color:#e6db74\">\/scripts\/<\/span>updatesigningkey <span style=\"color:#f92672\">--<\/span>vendor thirdparty <span style=\"color:#f92672\">--<\/span>category release <span style=\"color:#f92672\">--<\/span>url https:<span style=\"color:#e6db74\">\/\/<\/span>example<span style=\"color:#f92672\">.<\/span>com<span style=\"color:#e6db74\">\/rpm_repo\/<\/span>example_rpm_repo<span style=\"color:#f92672\">.<\/span>pub<span style=\"color:#f92672\">.<\/span>asc<\/code><\/pre>\n<\/div>\n<h3 id=\"add-the-repository-to-the-local-versions-file\">Add the repository to the local versions file<\/h3>\n<p>To configure the system to use the RPM repository\u2019s public key, update the <code>\/var\/cpanel\/rpm.versions.d\/local.versions<\/code> file.<\/p>\n<ul>\n<li>\n<p>For more information about this file, read our The <code>rpm.versions<\/code> File documentation.<\/p>\n<\/li>\n<li>\n<p>For more information about the <code>\/scripts\/update_local_rpm_versions<\/code> script, which we <strong>strongly<\/strong> recommend for updates to the <code>local.versions<\/code> file, read our The <code>update_local_rpm_versions<\/code> Script documentation.<\/p>\n<\/li>\n<\/ul>\n<p>Each RPM entry in the <code>local.versions<\/code> file includes a corresponding <code>rpm_location<\/code> entry. Each <code>rpm_location<\/code> entry includes entries for <code>url_templates<\/code> and <code>location_keys<\/code> values.<\/p>\n<ul>\n<li>The <code>url_templates<\/code> entry contains the location of each RPM, which includes the operating system version, architecture, package name, package version, and package revision.<\/li>\n<li>The <code>location_keys<\/code> entry contains the vendor and category that you specified when you ran the <code>\/scripts\/updatesigningkey<\/code> script.<\/li>\n<\/ul>\n<p>For the examples in this document, the <code>local.versions<\/code> file might appear similar to the following example:<\/p>\n<div class=\"collapse-wrapper\">\n<p>        Click to view&#8230;<\/p>\n<div class=\"collapse\" id=\"click-to-view---1626990176723227271\">\n<div class=\"card card-body\">\n<div class=\"highlight\">\n<div style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\">\n<table style=\"border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;\">\n<tr>\n<td style=\"vertical-align:top;padding:0;margin:0;border:0;\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 1\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 2\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 3\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 4\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 5\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 6\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 7\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 8\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 9\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">10\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">11\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">12\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">13\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">14\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">15\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">16\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">17\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">18\n<\/span><\/code><\/pre>\n<\/td>\n<td style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#f92672\">---<\/span>\n<span style=\"color:#a6e22e\">file_format<\/span>:\n  <span style=\"color:#a6e22e\">version<\/span>: <span style=\"color:#ae81ff\">2<\/span>\n<span style=\"color:#a6e22e\">install_targets<\/span>: {}\n<span style=\"color:#a6e22e\">location_keys<\/span>:\n  <span style=\"color:#a6e22e\">thirdparty_rpm<\/span>:\n    <span style=\"color:#a6e22e\">categories<\/span>:\n      <span style=\"color:#f92672\">-<\/span> <span style=\"color:#a6e22e\">release<\/span>\n    <span style=\"color:#a6e22e\">vendor<\/span>: <span style=\"color:#a6e22e\">thirdparty<\/span>\n<span style=\"color:#a6e22e\">rpm_groups<\/span>: {}\n<span style=\"color:#a6e22e\">rpm_locations<\/span>:\n  <span style=\"color:#a6e22e\">cpanel<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">angularjs<\/span>: <span style=\"color:#a6e22e\">thirdparty_rpm<\/span>\n<span style=\"color:#a6e22e\">srpm_sub_packages<\/span>: {}\n<span style=\"color:#a6e22e\">srpm_versions<\/span>:\n  <span style=\"color:#a6e22e\">cpanel<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">angularjs<\/span>: <span style=\"color:#ae81ff\">1.4.4<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">1.<\/span><span style=\"color:#a6e22e\">cp1154<\/span>\n<span style=\"color:#a6e22e\">target_settings<\/span>: {}\n<span style=\"color:#a6e22e\">url_templates<\/span>:\n  <span style=\"color:#a6e22e\">thirdparty_rpm<\/span>: <span style=\"color:#960050;background-color:#1e0010\">'<\/span><span style=\"color:#a6e22e\">http<\/span>:<span style=\"color:#f92672\">\/\/<\/span><span style=\"color:#a6e22e\">example<\/span>.<span style=\"color:#a6e22e\">com<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#a6e22e\">rpm_repo<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#ae81ff\">11.92<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#a6e22e\">centos<\/span><span style=\"color:#f92672\">\/<\/span>[<span style=\"color:#f92672\">%<\/span> <span style=\"color:#a6e22e\">rpm_dist_ver<\/span> <span style=\"color:#f92672\">%<\/span>]<span style=\"color:#f92672\">\/<\/span>[<span style=\"color:#f92672\">%<\/span> <span style=\"color:#a6e22e\">rpm_arch<\/span> <span style=\"color:#f92672\">%<\/span>]<span style=\"color:#f92672\">\/<\/span>[<span style=\"color:#f92672\">%<\/span> <span style=\"color:#f92672\">package<\/span> <span style=\"color:#f92672\">%<\/span>]<span style=\"color:#f92672\">-<\/span>[<span style=\"color:#f92672\">%<\/span> <span style=\"color:#a6e22e\">package_version<\/span> <span style=\"color:#f92672\">%<\/span>]<span style=\"color:#f92672\">-<\/span>[<span style=\"color:#f92672\">%<\/span> <span style=\"color:#a6e22e\">package_revision<\/span> <span style=\"color:#f92672\">%<\/span>].<span style=\"color:#a6e22e\">noarch<\/span>.<span style=\"color:#a6e22e\">rpm<\/span><span style=\"color:#960050;background-color:#1e0010\">'<\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<\/div><\/div>\n<\/p><\/div>\n<\/div>\n<h3 id=\"rpm-repositories-without-gpg-signatures\">RPM repositories without GPG signatures<\/h3>\n<div class=\"callout callout-danger\">\n<div class=\"callout-heading\">Warning:<\/div>\n<div class=\"callout-content\">\n        We <strong>strongly<\/strong> discourage the creation of RPM repositories without GPG signatures. You <strong>cannot<\/strong> ensure the legitimacy of downloaded files without a signature.\n    <\/div>\n<\/div>\n<p>If you do <strong>not<\/strong> need or want to verify the signature on your RPMs, you can disable signature verification. To do this, add a <code>disabled<\/code> entry for the desired RPM to the <code>location_keys<\/code> section, as in the following example:<\/p>\n<div class=\"collapse-wrapper\">\n<p>        Click to view&#8230;<\/p>\n<div class=\"collapse\" id=\"click-to-view---1626990176727668213\">\n<div class=\"card card-body\">\n<div class=\"highlight\">\n<div style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\">\n<table style=\"border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block;\">\n<tr>\n<td style=\"vertical-align:top;padding:0;margin:0;border:0;\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 1\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 2\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 3\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 4\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 5\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 6\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 7\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 8\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"> 9\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">10\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">11\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">12\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">13\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">14\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">15\n<\/span><span style=\"margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\">16\n<\/span><\/code><\/pre>\n<\/td>\n<td style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\">\n<pre style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-go\" data-lang=\"go\"><span style=\"color:#f92672\">---<\/span>\n<span style=\"color:#a6e22e\">file_format<\/span>:\n  <span style=\"color:#a6e22e\">version<\/span>: <span style=\"color:#ae81ff\">2<\/span>\n<span style=\"color:#a6e22e\">install_targets<\/span>: {}\n<span style=\"color:#a6e22e\">location_keys<\/span>:\n  <span style=\"color:#a6e22e\">thirdparty_rpm<\/span>:\n    <span style=\"color:#a6e22e\">disabled<\/span>: <span style=\"color:#ae81ff\">1<\/span>\n<span style=\"color:#a6e22e\">rpm_groups<\/span>: {}\n<span style=\"color:#a6e22e\">rpm_locations<\/span>:\n  <span style=\"color:#a6e22e\">cpanel<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">angularjs<\/span>: <span style=\"color:#a6e22e\">thirdparty_rpm<\/span>\n<span style=\"color:#a6e22e\">srpm_sub_packages<\/span>: {}\n<span style=\"color:#a6e22e\">srpm_versions<\/span>:\n  <span style=\"color:#a6e22e\">cpanel<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#a6e22e\">angularjs<\/span>: <span style=\"color:#ae81ff\">1.4.4<\/span><span style=\"color:#f92672\">-<\/span><span style=\"color:#ae81ff\">1.<\/span><span style=\"color:#a6e22e\">cp1154<\/span>\n<span style=\"color:#a6e22e\">target_settings<\/span>: {}\n<span style=\"color:#a6e22e\">url_templates<\/span>:\n  <span style=\"color:#a6e22e\">thirdparty_rpm<\/span>: <span style=\"color:#960050;background-color:#1e0010\">'<\/span><span style=\"color:#a6e22e\">http<\/span>:<span style=\"color:#f92672\">\/\/<\/span><span style=\"color:#a6e22e\">example<\/span>.<span style=\"color:#a6e22e\">com<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#a6e22e\">rpm_repo<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#ae81ff\">11.92<\/span><span style=\"color:#f92672\">\/<\/span><span style=\"color:#a6e22e\">centos<\/span><span style=\"color:#f92672\">\/<\/span>[<span style=\"color:#f92672\">%<\/span> <span style=\"color:#a6e22e\">rpm_dist_ver<\/span> <span style=\"color:#f92672\">%<\/span>]<span style=\"color:#f92672\">\/<\/span>[<span style=\"color:#f92672\">%<\/span> <span style=\"color:#a6e22e\">rpm_arch<\/span> <span style=\"color:#f92672\">%<\/span>]<span style=\"color:#f92672\">\/<\/span>[<span style=\"color:#f92672\">%<\/span> <span style=\"color:#f92672\">package<\/span> <span style=\"color:#f92672\">%<\/span>]<span style=\"color:#f92672\">-<\/span>[<span style=\"color:#f92672\">%<\/span> <span style=\"color:#a6e22e\">package_version<\/span> <span style=\"color:#f92672\">%<\/span>]<span style=\"color:#f92672\">-<\/span>[<span style=\"color:#f92672\">%<\/span> <span style=\"color:#a6e22e\">package_revision<\/span> <span style=\"color:#f92672\">%<\/span>].<span style=\"color:#a6e22e\">noarch<\/span>.<span style=\"color:#a6e22e\">rpm<\/span><span style=\"color:#960050;background-color:#1e0010\">'<\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<\/div><\/div>\n<\/p><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Overview In order for third-party customers to create their own RPM repositories, they must create digest files and GnuPG (GPG) signatures as well as the necessary RPM files. Most of cPanel\u2019s software dependencies ship as RPM archives. These RPMs download from the cPanel, L.L.C. RPM repository during installations and updates. The RPM repository is a &hellip;<\/p>\n","protected":false},"author":1,"featured_media":516,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/ssdsunucum.com\/blog\/wp-json\/wp\/v2\/posts\/515"}],"collection":[{"href":"https:\/\/ssdsunucum.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ssdsunucum.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ssdsunucum.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ssdsunucum.com\/blog\/wp-json\/wp\/v2\/comments?post=515"}],"version-history":[{"count":0,"href":"https:\/\/ssdsunucum.com\/blog\/wp-json\/wp\/v2\/posts\/515\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ssdsunucum.com\/blog\/wp-json\/wp\/v2\/media\/516"}],"wp:attachment":[{"href":"https:\/\/ssdsunucum.com\/blog\/wp-json\/wp\/v2\/media?parent=515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ssdsunucum.com\/blog\/wp-json\/wp\/v2\/categories?post=515"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ssdsunucum.com\/blog\/wp-json\/wp\/v2\/tags?post=515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}