This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
other:win10wsl [2022/09/14 13:57] jypeter [Ubuntu packages installed] |
other:win10wsl [2022/09/16 16:04] jypeter [Package management] Added the useful packages section |
||
---|---|---|---|
Line 403: | Line 403: | ||
Installé correctement</code> | Installé correctement</code> | ||
- | * After installing, you will get **several new ways to open a terminal**: | + | * After installing WSLtty, you will get **several new ways to open a terminal**: |
- | * ''WSL terminal'' icon on the desktop | + | * **A ''WSL terminal'' icon on the desktop, that will be //The Way to open a terminal//** |
* ''Start'' => ''U'' => ''Ubuntu terminal'' (or ''Ubuntu_custom terminal'' or something similar if you have [[other:win10wsl#restoring_or_relocating_a_linux_installation|restored/relocated a Linux installation]]) | * ''Start'' => ''U'' => ''Ubuntu terminal'' (or ''Ubuntu_custom terminal'' or something similar if you have [[other:win10wsl#restoring_or_relocating_a_linux_installation|restored/relocated a Linux installation]]) | ||
* ''Start'' => ''W'' => ''WSL Terminal'' in the ''Start'' menu | * ''Start'' => ''W'' => ''WSL Terminal'' in the ''Start'' menu | ||
* There is also a ''W'' => ''WSLtty'' folder, than you probably will not need (more details in [[https://github.com/mintty/wsltty#configuration|Configuration]]), except possibly ''configure WSL shortcuts'' (//run after adding or removing WSL distributions, in order to create the respective set of shortcuts in the Start menu//) | * There is also a ''W'' => ''WSLtty'' folder, than you probably will not need (more details in [[https://github.com/mintty/wsltty#configuration|Configuration]]), except possibly ''configure WSL shortcuts'' (//run after adding or removing WSL distributions, in order to create the respective set of shortcuts in the Start menu//) | ||
* Open a terminal and right-click in it to check the available options | * Open a terminal and right-click in it to check the available options | ||
- | * Hint: use the ''Text'' option to select the nice //Cascadia Code// font bundled with the [[other:win10apps#windows_terminal|Windows Terminal]] | + | * **Recommended //text// options**: |
+ | * use the ''Text'' option to select the nice //Cascadia Code// font bundled with the [[other:win10apps#windows_terminal|Windows Terminal]] | ||
+ | * if you don't automatically get the ''en_US.UTF8'' localization in WSLtty when trying to [[other:win10wsl#specifying_a_correct_system_language|specify a correct system language]], explicitly force //Locale//=''en_US'' and //Character set//=''UTF-8'' in the text options | ||
+ | * {{ :other:wsltty_text_options.png?direct&250 |}} | ||
* You can access even more options with CTRL+right-click | * You can access even more options with CTRL+right-click | ||
* You can cycle between the open WSLtty terminals with CTRL+Tab and Shift+CTRL+Tab | * You can cycle between the open WSLtty terminals with CTRL+Tab and Shift+CTRL+Tab | ||
- | * [[https://github.com/mintty/mintty/wiki|Technical stuff]] (on the Mintty wiki) | + | * Extra [[https://github.com/mintty/mintty/wiki|technical stuff]] (on the Mintty wiki) |
=== The Windows Terminal === | === The Windows Terminal === | ||
Line 532: | Line 535: | ||
Use the following to update your ubuntu installation: | Use the following to update your ubuntu installation: | ||
- | <code>$ sudo -s | + | ''$ sudo apt update && sudo apt upgrade'' |
+ | |||
+ | or <code>$ sudo -s | ||
$ apt-get update | $ apt-get update | ||
$ apt-get upgrade</code> | $ apt-get upgrade</code> | ||
Line 548: | Line 554: | ||
===== Getting ready for some real work ===== | ===== Getting ready for some real work ===== | ||
- | <note important>We often assume below that you are using the **root** account (''sudo -s''), or ''sudo'' when executing the ''apt*'' installation commands, and othe admin commands</note> | + | <note>We often assume below that you are using the **root** account (with ''sudo -s'', or ''sudo'') when executing the ''apt*'' installation commands, and other //admin// commands</note> |
- | ==== Specifying correctly the display language ==== | + | ==== Create a backup before starting ==== |
- | WSL will automatically try to use in the terminals the same language as the one used by the Windows 10 computer ([[https://docs.microsoft.com/en-us/windows/wsl/troubleshooting#changing-the-display-language|ref]]), but this could lead later to some difficult to debug **side-effects** when you connect to remote Linux servers (e.g. the ''sort'' command may give different results !). | + | Nothing will go wrong, but it does not hurt to [[other:win10wsl#backup_of_a_full_linux_installation|save an image of your full installation]], in case you want to try some really different settings later. |
+ | ==== Specifying a correct system language ==== | ||
- | It is **safer** to force the system to use a //standard// English version | + | WSL will automatically try to use in the terminals the same language as the one used by the Windows computer, but this could lead later to some difficult to debug **side-effects** when you connect to remote Linux servers (e.g. the ''sort'' command may give different results !). |
+ | |||
+ | It is **safer** to [[https://docs.microsoft.com/en-us/windows/wsl/troubleshooting#changing-the-display-language|force the Linux installation to use a standard English localization]]. The ''update-locale'' command will change the content of the ''/etc/default/locale'' file | ||
<code>$ sudo update-locale LANG=en_US.UTF8 | <code>$ sudo update-locale LANG=en_US.UTF8 | ||
$ echo $LANG | $ echo $LANG | ||
en_US.UTF8 | en_US.UTF8 | ||
+ | |||
+ | $ locale -v | ||
+ | LANG=en_US.UTF8 | ||
+ | LANGUAGE= | ||
+ | LC_CTYPE="en_US.UTF8" | ||
+ | [...] | ||
+ | LC_ALL= | ||
</code> | </code> | ||
+ | |||
+ | After updating the system //localization// (and possibly restarting ''wsl'' with ''%%wsl --shutdown%%''), open the [[other:win10wsl#opening_a_terminal|available terminals]] and type ''echo $LANG'' in order to check that are indeed getting ''en_US.UTF8'' | ||
+ | |||
+ | If you are still not getting ''en_US.UTF8'' in some terminals (e.g. you are still getting ''C.UTF-8''), you can check if you can override the //localization// options in the terminals settings. Check the [[other:win10wsl#the_wsltty_terminal|Text options of the WSLtty terminals]] | ||
+ | |||
==== Package management ==== | ==== Package management ==== | ||
- | [[https://www.howtogeek.com/63997/how-to-install-programs-in-ubuntu-in-the-command-line/|apt-get tutorial]] if you are more used to Fedora/RedHat ''yum''/''dnf'' and //rpm// packages | + | === How does it work ? === |
+ | |||
+ | * **Ubuntu applications** are distributed through package files in **//Debian// format** (''.deb'' files) that are found in [[https://help.ubuntu.com/community/Applications#Software_repositories|software repositories]] | ||
+ | |||
+ | * High level package management tools such as ''aptitude'' or ''synaptic'' rely on ''apt'' which, itself, relies on ''dpkg'' to manage the packages in the system | ||
+ | * The ''apt'' tool merges functionality of ''apt-get'' and ''apt-cache'' and by default has a fancier colored output format, making it more pleasant for humans. For usage in scripts or advanced use cases, ''apt-get'' is still preferable or needed | ||
+ | * ''apt*'' tools and ''dpkg'' are pre-installed on Ubuntu | ||
+ | * [[https://www.debian.org/doc/manuals/debian-faq/pkgtools.en.html#aptitude|aptitude]] can be used on the command-line or through a **text-based interface** | ||
+ | * You do not need to have an [[other:x_conf|X server]] running to use ''aptitude'', therefore aptitude can be used in the early stages of a Linux installation, or on a remote Linux computer | ||
+ | * [[https://www.debian.org/doc/manuals/debian-faq/pkgtools.en.html#synaptic|synaptic]] is a graphical package manager | ||
+ | * You need to have an [[other:x_conf|X server]] running in order to use it | ||
+ | |||
+ | * All the details can be found in [[https://www.debian.org/doc/manuals/debian-faq/pkgtools.en.html|The Debian package management tools]] | ||
+ | |||
+ | === What about snap ? === | ||
+ | |||
+ | FIXME [[https://snapcraft.io/docs|Snap documentation]] | ||
+ | |||
+ | === Installing extra package managers === | ||
+ | |||
+ | * Installation: ''sudo apt install aptitude synaptic'' | ||
+ | * It may install lots of dependencies, but that's to be expected if no other packages have been installed yet\\ <code>$ sudo apt install aptitude synaptic | ||
+ | Reading package lists... Done | ||
+ | Building dependency tree | ||
+ | Reading state information... Done | ||
+ | [...] | ||
+ | The following NEW packages will be installed: | ||
+ | adwaita-icon-theme aptitude aptitude-common at-spi2-core cpp cpp-9 fontconfig gcc-9-base | ||
+ | [...] | ||
+ | x11-xserver-utils xdg-utils | ||
+ | 0 upgraded, 129 newly installed, 0 to remove and 0 not upgraded. | ||
+ | Need to get 31.2 MB of archives. | ||
+ | After this operation, 137 MB of additional disk space will be used. | ||
+ | Do you want to continue? [Y/n] | ||
+ | </code> | ||
- | * Install the **aptitude** package manager: ''apt-get install aptitude'' | + | * Documentation: |
- | * [[https://doc.ubuntu-fr.org/aptitude|details]] (fr) | + | * ''apt'': |
- | * Install the **synaptic** package manager: ''aptitude install synaptic'' | + | * EN: [[https://www.debian.org/doc/manuals/debian-faq/pkgtools.en.html#apt-get|apt @ Debian]]\\ [[https://help.ubuntu.com/community/AptGet/Howto|Package management with APT @ Ubuntu]] |
- | * [[https://doc.ubuntu-fr.org/synaptic|details]] (fr) | + | * FR: [[https://doc.ubuntu-fr.org/apt-cli|apt @ ubuntu-fr]] |
+ | * ''aptitude'': | ||
+ | * EN: [[https://help.ubuntu.com/community/AptitudeSurvivalGuide|Aptitude Survival Guide @ Ubuntu]] | ||
+ | * FR: [[https://doc.ubuntu-fr.org/aptitude|aptitude @ ubuntu-fr]] | ||
+ | * ''synaptic'': | ||
+ | * EN: [[https://help.ubuntu.com/community/SynapticHowto|synaptic Howto @ Ubuntu]] | ||
+ | * FR: [[https://doc.ubuntu-fr.org/synaptic|synaptic @ ubuntu-fr]] | ||
+ | === Some useful commands === | ||
- | === Useful commands === | + | * ''apt update'': update the list of packages known by your system |
+ | * ''apt upgrade'': upgrade all the packages on your system | ||
+ | * ''apt search word'': find packages whose description contain ''word'' | ||
+ | * ''apt install foo'': install the ''foo'' package and all its dependencies | ||
+ | * ''apt show package'': print the detailed information of a package | ||
+ | * ''apt remove foo'': remove the foo package from your system | ||
* ''dpkg -l'': list installed packages | * ''dpkg -l'': list installed packages | ||
Line 582: | Line 649: | ||
<code>$ dpkg -l | grep -i wsl | <code>$ dpkg -l | grep -i wsl | ||
- | ii ubuntu-wsl 1.417.3 amd64 Ubuntu on Windows tools - Windows Subsystem for Linux integration | + | ii ubuntu-wsl 1.450.2 amd64 Ubuntu on Windows tools - Windows Subsystem for Linux integration |
- | ii wslu 2.3.2-0ubuntu2~18.04.3 all collection of utilities for the Windows 10 Linux Subsystem | + | ii wslu 2.3.6-0ubuntu2~20.04.0 all collection of utilities for the Windows 10 Linux Subsystem |
$ dpkg -L wslu | $ dpkg -L wslu | ||
/. | /. | ||
- | /etc | ||
- | /etc/profile.d | ||
/usr | /usr | ||
/usr/bin | /usr/bin | ||
Line 597: | Line 662: | ||
/usr/bin/wslvar | /usr/bin/wslvar | ||
/usr/bin/wslview | /usr/bin/wslview | ||
+ | [...] | ||
+ | |||
+ | $ apt show wslu | ||
+ | Package: wslu | ||
+ | Version: 2.3.6-0ubuntu2~20.04.0 | ||
+ | [...] | ||
+ | Description: collection of utilities for the Windows 10 Linux Subsystem | ||
[...]</code> | [...]</code> | ||
+ | === Adding some useful packages === | ||
+ | |||
+ | There is not that much installed by default in Ubuntu, now is the time to get ready for work! | ||
+ | |||
+ | <code>$ sudo apt install gcc libglu1-mesa mesa-utils x11-apps xterm xfce4-terminal emacs evince eog imagemagick nco cdo netcdf-bin ncview</code> | ||
==== Using an X server ==== | ==== Using an X server ==== | ||
Line 1034: | Line 1111: | ||
NAME STATE VERSION | NAME STATE VERSION | ||
* Ubuntu Running 2</code> | * Ubuntu Running 2</code> | ||
- | * [[other:win10wsl#rebooting_wsl|Stop WSL+Linux]] | + | * [[other:win10wsl#rebooting_wsl|Stop all running installations]] |
* <code>> wsl --shutdown | * <code>> wsl --shutdown | ||
Line 1040: | Line 1117: | ||
NAME STATE VERSION | NAME STATE VERSION | ||
* Ubuntu Stopped 2</code> | * Ubuntu Stopped 2</code> | ||
+ | * ... or stop just the specific installation that you want to save:\\ ''%%> wsl --terminate Ubuntu_custom%%'' | ||
+ | |||
* Export the specified Linux installation to a //tar// file: | * Export the specified Linux installation to a //tar// file: | ||
* You should export to a directory or external disk where you have //enough// space\\ e.g. The tar file for a [[other:win10wsl#base_installation|newly installed and updated]] //Ubuntu 20.04.5 LTS// is ~1.4 Gb | * You should export to a directory or external disk where you have //enough// space\\ e.g. The tar file for a [[other:win10wsl#base_installation|newly installed and updated]] //Ubuntu 20.04.5 LTS// is ~1.4 Gb | ||
* You should use a detailed enough file name for the tar file\\ e.g. WSL_<Linux_Distribution>_<Distribution_Version>_<User>_<Date>.tar | * You should use a detailed enough file name for the tar file\\ e.g. WSL_<Linux_Distribution>_<Distribution_Version>_<User>_<Date>.tar | ||
- | * Example: ''%%wsl --export Ubuntu C:\Scratch\<your_login>\WSL\WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar%%'' | + | * Example: ''%%wsl --export Ubuntu C:\Scratch\your_login\WSL\WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar%%'' |
- | * If you are not going to use the backup tar file right away, you can optionally compress it in order to save some space | + | * You can (probably) save a lot of space by compressing the backup |
- | * <code>$ ls -lh /mnt/c/Scratch/<your_login>/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar | + | * It is not documented (yet), but the [[https://github.com/MicrosoftDocs/WSL/issues/1607|wsl --import]] command can directly import ''tar.gz'' files! |
- | 1.4G Aug 29 17:49 /mnt/c/Scratch/<your_login>/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar | + | * <code>$ ls -lh /mnt/c/Scratch/your_login/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar |
+ | 1.4G Aug 29 17:49 /mnt/c/Scratch/your_login/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar | ||
- | $ gzip /mnt/c/Scratch/<your_login>/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar | + | $ gzip /mnt/c/Scratch/your_login/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar |
- | $ ls -lh /mnt/c/Scratch/<your_login>/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar.gz | + | $ ls -lh /mnt/c/Scratch/your_login/WSL/WSL_Ubuntu_* |
- | 549M Aug 29 17:49 /mnt/c/Scratch/<your_login>/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar.gz</code> | + | 549M Aug 29 17:49 /mnt/c/Scratch/your_login/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-08-29.tar.gz |
+ | 548M Sep 14 16:18 /mnt/c/Scratch/your_login/WSL/WSL_Ubuntu_20.04.5_LTS_stdu_22-09-14.tar.gz</code> | ||
=== Backup of specific directories === | === Backup of specific directories === | ||
Line 1058: | Line 1139: | ||
You can also just create backups of specific directories: | You can also just create backups of specific directories: | ||
- | * Your Linux //home// directory (''/home/<your_login>/''), or some specific sub-directories of the //Ubuntu// running in WSL (sub-directories of ''/''): the best way to save them is probably to **create a //tar// file from Linux**, and put this //tar// file in a specific Windows //WSL backup folder// (we will use below the directory ''/mnt/c/Scratch/<your_login>'' or ''c:\Scratch\<your_login>'') | + | * Your Linux //home// directory (''/home/your_login/''), or some specific sub-directories of the //Ubuntu// running in WSL (sub-directories of ''/''): the best way to save them is probably to **create a //tar// file from Linux**, and put this //tar// file in a specific Windows //WSL backup folder// (we will use below the directory ''/mnt/c/Scratch/your_login'' or ''c:\Scratch\your_login'') |
* <code bash>$ cd /home | * <code bash>$ cd /home | ||
$ du -sh $USER | $ du -sh $USER | ||
- | 232K <your_login> | + | 232K your_login |
- | # We assume below that there is an existing /mnt/c/Scratch/<your_login>/ directory | + | # We assume below that there is an existing /mnt/c/Scratch/your_login/ directory |
- | # It's a WINDOWS directory C:\Scratch\<your_login> | + | # It's a WINDOWS directory C:\Scratch\your_login |
$ tar cfz /mnt/c/Scratch/$USER/${USER}_home_`date +%y%m%d_%H%M`.tgz $USER | $ tar cfz /mnt/c/Scratch/$USER/${USER}_home_`date +%y%m%d_%H%M`.tgz $USER | ||
# Check the size of the new (and existing old) backup(s) | # Check the size of the new (and existing old) backup(s) | ||
$ ls -ltr /mnt/c/Scratch/$USER/${USER}_*.tgz | $ ls -ltr /mnt/c/Scratch/$USER/${USER}_*.tgz | ||
- | 81K Jan 21 2020 /mnt/c/Scratch/<your_login>/<your_login>_home_200121.tgz | + | 81K Jan 21 2020 /mnt/c/Scratch/your_login/your_login_home_200121.tgz |
- | 93K Aug 22 2020 /mnt/c/Scratch/<your_login>/<your_login>_home_200822_1151.tgz | + | 93K Aug 22 2020 /mnt/c/Scratch/your_login/your_login_home_200822_1151.tgz |
- | 95K Feb 24 12:09 /mnt/c/Scratch/<your_login>/<your_login>_home_210224_1209.tgz</code> | + | 95K Feb 24 12:09 /mnt/c/Scratch/your_login/your_login_home_210224_1209.tgz</code> |
* Regular Windows folders where you store data used by WSL: you can use ''tar'' in a Linux terminal, as above, or use any usual way of backing up Windows files (drag and drop, some specific [[other:win10apps#backup_software|backup software]]) | * Regular Windows folders where you store data used by WSL: you can use ''tar'' in a Linux terminal, as above, or use any usual way of backing up Windows files (drag and drop, some specific [[other:win10apps#backup_software|backup software]]) |