Skip to main content

Efficient Upgrading in a Purely Functional Component Deployment Model

  • Conference paper
Book cover Component-Based Software Engineering (CBSE 2005)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 3489))

Included in the following conference series:

  • 744 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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)

    Google Scholar 

  2. Szyperski, C.: Component technology—what, where, and how? In: Proceedings of the 25th International Conference on Software Engineering (ICSE 2003), pp. 684–693 (2003)

    Google Scholar 

  3. 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)

    Chapter  Google Scholar 

  4. 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)

    Google Scholar 

  5. Feldman, S.I.: Make—a program for maintaining computer programs. Software— Practice and Experience 9, 255–265 (1979)

    Article  MATH  Google Scholar 

  6. Foster-Johnson, E.: Red Hat RPM Guide. John Wiley and Sons, Chichester (2003)

    Google Scholar 

  7. TIS Committee: Tool Interface Specification (TIS) Executable and Linking Format (ELF) Specification, Version 1.2, http://www.x86.org/ftp/manuals/tools/elf.pdf

  8. TraCE Project: Nix deployment system (2005), http://www.cs.uu.nl/groups/ST/Trace/Nix

  9. FreeBSD Project: FreeBSD Ports Collection (2005), http://www.freebsd.org/ports/

  10. Gentoo Project: Gentoo Linux (2005), http://www.gentoo.org/

  11. Adler, M., Gailly, J.: Zlib advisory 2002-03-11 (2002), http://www.gzip.org/zlib/advisory-2002-03-11.txt

  12. Peyton Jones, S. (ed.): Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge (2004)

    Google Scholar 

  13. Percival, C.: Binary diff/patch utility (2003), http://www.daemonology.net/bsdiff/

  14. Stevens, W.R.: Advanced Programming in the UNIX Environment. Addison-Wesley, Reading (1993)

    Google Scholar 

  15. Microsoft Corporation: Binary delta compression. Whitepaper (2002)

    Google Scholar 

  16. Percival, C.: An automated binary security update system for FreeBSD. In: Proceedings of BSDCON 2003, USENIX (2003)

    Google Scholar 

  17. Larsson, N.J., Sadakane, K.: Faster suffix sorting. Technical Report LU-CS-TR- 99-214, Lund University (1999)

    Google Scholar 

  18. Trendafilov, D., Memon, N., Suel, T.: zdelta: An efficient delta compression tool. Technical Report TR-CIS-2002-02, Polytechnic University (2002)

    Google Scholar 

  19. 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)

    Article  Google Scholar 

  20. Korn, D., Vo, K.: vdelta: Differencing and compression. In: Krishnamurthy, B. (ed.) Practical Reusable UNIX Software, John Wiley & Sons, Chichester (1995)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics