{"id":879,"date":"2021-07-26T12:00:00","date_gmt":"2021-07-26T19:00:00","guid":{"rendered":"https:\/\/letsbuildroboticswithshadow8472.com\/?p=879"},"modified":"2021-07-26T11:21:23","modified_gmt":"2021-07-26T18:21:23","slug":"package-loop","status":"publish","type":"post","link":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/2021\/07\/26\/package-loop\/","title":{"rendered":"Package Loop"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am aiming to rig Kerbal Space Program (KSP) to run across two Linux computers. Let\u2019s get Started!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Intended Target<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">KSP is one of those games I find myself coming back to every so often. In case you\u2019ve survived the past decade without hearing about KSP, it\u2019s a game where you design rockets using an assortment of parts and fly your kerbals on them to explore their solar system. There are no goals except the ones you set for yourself. With the final major update now released, I\u2019m going to give it another go at an interplanetary game.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But it would sure be nice if I weren\u2019t tied to a single computer while playing. Steam offers a cloud save option, but I\u2019d rather not be needlessly broadcasting my play time for a single-player or Local Area Network (LAN) experience. I picked up a little shell scripting for auto clicking in another game, so I figured I\u2019d stretch the skill a little farther. For this project, I will be using Derpy Chips and my daily driver without a fancy name.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">KSP updated nicely on my tower, but when I went to install the game on Derpy, Steam was nowhere to be found aside from a broken icon and a couple other Steam games I might try pulling this trick with in the future. My system was bugging me to update, so I went <strong>sudo aptitude update<\/strong> and <strong>sudo aptitude upgrade<\/strong>. It didn\u2019t update correctly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Running in Circles<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I spent around three days trying different combinations I knew. Both Aptitude and Apt-get were stumped. The errors recommended I try running some more aggressive commands to fix installs, but I kept ending back at the same broken state.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Taking a closer look at the errors themselves, it appeared a whole host of locale packages were to be replaced with one inclusive one. Each and every one of them, as well as others appeared to reference some variant of libc6.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not good.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Libc6 is a C language library. C is important as one of the first programming languages with a little abstraction for easier human readability while still being close enough to the hardware for amazing optimizations. You take out LibC, things start breaking fast.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I tried putting the upgrade off some more, but my package manager wasn\u2019t having any of it. It insisted I fix the problem before installing or removing anything.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All this time, I was reaching out to the Engineer Man Discord. I got a few links on stuff to do, like a number of commands to do in sequence in case a particular log was getting in the way, but it always came back to my Libc6 version being wrong.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Progress and Repair<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I of course was looking stuff up on my own, and I managed to find Libc6 was \u201chalf-installed.\u201d My best guess is that a month or two ago, I had a partial upgrade. I didn\u2019t think much of it at the time because I wasn\u2019t relegated to an Xorg forsaken command line like all my other major system meltdowns normally worthy of a repair shop visit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I made some progress when I used dpkg to uninstall a package I was otherwise interested in removing from the system anyway. According to localhost, the Discord user who solved my snafu (special thanks), I was caught in a dependency loop. Basically, when apt-get is either installing or trying to fix an install of package A , it wants to see package B or something like it before adding it to the list of satisfied packages, but if package B wants to see A or similar before it\u2019s happy, there\u2019s trouble. My trouble was that in order to fix the AB circle with apt-get or aptitude, I needed to first fix the AB cycle preventing me from solving it. Dpkg is too dumb to care about package dependencies, so it will happily ignore any logic bombs you\u2019re setting (or defusing) for yourself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Takeaway<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I don\u2019t understand the fix, sadly. I am still thankful Derpy is running again. I went ahead and installed KSP there, but the game file structure is so complicated, I\u2019m just going to be copying the whole thing over to GoldenOakLibry, the network storage, using rsync. After going back and forth a few times to make sure everything is working as expected, I will write a set of scripts for further automation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I will follow up if anything interesting happens on the implementation proper.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Final Question<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Have you ever fudged a personal cloud?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am aiming to rig Kerbal Space Program (KSP) to run across two Linux computers. Let\u2019s get Started! Intended Target KSP is one of those games I find myself coming back to every so often. In case you\u2019ve survived the past decade without hearing &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/2021\/07\/26\/package-loop\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Package Loop&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-879","post","type-post","status-publish","format-standard","hentry","category-computer-maintenance-and-repair"],"_links":{"self":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/comments?post=879"}],"version-history":[{"count":1,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/879\/revisions"}],"predecessor-version":[{"id":880,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/879\/revisions\/880"}],"wp:attachment":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/media?parent=879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/categories?post=879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/tags?post=879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}