Abstract
Safe and efficient deployment of software components is an important aspect of CBSE. The Nix deployment system enables side-by-side deployment of different versions and variants of components, complete installation, safe upgrades, and safe uninstalls through garbage collection. It accomplishes this through a purely functional deployment model, meaning that the file system content of a component only depends on the inputs used to build it, and never changes afterwards. An apparent downside to this model is that upgrading “fundamental” components used as build inputs by many other components becomes expensive, since all of these must be rebuilt and redeployed. In this paper we show that binary patching between sets of components enables efficient deployment of upgrades in the purely functional model, transparently to users. Sequences of patches can be combined automatically to enable upgrading between arbitrary versions. The approach was empirically validated.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Carzaniga, A., Fuggetta, A., Hall, R.S., Heimbigner, D., van der Hoek, A., Wolf, A.L.: A characterization framework for software deployment technologies. Technical Report CU-CS-857-98, Dept. of Computer Science, University of Colorado (1998)
Szyperski, C.: Component technology—what, where, and how? In: Proceedings of the 25th International Conference on Software Engineering (ICSE 2003), pp. 684–693 (2003)
Dolstra, E., Visser, E., de Jonge, M.: Imposing a memory management discipline on software deployment. In: Proceedings of the 26th International Conference on Software Engineering (ICSE 2004), pp. 583–592. IEEE Computer Society, Los Alamitos (2004)
Dolstra, E., de Jonge, M., Visser, E.: Nix: A safe and policy-free system for software deployment. In: Damon, L. (ed.) 18th Large Installation System Administration Conference (LISA 2004), Atlanta, Georgia, USA, USENIX, pp. 79–92 (2004)
Feldman, S.I.: Make—a program for maintaining computer programs. Software— Practice and Experience 9, 255–265 (1979)
Foster-Johnson, E.: Red Hat RPM Guide. John Wiley and Sons, Chichester (2003)
TIS Committee: Tool Interface Specification (TIS) Executable and Linking Format (ELF) Specification, Version 1.2, http://www.x86.org/ftp/manuals/tools/elf.pdf
TraCE Project: Nix deployment system (2005), http://www.cs.uu.nl/groups/ST/Trace/Nix
FreeBSD Project: FreeBSD Ports Collection (2005), http://www.freebsd.org/ports/
Gentoo Project: Gentoo Linux (2005), http://www.gentoo.org/
Adler, M., Gailly, J.: Zlib advisory 2002-03-11 (2002), http://www.gzip.org/zlib/advisory-2002-03-11.txt
Peyton Jones, S. (ed.): Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge (2004)
Percival, C.: Binary diff/patch utility (2003), http://www.daemonology.net/bsdiff/
Stevens, W.R.: Advanced Programming in the UNIX Environment. Addison-Wesley, Reading (1993)
Microsoft Corporation: Binary delta compression. Whitepaper (2002)
Percival, C.: An automated binary security update system for FreeBSD. In: Proceedings of BSDCON 2003, USENIX (2003)
Larsson, N.J., Sadakane, K.: Faster suffix sorting. Technical Report LU-CS-TR- 99-214, Lund University (1999)
Trendafilov, D., Memon, N., Suel, T.: zdelta: An efficient delta compression tool. Technical Report TR-CIS-2002-02, Polytechnic University (2002)
Hunt, J.J., Vo, K.P., Tichy, W.F.: Delta algorithms: An empirical analysis. ACM Transactions on Software Engineering and Methodology 7, 192–214 (1998)
Korn, D., Vo, K.: vdelta: Differencing and compression. In: Krishnamurthy, B. (ed.) Practical Reusable UNIX Software, John Wiley & Sons, Chichester (1995)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dolstra, E. (2005). Efficient Upgrading in a Purely Functional Component Deployment Model. In: Heineman, G.T., Crnkovic, I., Schmidt, H.W., Stafford, J.A., Szyperski, C., Wallnau, K. (eds) Component-Based Software Engineering. CBSE 2005. Lecture Notes in Computer Science, vol 3489. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11424529_15
Download citation
DOI: https://doi.org/10.1007/11424529_15
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-25877-3
Online ISBN: 978-3-540-32049-4
eBook Packages: Computer ScienceComputer Science (R0)