---
title: "Installing `MortalityLaws`"
author: "Marius D. Pascariu"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteIndexEntry{Installing-MortalityLaws}
  %\VignetteEncoding{UTF-8}
bibliography: Mlaw_Refrences.bib
biblio-style: "apalike"
link-citations: true
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
```

The `MortalityLaws` package can be installed from either **CRAN** (the official R package repository) or **GitHub** (the development version). Most users will prefer the first option, as it provides a stable, tested release. The sections below explain both approaches.

# Install the stable version from CRAN

The easiest way to get `MortalityLaws` is to install it from CRAN. This gives you the most recent stable release that has passed R's quality checks.

1. **Make sure you have a recent version of R** (≥ 3.5 is recommended). You can check your R version at the console:
   ```r
   R.version.string
   ```

2. **Install the package** by running the following command in your R console:
   ```{r, eval=FALSE}
   install.packages("MortalityLaws")
   ```

   This will automatically download and install the package along with its required dependencies.

3. **Load the package** and verify that it works:
   ```{r, eval=FALSE}
   library(MortalityLaws)
   help(package = "MortalityLaws")
   ```

# Install the development version from GitHub

If you want to try the latest features, bug fixes, or contribute to the development of `MortalityLaws`, you can install the development version directly from [GitHub](https://github.com/mpascariu/MortalityLaws). This version may contain changes that have not yet been submitted to CRAN.

### Step 1: Install `devtools`

The `devtools` package provides the `install_github()` function needed to fetch and install packages from GitHub. Install it from CRAN:

```{r, eval=FALSE}
install.packages("devtools")
```

**What `devtools` does:** It automates the process of downloading source code from GitHub, resolving dependencies, compiling (if needed), and installing the package into your R library.

### Step 2: Set up a development environment

To install packages from source (which is what GitHub packages are), your system needs a compiler and associated tools:

- **Windows:** Install [Rtools](https://cran.r-project.org/bin/windows/Rtools/). Choose the version that matches your R version. Rtools provides the `gcc` compiler and `make` utility required to build R packages from source.
  
- **macOS:** Install **Xcode** from the Mac App Store, or at minimum the Command Line Tools for Xcode. You can install the command line tools alone by running `xcode-select --install` in the Terminal.

- **Linux (Ubuntu/Debian):** Install a compiler and development libraries. A typical command is:
  ```bash
  sudo apt-get install build-essential libcurl4-openssl-dev libssl-dev libxml2-dev
  ```
  The exact packages may vary by distribution. The key requirement is that `gcc` (or `clang`) and `make` are available.

> **Why is this needed?** Unlike CRAN binaries (pre-compiled), GitHub packages are distributed as source code. R must compile them locally, which requires a development toolchain.

### Step 3: Install `MortalityLaws` from GitHub

Once `devtools` is installed and your development environment is ready, run:

```{r, eval=FALSE}
devtools::install_github("mpascariu/MortalityLaws")
```

This command:
1. Clones the repository from `https://github.com/mpascariu/MortalityLaws`.
2. Builds the package from source.
3. Installs it into your R library.

### Step 4: Verify the installation

After installation, load the package and check that everything works:

```{r, eval=FALSE}
library(MortalityLaws)
availableLaws()   # list all implemented mortality laws
```

---

# Updating an existing installation

- **CRAN version:** Simply re-run `install.packages("MortalityLaws")` periodically to get the latest stable release.
- **GitHub version:** Run `devtools::install_github("mpascariu/MortalityLaws")` again to pull and install the most recent commits.

---

You are now ready to use `MortalityLaws`! Happy modelling.

For further guidance, check the other vignettes (e.g., the introductory vignette) and the help pages:

```{r, eval=FALSE}
browseVignettes("MortalityLaws")   # view available vignettes
?MortalityLaw                       # help for the main fitting function
```

# References
