Mettre à jour le système Ubuntu de la version 16.04 à 18.04 LTS

Le système GNU/Linux Ubuntu est le système conseillé, par ce site personnel, pour une machine de bureau destinée au développement logiciel. Récemment, en fin Juillet 2018 plus exactement, la mise à jour vers la dernière version stable 18.04 (la précédente étant la 16.04) a été considérée par la communauté de cet OS comme fiable. Personnellement je constate que cette nouvelle version est suffisamment stable et fiable et je peux confirmer cette information.

Cet article présente la manière de procéder pour effectuer cette mise à jour. Les pré-requis pour cette procédure sont:

  • Le système est déjà à la version 16.04 LTS.
  • La machine est connectée correctement à Internet.

1. Désinstaller les logiciels expérimentaux

La durée moyenne de cette procédure de mise à jour est assez longue. Avec un accès standard de type ADSL à Internet elle ne durera pas moins d’une heure. Cette durée dépend de la quantité de logiciels installés sur le système. Pour minimiser cette durée au maximum il convient d’abord de désinstaller tout logiciel installé à titre expérimental comme un navigateur web supplémentaire par exemple.

2. S’assurer de la mise à jour de la version actuelle 16.04

Pour cela lancer successivement et dans l’ordre les commandes:

sudo apt update
sudo apt upgrade
sudo apt autoremove
sudo apt dist-upgrade

La durée de cette partie de la procédure varie selon l’état actuel du système. En moyenne elle dure quelques minutes. A la fin de cette partie on est assuré de l’état complètement à jour de la version 16.04 du système.

3. Installer le gestionnaire système de mise à niveau de versions

Le système Ubuntu est doté d’un gestionnaire de mise à niveau de version qui facilite cette procédure. Si ce n’est déjà fait, il convient d’installer cet utilitaire. la commande suivante permet de s’en assurer:

sudo apt install update-manager-core

Si l’utilitaire est déjà installé, cette commande se contentera de nous en informer.

4. Installer la nouvelle version 18.04 LTS

A ce stade, il suffit de demande à l’utilitaire de gestion de mise à niveau de procéder à cette opération:

sudo do-release-upgrade -d

C’est la partie la plus longue de la procédure. D’abord les paquets de la nouvelle version sont téléchargés, ensuite installés. Durant cette partie de la procédure, notamment vers la fin, l’utilitaire pourra marquer des arrêts pour poser des questions auxquelles il faudra répondre. Les réponses à ces questions seront généralement de type Oui/Non mais la procédure sera bloquée pendant ce temps.

5. Redémarrer la machine

A la fin de l’installation il convient de redémarrer la machine pour accéder à la nouvelle version du système et en profiter.

6. Java sur Ubuntu 18.04

La nouvelle version d’Ubuntu installe et configure par défaut la version 11 de Java (le JRE, et oui il semblerait que l’équipe Ubuntu est hyper futuriste). Ceci pourrait entraîner des dysfonctionnements d’applications Java, même récentes. Eclipse ou JXplorer, à titre d’exemple peuvent rencontrer ce type de problème. Dans ce cas il faudra ajuster la version par défaut de Java à une version plus ancienne ou paramétrer l’application concernée pour utiliser une version plus ancienne. L’article de ce blog à ce sujet permet d’avoir plus de détails au sujet de cette configuration de Java.

En réalité la version installée par défaut du JRE est la dernière version 10, même si le nom du paquet installé et sa configuration indiquent que c’est la version 11. Celle-ci ne sera effectivement disponible qu’en Septembre 2018 !

Share

Postgres pgAdmin 4: Utilisation courante

Postgres pgAdmin 4 permet de créer toute sorte d’objets du serveur de bases de données PostgreSQL. Ces objets peuvent être des bases de données (BDD), des schémas, des tables, des utilisateurs.. Cet outil permet également d’exécuter des requêtes SQL.

L’accomplissement de ces tâche est conditionné par les droits de l’utilisateur qui sert à la connexion au serveur paramétré. Pour pouvoir agir sans limitation, il faut se connecter avec un utilisateur qui a les droits du super-administrateur.

Cet article fait partie d’une série qui concerne le serveur de bases de données PostgreSQL et son utilisation dans un environnement de développement:

  1. Installation de base de PostgreSQL
  2. Utiliser Postgres pgAdmin 3 pour administrer PostgreSQL
  3. Installer PostgreSQL 10
  4. Reconfigurer l’installation par défaut de PostgreSQL 10
  5. Utiliser PostgreSQL 10 dans un environnement de développement
  6. Administrer PostgreSQL avec psql
  7. Postgres pgAdmin 4 : installation et configuration
  8. Cet article: Postgres pgAdmin 4: Utilisation courante

Affecter un mot de passe au super-administrateur

pgAdmin ne pemet de paramétrer une connexion au serveur en local par le socket Unix. Pour cela on doit d’abord affecter un mot de passe au super-administrateur qui est l’utilisateur/développeur authentifié sur la machine de bureau. On utilise psql:

psql -d postgres

Une fois connecté, exécuter:

alter user jdupond with encrypted password 'mpjdupond';

Ajouter un serveur avec une connexion super-administrateur

Afficher le menu contextuel de l’objet Serveurs de développement puis sélectionner: Create / Server... Ceci affiche la fenêtre de paramétrage d’un nouveau serveur.

postgres pgadmin

Saisir le nom du serveur dans le champ Name: « Serveur local superadmin« . Ensuite passer à l’onglet (à sélectionner en haut de la fenêtre) Connection. Dans cet onglet renseigner les valeurs des champs comme indiqué dans la copie d’écran.

A la fin de la saisie, enregistrer avec le bouton Save.

Créer une base de données

Afficher le menu contextuel du serveur Serveur local superadmin puis sélectionner Create / Database..

Dans le 1er onglet qui s’affiche par défaut:postgres pgadminSaisir le nom de la base de données: bdtest
Choisir le propriétaire de la BDD dans la Combobox Owner: jdupond
Saisir un commentaire: Base de données pour tester pgAdmin

Sélectionner, ensuite, le deuxième onglet Definition.postgres pgadminSélectionner dans la Combobox Encoding: UTF8
Sélectionner dans la Combobox Character type: fr_FR.UTF-8

Sélectionner, ensuite, le dernier onglet SQL

postgres pgadmin

Après la saisie des paramètres de création de la base de données, on a la possibilité d’examiner le code SQL qui servira à sa création effective.

Créer un schéma

Pour créer un schéma dans la nouvelle base de données créée, on utilise le menu contextuel de cette BDD: Create / Schema…postgres pgadmin
Ce menu permet d’accéder à la fenêtre de création de schéma:
postgres pgadmin
La saisie des paramètres et l’enregistrement par le bouton Save, permet d’achever la création du schéma commerce.

Créer une table

Pour créer une table dans le nouveau schéma créé, on utilise son menu contextuel: Create / Table…

Ce menu permet d’accéder à la fenêtre de création de table:

Renseigner les données de l’onglet General comme indiqué, puis sélectionner l’onglet Columns qui permet de définir les champs de la table.

S’agissant d’une création de table, le tableau de cet onglet est initialement vide. Utiliser le bouton mentionné « Ajouter un champ » pour ajouter les trois champs de la table. Paramétrer chaque champ comme indiqué puis enregistrer avec le bouton Save pour créer la table.

Ajouter ou modifier les données contenues dans une table

Pour modifier les données contenue dans la table produits, on utilise son menu contextuel: View/Edit Data / All Rows. Les 3 autres menus servent quand il y a déjà une grande quantité de données.  

Ce menu permet d’accéder à la zone d’édition des données de la table qui apparaît dans le volet droit de l’interface.

 

Share

Postgres pgAdmin 4: Installation et configuration

Postgres pgAdmin 4 est une évolution majeure de l’outil d’administration avec interface graphique du serveur de base de données PostgreSQL. Il est destiné à succéder à pgAdmin 3. Cette nouvelle version est dotée de deux modes de fonctionnements:

  • Le mode station de travail qui est un mode local à une machine de bureau.
  • Le mode Web qui est un mode serveur (web) destiné pour les machines serveurs.

Concrètement il s’agit, à peu de choses près, du même logiciel mais configuré différemment pour chaque mode de fonctionnement. Techniquement c’est une application Python qui fonctionne soit en autonome pour le mode station de travail ou en mode hébergé par un serveur web pour le mode serveur. Pour les système Debian et compatibles, c’est l’installation qui fait la différence entre les deux modes.

Cet article fait partie d’une série qui concerne le serveur de bases de données PostgreSQL et son utilisation dans un environnement de développement:

  1. Installation de base de PostgreSQL
  2. Utiliser Postgres pgAdmin 3 pour administrer PostgreSQL
  3. Installer PostgreSQL 10
  4. Reconfigurer l’installation par défaut de PostgreSQL 10
  5. Utiliser PostgreSQL 10 dans un environnement de développement
  6. Administrer PostgreSQL avec psql
  7. Cet article: Postgres pgAdmin 4 : installation et configuration
  8. Postgres pgAdmin 4: Utilisation courante

Installation de Postgres pgAdmin 4

Il s’agit dans tout le reste de ce tutoriel de la version station de travail, car il s’agit toujours du poste de travail d’un développeur d’application. Pour installer Postgres pgAdmin 4 en mode station de travail exécuter:

sudo apt install pgadmin4

Cette commande installe également un environnement Python s’il n’est pas déjà installé. Des difficultés peuvent apparaître pour exécuter l’application si des conflits de versions, typiques de cet environnement, apparaissent. Dans ce cas, une solution envisageable consiste à désinstaller pgAdmin 4 et toutes les versions de Python installées sur le système. Après cela ré-exécuter la commande d’installation de pgAdmin 4. Toutefois cette solution n’est applicable que si aucune version de Python (notamment moins récente que celle installée avec pgAdmin 4 qui est actuellement la 2.7.13) n’est indispensable par ailleurs.

Postgres pgAdmin 4 n’est pas disponible (Août 2018) sur le dépôt officiel des systèmes Debian et Ubuntu. L’utilitaire système de gestion des paquets apt doit pouvoir les récupérer à partir du dépôt spécifique de PostgreSQL pour que la commande d’installation réussisse. Pour cela il faudra d’abord configurer cet utilitaire comme indiqué dans le tutoriel d’installation de la version 10 de PostgreSQL (§ Versions disponibles pour le système installé).

Considération générale sur le fonctionnement

L’application pgAdmin 4 s’utilise par l’action des différents menus graphiques disponibles. Il existes deux types principaux de menus:

  • Le menu principal qui se trouve dans la barre d’en-tête de la fenêtre de l’application. Dans ce menu les principales commandes se trouvent dans le menu Object. Les différents menus peuvent être actifs ou non (grisés) selon les droits de l’utilisateur paramétré pour la connexion au serveur. Par exemple, si cet utilisateur n’a pas le droit de créer des bases de données, le menu Object / Create / Database.. sera toujours inactif.
  • Le menu contextuel à un nœud du volet gauche. Ce menu s’obtient par la sélection du nœud concerné (serveur, BDD, table..) dans le volet gauche de l’interface, ensuite cliquer sur le bouton droit de la souris. Ce menu affiche la liste des actions possibles spécifiques à l’objet sélectionné.

Dans la suite de ce tutoriel il convient d’effectuer l’une ou l’autre de ces démarches pour mener l’action demandée.

Paramétrer un groupe de serveurs

postgres pgadmin

Au premier lancement de pgAdmin 4, un groupe de serveurs Servers, vide, est paramétré. Cet objet apparaît dans le volet gauche de l’interface. L’objet groupe de serveurs dans pgAdmin, est un conteneur d’organisation de l’affichage. Il ne correspond pas à un objet réel du serveur de base de données. On va commencer par donner un nom significatif à cet objet:

postgres pgadminAfficher le menu contextuel du groupe de serveurs et sélectionner Properties..

postgres pgadmin

Dans la fenêtre qui s’affiche, modifier le contenu du champ Name en « Serveurs de développement » et cliquer sur le bouton Save pour enregistrer.

Pour créer d’autres groupes de serveurs, si besoin, utiliser le menu contextuel d’un groupe de serveur existant: Create / Server Group... Ce menu affiche la même fenêtre utilisée pour la modification du nom. Saisir le nom et enregistrer.

Paramétrer un serveur de base de données

postgres pgadmin

Afficher le menu contextuel de l’objet Serveurs de développement puis sélectionner: Create / Server… Ceci affiche la fenêtre de paramétrage d’un nouveau serveur.

postgres pgadmin

Saisir le nom du serveur dans le champ Name: « Serveur local« .postgres pgadmin

Ensuite passer à l’onglet Connection (à sélectionner en haut de la fenêtre). Dans cet onglet renseigner les valeurs des champs comme indiqué. Pour rappel le mot de passe de l’utilisateur utappli est mputappli. Après la saisie enregistrer avec le bouton Save.

Ce sont les mêmes paramètres de connexion utilisés pour psql et dont les valeurs doivent correspondre à ceux du serveur PostgreSQL à paramétrer.

Améliorer le fonctionnement de pgAdmin 4

Se connecter au serveur nouvellement paramétré, si ce n’est pas déjà fait: menu contextuel du serveur et sélectionner Connect server. Après l’activation de la connexion, on peut accéder aux objets du serveur:

postgres pgadmin

  1. Le tableau de bord (à droite) s’anime avec des graphiques d’information sur le fonctionnement.
  2. Tous les objets du serveurs sont visibles dans le volet gauche.

Il n’est pas recommandé de garder cet affichage par défaut:

  1. L’affichage des graphiques est coûteux en ressources pour le serveur sans que l’information ne soit très utile, notamment dans un environnement de développement.

Pour s’en rendre compte, exécuter la commande système dans une console:

tail -f /home/jdupond/pgtest.log

Cette commande permet de suivre l’avolution du contenu du fichier de log du serveur. Elle permet dans notre cas de constater que plusieurs requêtes SQL sont exécutées en permanence. L’exécution continue de ces requêtes s’arrêtera si on se déconnecte du serveur (Menu contextuel de Serveur local puis Disconnect sever).

Si vous ne constatez pas l’exécution des requêtes dans le fichier de log comme indiqué, c’est que la génération des logs n’est pas configurée comme il est souhaité. Dans ce cas suivre la procédure expliquée dans l’article sur l’utilisation de PostgreSQL dans un environnement de développement, pour activer ce paramétrage.

Pour désactiver l’exécution de ces requêtes, on modifie le paramétrage de l’affichage du tableau de bord:

postgres pgadmin

Pour accéder à cette fenêtre de paramétrage, utiliser le menu: File / Preferences, puis sélectionner Dashboards / Graphs dans le volet de gauche.

Par défaut le temps de rafraîchissement des graphiques est paramétré à 1 seconde. Ceci explique l’exécution fréquente des requêtes qui récupèrent les données de ces graphiques. Modifier toutes les valeurs à 999999. Cela désactive l’exécution des requêtes mais aussi l’affichage des graphiques.

  1. L’affichage dans le volet gauche est trop chargé. Souvent, on n’a besoin d’afficher qu’un nombre limité de types de données. Ceci permet d’avoir une information beaucoup plus lisible dans l’interface.

postgres pgadmin

Pour accéder à cette fenêtre de paramétrage utiliser le menu: File / Preferences, puis sélectionner Browser /Nodes dans le volet gauche. Pour désactiver l’affichage d’un élément il suffit de cliquer sur l’icone Show dans le volet droit, qui se transforme alors en Hide.

Désactiver de la même manière tous les éléments sauf: Columns, Databases, Schemas , Sequences et Tables. Enregistrer avec le bouton Ok.

Après la validation de ce paramétrage, rafraîchir l’affichage: Sélectionner le serveur dans le volet gauche (Serveur local) ensuite actionner le menu contextuel Refresh..

postgres pgadmin

L’affichage apparaît maintenant avec les informations sélectionnées seulement.

 

Share

Administrer PostgreSQL avec psql

Postgres psql est un client en ligne de commande du serveur PostgreSQL. Il permet de se connecter au serveur de bases de données en local sur la machine serveur ou à distance depuis une autre machine. Une fois connecté, l’utilisateur autorisé peut exécuter des commandes spécifiques à psql qui retournent différentes informations utiles ou exécuter des requêtes SQL. A ce titre il constitue un outil léger et performant pouvant rendre de nombreux services au cours d’un développement qui utilise ce serveur de bases de données. Dans ce tutoriel le login de l’utilisateur authentifié sur la machine est supposé être jdupond. Pour exécuter les commandes des exemples, remplacer toujours ce login par le votre.

Cet article fait partie d’une série qui concerne le serveur de bases de données PostgreSQL et son utilisation dans un environnement de développement:

  1. Installation de base de PostgreSQL
  2. Utiliser Postgres pgAdmin 3 pour administrer PostgreSQL
  3. Installer PostgreSQL 10
  4. Reconfigurer l’installation par défaut de PostgreSQL 10
  5. Utiliser PostgreSQL 10 dans un environnement de développement
  6. Cet article: Administrer PostgreSQL avec psql
  7. Postgres pgAdmin 4 : installation et configuration
  8. Postgres pgAdmin 4: Utilisation courante

Connexion au serveur PostgreSQL

La commande de connexion est de la forme suivante:

psql -h <AdresseServeur> -p <Port> -U <UtilisateurBDD> -d <BaseDeDonnees>

Aucun des 4 paramètres n’est obligatoire. Quand l’un de ces paramètres n’est pas fourni, sa valeur par défaut est prise en compte:

Paramètre Contenu Valeur par défaut
h Adresse de la machine serveur de base de données Connexion en local par le socket Unix
p Port de connexion sur la machine serveur 5432
U Utilisateur de base de données login de l’utilisateur qui exécute la commande
d Base de données login de l’utilisateur qui exécute la commande

A titre de test, exécuter:

psql

La commande échoue, le message d’erreur indique qu’il n’y a pas de BDD qui a pour nom le login. Si on exécute:

psql -d postgres

La connexion réussit dans le cas d’un cluster personnalisé pour l’utilisateur authentifié.

Pour se connecter en tant que utappli sur la BDD bdappli:

psql -h localhost -U utappli -d bdappli

La commande demande le mot de passe car utappli est soumis à ce type d’authentification, puis réussit.

Se souvenir de la BDD par défaut et des mots de passe

Il existe deux paramétrages possibles qui permettent de simplifier la commande de connexion.

  • Modifier la BDD à utiliser par défaut.

Pour cela créer le fichier .postgresqlrc comme suit:

vi /home/jdupond/.postgresqlrc

Son contenu doit être:

10  pgtest  bdappli

Exécuter après avoir enregistré:

psql

La connexion réussit. La BDD à laquelle on se connecte est bdappli qui remplace, par défaut, le login de l’utilisateur.

  • Se souvenir du mot de passe de l’utilisateur de connexion

Pour se connecter en tant que utappli, psql demande de saisir le mot de passe à chaque fois. Ce comportement peut être modifié en renseignant le mot de passe dans le fichier /home/jdupond/.pgpass

Créer ce fichier avec le contenu (mputappli est le mot de passe de utappli):

localhost:5432:*:utappli:mputappli

Ce nouveau fichier contenant un mot de passe, il faut le sécuriser:

chmod 600 /home/jdupond/.pgpass

Exécuter ensuite:

psql -h localhost -U utappli -d bdappli

La connexion réussit sans demander le mot de passe de l’utilisateur.

Utiliser les commandes psql

En plus de la capacité d’exécuter des requêtes SQL, l’utilitaire psql fournit un ensemble de commandes utiles pour l’exploitation du serveur.

Etant connecté au serveur PostgreSQL, à la base de données bdappli, avec l’utilitaire psql, on va tester un certain nombre de ces commandes. Exécuter l’une de ces commandes revient à la saisir et ensuite utiliser la touche entrée du clavier.

\?

Permet d’afficher la liste complète des commandes psql avec une description de leurs fonctions. Remarquer que ces commandes commencent toujours par le caractère backslash (\).

\h select

Fournit une explication complète de la syntaxe de la commande SQL select. La commande psql \h est un aide mémoire précieux du langage SQL.

\l

Affiche la liste des bases de données du serveur.

\dn

Affiche la liste des schémas de la base de données active.

\d commerce.*

Affiche les informations à propos de toutes les tables du schéma commerce. Remarquer la table créée automatiquement pour gérer la séquence du champ id

\d commerce.produits

Affiche les informations à propos de la table produits du schéma commerce.

Echanger les données avec des fichiers

Créer le fichier /home/jdupond/produits.csv avec le contenu:

CU;clé usb 500 Go
EC;ecran 26 pouces
SR;souris 3 boutons
CA;clavier azerty

Se connecter à la base de données bdappli et exécuter les deux requêtes l’une après l’autre:

copy commerce.produits(code,nom) from '/home/jdupond/produits.csv' (format csv, delimiter ';', header, encoding 'utf8');
select * from commerce.produits;

Comme le montre le résultat de la deuxième requête, le contenu du fichier a été transféré dans la table de la base de données.

Exécuter maintenant:

copy commerce.produits to '/home/jdupond/extraction_produits.csv' (format csv, delimiter ';', header, encoding 'utf8');

Le contenu entier de la table est transféré dans le fichier indiqué et au format indiqué.

Le contenu transféré peut être partiel, selon une condition, en utilisant une requête SQL:

copy (select * from commerce.produits where id=1 or id=2) to '/home/ameddeb/dvlp/travaux/pgdoc/extractionl_produits.csv' (format csv, delimiter ';', header, encoding 'utf8');

Seulement les deux enregistrements demandés ont été transférés.

Exécuter une requête SQL depuis le shell système

Postgres psql permet d’exécuter une requête SQL sans se connecter préalablement au serveur. Depuis le shell, exécuter:

psql -c "select * from commerce.produit;"

Le résultat est affiché sur la console.

Exécuter un script SQL depuis un fichier

Créeer le fichier /home/jdupond/cree_prix.sql avec le contenu:

create table commerce.prix(id serial, produitid int, prixachat numeric(7,2), prixvente numeric(7,2));
insert into commerce.prix(produitid, prixachat, prixvente) values(1, 6.2, 7.35);
insert into commerce.prix(produitid, prixachat, prixvente) values(2, 230.5, 274.75);

Ensuite exécuter depuis le shell système:

psql -f /home/jdupond/cree_prix.sql
psql -c "select * from commerce.prix;"

Le script s’exécute, crée la table et y insère deux enregistrements. Le résultat de la requête exécutée après le script le confirme.

Share