Date: Wed, 7 Jun 2017 15:40:07 +0200 From: Luca Pizzamiglio <luca.pizzamiglio@gmail.com> To: freebsd-pkg@freebsd.org Subject: pkg rollback Message-ID: <CAB88xy_%2BTC4ErxY9UVSkoLH1eeiWNO7Ho%2B_848b09Z_GmDTU-A@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi all, I'm trying to figure out how an automatic process to upgrade packages on production machines can look like. A kind of: # pkg upgrade # restart services # if everything not OK # rollback # restart services I'm considering a package repository that is not guaranteeing 100% stability, like `latest`. Even intercepting events needing manual intervention (i.e. reported by UPDATING), a blind pkg upgrade can break the web application running on top. So, I was thinking if it's possible to perform some kind of rollback. to proof if it's possible, I wrote a shell scripts with two features (it helped me a lot to understand how pkg works): # backup ## backup the repo sqlite database ## run `pkg update` and determine all actions would be performed by `pkg upgrade` (a kind of `pkg upgrade` simulation) ## backup all packages from the cache that would be replaced by `pkg upgrade` ## download all new packages to determine potentially conflicts ## backup all packages from the cache that would be replaced by `pkg upgrade` (after determined conflicts) ## restore the repo sqlite database # rollback ## restore the repo sqlite database ## install all previously backup'ed packages Another approach, less complex, but I guess even valid, could be: # backup (or snapshot) ## backup of the repo sqlite database ## take a snapshot of all installed packages # rollback (a previously stored snapshot) ## restore the repo sqlite database ## reinstall all previously backup'ed packages Adding two features [snapshot and rollback] to pkg(8), the automated upgrade process would become: # pkg snapshot # pkg upgrade # restart services # if everything not OK # rollback # restart services What do you think? What am I missing? Ideas, suggestions and feedback are welcome, so, please, feel free to reply. Best regards, Luca PS: I'd use `pkg snapshot`, because `pkg backup` already exist and it has another meaning. PS2: In some case, `zfs snapshot` could work as well, but it's not always possible PS3: if feebacks are positive, I'd like to implement those features
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAB88xy_%2BTC4ErxY9UVSkoLH1eeiWNO7Ho%2B_848b09Z_GmDTU-A>