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:
- Online mode: Connect the server directly to the public CloudAvid repository to receive packages.
- 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.
- 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
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
.repoextension 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-repoidentifier 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 ofdnf 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:
| Parameter | Description |
|---|---|
--repoid= | Repository ID to download. |
--download-path= | Path used to store RPM files. |
--download-metadata | Downloads 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
baseurlvalue must point exactly to the parent directory ofrepodata. 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:
- Open WinSCP.
- Connect to the server:
File Protocol: SFTP or SCPHost name: target server IP addressPort: 22User name: a user with root access, such asrootPassword: user password- Click Login.
- 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.
- 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:
- 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:
- Connect to the server using a terminal such as PuTTY.
- Calculate the MD5 hash of the uploaded file:
md5sum /root/iso/pvm-7.0.44-el9.iso
- 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
loopoption creates a loop device. - The
rooption 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 packagesPVMQemuKvmRepo/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/.
-
Create a new file, for example with
viornano:vim /etc/yum.repos.d/pvm-iso.repo -
Add the following content to the file:
[pvm-iso]name=Plaivid ISO - Local Repositorybaseurl=file:///mnt/iso/PVMRepoenabled=1gpgcheck=0[pvm-qemu-iso]name=PVM QEMU KVM Repositorybaseurl=file:///mnt/iso/PVMQemuKvmRepoenabled=1gpgcheck=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.
-
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. -
Edit the repository file and configure GPG settings:
[pvm-iso]name=Plaivid ISObaseurl=file:///mnt/iso/PVMRepoenabled=1gpgcheck=1gpgkey=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:
-
Identify the disk:
lsblkIt is usually displayed as
/dev/sr0or/dev/cdrom. -
Create the path and mount it:
mkdir -p /mnt/dvdmount -o ro /dev/sr0 /mnt/dvd -
Configure the repository file. Note that the
baseurlpath changes:[rocky9-dvd-pvm]name=Rocky Linux 9 DVD - PVMbaseurl=file:///mnt/dvd/PVMRepoenabled=1gpgcheck=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:
-
Find the processes that are using the path:
fuser -vm /mnt/iso -
Return to the root path with
cd /or close the related processes. -
Run
umountagain.
Summary Checklist
Use the following checklist to configure a local repository successfully:
- Upload the ISO file securely, for example by using WinSCP.
- Verify file integrity with MD5.
- Create an empty directory and mount the ISO with
loop,ro. - Confirm that the
repodatadirectory exists inside the repository path. - Create the
.repofile under/etc/yum.repos.d/with the correctfile://address. - Rebuild the system cache with
dnf clean all && dnf makecache.