This week the class had an assignment to complete the checkout and build of Freeciv, as modeled by our textbook in Chapter 5. Knowing my schedule leading up to the due date, I began work promptly after the previous class. Unfortunately, I ran into some problems with installing some of the dependencies and when my research only confused me more, I chose to walk away for a while. Let me actually explain that process.
A big part of my confusion was translating the commands used in Fedora to the commands used in Ubuntu. When I finally figured out that I should just use the command I was already familiar with, sudo apt-get install <package>, this helped move me along. However, some of the packages couldn't be found. I then found the instructions to get those packages from their source website, downloaded them, and followed their install instructions. Thinking that my problems were over, I repeated my commands and discovered that the packages still could not be found. Then I remembered that last semester we had trouble with installing dependencies because they simply weren't where the system expected them to be, so I began looking for instructions to tell me how to fix that mapping problem. I tried what I found and it still didn't work. Frustrated, this is where I walked away.
I knew that most of the class was using Ubuntu, not Fedora, and would probably run into many of the same problems with dependencies, so I kept checking the class blogs to see if there was any helpful advice. Finally, this morning I found several recommending the use of the Synaptic Package Manager, instead of the terminal, to install the problem dependencies. Never having used Synaptic Package Manager, I thought that this would be another good thing to learn, since it seems to be so very helpful. I wasn't exactly sure which packages to install since so many appeared in my searches, so I just tried to cover my bases with the most recent version and all of its extensions (-dev, -doc, etc.). Having completed this, I moved on to the configure experience.
I attempted to run the command ./autogen.sh, but the terminal said that no such file could be found. That was fine since the book showed the same result. I followed their instructions and still ended up with the same error. Frustrated again, I opened the actual folder to see if the file existed and sure enough, it did! Why, then, could my computer not find it? I almost surrendered but then I realized something very important! This morning I had not returned the the Freeciv folder and was instead working from my home folder. I just love those small, easy, careless mistakes that can take hours to find! Anyway, the careless mistakes continued as I mis-typed the command in the Freeciv directory. When I finally got through my careless mistakes I finally had victory - the rest of the build was rather simple.
I thought this exercise was a good reminder of several things. First, it reminded me that sometimes you need to walk away and come back with a fresh perspective. Second, it reminded me to be extremely careful and mindful about spelling and directories - always check in those places first when you come across an unexpected error. Third, it reminded me that sometimes it is okay to be lazy. I don't mean lazy as in putting things off and doing barely enough to get by, but lazy in the sense of really using all of your resources. Knowing that most of the class used Ubuntu and would be blogging about their experiences gave me an extra set of resources to search. But I still had to be patient for them to appear when my own Google searches proved mostly useless.
I was also encouraged by one of chapter's closing comments. The author wrote, "Very few people know every detail about Autotools, or about any build tools. Experienced developers know as much as they need to know to get the job done, and they know where to look for help when they're stuck." I am getting a lot of practice knowing what to look for and where to find it this semester, but sometimes I still feel so lost and inexperienced. It helps to be reminded that experienced programmers still don't know everything - I just need to know how to learn it.
No comments:
Post a Comment