{"id":1251,"date":"2016-06-11T16:04:04","date_gmt":"2016-06-12T00:04:04","guid":{"rendered":"http:\/\/www.developerscloset.com\/?page_id=1251"},"modified":"2018-06-12T13:30:49","modified_gmt":"2018-06-12T21:30:49","slug":"apt-cacher","status":"publish","type":"page","link":"https:\/\/www.developerscloset.com\/?page_id=1251","title":{"rendered":"Apt-Cacher"},"content":{"rendered":"<p><a href=\"http:\/\/www.developerscloset.com\/wp-content\/uploads\/2018\/06\/apt-cacher-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1252 alignnone\" src=\"http:\/\/www.developerscloset.com\/wp-content\/uploads\/2018\/06\/apt-cacher-1.jpg\" alt=\"\" width=\"181\" height=\"179\" \/><\/a><\/p>\n<p>Apt-Cacher is a caching proxy specialized for package files from GNU\/Linux distributors, primarily for Debian and Debian based distributions (like Ubuntu). This means that if you have many Debian\/Ubuntu machines on your network, you just have to download the deb packages (new software, updates, distro upgrades, etc) from the internet once and the rest of the Debian\/Ubuntu machines get them from Apt-Cacher cache, saving time and internet bandwidth.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69ea24d75aaee\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69ea24d75aaee\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#Apt-Cacher_Pools\" >Apt-Cacher\u00a0Pools<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#How_to_add_a_Package_to_Apt-Cacher\" >How to add a Package to Apt-Cacher<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#Find_if_Package_Exists_in_Apt_Repository\" >Find if Package Exists in Apt Repository<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#Check_if_Package_Exists_in_Apt_Repo\" >Check if Package Exists in Apt Repo<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#Simulate_an_Installation\" >Simulate an Installation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#List_Installed_Packages\" >List Installed Packages<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#Server_Installation\" >Server Installation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#Server_Configuration\" >Server Configuration<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#Distributions\" >Distributions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#Pools\" >Pools<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.developerscloset.com\/?page_id=1251\/#Client_Configuration\" >Client Configuration<\/a><\/li><\/ul><\/nav><\/div>\n<h1 id=\"Apt-Cacher-Apt-CacherInstallations\"><span class=\"ez-toc-section\" id=\"Apt-Cacher_Pools\"><\/span>Apt-Cacher\u00a0Pools<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Pools are where installation packages (software) are stored.<\/p>\n<p>\/var\/cache\/name-repo\/pool\/<\/p>\n<h1 id=\"Apt-Cacher-HowtoaddaPackagetoApt-Cacher\"><span class=\"ez-toc-section\" id=\"How_to_add_a_Package_to_Apt-Cacher\"><\/span>How to add a Package to Apt-Cacher<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Locate the Package deb file:<\/p>\n<p>1.\u00a0Either download the deb file from the vendor or if the package has been installed on the local server, you will find the deb file here:\u00a0\/var\/cache\/apt\/archives\/.<\/p>\n<p>2. Copy the deb file to the pool. For all environments you can use the all pool:\u00a0\/var\/cache\/name-repo\/pool\/all\/<\/p>\n<p>note: you need to make sure that the user:group is correctly www-data:www-data.\u00a0 Use chown.\u00a0 Also, set the chmod to 664.<\/p>\n<p>3. Retrieve the package metadata:<\/p>\n<div class=\"code panel pdl conf-macro output-block\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_791171\" class=\"syntaxhighlighter sh-confluence nogutter bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash functions\">cd<\/code>\u00a0<code class=\"bash plain\">\/var\/cache\/name-repo\/pool\/all\/<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">dpkg-scanpackages .<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>4. Add the package metadata to the Packages.gz file<\/p>\n<div class=\"code panel pdl conf-macro output-block\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_947967\" class=\"syntaxhighlighter sh-confluence nogutter bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash functions\">sudo<\/code>\u00a0<code class=\"bash plain\">vim\u00a0<\/code><code class=\"bash plain\">\/var\/cache\/name-repo\/dists\/name\/all\/binary-amd64\/Packages<\/code><code class=\"bash plain\">.gz<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>5. Make sure the filename is located in the pool folder, and the permissions are correct:<\/p>\n<div class=\"code panel pdl conf-macro output-block\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_623508\" class=\"syntaxhighlighter sh-confluence nogutter bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash comments\"># example file path<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Filename: pool<\/code><code class=\"bash plain\">\/all\/sensu_1<\/code><code class=\"bash plain\">.0.0-1_amd64.deb<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash comments\"># the example can be found in our repo<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash functions\">ls<\/code>\u00a0<code class=\"bash plain\">-l\u00a0<\/code><code class=\"bash plain\">\/var\/cache\/name-repo\/pool\/all\/<\/code><code class=\"bash plain\">|<\/code><code class=\"bash functions\">grep<\/code>\u00a0<code class=\"bash plain\">sensu<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>6. Test the new package:<\/p>\n<div class=\"code panel pdl conf-macro output-block\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_538554\" class=\"syntaxhighlighter sh-confluence nogutter bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash comments\"># update the package list<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash functions\">sudo<\/code>\u00a0<code class=\"bash plain\">apt-get update<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash comments\"># test the package to make sure it is available<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">apt-cache policy sensu<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h1 id=\"Apt-Cacher-FindifPackageExistsinAptRepository\"><span class=\"ez-toc-section\" id=\"Find_if_Package_Exists_in_Apt_Repository\"><\/span>Find if Package Exists in Apt Repository<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2 id=\"Apt-Cacher-CheckifPackageExistsinAptRepo\"><span class=\"ez-toc-section\" id=\"Check_if_Package_Exists_in_Apt_Repo\"><\/span>Check if Package Exists in Apt Repo<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>You should run\u00a0<code>sudo apt-get update<\/code>\u00a0first.<\/p>\n<div class=\"code panel pdl conf-macro output-block\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_834532\" class=\"syntaxhighlighter sh-confluence nogutter bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">apt-cache search --names-only\u00a0<\/code><code class=\"bash string\">'^sensu.*'<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h2 id=\"Apt-Cacher-SimulateanInstallation\"><span class=\"ez-toc-section\" id=\"Simulate_an_Installation\"><\/span>Simulate an Installation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>if sudo apt-get &#8211;simulate install sensu<br \/>\nthen echo &#8220;Package exists.&#8221;<br \/>\nelse echo &#8220;Cannot find Package.&#8221;<br \/>\nfi<\/p>\n<h2 id=\"Apt-Cacher-ListInstalledPackages\"><span class=\"ez-toc-section\" id=\"List_Installed_Packages\"><\/span>List Installed Packages<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"code panel pdl conf-macro output-block\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_788652\" class=\"syntaxhighlighter sh-confluence nogutter bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">dpkg -l |\u00a0<\/code><code class=\"bash functions\">less<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>To check whether a package is installed or not:<\/p>\n<div class=\"code panel pdl conf-macro output-block\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_98122\" class=\"syntaxhighlighter sh-confluence nogutter bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">dpkg -l vlc<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"auto-cursor-target\">How to Install Apt-Cacher<\/p>\n<h2 id=\"Apt-Cacher-ServerInstallation\"><span class=\"ez-toc-section\" id=\"Server_Installation\"><\/span>Server Installation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>1.\u00a0Install apt-cacher and apache2 webserver<\/p>\n<p>sudo apt-get install apt-cacher apache2<\/p>\n<p>2. Enable apt-cacher<\/p>\n<p>3. Edit \/etc\/default\/apt-cacher and change autostart to 1<\/p>\n<p><em>Note: You may have problems doing this on a machine with apache already installed.<\/em><\/p>\n<p>4. Restart apt-cacher process:<\/p>\n<p>sudo service apt-cacher restart<\/p>\n<h2 id=\"Apt-Cacher-ServerConfiguration\"><span class=\"ez-toc-section\" id=\"Server_Configuration\"><\/span>Server Configuration<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>1.\u00a0Edit \/etc\/apt-cacher\/apt-cacher.conf Uncomment the following line:<\/p>\n<p>allowed_hosts = * Or set allowed_hosts to something appropriate.<\/p>\n<p>allowed_ssl_locations = dl.bintray.com:443,dl.bintray.com,archive.cloudera.com[,&lt;additional ssl repos]<\/p>\n<p>Apt Cacher now uses IPv6 addressing so you may find you need something like: allowed_hosts=::ffff:192.168.0.1\/24, for example, if you want to restrict hosts to a common home subnet.<\/p>\n<p>2.\u00a0Change the admin_email email address to something meaningful.<\/p>\n<p>3. By default apt-cacher may have problems with upgrades of ubuntu from one version to another when running do-release-upgrade -d This can be fixed by uncommenting the line beginning with installer_files_regexp and modifying it from:<\/p>\n<p>installer_files_regexp = ^(?:vmlinuz|linux|initrd\\.gz|changelog|NEWS.Debian|UBUNTU_RELEASE_NAMES\\.tar\\.gz(?:\\.gpg)?|(?:Devel|EOL)?ReleaseAnnouncement(?:\\.html)?|meta-release(?:-lts)?(?:(?:development|proposed))?)$<\/p>\n<p>to:<\/p>\n<p>installer_files_regexp = ^(?:vmlinuz|linux|initrd\\.gz|changelog|NEWS.Debian|[a-z]+\\.tar\\.gz(?:\\.gpg)?|UBUNTU_RELEASE_NAMES\\.tar\\.gz(?:\\.gpg)?|(?:Devel|EOL)?ReleaseAnnouncement(?:\\.html)?|meta-release(?:-lts)?(?:-(?:development|proposed))?)$<\/p>\n<p>Note the addition of [a-z]+\\.tar\\.gz(?:\\.gpg)? in the regexp<\/p>\n<p>4.\u00a0Restart apt-cacher:<\/p>\n<p>sudo \/etc\/init.d\/apt-cacher restart<\/p>\n<p>5. Test apt-cacher by pointing your web browser to\u00a0<span class=\"nolink\">http:\/\/server01:3142\/apt-cacher<\/span>\u00a0to verify that it&#8217;s running:\u00a0http:\/\/aptproxy.server01:3142\/<\/p>\n<p>For example:<\/p>\n<p>The contents of the \/etc\/apt\/apt.conf.d\/01proxy\u00a0file should be:<\/p>\n<p>Acquire::http::Proxy &#8220;http:\/\/aptproxy.server01:3142\/&#8221;;<br \/>\nAPT::Get::AllowUnauthenticated 1;<\/p>\n<p>6. Import existing cached Packages<\/p>\n<p>7. Import any existing packages into the cache by creating symlinks:<\/p>\n<p>sudo \/usr\/share\/apt-cacher\/apt-cacher-import.pl -l \/var\/cache\/apt\/archives<\/p>\n<h3 id=\"Apt-Cacher-Distributions\"><span class=\"ez-toc-section\" id=\"Distributions\"><\/span>Distributions<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\/var\/cache\/name-repo\/dists\/name\/<\/p>\n<h3 id=\"Apt-Cacher-Pools.1\"><span class=\"ez-toc-section\" id=\"Pools\"><\/span>Pools<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\/var\/cache\/name-repo\/pool\/<\/p>\n<p><em>Note: on the apt-cacher server, the apt-get deb files are located on \/var\/cache\/apt\/archives\/<\/em><\/p>\n<h1 id=\"Apt-Cacher-ClientConfiguration\"><span class=\"ez-toc-section\" id=\"Client_Configuration\"><\/span>Client Configuration<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Use as a proxy to APT<\/p>\n<p>1.\u00a0In a terminal, type:<\/p>\n<p>sudo vi \/etc\/apt\/apt.conf.d\/01proxy<\/p>\n<p>2. Inside your new file, add a line that says:<\/p>\n<p>Acquire::http::Proxy &#8220;http:\/\/&lt;IP address or hostname of the apt-cacher server&gt;:3142&#8221;;<\/p>\n<p><em>Note: The entire file will look like this:<\/em><\/p>\n<p>Acquire::http::Proxy &#8220;<span class=\"nolink\">http:\/\/aptproxy.server01:3142<\/span>\/&#8221;;<\/p>\n<p>APT::Get::AllowUnauthenticated 1;<\/p>\n<p>3. Update the \/etc\/apt\/apt.conf.d\/10periodic file:<\/p>\n<p><em>Note: The entire file will look like this:<\/em><\/p>\n<p>APT::Periodic::Update-Package-Lists &#8220;1&#8221;;<\/p>\n<p>APT::Periodic::Download-Upgradeable-Packages &#8220;1&#8221;;<\/p>\n<p>APT::Periodic::AutocleanInterval &#8220;1&#8221;;<\/p>\n<p>APT::Periodic::Unattended-Upgrade &#8220;1&#8221;;<\/p>\n<p>APT::Periodic::Verbose &#8220;2&#8221;;<\/p>\n<p>4. Make sure Unattented-Upgrade::Automatic-Reboot is set to \u201cTrue\u201d in this file: \/etc\/apt\/apt.conf.d\/50unattended-upgrades<\/p>\n<p>Unattended-Upgrade::Automatic-Reboot &#8220;true&#8221;;<\/p>\n<p><em>Note: Next time any of your machines needs a deb package, it will ask Apt-Cacher for it. If this package was asked previously by any of the other machines, Apt-Cacher will have a copy and will deliver it. Otherwise, it will fetch it from the internet repositories, keep a local copy and deliver it.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apt-Cacher is a caching proxy specialized for package files from GNU\/Linux distributors, primarily for Debian and Debian based distributions (like Ubuntu). This means that if [&#8230;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"class_list":["post-1251","page","type-page","status-publish","hentry"],"jetpack_shortlink":"https:\/\/wp.me\/P1BQ8S-kb","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.developerscloset.com\/index.php?rest_route=\/wp\/v2\/pages\/1251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.developerscloset.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.developerscloset.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.developerscloset.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.developerscloset.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1251"}],"version-history":[{"count":5,"href":"https:\/\/www.developerscloset.com\/index.php?rest_route=\/wp\/v2\/pages\/1251\/revisions"}],"predecessor-version":[{"id":1419,"href":"https:\/\/www.developerscloset.com\/index.php?rest_route=\/wp\/v2\/pages\/1251\/revisions\/1419"}],"wp:attachment":[{"href":"https:\/\/www.developerscloset.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}