[aur] mon premier PKGBUILD et je coince.

Mise à jour / Création /debug de paquetages
Répondre
Avatar de l’utilisateur
thieume
Hankyu
Messages : 33
Inscription : ven. 21 juin 2013, 10:15
Localisation : Ile de France

[aur] mon premier PKGBUILD et je coince.

Message par thieume »

Bonjour,
J'utilise pas mal Teamdrive, et je vois sur AUR que le package n'est pas mis à jour par son "proprio". J'aimerai bien lui proposer une mise à jour, et j'ai modifié son PKGBUILD. Avant de le proposer, j'aimerai bien le tester. Du coup, dans le répertoire du pkgbuild, je lance un coup de "makepkg". Et là, ca coince dans le build() :
Erreur lors de la création du répertoire /home/matthieu/Spaces/Temporaire/aur.teamdrive/pkg/teamdrive3
Abort
Une erreur s'est produite.
Unable to create directory
==> ERREUR : Une erreur s’est produite dans build().
Abandon...
Je regarde de plus près dans le répertoire et je vois le répertoire "pkg" crée, avec les permissions suivantes :
4 d--------- 2 matthieu users 4096 5 sept. 19:50 pkg
Si, je lance makepkg en root, j'ai un bon gros Warning dissuasif : Ca doit pas etre la marche à suivre.
C'est quoi la technique pour que le test fonctionne ?

Merci d'avance.
Matthieu.

PS: Je colle le PKGBUILD...

Code : Tout sélectionner

# Former maintainer: Xunhua Guo <xunhua.guo@gmail.com>
# Maintainer: Robert Orzanna <orschiro@gmail.com>
pkgname=teamdrive3
pkgver=3.1.2_454
pkgrel=2
pkgdesc="Keeps data synchronised between various computers automatically."
arch=('i686' 'x86_64')
url="http://www.teamdrive.com/"
license=('CUSTOM')
depends=('')
if [[ "$CARCH" == "x86_64" ]]; then
	depends=('lib32-qt4'
			'lib32-glib2'
			'lib32-libxext'
			'lib32-libxrender'
			'lib32-fontconfig'
			'lib32-libsm'
			'lib32-sqlite'
			)			
fi
source=("http://s3download.teamdrive.net.s3.amazonaws.com/3.1.454/TMDR/linux/Install-TeamDrive-3.1.2.454_TMDR.run"
		"teamdrive3.desktop")
options=(!strip)
md5sums=('f4053c9216f62470053965528f56a424'
         '57b300b6333c515fd6785b5d8eda48a1')

build() {
    
    cd $srcdir

    chmod +x Install-TeamDrive-3.1.2.454_TMDR.run

    ./Install-TeamDrive-3.1.2.454_TMDR.run --mode unattended --prefix $pkgdir/opt/teamdrive3
   
    install -Dm644 "$srcdir/teamdrive3.desktop" "$pkgdir/usr/share/applications/teamdrive3.desktop"
}

package() {

    rm "$pkgdir/opt/teamdrive/Uninstall TeamDrive 3.desktop"
    rm "$pkgdir/opt/teamdrive/uninstall"
}
Matthieu.
jean_no
yeomen
Messages : 284
Inscription : dim. 09 sept. 2007, 12:19

Re: [aur] mon premier PKGBUILD et je coince.

Message par jean_no »

Salut

donnes nous toutes les commandes que tu as utilisé, ainsi que la sortie de la compilation.
Si je lance makepkg en root
Pas bien du tout. Ne compile jamais en root. root sert uniquement à administrer une machine, pas pour contourner les problèmes utilisateur...

A+
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [aur] mon premier PKGBUILD et je coince.

Message par benjarobin »

Peux tu donner la sortie de la commande : mount
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
thieume
Hankyu
Messages : 33
Inscription : ven. 21 juin 2013, 10:15
Localisation : Ile de France

Re: [aur] mon premier PKGBUILD et je coince.

Message par thieume »

jean_no a écrit :donnes nous toutes les commandes que tu as utilisé, ainsi que la sortie de la compilation.
Ben, c'est déja fait :) . Le truc est que le pkgbuild doit aller chercher un binaire et lancer l'install de ce binaire après un chmod +x.
Je lance donc "makepkg" et j'ai la sortie citée dans mon premier message.

Pour le mount, je regarde ce soir.
Matthieu
Matthieu.
Avatar de l’utilisateur
Rolinh
Chu Ko Nu
Messages : 392
Inscription : sam. 15 août 2009, 09:15
Localisation : Suisse

Re: [aur] mon premier PKGBUILD et je coince.

Message par Rolinh »

thieume a écrit :

Code : Tout sélectionner

depends=('')
if [[ "$CARCH" == "x86_64" ]]; then
	depends=('lib32-qt4'
			'lib32-glib2'
			'lib32-libxext'
			'lib32-libxrender'
			'lib32-fontconfig'
			'lib32-libsm'
			'lib32-sqlite'
			)			
fi
Et dans le cas i686? Il n'y aurait pas besoin de sqlite, qt4, ...?
oktoberfest
Maître du Kyudo
Messages : 1855
Inscription : mer. 06 janv. 2010, 13:51
Localisation : Ried - Alsace - France

Re: [aur] mon premier PKGBUILD et je coince.

Message par oktoberfest »

J'ai essayé ton PKGBUILD et j'ai le même problème.
Si dans le PKGUILD je commente la ligne './Install-TeamDrive-3.1.2.454_TMDR.run --mode...' alors le paquet se créé.
Si je lance cette ligne à la main dans un shell, le répertoire pkg est bien créé et rempli et le tout avec les bon droits.
Par contre cette même ligne dans le PKGBUILD provoque la création d'un répertoire pkg sans droit.... Moi pas comprendre.

Si un expert es makepkg passe par là, il pourra éclairer ma lanterne.
La majorité des bugs se situe entre la chaise et le clavier...
Arrêtez de vous prendre la tête avec les partitions... passez au LVM
oktoberfest
Maître du Kyudo
Messages : 1855
Inscription : mer. 06 janv. 2010, 13:51
Localisation : Ried - Alsace - France

Re: [aur] mon premier PKGBUILD et je coince.

Message par oktoberfest »

Après avoir passé les yeux à l'eau claire ça va beaucoup mieux...
Les lignes ne sont pas au bon endroit dans le PKGBUILD

L'installation doit se faire dans la fonction package(), la fonction build() sert à compiler et ici il n'y a pas grand chose à compiler...

Pour le PKGBUILD je verrais bien un truc dans le genre :

Code : Tout sélectionner

# Former maintainer: Xunhua Guo <xunhua.guo@gmail.com>
# Maintainer: Robert Orzanna <orschiro@gmail.com>
pkgname=teamdrive3
pkgver=3.1.2_454
pkgrel=2
pkgdesc="Keeps data synchronised between various computers automatically."
arch=('i686' 'x86_64')
url="http://www.teamdrive.com/"
license=('CUSTOM')
depends=('')
if [[ "$CARCH" == "x86_64" ]]; then
   depends=('lib32-qt4'
         'lib32-glib2'
         'lib32-libxext'
         'lib32-libxrender'
         'lib32-fontconfig'
         'lib32-libsm'
         'lib32-sqlite'
         )         
fi
source=("http://s3download.teamdrive.net.s3.amazonaws.com/3.1.454/TMDR/linux/Install-TeamDrive-3.1.2.454_TMDR.run"
      "teamdrive3.desktop")
options=(!strip)
md5sums=('f4053c9216f62470053965528f56a424'
         '57b300b6333c515fd6785b5d8eda48a1')

build() {
   
    cd $srcdir

    chmod +x Install-TeamDrive-3.1.2.454_TMDR.run

}

package() {
    ./Install-TeamDrive-3.1.2.454_TMDR.run --mode unattended --prefix $pkgdir/opt/teamdrive3
    install -Dm644 "$srcdir/teamdrive3.desktop" "$pkgdir/usr/share/applications/teamdrive3.desktop"

    rm "$pkgdir/opt/teamdrive/Uninstall TeamDrive 3.desktop"
    rm "$pkgdir/opt/teamdrive/uninstall"
}
Il reste deux petits soucis :
- l'install se fait dans /opt, ce n'est pas forcément 'bien' sous Archlinux
- j'ai un warning lors de la création du paquet : "Le paquet contient une référence à  $pkgdir"
La majorité des bugs se situe entre la chaise et le clavier...
Arrêtez de vous prendre la tête avec les partitions... passez au LVM
Avatar de l’utilisateur
Rolinh
Chu Ko Nu
Messages : 392
Inscription : sam. 15 août 2009, 09:15
Localisation : Suisse

Re: [aur] mon premier PKGBUILD et je coince.

Message par Rolinh »

Et pourquoi ça ne serait pas propore de faire l'installation dans /opt ? Pour moi, un binaire livré tel quel a justement sa place dans /opt. Par ailleurs, certains paquets officiels s'installent, en partie en tout cas, dans /opt (urbanterror par exemple).
oktoberfest
Maître du Kyudo
Messages : 1855
Inscription : mer. 06 janv. 2010, 13:51
Localisation : Ried - Alsace - France

Re: [aur] mon premier PKGBUILD et je coince.

Message par oktoberfest »

Tu as tout à fait raison. C'est d'ailleurs expliqué dans le wiki --> https://wiki.archlinux.org/index.php/Ar ... c_packages
La majorité des bugs se situe entre la chaise et le clavier...
Arrêtez de vous prendre la tête avec les partitions... passez au LVM
Avatar de l’utilisateur
thieume
Hankyu
Messages : 33
Inscription : ven. 21 juin 2013, 10:15
Localisation : Ile de France

Re: [aur] mon premier PKGBUILD et je coince.

Message par thieume »

OK, merci pour le debug, je regarde tout cela, et surtout, je suis bon pour relire la différence entre build() package() et autre.... M'enfin, sur le coup, j'ai juste repris le précédent PKGBUILD sans rien toucher. La source était donc discutable :-)
Pour /opt, j'ai plein de bazar officiel ou AUR déja dedans. Du coup....

Matthieu.
Matthieu.
Avatar de l’utilisateur
thieume
Hankyu
Messages : 33
Inscription : ven. 21 juin 2013, 10:15
Localisation : Ile de France

Re: [aur] mon premier PKGBUILD et je coince.

Message par thieume »

oktoberfest a écrit :

Code : Tout sélectionner

package() {
    ./Install-TeamDrive-3.1.2.454_TMDR.run --mode unattended --prefix $pkgdir/opt/teamdrive3
Il reste deux petits soucis :
- j'ai un warning lors de la création du paquet : "Le paquet contient une référence à  $pkgdir"
Question idiote, on a le droit de coller des $pkgdir dans une procedure package() ?
Matthieu.
Matthieu.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [aur] mon premier PKGBUILD et je coince.

Message par benjarobin »

thieume a écrit :Question idiote, on a le droit de coller des $pkgdir dans une procedure package() ?
Bien sur que oui, mais dans la fonction build non
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Xorg
Maître du Kyudo
Messages : 1933
Inscription : dim. 22 janv. 2012, 19:25
Localisation : Entre le clavier et la chaise.

Re: [aur] mon premier PKGBUILD et je coince.

Message par Xorg »

thieume a écrit :
oktoberfest a écrit :

Code : Tout sélectionner

package() {
    ./Install-TeamDrive-3.1.2.454_TMDR.run --mode unattended --prefix $pkgdir/opt/teamdrive3
Il reste deux petits soucis :
- j'ai un warning lors de la création du paquet : "Le paquet contient une référence à  $pkgdir"
Question idiote, on a le droit de coller des $pkgdir dans une procedure package() ?
Matthieu.
Pour compléter la réponse de Benjarobin, on utilise la variable $pkgdir uniquement dans la fonction package, c'est-à-dire que tu n'as pas le droit de l'utiliser dans la fonction pkgver, prepare, build ou check, pour une des raison qui est que le dossier pkg en question est créé lorsque la fonction package est lancée.


En fait, un petit détail, à chaque nouvelle fonction, le répertoire courant est réinitialisé (à $startdir). Donc dans ta fonction package, il te faut aussi te placer dans le bon répertoire ! :wink:

Un détail qui devient vite important dans un PKGBUILD : utilise les variables. Comme leur nom l'indique, à chaque nouvelle version de TeamDrive 3, tu n'auras pas besoin de modifier tout ton PKGBUILD. Par exemple, vu que l'installateur s'appelle Install-TeamDrive-VERSION_TMDR.run, tu as tout à fait (et c'est même encouragé) le droit d'utiliser la variable "$pkgver" pour désigner ladite version. :)
Un autre petit point à soulever vis-à-vis des variables : c'est aussi un moyen de ne pas commettre d'erreurs, car un coup tu utilises le répertoire /opt/teamdrive3, et un coup le /opt/teamdrive. Le plus simple, c'est de faire appel à la variable qui contient le nom du paquet.

J'espère avoir pu t'aider dans la création de ton PKGBUILD, en te laissant le soin de faire les modifications toi-même. :chinois:
Arch Linux x86_64 - Sway
AMD Ryzen 5 3600X - 32 Go de DDR4 - SSD NVMe 1 To + SSD SATA 250 Go - Sapphire NITRO+ Radeon RX 580
Image AUR___Image Wiki___Image GitHub
Avatar de l’utilisateur
thieume
Hankyu
Messages : 33
Inscription : ven. 21 juin 2013, 10:15
Localisation : Ile de France

Re: [aur] mon premier PKGBUILD et je coince.

Message par thieume »

Bonjour,

Je continue dans ma lancée et j'aurais besoin d'un conseil pour éviter (ou pas) de faire mon goret sur AUR.
Le mainteneur du pkgbuild que j'aimerai aider ne me répond pas à ma demande par mail de reprise de maintenance (j'ai été super poli :-) et rien ne bouge depuis un moment.

Comment faire pour reprendre à mon compte la maintenance (si possible) vu que le paquet semble abandonné ? Je fais une soumission sur AUR en parallèle (Cela me semble un peu goret l'histoire) ?

Bref, comment gérez vous cela ?
Merci
Matthieu.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [aur] mon premier PKGBUILD et je coince.

Message par benjarobin »

Tout est expliqué dans le Wiki Arch_User_Repository, faire une demande sur la mailing list
Sinon cela n'est pas conseillé (voir interdit) de faire un envoi d'un paquet sous un autre nom...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Xorg
Maître du Kyudo
Messages : 1933
Inscription : dim. 22 janv. 2012, 19:25
Localisation : Entre le clavier et la chaise.

Re: [aur] mon premier PKGBUILD et je coince.

Message par Xorg »

Je confirme. Bien que ça passe de renommer le paquet (oui, pour utiliser le même nom, il faut obligatoirement être le mainteneur), c'est très mal vu, et donc il est possible que le paquet soit supprimé sans préavis (j'ai connu ça avec libkqueue/kibkqueue0). Bon, en général, il faut que quelqu'un le signal sur la mailing list, mais voilà quoi.

N'ai pas peur d'AUR-general, ils ne mordent pas là-bas. :)
Arch Linux x86_64 - Sway
AMD Ryzen 5 3600X - 32 Go de DDR4 - SSD NVMe 1 To + SSD SATA 250 Go - Sapphire NITRO+ Radeon RX 580
Image AUR___Image Wiki___Image GitHub
Avatar de l’utilisateur
thieume
Hankyu
Messages : 33
Inscription : ven. 21 juin 2013, 10:15
Localisation : Ile de France

Re: [aur] mon premier PKGBUILD et je coince.

Message par thieume »

Merci pour les infos...
Matthieu.
Répondre