Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 9c452b9a authored by Faure Adrien's avatar Faure Adrien
Browse files

[TutoNix]mer. juin 26 10:08:26 CEST 2019

parent ad321853
No related branches found
No related tags found
No related merge requests found
figures/photo5803088072525590515.jpg

73.9 KiB

figures/store.png

238 KiB

\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\providecommand \oddpage@label [2]{}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {1}{1}}}
\newlabel{toc<1>}{{2}{3}{}{Doc-Start}{}}
\@writefile{snm}{\beamer@slide {toc<1>}{2}}
\newlabel{toc}{{2}{3}{}{Doc-Start}{}}
\@writefile{snm}{\beamer@slide {toc}{2}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {2}{2}}}
\@writefile{toc}{\beamer@sectionintoc {1}{Experimentation From a Software Point of View}{3}{0}{1}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {1}{2}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {1}{2}}}
\@writefile{nav}{\headcommand {\sectionentry {1}{Experimentation From a Software Point of View}{3}{Experimentation From a Software Point of View}{0}}}
\@writefile{nav}{\headcommand {\slideentry {1}{0}{1}{3/3}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {3}{3}}}
\@writefile{nav}{\headcommand {\slideentry {1}{0}{2}{4/4}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {4}{4}}}
\@writefile{toc}{\beamer@sectionintoc {2}{Nix}{5}{0}{2}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {3}{4}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {3}{4}}}
\@writefile{nav}{\headcommand {\sectionentry {2}{Nix}{5}{Nix}{0}}}
\@writefile{nav}{\headcommand {\slideentry {2}{0}{1}{5/6}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {5}{6}}}
\@writefile{nav}{\headcommand {\slideentry {2}{0}{2}{7/7}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {7}{7}}}
\@writefile{nav}{\headcommand {\slideentry {2}{0}{3}{8/8}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {8}{8}}}
\@writefile{nav}{\headcommand {\slideentry {2}{0}{4}{9/10}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {9}{10}}}
\@writefile{toc}{\beamer@subsectionintoc {2}{1}{Expression Language}{11}{0}{2}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {5}{10}}}
\@writefile{nav}{\headcommand {\beamer@subsectionentry {0}{2}{1}{11}{Expression Language}}}
\@writefile{nav}{\headcommand {\slideentry {2}{1}{1}{11/11}{Expression Language}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {11}{11}}}
\@writefile{nav}{\headcommand {\slideentry {2}{1}{2}{12/12}{Expression Language}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {12}{12}}}
\@writefile{toc}{\beamer@subsectionintoc {2}{2}{Package Manager}{13}{0}{2}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {11}{12}}}
\@writefile{nav}{\headcommand {\beamer@subsectionentry {0}{2}{2}{13}{Package Manager}}}
\@writefile{nav}{\headcommand {\slideentry {2}{2}{1}{13/13}{Package Manager}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {13}{13}}}
\@writefile{toc}{\beamer@sectionintoc {3}{Nix Structure}{14}{0}{3}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {5}{13}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {13}{13}}}
\@writefile{nav}{\headcommand {\sectionentry {3}{Nix Structure}{14}{Nix Structure}{0}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{1}{14/14}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {14}{14}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{2}{15/17}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {15}{17}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{3}{18/18}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {18}{18}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{4}{19/19}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {19}{19}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{5}{20/20}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {20}{20}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{6}{21/21}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {21}{21}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{7}{22/22}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {22}{22}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{8}{23/23}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {23}{23}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{9}{24/25}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {24}{25}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{10}{26/26}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {26}{26}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{11}{27/27}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {27}{27}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{12}{28/28}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {28}{28}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{13}{29/29}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {29}{29}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{14}{30/30}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {30}{30}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{15}{31/31}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {31}{31}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{16}{32/32}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {32}{32}}}
\global\@namedef{mainendframenumber}{27}
\@writefile{nav}{\headcommand {\gdef \insertmainframenumber {27}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{17}{33/33}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {33}{33}}}
\@writefile{nav}{\headcommand {\partentry {\translate {Appendix}}{1}}}
\@writefile{nav}{\headcommand {\beamer@partpages {1}{33}}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {14}{33}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {14}{33}}}
\@writefile{nav}{\headcommand {\beamer@appendixpages {34}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{18}{34/34}{}{1}}}
\@writefile{nav}{\headcommand {\beamer@framepages {34}{34}}}
\@writefile{nav}{\headcommand {\beamer@partpages {34}{35}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {34}{35}}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {34}{35}}}
\@writefile{nav}{\headcommand {\beamer@documentpages {35}}}
\@writefile{nav}{\headcommand {\gdef \inserttotalframenumber {2}}}
\global\@namedef{appendixtotalframenumber}{2}
\global\@namedef{inserttotalframenumber}{27}
\@writefile{nav}{\headcommand {\gdef \inserttotalframenumber {27}}}
\@writefile{nav}{\headcommand {\gdef \appendixtotalframenumber {2}}}
\@writefile{nav}{\headcommand {\slideentry {3}{0}{19}{35/35}{}{1}}}
\@writefile{nav}{\headcommand {\beamer@framepages {35}{35}}}
slides.log 0 → 100644
This diff is collapsed.
\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}
\headcommand {\beamer@framepages {1}{1}}
\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}
\headcommand {\beamer@framepages {2}{2}}
\headcommand {\beamer@sectionpages {1}{2}}
\headcommand {\beamer@subsectionpages {1}{2}}
\headcommand {\sectionentry {1}{Experimentation From a Software Point of View}{3}{Experimentation From a Software Point of View}{0}}
\headcommand {\slideentry {1}{0}{1}{3/3}{}{0}}
\headcommand {\beamer@framepages {3}{3}}
\headcommand {\slideentry {1}{0}{2}{4/4}{}{0}}
\headcommand {\beamer@framepages {4}{4}}
\headcommand {\beamer@sectionpages {3}{4}}
\headcommand {\beamer@subsectionpages {3}{4}}
\headcommand {\sectionentry {2}{Nix}{5}{Nix}{0}}
\headcommand {\slideentry {2}{0}{1}{5/6}{}{0}}
\headcommand {\beamer@framepages {5}{6}}
\headcommand {\slideentry {2}{0}{2}{7/7}{}{0}}
\headcommand {\beamer@framepages {7}{7}}
\headcommand {\slideentry {2}{0}{3}{8/8}{}{0}}
\headcommand {\beamer@framepages {8}{8}}
\headcommand {\slideentry {2}{0}{4}{9/10}{}{0}}
\headcommand {\beamer@framepages {9}{10}}
\headcommand {\beamer@subsectionpages {5}{10}}
\headcommand {\beamer@subsectionentry {0}{2}{1}{11}{Expression Language}}
\headcommand {\slideentry {2}{1}{1}{11/11}{Expression Language}{0}}
\headcommand {\beamer@framepages {11}{11}}
\headcommand {\slideentry {2}{1}{2}{12/12}{Expression Language}{0}}
\headcommand {\beamer@framepages {12}{12}}
\headcommand {\beamer@subsectionpages {11}{12}}
\headcommand {\beamer@subsectionentry {0}{2}{2}{13}{Package Manager}}
\headcommand {\slideentry {2}{2}{1}{13/13}{Package Manager}{0}}
\headcommand {\beamer@framepages {13}{13}}
\headcommand {\beamer@sectionpages {5}{13}}
\headcommand {\beamer@subsectionpages {13}{13}}
\headcommand {\sectionentry {3}{Nix Structure}{14}{Nix Structure}{0}}
\headcommand {\slideentry {3}{0}{1}{14/14}{}{0}}
\headcommand {\beamer@framepages {14}{14}}
\headcommand {\slideentry {3}{0}{2}{15/17}{}{0}}
\headcommand {\beamer@framepages {15}{17}}
\headcommand {\slideentry {3}{0}{3}{18/18}{}{0}}
\headcommand {\beamer@framepages {18}{18}}
\headcommand {\slideentry {3}{0}{4}{19/19}{}{0}}
\headcommand {\beamer@framepages {19}{19}}
\headcommand {\slideentry {3}{0}{5}{20/20}{}{0}}
\headcommand {\beamer@framepages {20}{20}}
\headcommand {\slideentry {3}{0}{6}{21/21}{}{0}}
\headcommand {\beamer@framepages {21}{21}}
\headcommand {\slideentry {3}{0}{7}{22/22}{}{0}}
\headcommand {\beamer@framepages {22}{22}}
\headcommand {\slideentry {3}{0}{8}{23/23}{}{0}}
\headcommand {\beamer@framepages {23}{23}}
\headcommand {\slideentry {3}{0}{9}{24/25}{}{0}}
\headcommand {\beamer@framepages {24}{25}}
\headcommand {\slideentry {3}{0}{10}{26/26}{}{0}}
\headcommand {\beamer@framepages {26}{26}}
\headcommand {\slideentry {3}{0}{11}{27/27}{}{0}}
\headcommand {\beamer@framepages {27}{27}}
\headcommand {\slideentry {3}{0}{12}{28/28}{}{0}}
\headcommand {\beamer@framepages {28}{28}}
\headcommand {\slideentry {3}{0}{13}{29/29}{}{0}}
\headcommand {\beamer@framepages {29}{29}}
\headcommand {\slideentry {3}{0}{14}{30/30}{}{0}}
\headcommand {\beamer@framepages {30}{30}}
\headcommand {\slideentry {3}{0}{15}{31/31}{}{0}}
\headcommand {\beamer@framepages {31}{31}}
\headcommand {\slideentry {3}{0}{16}{32/32}{}{0}}
\headcommand {\beamer@framepages {32}{32}}
\headcommand {\gdef \insertmainframenumber {27}}
\headcommand {\slideentry {3}{0}{17}{33/33}{}{0}}
\headcommand {\beamer@framepages {33}{33}}
\headcommand {\partentry {\translate {Appendix}}{1}}
\headcommand {\beamer@partpages {1}{33}}
\headcommand {\beamer@sectionpages {14}{33}}
\headcommand {\beamer@subsectionpages {14}{33}}
\headcommand {\beamer@appendixpages {34}}
\headcommand {\slideentry {3}{0}{18}{34/34}{}{1}}
\headcommand {\beamer@framepages {34}{34}}
\headcommand {\beamer@partpages {34}{35}}
\headcommand {\beamer@subsectionpages {34}{35}}
\headcommand {\beamer@sectionpages {34}{35}}
\headcommand {\beamer@documentpages {35}}
\headcommand {\gdef \inserttotalframenumber {2}}
\headcommand {\gdef \inserttotalframenumber {27}}
\headcommand {\gdef \appendixtotalframenumber {2}}
\headcommand {\slideentry {3}{0}{19}{35/35}{}{1}}
\headcommand {\beamer@framepages {35}{35}}
\BOOKMARK [2][]{Outline0.1}{Experimentation From a Software Point of View}{}% 1
\BOOKMARK [2][]{Outline0.2}{Nix}{}% 2
\BOOKMARK [3][]{Outline0.2.1.11}{Expression Language}{Outline0.2}% 3
\BOOKMARK [3][]{Outline0.2.2.13}{Package Manager}{Outline0.2}% 4
\BOOKMARK [2][]{Outline0.3}{Nix Structure}{}% 5
\BOOKMARK [1][]{Outline1}{Appendix}{}% 6
No preview for this file type
\beamer@slide {toc<1>}{2}
\beamer@slide {toc}{2}
......@@ -104,7 +104,8 @@
\begin{frame}{Experimentation Codes}
\begin{itemize}
\item Experimentations source codes are often \emph{Had-hoc}.
\item Experimentations codes are often \emph{ad hoc}.
\note{Publish and perish\\}
\item Few or no indications describing how to build them
\note{Relevant compilation options, dependencies...}
\item Few informations about the execution.
......@@ -114,9 +115,9 @@
\begin{frame}{The Problem}
\begin{itemize}
\item Hinder the repeatability of the experimentations
\item Hinder the repeatability of the experimentations.
\note{Hard to verify what you did, for reviewer for instance.}
\item Hard to continue someone else work
\item Hard to continue someone else work.
\note{Trying other inputs, fixing bugs etc}
\note{Encourage restarting from scratch}
\end{itemize}
......@@ -129,7 +130,7 @@
\begin{itemize}
\item Documenting the building procedures.
\note{How to build it, relevant compilation flags etc\\}
\item It dependencies.
\item What are the dependencies of the project.
\note{Which libraries etc\\}
% \item the dependencies.
% \item Using literate programming ?
......@@ -140,10 +141,10 @@
The running environment should be explicit:
\begin{itemize}
\item the running environment should be defined
\item Which runtime is used?
\note{
How(had-hoc script, complex runtime etc),
Where(your laptop, your old laptop etc) you run you experiment.}
How(had-hoc script, complex runtime etc), \\
Where(your laptop, your old laptop etc) you run you experiment.\\}
\item Documenting how to run the experiment.
\note{The input, the running scripts etc \\}
......@@ -185,7 +186,7 @@ The running environment should be explicit:
% \item Composability,
\note{why\\}
\item Decentralized package repository.
\note{Packages can come from different places.\\}
\note{Packages can come from different places, thus you can have yours.\\}
\item Explicit build process,
\note{Every deps need to be stated\\}
\note{The building process is explicit in Nix\\}
......@@ -193,7 +194,7 @@ The running environment should be explicit:
\note{Build Once, build twice (six month later)\\}
\note{Possibility to describing full software environment\\}
\note{From building environment, to runtime and data analysis.\\}
\item Application Portability
\item Application portability
\note{build on my laptop, run on g5k}
\end{itemize}
}
......@@ -286,7 +287,7 @@ The running environment should be explicit:
\item Unprivileged package installation
\item Provides isolated build \& runtime environments
\item Reproducible build from source
\item Binary Cache
\item Binary cache
\item Garbage collection
\item Declarative \& Imperative use.
\end{itemize}
......@@ -417,11 +418,75 @@ The result of the build action is automatically placed into the nix store.
\end{frame}
% \subsection{NixPkgs}
\begin{frame}[fragile]{Store}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
Each package contains its own tree.
\end{tcolorbox}
\begin{lstlisting}[basicstyle=\small]
/nix/store/hash-packagename/..
/bin/package
/lib/package.so
/share/
.
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]{Store}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
Packages can reference/depend on other packages.
\end{tcolorbox}
\end{column}
\begin{column}{0.5\textwidth} %%<--- here
\begin{center}
\vspace{-4em}
\includegraphics[scale=0.4]{./figures/store.png}
\end{center}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[fragile]{Store}
\begin{tcolorbox}[colframe=black,colback=gray!10,coltext=black]
The store can be used as a binary cache.
\end{tcolorbox}
\vspace{1em}
Thanks to the name of a package.
\begin{lstlisting}[basicstyle=\small]
/nix/store/hash-packagename
\end{lstlisting}
\vspace{1em}
Missing dependencies can be identified and downloaded from a distant store.
\end{frame}
\begin{frame}
A derivation is a build action written in Nix. \\
\vspace{1em}
Used to build package. \\
\vspace{1em}
The resulting package is stocked in the store, \\
identified with a unique path. \\
\vspace{1em}
In which it can refer to other packages.
\vspace{1em}
\end{frame}
\begin{frame}[fragile]{Nixpkgs}
How and where can we get derivations ?
How and where can we get derivations?
\pause
\vspace{1em}
......@@ -462,7 +527,6 @@ The result of the build action is automatically placed into the nix store.
\item nixpkgs-19.03 (current stable)
\item nixpkgs-18.09 (outdated)
\end{itemize}
}
\only<2>{
......@@ -471,7 +535,7 @@ The result of the build action is automatically placed into the nix store.
Channels are not fully reproducible, as they are subject to updates.
\end{tcolorbox}
\vspace{1em}
As experimenters, we will use another mechanism called pinning.
As experimenters, we will use another mechanism called pinning.
}
\end{frame}
......@@ -492,11 +556,11 @@ The result of the build action is automatically placed into the nix store.
How do we use Nix ?
\vspace{1em}
\begin{itemize}
\item \textit{nix-build} : build a derivation (that will be placed to the nix store),
\item \textit{nix-env} : install a package (in your current environment)
\item \textit{nix-build}: build a derivation (that will be placed to the nix store),
\item \textit{nix-env}: install a package (in your current environment)
\note{Speak about profiles?},
\item \textit{nix-shell} : start a shell in the build environment of a derivation,
\item \textit{nix search} : search for available packages.
\item \textit{nix search}: search for available packages.
\item \textit{nix-shell}: start a shell in the build environment of a derivation,
\end{itemize}
\end{frame}
......@@ -510,14 +574,13 @@ The result of the build action is automatically placed into the nix store.
Start an interactive session within the build environment of a derivation.
\vspace{1em}
Enables to describe environment, and start a shell within it.
Enables to describe environment, in which we can start a shell.
\vspace{-1em}
\begin{lstlisting}[language=Nix,basicstyle=\small]
{
pkgs ? import (fetchTarball
https://github.com/achive/e860b629bc0d1f9b.tar.gz)
https://github.com/archive/e860b629bc0d1f9b.tar.gz)
{}
}:
pkgs.mkShell rec {
......@@ -527,7 +590,6 @@ pkgs.mkShell rec {
\end{frame}
\begin{frame}[fragile]{Why it is reproducible ?}
Writting a package for an application requires to state down every dependencies. \\
......@@ -562,16 +624,23 @@ src = fetgit {
\end{frame}
\begin{frame}[fragile]
% Nix is a good solution for describing reconstructible environments.
Nix ensures the reproducibility of software environments.
With Nix you can define and share complex experiment environment.
\begin{itemize}
\item It will be reconstructible.
\item The dependencies will be clearly stated.
\end{itemize}
% Nix ensures the reproducibility of software environments.
\vspace{1em}
\note{In this slide, I want to clarify some points.\\
Using nix as a runtime may be a bad idea as it would be limited.}
\begin{tcolorbox}[colframe=red!37,colback=red!10,coltext=black]
Nix is not a runtime, \\
Nix is not a database.
\end{tcolorbox}
%\begin{tcolorbox}[colframe=red!37,colback=red!10,coltext=black]
% Nix is not a runtime, \\
%\end{tcolorbox}
\note{
Nix is not a runtime, (Results will be stored in the store also, hard to distributes etc)\\
Nix offers nothing to deals with data
}
\end{frame}
......
\beamer@sectionintoc {1}{Experimentation From a Software Point of View}{3}{0}{1}
\beamer@sectionintoc {2}{Nix}{5}{0}{2}
\beamer@subsectionintoc {2}{1}{Expression Language}{11}{0}{2}
\beamer@subsectionintoc {2}{2}{Package Manager}{13}{0}{2}
\beamer@sectionintoc {3}{Nix Structure}{14}{0}{3}
\center Thanks.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment