FreeBSD 10.1 Upgrades Automatisieren

Bash, Shell, PHP, Python, Perl, CGI
User avatar
Proteus
Posts: 278
Joined: 2013-04-14 05:08
Location: Holzgerlingen

FreeBSD 10.1 Upgrades Automatisieren

Post by Proteus » 2015-02-20 15:47

Hallo,

ich habe da ein kleines Script gefunden das ich ein wenig abgeändert habe und wollte wissen ob man das so machen kann. Ich möchte das Script nicht per Cron starten sondern 2 mal im Monat durchlaufen lassen. Ich kann Kritik vertragen! ;) Würde mir aber wünschen wenn ihr das Script abändert wie es am besten funktionieren würde.

Code: Select all

!/bin/sh
cd /var/log/
tar -czf freebsd-update.tgz freebsd-update.log && touch /var/log/freebsd-update.log
LOG_FILE="/var/log/freebsd-update.log"
echo "Starting updates: `date`" | tee -a ${LOG_FILE}
echo "***"
/usr/local/sbin/pkg2ng | tee -a ${LOG_FILE}
echo "***"
/usr/sbin/pkg check -Ba | tee -a ${LOG_FILE}
echo "***"
/usr/sbin/pkg update -f | tee -a ${LOG_FILE}
echo "***"
/usr/sbin/pkg upgrade | tee -a ${LOG_FILE}
echo "***"
/usr/sbin/portsnap fetch | tee -a ${LOG_FILE}
echo "***"
/usr/sbin/portsnap extract | tee -a ${LOG_FILE}
echo "***"
/usr/sbin/portsnap update | tee -a ${LOG_FILE}
echo "***"
/usr/local/sbin/portmaster -a --no-confirm | tee -a ${LOG_FILE}
echo "***"
/usr/local/sbin/portupgrade -a | tee -a ${LOG_FILE}
echo "***"
echo "***"
/usr/sbin/freebsd-update fetch | tee -a ${LOG_FILE}
echo "***"
/usr/sbin/freebsd-update install | tee -a ${LOG_FILE}
echo "Finished updates: `date`" | tee -a ${LOG_FILE}
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"

User avatar
Proteus
Posts: 278
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Re: FreeBSD 10.1 Upgrades Automatisieren

Post by Proteus » 2015-02-20 19:17

Bitte ins Forum Scripting verschieben!
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"

User avatar
Joe User
Project Manager
Project Manager
Posts: 11583
Joined: 2003-02-27 01:00
Location: Hamburg

Re: FreeBSD 10.1 Upgrades Automatisieren

Post by Joe User » 2015-02-20 19:42

Dein Script ist eigentlich sehr nice, allerdings hast Du Dein System nach meinem HowTo aufgesetzt und somit fällt der Klickibunti-Komfort mit pkg und freebsd-update weg. So müsstest Du Dein Script umschreiben, damit es wie gewünscht funktioniert:

Code: Select all

#!/bin/sh
cd /var/log/
tar -czf freebsd-update.tgz freebsd-update.log && touch /var/log/freebsd-update.log
LOG_FILE="/var/log/freebsd-update.log"
echo "Starting updates: `date`" | tee -a ${LOG_FILE}
echo "***"
/usr/sbin/portsnap fetch update | tee -a ${LOG_FILE}
echo "***"
/usr/local/sbin/portupgrade -vDuckrfa | tee -a ${LOG_FILE}
echo "***"
echo "Finished updates: `date`" | tee -a ${LOG_FILE}



Mein eigenes Script sieht dagegen so aus:

Code: Select all

#!/bin/sh

# update portstree
portsnap fetch update

# create list of ports to update
echo '#!/bin/sh' > /tmp/update-ports
portversion -c -C "-f -r" >> /tmp/update-ports

# update ports
chmod 0755 /tmp/update-ports
/bin/sh /tmp/update-ports

# clean up
rm -f /tmp/update-ports

# clean up portstree
portsclean -CDDL

exit 0

Buildlogs werden hiermit gemäss /usr/local/etc/pkgtools.conf automatisch von portupgrade pro Port in /var/tmp erzeugt, erspart den Hack mit tee.
Der Rest ergibt sich eigentlich aus den manpages
man portupgrade
man portversion
man portsclean
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: FreeBSD 10.1 Upgrades Automatisieren

Post by daemotron » 2015-02-20 19:57

Hmm, ich würde auf keinen Fall ein automatisches Update starten, nachdem der Ports Tree aktualisiert wurde - zwischen Portsnap und portmaster oder portupgrade gehört unbedingt ein Blick in /usr/ports/UPDATING - oft genug sind da Fallen drin (wie z. B. Versionssprünge bei Libraries, die ein Reverse Update erfordern, oder Umbenennungen oder Upgrades, die manuell kuriert werden wollen).

Da hier eine Automatisierung nicht gerade leicht ist, habe ich mittlerweile ein komplett anderes Setup aufgebaut: In einem separaten Jail läuft Poudriere (stoße ich manuell an), das mir die benötigten Ports durchbaut. Poudriere kommt mit Reverse Dependencies, Library Upgrades etc. wesentlich besser zurecht als Portmaster oder Portupgrade - trotzdem lese ich mir UPDATING durch, bevor ich

Code: Select all

pourdriere bulk
losjage. Danach reicht dann ein simples

Code: Select all

pkg update && pkg upgrade
in den übrigen Jails, ggf. Konfigurationsdateien anpassen, fertig.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time

User avatar
Joe User
Project Manager
Project Manager
Posts: 11583
Joined: 2003-02-27 01:00
Location: Hamburg

Re: FreeBSD 10.1 Upgrades Automatisieren

Post by Joe User » 2015-02-20 21:01

Erweiterte Version welche die aktuelle /var/ports/UPDATING mit der beim letzten Durchlauf kopierten per diff vergleicht und so den Überblick über wichtige Neuerungen erleichtert. Zudem wird abgefragt, ob die Ports nach dem diff upgedatet werden sollen:

Code: Select all

#!/bin/sh

cp -f /usr/ports/UPDATING /var/tmp/ports-UPDATING

portsnap fetch update

diff -uwbB /var/tmp/ports-UPDATING /usr/ports/UPDATING > /tmp/ports-UPDATING

less /tmp/ports-UPDATING

read -p "Update ports now? [y/N] " REPLY

if [ "x$REPLY" != "xy" ]
then
  exit 0
fi

echo '#!/bin/sh' > /tmp/update-ports

portversion -c -C "-f -r" >> /tmp/update-ports

chmod 0755 /tmp/update-ports

/bin/sh /tmp/update-ports

rm -f /tmp/update-ports /tmp/ports-UPDATING

portsclean -CDDL

exit 0

Geht natürlich noch eleganter, aber es tut erstmal was es soll.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

User avatar
Proteus
Posts: 278
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Re: FreeBSD 10.1 Upgrades Automatisieren

Post by Proteus » 2015-02-20 21:07

daemotron wrote:Hmm, ich würde auf keinen Fall ein automatisches Update starten, nachdem der Ports Tree aktualisiert wurde - zwischen Portsnap und portmaster oder portupgrade gehört unbedingt ein Blick in /usr/ports/UPDATING - oft genug sind da Fallen drin (wie z. B. Versionssprünge bei Libraries, die ein Reverse Update erfordern, oder Umbenennungen oder Upgrades, die manuell kuriert werden wollen).


Danke für den Hinweis, ich habe gemerkt das mein Webmin über SSL nicht mehr erreichbar ist, es gibt eine Aktualisierte PERL und damit will Webmin nicht mehr! :(

Von pourdriere habe ich erst kürzlich was gelesen, daher werde ich mir das mal genauer anschauen.
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"

User avatar
Proteus
Posts: 278
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Re: FreeBSD 10.1 Upgrades Automatisieren

Post by Proteus » 2015-02-20 21:10

Code: Select all

#!/bin/sh
cp -f /usr/ports/UPDATING /var/tmp/ports-UPDATING
portsnap fetch update
diff -uwbB /var/tmp/ports-UPDATING /usr/ports/UPDATING > /tmp/ports-UPDATING
less /tmp/ports-UPDATING
read -p "Update ports now? [y/N] " REPLY

if [ "x$REPLY" != "xy" ]
then
  exit 0
fi

echo '#!/bin/sh' > /tmp/update-ports
portversion -c -C "-f -r" >> /tmp/update-ports
chmod 0755 /tmp/update-ports
/bin/sh /tmp/update-ports
rm -f /tmp/update-ports
portsclean -CDDL
exit 0


Oh danke das du meins auch Nice findest, aber ich habe es mal im Netz gefunden und ein wenig abgeändert. Danke für das Script das ich gleich mal testen werde. :)
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: FreeBSD 10.1 Upgrades Automatisieren

Post by daemotron » 2015-02-21 00:15

Proteus wrote:Von pourdriere habe ich erst kürzlich was gelesen, daher werde ich mir das mal genauer anschauen.

Wenn ich es in diesem Jahrhundert noch schaffe, meinen Server fertig zu migrieren, dann schreib ich das Setup mal auf - hab ich schon seit ner halben Ewigkeit vor, bin aber noch nicht zu gekommen.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time

User avatar
Proteus
Posts: 278
Joined: 2013-04-14 05:08
Location: Holzgerlingen

Re: FreeBSD 10.1 Upgrades Automatisieren

Post by Proteus » 2015-02-21 00:58

daemotron wrote:
Proteus wrote:Von pourdriere habe ich erst kürzlich was gelesen, daher werde ich mir das mal genauer anschauen.

Wenn ich es in diesem Jahrhundert noch schaffe, meinen Server fertig zu migrieren, dann schreib ich das Setup mal auf - hab ich schon seit ner halben Ewigkeit vor, bin aber noch nicht zu gekommen.


hehe, ich bin momentan auch mehr am rumprobieren, mein Blog sollte eigentlich seit dem 01.01.2015 stehen! *g*
LG
Proti

https://phoenix-blog.de

"Die Kamera wird bei hohen ISO Werten aber rauschen. Nichts ahnend hielt er sich die Kamera ans Ohr!"