On Saturday 04 Feb 2017 10:24:12 Neil Bothwick wrote:
> On Sat, 04 Feb 2017 10:41:14 +0100, Helmut Jarausch wrote:
> > > emerge -n is the correct solution, although emerge -u may also work
> > > for
> > > you.
> > 
> > Many thanks, Neil.
> > 
> > Still, I don't see how this can help me in my situation.
> > 
> > I'm trying to re-emerge packages which are already installed and where
> > there isn't a new version in the tree (in most cases).
> > So neither -u nor -n will do the job.
> 
> I see, you do want to rebuild everything, but only once. I have a script
> that I use to rebuild everything only once, you could modify it to use
> your list of files.
> 
> #!/bin/bash
> 
> EMERGE_ARGS="--oneshot --keep-going"
> 
> usage() {
>       echo -e "\nUsage: $(basename $0) [-f file] [-r category/package[-
version]
> [-h]" echo "    -f re-emerge all packages older than this file"
>       echo "    -r re-emerge all packages older than this package"
>       echo "    -h Show this text"
>       echo -e "\n    All other options are passed to the emerge command"
>       echo -e "$*"
>       exit
>       }
> 
> while getopts f:r:pvh ARG; do
>       case "${ARG}" in
>               f) REFFILE=${OPTARG} ;;
>               r) REFFILE=$(ls -1 /var/db/pkg/${OPTARG}*/environment.bz2 | 
> head -
n 1)
> ;; p) EMERGE_ARGS="${EMERGE_ARGS} --pretend" ;;
>               v) EMERGE_ARGS="${EMERGE_ARGS} --verbose" ;;
>               h) usage ;;
>               esac
>       done
> shift $(expr ${OPTIND} - 1)
> 
> [[ "${REFFILE}" ]] || usage "\nYou must specify a reference with -f or
> -r\n" [[ -f ${REFFILE} ]] || usage "\n${REFFILE} not found\n"
> 
> PKGLIST=$(mktemp -t mergeolderthan.XXXXXXXX)
> 
> 
> find /var/db/pkg -name environment.bz2 ! -newer ${REFFILE} | sed -e
> 's:/var/db/pkg/:=:' -e 's:/environment.bz2::' >|$PKGLIST
> 
> cat ${PKGLIST} | xargs --no-run-if-empty emerge ${EMERGE_ARGS} && rm -i
> ${PKGLIST}

Not being much of a programmer nowadays, I just do this:

$ alias emerj='sudo emerge --jobs=24 --load-average=48 --keep-going'
$ emerj gcc && emerj glibc libtool
$ emerj --exclude="gcc glibc libtool" system
$ emerj --exclude="$(cat system.pkgs)" -e world

...in which I've previously listed the 43 packages installed by emerj system 
in system.pkgs.

-- 
Regards
Peter


Reply via email to