LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (http://www.linuxquestions.org/questions/slackware-14/)
-   -   How are people keeping Slackware up to date (http://www.linuxquestions.org/questions/slackware-14/how-are-people-keeping-slackware-up-to-date-4175456292/)

ruario 03-31-2013 03:13 PM

How are people keeping Slackware up to date
 
I suspect most people use slackpkg but I am curious if any of the regulars here do anything else. I know from this thread that Lufbery and H_TeXMeX_H do (or did) use their own scripts and of course there are plenty of other options, e.g. a local mirror (+upgradepkg), slackroll, slapt-get, swaret, etc.

I was using slackpkg but since I tend to stick with stable (only switching to -current around the first RC stage) I realised that I didn't really need its full range of features so I also wrote my own update script. Not because it was needed but just to see what it would involve. ;)

P.S. My script basically mirrors the patches directory but only for packages I have installed and not blacklisted, checking the md5sums and signatures. Nothing else but then that is all I need.

ponce 03-31-2013 03:22 PM

I use slackpkg with a local mirror mounted via nfs (with a line cdrom://slackware/slackware64-current/ in /etc/slackpkg/mirrors).

TobiSGD 03-31-2013 03:28 PM

slackpkg with a local mirror (serving the files using apache) for both, my stable and my -current systems.

ruario 03-31-2013 03:34 PM

Hmm ... ponce and TobiSGD, It seems I should have also provided a combined slackpkg+local mirror option. ;) Ah well, these polls are never perfect.

mina86 03-31-2013 04:22 PM

I have the following run daily from crontab:
Code:

#!/bin/sh

OPTIONS="-arvzmh --stats --progress --delete-after"

__ARG=$1
shift

for ARG in $__ARG; do
        # [slack[ware]]64 -> 64, slackware -> slack
        case "$ARG" in
        slack64*|slackware64*) ARG=64${ARG#*64};;
        slackware*)            ARG=slack${ARG#slackware}
        esac

        case "$ARG" in
        slack)          DIST=  ; VER=current  ;;
        slack-[1-9]*.?*) DIST=  ; VER=${ARG#*-};;
        64)              DIST=64; VER=current  ;;
        64-[1-9]*.?*)    DIST=64; VER=${ARG#*-};;
        [1-9]*.?*)
                case `uname -m` in
                i?86|x86)  DIST=  ;;
                x86_64|x64) DIST=64;;
                *)
                        cat <<EOF >&2
${0##/*}: unable to guess architecture
${0##/*}: 'uname -m' returned: `uname -m`
EOF
                        exit 2
                esac
                VER=$ARG    ;;
        *)
                cat <<EOF >&2
usage: $0 ( [<dist>-]<ver> | <dist> ) [<switches>]
  eg: $0 slack-13.37
<dist> is  slack[ware][64] or 64  (default depends on 'uname -m')
<ver>  is  current or ##.#        (default is current)
<switches> are passed to rsync directly
EOF
                exit 1
        esac

        MIRROR=rsync.slackware.at
        SOURCE=rsync://$MIRROR/slackware/slackware$DIST-$VER/
        DEST=/data/slack/${DIST:-32}-$VER

        echo rsync $OPTIONS -f._- "$@" "$SOURCE" "$DEST" '<<EOF'
        rsync $OPTIONS -f._- "$@" "$SOURCE" "$DEST" <<EOF
- *.asc
- /slackware$DIST/kde
- /slackware$DIST/kdei
- /slackware$DIST/xfce
- /slackware$DIST/f
- /slackware$DIST/k
- /slackware$DIST/e
- /slackware$DIST/t
- /slackware$DIST/y
- /testing/
- /usb-and-pxe-installers/
- /source/
- /pasture/
- /isolinux/
- /usb-and-pxe-installers/
+ /extra/aspell-word-lists
+ /extra/aspell-word-lists/aspell-pl-*
- /extra/aspell-word-lists/aspell-*
- /extra/*
- /kernels/
EOF
done

And than, every now and than, upgradepkg /data/slack/64-current/slackware64/*/*.t?z. Occasionally I also look at upgrading instructions to figure out removed packages.

fskmh 03-31-2013 04:40 PM

rsync + own script

markush 03-31-2013 04:48 PM

slackpkg with a local repository which is updated with my own rsync-script.

Markus

wroom 03-31-2013 04:52 PM

Personally i tend to use slackware where i need a linuxbox to work in a known state without errors not bothering me for year after another.

It is easy to get a full slackware install with 95% of what i need installed once. And merely having to add some few custom packages, and then do my configuration.

And seldom i have to do updates because of vulnerabilities or need of new functionality. Slackware has been a workhorse that once installed and tested, it just runs and runs...

If something really need updating i will do it manually from a local verified package repository.

GazL 03-31-2013 04:58 PM

I keep a full mirror of current using rsync and then have a script that will identify differences between what is installed and what is available from the mirror plus any other local package sources I specify. The output of that script can then be used with upgradepkg, installpkg, removepkg as needed. The slacklist script only lists differences to stdout, it takes no actions itself.

I normally have 3 package trees stored locally:
  1. 'patches' - packages that replace stock packages
  2. slackware64-current - which s my local mirror
  3. 'extras' packages that are additions - from slackbuilds or elsewhere (these are my extras not "slackware64-current/extra", though I could add that one to the list if I wanted)
Should I need to I can simply add additional package sources, e.g. if i were testing a new version of xfce, I might add a new /local/slackware/xfce directory to the beginning rather than dump it all in with the rest of my stuff in 'patches'.


Here's an example with my usual PKGPATH
Code:

gazl@ws1:~$ PKGPATH="/local/slackware/patches/packages/:/local/slackware/slackware64-current/slackware64:/local/slackware/extras/packages"
gazl@ws1:~$ export PKGPATH
gazl@ws1:~$ /usr/local/sbin/slacklist install
/local/slackware/slackware64-current/slackware64/a/kernel-generic-3.8.4-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/a/kernel-huge-3.8.4-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/a/kernel-modules-3.8.4-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/k/kernel-source-3.8.4-noarch-1.txz
gazl@ws1:~$ /usr/local/sbin/slacklist upgrade
gazl@ws1:~$ /usr/local/sbin/slacklist remove
gazl@ws1:~$

I haven't installed the stock kernel packages which is why they are showing up in the results of the install option.


By changing the PKGPATH I can get different results. i.e. by removing extras or patches from the PKGPATH I can easily see what I've changed or switch back
to a stock install

Here's an example with just current and extras.
Code:

gazl@ws1:~$ PKGPATH="/local/slackware/slackware64-current/slackware64:/local/slackware/extras/packages"
gazl@ws1:~$ /usr/local/sbin/slacklist install
/local/slackware/slackware64-current/slackware64/a/kernel-generic-3.8.4-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/a/kernel-huge-3.8.4-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/a/kernel-modules-3.8.4-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/k/kernel-source-3.8.4-noarch-1.txz
gazl@ws1:~$ /usr/local/sbin/slacklist upgrade
/local/slackware/slackware64-current/slackware64/xap/MPlayer-1.1_20120701-x86_64-2.txz
/local/slackware/slackware64-current/slackware64/a/sed-4.2.1-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/a/shadow-4.1.4.3-x86_64-9.txz
gazl@ws1:~$ /usr/local/sbin/slacklist remove
gazl@ws1:~$

In this case slacklist can still see that the kernel packages aren't installed, but for 'upgrade' it can see that the installed packages for MPlayer, sed and shadow are different versions to the ones found in the package sources in PKGPATH and so it lists them as possible updates. Just like upgradepkg it doesn't care what is older or newer, only what is installed and what is available.


And if I also drop the 'extras' directory I can effectively do a 'clean' of my system.
Code:

gazl@ws1:~$ PKGPATH="/local/slackware/slackware64-current/slackware64"
gazl@ws1:~$ /usr/local/sbin/slacklist install
/local/slackware/slackware64-current/slackware64/a/kernel-generic-3.8.4-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/a/kernel-huge-3.8.4-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/a/kernel-modules-3.8.4-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/k/kernel-source-3.8.4-noarch-1.txz
gazl@ws1:~$ /usr/local/sbin/slacklist upgrade
/local/slackware/slackware64-current/slackware64/xap/MPlayer-1.1_20120701-x86_64-2.txz
/local/slackware/slackware64-current/slackware64/a/sed-4.2.1-x86_64-1.txz
/local/slackware/slackware64-current/slackware64/a/shadow-4.1.4.3-x86_64-9.txz
gazl@ws1:~$ /usr/local/sbin/slacklist remove
dmenu-4.5.gazl1-x86_64-1_local
dvdauthor-0.7.1-x86_64-1_local
dwm-6.0.gazl5-x86_64-1_local
easytag-2.1.7-x86_64-1_local
faac-1.28-x86_64-3_local
faad2-2.7-x86_64-3_local
ffmpeg-git_20130330-x86_64-1_local
gtk-engines-2.20.2-x86_64-1_local
id3lib-3.8.3-x86_64-1_local
kernel-3.8.5-custom-none-x86_64-1_local
lame-3.99.5-x86_64-1_local
libdvdcss-1.2.12-x86_64-1_local
libmp4v2-1.9.1-x86_64-1_local
libvpx-1.1.0-x86_64-1_local
mame-0.146-x86_64-4_local
mame-data-0.146-noarch-2_local
opera-12.14.1738-x86_64-1_local
unrar-4.0.7-x86_64-1_SBo
vobcopy-1.2.0-x86_64-1_local
x264-0.130.2274-x86_64-1_local
xvidcore-1.3.2-x86_64-1_local

This time 'remove' returns some results as it has found packages that are installed, but which have no .t?z available in the configured package sources.


The PKGPATH approach is quite flexible. Instead of pointing it at the whole of slackware64-current/slackware64, you can point it to one or more individual package-sets if you wanted to only include certain sets:
e.g.
Code:

gazl@ws1:~$ PKGPATH="/local/slackware/slackware64-current/slackware64/xap"
gazl@ws1:~$ /usr/local/sbin/slacklist upgrade
/local/slackware/slackware64-current/slackware64/xap/MPlayer-1.1_20120701-x86_64-2.txz

In the case above remove wouldn't really make sense as it would decimate your system, but 'install' could be used to install any missing packages from xap, and 'upgrade' could be used to do an upgrade operation limited to only a single package-set.

There is also a 'reinstall' option which works exactly the same as upgrade but lists the available package file regardless of whether the installed version is different or not.


Anyway, I think that gives you a flavour of how it all works. :)

tux_dude 03-31-2013 05:18 PM

What do you choose if using slackpkg with local mirror? I'm using Alien's mirror script.

afreitascs 03-31-2013 05:24 PM

I voted for slackpkg, simple as slackware

I use the script for the Alien "mirror-slackware-current.sh" . So I download all of the updated files current. After slackpkg I use to update my system ...

So when a new version of slackware is released, I can burn to a DVD media as well.

Didier Spaier 03-31-2013 05:38 PM

I voted other, but: a local mirror rsync'ed on my laptop's hard disk, then slackpkg update && slackpkg upgrade-all.

This is for Slackware-14.0.

EDIT after reading mails from root@slackware

Jeebizz 03-31-2013 05:49 PM

Other - I just keep up with security updates via emails from slackware.com.

jtsn 03-31-2013 05:53 PM

I use slackpkg with a rsync'ed local mirror exported via NFS.

allend 03-31-2013 07:05 PM

I use Slackpkg with 'DELALL=off' in /etc/slackpkg/slackpkg.conf. After an upgrade I then do 'mv /var/cache/packages /var/cache/packages<date>'. This maintains an archive of older packages so that I can easily revert if required.


All times are GMT -5. The time now is 07:10 AM.