- Kali Linux Repositories Explained [With Examples]
- What Are Linux Repositories?
- Default Kali Linux Repositories
- Switching Kali Linux Branches / Regular Repositories
- Kali-rolling branch
- Kali-last snapshot branch
- Kali-experimental branch
- Kali Linux Repository Format
- Non-Kali Linux Repositories
- Conclusion
- Source repositories kali linux
- Kali Branches
- Development
- Branches Used to Assist With Other Branches
- Mapping
- Debian’s Relation
- The kali-rolling Repository
- The kali-dev Repository
Kali Linux Repositories Explained [With Examples]
In this article we will explore Kali Linux Repositories but before that let us understand about repositories in general and what do they mean.
What Are Linux Repositories?
If you have worked with any Linux distribution, you must have come across the word «repositories,» especially when installing software or updating and upgrading your system. Repositories on Linux refer to a remote storage location where your system retrieves and installs software and packages. Therefore, when you execute a command like;
you are simply pulling package information and package updates from the remote storage location. Most of these repositories are distribution-based.
Kali Linux repositories are different from those used by a distribution like BlackArch or Debian. Even though situations might force you to add a repository from another distribution to your system, it’s not highly recommended even if they use the same package manager.
Default Kali Linux Repositories
Like any other Linux distribution, Kali Linux also comes with its own repositories from where you can install and update your system packages. These repositories are found in the sources.list file in the /etc/apt directory. When you install Kali Linux for the first time, you should see the following default repositories in the sources.list file. You can view the file by executing the command below:
grep -v '#' /etc/apt/sources.list | sort -u
If you don’t get a similar output, there are three most probable reasons as to why:
- You have switched yourKali Linux branch: A branch is basically another version of Kali Linux with a few different features from the main branch. The main default branch of Kali Linux is kali-rolling.
- You are using a custom image of Kali Linux: Kali Linux is free and open-source. Therefore, anybody can customize the existing and build their own different version of Kali Linux.
- You are running an earlier version of Kali Linux (Kali Linux 2020.2 and earlier versions) installed without an internet connection.
Since Kali Linux 2020.3 release, the default network repositories are enabled even if the installation was done without an internet connection.
Switching Kali Linux Branches / Regular Repositories
Kali Linux supports several branches. In this post, we are going to look at the three main branches.
To switch to any of these branches, you will need to comment out the repository of your current branch in the sources.list file and add the repository for your desired branch.
Kali-rolling branch
This is the main branch enabled by default on your Kali Linux system. This branch is continuously updated and pulls most of the packages from the kali-dev branch.
deb http://http.kali.org/kali kali-rolling main non-free contrib
Kali-last snapshot branch
This branch is point-release which delivers much more stable software and software to users:
deb http://http.kali.org/kali kali-last-snapshot main non-free contrib
Kali-experimental branch
It contains packages that are still under testing from the kali-bleeding edge branch.
deb http://http.kali.org/kali kali-experimental main non-free contrib
From the image below, you can see the system is running on the kali-rolling branch.
Kali Linux Repository Format
As you will notice, the repository isn’t just a link. It’s divided into various sections:
deb http://http.kali.org/kali kali-rolling main non-free contrib (Archive) (Mirror) (branch) (Component)
- Archive: This can either be deb or deb-src . Deb contains the pre-compiled binary packages we regularly use when installing software in most Debian-based distros. Deb-src indicates the program source.
- Mirror: It should be set to HTTP:kali.org/kali.
- Branch: This shows the current branch you are using.
- Component: This refers to the package that you wish to use on your system. The three mainly used components in Kali Linux are main, non-free, and contrib.
Non-Kali Linux Repositories
If you want to install additional software, you might be required to add external repositories other than those meant for the Kali Linux system. These new repositories should NOT be added to the /etc/apt/sources.list file. Instead, they are stored in their own separate directory. The most common path for external repositories is the /etc/apt/sources.list.d directory. For example, to install Signal on Kali Linux, we would need to add the repository deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main in your /sources.list.d directory.
Installing Kali Linux repositories on another distribution like Ubuntu or Debian might break the system. You might not see this immediately but as you continue adding more packages and updating the system, you increase the chances of your system not working. Similarly, adding another distribution’s repositories to Kali Linux might break your Kali installation.
Conclusion
The topic «Linux repositories» can be quite challenging especially if you are just getting started with Linux systems. This post has given you a deeper understanding of repositories and how to switch between the different Kali Linux branches. Even though we mainly concentrated on the Kali-rolling branch, feel free to explore other Kali branches.
Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud
If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.
For any other feedbacks or questions you can either use the comments section or contact me form.
Thank You for your support!!
Source repositories kali linux
A branch is an alternative version of some software, in this case of the Kali OS. Kali Linux has multiple branches which allows for users to decide how up-to-date their packages will be. Kali Linux is similar to Debian in many regards, one of which is the use of branches.
You may have multiple branches enabled at once. However, switching branches may introduce problems, as packages may be at different versions, and unavailable or unstable in certain cases.
Please see the network sources page for how to switch branches. For an example of how to use multiple branches, please see our NVIDIA GPU Drivers guide.
Kali Branches
First are the main branches, which are the most frequently used, and the most stable. These are often seen as “safe”.
- kali-rolling is the main default branch that most should be using. It is being continuously updated, as it pulls from kali-dev after ensuring questionable packages are stable and combining them with packages from kali-rolling-only . From time to time, a package bug may slip into here, due to bugs in debian-testing .
- kali-last-snapshot is a branch of Kali that can be used if users want a more standard feeling of software control. For every new release, we freeze the code and merge kali-rolling into kali-last-snapshot , at which point users will get all of the updates between versioned releases (i.e. 2020.3 -> 2020.4). This often is more stable, as packages are not updated (until the next release as it’s a “Point Release”) and go thought our release testing. This is the “safest” option.
Each of these branches provide a complete distribution of the Kali OS. You should be using either one or the other, but there’s no point having both enabled at the same time.
Next are the partial branches, which are meant to be used in addition to the the kali-rolling branch. They usually provide more recent versions of the packages that are found in kali-rolling, and at time they might even provide additional packages. These branches can’t be used alone, as they don’t contain a complete distribution of Kali.
Note that the casual user will likely not need those branches, except in very special cases. The partial branches are:
- kali-experimental is a staging area for work-in-progress packages.
- kali-bleeding-edge contains packages that are automatically updated from the upstream git repositories. This branch has the potential to be very unstable.
Development
- kali-dev is the development version of Kali Linux. It is created by combining three other branches: kali-dev-only , kali-debian-picks and debian-testing . Its mainly used for merging Debian’s updates with the changes maintained by Kali Linux.
- kali-dev-only is the development distribution with Kali-specific packages. This branch is auto-merged into kali-dev .
- kali-rolling-only is a repository for packages that need to quickly reach kali-rolling .
Branches Used to Assist With Other Branches
- kali-debian-picks contains packages cherry-picked from debian-experimental and debian-unstable . It is auto-merged into kali-dev .
- debian-testing is a mirror of Debian’s testing distribution. This is used to build kali-dev .
- debian-experimental and debian-unstable are partial mirrors for specific packages that we want to cherry-pick.
Mapping
Below is a diagram showing the relationship between the branches:
debian-unstable -> debian-testing -> kali-dev -> kali-rolling -> kali-last-snapshot | | ^ ^ ^ | v v | | | | ---------------------------------> kali-debian-picks -| | | ----> kali-bleeding-edge | | ^ kali-experimental -> kali-dev-only -----------------------------| | | | Upstream kali-rolling-only --------------------------------------------------------|
Debian’s Relation
Stable is the “safe” Debian branch. Around every two months, it is updated with a “Point Release”, which is often just security updates. Packages don’t generally get a version upgrade during this time, due to potential incompatibility and thus instability. This is the Debian equivalent of kali-last-snapshot.
Testing is the closest thing there is to a Debian “rolling” distribution, where “rolling” means that as soon as a package update is available, it’s pushed out. Kali has used this branch as a starter for kali-rolling since January 2016.
Unstable is just after Debian’s package development happens. The packages have been created, but not fully tested. Kali doesn’t have an equivalent, as it is a rolling distribution.
For more information about how Kali relates to Debian, please see our policy page on the matter.
The kali-rolling Repository
Contrary to kali-dev, kali-rolling is expected to be of better quality because it’s managed by a tool that ensures installability of all the package it contains. That tool picks updated packages from kali-dev and copies them to kali-rolling only when they have been verified to be installable. Note however that those checks do not include any functional testing. It might still contain broken software due to other problems that are not covered by the package dependencies. Kali Rolling is the primary repository that most users should be using. They can also report any issue they have with Kali specific packages on bugs.kali.org. Make sure to select the “kali-dev” version in “Product version”.
Kali Rolling users are expected to have the following entry in their /etc/apt/sources.list:
The kali-dev Repository
WARNING: While kali-dev is publicly accessible to everybody on all Kali mirrors, this distribution should not be used by end-users as it will regularly break.
This repository is actually Debian’s Testing distribution with all the kali-specific packages (available in the kali-dev-only repository) force-injected. Kali packages take precedence over the Debian packages. Sometimes when Testing changes, some Kali packages must be updated and this will not happen immediately. During this time, kali-dev is likely to be broken. This repository is where Kali developers push updated packages and is the basis used to create kali-rolling.