🗓️ Day 7 Task: Understanding Package Managers and Systemctl

🗓️ Day 7 Task: Understanding Package Managers and Systemctl

·

6 min read

What is a Package Manager in Linux?

A Package Manager in Linux is a tool that helps you install, update, and remove software on your system. Think of it as an app store for Linux, but instead of browsing for apps, you use commands to manage them. It takes care of all the dependencies (other software or libraries needed for a program to run) and makes sure your software is up-to-date.

How it works:

  1. Install Software: You tell the package manager what software you want, and it downloads and installs it for you.

  2. Updates: It checks for newer versions of your installed software and updates them when necessary.

  3. Uninstall Software: It can remove programs you no longer need, making sure nothing else breaks.

Different Kinds of Package Managers:- Package managers vary based on the packaging system, but a single packaging system can have multiple package managers.

1. APT: Used by: Ubuntu, Debian.

Command: apt install package-name

2. YUM / DNF: Used by: Fedora, CentOS, Red Hat.

Command: dnf install package-name

3. Pacman: Used by: Arch Linux, Manjaro.

Command: pacman -S package-name

4. Zypper: Used by: openSUSE, SUSE.

Command: zypper install package-name

5. Flatpak: Cross-distro, works on any Linux.

Command: flatpak install package-name

6. Snap: Cross-distro, common in Ubuntu.

Command: snap install package-name

Tasks:

Task1: Install Docker and Jenkins on your system from your terminal using package managers.

Here are the detailed steps to install Docker on Ubuntu using the terminal:

Step 1: Update the Package Index: update the list of available packages to ensure you’re installing the latest versions.

sudo apt update

Step 2: Install Dependencies: Install required packages to allow APT to use a repository over HTTPS.

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Step 3: Add Docker’s GPG Key: Next, add Docker’s official GPG key to verify package authenticity.

curl -fsSL download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Step 4: Add Docker’s Repository: Add Docker’s repository to your system so that APT knows where to find Docker packages.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Step 5: Update the Package Index Again: Now update the package index to include the newly added Docker repository.

sudo apt update

Step 6: Install Docker: Finally, install Docker Engine, Docker CLI, and Containerd.

sudo apt install docker-ce docker-ce-cli containerd.io

Step 7: Verify Docker Installation: Check if Docker is installed correctly by verifying its version

docker version

To install Jenkins on an Ubuntu system using the terminal, follow these steps:

Step 1: Update the Package Index: First, update your package index to ensure you are installing the latest versions.

sudo apt update

Step 2: Install Java (Jenkins Requirement): Jenkins requires Java to run. Install OpenJDK, which is the free and open-source implementation of the Java Platform.

sudo apt install openjdk-11-jdk -y

Step 3: Add Jenkins Repository: Jenkins is not available in Ubuntu’s default repository, so you need to add Jenkins’s official repository.

1. Add Jenkins GPG key:

curl -fsSL pkg.jenkins.io/debian/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null

2. Add Jenkins repository:

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] pkg.jenkins.io/debian binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

Step 4: Update Package Index Again: After adding the Jenkins repository, update the package index so that APT knows about the new repository.

sudo apt update

Step 5: Install Jenkins: Now, install Jenkins using the following command:

sudo apt install jenkins -y

Step 6: Start Jenkins: Once Jenkins is installed, start its service using:

sudo systemctl start Jenkins

Once you’ve followed these steps, Jenkins will be installed and accessible via a web browser on port 8080!

Task 2: Write a small blog or article on how to install these tools using package managers on Ubuntu and CentOS.

systemd: systemd is the core system and service manager on modern Linux systems. It handles starting up your computer, managing services, and keeping things running smoothly after boot. It organizes everything (services, tasks, devices) into units and controls their behavior.

systemctl: systemctl is the command you use to control and manage systemd. It allows you to start, stop, enable, disable, and check the status of services on your system.

Tasks:

  • Check the status of the Docker service on your system (ensure you have completed the installation tasks above).

Answer:

  • Stop the Jenkins service and post before and after screenshots.

Answer: Before

After:

Task 3: Read About Systemctl vs. Service:

Read about the differences between the systemctl and service commands.

Example: systemctl status docker vs. service docker status.

Answer:

In Linux, two commonly used commands to manage services are systemctl and service. While both serve a similar purpose, they differ in functionality, underlying architecture, and the systems they target. Let’s explore both commands and understand their differences.

systemctl is the command-line tool used to control and interact with systemd, the system and service manager on modern Linux distributions like Ubuntu, CentOS, and Fedora. It allows you to start, stop, enable, disable, check status, and manage various services and system states.

1. To start a service, use the start command:

sudo systemctl start service-name

Example:

  • Check the status of the Docker service:

sudo systemctl status docker

  • Start the Jenkins service:

sudo systemctl start jenkins

  • Stop the Docker service:

sudo systemctl stop docker

  • Enable the Jenkins service to start at boot:

sudo systemctl enable jenkins

The service command in Linux is a traditional tool used to manage services (also known as daemons) on Linux systems. It provides a simpler way to start, stop, restart, and check the status of services. Although many modern Linux distributions now use systemctl (which works with systemd), the service command is still useful, especially on older systems or for backward compatibility.

Examples:

  • Check the status of the Docker service:

sudo service docker status

  • Start the Jenkins service:

sudo service jenkins start

  • Stop the Docker service:

sudo service docker stop

Key Differences Between systemctl and service:

  1. System Architecture:

    • systemctl: Works with systemd, which is the modern system and service manager used by most current Linux distributions.

    • service: Works with SysVinit (an older init system) but is compatible with systemd for backward compatibility.

  2. Functionality:

    • systemctl: Offers more advanced functionality and control over services, such as starting, stopping, restarting, reloading, enabling/disabling services at boot, and querying detailed service status. It also manages system states, dependencies, and logs.

    • service: Provides basic functionality for managing services like starting, stopping, restarting, and checking the status of services. It does not offer advanced features like dependency handling or enabling/disabling services at boot on some systems.

  3. Syntax and Usage:

    • systemctl: Uses a more unified and consistent syntax for managing services and other system components (e.g., systemctl start service-name, systemctl status service-name).

    • service: Uses a simpler and more traditional syntax (e.g., service service-name start, service service-name status), often easier for older systems or those transitioning to systemd.

Task 4: Automate Service Management:

  • Write a script to automate the starting and stopping of Docker and Jenkins services.

Answer:

echo "Enter the service name(docker/Jenkins):"
read service

echo "Enter the action (start/stop):"
read action

sudo systemctl $action $service

echo "$service service $action completed."

Task 5: Enable and Disable Services: Use systemctl to enable Docker to start on boot and disable Jenkins from starting on boot.

Answer

Enable Docker to start on boot:

Disable Jenkins from starting on boot:

Task 6: Analyze Logs: Use journalctl to analyze the logs of the Docker and Jenkins services. Post your findings.

Answer

Docker Logs:

Jenkins Logs:

Â