1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2024-12-22 17:34:18 +03:00
libvirt/docs/downloads.html.in
Jiri Denemark 6fc2258fc5 downloads.html: Add a link to GPG key used signing releases
While the key is available on public GPG key servers, having it locally
at https://libvirt.org/sources/gpg_key.asc is even better.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2021-04-09 13:48:54 +02:00

662 lines
23 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1>Downloads</h1>
<ul id="toc"></ul>
<h2><a id="releases">Project modules</a></h2>
<p>
The libvirt project maintains a number of inter-related modules beyond
the core C library/daemon.
</p>
<table class="top_table downloads">
<thead>
<tr>
<th>Module</th>
<th>Releases</th>
<th>GIT Repo</th>
<th>Bug Tracker</th>
<th>GIT Mirrors</th>
<th>Resources</th>
</tr>
</thead>
<tbody>
<tr>
<td>libvirt</td>
<td>
<a href="https://libvirt.org/sources/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt">github</a>
</td>
<td>
<a href="html/index.html">api ref</a>
<a href="news.html">changes</a>
</td>
</tr>
<tr>
<th colspan="7">Language bindings</th>
</tr>
<tr>
<td>C#</td>
<td>
<a href="https://libvirt.org/sources/csharp/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-csharp">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-csharp/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-csharp.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-csharp">github</a>
</td>
<td></td>
</tr>
<tr>
<td>Go</td>
<td>
<a href="https://libvirt.org/libvirt-go">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-go">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-go/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-go.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-go">github</a>
</td>
<td>
<a href="https://pkg.go.dev/libvirt.org/libvirt-go">api ref</a>
</td>
</tr>
<tr>
<td>Java</td>
<td>
<a href="https://libvirt.org/sources/java/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-java">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-java/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-java.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-java">github</a>
</td>
<td></td>
</tr>
<tr>
<td>OCaml</td>
<td>
<a href="https://libvirt.org/sources/ocaml/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-ocaml">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-ocaml/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-ocaml.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-ocaml">github</a>
</td>
<td></td>
</tr>
<tr>
<td>Perl (Sys::Virt)</td>
<td>
<a href="https://metacpan.org/release/Sys-Virt/">cpan</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-perl">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-perl/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-perl.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-perl">github</a>
</td>
<td>
<a href="https://metacpan.org/release/Sys-Virt/">api ref</a>
<a href="https://libvirt.org/git/?p=libvirt-perl.git;a=blob;f=Changes;hb=HEAD">changes</a>
</td>
</tr>
<tr>
<td>PHP</td>
<td>
<a href="https://libvirt.org/sources/php/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-php">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-php/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-php.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-php">github</a>
</td>
<td></td>
</tr>
<tr>
<td>Python</td>
<td>
<a href="https://libvirt.org/sources/python/">libvirt</a>
<a href="https://pypi.python.org/pypi/libvirt-python">pypi</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-python">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-python/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-python.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-python">github</a>
</td>
<td></td>
</tr>
<tr>
<td>Ruby</td>
<td>
<a href="https://libvirt.org/sources/ruby/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-ruby">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-ruby/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-ruby.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-ruby">github</a>
</td>
<td></td>
</tr>
<tr>
<td>Rust</td>
<td>
<a href="https://crates.io/crates/virt">crates.io</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-rust">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-rust/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-rust.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-rust">github</a>
</td>
<td>
<a href="https://docs.rs/virt">api ref</a>
</td>
</tr>
<tr>
<th colspan="7">Integration modules</th>
</tr>
<tr>
<td>GLib / GConfig / GObject</td>
<td>
<a href="https://libvirt.org/sources/glib/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-glib">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-glib/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-glib.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-glib">github</a>
</td>
<td></td>
</tr>
<tr>
<td>Go XML</td>
<td>
<a href="https://libvirt.org/libvirt-go-xml">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-go-xml">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-go-xml/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-go-xml.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-go-xml">github</a>
</td>
<td>
<a href="https://pkg.go.dev/libvirt.org/libvirt-go-xml">api ref</a>
</td>
</tr>
<tr>
<td>D-Bus</td>
<td>
<a href="https://libvirt.org/sources/dbus/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-dbus">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-dbus/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-dbus.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-dbus">github</a>
</td>
<td></td>
</tr>
<tr>
<td>Console Proxy</td>
<td>
<a href="https://libvirt.org/sources/consoleproxy/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-console-proxy">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-console-proxy/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-console-proxy.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-console-proxy">github</a>
</td>
<td></td>
</tr>
<tr>
<td>CIM provider</td>
<td>
<a href="https://libvirt.org/sources/CIM/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-cim">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-cim/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-cim.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-cim">github</a>
</td>
<td></td>
</tr>
<tr>
<td>CIM utils</td>
<td>
<a href="https://libvirt.org/sources/CIM/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libcmpiutil">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libcmpiutil/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libcmpiutil.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libcmpiutil">github</a>
</td>
<td></td>
</tr>
<tr>
<td>SNMP</td>
<td>
<a href="https://libvirt.org/sources/snmp/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-snmp">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-snmp/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-snmp.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-snmp">github</a>
</td>
<td></td>
</tr>
<tr>
<td>Application Sandbox</td>
<td>
<a href="https://libvirt.org/sources/sandbox/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-sandbox">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-sandbox/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-sandbox.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-sandbox">github</a>
</td>
<td></td>
</tr>
<tr>
<th colspan="7">Testing</th>
</tr>
<tr>
<td>TCK</td>
<td>
<a href="https://libvirt.org/sources/tck/">libvirt</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-tck">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-tck/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-tck.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-tck">github</a>
</td>
<td></td>
</tr>
<tr>
<td>Test API</td>
<td></td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-test-API">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-test-API/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-test-API.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-test-API">github</a>
</td>
<td></td>
</tr>
<tr>
<td>Continuous Integration Config</td>
<td></td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-ci">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-ci/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-ci.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-ci">github</a>
</td>
<td></td>
</tr>
<tr>
<td>CIM Test</td>
<td></td>
<td>
<a href="https://gitlab.com/libvirt/cimtest">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/cimtest/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=cimtest.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/cimtest">github</a>
</td>
<td></td>
</tr>
<tr>
<th colspan="7">Documentation</th>
</tr>
<tr>
<td>Publican Brand</td>
<td></td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-publican">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-publican/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-publican.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-publican">github</a>
</td>
<td></td>
</tr>
<tr>
<td>App Development Guide</td>
<td></td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-appdev-guide">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-appdev-guide/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-appdev-guide.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-appdev-guide">github</a>
</td>
<td></td>
</tr>
<tr>
<td>App Development Guide Python</td>
<td></td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-appdev-guide-python">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-appdev-guide-python/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-appdev-guide-python.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-appdev-guide-python">github</a>
</td>
<td></td>
</tr>
<tr>
<td>virsh Command Reference</td>
<td></td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-virshcmdref">gitlab</a>
</td>
<td>
<a href="https://gitlab.com/libvirt/libvirt-virshcmdref/-/issues">issues</a>
</td>
<td class="gitmirror">
<a href="https://libvirt.org/git/?p=libvirt-virshcmdref.git;a=summary">libvirt</a>
<a href="https://github.com/libvirt/libvirt-virshcmdref">github</a>
</td>
<td></td>
</tr>
</tbody>
</table>
<h2>Primary download site</h2>
<p>
Most modules have releases made available for download on the project
site via HTTPS. Some modules are instead made available at alternative
locations, for example, the Perl binding is made available only on CPAN.
</p>
<ul>
<li><a href="https://libvirt.org/sources/">libvirt.org HTTPS server</a></li>
</ul>
<h2><a id="schedule">Primary release schedule</a></h2>
<p>
The core libvirt module follows a time based plan, with releases made
once a month on the 1st of each month give or take a few days. The only
exception is at the start of the year where there are two 6 weeks gaps
(first release in the middle of Jan, then skip the Feb release), giving
a total of 11 releases a year. The Python and Perl modules will aim to
release at the same time as the core libvirt module. Other modules have
independent ad-hoc releases with no fixed time schedule.
</p>
<h2><a id="numbering">Release numbering</a></h2>
<p>
Since libvirt 2.0.0, a time based version numbering rule
is applied to the core library releases. As such, the changes
in version number have do not have any implications with respect
to the scope of features or bugfixes included, the stability of
the code, or the API / ABI compatibility (libvirt API / ABI is
guaranteed stable forever). The rules applied for changing the
libvirt version number are:
</p>
<dl>
<dt><code>major</code></dt>
<dd>incremented by 1 for the first release of the year (the
Jan 15th release)</dd>
<dt><code>minor</code></dt>
<dd>reset to 0 with every major increment, otherwise incremented by 1
for each monthly release from git master</dd>
<dt><code>micro</code></dt>
<dd>always 0 for releases from git master, incremented by 1
for each stable maintenance release</dd>
</dl>
<p>
Prior to 2.0.0, the major/minor numbers were incremented
fairly arbitrarily, and maintenance releases appended a
fourth digit. The language bindings will aim to use the
same version number as the most recent core library API
they support. The other modules have their own distinct
release numbering sequence, though they generally aim
to follow the above rules for incrementing major/minor/micro
digits.
</p>
<h2><a id="maintenance">Maintenance releases</a></h2>
<p>
In the git repository are several stable maintenance branches
for the core library, matching the
pattern <code>v<i>major</i>.<i>minor</i>-maint</code>;
these branches are forked off the corresponding
<code>v<i>major</i>.<i>minor</i>.0</code> formal
release, and may have further releases of the
form <code>v<i>major</i>.<i>minor</i>.<i>micro</i></code>.
These maintenance branches should only contain bug fixes, and no
new features, backported from the master branch, and are
supported as long as at least one downstream distribution
expresses interest in a given branch. These maintenance
branches are considered during CVE analysis. In contrast
to the primary releases which are made once a month, there
is no formal schedule for the maintenance releases, which
are made whenever there is a need to make available key
bugfixes to downstream consumers. The language bindings
and other modules generally do not provide stable branch
releases.
</p>
<p>
For more details about contents of maintenance releases, see
<a href="https://wiki.libvirt.org/page/Maintenance_Releases">the
wiki page</a>.
</p>
<h2><a id="git">GIT source repository</a></h2>
<p>
All modules maintained by the libvirt project have their primary
source available in the <a href="https://libvirt.org/git/">project GIT server</a>.
Each module can be cloned anonymously using:
</p>
<pre>
git clone https://libvirt.org/git/[module name].git</pre>
<p>
The <code>git://</code> protocol is also available if desired, but
<code>https://</code> is encouraged, since it is more reliable when
faced with strict firewalls.
</p>
<pre>
git clone git://libvirt.org/[module name].git</pre>
<p>
In addition to this primary repository, there are the following read-only git
repositories which mirror the master one. Note that we currently do not
use the full set of features on these mirrors (e.g. pull requests on
GitHub, so please don't use them). All patch review and discussion only
occurs on the <a href="contact.html">libvir-list</a> mailing list. Also
note that some repositories listed below allow HTTP checkouts too.
</p>
<pre>
<a href="https://github.com/libvirt/">https://github.com/libvirt/</a>
<a href="https://gitlab.com/libvirt/libvirt">https://gitlab.com/libvirt/</a></pre>
<h2><a id="keys">Signing keys</a></h2>
<p>
Source RPM packages and tarballs for libvirt and libvirt-python published
on this project site are signed with a GPG signature. You should always
verify the package signature before using the source to compile binary
packages. The following key is currently used to generate the GPG
signatures:
</p>
<pre>
pub 4096R/10084C9C 2020-07-20 Jiří Denemark &lt;jdenemar@redhat.com&gt;
Fingerprint=453B 6531 0595 5628 5547 1199 CA68 BE80 1008 4C9C
</pre>
<p>
It can be downloaded from
<a href="https://libvirt.org/sources/gpg_key.asc">this site</a> or from
public GPG key servers.
</p>
<p>
Releases prior to libvirt-6.6 were signed with the following GPG key:
</p>
<pre>
pub dsa1024 2000-05-31 [SC]
C744 15BA 7C9C 7F78 F02E 1DC3 4606 B8A5 DE95 BC1F
uid [ unknown] Daniel Veillard (Red Hat work email) &lt;veillard@redhat.com&gt;
uid [ unknown] Daniel Veillard &lt;Daniel.Veillard@w3.org&gt;
</pre>
<pre>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Starting from libvirt-6.6.0 the upstream releases will be done by Jiří Denemark
signed with his PGP key:
pub 4096R/10084C9C 2020-07-20 Jiří Denemark &lt;jdenemar@redhat.com&gt;
Fingerprint=453B 6531 0595 5628 5547 1199 CA68 BE80 1008 4C9C
This message is signed by the old signing key which was used for previous
releases.
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEE20ZoG7ka3OoXD6LUFViLJllr6l0FAl/8H9cACgkQFViLJllr
6l3iVwgAm9n703/QoIfPbxT5qGQzWK6LNriEcG2R9MLgFcW+UuGA9cqIBLhH1RaJ
q7Gc3gK0dgE2HAF6DxuG5+nkDY6LdmonLOVFWQkMCh41JHFrV6tw8y9hc/RNOb/m
gFAl4HpwYisjTRvsTRcpR3ElK6lI0Yu4GY4gJxj5qH4L5exR+kkylwuAxqP+wuyY
b/L/tP76F4+Q9SSPj0M01NRVC7V8m3yvnok5y374vtxvRFome0WMELn81vphxBLx
X7LQ1LyjvRs0HhN5MutJES5FYDzArTYZfZJozJgE465XrHxMMCbXbZ/AgAs/aD+5
x+m2mFplbS57tMEoMBP/ezbbL5wpvA==
=KnaO
-----END PGP SIGNATURE-----
</pre>
</body>
</html>