[creation]copie de fichier dans le home

Mise à jour / Création /debug de paquetages
gilles74
Hankyu
Messages : 30
Inscription : dim. 19 déc. 2010, 09:15

[creation]copie de fichier dans le home

Message par gilles74 »

bonjour,

j'ai créé un paquet qui fonctionne et je voudrai copier un fichier de configuration de /usr/share dans /home/user/.fichier.conf
j'ai mis une commande cp dans le .install mais il copie le fichier dans /root/ (normal c'est le $HOME durant l'installation)

comment faire pour le copier dans le /home/user ?

pkbuild

Code : Tout sélectionner

pkgname=tv_grab_fr_iphone-2.8.7
pkgver=0
pkgrel=1
pkgdesc="Récupérateur de programmes TV français"
arch=('i686' 'x86_64')
url="http://www.moreau37.fr/index.php?option=com_content&view=category&id=38&Itemid=70"
license=('GPL')
depends=( 'perl-libwww' 'perl-datetime' 'perl-xml-simple' 'perl-dbi'
			'grab_icons_xmltvids')
makedepends=( 'wget' )
install='tv_grab_fr_iphone.install'
md5sums=()

if  [[ ! -d $srcdir/$pkgname-$pkgver ]]; then
	mkdir -p $srcdir/$pkgname-$pkgver
fi

build() {
	cd "$srcdir/$pkgname-$pkgver"
	wget  ftp://www.moreau37.fr/pub/tv_grab_fr_iphone-latest.tar.gz                                                                                                                                                                                                                                        
	tar xvzf tv_grab_fr_iphone-latest.tar.gz   
	rm *.gz
	
	mkdir -p $startdir/pkg/usr/sbin
	mkdir -p $startdir/pkg/usr/share/mythtv-fr/tv_grab_fr_iphone
	install -m0755 ${srcdir}/$pkgname-$pkgver/tv_grab_fr_iphone.pl $startdir/pkg/usr/sbin/
	install -m0644 ${srcdir}/$pkgname-$pkgver/tv_grab_fr_iphone-cron.sh $startdir/pkg/usr/share/mythtv-fr/tv_grab_fr_iphone/
	install -m0644 ${srcdir}/$pkgname-$pkgver/tv_grab_fr_iphone.conf $startdir/pkg/usr/share/mythtv-fr/tv_grab_fr_iphone/
	
}
.install

Code : Tout sélectionner

post_install() {
	ln -sf /usr/share/mythtv-fr/icons_xmltvids/lookup_tv_grab_fr_iphone.txt /usr/share/mythtv-fr/icons_xmltvids/lookup.txt
	cp /usr/share/mythtv-fr/tv_grab_fr_iphone/tv_grab_fr_iphone.conf $HOME
 	rm $HOME/tv_grab_fr_iphone.conf $HOME/.tv_grab_fr_iphone
	echo "Veuillez adapter le fichier $HOME/.mythtv/tv_grab_fr_iphone.conf à vos souhaits"
}
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [creation]copie de fichier dans le home

Message par benjarobin »

Alors la philosophie de Archlinux est simple : On ne touche pas à la partition HOME !!!

Sinon pourquoi faire un lien symbolique alors qu'il peut être fait via : package(), ce que tu fais est très mal :-)
De plus le pkgname ne doit pas contenir de version
On n'utilise pas wget dans build, il y a source=() pour ceci
On ne fait pas de mkdir en dehors de build() ou package()...
La variable $startdir ne devrait pas être utilisée...

Désolé, il y en a sûrement d'autre :copain:
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [creation]copie de fichier dans le home

Message par FoolEcho »

J'ajoute une chose, sur le fond plus que la forme dont elle découle, particulièrement sous Arch.
gilles74 a écrit :j'ai créé un paquet qui fonctionne
Il ne s'agit pas seulement de faire un paquet fonctionnel. Comme l'a dit benjarobin, il y a une philosophie dans Arch et tout paquet doit donc répondre à certains critères (voir PKGBUILD , Makepkg , Standard_paquetage ). :)

Ce qui se répercute directement sur ta question. On te touche pas au HOME de qui que ce soit via l'installation d'un paquet. Soit le lancement de ton programme par l'utilisateur lui crée directement une configuration spécifique dans son HOME... soit à l'installation tu précises à l'utilisateur les manipulations qu'il a à faire, comme de copier le fichier de configuration depuis un certain emplacement (par exemple depuis /etc/skel/).
«The following statement is not true. The previous statement is true.» :nage:
gilles74
Hankyu
Messages : 30
Inscription : dim. 19 déc. 2010, 09:15

Re: [creation]copie de fichier dans le home

Message par gilles74 »

merci pour vos réponses et votre patience

et j'ai bien compris la leçon:
1) on ne touche pas au home dans un pkgbuild
2) je dois revoir ma copie ...
3) il ne faut pas se fier au paquet sous AUR qui respecte pas toujours les standards d'arch

je re-travaille mon pkgbuild et je reviens vous le soumettre

merci encore
gilles74
Hankyu
Messages : 30
Inscription : dim. 19 déc. 2010, 09:15

Re: [creation]copie de fichier dans le home

Message par gilles74 »

suite à vos remarques, voici les fichiers modifiés

PKGBUILD

Code : Tout sélectionner

pkgname=tv_grab_fr_iphone
pkgver=2.8.7
pkgrel=1
pkgdesc="Récupérateur de programmes TV français"
arch=('i686' 'x86_64')
url="http://www.moreau37.fr/index.php?option=com_content&view=category&id=38&Itemid=70"
license=('GPL')
depends=( 'perl-libwww' 'perl-datetime' 'perl-xml-simple' 'perl-dbi')
optdepends=('grab_icons_xmltvids')
install='tv_grab_fr_iphone.install'
source=("ftp://www.moreau37.fr/pub/tv_grab_fr_iphone-$pkgver.tar.gz"
		'tv_grab_fr_iphone-cron.sh'  'tv_grab_fr_iphone.conf' 
		'conffile.patch')
md5sums=('ebc7b6956a27ee4ed71d06f99dc58094'
         '4810edf71ae0f27d48cee1387256ca7f'
         'f1ca7149c02ee6c697f12d98fb5d3484'
         '10d0804f8f808edee45da8c7c00ccab3')

build() {
	cd ${srcdir}
	patch -p1 < ${srcdir}/conffile.patch
}

package() {
	mkdir -p $pkgdir/usr/sbin
	mkdir -p $pkgdir/usr/share/mythtv-fr/tv_grab_fr_iphone
	install  -m0755 ${srcdir}/tv_grab_fr_iphone.pl "$pkgdir/usr/sbin/tv_grab_fr_iphone"
	install  -m0644 ${srcdir}/tv_grab_fr_iphone-cron.sh "$pkgdir/usr/share/mythtv-fr/tv_grab_fr_iphone/tv_grab_fr_iphone-cron"
	install  -D -m0644 ${srcdir}/tv_grab_fr_iphone.conf "$pkgdir/etc/mythtv-fr/tv_grab_fr_iphone.conf"
}
le .install

Code : Tout sélectionner

post_install() {
	echo ''
	echo "Veuillez adapter le fichier $HOME/.mythtv/tv_grab_fr_iphone.conf à vos souhaits"
	echo "N'oubliez pas de mettre en place la tache cron - /usr/share/mythtv-fr/tv_grab_fr_iphone/tv_grab_fr_iphone-cron.sh"
        echo "Consulter le site http://www.moreau37.fr/index.php?option=com_content&view=category&id=38&Itemid=70"
}


post_remove() {
	echo "N'oubliez pas de supprimer la tache cron "
}
le patch qui permet de copier le fichier de conf dans le home

Code : Tout sélectionner

diff -aur origine/tv_grab_fr_iphone.pl new/tv_grab_fr_iphone.pl
--- origine/tv_grab_fr_iphone.pl	2012-05-05 11:31:19.000000000 +0200
+++ new/tv_grab_fr_iphone.pl	2012-05-25 00:11:06.751067721 +0200
@@ -136,7 +136,11 @@
                     );
 
 # defaults values of configuration (command line or config file)
-my $cnf_conffile = "$ENV{HOME}/.tv_grab_fr_iphone";
+my $commande = "cp /etc/mythtv-fr/tv_grab_fr_iphone.conf $ENV{HOME}/.mythtv/tv_grab_fr_iphone.conf";
+system($commande);
+
+my $cnf_conffile = "$ENV{HOME}/.mythtv/tv_grab_fr_iphone.conf";
+
 my @cnf_days_offsets = ( 0 );
 my $cnf_days_number = 1;
 my $cnf_output;
Est ce que celà respecte le philosophie et les standards ? ou y-a-til encore des problèmes ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [creation]copie de fichier dans le home

Message par benjarobin »

100 fois mieux :-) Mais tu es sûre de ton patch, je n'ai regardé que le patch donc je peux dire une bêtise :P .
J'aurais plus vu quelque chose comme ceci (La flemme d'écrire le vrai code)

Code : Tout sélectionner

-my $cnf_conffile = "$ENV{HOME}/.tv_grab_fr_iphone";
+my $cnf_conffile = "$ENV{HOME}/.mythtv/tv_grab_fr_iphone.conf";
+# Si le fichier $cnf_conffile n'existe pas alors
+   my $commande = "cp /etc/mythtv-fr/tv_grab_fr_iphone.conf $cnf_conffile";
+   system($commande);
+#Fin du si
+
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Répondre