https://github.com/jaos/slapt-get/blob/main/FAQ
I would like to apply the procedure to ponce directory which does not include the dependencies.
It is said that:
17. How do I create my own package source?
Within slapt-getrc, change your SOURCE= lines to point to your package
source. This might be a local source using file:// URLs, or a publicly
available source.
For example, you could have an official and a local source like:
SOURCE=ftp://ftp.slackware.no/pub/linux/slackw ... kware-9.1/
SOURCE=file:///usr/src/local_pkg_repository/
This local directory must have the PACKAGES.TXT and CHECKSUMS.md5 files
present. This could be a mounted Slackware release CDROM, or a custom
repository.
The CHECKSUMS.md5 file can be generated with find:
rm CHECKSUMS.md5; find . -name '*.tgz' -exec md5sum {} >> CHECKSUMS.MD5 \;
PACKAGES.TXT package database that Patrick Volkerding provides along with his
packages. slapt-get uses this file by extending it with optional extra fields.
This information is stored within the package simply as a means of easy
transport, to later be parsed into a PACKAGES.TXT. For example, the entry
for man within PACKAGES.TXT looks like:
Code: Select all
PACKAGE NAME: man-1.5l-i386-1.tgz
PACKAGE LOCATION: ./slackware/ap
PACKAGE SIZE (compressed): 166 K
PACKAGE SIZE (uncompressed): 390 K
PACKAGE DESCRIPTION:
man: man (format and display the on-line manual pages)
Code: Select all
PACKAGE NAME: man-1.5l-i386-1.tgz
PACKAGE MIRROR: http://www.slackware.at/data/slackware-9.1/
PACKAGE LOCATION: ./slackware/ap
PACKAGE SIZE (compressed): 166 K
PACKAGE SIZE (uncompressed): 390 K
PACKAGE REQUIRED: groff >= 1.56-noarch-1,man-pages | man-pages-de
PACKAGE CONFLICTS:
PACKAGE SUGGESTS:
PACKAGE DESCRIPTION:
man: man (format and display the on-line manual pages)
and SUGGESTS. The meta files supporting dependencies, conflicts, and
suggestions are within the packages inside the ./install/ directory. The
REQUIRED information is stored in the slack-required file. The CONFLICTS
information is stored within the slack-conflicts file. The SUGGESTS
information is stored in the slack-suggests file.
See FAQ #19 for a breakdown
of the structure of REQUIRED, FAQ #31 for CONFLICTS, and FAQ #44 for SUGGESTS.
MIRROR is an optional location so that the packages can be hosted elsewhere
(this is the internal representation slapt-get uses after caching the package
date from the remote package source).
This information is added to the PACKAGES.TXT file within the package repository
by the provider of the packages.
Here is the script:
Code: Select all
### BEGIN SCRIPT
#!/bin/sh
#DL_URL=http://your_remove_pkg_host.tld/packages/
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# any later version.
function gen_packages_txt {
echo '' > PACKAGES.TXT
find . -type f -name '*.meta' -exec cat {} \; >> PACKAGES.TXT
cat PACKAGES.TXT | gzip -9 -c - > PACKAGES.TXT.gz
}
function gen_md5_checksums {
echo '' > CHECKSUMS.md5
find . -type f -regextype posix-egrep -regex '.*\.[tgblzikx]+$' -exec md5sum {} \; >> CHECKSUMS.md5
cat CHECKSUMS.md5 | gzip -9 -c - > CHECKSUMS.md5.gz
}
function gen_meta {
if [ ! -f $1 ]; then
echo "File not found: $1"
exit 1;
fi
if [ "`echo $1|grep -E '(.*{1,})\-(.*[\.\-].*[\.\-].*).[tgblzikx]{2,}[ ]{0,}$'`" == "" ]; then
return;
fi
PKGEXT=${1##*.}
case $PKGEXT in
tgz) DECOMPRESS=gzip ;;
tbz) DECOMPRESS=bzip2 ;;
tlz) DECOMPRESS=lzma ;;
txz) DECOMPRESS=xz ;;
esac
NAME=$(echo $1|sed -re "s/(.*\/)(.*.$PKGEXT)$/\2/")
LOCATION=$(echo $1|sed -re "s/(.*)\/(.*.$PKGEXT)$/\1/")
SIZE=$(du -bk $1 | awk '{print $1}')
USIZE=$(expr $(cat $1 | $DECOMPRESS -dc | wc -c) / 1024)
REQUIRED=$($DECOMPRESS -dc $1 | tar -xO install/slack-required 2>/dev/null|xargs -r -iZ echo -n "Z,"|sed -e "s/,$//")
CONFLICTS=$($DECOMPRESS -dc $1 | tar -xO install/slack-conflicts 2>/dev/null|xargs -r -iZ echo -n "Z,"|sed -e "s/,$//")
SUGGESTS=$($DECOMPRESS -dc $1 | tar -xO install/slack-suggests 2>/dev/null|xargs -r )
METAFILE=${NAME%$PKGEXT}meta
echo "PACKAGE NAME: $NAME" > $LOCATION/$METAFILE
if [ -n "$DL_URL" ]; then
echo "PACKAGE MIRROR: $DL_URL" >> $LOCATION/$METAFILE
fi
echo "PACKAGE LOCATION: $LOCATION" >> $LOCATION/$METAFILE
echo "PACKAGE SIZE (compressed): $SIZE K" >> $LOCATION/$METAFILE
echo "PACKAGE SIZE (uncompressed): $USIZE K" >> $LOCATION/$METAFILE
echo "PACKAGE REQUIRED: $REQUIRED" >> $LOCATION/$METAFILE
echo "PACKAGE CONFLICTS: $CONFLICTS" >> $LOCATION/$METAFILE
echo "PACKAGE SUGGESTS: $SUGGESTS" >> $LOCATION/$METAFILE
echo "PACKAGE DESCRIPTION:" >> $LOCATION/$METAFILE
$DECOMPRESS -dc $1 | tar -xO install/slack-desc |grep -E '\w+\:'|grep -v '^#' >> $LOCATION/$METAFILE
echo "" >> $LOCATION/$METAFILE
}
case "$1" in
pkg)
if [ -n "$2" ]; then
gen_meta $2
else
echo "$0 [pkg [file]|all|new|PACKAGESTXT|MD5]"
fi
;;
all)
for pkg in `find . -type f -regex '.*\.[tgblzikx]+$' -print`
do
gen_meta $pkg
done
$0 PACKAGESTXT
$0 MD5
;;
new)
for pkg in `find . -type f -regex '.*\.[tgblzikx]+$' -print`
do
if [ ! -f ${pkg%${pkg##*.}}meta ]; then
gen_meta $pkg
fi
done
;;
PACKAGESTXT)
gen_packages_txt
;;
MD5)
gen_md5_checksums
;;
*)
echo "$0 [pkg [file]|all|new|PACKAGESTXT|MD5]"
;;
esac
### END SCRIPT