Skip to main content

PVM Repository Configuration and Management Guide

This document explains how to connect to, synchronize, and manage the PVM repository on Enterprise Linux-based distributions such as Rocky Linux.

Introduction

This document describes the standard procedure for installing and upgrading Plaivid using a software Repository. Repository-based deployment provides a centralized, reliable, and efficient method for software installation, maintenance, and lifecycle management, eliminating the need to install or upgrade the platform directly from an ISO image.

After completing this guide, you will be able to:

  • Install Plaivid through a Repository instead of using an ISO image, with complete procedures for both online and offline (air-gapped) deployment environments.
  • Upgrade an existing Plaivid installation to newer releases using the Repository infrastructure, enabling a secure and standardized update process while receiving the latest software packages, enhancements, and fixes.

The PVM repository can be provided to the target server in three ways:

  1. Online mode: Connect the server directly to the public CloudAvid repository to receive packages.
  2. Offline mode (Mirror): Download the full repository content on a system with internet access and transfer it to an isolated or air-gapped environment using physical media or an internal network.
  3. Use the ISO file as a local repository: Mount the ISO file on the server and use its content directly as a local repository without mirroring the full online repository.

Install the Repository Configuration Package (PVM Release Package)

Installing this package automatically configures the CloudAvid Repository on the system, including importing the required GPG public key and adding the repository configuration.

dnf install https://repository.cloudavid.com/repo/release/pvm-release-latest.rpm
Tip

If the pvm-release package is already installed, run the following command to retrieve the latest repository configuration and package metadata:

dnf update --repo pvm-repo

This command synchronizes the metadata and available packages from the pvm-repo repository with the latest published version.


### Verify the Installation

After installation is complete, verify that the repository configuration file and security key exist.

**Repository configuration file:**

```bash
cat /etc/yum.repos.d/pvm.repo

GPG public key path:

ls -l /etc/pki/rpm-gpg/RPM-GPG-KEY-PVM

Technical note: All files with the .repo extension under /etc/yum.repos.d/ are read by the package manager (DNF/YUM).

Manage the Repository and Cache

Run the following commands in order to confirm that the repository works correctly.

View enabled repositories:

dnf repolist

View all repositories, enabled and disabled:

dnf repolist --all

Rebuild the cache after any repository configuration change:

dnf clean all
dnf makecache

Update the Repository Configuration Package

If you need to update the repository configuration file or GPG key, upgrade the pvm-release package separately:

dnf upgrade pvm-release \
--disablerepo='*' \
--enablerepo='pvm-repo'

Warning: The pvm-repo identifier must exactly match the value defined in the [section] inside /etc/yum.repos.d/pvm.repo. To confirm the correct repository ID, check the output of dnf repolist --all.

Method 2: Offline Configuration

This process includes three main stages: downloading on a connected source system, transferring to the isolated environment, and configuring the target server.

Step 1: Prepare the Source System (Internet Connected)

First, install the required reposync tool and then apply the official PVM repository configuration.

Install the prerequisite:

dnf install dnf-plugins-core

Install the repository configuration:

dnf install https://repository.cloudavid.com/repo/release/pvm-release-latest.rpm

Step 2: Download (Sync) the Full Repository

Create a directory to store the repository files and start synchronization.

mkdir -p /srv/pvm-repository

Run reposync to download RPM files and metadata:

dnf reposync \
--repoid=pvm7.0 \
--repoid=pvm-extras \
--repoid=pvm-qemu-kvm \
--repoid=pvm-repo \
--download-path=/srv/pvm-repository \
--download-metadata

Parameter description:

ParameterDescription
--repoid=Repository ID to download.
--download-path=Path used to store RPM files.
--download-metadataDownloads metadata, including the repodata directory, so running createrepo_c again is not required.

Step 3: Prepare for Transfer

After the download is complete, the directory structure is similar to the following:

/srv/pvm-repository/
├── pvm7.0/
├── pvm-extras/
├── pvm-qemu-kvm/
└── pvm-repo/

Copy the GPG key next to the repository content for use on the target server:

cp /etc/pki/rpm-gpg/RPM-GPG-KEY-PVM /srv/pvm-repository/

Verify that repodata directories exist in the subdirectories:

find /srv/pvm-repository -type d -name repodata

Step 4: Package and Transfer

Compress the full repository content so it is ready to transfer:

tar -czf pvm-repository.tar.gz -C /srv pvm-repository

Transfer pvm-repository.tar.gz to the target server using USB or the management network.

On the target server, extract the file:

mkdir -p /srv
tar -xzf pvm-repository.tar.gz -C /srv

Using the Offline Repository on the Target Server

If the repository will be used only on the same local server and you do not want to configure an HTTP web server, use the file:// protocol.

Create the Local Repository Configuration File

First, find the exact paths that contain repodata directories, using the find command from the previous section. Then create a new repository configuration file:

vi /etc/yum.repos.d/pvm-local.repo

Enter the following content based on the extracted paths:

[pvm-repo]
name=PVM Local Repository
baseurl=file:///srv/pvm-repository/pvm-repo
enabled=0
gpgcheck=0

[pvm-extras]
name=PVM EL$releasever - Extras
baseurl=file:///srv/pvm-repository/extras/
enabled=1
gpgcheck=1
metadata_expire=0
module_hotfixes=true
gpgkey=file:///srv/pvm-repository/RPM-GPG-KEY-PVM

[pvm7.0]
name=PVM EL$releasever - 7.0
baseurl=file:///srv/pvm-repository/pvm-7.0/
enabled=1
gpgcheck=1
metadata_expire=0
module_hotfixes=true
gpgkey=file:///srv/pvm-repository/RPM-GPG-KEY-PVM

[pvm-qemu-kvm]
name=PVM EL$releasever - qemu-kvm
baseurl=file:///srv/pvm-repository/pvm-qemu-kvm/
enabled=0
gpgcheck=1
metadata_expire=0
module_hotfixes=true
gpgkey=file:///srv/pvm-repository/RPM-GPG-KEY-PVM

Important note: The baseurl value must point exactly to the parent directory of repodata. If the path is incorrect, the package manager cannot read the repository.

Finalize and Test

After saving the repository configuration file, update the system cache:

dnf clean all
dnf makecache

Check the final repository list:

dnf repolist --all

Method 3: Use the ISO File as a Local Repository (Local DNF/YUM)

This method explains how to convert the installation ISO into a local repository on Linux. It is useful when access to internet repositories is limited or when packages need to be installed quickly from a local server.

Step Zero: Prepare and Transfer the ISO File

Before configuring anything on the server, place a complete, uncorrupted copy of the ISO file on the target server.

Upload the ISO File Using WinSCP

WinSCP is a useful tool for transferring files between a Windows system and a Linux server using SCP/SFTP. Use the following steps to upload the ISO:

  1. Open WinSCP.
  2. Connect to the server:
    • File Protocol: SFTP or SCP
    • Host name: target server IP address
    • Port: 22
    • User name: a user with root access, such as root
    • Password: user password
    • Click Login.
  3. Select the destination path:
    • After connecting, use the right panel, which shows the server file system, and go to the target path. We recommend creating a dedicated directory, for example:
      /root/iso/
    • You can right-click and select Create Directory.
  4. Upload the file:
    • In the left panel, find the ISO file on the Windows system.
    • Drag the file into the right panel under /root/iso/ and release it to start the upload.
    • Wait until the upload finishes successfully.

Note: ISO files are usually large, so a stable network connection is required during upload.


Verify File Integrity (MD5 Checksum)

After the upload is complete, confirm that the file was not corrupted during transfer. Use MD5 for this check.

If you have the reference MD5 value from the provider:

  1. Connect to the server using a terminal such as PuTTY.
  2. Calculate the MD5 hash of the uploaded file:
    md5sum /root/iso/pvm-7.0.44-el9.iso
  3. Compare the command output with the original MD5 value that you already have or calculated on the source system.
    • If the values are different: the file is corrupted and must be uploaded again.
    • If the values are the same: the file was transferred correctly and is ready to use.

Step 1: Check the ISO File on the Server

Make sure the ISO file exists in the expected path.

ls -lh /root/iso/pvm-7.0.44-el9.iso

The output must show the file size, not a No such file or directory message.

Step 2: Create the Mount Path

Create a directory where the ISO content will be visible.

mkdir -p /mnt/iso

Step 3: Temporarily Mount the ISO File

Mount the ISO file as a virtual disk on the created path.

mount -o loop,ro /root/iso/pvm-7.0.44-el9.iso /mnt/iso
  • The loop option creates a loop device.
  • The ro option mounts the file as read-only, which is optional but recommended to prevent accidental changes.

Check mount status:

findmnt /mnt/iso

Or view the content:

ls -lah /mnt/iso

Standard ISO structure:

The ISO usually contains directories such as:

  • PVMRepo/, which contains the main PVM packages
  • PVMQemuKvmRepo/
  • QemuKvmRepo/
  • EFI/, images/, isolinux/, media.repo

Step 4: Check the Repository Structure Inside the ISO

For DNF to use this path as a repository, the repodata directory must exist inside the repository path.

Check for PVM repository metadata:

ls -lah /mnt/iso/PVMRepo
ls -lah /mnt/iso/PVMRepo/repodata

Files such as repomd.xml must exist in this directory.

Step 5: Create the Repository Configuration File for DNF

Now configure the operating system to use this path as a software installation source. Repository configuration files are stored under /etc/yum.repos.d/.

  1. Create a new file, for example with vi or nano:

    vim /etc/yum.repos.d/pvm-iso.repo
  2. Add the following content to the file:

    [pvm-iso]
    name=Plaivid ISO - Local Repository
    baseurl=file:///mnt/iso/PVMRepo
    enabled=1
    gpgcheck=0

    [pvm-qemu-iso]
    name=PVM QEMU KVM Repository
    baseurl=file:///mnt/iso/PVMQemuKvmRepo
    enabled=1
    gpgcheck=0
    # Add other repositories in the same way if needed.

Technical note: For local file system paths, use three slashes in file:///. Two slashes belong to the file protocol, and one slash points to the root path.

Step 6: Clean the Cache and Rebuild Metadata

After creating the .repo file, force the system to read the new repository information.

dnf clean all
dnf makecache

Final verification:

Check the repository list to make sure the repository is enabled:

dnf repolist

The output should include pvm-iso.

Step 7: Enable Security Validation (GPG Check)

In the previous example, gpgcheck=0 was used, meaning package authenticity was not checked. In production environments, enabling this security check is recommended.

  1. Find the security key inside the ISO:

    find /mnt/iso -maxdepth 2 -type f -iname '*GPG*'

    The key path is usually similar to /mnt/iso/RPM-GPG-KEY-PVM.

  2. Edit the repository file and configure GPG settings:

    [pvm-iso]
    name=Plaivid ISO
    baseurl=file:///mnt/iso/PVMRepo
    enabled=1
    gpgcheck=1
    gpgkey=file:///mnt/iso/RPM-GPG-KEY-PVM

Using a Physical Disk (DVD/CD-ROM) Instead of an ISO File

If you want to use a physical DVD in the server drive instead of a virtual ISO file, follow this separate method as an alternative to the ISO path:

  1. Identify the disk:

    lsblk

    It is usually displayed as /dev/sr0 or /dev/cdrom.

  2. Create the path and mount it:

    mkdir -p /mnt/dvd
    mount -o ro /dev/sr0 /mnt/dvd
  3. Configure the repository file. Note that the baseurl path changes:

    [rocky9-dvd-pvm]
    name=Rocky Linux 9 DVD - PVM
    baseurl=file:///mnt/dvd/PVMRepo
    enabled=1
    gpgcheck=0

Step 8: Unmount the ISO/DVD

After installation operations are complete, unmount the ISO or DVD to release resources or remove the disk.

Requirement: Make sure no terminal is currently open inside /mnt/iso or /mnt/dvd.

umount /mnt/iso

Troubleshooting:

If you see the target is busy error:

  1. Find the processes that are using the path:

    fuser -vm /mnt/iso
  2. Return to the root path with cd / or close the related processes.

  3. Run umount again.

Summary Checklist

Use the following checklist to configure a local repository successfully:

  1. Upload the ISO file securely, for example by using WinSCP.
  2. Verify file integrity with MD5.
  3. Create an empty directory and mount the ISO with loop,ro.
  4. Confirm that the repodata directory exists inside the repository path.
  5. Create the .repo file under /etc/yum.repos.d/ with the correct file:// address.
  6. Rebuild the system cache with dnf clean all && dnf makecache.