Date: Sat, 21 Dec 2002 11:28:35 +0100 From: Jens Rehsack <rehsack@liwing.de> To: Joerg-M@web.de Cc: freebsd-questions@FreeBSD.ORG Subject: Re: local copies of packages during their installation Message-ID: <3E044253.6000106@liwing.de> References: <4PLEAFAOLEBHCE9LGNMPJ53HBED1YUR.3e043ac5@merlin>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Jörg Meyer wrote:
> Hello,
>
> I've been experimenting with FreeBSD since the day
> day before yesterday. Coming from the MS-world I am very
> impressed already.
>
> I installed the system from a CD created from the Mini-Iso-Image.
> Installing packages with pkg_add -r I would like to have local
> copies of the downloaded tarball in order to create an adapted
> CD with the packages I really need (just for the case of a new-
> or re-installation).
> Of course, all the depending package-tarballs should be download
> as well - otherwise I could also ftp them manually.
> Furthermore it would be really nice if the directory structure of
> the FTP-Server was duplicated locally as well.
>
> I know (from experimenting) that make package within the ports collection
> can archieve something similar (packages are created under /usr/ports/packages
> if existent). But following this strategy in my opinion has 3 major disadvantages:
> 1) Compiling packages like XFree86-4 takes quite a long time on my machnine.
Solution a) Buy a faster machine. Compile takes it's time
Solution b) Do not compile but download
Solution c) Wait
Solution d) reduce your optimization level
> 2) It is impossible to create a package without installing it.
> In case of the package is installed already make returns an error
> telling me to deinstall the package first.
less /usr/ports/Mk/bsd.port.mk
-------- SNIPP
# Default targets and their behaviors:
#
# fetch - Retrieves ${DISTFILES} (and ${PATCHFILES} if
defined)
# into ${DISTDIR} as necessary.
# fetch-list - Show list of files that would be retrieved by fetch.
# fetch-recursive - Retrieves ${DISTFILES} (and ${PATCHFILES} if defined),
# for port and dependencies into
${DISTDIR} as necessary.
# fetch-recursive-list - Show list of files that would be retrieved by
# fetch-recursive.
# extract - Unpacks ${DISTFILES} into ${WRKDIR}.
# patch - Apply any provided patches to the source.
# configure - Runs either GNU configure, one or more local
configure
# scripts or nothing, depending on
what's available.
# build - Actually compile the sources.
# install - Install the results of a build.
# reinstall - Install the results of a build, ignoring
"already installed"
# flag.
# deinstall - Remove the installation.
# package - Create a package from an _installed_ port.
# describe - Try to generate a one-line description for
each port for
# use in INDEX files and the like.
# checkpatch - Do a "patch -C" instead of a "patch". Note that it may
# give incorrect results if multiple
patches deal with
# the same file.
# checksum - Use distinfo to ensure that your distfiles are
valid.
# checksum-recursive - Run checksum in this port and all dependencies.
# makesum - Generate distinfo (only do this for your own
ports!).
# clean - Remove ${WRKDIR} and other temporary files used
for building.
# clean-depends - Do a "make clean" for all dependencies.
-------- SNAPP
-------- SNIPP
# For package:
#
# NO_LATEST_LINK - Do not install the "Latest" link for package. Define
this
# if this port is a beta version of
another stable port
# which is also in the tree.
# LATEST_LINK - Install the "Latest" link for the package as ___. Define
# this if the "Latest" link name will be incorrectly
determined.
#
# This is used in all stages:
#
# SCRIPTS_ENV - Additional environment vars passed to scripts in
# ${SCRIPTDIR} executed by bsd.port.mk (default: see below).
#
# Finally, variables to change if you want a special behavior. These
# are for debugging purposes. Don't set them in your Makefile.
#
# ECHO_MSG - Used to print all the '===>' style prompts -
override this
# to turn them off (default: ${ECHO_CMD}).
# PATCH_DEBUG - If set, print out more information about the patches as
# it attempts to apply them.
# PKG_DBDIR - Where package installation is recorded
(default: /var/db/pkg)
# NO_PKG_REGISTER - Don't register a port installation as a package.
# FORCE_PKG_REGISTER - If set, it will overwrite any existing package
# registration information in
${PKG_DBDIR}/${PKGNAME}.
# NO_DEPENDS - Don't verify build of dependencies.
-------- SNAPP
It seems to work. Try 'NO_PKG_REGISTER=yes make package"
> 3) dependencies are not considered.
> make package in /usr/math/mupad only creates a mupad-package
> but no package for linux_base which is necessary for mupad.
I've attached you a small script. Preventing duplicate builds it's a
lesson for the reader ;-)
> Does anyone know a solution to this problem?
> Don't you make local copies of packages you install(ed)?
???
> Thanks for each advice in advance.
Your welcome.
> Yours,
> Joerg Meyer
>
Regards,
Jens
--
L i W W W i Jens Rehsack
L W W W
L i W W W W i nnn gggg LiWing IT-Services
L i W W W W i n n g g
LLLL i W W i n n g g Friesenstraße 2
gggg 06112 Halle
g
g g
Tel.: +49 - 3 45 - 5 17 05 91 ggg e-Mail: <rehsack@liwing.de>
Fax: +49 - 3 45 - 5 17 05 92 http://www.liwing.de/
[-- Attachment #2 --]
#!/bin/sh
PORTSDIR=/usr/ports
PACKAGES=${PORTSDIR}/packages
if [ -d ${PACKAGES} ]
then
mkdir -p ${PACKAGES}
fi
cd $PORTSDIR
for i in `make search name=mupad|grep deps|perl -e 'while(<>){$_ =~ s/^.*deps:\s*//g; print $_}'`
do
loc=`make search name=$i|grep "Path:"|awk '{print $2;}'`
cd $loc
NO_PKG_REGISTER=yes make package
done
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3E044253.6000106>
