{"id":127,"date":"2019-03-13T20:28:33","date_gmt":"2019-03-13T20:28:33","guid":{"rendered":"http:\/\/www.hoopchuk.org\/wordpress\/?page_id=127"},"modified":"2019-03-25T19:41:53","modified_gmt":"2019-03-25T19:41:53","slug":"dnf-local","status":"publish","type":"page","link":"https:\/\/www.hoopchuk.org\/wordpress\/dnf-local\/","title":{"rendered":"dnf local"},"content":{"rendered":"<h1>Summary<\/h1>\n<p>Ross&#8217;s quick guide to &#8220;dnf local&#8221;.<\/p>\n<p>I have multiple Fedora 28 installs at my house with only slight differences.<\/p>\n<p>What I want is to be able to do one:<\/p>\n<pre>[root@fubar ~]# dnf upgrade\nLast metadata expiration check: 0:02:37 ago on Wed 13 Mar 2019 10:51:07 AM CDT.\nDependencies resolved.\n===============================================================================\n Package                 Arch        Version                Repository    Size\n===============================================================================\nUpgrading:\n <span style=\"color: #ff0000;\">btrfs-progs             x86_64      4.20.2-1.fc28          updates      784 k<\/span>\n...<\/pre>\n<p>And have other &#8220;upgrade&#8221; at my house use &#8220;a local dnf repo&#8221; if the &#8220;Package&#8221; was already downloaded like<span id='easy-footnote-1-127' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/www.hoopchuk.org\/wordpress\/dnf-local\/#easy-footnote-bottom-1-127' title='I have enough bandwidth it&amp;#8217;s not a big deal to just re-download everything per server &amp;#8230; this was an excellent opportunity to learn a &lt;em&gt;lot&lt;\/em&gt; about &amp;#8220;dnf&amp;#8221; :-) NOTE &amp;#8220;smileys&amp;#8221; don&amp;#8217;t work in footnotes '><sup>1<\/sup><\/a><\/span>:<\/p>\n<pre>[root@snafu ~]# dnf upgrade\nLast metadata expiration check: 0:00:00 ago on Wed 13 Mar 2019 11:29:30 AM CDT.\nDependencies resolved.\n===============================================================================\n Package                Arch     Version              Repository          Size\n===============================================================================\nUpgrading:\n <span style=\"color: #ff0000;\">btrfs-progs            x86_64   4.20.2-1.fc28        fubar-local-repo   784 k<\/span>\n...<\/pre>\n<h1>TODOs<\/h1>\n<p>There are at least two &#8220;TODOs&#8221; I can think of on 13MAR2019WED:<\/p>\n<ol>\n<li>Being paranoid I want to make sure the local really has just what was last needed by the &#8220;server dnf upgrade&#8221; so I&#8217;m think a heavy handed &#8220;delete the old repo and recreate&#8221;.<\/li>\n<li>When I go from Fedora 28 to Fedora 29 I probably should turn this off.<\/li>\n<\/ol>\n<h1>Server Names\/Functions<\/h1>\n<p>For purposes of this document here&#8217;s the names and function:<\/p>\n<table>\n<tbody>\n<tr>\n<th>SERVER NAME<\/th>\n<th>FUNCTION<\/th>\n<\/tr>\n<tr>\n<td>fubar<\/td>\n<td>main master <em>server<\/em> &#8211; <span style=\"color: #ff0000;\">dnf repo<\/span>, ftp server, master for files, backups, webpages, etc<\/td>\n<\/tr>\n<tr>\n<td>snafu<\/td>\n<td>laptop <em>client<\/em> &#8211; references above dnf repo if possible<\/td>\n<\/tr>\n<tr>\n<td>etc<\/td>\n<td>other laptops and functions &#8211; references above dnf repo if possible<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Notice we&#8217;re setting up a traditional &#8220;client\/server&#8221; relationship with:<\/p>\n<ul>\n<li>server -&gt; fubar<\/li>\n<li>client -&gt; snafu<\/li>\n<\/ul>\n<h1>Master<\/h1>\n<p><strong>These are the things you do on the master!<\/strong><\/p>\n<h2>dnf plugin local<\/h2>\n<p>On the &#8220;main server&#8221; (and nowhere else) install &#8220;plugin local&#8221; like:<\/p>\n<pre>[root@fubar ~]# dnf install python3-dnf-plugin-local<\/pre>\n<p>It&#8217;s quite possible you just retry &#8220;dnf&#8221; and get something like:<\/p>\n<pre>[root@fubar ~]# dnf search bogus\nFailed to synchronize cache for repo '_dnf_local', disabling.\n...<\/pre>\n<p>Read on &#8230;<\/p>\n<p>This will create a config like:<\/p>\n<pre>\/etc\/dnf\/plugins\/local.conf<\/pre>\n<p>And it&#8217;s referencing a directory that probably doesn&#8217;t exist and certainly doesn&#8217;t have a &#8220;dnf repository&#8221; available. So let&#8217;s modify the config thusly:<\/p>\n<pre>[main]\nenabled = true\n# Path to the local repository.\n# repodir = \/var\/lib\/dnf\/plugins\/local\n# added by ross\nrepodir = \/var\/ftp\/pub\/dnfrepo\n...<\/pre>\n<p>I use anonymous ftp to present repos like &#8220;CPAN&#8221; and &#8220;dnf&#8221; so I put it under &#8220;\/var\/ftp\/pub\/&#8221;. When I create the &#8220;dnfrepo&#8221; I &#8220;chmod 2775&#8221; to my user so I have &#8220;control over the files&#8221; (read that &#8220;can remove&#8221;) without using root (later we&#8217;ll do a &#8220;rm -rf&#8221; and I hate doing that as root). Something like (note I&#8217;m not sure for what I want which is &#8220;group file permission will be read\/write&#8221; that &#8220;g::rwX&#8221; would change anything):<\/p>\n<pre>[root@fubar ~]# mkdir \/var\/ftp\/pub\/dnfrepo\/\n[root@fubar ~]# chown root:myuser \/var\/ftp\/pub\/dnfrepo\/\n[root@fubar ~]# chmod 2775 \/var\/ftp\/pub\/dnfrepo\/\n[root@fubar ~]# setfacl -d -m g::rwx \/var\/ftp\/pub\/dnfrepo\/<\/pre>\n<h2>Reset Repo<\/h2>\n<p><em>This is not done the first time!<\/em><\/p>\n<p>The point of this is not to have a complete mirror repo. It&#8217;s more important that it be &#8220;correct&#8221; (current) and it&#8217;s valid after the run on the server. So before a &#8220;dnf upgrade&#8221; I clean out like (only the commands in <span style=\"color: #ff0000;\">red<\/span> need to be run as root):<\/p>\n<pre>[ross@fubar ~]$ rm -f           \/var\/ftp\/pub\/dnfrepo\/*.rpm\n[ross@fubar ~]$ rm -rf          \/var\/ftp\/pub\/dnfrepo\/repodata\/\n<span style=\"color: #ff0000;\">[root@fubar ~]# createrepo_c -v \/var\/ftp\/pub\/dnfrepo\/\n<\/span><\/pre>\n<h2>createrepo_c<\/h2>\n<p>If you read the comments carefully in the config above you&#8217;ll see it wants something called &#8220;createrepo_c&#8221; so I tried:<\/p>\n<pre>[root@fubar ~]# dnf install createrepo_c\n<span style=\"color: #ff0000;\">Failed to synchronize cache for repo '_dnf_local', disabling.<\/span>\nLast metadata expiration check: 0:56:36 ago on Wed 13 Mar 2019 09:53:18 AM CDT.\n<span style=\"color: #ff0000;\">Package createrepo_c-0.10.0-19.fc28.x86_64 is already installed, skipping.<\/span>\nDependencies resolved.\n<span style=\"color: #ff0000;\">Nothing to do.<\/span>\nComplete!<\/pre>\n<p>So despite what the comments in the config say it doesn&#8217;t initialize the new &#8220;repo directory&#8221; automatically so I did:<\/p>\n<pre>[root@fubar ~]# createrepo_c -v \/var\/ftp\/pub\/dnfrepo\n...\n10:50:44: All done<\/pre>\n<p>If I list my &#8220;repo&#8221; now there&#8217;s not much in it:<\/p>\n<pre>[root@fubar ~]# ls -a \/var\/ftp\/pub\/dnfrepo\n. .. repodata<\/pre>\n<p>Now when you run &#8220;dnf&#8221; the next time it will find your repo like:<\/p>\n<pre>[root@fubar ~]# dnf search bogus\n_dnf_local 251 kB\/s | 257 B 00:00 \nLast metadata expiration check: 0:00:00 ago on Wed 13 Mar 2019 10:51:07 AM CDT.\n...<\/pre>\n<p>And the next time I do a &#8220;dnf upgrade&#8221; I see what I want:<\/p>\n<pre>[root@fubar ~]# dnf upgrade\nLast metadata expiration check: 0:02:37 ago on Wed 13 Mar 2019 10:51:07 AM CDT.\n...\nbtrfs-progs x86_64 4.20.2-1.fc28 updates 784 k\n...\n<span style=\"color: #ff0000;\">Total download size: 9.7 M<\/span>\n<span style=\"color: #ff0000;\">Is this ok [y\/N]: y<\/span>\nDownloading Packages:\n(1\/16): libsmbclient-4.8.8-0.fc28_4.8.9-1.fc28 231 kB\/s | 89 kB 00:00\n...<\/pre>\n<p>So I did all of this to &#8220;save&#8221; downloading 9.7M &#8230; but I learned a lot \ud83d\ude42 <span id='easy-footnote-2-127' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/www.hoopchuk.org\/wordpress\/dnf-local\/#easy-footnote-bottom-2-127' title='There are times like when I&amp;#8217;ve been gone for a week on vacation this can easily be 400 to 500 M and across 5 or more fedora installs it does save download time.'><sup>2<\/sup><\/a><\/span><\/p>\n<p>If I list my repo directory now I see:<\/p>\n<pre>[root@fubar ~]# ls -a \/var\/ftp\/pub\/dnfrepo\/\n.\n..\nbtrfs-progs-4.20.2-1.fc28.x86_64.rpm\n...\nlibsmbclient-4.8.9-1.fc28.x86_64.rpm\n...\nrepodata\n...<\/pre>\n<p>The &#8220;server&#8221; is now complete let&#8217;s move onto the &#8220;client&#8221; and get it to reference our &#8220;dnf repo service&#8221;.<\/p>\n<h1>Client<\/h1>\n<p>How to get the &#8220;client&#8221; to reference the new &#8220;dnf repo service&#8221;?<\/p>\n<h2>dnf repo<\/h2>\n<p>Immediately after the &#8220;server&#8221; above finish on the client when I run &#8220;dnf upgrade&#8221; notice I&#8217;m going to download the same packages &#8230; this is what I&#8217;m trying to prevent:<\/p>\n<pre>[root@snafu ~]# dnf upgrade\nLast metadata expiration check: 0:00:46 ago on Wed 13 Mar 2019 11:05:58 AM CDT.\nDependencies resolved.\n===============================================================================\nPackage Arch Version Repository Size\n===============================================================================\nUpgrading:\n<span style=\"color: #ff0000;\">  btrfs-progs x86_64 4.20.2-1.fc28 updates 784 k<\/span>\n...<\/pre>\n<p>So let&#8217;s create a &#8220;repo file&#8221; that references out new &#8220;local just downloaded repo&#8221;. It will be at:<\/p>\n<pre>\/etc\/yum.repos.d\/fubar-local.repo<\/pre>\n<p>And have contents:<\/p>\n<pre>[fubar-local-repo]\nname=Fubar Local Repository\n#baseurl=file:\/\/\/testrepo\/\nbaseurl=ftp:\/\/fubar\/pub\/dnfrepo\/\nenabled=1\ngpgcheck=0\n<span style=\"color: #ff0000;\">priority = 10\nmetadata_expire = 60\n<\/span><\/pre>\n<p>The &#8220;priority = 10&#8221; is very important. Without it &#8220;dnf&#8221; will see your repo has identical stuff to &#8220;upgrade&#8221; and ignore our new repo.<\/p>\n<p>The &#8220;metadata_expire = 60&#8221; is important. Basically it says re-read this repo after 1 minute (60 seconds). You really don&#8217;t want to &#8220;dnf <code>&hyphen;&hyphen;refresh<\/code> upgrade&#8221; all the time because just &#8220;refresh-ing&#8221; the repos takes &#8220;Fedora 28 &#8211; x86_64 =&gt; 30 MB (00:38 min:sec)&#8221; and &#8220;Fedora 28 &#8211; x86_64 1.2 =&gt; 60 MB 00:51 (min:sec)&#8221; respectively. That 90MB will quickly offset any gain this might provide. So by setting &#8220;metadata_expire = 60&#8221; you force &#8220;fubar-local-repo&#8221; basically everytime you use it like:<\/p>\n<pre>[root@snafu ~]# dnf upgrade\n<span style=\"color: #ff0000;\">Fubar Local Repository                         243 kB\/s |  11 kB     00:00<\/span> \n...<\/pre>\n<p>Let&#8217;s update our &#8220;dnf repo&#8221; like:<\/p>\n<pre>[root@snafu ~]# dnf repolist\n<span style=\"color: #ff0000;\">Fubar Local Repository                         404 kB\/s |  19 kB     00:00<\/span>    \nLast metadata expiration check: 0:00:00 ago on Wed 13 Mar 2019 11:28:27 AM CDT.\nrepo id                    repo name                                     status\n*fedora                    Fedora 28 - x86_64                            57,327\nfedora-cisco-openh264      Fedora 28 openh264 (From Cisco) - x86_64           8\nfubar-local-repo           Fubar Local Repository                            16\ngoogle-chrome              google-chrome                                      3\n*rpmfusion-free            RPM Fusion for Fedora 28 - Free                  563\n*rpmfusion-free-updates    RPM Fusion for Fedora 28 - Free - Updates        276\n*updates                   Fedora 28 - x86_64 - Updates                  21,508<\/pre>\n<p>If\u00a0 you check all your repos you should see:<\/p>\n<pre>[root@snafu ~]# dnf repolist all\nLast metadata expiration check: 2:08:51 ago on Wed 13 Mar 2019 06:05:59 PM CDT.\nrepo id                                   repo name             status\n...\nfubar-local-repo                          Fubar Local Repositor <span style=\"color: #339966;\">enabled<\/span>:     16\n...\n*updates                                  Fedora 28 - x86_64 -  <span style=\"color: #339966;\">enabled<\/span>: 21,508\n...<\/pre>\n<h2>Use Our New Repo<\/h2>\n<p>Let&#8217;s do a normal &#8220;dnf upgrade&#8221; and check the output closely to see if our new repo is going to be used:<\/p>\n<pre>[root@snafu ~]# dnf upgrade\nLast metadata expiration check: 0:00:00 ago on Wed 13 Mar 2019 11:29:30 AM CDT.\nDependencies resolved.\n===============================================================================\n Package                Arch     Version              Repository          Size\n===============================================================================\nUpgrading:\n btrfs-progs            x86_64   4.20.2-1.fc28        <span style=\"color: #ff0000;\">fubar-local-repo<\/span>   784 k\n...\n google-chrome-stable   x86_64   73.0.3683.75-1       google-chrome       55 M\n libsmbclient           x86_64   2:4.8.9-1.fc28       <span style=\"color: #ff0000;\">fubar-local-repo<\/span>   136 k\n...<\/pre>\n<p>How cool is that? \ud83d\ude42<\/p>\n<h1>dnf Commands<\/h1>\n<p>Most of the time the only &#8220;dnf&#8221; command I run is &#8220;upgrade&#8221; like:<\/p>\n<pre>[root@snafu ~]# dnf upgrade<\/pre>\n<h2><code>&hyphen;&hyphen;disablerepo<\/code><\/h2>\n<p>I almost never set &#8220;auto yes&#8221; so I always have a chance to say &#8220;N&#8221; on an upgrade so it&#8217;s safe to use <code>&hyphen;&hyphen;disablerepo<\/code> to see what the effects are like:<\/p>\n<pre>[root@snafu ~]# dnf upgrade\nLast metadata expiration check: 0:00:00 ago on Thu 14 Mar 2019 08:05:20 PM CDT.\nDependencies resolved.\n===============================================================================\n\u00a0Package               Arch         Version                Repository     Size\n===============================================================================\nUpgrading:\n...\n\u00a0pcre                x86_64     8.43-1.fc28         <span style=\"color: #ff0000;\">fubar-local-repo<\/span>     208 k\n\nTransaction Summary\n===============================================================================\nUpgrade 6 Packages\n\nTotal download size: 93 M\n<span style=\"color: #ff0000;\">Is this ok [y\/N]: N<\/span>\n<span style=\"color: #ff0000;\">Operation aborted.<\/span><\/pre>\n<p>If I need to make sure my custom repo isn&#8217;t hurting anything I can disable for just the one command like:<\/p>\n<pre>[root@snafu ~]# dnf --disablerepo=fubar-local-repo upgrade\nLast metadata expiration check: 0:11:32 ago on Thu 14 Mar 2019 07:51:29 PM CDT.\nDependencies resolved.\n===============================================================================\n\u00a0Package               Arch         Version                Repository     Size\n===============================================================================\nUpgrading:\n...\n pcre                  x86_64       8.43-1.fc28            <span style=\"color: #ff0000;\">updates<\/span>       208 k\n\nTransaction Summary\n===============================================================================\nUpgrade 6 Packages\n\nTotal download size: 93 M\n<span style=\"color: #ff0000;\">Is this ok [y\/N]: N<\/span>\n<span style=\"color: #ff0000;\">Operation aborted.<\/span><\/pre>\n<h2>setopt<\/h2>\n<p>Above I had you set &#8220;priority&#8221; in the config file using a text editor, that could have been:<\/p>\n<pre>[root@snafu ~]# dnf config-manager --setopt priority=11 --save fubar-local-repo\nMain config did not have a priority attr. before setopt\nMain config did not have a priority attr. before setoptnext<\/pre>\n<p>Those &#8220;did not have&#8221; messages bother me but if you check out the master log file it did not change:<\/p>\n<pre>[root@snafu ~]# cat \/etc\/dnf\/dnf.conf\n[main]\ngpgcheck=1\ninstallonly_limit=3\nclean_requirements_on_remove=True<\/pre>\n<p>And if you check the &#8220;repo file&#8221; for our repo &#8220;fubar-local-repo&#8221; you&#8217;ll see the &#8220;11&#8221; like:<\/p>\n<pre>[root@snafu ~]# cat \/etc\/yum.repos.d\/fubar-local.repo\n[fubar-local-repo]\nname=Fubar Local Repository\n#baseurl=file:\/\/\/testrepo\/\nbaseurl=ftp:\/\/fubar\/pub\/dnfrepo\/\nenabled=1\ngpgcheck=0\n<span style=\"color: #ff0000;\">priority = 11<\/span><\/pre>\n<p>The full list of &#8220;options&#8221; is easy to find like:<\/p>\n<pre>[root@snafu ~]# dnf config-manager --dump fubar-local-repo\n=========================== repo: fubar-local-repo ============================\n[fubar-local-repo]\n...\npriority = 11\n...<\/pre>\n<p>Notice you see our &#8220;priority&#8221; we just set. Also notice some stuff from the master dnf conf is not present like &#8220;clean_requirements_on_remove&#8221; is not seen. If you want to see &#8220;master&#8221; leave off the repo like:<\/p>\n<pre>[root@snafu ~]# dnf config-manager --dump\n==================================== main =====================================\n[main]\n...\nclean_requirements_on_remove = True\n...<\/pre>\n<p>And you do not see our &#8220;priority&#8221;.<\/p>\n<p>I know of no built in way to see if an option is a default or from what config file. It&#8217;s not overly challenging to do some &#8220;grepp&#8217;ing&#8221; between files and have to do it so seldom I&#8217;ve never bothered to script it.<\/p>\n<p>And finally if you set a &#8220;non existent option&#8221; like:<\/p>\n<pre>[root@snafu ~]# dnf config-manager --setopt foo=bar --save fubar-local-repo\nMain config did not have a foo attr. before setopt\nMain config did not have a foo attr. before setopt<\/pre>\n<p>You&#8217;ll see in the config like:<\/p>\n<pre>[fubar-local-repo]\nname=Fubar Local Repository\n#baseurl=file:\/\/\/testrepo\/\nbaseurl=ftp:\/\/fubar\/pub\/dnfrepo\/\nenabled=1\ngpgcheck=0\npriority = 11\n<span style=\"color: #ff0000;\">foo = bar<\/span><\/pre>\n<p>&#8220;foo&#8221; is not a valid option so I&#8217;m not sure why it&#8217;s allowed but &#8220;dnf&#8221; won&#8217;t complain until you do something like (note I used &#8220;-v&#8221; for &#8220;verbose&#8221;):<\/p>\n<pre>[root@snafu ~]# dnf config-manager -v --dump-variables fubar-local-repo\nLoaded plugins: builddep, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, needs-restarting, playground, repoclosure, repograph, repomanage, reposync\nDNF version: 2.7.5\ncachedir: \/var\/cache\/dnf\n<span style=\"color: #ff0000;\">Unknown configuration option: foo = bar in \/etc\/yum.repos.d\/fubar-local.repo<\/span>\narch = x86_64\nbasearch = x86_64\nreleasever = 28<\/pre>\n<p>I don&#8217;t know of a &#8220;verify&#8221; option you can use but I suspect one might exist.<\/p>\n<p><span style=\"color: #ff0000;\"><em>And if you need to remove option &#8220;foo&#8221; the only way I know is to use a text editor \ud83d\ude41<\/em><\/span><\/p>\n<h1>References<\/h1>\n<p>Almost of all of this is from doing it for years and web searches when I couldn&#8217;t figure something out. A great document I often overlook it:<\/p>\n<p><a href=\"https:\/\/media.readthedocs.org\/pdf\/dnf\/stable\/dnf.pdf\">https:\/\/media.readthedocs.org\/pdf\/dnf\/stable\/dnf.pdf<\/a><\/p>\n<p>Here&#8217;s another site that&#8217;s a great listing of command examples:<\/p>\n<p><a href=\"https:\/\/www.ostechnix.com\/dnf-command-examples-beginners\/\">https:\/\/www.ostechnix.com\/dnf-command-examples-beginners\/<\/a><\/p>\n<h1>Print Friendly<\/h1>\n<div class=\"printfriendly pf-button  pf-alignleft\">\n                    <a href=\"https:\/\/www.hoopchuk.org\/wordpress\/dnf-local\/?pfstyle=wp\" rel=\"nofollow\" onclick=\"\" title=\"Printer Friendly, PDF & Email\">\n                    <img data-recalc-dims=\"1\" decoding=\"async\" class=\"pf-button-img\" src=\"https:\/\/i0.wp.com\/cdn.printfriendly.com\/buttons\/printfriendly-button.png?w=840&#038;ssl=1\" alt=\"Print Friendly, PDF & Email\" style=\"width: 112px;height: 24px;\"  \/>\n                    <\/a>\n                <\/div>\n<p>I prefer a PDF to print something like this.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary Ross&#8217;s quick guide to &#8220;dnf local&#8221;. I have multiple Fedora 28 installs at my house with only slight differences. What I want is to be able to do one: [root@fubar ~]# dnf upgrade Last metadata expiration check: 0:02:37 ago on Wed 13 Mar 2019 10:51:07 AM CDT. Dependencies resolved. =============================================================================== Package Arch Version Repository &hellip; <a href=\"https:\/\/www.hoopchuk.org\/wordpress\/dnf-local\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;dnf local&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"nf_dc_page":"","wprm-recipe-roundup-name":"","wprm-recipe-roundup-description":"","nfd_onboarding_generated":"","footnotes":""},"class_list":["post-127","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/PaQUmf-23","_links":{"self":[{"href":"https:\/\/www.hoopchuk.org\/wordpress\/wp-json\/wp\/v2\/pages\/127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hoopchuk.org\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.hoopchuk.org\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.hoopchuk.org\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hoopchuk.org\/wordpress\/wp-json\/wp\/v2\/comments?post=127"}],"version-history":[{"count":5,"href":"https:\/\/www.hoopchuk.org\/wordpress\/wp-json\/wp\/v2\/pages\/127\/revisions"}],"predecessor-version":[{"id":233,"href":"https:\/\/www.hoopchuk.org\/wordpress\/wp-json\/wp\/v2\/pages\/127\/revisions\/233"}],"wp:attachment":[{"href":"https:\/\/www.hoopchuk.org\/wordpress\/wp-json\/wp\/v2\/media?parent=127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}