Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
 
You are here: Home / Uputstva / Slackware / Slackware mirror i auto-update

Slackware mirror i auto-update

by milobit last modified Aug 24, 2006 01:09 PM
Kratko upustvo kako da se uradi automatizacija update procedure
Za update Slackware GNU/Linux-a postoji više različitih alata, ja lično koristim swaret. Update skript je baziran na swaret alatu.

Sve što je potrebno su dva skripta (mirror.sh i update.sh) kao i da je instaliran swaret.

Mirror skript pravi mirror slackware-current verzije u lokalu i on je veličine oko 3.2GB. Mirror skript se startuje jednom dnevno od strane cron-a posle čega mi cron šalje mail sa izveštajem da je cron startovao skriptu i kompletan izveštaj šta je skripta uradila.

Mirror skript izgleda ovako:

#!/bin/bash
# Slackware mirror script
# by milobit

VERSION=current
DATUM=`date +%F`
FILENAME="$DATUM.mirror-log.txt"
DIR="/var/log/mirror"

echo "Start rsync Slackware current mirror"
echo " "

echo "slackware.no mirror"
echo " "

rsync -rlHtSv --delete rsync://rsync.slackware.no/linux/slackware/slackware-$VERSION
/home/ftp/ 2>&1>
/$DIR/$FILENAME

cat /$DIR/$FILENAME

echo "slackware.at mirror"
echo " "


rsync -rlHtSv --delete rsync://rsync.slackware.at/slackware/slackware-$VERSION /home/ftp/ 2>&1 > /$DIR/$FILENAME

cat /$DIR/$FILENAME

echo "rsync done"


Sa ovim je omogućeno da se automacki proverava svaki dan da li postoji razlika izmedju mirorr-a u lokalu i na serveru kao i automacko sinhronizovanje. Pre nego što se mirror skript pusti u promet potrebno je napraviti mirror dierktorijum u /var/log. Značajan deo posla je urađen i novi update se kompletno nalazi u lokalu. Sada je još potrebno da se update i instalira na mašinu, za to je zadužen update skript.

Update skript izgleda ovako:

#!/bin/bash
# Swaret auto-update script
# by milobit


DATUM=`date +%F`
MASHINE=`uname -n`
FILENAME="$DATUM-$MASHINE.update-log.txt"
DIR="/var/log/slackware-update"

swaret --update 2>&1 > /$DIR/$FILENAME
swaret --upgrade -a 2>&1 >> /$DIR/$FILENAME
ldconfig 2>&1 >> /$DIR/$FILENAME
#swaret --dep -a 2>&1 >> /$DIR/$FILENAME
updatedb 2>&1 >> /$DIR/$FILENAME

cat /$DIR/$FILENAME

echo "Update Done!!!"


Update skript se takođe pokreće od strane cron-a ali par sati kasnije kako bi dao mirror skriptu vremena da napravi update mirror-a. Pre nego što se skript pokrene potrebno je napraviti slackware-update direktorijum u /var/log.

Za sve one koji nisu u mogućnosti ili ne žele da imaju mirror na kućnoj mašini mogu da koriste samo update skript stim da u konfiguracionom fajlu koji se nalazi u /etc/swaret.conf sami odrede koji će server da koriste. U slučaju da koristite svoj lokalni mirror u swaret.conf treba da upišete: ROOT=file:/home/ftp/slackware-$VERSION

Primeri za swaret.conf:

ROOT=file:/home/ftp/slackware-$VERSION              # update se vrši preko lokalnog direktorijuma
ROOT=ftp://192.168.10.50/slackware-$VERSION    # update se vrši preko lokalnog ftp servera
ROOT=ftp://ftp.slackware.at/slackware-$VERSION  # update se vrši preko udaljenog ftp server

###########################################################
#
# swaret.conf, Version: 1.6.3
#
### /etc/swaret.conf - SWARET EXAMPLE CONFIGURATION FILE ###
#
# Define a valid Slackware Linux Version.
# (Used for Dependency Support and other Features)
#
# NOTE: If you want to use Slackware Linux Current,
#       set VERSION to 'current' (VERSION=current).
#
VERSION=current
#
# Define the language for status and error messages
LANGUAGE=ENGLISH
#
# ----------------------------------------------------------
# Define Slackware (8.1 or Higher or Current) Linux Mirrors.
# (Used for Official Slackware Linux Packages)
# (Slackware Linux Mirrors available at http://www.slackware.com)
#
# Syntax: ROOT=PROTOCOL:URL
#
# NOTE: swaret will use the order of the specified ROOT URL's.
#
#ROOT=file:/mnt/cdrom
#ROOT=file:/mnt/dvdrom
#ROOT=file:/mnt/usbmemstick
ROOT=ftp://192.168.10.50/slackware-$VERSION
#ROOT=ftp://134.155.48.123/pub/linux/distributions/slackware/slackware-$VERSION
#ROOT=ftp://ftp.nluug.nl/pub/os/Linux/distr/slackware/slackware-$VERSION
#ROOT=http://sunsite.cnlab-switch.ch/ftp/mirror/slackware/slackware-$VERSION
#ROOT=ftp://ftp.slackware.no/pub/linux/slackware/slackware-$VERSION
#ROOT=http://www.slackware.no/slackware/slackware-$VERSION
#ROOT=ftp://ftp.slackware.at/slackware-$VERSION
#ROOT=http://www.slackware.at/data/slackware-$VERSION
#ROOT=ftp://ftp.planetmirror.com/pub/slackware/slackware-$VERSION
#ROOT=http://ftp.planetmirror.com/pub/slackware/slackware-$VERSION
#ROOT=rsync://rsync.slackware.no/slackware/slackware-$VERSION
#ROOT=rsync://rsync.slackware.at/slackware/slackware-$VERSION
#ROOT=file:/pub/slackware
#ROOT=file:/mnt/nfsshare/slackware
#ROOT=file:/mnt/sambashare/slackware
#
# -----------------------------------------------------------
# Define Repository URL's with Slackware Linux Packages.
# (Used for Repository Slackware Linux Packages)
# (Repository URL's available at http://swaret.sourceforge.net and
#   at http://www.linuxpackages.net/mirrors.php)
#
# NOTE 1: To use a Local Repository or Remote Repository,
#         be sure it contains the following Files:
#         - CHECKSUMS.md5 (For MD5 Sum, REQUIRED)
#         - FILELIST.TXT (For Package Name + Size, REQUIRED)
#         - PACKAGES.TXT (For Package Description, NOT REQUIRED)
#         - MANIFEST.bz2 (For Dependency Support, NOT REQUIRED)
# NOTE 2: To create your own Repository, use 'swaret-tools'.
#         You can get 'swaret-tools' at http://swaret.sourceforge.net!
#
# Syntax: REPOS_ROOT=REPOSITORYNAME%PROTOCOL:URL
#
# NOTE 1: The REPOSITORY NAME can only be ONE Keyword!
# NOTE 2: swaret will use the order of the specified REPOS_ROOT URL's.
#
#REPOS_ROOT=LinuxPackagesDOTNET%http://www2.linuxpackages.net/packages/Slackware-10.0
#
#REPOS_ROOT=My_Slackware_Packages_On_CD-ROM%file:/mnt/cdrom
#REPOS_ROOT=My_Slackware_Packages_On_DVD-ROM%file:/mnt/dvdrom
#REPOS_ROOT=My_Slackware_Packages_On_USB_Memory_Stick%file:/mnt/usbmemstick
#REPOS_ROOT=SomeRemoteRepository%ftp://ftp.someremoterepository.net/slackware/slackware-10.0
#REPOS_ROOT=SomeRemoteRepository%http://www.someremoterepository.net/slackware/slackware-10.0
#REPOS_ROOT=SomeRemoteRepository%rsync://rsync.someremoterepository.net/slackware/slackware-10.0
#
# ------------------------------------------------------------
# Define Libraries (8.1 or Higher or Current) List Mirrors.
# (Used for Dependency Support)
#
# NOTE 1: You need to specify a Libraries List Mirror which
#         contains a 'libraries-VERSION' File.
#
# NOTE 2: To create the Libraries List, use 'swaret-tools'.
#         You can get 'swaret-tools' at http://swaret.sourceforge.net!
#         You can also clear all DEP_ROOT Variable(s) which will
#         allow swaret to create the Libraries List for you
#         during Dependency Check using the defined ROOT Variable(s) above.
#
# Syntax: DEP_ROOT=PROTOCOL:URL
#
# NOTE: swaret will use the order of the specified DEP_ROOT URL's.
#
DEP_ROOT=http://swaret.sourceforge.net
#DEP_ROOT=file:/mnt/cdrom
#DEP_ROOT=file:/mnt/dvdrom
#DEP_ROOT=file:/mnt/usbmemstick
#DEP_ROOT=file:/pub/swaret
#DEP_ROOT=file:/mnt/nfsshare/swaret
#DEP_ROOT=file:/mnt/sambashare/swaret
#
# ----------------------------------------------------------
# General Settings
#
# Do you want swaret to use Random Slackware Linux Mirrors?
# -> 1 for yes, 0 for no.
#
RANDOMR=0
#
# Do you want swaret to back-up your packages when upgradeing?
# -> If set to 1, old packages are backed up in $CACH_DIR/rollback.
#    Normally this is /var/swaret/rollback.  ROLLBACKMAX is the number
#    of "upgrades" that will be backed up before old backups will be
#    removed.  Turning on rollback means upgrading packages takes
#    longer, but it is more safe.
# -> If set to 0, swaret will not back up packages. 
#
ROLLBACK=0
ROLLBACKMAX=3
#
# Do you want swaret to parse all the Package Descriptions?
# -> If set to 1, swaret will also match Packages whose Description
#    is matching the Keyword(s) you specify after --ACTION.
#    NOTE: swaret will parse all the Package Descriptions for this,
#          and might slow down swaret when using an older System.
# -> If set to 0, swaret will not use Package Descriptions
#    to match one or more Packages.
#
USEPKGDESC=0
#
# If you don't want swaret to Upgrade, Install, Re-Install, Download,...
# some Packages, add the KEYWORDS to the EXCLUDE Variable.
# To disable Exclude Method: swaret --exclude -off
# To enable Exclude Method: swaret --exclude -on
#
# NOTE: You can add ANY EXTENDED REGEXP (Regular Expression) to the EXCLUDE Variable(s)
#
# Basic Exclude
EXCLUDE=kernel alsa lilo
EXCLUDE=swaret
EXCLUDE=aaa_
EXCLUDE=MANIFEST.bz2$
EXCLUDE=.*dl$ .*PACKAGER$ .*MYBUILD$
#
# Advanced Exclude
# Syntax: KEYWORD[DONT_EXCLUDE_ME_KEYWORD1,DONT_EXCLUDE_ME_KEYWORD2,...]
# Example: kde-i18n[nl,en_GB] koffice-i18n[nl,en_GB]
#
#EXCLUDE=kde-i18n[nl,en_GB] koffice-i18n[nl,en_GB]
#
# Do you want to enable Dependency Check?
# -> If set to 1, swaret will start the Dependency Check after
#    every Upgrade, Install and Re-Install Procedure.
# -> If set to 0, swaret will not start the Dependency Check
#    after any Procedure.
#
DEPENDENCY=1
#
# Do you want swaret to Search for missing Libraries (and Fix)
# which could be found on your System, but not tracked by ldconfig?
# -> 1 for yes, 0 for no.
#
DSEARCHLIB=1
#
# Set to 1, if you want swaret to use the 'slocate' program
# to Search for missing Libraries.
# (be sure to issue the 'updatedb' Command regularly!)
# If DSEARCHM is set to 0, swaret will use
# the 'find' program to locate missing Libraries.
# -> 1 for yes, 0 for no.
#
DSEARCHM=0
#
# Start MD5 Check after Fetching Packages, Patches and Sources?
# -> 1 for yes, 0 for no.
#
MD5CHECK=1
#
# Start GPG Signature Check after Fetching Packages, Patches and Sources?
#
# NOTE: Check out F.A.Q. (--faq gpg) how to Import a Public GPG Key which
#       will be used by the GPG Signature Check.
#
# -> 1 for yes, 0 for no.
#
GPGCHECK=0
#
# Show Description for Packages during
# Upgrade, Install, Re-Install,... Procedures?
# # -> If set to 1, you will see a Description.
#
DESC=0
#
# Cache Directory for (Repository) Packages and Sources.
#
CACHE_DIR=/var/swaret
#
# Enable Logging?
# -> 1 for yes, 0 for no.
#
LOG=1
#
# swaret Log File
#
LOG_FILE=/var/log/swaret
#
# Show Warnings?
# -> 1 for yes, 0 for no.
#
WARNINGS=1
#
# Show Information?
# -> 1 for yes, 0 for no.
#
INFORMATION=1
#
# -------------------------------------------------------------
# Network Settings
#
# Network Interface
# Use this if you have a Network Interface.
#
NIC=eth0
#
# Local Interface
# Use this if you do not have a Network Interface.
#
# For Example (CD-ROM):
# You got a Slackware Linux CD-ROM,
# mount the CD-ROM to /mnt/cdrom and
# set ROOT to 'file:/mnt/cdrom' in /etc/swaret.conf.
# Also, set NIC to 'lo' (Local Loop Device).
#
# NIC=lo
#
# Progress
# If set to 0, swaret will use the '%' Download Interface.
# If set to 1, swaret will use the 'size' Download Interface.
# If set to 2, swaret will use the 'wget/rsync' Download Interface.
#
PROGRESS=0
#
# Timeout for wget and/or rsync.
# -> Number of seconds for Timeout
#
TIMEOUT=35
#
# Retries for wget and/or rsync.
# -> Number of Retries
#
RETRIES=5
#-> If set to 0, you will not see a Description.
#
# Behind a Firewall? Using FTP Mirrors?
# -> 1 for yes, 0 for no
#
PASSIVE_FTP=1
#
# If you want HTTP or FTP Proxy Support,
# uncomment and Setup the following Variable:
#
# WGET_PROXY=http://IP or HOST:PORT
#
# If you want RSYNC Proxy Support,
# uncomment and Setup the following Variable:
#
# RSYNC_PROXY=IP or HOST:PORT
#
### /etc/swaret.conf - SWARET EXAMPLE CONFIGURATION FILE ###

I za kraj bih još hteo da dodam, da ovaj osnovni update skript može i dalje da se proširuje u zavisnosti za čega se mašina koristi i koji servisi se koriste. Važni servisi kao što su na primer ssh, http, ftp ... itd. bi u svakom slučaju posle update-a trebali da se  provere da li su restartovani u slučaju da je na njima rađen update.

Document Actions