Ubuntu Tips and Tricks

Pacchetti aggiuntivi
Di seguito una lista di pacchetti che normalmente installo (o rimuovo) su tutti i miei PC.

Comuni
sudo apt install adobe-flashplugin atril audacious bleachbit \ browser-plugin-freshplayer-pepperflash calibre chromium-browser \ chromium-codecs-ffmpeg-extra compizconfig-settings-manager \ cpufrequtils dos2unix dosbox ethtool faac filezilla gimp gnome-tweaks \ gparted gprename gsmartcontrol gufw hexchat httrack icc-profiles iftop \ indicator-multiload intel-microcode isomaster k3b kde-config-cddb \ keepassxc lame libavcodec-extra libdvdread4 libk3b7-extracodecs \ linux-tools-common libreoffice-style-sifr lm-sensors mlocate normalize-audio \ numlockx openjdk-11-jre p7zip-full p7zip p7zip-rar pidgin pidgin-encryption \ pidgin-otr qbittorrent qpdfview qt5-style-plugins smem solaar solaar-gnome3 \ sound-juicer soundconverter sox synaptic sysdig thermald ttf-xfree86-nonfree \ traceroute ubuntu-restricted-extras unace-nonfree unity-tweak-tool variety \ vcdimager vim vlc wallch xcalib

Gnome Shell
sudo apt install chrome-gnome-shell gnome-shell-extension-system-monitor gnome-shell-extension-weather

Scheda grafica Nvidia
sudo apt install libva-drm2 libva-glx2 libva-wayland2 libva-x11-2 mesa-vdpau-drivers libvdpau-va-gl1 vainfo vdpauinfo mesa-vulkan-drivers vulkan-tools

sudo nvidia-xconfig --xconfig=/etc/X11/xorg.conf --no-logo

Scheda grafica Intel G45 & HD Graphics family
sudo apt install libva-drm2 libva-glx2 libva-wayland2 libva-x11-2 mesa-vdpau-drivers libvdpau-va-gl1 vainfo i965-va-driver mesa-vulkan-drivers vulkan-tools

Scheda grafica di altro tipo
sudo apt install libva-drm2 libva-glx2 libva-wayland2 libva-x11-2 mesa-vdpau-drivers libvdpau-va-gl1 vainfo mesa-vulkan-drivers vulkan-tools

Wine
sudo apt install alsa-oss playonlinux wine winetricks

Iphone ed Ipod
sudo apt install gtkpod ideviceinstaller ifuse ipheth-utils libgpod4 libimobiledevice-utils libplist-utils usbmuxd

Thunar File Manager
sudo apt --no-install-recommends install thunar thunar-archive-plugin

Nemo File Manager
sudo apt --no-install-recommends install nemo nemo-fileroller

Extra PPA
sudo apt install libdvd-pkg

Software Proprietario

 * balenaEtcher
 * Steam

AppArmor
AppArmor e' un software di sicurezza che permette di restringe le capacità di un singolo programma mediante l'associazione di un profilo di sicurezza. Per installarlo: sudo apt install apparmor-easyprof apparmor-utils sudo aa-enforce /etc/apparmor.d/*

Per verificare quali azioni sono state bloccate: sudo grep 'apparmor="DENIED"' /var/log/syslog

Adobe Flash
Per forzare Flash Player ad utilizzare l'accelerazione hardware della scheda video, eseguire i seguenti comandi: sudo mkdir -p /etc/adobe echo "OverrideGPUValidation=1 EnableLinuxHWVideoDecode=1" | sudo tee -a /etc/adobe/mms.cfg

Rimuove le vecchie versione di Flash non piu' necessarie o mantenute: sudo apt purge pepperflashplugin-nonfree flashplugin-installer

Disabilitare IPv6
Per disabilitare completamente l'IPv6, eseguire i seguenti comandi: echo "# IPv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p

Per verificare lo stato attuale di IPv6, eseguire il seguente comando: cat /proc/sys/net/ipv6/conf/all/disable_ipv6

Per forzare APT ad utilizzare unicamente IPv4, eseguire il seguente comando: echo "Acquire::ForceIPv4 "true";" | sudo tee -a /etc/apt/apt.conf.d/99zzz

Disabilitare Apport
Per disabilitare Apport, il programma di Ubuntu che ci segnala quando un applicativo va in crash, eseguire il seguente comando: sudo sed -i 's/^enabled=1/enabled=0/g' /etc/default/apport

VIM rc
Questo e' il file di configurazione che utilizzo per l'editor di testo VIM: echo ' set nocompatible       " Use Vim defaults instead of 100% vi compatibility set expandtab           " Tabs expanded to spaces set fileencoding=utf-8 " Sets the character encoding for the file of this buffer set fileencodings=ucs-bom,utf-8,default,latin1  " List of character encodings considered when starting to edit an existing file set history=50         " Keep 50 lines of command line history set hlsearch            " Highlighting of search matches set nomodeline         " Disabled for security reasons set ruler               " Show the cursor position all the time set showcmd            " Show (partial) command in status line set showmatch           " Show matching brackets set showmode           " Show current mode set smartcase           " Do smart case matching set syntax=on          " Syntax highlighting set ttyfast             " Fast terminal connection set ignorecase         " Do case insensitive matching " Source a local configuration file if available if filereadable("$HOME/vimrc.local") source $HOME/vimrc.local endif ' > $HOME/.vimrc

Firefox
Per una lista di utili Estensioni per Firefox, fare riferimento a questa pagina: https://addons.mozilla.org/en-US/firefox/collections/shadowmax/home/

Di seguito invece diverse impostazioni di Firefox, da eseguire dalla pagina about:config, per modificare il comportamento del browser: browser.tabs.closeWindowWithLastTab            false    # il browser non si chiude quando viene chiuso l'ultimo tab browser.urlbar.trimURLs                        false    # il protocollo (es. https:// ) e' sempre visibile nella barra full-screen-api.allow-trusted-requests-only    false    # disabilita le limitazioni per sito di andare a pieno schermo full-screen-api.warning.timeout                0        # disabilita il messaggio "Press ESC to exit full screen mode"

Chromium / Google Chrome
Estensioni utili per Chromium e Chrome:
 * History Disabler
 * JustBlock Security
 * Minimal Bookmarks Tree
 * Speed Dial 2 New tab
 * uBlock Origin

Svuotare il Cestino ed eliminare le Miniature delle immagini
Per automatizzare lo svuotamento del cestino (Trash) e l'eliminazione delle miniature delle immagini (Thumbnails), aggiungere in fondo al file: sudo vi /etc/rc.local ma prima di un eventuale: exit 0 le seguenti righe: rm -rf /home/*/.thumbnails rm -rf /home/*/.cache/thumbnails/*/* rm -rf /home/*/.local/share/Trash

Limite delle risorse
Per evitare problemi del tipo: Too many open files aumentare i limiti del proprio utente: ME="$(whoami) sudo echo -e "$ME soft nofile 8192\n$ME hard nofile 8192" | sudo tee /etc/security/limits.d/$ME.conf

File system check
Per fare in modo che i vari file system del nostro PC vengano verificati unicamente una volta ogni 6 mesi, basta eseguire questo comando su ognuno di loro (nell'esempio /dev/sdb1): sudo tune2fs -c 0 -i 6m /dev/sdc3 tune2fs 1.44.6 (5-Mar-2019) Setting maximal mount count to -1 Setting interval between checks to 15552000 seconds Per vedere l'impostazione corrente: sudo tune2fs -l /dev/sdc3 | egrep "Maximum mount count|Check interval" Maximum mount count:     -1 Check interval:          15552000 (6 months)

Sensori di temperatura
Con il comando sensors e' possibile vedere la temperatura di vari componenti del PC. Se il comando restituisce: No sensors found! Make sure you loaded all the kernel drivers you need. Try sensors-detect to find out which these are. procedere eseguendo il comando: sudo sensors-detect rispondendo yes a tutte le domande (anche all'ultima).

Verificare lo stato dei RAID Software
Se avete dei dischi in mirror o stripe software, potete cotrollare il loro stato con questo semplice comando: sudo /sbin/mdadm --detail /dev/md* | egrep "^/dev/md|State |Resync Status " che restituisce un output simile a questo: /dev/md0: State : clean /dev/md1: State : active, resyncing Resync Status : 10% complete Se lo stato e' clean o active, non ci sono problemi.

LAMP (Linux, Apache HTTPD, MySQL, PHP)
Installazione e configurazione del web server per uso locale: sudo apt-get install apache2 curl mysql-server php php-curl php-gd php-mbstring php-mysql php-json php-xml php-zip libapache2-mod-php sudo a2enmod php7.3 sudo a2enmod headers sudo a2enmod rewrite sudo a2enmod ssl

echo 'post_max_size = 33M'      | sudo tee -a /etc/php/7.3/apache2/conf.d/50-local.ini echo 'upload_tmp_dir = /tmp'    | sudo tee -a /etc/php/7.3/apache2/conf.d/50-local.ini echo 'upload_max_filesize = 32M' | sudo tee -a /etc/php/7.3/apache2/conf.d/50-local.ini echo 'output_buffering = Off'   | sudo tee -a /etc/php/7.3/apache2/conf.d/50-local.ini

sudo sed -i 's/^Listen 80$/Listen 127.0.0.1:80/g' /etc/apache2/ports.conf sudo sed -i 's/Listen 443$/Listen 127.0.0.1:443/g' /etc/apache2/ports.conf

sudo mkdir -p /var/www/mysite sudo chown -R max:www-data /var/www/mysite sudo chmod -R g+rw /var/www/mysite

echo '  ServerName localhost # Document Root DocumentRoot "/var/www/mysite" # Log #ErrorLog logs/localhost-error_log #CustomLog logs/localhost-access_log combined # Force the use of HTTPS RewriteEngine on    RewriteCond   %{HTTPS} !=on RewriteRule  ^(.*) https://%{SERVER_NAME} [L,R] # Security Headers Header always set Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; upgrade-insecure-requests;" Header always set X-Frame-Options "SAMEORIGIN" Header always set X-Xss-Protection "1; mode=block" Header always set X-Content-Type-Options "nosniff" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Set-Cookie "HttpOnly; SameSite=Strict"   ServerName localhost # Document Root DocumentRoot "/var/www/mysite" # Log #ErrorLog logs/localhost-error_log #CustomLog logs/localhost-access_log combined # SSL SSLEngine on    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem #SSLCertificateChainFile /etc/ssl/certs/server-ca.crt SSLCertificateKeyFile  /etc/ssl/private/ssl-cert-snakeoil.key #SSLCACertificateFile   /etc/ssl/certs/ca-bundle.crt # Security Headers Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" Header always set Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; upgrade-insecure-requests;" Header always set X-Frame-Options "SAMEORIGIN" Header always set X-Xss-Protection "1; mode=block" Header always set X-Content-Type-Options "nosniff" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Set-Cookie "HttpOnly; Secure; SameSite=Strict"  ' | sudo tee /etc/apache2/sites-available/mysite.conf

sudo a2dissite 000-default.conf sudo a2ensite mysite

sudo systemctl restart apache2.service

Azioni post-aggiornamento
Dopo aver eseguito l'aggiornamento di Ubuntu alla nuova versione, e' consigliabile svolgere diverse azioni per fare pulizia e ottimizzare la nuova installazione: sudo rm /etc/apt/sources.list.d/*.list.distUpgrade /etc/apt/*.list.distUpgrade sudo rm /etc/apt/sources.list.d/*.list.save /etc/apt/*.list.save sudo sed -i -e 's/^# deb /deb /g' -e 's/ # disabled on upgrade to .*$//g' /etc/apt/sources.list.d/*.list sudo sed -i -e 's/^# deb /deb /g' -e "s/ # disabilitato durante l'avanzamento a .*$//g" /etc/apt/sources.list.d/*.list sudo sed -i -e "s/old_release/$(lsb_release --short --codename)/g" /etc/apt/sources.list.d/*.list sudo apt -qq update sudo updatedb locate "*.dpkg-bak" locate "*.dpkg-old" locate "*.ucf-old" sudo apt clean sudo synaptic &
 * Ripristinare i repository di terze parti disabilitate dalla procedura di aggiornamento
 * Cancellare la vecchia verione dei file che abbiamo deciso di sovrascrivere:
 * Cancellare la cache dei pacchetti di APT per liberare spazio disco:
 * Cancellare i pacchetti e le configurazioni non piu' necessarie:

Applicazioni Snap
Per rimuovere le vecchie versioni degli applicativi installati distribuiti in formato snap: snap list --all | while read snapname ver rev trk pub notes do    if  "$notes" = *disabled* ; then sudo snap remove "$snapname" --revision="$rev" fi done

Qt High DPI Displays
Per disabilitare l'auto scaling, basato sulla densita' dei pixel del monitor, degli applicativi scritti in Qt, come Calibre e VLC: echo "QT_AUTO_SCREEN_SCALE_FACTOR=0 export QT_AUTO_SCREEN_SCALE_FACTOR QT_QPA_PLATFORMTHEME=gtk2 export QT_QPA_PLATFORMTHEME" | sudo tee -a /etc/profile.d/qt-fixes.sh

Resume
Se il sistema si ferma per 30 secondi prima di iniziare la sequenza di boot, disabilitare il resume: echo "RESUME=none" | sudo tee /etc/initramfs-tools/conf.d/resume sudo update-initramfs -u -k all