Kali Linux Revealed




Download 11,68 Mb.
Pdf ko'rish
bet134/174
Sana15.01.2024
Hajmi11,68 Mb.
#137314
1   ...   130   131   132   133   134   135   136   137   ...   174
Bog'liq
Kali-Linux-Revealed-2021-edition

Retrieving Sources from
Git
You might have noticed that the
apt source
invocation tells you about a possible Git
repository used to maintain the package. It might point to a Debian Git repository or
to a Kali Git repository.
All Kali-specific packages are maintained in Git repositories hosted on
gitlab.com/-
kalilinux/packages
1
. You can retrieve the sources from those repositories with
git
clone https://gitlab.com/kalilinux/packages/source-package.git
.
230
Kali Linux Revealed


Contrary to what you get with
apt source
, the obtained tree will not have patches
automatically applied. Have a look at
debian/patches/
to learn about the possible
changes made by Kali.
git clone https://gitlab.com/kalilinux/packages/kali-meta.
å
git
Cloning into ’kali-meta’...
remote: Counting objects: 760, done.
remote: Compressing objects: 100% (614/614), done.
remote: Total 760 (delta 279), reused 0 (delta 0)
Receiving objects: 100% (760/760), 141.01 KiB | 0 bytes/s,
å
done.
Resolving deltas: 100% (279/279), done.
Checking connectivity... done.
cd kali-meta
ls
debian
ls debian
changelog
compat
control
copyright
rules
source
You can use the Git repositories as another way to retrieve the sources and thus
(mostly) follow the other instructions from this section. But when Kali developers
work with those repositories, they use another packaging workflow and use tools
from the
git-buildpackage
package that we will not cover here. You can learn more
about those tools here:
è
https://honk.sigxcpu.org/piki/projects/git-buildpackage/
9.1.2. Installing Build Dependencies
Now that you have the sources, you still need to install build dependencies. They will be necessary
to build the desired binary packages but are also likely required for partial builds that you might
want to run to test the changes while you make them.
Each source package declares its build dependencies in the Build-Depends field of the
debian/
control
file. Let’s instruct
apt
to install those (assuming that you are in a directory containing
an unpacked source package):
sudo apt build-dep ./
Note, using directory ’./’ to get the build dependencies
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
autoconf automake autopoint autotools-dev debhelper dh-autoreconf
1
https://gitlab.com/kalilinux/packages
231
Chapter 9 — Advanced Usage


dh-strip-nondeterminism gettext intltool-debian libarchive-zip-perl
libfile-stripnondeterminism-perl libtool po-debconf
0 upgraded, 13 newly installed, 0 to remove and 0 not upgraded.
Need to get 4 456 kB of archives.
After this operation, 14,6 MB of additional disk space will be used.
Do you want to continue? [Y/n]
[...]
In this sample, all build dependencies can be satisfied with packages available to APT. This might
not always be the case as the tool building kali-rolling does not ensure installability of build de-
pendencies (only dependencies of binary packages are taken into account). In practice, binary
dependencies and build dependencies are often tightly coupled and most packages will have their
build dependencies satisfiable.
9.1.3. Making Changes
We can’t cover all the possible changes that you might want to make to a given package in this
section. This would amount to teaching you all the
nitty gritty
2
details of Debian packaging. How-
ever, we will cover the three common use cases presented earlier and we will explain some of the
unavoidable parts (like maintaining the
changelog
file).
The first thing to do is to change the package version number so that the rebuilt packages can be
distinguished from the original packages provided by Debian or Kali. To achieve this, we usually
add a suffix identifying the entity (person or company) applying the changes. Since buxy is my
IRC nickname, I will use it as a suffix. Such a change is best effected with the
dch
command (Debian
CHangelog) from the devscripts package, with a command such as
dch --local buxy
. This invokes
a text editor (
sensible-editor
, which runs the editor assigned in the
VISUAL
or
EDITOR
environ-
ment variables, or
/usr/bin/editor
otherwise), which allows you to document the differences
introduced by this rebuild. This editor shows that
dch
really did change the
debian/changelog
file:
head -n 1 debian/changelog
libfreefare (0.4.0-2) unstable; urgency=low
dch --local buxy
[...]
head debian/changelog
libfreefare (0.4.0-2buxy1) UNRELEASED; urgency=medium
* Enable --with-debug configure option.
-- Raphael Hertzog 
Fri, 22 Jan 2021 10:36:00 -0400
libfreefare (0.4.0-2) unstable; urgency=low
2
https://www.debian.org/doc/manuals/maint-guide/
232
Kali Linux Revealed


*
Update debian/copyrtight.
Fix license to LGPL3+.
If you do such changes regularly, you might want to set the DEBFULLNAME and DEBEMAIL en-
vironment variables to your full name and your email, respectively. Their values will be used
by many packaging tools, including
dch
, which will embed them on the trailer line shown above
(starting with “ -- ”).
Applying a Patch
In one of our use cases, we have downloaded the pyrit source package and we want to apply a patch
that we found in the upstream Git repository. This is a common operation and it should always be
simple. Unfortunately, patches can be handled in different ways depending on the source package
format and on the Git packaging workflow in use (when Git is used to maintain the package).

Download 11,68 Mb.
1   ...   130   131   132   133   134   135   136   137   ...   174




Download 11,68 Mb.
Pdf ko'rish