Debian Directory
From charlesreid1
Mysterious.
Chapter 5: https://www.debian.org/doc/manuals/maint-guide/dother.en.html
Chapter 6: https://www.debian.org/doc/manuals/maint-guide/build.en.html
Here's what you do:
Start by installing debhelper:
apt-get install debhelper dh-make
Now go to the directory level where the debian/ directory is located. ls debian should show you the contents of the debian directory (source, rules, etc.).
Now run the command to build the debian package (.deb file):
dpkg-buildpackage -us -uc -b
via man page (https://linux.die.net/man/1/dpkg-source), the -b with an empty string will build a Debian package. That means, it DOES NOT need a tar gz file.
Build options (with -b): If a second non-option argument is supplied it should be the name of the original source directory or tarfile or the empty string if the package is a Debian-specific one and so has no Debianisation diffs. If no second argument is supplied then dpkg-source will look for the original source tarfile package_upstream-version.orig.tar.gz or the original source directory directory.orig depending on the -sX arguments. </pe> ==Example== For installing john: <pre> $ dpkg-buildpackage -us -uc -b dpkg-buildpackage: info: source package john dpkg-buildpackage: info: source version 1.8.0-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Julián Moreno Patiño <julian@debian.org> dpkg-buildpackage: info: host architecture amd64 dpkg-source --before-build john dpkg-source: info: applying allow-cflags-overriding.diff dpkg-source: info: applying arm-unroll-loops-ftbfs-476460.diff dpkg-source: info: applying kfreebsd-c3_fmt.diff dpkg-source: info: applying define-cfg-name.diff fakeroot debian/rules clean dh clean --sourcedirectory=src dh_testdir -O--sourcedirectory=src debian/rules override_dh_auto_clean make[1]: Entering directory '/home/charles/codes/kali-tools/dist/john' dh_auto_clean make -j1 clean make[2]: Entering directory '/home/charles/codes/kali-tools/dist/john/src' rm -f ../run/john ../run/unshadow ../run/unafs ../run/unique ../run/john.bin ../run/john.com ../run/unshadow.com ../run/unafs.com ../run/unique.com ../run/john.exe ../run/unshadow.exe ../run/unafs.exe ../run/unique.exe rm -f ../run/john.exe john-macosx-* *.o *.bak core rm -f detect bench generic.h arch.h tmp.s cp /dev/null Makefile.dep make[2]: Leaving directory '/home/charles/codes/kali-tools/dist/john/src' # script-not-executable chmod +x debian/extra/cronjob make[1]: Leaving directory '/home/charles/codes/kali-tools/dist/john' dh_clean -O--sourcedirectory=src debian/rules build dh build --sourcedirectory=src dh_testdir -O--sourcedirectory=src dh_update_autotools_config -O--sourcedirectory=src dh_auto_configure -O--sourcedirectory=src debian/rules override_dh_auto_build make[1]: Entering directory '/home/charles/codes/kali-tools/dist/john' # building the selected target dh_auto_build -- clean linux-x86-64 make -j1 clean linux-x86-64 make[2]: Entering directory '/home/charles/codes/kali-tools/dist/john/src' rm -f ../run/john ../run/unshadow ../run/unafs ../run/unique ../run/john.bin ../run/john.com ../run/unshadow.com ../run/unafs.com ../run/unique.com ../run/john.exe ../run/unshadow.exe ../run/unafs.exe ../run/unique.exe rm -f ../run/john.exe john-macosx-* *.o *.bak core rm -f detect bench generic.h arch.h tmp.s cp /dev/null Makefile.dep ln -sf x86-64.h arch.h ...snip... ln -s john ../run/unshadow rm -f ../run/unafs ln -s john ../run/unafs rm -f ../run/unique ln -s john ../run/unique make[3]: Leaving directory '/home/charles/codes/kali-tools/dist/john/src' make[2]: Leaving directory '/home/charles/codes/kali-tools/dist/john/src' make[1]: Leaving directory '/home/charles/codes/kali-tools/dist/john' create-stamp debian/debhelper-build-stamp fakeroot debian/rules binary dh binary --sourcedirectory=src create-stamp debian/debhelper-build-stamp dh_testroot -O--sourcedirectory=src dh_prep -O--sourcedirectory=src debian/rules override_dh_auto_install make[1]: Entering directory '/home/charles/codes/kali-tools/dist/john' # install the selected target dh_auto_install # install fallbacks as needed make[1]: Leaving directory '/home/charles/codes/kali-tools/dist/john' dh_install -O--sourcedirectory=src dh_installdocs -O--sourcedirectory=src dh_installchangelogs -O--sourcedirectory=src dh_installman -O--sourcedirectory=src dh_installcron -O--sourcedirectory=src dh_perl -O--sourcedirectory=src dh_link -O--sourcedirectory=src dh_strip_nondeterminism -O--sourcedirectory=src dh_compress -O--sourcedirectory=src dh_fixperms -O--sourcedirectory=src dh_strip -O--sourcedirectory=src dh_makeshlibs -O--sourcedirectory=src dh_shlibdeps -O--sourcedirectory=src dh_installdeb -O--sourcedirectory=src dh_gencontrol -O--sourcedirectory=src dh_md5sums -O--sourcedirectory=src dh_builddeb -O--sourcedirectory=src dpkg-deb: building package 'john-data' in '../john-data_1.8.0-2_all.deb'. dpkg-deb: building package 'john' in '../john_1.8.0-2_amd64.deb'. dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary >../john_1.8.0-2_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build john dpkg-source: info: unapplying define-cfg-name.diff dpkg-source: info: unapplying kfreebsd-c3_fmt.diff dpkg-source: info: unapplying arm-unroll-loops-ftbfs-476460.diff dpkg-source: info: unapplying allow-cflags-overriding.diff dpkg-buildpackage: info: binary-only upload (no source included)
Now, you should be able to see a john .deb file in the parent directory:
$ ls ../ john john_1.8.0-2_amd64.buildinfo john_1.8.0-2_amd64.changes john_1.8.0-2_amd64.deb john-data_1.8.0-2_all.deb
Last step is to install the package with the dpkg -i
command:
dpkg -i john_1.8.0-2_amd64.deb dpkg -i john-data_1.8.0-2_all.deb
After that, you'll see them in aptitude:
$ sudo apt-get install john john-data Reading package lists... Done Building dependency tree Reading state information... Done john is already the newest version (1.8.0-2+b1). john-data is already the newest version (1.8.0-2). john-data set to manually installed. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.