diff --git a/11_install_system_programs.Rmd b/11_install_system_programs.Rmd index 71ac8af9c75fc844949f3c1fd5424a7d2f022d0f..5b57f0634909205e209cbd1ce95040f89a380a0e 100644 --- a/11_install_system_programs.Rmd +++ b/11_install_system_programs.Rmd @@ -34,21 +34,21 @@ klippy::klippy( Objective: Learn how to install programs in GNU/Linux -As we have seen in the [4 unix file system](http://perso.ens-lyon.fr/laurent.modolo/unix/4_unix_file_system.html#lib-and-usrlib) session, programs are files that contain instruction for the computer to do things. Those files can be in binary or text format (with a [shebang](http://perso.ens-lyon.fr/laurent.modolo/unix/9_batch_processing.html#shebang)). Any of those files, present in a folder of the [**PATH**](http://perso.ens-lyon.fr/laurent.modolo/unix/9_batch_processing.html#path) variable are executable anywhere by the user. For system wide installation, the program files are copied within shared folder path containained in the [**PATH**](http://perso.ens-lyon.fr/laurent.modolo/unix/9_batch_processing.html#path) variable. +As we have seen in the [4 Unix file system](http://perso.ens-lyon.fr/laurent.modolo/unix/4_unix_file_system.html#lib-and-usrlib) session, programs are files that contain instruction for the computer to do things. Those files can be in binary or text format (with a [shebang](http://perso.ens-lyon.fr/laurent.modolo/unix/9_batch_processing.html#shebang)). Any of those files, present in a folder of the [**PATH**](http://perso.ens-lyon.fr/laurent.modolo/unix/9_batch_processing.html#path) variable are executable anywhere by the user. For system wide installation, the program files are copied within shared folder path containained in the [**PATH**](http://perso.ens-lyon.fr/laurent.modolo/unix/9_batch_processing.html#path) variable. Developers don’t want to reinvent the wheel each time they want to write complex instruction in their programs, this is why they use shared library of pre-written complex instruction. This allows for quicker development, fewer bugs (we only have to debug the library once and use it many times), and also [better memory management](http://perso.ens-lyon.fr/laurent.modolo/unix/6_unix_processes.html#processes-tree) (we only load the library once and it can be used by different programs). # Package Manager -However, interdependencies between programs and libraries can be a nightmare to handle manually this is why most of the time when you install a program you will use a [package manager](https://en.wikipedia.org/wiki/Package_manager). [Package manager](https://en.wikipedia.org/wiki/Package_manager) are system tools that will handle automatically all the dependencies of a program. They rely on **repositories** of programs and library which contains all the information about the trees of dependence and the corresponding files (**packages**). +However, interdependencies between programs and libraries can be a nightmare to handle manually this is why most of the time when you install a program you will use a [package manager](https://en.wikipedia.org/wiki/Package_manager). [Package managers](https://en.wikipedia.org/wiki/Package_manager) are system tools that will handle automatically all the dependencies of a program. They rely on **repositories** of programs and library which contains all the information about the trees of dependence and the corresponding files (**packages**). -System-wide installation steps: +Systemwide installation steps: - The user asks the package manager to install a program - The **package manager** queries its repository lists to search for the most recent **package** version of the program (or a specific version) - The **package manager** construct the dependency tree of the program - The **package manager** check that the new dependency tree is compatible with every other installed program -- The **package manager** install the program **package** and all it’s dependencies **packages** in their correct version +- The **package manager** install the program **package** and all its dependencies **packages** in their correct version The main difference between GNU/Linux distribution is the package manager they use @@ -71,7 +71,7 @@ docker run -it --volume /:/root/chroot alpine sh -c "chroot /root/chroot /bin/ba ## Installing R -**R** is a complex program that relies on loots of dependencies. Your current VM run on Ubuntu, so we are going to use the `apt` tool (`apt-get` is the older version of the `apt` command, `synaptic` is a graphical interface for `apt-get`) +**R** is a complex program that relies on loots of dependencies. Your current VM run on Ubuntu, so we are going to use the `apt` tool (`apt-get` is the older version of the `apt` command, `synaptic` is a graphical interface for `apt-get`). You can check the **r-base** package dependencies on the website [packages.ubuntu.com](https://packages.ubuntu.com/focal/r-base). Not too much dependency ? Check the sub-package **r-base-core**. @@ -152,7 +152,7 @@ If it’s not a good idea to have different **package manager** on the same syst - `install.packages` for R - ... -These **package managers** allows your to make installation local to the user, which is advisable to avoid any conflict with the **packages manager** of the system. +These **package managers** allow you to make installation local to the user, which is advisable to avoid any conflict with the **packages manager** of the system. For example, you can use the following command to install `glances` system wide with `pip` @@ -198,7 +198,7 @@ wget https://github.com/Automattic/simplenote-electron/archive/v2.7.0.tar.gz You can use the command `tar -xvf` to extract this archive -When you go into the `simplenote-electron-2.7.0` folder, you can see a `Makefile` this means that you can use the `make` command to build Simplenote from those files. `make` Is a tool that read recipes (`Makefiles`) to build programs. +When you go into the `simplenote-electron-2.7.0` folder, you can see a `Makefile` this means that you can use the `make` command to build Simplenote from those files. `make` is a tool that read recipes (`Makefiles`) to build programs. You can try to install `node` and `npx` with `apt`. What happened ? @@ -258,5 +258,5 @@ Read the `README` file of the [fastp](https://github.com/OpenGene/fastp) program > - make to build programs from sources -Installing programs and maintain different versions of a program on the same system, is a difficult task. In the next session, we will learn how to use [virtualization](./12_virtualization.html) to facilitate our job. +Installing programs and maintain different versions of a program on the same system is a difficult task. In the next session, we will learn how to use [virtualization](./12_virtualization.html) to facilitate our job. diff --git a/12_virtualization.Rmd b/12_virtualization.Rmd index 095951d79595971601c5eda4514550d3ede842b1..e6e442c55ac844a29a5aa3c7e7b37b7ae0a88062 100644 --- a/12_virtualization.Rmd +++ b/12_virtualization.Rmd @@ -79,13 +79,13 @@ sudo apt install virtualbox sudo usermod -G vboxusers -a $USER ``` -The first things that we need to do with virtual box is to create a new virtual machine. We want to install Ubuntu 20.04 on it. +The first thing that we need to do with virtual box is to create a new virtual machine. We want to install Ubuntu 20.04 on it. ```sh VBoxManage createvm --name Ubuntu20.04 --register ``` -We the create a virtual hard disk for this VM: +We create a virtual hard disk for this VM: ```sh VBoxManage createhd --filename Ubuntu20.04 --size 14242 @@ -103,7 +103,7 @@ We set the virtual RAM VBoxManage modifyvm Ubuntu20.04 --memory 1024 ``` -We add an vitual IDE periferic storage on which we can boot on +We add a virtual IDE peripheric storage on which we can boot on. ```sh VBoxManage storagectl Ubuntu20.04 --name IDE --add ide --controller PIIX4 --bootable on @@ -138,7 +138,7 @@ You can use the `systemctl` command and the `/` key to search for this daemon. Like VirtualBox, you can install system programs within a container. -Prebuilt container can be found on different sources like [the docker hub](https://hub.docker.com/) or [the biocontainers registry](https://biocontainers.pro/registry). +Prebuilt containers can be found on different sources like [the docker hub](https://hub.docker.com/) or [the biocontainers registry](https://biocontainers.pro/registry). Launching a container