GNU Source Building | Wget | Part 1

This post will be the first of two, discussing the ideas behind Free Software Foundation, as well as getting hands-on with a couple common GNU software packages you’ve probably used at some point in time.

Brief History 

GNU is an operating system with 100% free software. It was launched in 1983 by Richard Stallman (rms) and has been developed by many people working together for the sake of freedom of all software users to control their computing. Technically, GNU is generally like Unix. But unlike Unix, GNU gives its users freedom.  -Source

GNU is strong advocaters for delivering 100% free products. They believe the user should be able to control the program, both individually and collectively. Where GNU’s free software set’s it self apart from open source is within their license agreements. Although many open source projects are open to the public, some may come with usage restrictions. Compared to “free software” users have the freedom and liberty to do as they please.

The four essential freedoms


A program is a free software if the program’s users have the four essential freedoms:

  • The freedom to run the program as you wish, for any purpose (freedom 0).
  • The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help your neighbour (freedom 2).
  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

Wget – GNU Project

Download – (

If you’ve tried downloading a package in your terminal, there’s a good change you’ve worked with the wgetcommand.  Wget retrieves files using the most popular Internet protocols such as HTTP, HTTPS, etc.  It is a very lightweight command line tool that can easily be executed from various tools.

GNU Wget has many features to make retrieving large files or mirroring entire web or FTP sites easy, including:

  • Can resume aborted downloads, using REST and RANGE
  • Can use filename wild cards and recursively mirror directories
  • NLS-based message files for many different languages
  • Optionally converts absolute links in downloaded documents to relative, so that downloaded documents may link to each other locally
  • Runs on most UNIX-like operating systems as well as Microsoft Windows
  • Supports HTTP proxies
  • Supports HTTP cookies
  • Supports persistent HTTP connections
  • Unattended / background operation
  • Uses local file timestamps to determine whether documents need to be re-downloaded when mirroring
  • GNU Wget is distributed under the GNU General Public License.

Building Wget Source

Note below is a list a dependencies that I had to manually install in order to properly build Wget.

This may not be the case for you.

  • sudo apt-get install libpsl-dev //allows checking domains against Public Suffix List
  • sudo apt-get install ca-certificates// installing root certificates
  • sudo apt-get install -y pkg-config//helper tool used when compiling applications and libraries
  • apt-get install libgnutls-dev //GnuTLS- is Transport Layer Security, the successor to SSL.
  1. mkdir wget-build //our local folder to install Wget separate from our system
  2. sudo gunzip < wget-1.19.tar.gz | tar -xv //Decompress the package
  3. cd wget-build //change directory
  4. ../wget-1.19/configure --prefix=/YOUR_USER_NAME/wget-build --sysconfdir=/YOUR_USER_NAME/wget-build --with-ssl=openssl && make//configure and run the makefile
  5. This process may take you anywhere from 5-10 mins. Read the output message for any errors.
    Lab4 wget build error
  6. You’ll know Wget successfully built once you see the Summary of build options:
    Lab 4 Wget Summary Build

Related Posts