[ Day-7 ]: Understanding package manager and systemctl

[ Day-7 ]: Understanding package manager and systemctl

ยท

7 min read


Introduction ๐Ÿ“š

Welcome to Day 7 of the thrilling #90DaysOfDevOps challenge. In this blog, we will embark on an exploration of the package manager and its essential tools. We will dive into the world of APT (Advanced Package Tool) ๐Ÿ› ๏ธ and YUM (Yellowdog Updater Modified) ๐Ÿ› ๏ธ. Alongside this, we'll be understanding the significance of systemctl and systemd.

By the end of this read, you will have a clear pathway on installing Docker ๐Ÿณ and Jenkins ๐Ÿ—๏ธ using package managers. And yes, for Docker, we shall be configuring the repository, and for Jenkins, we will be using APT on Ubuntu. Moreover, get ready to become proficient in checking the Docker service status, halting Jenkins service, and distinguishing between systemctl and service commands.

Now, buckle up as we delve into this exciting journey, aiming to harness the potential of streamlined software management within the Linux environment! ๐Ÿš€


๐Ÿ“ฆ What is a package?

In Linux, a package is more than just a piece of software. It's a comprehensive distribution format containing all that's necessary to install and manage a particular software. This typically includes:

  • Executable binaries ๐Ÿ’พ: The actual software applications.

  • Libraries ๐Ÿ“š: Shared resources the software needs to function.

  • Configuration files ๐Ÿ“: Settings and parameters for software operation.

  • Documentation ๐Ÿ“„: Guides, manuals, and other helpful insights to aid users.


๐Ÿงฐ What is a package manager in Linux?

To simplify, a package manager is the caretaker of your Linux software. It automates the installation, updates, and removal of software packages. But let's dive a little deeper:

  • Simplification: Managing software becomes a breeze as package managers handle dependencies.

  • Consistency and Reliability: Ensures uniform software installations across the system.

  • Centralized Access: Users can tap into a centralized repository to find and install software. No more hunting around on the internet.

  • Enhanced Stability and Security: By managing software components efficiently, package managers promote a stable and secure system.

In essence, a package manager is an indispensable tool for Linux, responsible for juggling installations, upgrades, dependencies, and the removal of packages.

โ–ช๏ธ Different Kinds of Package Managers

In the Linux ecosystem, while there are several package managers, APT (Advanced Package Tool) and YUM (Yellowdog Updater Modified) stand out due to their widespread use and reliability. Let's delve into them:


1. APT (Advanced Package Tool) ๐Ÿ› ๏ธ

Originating from the Debian camp, APT is the go-to package manager for Debian-based distributions such as Ubuntu. It is heralded for its user-friendly command-line interface, which provides ease in software management.

Key commands include:

  • Install a package: sudo apt-get install package_name

  • Update packages:

sudo apt-get update 
sudo apt-get upgrade
  • Remove a package: sudo apt-get remove package_name

APT's standout feature is its prowess in resolving package dependencies automatically. You never have to manually chase down required packages. APT handles it all, ensuring a smooth and conflict-free installation process.


2. YUM (Yellowdog Updater Modified) ๐Ÿ› ๏ธ

A favorite in Red Hat-based distributions like CentOS and Fedora, YUM offers a comparable command-line interface for package management, ensuring ease of software installations.

Primary commands encompass:

  • Install a package: sudo yum install package_name

  • Update packages:

sudo yum update 
sudo apt-get upgrade
  • Remove a package: sudo yum remove package_name

Similar to APT, YUM shines in dependency management. Every time you task YUM with an installation or an update, rest assured that it will diligently resolve dependencies, guaranteeing that all necessary packages get appropriately installed.


๐Ÿ” Deep Dive into Systemctl and Systemd

Linux provides a gamut of tools that streamline program and service management. Among these, systemctl and systemd are integral.

Systemd ๐ŸŽป: Think of systemd as the conductor of an orchestra. It orchestrates how programs and services harmonize on your computer, ensuring a smooth performance.

Systemctl ๐ŸŽฎ: If systemd is the conductor, then systemctl is the remote control. It gives you command over the conductor, dictating starts, stops, and everything in between.

Essential systemctl commands include:

  • Start a service: sudo systemctl start service_name

  • Stop a service: sudo systemctl stop service_name

  • Restart a service: sudo systemctl restart service_name

  • Enable a service: sudo systemctl enable service_name

  • Disable a service: sudo systemctl disable service_name

With systemctl, managing services, from web servers to background tasks, becomes intuitive and efficient.


๐Ÿณ Task 1: Installing Docker and Jenkins Using Package Managers

๐Ÿš€ Objective: Harness the power of package managers to install Docker and Jenkins on an Ubuntu system. Let's get started!

Installing Docker on Ubuntu using APT:

  1. Update the package lists ๐Ÿ”„:
sudo apt update
  1. Install the Docker repository ๐Ÿ“ฆ:
sudo apt-get install docker.io -y
  1. Verify Docker Installation ๐Ÿš€: Check the installed version of Docker:
docker version

Installing Jenkins on Ubuntu using APT:

  1. Pre-requisites: Jenkins requires Java to function. Update the Debian apt repositories and install OpenJDK 17:
sudo apt update
sudo apt install openjdk-17-jre
java -version
  1. Set Up Jenkins Repository: Import the Jenkins Long-Term Support release key and add the repository:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
  1. Install Jenkins:
sudo apt-get install jenkins
  1. Manage Jenkins Service:

    • Start the Jenkins service:
    sudo systemctl start jenkins
  • Enable Jenkins to automatically start on boot:
    sudo systemctl enable jenkins
  1. Access Jenkins: Jenkins should now be active and running on your Ubuntu system. Open your web browser and navigate to http://localhost:8080 to access the Jenkins dashboard.

๐Ÿ”ฆ Task 2: Checking the Status of the Docker Service

After the successful installation of Docker on your system, it's essential to monitor its status. A quick way to accomplish this is by utilizing the systemctl command.

Checking Docker's Status:
Run the following command to see the current status of the Docker service:

systemctl status docker

This command's output will offer insights such as the Docker service's operational state, its auto-start configuration, and recent logs, ensuring that Docker operates seamlessly on your platform. ๐Ÿ‘๐Ÿš€


๐Ÿ›‘ Task 3: Stopping the Jenkins Service

There might be instances where you'd want to halt the Jenkins service temporarily.

Stopping Jenkins:
Execute the following command to cease the Jenkins service:

sudo systemctl stop jenkins

Upon execution, Jenkins will remain inactive on your system until you decide to restart it.


๐Ÿ’ก Difference between systemctl and service

Both systemctl and service serve as commands to handle services in Linux. However, their functionalities and applications possess certain distinctions.

systemctl:

Introduced with systemd, the default init system in numerous contemporary Linux distributions, systemctl is a potent service management utility. It's known for its expansive functionalities, enabling users to:

  • Start, stop, and restart services

  • Enable or disable services at boot

  • Inspect service statuses

Example: To verify the Docker service's status using systemctl, deploy the following command:

systemctl status docker

service:

service, a legacy tool from init-based systems (SysVinit), primarily exists for backward compatibility in many Linux distributions. While it is gradually making an exit in favor of systemctl, it still offers basic functionalities like starting, stopping, and restarting services.

Example: To review the Docker service's status with service, use this command:

service docker status

While both tools offer capabilities to manage services, systemctl stands out due to its comprehensive features and widespread adoption in modern Linux systems. โณ

That's an excellent conclusion! It provides a comprehensive recap of the topics covered during the day, gives a sense of accomplishment, and excites the reader for the next stages of the challenge. I don't see a need for any major changes. However, if you want to further refine it, consider the following format:


๐ŸŽ‰ Conclusion ๐ŸŽ‰

Bravo! You've successfully navigated through Day 7 of the #90DaysOfDevOps challenge! ๐Ÿš€

Today was an enlightening dive into:

  • The universe of packages and their trusty sidekicks - the package managers ๐Ÿ“ฆ

  • The essentials of systemctl and systemd, unlocking the capabilities to seamlessly manage services ๐Ÿ”„

  • Installation magic with Docker and Jenkins, making complex tasks feel like a breeze ๐Ÿณ๐Ÿ”ง

  • Distinguishing between systemctl and service for adept service management ๐Ÿ’ก

With these tools and knowledge, you've not only expanded your tech toolkit but also prepped yourself for challenges that lie ahead.

๐Ÿ“Œ Remember: Every day, every task, adds a brick to the edifice of your DevOps expertise.

Onward and upward! Get set for more exhilarating adventures in the world of DevOps! ๐Ÿ’ช๐ŸŒŸ


ย