> Tous les forums > Forum Linux
 freeBSD : problème avec bashSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Mimile
  Posté le 21/03/2015 @ 11:26 
Aller en bas de la page 
Astucien

Bonjour,

Je poste ici vu qu'il n'y a pas de forum freeBSD.

Il a quelque temps, par curiosité, j'ai installé freeBSD + KDE en invité d'Archlinux avec virtualbox. Puis, après quelques heures passées dessus, je l'ai délaissée.

Ma Archlinux étant - de mon point de vue - complète, je dois avouer que je ne lui trouve plus grand intérêt vu que je ne l'utilise que pour surfer sur le net, visionner des films, écouter mes MP3 et prendre connaissance des nouveautés. Pour le reste, j'utilise W7 par obligation professionnelle.

Pour le fun, je me suis donc retourné vers la freeBSD installée en virtuel et petit à petit, j'ai commencé à la peaufiner.

J'ai transféré quelques scripts bash et perl se trouvant sur une clef USB devenue accessible après avoir installé les additions clients de linux (je n'en ai pas trouvé de typiquement destinée à freeBSD).

Comme freeBSD n'utilise pas bash (il utilise chsh), il ne m'a été possible, dans un premier temps, que d'exécuter les scripts perl.

En me promenant sur le Google, j'ai trouvé un site indiquant comment installer bash en trois lignes de commande :

# portsnap update extract
# cd /usr/ports/shells/bash
# make install clean

Ensuite, pour faire en sorte que chsh soit remplacé par bash :

To set bash as default, shell enter:
# chsh -s /usr/local/bin/bash {username}
# chsh -s /usr/local/bin/bash {username}
# chsh -s bash

Enfin, pour vérifier que bash était bien devenu mon shell :

[okapi@FreeBSD /usr/home/okapi/Telechargement]$ finger okapi
Login: okapi Name: Emile D....
Directory: /home/okapi Shell: /usr/local/bin/bash
On since Sat Mar 21 10:23 (CET) on :0 (messages off)
On since Sat Mar 21 10:23 (CET) on pts/0, idle 0:26, from :0
On since Sat Mar 21 10:25 (CET) on pts/1 (messages off) from :0
No Mail.
No Plan.

A ce stade, je me dis que je vais pouvoir exécuter mes scripts bash.

Hélas :

[okapi@FreeBSD /usr/home/okapi]$ whereis bash
bash: /usr/local/bin/bash /usr/local/man/man1/bash.1.gz /usr/ports/shells/bash
[okapi@FreeBSD /usr/home/okapi]$ cd Telechargement/
[okapi@FreeBSD /usr/home/okapi/Telechargement]$ /usr/local/bin/bash imgur.sh
sudo: no askpass program specified, try setting SUDO_ASKPASS

Là où je suis perdu, c'est au niveau de la dernière phrase.

Qu'est qu'un askpass program ? A mon avis, c'est en rapport avec sudoers.

Enfin, quand j'essaye de lancer le script en double-cliquant sur son icône sur le bureau, la réponse est : KDEInit could'nt launch ...

Quelqu'un peut-il m'aider ?

Merci d'avance.



Modifié par Mimile le 21/03/2015 11:30
Publicité
Logicien
 Posté le 21/03/2015 à 14:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour Mimile,

toujours en train d'expérimenter en Linux/BSD, même si Windows 7 te garde avec lui. Tout d'abord, l'interpréteur de commandes chsh n'existe pas. L'intepréteur de commandes par défaut sous FreeBSD est Csh. chsh est une commande pour changer l'interpréteur de commandes dans la configuration de l'utilisateur et comme tu le montres, changer à la volée d'intrepréteur de commandes.

Tu aurais pu installer Bash via le dépôt binaire de FreeBSD

pkg install bash

L'installation à l'aide des ports est aussi bonne. Je pense qu'il peut être utile de fermer sa session de d'en ouvrir une nouvelle après avoir changer l'interpréteur de commandes par défaut d'un utilisateur. C'est bien certain que si le script Bash que tu veux faire exécuter requiert les droits root, alors, tu devras l'exécuter en root, ou bien utiliser sudo, voir su pour le faire.

Je pense que sudo peut être installé via de dépôt binaire de FreeBSD, sinon via les ports. Il faut sous FreeBSD, comme sous Linux, que l'utilisateur soit dans le groupe qui permet d'utiliser sudo. C'est décrit quand tu édites en root le fichier /etc/sudoers.



Modifié par Logicien le 21/03/2015 14:03
Mimile
 Posté le 21/03/2015 à 16:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bash et sudo sont bel et bien installés et j'ai modifié sudoers en sorte que je ne doive plus fournir mon mot de passe root quand je lance une commande avec sudo.

Au passage, je m'étonne quand tu dis que chsh n'existe plus.

En effet, quand j'ai exécuté les commandes

# chsh -s /usr/local/bin/bash {username}
# chsh -s /usr/local/bin/bash {username}
# chsh -s bash

je n'ai pas eu de retour négatif du genre command not found.

Juste pour voir, j'ai exécuté pkg install bash ce qui donne :

[okapi@FreeBSD /usr/home/okapi]$ sudo pkg install bash
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
Checking integrity... done (0 conflicting)
The most recent version of packages are already installed

Donc, en ce qui concerne bash, tout me semble en ordre.

Le script que j'essaye de faire fonctionner ne requiert pas les droits root.

Il s'agit en fait d'un petit script qui permet d'uploader une image sur le site imgur, lequel renvoie l'URL de l'image et de sa miniature.

Très simple de fonctionnement : quand on le lance, il ouvre le dossier ~/Images ; on choisit celle que l'on veut et on valide. 2 ou 3 secondes plus tard, on obtient les URL en retour.

C'est utile car j'agrémente souvent mes postes ou mes réponses de captures.

Depuis que j'ai modifié sudoers, je n'ai plus la réponse : sudo: no askpass program specified, try setting SUDO_ASKPASS

Maintenant, quand je lance mon script, j'obtiens ceci :

- en root :

[okapi@FreeBSD /usr/home/okapi/Telechargement]$ sudo /usr/local/bin/bash imgur.sh
No protocol specified

** (zenity:2942): WARNING **: Could not open X display
No protocol specified

(zenity:2942): Gtk-WARNING **: cannot open display: :0
Exiting

En simple utilisateur :

[okapi@FreeBSD /usr/home/okapi/Telechargement]$ /usr/local/bin/bash imgur.sh
sudo: imgur.sh: command not found

Je précise que j'ai bien indiqué que ce script était exécutable.

Dernière bizarrerie : quand je lance dolphin, mon dossier Telechargement se trouve dans ma partition /home

Quand je lance konqueror, ce dossier se trouve dans /usr/home ...

Décidément freeBSD n'en fait qu'à sa tête

Logicien
 Posté le 21/03/2015 à 17:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

J'ai seulement dit qu'il n'existe pas d'interpréteur de commandes chsh. Il existe bien une commande nommée chsh qui devrait te dire tout ce qu'elle fait en lisant la page de manuel

man chsh

Pour pouvoir avoir accès à l'interface graphique d'okapi en super-utilisateur root ou avec sudo, tu dois d'abord exécuter la commande

xhost +

sous le compte akopi. Alors seulement tu peux exécuter la commande

sudo /usr/local/bin/bash imgur.sh

Quand tu en as fini, tu fais

xhost -

Assure-toi que le script imgur.sh est dans le chemin de recherche des exécutables de Bash. Fait

echo $PATH

pour le savoir. Si le script n'est pas dans le chemin de recherche des exécutables de Bash, tu dois donner le chemin complet vers le script ou le copier/déplacer vers un des chemins de recherches affiché, ou ajouter son chemin aux chemins de recherches de Bash en modifiant la variable d'environnement PATH.

Si le script fait référence à des commandes qui ne sont pas dans le chemin de recherche des exécutables de Bash, il faut configurer les chemins de recherche ou le script en conséquences. Évidemment, toutes les commandes exécutées par le script doivent être installées.



Modifié par Logicien le 21/03/2015 17:07
Mimile
 Posté le 22/03/2015 à 11:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour Paul,

Merci pour ta précédente réponse.

Voici ce que me renvoie echo $PATH :

[okapi@FreeBSD ~]$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/okapi/bin

j'ai vérifié le texte de mon script et je me suis rendu compte qu'il faisait appel à yad (fork de zenity) ; vérification faite, yad n'était pas installé ce à quoi j'ai remédié.

Ensuite, j'ai exécuté xhost + puis sudo /usr/local/bin/bash imgur.sh

ce qui a renvoyé :

[okapi@FreeBSD ~]$ sudo /usr/local/bin/bash /home/okapi/Scripts/imgur.sh
This option is not available. Please see --help for all possible usages.
Exiting

De quelle option peut-il s'agir ?

Si je n'utilise pas sudo :

[okapi@FreeBSD ~]$ /usr/local/bin/bash /home/okapi/Scripts/imgur.sh
sudo: unable to execute /home/okapi/Scripts/imgur.sh: No such file or directory

J'en déduis, selon ce que tu as écrit dans ton précédent message que imgur.sh n'est pas dans le chemin de recherche des exécutables de bash.

Pourtant, dans les deux cas, j'ai bien indiqué le chemin complet du script.

Bash n'est-il pas censé exécuté tous les script *.sh dès lors qu'ils sont définis comme étant exécutables ?

Je n'y comprends plus rien ... d'autant que le script perl fonctionne très bien.

(soupir d'agacement).

Cordialement

EDIT : Je m'aperçois que mon script fait appel à la fonction SED, ce qui explique peut-être pourquoi l'exécution du script ne peut pas s'effectuer.

Or, SED est absent des repositories (dépôts ?) qui sont déclarés à jour et ne peut donc pas être installé.

Ce qui est étrange, c'est qu'il y a un man pour SED.

Dès lors, pourquoi fournir un man pour une programme qu'on ne peut pas installer ?



Modifié par Mimile le 22/03/2015 12:35
Logicien
 Posté le 22/03/2015 à 12:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Mimile, tu es déjà sous Bash quand tu ouvres un terminal depuis que tu as fais de Bash ton interpréteur de commandes par défaut. Alors, il n'est pas nécessaire de faire précéder ton script par le chemin complet vers Bash. Seulement

/home/okapi/Scripts/imgur.sh

devrait être suffisant. Au fait, qu'est ce que retourne la commande

ls -l /home/okapi/Scripts/imgur.sh

Et puis, si tu veux me montrer le contenu du script, je serais curieux de le voir.

En ce qui concerne sed, il doit être installable via les ports s'il n'y a pas de version binaire pré-compilée.

Mimile
 Posté le 22/03/2015 à 13:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Voici ce que donne ta première suggestion :

[okapi@FreeBSD ~]$ /home/okapi/Scripts/imgur.sh
bash: /home/okapi/Scripts/imgur.sh: /bin/bash: bad interpreter: No such file or directory

bad interpreter ? Pourtant /bin est bien dans le $PATH.

La seconde :

[okapi@FreeBSD ~]$ ls -l /home/okapi/Scripts/imgur.sh
-rwxr-xr-x 1 okapi okapi 2318 Mar 22 12:07 /home/okapi/Scripts/imgur.sh

Le script (pastebin) :

http://pastebin.archlinux.fr/898765

Pour le surplus, pourrais-tu m'expliquer comment installer SED par les ports ?

EDIT : Il semblerait que sous freeBSD, sed soit remplacé par gsed et il y a effectivement un port qui lui est consacré.

J'ai lu sur un site que gsed était sed doté d'une fonction supplémentaire.

Je l'ai installé et j'ai remplacé les trois opérations sed du script par gsed ... sans résultat.



Modifié par Mimile le 22/03/2015 14:27
Logicien
 Posté le 22/03/2015 à 16:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Je n'ai pas lu la totalité du script, mais je sais que la ligne numéro 1

#!/bin/bash

doit être remplacée par

#!/usr/local/bin/bash

Au sein des distributions Linux, Bash est un composant de base du sytème et fait parti des binaires de la racine /bin. C'est l'interpréteur de commandes par défaut de plusieurs distributions.

Sous FreeBSD, Bash est un programme utilisateur et ces derniers sont installés dans /usr/local/bin . Ce n'est pas un composant de base. C'est Csh qui est l'interpréteur de commandes par défaut et se trouve à la racine /bin.



Modifié par Logicien le 22/03/2015 17:02
Mimile
 Posté le 23/03/2015 à 02:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Cher Paul,

Voici enfin un résultat positif

J'ai effectivement modifié la 1ère ligne du script comme tu l'as indiqué (#!/usr/local/bin/bash au lieu du #!/bin/bash) après avoir exécuté xhost+.

J'ai également dû modifier les 3 opérations "sed" par "gsed".

Pour éviter de devoir chaque fois exécuter xhost +, je l'ai intégré à mon script à son début et j'ai indiqué xhost - avant la fin.

En ligne de commande, j'ai exécuté "/home/okapi/Scripts/imgur.sh".

Aussitôt, mon dossier ~/Images s'est ouvert. J'en ai choisi une au hasard et cela m'en renvoyé :

/home/okapi/Images/EBTX_028.JPG
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 37847 0 445 100 37402 178 14981 0:00:02 0:00:02 --:--:-- 14978
0 0 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0curl: (7) Failed to connect to 2 port 80: No route to host
<image_hash>uQUGgF1<delete_hash>nXIEfBOUD57olUD<original_image>https://i.imgur.com/uQUGgF1.jpg<large_thumbnail>https://i.imgur.com/uQUGgF1l.jpg<small_thumbnail>https://i.imgur.com/uQUGgF1s.jpg<imgur_page>http://imgur.com/uQUGgF1<delete_page>http://imgur.com/delete/nXIEfBOUD57olUD

Puis aussitôt après :

Et les URL donnent :

En grandeur normale (1ère URL) :

Et son thumbnail (2ème URL)

Ca marche très bien en ligne de commande mais si je transfère l'icône qui se trouve dans le dossier ~/Scripts sur le bureau, un double-clic sur celle-ci ne donne rien malgré que j'aie coché la case "est exécutable".

Je pense que le simple transfert ne convient pas et il faudrait que j'utilise une méthode pour créer un "vrai" lanceur sur le bureau.

J'ai lu sur un site qu'il suffisait de créer dans le dossier ~/Bureau (en fait : ~/Desktop) un fichier "quelconque.desktop" ; en l'occurrence imgur.desktop contenant :

[Desktop Entry]
Encoding=UTF-8
Icon=/usr/local/share/icons/Adwaita/32x32/apps/applets-screenshooter.png
Name=imgur
Exec=/home/okapi/Scripts/imgur.sh

Je l'ai transféré sur le bureau mais je rencontre un problème : quand je double-clique sur l'icône, j'ai en réponse :

Le fichier de configuration de ... ne contient pas de ligne "Type= ..."

Je ne sais pas ce que je dois indiquer à ce niveau.

Une idée ?

Merci d'avance et bonne nuit (il est 2:34 AM) chez moi et bonne fin de journée à toi.

Amicalement,



Modifié par Mimile le 23/03/2015 02:39
Publicité
reivillo
 Posté le 23/03/2015 à 08:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour Mimile.

Essaye d'ajouter:

Type=Application

Dans ton fichier.desktop

Reivillo.

Note: Pour Éditer le Fichier d'un Lanceur quelconque, sauf Dossier ( pour l'avoir comme Exemple ),
tu peux ouvrir un nouveau Fichier texte, et y Glisser/déposer ce Lanceur quelconque dedans...



Modifié par reivillo le 23/03/2015 08:24
Mimile
 Posté le 23/03/2015 à 09:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Salut Reivillo

J'ai déjà essayé la solution que tu indiques (Type=Application).

Quand je transfère l'icône de fichier imgur.desktop sur le bureau et que je clique dessus, il ne se passe rien sinon qu'une miniature de l'icône danse la danse de Saint-Gui pendant une dizaine de secondes sans afficher de message.

Si je n'indique pas le Type, quand je clique sur l'icône, j'ai un message qui attire mon atention sur le fait qu'aucun Type n'est indiqué.

J'ai vu quelque part qu'on pouvait indiquer, au lieu d'Application, Links et Relay.

Quand je mets Links, message disant qu'il manque l'URL ... Je n'ai pas essayé avec Relay.

Cela dit, est-ce qu'un script bash peut être considéré comme une application ?

Je pense que le mot "application" fait référence aux différents logiciels qui apparaissent dans le menu K.

Mais alors, que faut-il indiquer à Type ?

------------------------------------------------------------------------------------------------------

EDIT : PROBLÈME ENFIN RÉSOLU

J'avais ajouté xhost + avant "cd /home/okapi/Images (voir le pastebin plus haut - ma réponse du 22.03.2015 - 13 h 36) dans mon script imgur.sh.

Mon erreur a été de ne pas le mettre carrément avant la première ligne d'instructions ([ "`whoami`" != "root" ] && exec sudo -A ${0} ${@})

Erreur corrigée et icône opérationnelle (j'en ai profité pour empêcher le retour qui provoquait l'agaçante danse de Saint-Gui de la miniature de l'icône).

Merci à tous et - évidemment plus particulièrement à Logicien - pour vos interventions.

Cordialement

EDIT-bis : accessoirement, à l'intention de ceux qui se lanceraient dans l'aventure freeBSD, je signale que pour que TOUT soit en français, il faut modifier le fichier (caché) /home/le_nom_de_l'user/.login.conf en supprimant les ## qui désactivent les lignes de code.

Cela donne, chez moi :

# $FreeBSD: releng/10.1/share/skel/dot.login_conf 77995 2001-06-10 17:08:53Z ache $
#
# see login.conf(5)
#
me:\
:charset=iso-8859-1:\
:lang=fr_BE.ISO8859-1:

J'ai mis lang=fr_BE.ISO8859-1 parce que je suis en Belgique. Pour la france, c'est évidemment "fr_FR.ISO8859-1" (ce qui est d'ailleurs indiqué d'office).

Voilà.



Modifié par Mimile le 23/03/2015 11:22
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Problème de boot avec handy linux
Problème pour installer fichier msi. avec Wine
Problème Clavier avec Linux Mint 17.1
Problème avec LinuxMint.
probleme d'affichage avec mozilla sous manjaro
problème avec gparted
Problème authentification ldap sur PDC avec samba
Problème de restauration de partition avec Seagate Diskizard sous LINUX
Manipuler l'historique des commandes avec Bash
Problème video devient bleu avec webcam
Plus de sujets relatifs à freeBSD : problème avec bash
 > Tous les forums > Forum Linux