A set of procedures is described for computing and updating an LU factorization of a sparse matrix A, where A may be square (possibly singular) or rectangular. The procedures include a Markowitz factorization and a Bartels-Golub update, similar to those of Reid (1976, 1982). The updates provided are addition, deletion or replacement of a row or column of A, and rank-one modification. (Previously, column replacement has been the only update available). Various design features of the implementation (LUSOL) are described, and computational comparisons are made with the LA05 and MA28 packages of Reid (1976) and Duff (1977).