{"id":14236,"date":"2025-12-27T11:54:25","date_gmt":"2025-12-27T06:24:25","guid":{"rendered":"https:\/\/www.youstable.com\/blog\/?p=14236"},"modified":"2025-12-27T11:54:27","modified_gmt":"2025-12-27T06:24:27","slug":"create-yum-on-linux-server","status":"publish","type":"post","link":"https:\/\/www.youstable.com\/blog\/create-yum-on-linux-server","title":{"rendered":"How to Create YUM on Linux Server for Local Repositories"},"content":{"rendered":"\n<p><strong>Create YUM on a Linux server<\/strong> by building a local YUM repository (from an ISO or mirrored packages), generating metadata with createrepo_c, serving it over HTTP\/HTTPS, and adding a .repo file on clients that points to your baseurl. This enables fast, controlled, and offline-ready package management across RHEL\/CentOS\/AlmaLinux\/Rocky systems.<\/p>\n\n\n\n<p>In this guide, I\u2019ll show you how to create YUM on Linux server step by step\u2014specifically, how to create a local YUM repository that you can host privately or mirror from upstream sources. <\/p>\n\n\n\n<p>Whether you\u2019re running CentOS 7, AlmaLinux\/Rocky 8\/9, or RHEL, this tutorial covers offline setups, syncing, GPG security, and real-world maintenance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-is-yum-and-dnf-and-why-build-your-own-repo\"><strong>What is YUM (and DNF) and Why Build Your Own Repo?<\/strong><\/h2>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<p>YUM (Yellowdog Updater, Modified) is the package manager used by RPM-based distributions. On RHEL 8\/9, CentOS Stream, AlmaLinux, and Rocky Linux, the default client is DNF, but the yum command remains as a wrapper for compatibility. <\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1168\" height=\"784\" src=\"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/What-Is-YUM-and-DNF-and-Why-Build-Your-Own-Repo.png\" alt=\"What Is YUM (and DNF) and Why Build Your Own Repo?\" class=\"wp-image-14513 size-full\" srcset=\"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/What-Is-YUM-and-DNF-and-Why-Build-Your-Own-Repo.png 1168w, https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/What-Is-YUM-and-DNF-and-Why-Build-Your-Own-Repo-150x101.png 150w\" sizes=\"auto, (max-width: 1168px) 100vw, 1168px\" \/><\/figure><\/div>\n\n\n\n<p>Creating your own YUM repository centralizes packages for speed, control, and compliance\u2014ideal for data centers, air-gapped networks, and consistent DevOps environments.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"prerequisites\"><strong>Prerequisites<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A Linux server (RHEL\/CentOS 7 or AlmaLinux\/Rocky\/RHEL 8\/9) with sudo\/root access<\/li>\n\n\n\n<li>Basic networking, firewall, and SELinux familiarity<\/li>\n\n\n\n<li><strong>For RHEL:<\/strong> active subscription or a valid content source; for community: AlmaLinux\/Rocky\/CentOS Stream mirrors<\/li>\n\n\n\n<li><a href=\"https:\/\/www.youstable.com\/blog\/install-apache-web-server-in-linux\/\">Web server<\/a> to host the repository (Apache httpd or Nginx)<\/li>\n\n\n\n<li><strong>Utilities:<\/strong> createrepo_c, and optionally reposync (from yum-utils or dnf-plugins-core)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"quick-decision-two-ways-to-create-a-yum-repository\"><strong>Quick Decision: Two Ways to Create a YUM Repository<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Offline\/local repo from ISO or a directory of RPMs (best for air-gapped or curated package sets)<\/li>\n\n\n\n<li>Mirrored repo with reposync from upstream sources (best for keeping a local mirror up to date)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"option-1-create-a-local-yum-repository-from-iso-or-rpm-directory\"><strong>Option 1: Create a Local YUM Repository from ISO or RPM Directory<\/strong><\/h2>\n\n\n\n<p>This method builds a repository from packages you already have\u2014like a RHEL\/AlmaLinux\/Rocky ISO or a custom RPM collection. It\u2019s the fastest way to create <a href=\"https:\/\/www.youstable.com\/blog\/what-is-yum-on-linux-server\/\">YUM on Linux server<\/a> for offline use.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-1-install-required-tools\"><strong>Step 1: Install Required Tools<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># RHEL\/CentOS 7\nsudo yum install -y createrepo yum-utils httpd\n\n# AlmaLinux\/Rocky\/RHEL 8\/9\nsudo dnf install -y createrepo_c dnf-plugins-core httpd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-2-prepare-a-repository-directory\"><strong>Step 2: Prepare a Repository Directory<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/var\/www\/html\/repos\/localrepo\nsudo chown -R root:root \/var\/www\/html\/repos\nsudo chmod -R 755 \/var\/www\/html\/repos<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-3-optional-mount-an-iso-and-copy-packages\"><strong>Step 3: (Optional) Mount an ISO and Copy Packages<\/strong><\/h3>\n\n\n\n<p>If you\u2019re using a distribution ISO (e.g., AlmaLinux-9.x-x86_64-dvd.iso), mount and copy RPMs from the BaseOS\/AppStream (or Packages) directories.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/mnt\/iso\nsudo mount -o loop \/path\/to\/AlmaLinux-9.x-x86_64-dvd.iso \/mnt\/iso\n\n# Copy BaseOS and AppStream packages (adjust paths per distro)\nsudo cp -av \/mnt\/iso\/BaseOS\/Packages\/*.rpm \/var\/www\/html\/repos\/localrepo\/\nsudo cp -av \/mnt\/iso\/AppStream\/Packages\/*.rpm \/var\/www\/html\/repos\/localrepo\/<\/code><\/pre>\n\n\n\n<p>Alternatively, copy your curated RPMs into the same directory if you\u2019re building a custom repo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-4-generate-metadata-with-createrepo_c\"><strong>Step 4: Generate Metadata with createrepo_c<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Initialize repository metadata\nsudo createrepo_c \/var\/www\/html\/repos\/localrepo\n\n# Later, when updating with new RPMs, use --update:\nsudo createrepo_c --update \/var\/www\/html\/repos\/localrepo<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-5-serve-the-repo-over-http-apache\"><strong>Step 5: Serve the Repo over HTTP (Apache)<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable httpd --now\n\n# If SELinux is enforcing, allow Apache to read the repo directory\nsudo chcon -R -t httpd_sys_content_t \/var\/www\/html\/repos\n\n# Open firewall if needed\nsudo firewall-cmd --add-service=http --permanent\nsudo firewall-cmd --reload<\/code><\/pre>\n\n\n\n<p>Your repository base URL is now:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;&lt;your-server-ip-or-domain&gt;\/repos\/localrepo<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-6-create-a-repo-file-on-client-machines\"><strong>Step 6: Create a .repo File on Client Machines<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo tee \/etc\/yum.repos.d\/localrepo.repo &gt; \/dev\/null &lt;&lt;'EOF'\n&#91;localrepo]\nname=Local YUM Repository\nbaseurl=http:\/\/&lt;your-server-ip-or-domain&gt;\/repos\/localrepo\nenabled=1\ngpgcheck=0\nEOF\n\n# Refresh cache and test\nsudo yum clean all &amp;&amp; sudo yum makecache\nsudo yum repolist\n\n# Install a package to verify\nsudo yum install -y &lt;package-name&gt;<\/code><\/pre>\n\n\n\n<p>Set gpgcheck=1 after you sign packages or the repository metadata with a GPG key (covered below).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"optional-step-7-enable-gpg-signing-for-security\"><strong>(Optional) Step 7: Enable GPG Signing for Security<\/strong><\/h3>\n\n\n\n<p>Signing adds trust. Generate or import a GPG key, sign RPMs or metadata, and point clients to your public key.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Create a GPG key (interactive)\ngpg --full-generate-key\n\n# Export public key to serve via HTTP\ngpg --export -a \"Your Name or Repo Key\" | sudo tee \/var\/www\/html\/repos\/RPM-GPG-KEY-localrepo\n\n# On clients, import and enforce gpgcheck\nsudo rpm --import http:\/\/&lt;server&gt;\/repos\/RPM-GPG-KEY-localrepo\n\n# Then set in \/etc\/yum.repos.d\/localrepo.repo\ngpgcheck=1\ngpgkey=http:\/\/&lt;server&gt;\/repos\/RPM-GPG-KEY-localrepo<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"option-2-mirror-an-upstream-repository-with-reposync\"><strong>Option 2: Mirror an Upstream Repository with reposync<\/strong><\/h2>\n\n\n\n<p>Use reposync to mirror official repositories locally. This reduces external bandwidth and speeds up updates across many servers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-1-install-reposync-utilities\"><strong>Step 1: Install reposync Utilities<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># RHEL\/CentOS 7\nsudo yum install -y yum-utils httpd\n\n# AlmaLinux\/Rocky\/RHEL 8\/9\nsudo dnf install -y dnf-plugins-core httpd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-2-choose-which-repos-to-mirror\"><strong>Step 2: Choose Which Repos to Mirror<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AlmaLinux\/Rocky 8\/9: <\/strong>BaseOS, AppStream, Extras<\/li>\n\n\n\n<li><strong>RHEL 8\/9:<\/strong> BaseOS, AppStream (requires subscription access)<\/li>\n\n\n\n<li><strong>CentOS 7:<\/strong> base, updates, extras (EOL note: plan migration)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-3-run-reposync\"><strong>Step 3: Run reposync<\/strong><\/h3>\n\n\n\n<p>Create a directory structure and sync. Examples below show AlmaLinux 9; adjust for your distro and architecture.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>BASE=\/var\/www\/html\/repos\/almalinux9\nsudo mkdir -p $BASE\/{BaseOS,AppStream}\n# Sync packages and metadata\nsudo reposync -p $BASE\/BaseOS --download-metadata --repo=almalinux-baseos\nsudo reposync -p $BASE\/AppStream --download-metadata --repo=almalinux-appstream\n\n# If your reposync doesn't add repodata, generate it:\nsudo createrepo_c $BASE\/BaseOS\nsudo createrepo_c $BASE\/AppStream<\/code><\/pre>\n\n\n\n<p>On RHEL, ensure your subscription repos are enabled before syncing. On CentOS 7, use the repo IDs from \/etc\/yum.repos.d\/CentOS-Base.repo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-4-serve-and-expose-your-mirror\"><strong>Step 4: Serve and Expose Your Mirror<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable httpd --now\nsudo chcon -R -t httpd_sys_content_t \/var\/www\/html\/repos\nsudo firewall-cmd --add-service=http --permanent\nsudo firewall-cmd --reload<\/code><\/pre>\n\n\n\n<p>Create client repo files that point to your mirror:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># AlmaLinux 9 example:\nsudo tee \/etc\/yum.repos.d\/alma-local.repo &gt; \/dev\/null &lt;&lt;'EOF'\n&#91;almalinux-BaseOS-local]\nname=AlmaLinux 9 BaseOS (Local)\nbaseurl=http:\/\/&lt;server&gt;\/repos\/almalinux9\/BaseOS\nenabled=1\ngpgcheck=1\ngpgkey=https:\/\/repo.almalinux.org\/almalinux\/RPM-GPG-KEY-AlmaLinux-9\n\n&#91;almalinux-AppStream-local]\nname=AlmaLinux 9 AppStream (Local)\nbaseurl=http:\/\/&lt;server&gt;\/repos\/almalinux9\/AppStream\nenabled=1\ngpgcheck=1\ngpgkey=https:\/\/repo.almalinux.org\/almalinux\/RPM-GPG-KEY-AlmaLinux-9\nEOF\n\nsudo dnf clean all &amp;&amp; sudo dnf makecache\nsudo dnf repolist<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"maintenance-keep-your-yum-repository-healthy\"><strong>Maintenance: Keep Your YUM Repository Healthy<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Automate syncs: <\/strong>run reposync nightly\/weekly via cron or systemd timers<\/li>\n\n\n\n<li><strong>Prune old packages: <\/strong>use reposync &#8211;delete to remove upstream-deleted packages<\/li>\n\n\n\n<li><strong>Regenerate metadata: <\/strong>createrepo_c &#8211;update when adding\/removing RPMs<\/li>\n\n\n\n<li><strong>Monitor storage:<\/strong> NVMe-backed VPS or dedicated servers handle repo mirrors better under load<\/li>\n\n\n\n<li><strong>Secure access: <\/strong>prefer HTTPS, restrict by IP\/VPN for internal repos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Example <a href=\"https:\/\/www.youstable.com\/blog\/install-cron-jobs-on-linux\/\">cron job<\/a> (as root) to sync nightly at 2:30 AM\ncat &lt;&lt;'CRON' &gt;&gt; \/etc\/crontab\n30 2 * * * root reposync -p \/var\/www\/html\/repos\/almalinux9\/BaseOS --download-metadata --repo=almalinux-baseos --delete\n35 2 * * * root reposync -p \/var\/www\/html\/repos\/almalinux9\/AppStream --download-metadata --repo=almalinux-appstream --delete\n# Refresh metadata if needed\n40 2 * * * root createrepo_c --update \/var\/www\/html\/repos\/almalinux9\/BaseOS\n45 2 * * * root createrepo_c --update \/var\/www\/html\/repos\/almalinux9\/AppStream\nCRON<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"security-best-practices-for-private-yum-repos\"><strong>Security Best Practices for Private YUM Repos<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable gpgcheck=1 and distribute your GPG public key<\/li>\n\n\n\n<li>Serve over HTTPS with a valid certificate (<a href=\"https:\/\/www.youstable.com\/blog\/what-is-lets-encrypt-on-linux-server\/\">Let\u2019s Encrypt<\/a> for internet-facing repos)<\/li>\n\n\n\n<li>Use basic auth or IP allowlists for internal repositories<\/li>\n\n\n\n<li><strong>Audit changes: <\/strong>version control your repo .repo files and sync scripts<\/li>\n\n\n\n<li>Harden Apache\/Nginx and keep OS patched via your new repo<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"yum-vs-dnf-commands-youll-use\"><strong>YUM vs DNF: Commands You\u2019ll Use<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Install: <\/strong>yum install pkg equals dnf install pkg<\/li>\n\n\n\n<li><strong>Update cache\/list repos: <\/strong>yum makecache, yum repolist equals dnf makecache, dnf repolist<\/li>\n\n\n\n<li><strong>Clean cache:<\/strong> yum clean all equals dnf clean all<\/li>\n\n\n\n<li><strong>Mirror:<\/strong> yum-utils reposync (EL7) vs dnf-plugins-core reposync (EL8\/9)<\/li>\n<\/ul>\n\n\n\n<p>On modern systems, the yum command is often a symlink to dnf. All steps here work on both, with package names adjusted per version.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"troubleshooting-common-yum-repository-errors\"><strong>Troubleshooting Common YUM Repository Errors<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cannot find a valid baseurl: <\/strong>Verify baseurl in .repo, DNS, and firewall; ensure Apache is running and accessible<\/li>\n\n\n\n<li><strong>repodata\/repomd.xml not found:<\/strong> Run createrepo_c in the repo directory or ensure &#8211;download-metadata with reposync<\/li>\n\n\n\n<li><strong>GPG check failed: <\/strong>Import the correct GPG key and confirm gpgkey URL; set gpgcheck=0 temporarily for diagnostics<\/li>\n\n\n\n<li><strong>404 on packages: <\/strong>Check SELinux context (httpd_sys_content_t) and directory permissions (755)<\/li>\n\n\n\n<li><strong>Mismatched architecture:<\/strong> Ensure you\u2019re syncing\/serving the correct basearch (x86_64, aarch64)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"real-world-tips-from-the-hosting-floor\"><strong>Real-World Tips from the Hosting Floor<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Split repos by environment (prod\/stage\/dev) to isolate package versions<\/li>\n\n\n\n<li>Cache popular packages on edge nodes close to your app servers<\/li>\n\n\n\n<li>For large estates, mirror only what you need with &#8211;repo filters and include\/exclude lists<\/li>\n\n\n\n<li>Document your repo IDs and keep .repo files minimal and consistent via configuration management<\/li>\n<\/ul>\n\n\n\n<p>Hosting your private YUM repo on a fast NVMe VPS or a dedicated server improves throughput during patch windows. YouStable offers optimized VPS and bare-metal options ideal for mirrors, with bandwidth, snapshots, and DDoS protection that keep your repos reliable under load.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"faqs\"><strong>FAQs<\/strong><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1765955919531\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-do-i-create-a-local-yum-repository-from-an-iso\"><strong>How do I create a local YUM repository from an ISO?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Mount the ISO, copy RPMs to a directory, run createrepo_c to generate repodata, and serve the directory via Apache or Nginx. Finally, create a .repo file on clients pointing baseurl to your server\u2019s path and run yum\/dnf makecache.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765955937467\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"is-yum-replaced-by-dnf\"><strong>Is YUM replaced by DNF?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>On RHEL 8\/9 and derivatives, DNF is the default, but the yum command remains for compatibility. The repository layout and configuration (e.g., .repo files, repodata) work the same, so this guide applies to both.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765955949106\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-do-i-mirror-official-repositories-locally\"><strong>How do I mirror official repositories locally?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Install yum-utils (EL7) or dnf-plugins-core (EL8\/9), then run reposync with the desired repo IDs and &#8211;download-metadata. Serve the synced directories over HTTP\/HTTPS and point clients to your baseurl. Use &#8211;delete to prune removed packages.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765955961964\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-can-i-secure-a-private-yum-repository\"><strong>How can I secure a private YUM repository?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Enable GPG checks, serve over HTTPS, restrict access by IP or VPN, and store repo content on hardened systems. Sign your packages or metadata and distribute your GPG public key via a trusted channel.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765955971765\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"whats-the-easiest-way-to-point-many-servers-to-my-repo\"><strong>What\u2019s the easiest way to point many servers to my repo?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Use configuration management (Ansible, Puppet, or Salt) to deploy the .repo file uniformly. Keep repos versioned and separate by environment to avoid accidental upgrades across fleets.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Create YUM on a Linux server by building a local YUM repository (from an ISO or mirrored packages), generating metadata [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":16333,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"iawp_total_views":7,"footnotes":""},"categories":[350],"tags":[],"class_list":["post-14236","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledgebase"],"acf":[],"featured_image_src":"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/How-to-Create-YUM-on-Linux-Server-for-Local-Repositories.jpg","author_info":{"display_name":"Sanjeet Chauhan","author_link":"https:\/\/www.youstable.com\/blog\/author\/sanjeet"},"_links":{"self":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/14236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/comments?post=14236"}],"version-history":[{"count":4,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/14236\/revisions"}],"predecessor-version":[{"id":16335,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/14236\/revisions\/16335"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media\/16333"}],"wp:attachment":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media?parent=14236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/categories?post=14236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/tags?post=14236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}