HB Computer Security | Aide Memoire
  • Introduction
  • Core Technical Skills
    • Core Skills
      • Linux
        • Getting to Know Linux
          • Using the Shell
            • Shells, Terminals, and Virtual Consoles
            • Choose your Shell
            • Shell Commands
              • Non-PATH Commands
              • Command History
                • Command Line Editing
                  • Keystrokes for Navigating Command Lines
                  • Keystrokes for Editing Command Lines
                  • Keystrokes for Cutting and Pasting Text from within Command Lines
                • Command Line Recall
                  • Keystrokes for Command Line Recall
              • Connecting and Expanding Commands
                • Piping Between Commands
                • Sequential Commands
                • Expanding Commands
            • Shell Variables
              • Common Shell Variables
            • Aliases
            • Create your Own Shell Environment
              • Modification Ideas
          • Navigating the Linux File System (LFS)
            • Filesystem Commands
            • Listing Files and Directories
            • File Permissions and Ownership
              • Modifying Permissions with chmod
              • Modifying Default Permissions with umask
              • Change File Ownership with chown
            • Copying, Moving, and Removing Files
            • Finding Files
              • locate
              • find
              • grep
            • Downloading Files
              • axel
              • wget
              • curl
                • User-Agent: Googlebot
          • Working with Text Files
            • Using vim and vi to Edit Text Files
              • Starting with vi
              • Adding Text
              • Moving Around in the Text
            • Text Manipulation
        • System Administration
          • Installing Linux
            • Installing from Live Media
            • Installing in the Enterprise
            • Partitioning Hard Disks
              • Tips for Creating Partitions
          • Account Administration
            • The root Account
              • Becoming root with su
              • sudo
                • The /etc/sudoers File
                • Granting sudo privileges
                  • visudo Guidance
                • Useful sudo Hints
            • Other Administrative Accounts
            • Standard User Accounts
              • Risks of userdel: Orphaned Files
          • Graphical Remote Administration
            • Cockpit
              • Installation Guide
            • Remote Desktop Protocol with xrdp
              • Installation and Configuration
            • Remote Desktop with vnc
              • Installation and Configuration
              • Running VNC as a System Service
          • Managing Running Processes
            • Listing Processes
              • ps
              • top
              • htop
            • Backgrounding and Foregrounding
              • Starting a Background Process
              • Using Foreground and Background Commands
            • Killing and Recining Processes
              • kill and killall
          • Managing Software
            • Managing Software from the Desktop
            • Going Beyond the Limitations of Software Center
              • Debian Packages
                • Advanced Package Tool (apt)
                • Repositories
                • dpkg
        • Shell Scripting
          • Variables
            • Command Substitution
            • Arguments
          • Reading User Input
          • if, else, and elif
          • BOOLEAN Logic
          • Loops
            • for Loops
            • while Loops
          • Functions
          • Local Vs Global Variables
          • Summary
        • Securing Linux
      • Windows
        • Security Hardening
Powered by GitBook
On this page

Was this helpful?

  1. Core Technical Skills
  2. Core Skills
  3. Linux
  4. System Administration
  5. Managing Software

Going Beyond the Limitations of Software Center

As we just saw, Software Center is a pretty convenient way to install software. However, it has some clear limitations which will necessitate some alternative choices:

  1. More Repositories By default, enabled repositories ONLY contain open-source, freely distributable software. At some point you may want to install a piece of commercial software, or software that has particular licensing coinditions, that isn't included in the standard repos

  2. Beyond Desktop Applications For the most part, Software Center focusses on providing packages that sport a GUI. However, there are literally thousands of powerfull applications that are command-line only, and the only way to get those is to look outside of Software Center

  3. Flexibility The Software Center prioritises ease of use, which means the intricacies of software installation are largely managed behind the scenes. Typically, when you install an application, numerous additional packages, or "dependencies," are installed alongside it. These can range from language packs and plugins to fonts and software libraries.

    This process is automatic, with the Software Center handling everything quietly in the background. However, this simplicity can sometimes lead to complications. For instance, if an application you're installing requires a newer version of a package that's already on your system, the Software Center will upgrade that package. This can inadvertently cause issues if other applications on your system rely on the older version of the upgraded package, potentially resulting in software conflicts or broken applications.

    For those who prefer to manage the details of package installations and dependencies, command-line tools like apt and dpkg offer greater transparency and control, albeit with a slightly steeper learning curve.

  4. Software Validation Utilising tools such as apt, it's possible to verify the integrity of signed packages, ensuring they haven't been altered before you install them. This also applies to checking if any components of a package have been modified post-installation. These tools provide an additional security measure by confirming that packages remain in their original, untampered state from the time they were signed to the moment they're running on your system.

  5. Managing Software While the Software Center is suitable for installing desktop applications on an individual system, it's not designed for handling software deployment across multiple systems. For larger scale management, there are other tools that build upon the 'apt' system to facilitate this kind of software administration. These tools provide a more robust and scalable solution for managing installations and updates across numerous machines.

Linux Software Packaging 101: A Brief History

In the early days of Linux, adding software typically meant grabbing the source code from the developers (there was no github back then either...), compiling it into executable binaries, and then installing it on your system. Occasionally, if you were lucky, you might find the software pre-compiled to run on your machine.

Software often came in the form of a tarball – a bundled file collection not too dissimilar to a zip file, including executables, documentation, config files, and libraries, designed for easy storage or distribution. Installing from a tarball would scatter files across various directories on your Linux system such as /usr/share/man, /etc, /bin, and /lib.

Despite tarballs making it straightforward to bundle and deploy software, this installation approach presented challenges., such as ensuring all dependencies were satisfied, updating the software at a later time, or even accounting for what software was currently installed on the system without trawling through the file system manually identifying what was present - in short, a pain in the a$#e! To overcome said limitations, a more comprehensive packaging system was devised. With only a handful of exceptions (as always with Linux...), the majority of distros support one of two packaging formats: DEB (for Debian, Ubuntu, Mint, etc...) and RPM (RHEL, Fedora, Suse, etc...). Think of these packages as "all in one" solutions for easily installing new software.

For the remainder of this aide memoire, ill stick mostly to the .deb packages as I use Debian, Ubuntu, and Kali all the time so its what I know best, but in truth, working with .rpm isnt all that different (usually just syntax) so you'll still be able to apply what you see here.

PreviousManaging Software from the DesktopNextDebian Packages

Last updated 1 year ago

Was this helpful?