#1 Le 17/11/2013, à 22:27
- Vaykadji
[idée] Forker une logithèque pour y inclure les PPA en auto.
Hello à vous !
Voilà, j'ai récemment installé de nouveaux paquets sur mon petit Ubuntu que j'aime, et évidemment ces paquets n'étaient pas dispos dans les sources officielles, j'ai donc dû passer par un PPA.
Ne nous voilons pas la face : les PPA, c'est génial ! Cependant, une idée a germé dans mon esprit.
Toujours dans l'esprit de rassembler plus de monde autour de linux (qui est à moins de 2% de parts du marché desktop, d'après les stats qui traînent sur le net), je me suis dit :
"Heeeey, mais ça serait pas trop cool si on pouvait profiter des paquets non-listés dans les sources officielles directement depuis la logithèque sans devoir chercher sur le net ?"
Parce que oui, on veut un truc sur Windows, on cherche sur le net, on installe l'exe. On veut un truc pour Mac, on cherche sur le net puis on abandonne. On cherche un truc pour Ubuntu, on cherche sur le net puis on ajoute un PPA.
Ca serait donc une petite révolution que de pouvoir chercher directement de son ordinateur les logiciels présents dans les PPA, sans avoir ces PPA installés !
L'idée c'est :
- Faire un fork de la logithèque software-center (ça lag, c'est nul) ou de lubuntu-software-center (j'aime bien perso) ou de n'importe quel autre outil du genre : muon, synaptic, ...
- Y inclure un système de recherche qui va puiser sa liste de logiciel non pas dans les sources, mais dans les sources + sur un serveur distant.
- Dans ce serveur distant, poster une liste de paquets accompagnés de leur description et du PPA correspondant.
Ce qui permettrait au final de faire en 3 clics ce pour quoi il faut aujourd'hui 5min et quelques connaissances techniques.
Exemple : Aujourd'hui.
Je veux installer Cinnamon. J'ouvre ma logithèque, je cherche Cinnamon, pas de résultats. Je ferme la logithèque, j'ouvre le navigateur et je cherche "cinnamon" dans Google. Je relance la recherche avec "Cinnamon Ubuntu" parce que j'ai trouvé uniquement des vidéos débiles de gens qui bouffent de la cannelle. Je lis la page pour voir si c'est bien ce qu'il me faut, et je copie le PPA.
J'ouvre mon terminal et j'installe le PPA. Je recharge mes paquets manuellement et j'installe Cinnamon.
Suite exemple : Avec l'idée terminée.
Je veux installer Cinnamon. J'ouvre ma logithèque, je cherche Cinnamon et je clique sur installer. En arrière plan, le PPA s'installe, la liste des paquets est rechargée et le paquet est installé.
Ca demanderait un gros boulot, sachant qu'il faudrait tenir à jour le serveur distant, donc cette liste de paquets + ppa, en plus de devoir forker le logiciel et maintenir un serveur.
Il faut cependant ce dire que ce genre de truc simplifierait la vie des gens et serait, je crois, une première dans les OS, toutes catégories confondues.
Il est également imaginable un outil qui permettrait aux auteurs de PPA d'ajouter directement leur liste de paquets, la description et le PPA directement d'eux-même. Il est même imaginable d'avoir directement la recherche automatique qui s'ouvre dans un navigateur si le paquet n'existe pas dans les sources ou sur le serveur distant : qui lancerait par exemple une recherche "nomdupaquet + ppa + nomdelarelease"
Bon, cela dit, moi je lance cette idée dans le vague sans avoir aucune connaissance en programmation à part quelques lignes de C d'il y a de nombreuses années x)
Idée de génie, idée à la con ? Qu'en pensez-vous ?
Hors ligne
#2 Le 17/11/2013, à 23:04
- amj
Re : [idée] Forker une logithèque pour y inclure les PPA en auto.
Salut
Je pense que ce n'est pas faisable Regarde la liste des ppa http://ppa.launchpad.net/
Il faudrait un deuxième apt dont tout les ppa sont dans le sources.list . Mais tu te rend compte de la quantité de donnée qu'il va devoir télécharger dès que tu fais un apt-get update? Dis toi qu'avec les dépôts que tu as pour l'instant ça fait +-15Mo si tu en as as des centaines ça vas te faire une quantité énorme à télécharger.
edit : ceci devrait t'intéresser : http://www.webupd8.org/2010/07/ppasearc … u-ppa.html
Dernière modification par amj (Le 17/11/2013, à 23:17)
Vive le logiciel libre !! Articles aléatoires sur Wikipédia sur les logiciels libre, sur linux.
Hors ligne
#3 Le 17/11/2013, à 23:22
- Hizoka
Re : [idée] Forker une logithèque pour y inclure les PPA en auto.
sinon y a une autre technique...
tu regardes dans la doc et tu as toujours ou presque le lien vers le ppa... http://doc.ubuntu-fr.org/cinnamon
Mais tu peux faire un simple fichier texte contenant les noms des logiciels, leur description, et leur ppa.
Charger le tout dans une interface graphique et faire un petit script qui t'installe ce que tu selectionnes ou coches...
donc un petit script bash de quelques lignes + une liste des logiciel tres tres lourdes...
ou alors une toute petite interface de recherche qui lancerait un grep sur ton fichier... m'enfin dans tous les cas ca sera tres vite lourd et impossible a maintenir dans le temps...
Sans compter non plus la prise en charge des versions d'un meme logiciel en fonction de ppa (genre version dev ou stable) ou meme si un logiciel est dispo pour quelle version d'ubuntu ? (precise, quantal...)
Une idée irrealisable... Tu ne peux te faire ca que pour toi et tes quelques logiciels (ce que je me suis fait) ex :
FUSHIA="\033[1;35m"
RAZ="\e[m"
BLEUFONCE="\033[1;34m"
VERT="\033[0;32m"
ROUGE="\033[1;31m"
function multiselect
{
# valeur de retour numérique : ${multinum[@]}
# valeur de retour de texte : ${multitxt[@]}
# ${@} : les arguments servant de liste
# PS3 : message à afficher avant le listing
# @@ : élément séparateur, partie de gauche valeur texte et à gauche description ( valeur@@description )
# argument : -[0-9] : limite le nombre de reponse possible
# ATTENTION : La liste commence au chiffre 1 mais les tableaux retournés commencent, eux, à 0 (comme tout tableau)
# Remise au propre des variables
unset multinum multitxt limite num x
# Recherche l'option du nombre de reponse
[[ "${1}" == -[0-9]* ]] && limite="${1/#-}"
# Message informatif apparaissant avant la liste
if [[ ${PS3} && ${limite} ]]
then
echo -e "${FUSHIA}${PS3}${RAZ} ( ${BLEUFONCE}${limite} choix possible(s).${RAZ} )\n"
elif [[ ${PS3} && -z ${limite} ]]
then
echo -e "${FUSHIA}${PS3}${RAZ}\n"
else
echo
fi
# Affichage de la liste des choix
for x in "${@}"
do
# En cas de limite, on saute la 1ere valeure qui est le chiffre donné
if [[ ${limite} && -z ${num} ]]
then
num=0
else
# Incrémentation du numéro pour la prochaine ligne
((num++))
# recherche le signe servant de séparateur entre la valeur et la description
if [[ "${x}" =~ "@@" ]]
then
# Si séparateur présent : affichage du numéro, de la valeur du texte et de la description
echo -e "${FUSHIA}${num}${RAZ}) ${BLEUFONCE}${x%%@@*}${RAZ} : ${VERT}${x##*@@}${RAZ}"
else
# Si pas de séparateur : affichage du numéro et de la valeur du texte
echo -e "${FUSHIA}${num}${RAZ}) ${BLEUFONCE}${x}${RAZ}"
fi
fi
done
# Envoie de la réponse dans un tableau
read -p $'\nSélection : ' -a multinum
# Création d'une liste contenant les valeurs textes choisies + Vérification des valeurs numériques
for x in "${multinum[@]}"
do
if [[ ${x} -gt ${#@} || ! ${x} =~ ^[0-9]*$ ]]
then
# Message d'erreur indiquant une réponse impossible
echo -e "\n${ROUGE}Erreur dans la sélection, vous devez rentrez des chiffres inférieurs à la valeur maximale proposée.${RAZ}"
# Destruction des variables
unset multinum multitxt limite
# Arrêt de la fonction en erreur (code 1)
return 1
elif [[ ${limite} && ${#multinum[@]} -gt ${limite} ]]
then
# Message d'erreur indiquant un nombre de reponse trop élevé
echo -e "\n${ROUGE}Nombre de séléction trop importante, la limite est de ${limite} choix.${RAZ}"
# Destruction des variables
unset multinum multitxt limite
# Arrêt de la fonction en erreur (code 1)
return 1
else
# Si il y a eu un argument pour militer le nombre de reponse, on ajoute 1 a x
[[ "${1}" == -[0-9]* ]] && ((x++))
# Ajout de la valeur traitée dans le tableau
multitxt+=("${!x%%@@*}")
fi
done
}
multiselect "Back in time@@Depot Dev du logiciel de sauvegarde Back in time" \
"Boinc@@Derniere version de Boinc" \
"FFmpeg Dev@@Lecteur et encodeur vidéo en version Dev" \
"GCStar@@Derniere version du gestionnaire de collection" \
"Gmediafinder@@Visionneuse de video youtube" \
"Handbrake@@Déncodeur vidéo" \
"Kubuntu Backport" \
"Kubuntu Update" \
"MKVToolNix@@Version plus récente de MKVToolNix" \
"MultiSystem@@Gestionnaire de multiboot USB" \
"Jdownloader@@Gestionnaire de tlechargement direct download" \
"Libre Office@@Suite de logiciel de texte et tableaur" \
"Play On Linux@@Simplifie la gestion de Wine" \
"PluzzDL@@Script de téléchargement des videos pluzz" \
"QArte@@Logiciel de téléchargement des vidéos d'Arté" \
"SABnzbd@@Gestionnaire de newsgroup" \
"Smplayer@@Lecteur vidéo en version Dev" \
"Skrooge@@Gestionnaire de compte bancaire" \
"Virtualbox@@Virtualisation de PC" \
"vlc Stable@@Lecteur vidéo en version plus récente" \
"vlc Dev@@Lecteur vidéo en version Dev" \
"YAD - yet another dialog@@Fork de Zenity" \
"Y PPA Manager@@Gestionnaire de PPA" \
"Exit"
for valeur in "${multitxt[@]}"
do
case ${valeur} in
"Back in time")
# Variable servant à installer le logiciel phare du ppa
log+=(backintime-kde4)
# Installation du ppa
sudo add-apt-repository -y ppa:bit-team/stable ;;
"Boinc")
# Variable servant à installer le logiciel phare du ppa
log+=(boinc)
# Installation du ppa
sudo add-apt-repository -y ppa:costamagnagianfranco/boinc ;;
"FFmpeg")
# Variable servant à installer le logiciel phare du ppa
log+=(ffmpeg)
# Installation du ppa
sudo add-apt-repository -y ppa:jon-severinsson/ffmpeg ;;
"GCStar")
# Variable servant à installer le logiciel phare du ppa
log+=(gcstar)
# Installation du ppa
sudo add-apt-repository -y ppa:gcstar/ppa ;;
"Gmediafinder")
# Variable servant à installer le logiciel phare du ppa
log+=(gmediafinder)
# Installation du ppa
sudo add-apt-repository -y ppa:s-lagui/ppa ;;
"Handbrake")
# Variable servant à installer le logiciel phare du ppa
log+=(handbrake-gtk)
# Installation du ppa
sudo add-apt-repository -y ppa:stebbins/handbrake-snapshots ;;
"Kubuntu Backport")
# Mise à jour instable
# Installation du ppa
sudo add-apt-repository -y ppa:kubuntu-ppa/backports ;;
"Kubuntu Update")
# Mise à jour plus stable
# Installation du ppa
sudo add-apt-repository -y ppa:kubuntu-ppa/ppa ;;
"Libre Office")
# Installation du ppa
sudo add-apt-repository -y ppa:libreoffice/ppa ;;
"MKVToolNix")
# Passe ce tour de boucle si le ppa est déjà installé
[[ $(grep "bunkus.org" "/etc/apt/sources.list") ]] && continue
# Variable servant à installer le logiciel phare du ppa
log+=(mkvtoolnix)
# Installation du ppa
sudo apt-add-repository 'deb http://www.bunkus.org/ubuntu/quantal/ ./'
wget -q https://www.bunkus.org/gpg-pub-moritzbunkus.txt -O- | sudo apt-key add - ;;
"MultiSystem")
# Passe ce tour de boucle si le ppa est déjà installé
[[ $(grep "liveusb.info" "/etc/apt/sources.list") ]] && continue
# Variable servant à installer le logiciel phare du ppa
log+=(multisystem)
# Installation du ppa
sudo apt-add-repository 'deb http://liveusb.info/multisystem/depot all main'
wget -q http://liveusb.info/multisystem/depot/multisystem.asc -O- | sudo apt-key add - ;;
"Jdownloader")
# Variable servant à installer le logiciel phare du ppa
log+=(jdownloader-installer)
# Installation du ppa
sudo add-apt-repository -y ppa:jd-team/jdownloader ;;
"Play On Linux")
# Variable servant à installer le logiciel phare du ppa
log+=(playonlinux)
# Installation du ppa
wget -q "http://deb.playonlinux.com/public.gpg" -O- | sudo apt-key add -
sudo wget http://deb.playonlinux.com/playonlinux_precise.list -O /etc/apt/sources.list.d/playonlinux.list ;;
"PluzzDL")
# Variable servant à installer le logiciel phare du ppa
log+=(pluzzdl)
# Installation du ppa
sudo add-apt-repository -y ppa:chaoswizard/tvdownloader ;;
"QArte")
# Variable servant à installer le logiciel phare du ppa
log+=(qarte)
# Installation du ppa
sudo add-apt-repository -y ppa:vincent-vandevyvre/vvv ;;
"SABnzbd")
# Variable servant à installer le logiciel phare du ppa
log+=(sabnzbdplus)
# Installation du ppa
sudo add-apt-repository -y ppa:jcfp/ppa ;;
"Smplayer")
# Variable servant à installer le logiciel phare du ppa
log+=(smplayer)
# Installation du ppa
sudo add-apt-repository -y ppa:rvm/smplayer ;;
"Skrooge")
# Variable servant à installer le logiciel phare du ppa
log+=(skrooge)
# Installation du ppa
sudo add-apt-repository -y ppa:s-mankowski/ppa ;;
"Virtualbox")
# Passe ce tour de boucle si le ppa est déjà installé
[[ $(grep "virtualbox.org" "/etc/apt/sources.list") ]] && continue
# Variable servant à installer le logiciel phare du ppa
log+=(virtualbox)
# Installation du ppa
sudo apt-add-repository 'deb http://download.virtualbox.org/virtualbox/debian oneiric contrib'
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - ;;
"vlc Stable")
# Variable servant à installer le logiciel phare du ppa
log+=(vlc)
# Installation du ppa
sudo add-apt-repository -y ppa:videolan/stable-daily ;;
"vlc Dev")
# Variable servant à installer le logiciel phare du ppa
log+=(vlc)
# Installation du ppa
sudo add-apt-repository -y ppa:videolan/master-daily ;;
"YAD - yet another dialog")
# Variable servant à installer le logiciel phare du ppa
log+=(yad)
# Installation du ppa
sudo add-apt-repository -y ppa:webupd8team/y-ppa-manager ;;
"Y PPA Manager")
# Variable servant à installer le logiciel phare du ppa
log+=(y-ppa-manager)
# Installation du ppa
sudo add-apt-repository -y ppa:webupd8team/y-ppa-manager ;;
"Exit") return ;;
esac
done
# Mise à jour
sudo apt-get update
# Installation des différents logiciels
[[ ${log[@]} ]] && { echo -e "\n${BLEUFONCE}Installation des paquets : ${FUSHIA}${log[@]}\n${RAZ}"; sudo apt-get install -y ${log[@]}; }
esac
done
amj => sympa ton lien
Dernière modification par Hizoka (Le 17/11/2013, à 23:24)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#4 Le 17/11/2013, à 23:28
- amj
Re : [idée] Forker une logithèque pour y inclure les PPA en auto.
edit : ceci devrait t'intéresser : http://www.webupd8.org/2010/07/ppasearc … u-ppa.html
Le programme (en ruby) utilise cette page ci pour faire ses recherche https://launchpad.net/ubuntu/+ppas?name_filter=
Vive le logiciel libre !! Articles aléatoires sur Wikipédia sur les logiciels libre, sur linux.
Hors ligne
#5 Le 18/11/2013, à 12:11
- Hizoka
Re : [idée] Forker une logithèque pour y inclure les PPA en auto.
c'est rapide en effet, la recherche se fait vite.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 18/11/2013, à 12:44
- moths-art
Re : [idée] Forker une logithèque pour y inclure les PPA en auto.
Vaykadji :
L'idée n'es pas mauvaise : je plusois.
Mais je pense vraiment que ça dois encore mûrir avant de se lancer tête baissé.
Je note quand même un léger avantage au ppa sur les .exe ou autre : tu cherches à un endroit : launchpad... c'est donc moins aventurier.
Maintenant, la réalisation est tout autre.
* Dans un 1er temps : définir ce qu'apporte les ppa et qui est concerné (la cible)?
De ce que j'en comprend, les cibles sont :
* les devs et bétas testeurs (ne pas oublier que il n'y a pas que des logiciels mais aussi des libs)
* les personnes *pressés* d'avoir une version qui n'est pas encore disponible dans leur version
* l'installation de paquets non supporté
* j'en oubli sans doute
Les ppa sont finalement un grand hangar que met Canonical à dispo mais sans vérifier : la qualité, la sécurité etc.
Ça ne concerne bien évidement que des personnes bien informé des possibles risques encourus : instabilité, rootkit...
Une bonne question à ce poser : trop simplifier la procédure ne risque-t-elle pas de provoquer de mauvaises utilisations?
Par exemple, un utilisateur *moyen* se servant de cet outil à tord et à travers risque d'avoir une liste de dépôts indigestes et chaque "apt-get update" et ça lui prendra un temps considérable.
Perso, j'ai pas envie que mon installation d'un ppa soit transparente : si j'installe un programme contenu dans un ppa encore inexistant sur ma bécane, je veux être averti.
* Partir sur une base de donnée "doublon" de launchpad entrenu à la mano... c'est à mon sens l'échec assuré.
Les mainteneurs aussi zelés soient-ils vont se lasser de mettre à jour, c'est certain : y'a qu'à voir sur le wiki les efforts considérables pour lister des procédures en fonction des versions d'ubuntu...
* comme sous-entend "amj", derrière la logithèque ou autre GUI, il y a une ligne de commande type "apt".
L'idée serait soit de créer un programme cli en + et/ou de surchoucher "apt".
Il vaut mieux créer un truc qui peu être transposable partout (bas niveau) que de ce limiter à la logithèque.
En plus, ça pourrait conduire à un "lens" sous unity...
* qui est prioritaire? Si on fait une recherche sur gimp par exemple et qu'il y a 4 versions en conflit (je simplifie volontairement : https://launchpad.net/ubuntu/+ppas?name_filter=gimp) :
la version officiel et 3 ppa de gimp... on fait quoi? On est obligé de faire du questions/réponses.
La encore, les non initiés risquent d'être dérouté par la complexité.
Pour résoudre tous les soucis pré-cités par "amj" et "Hizoka", je ne vois qu'une solution : utiliser l'API de launchpad:
https://help.launchpad.net/API
et
https://help.launchpad.net/API/Examples
(ouais : faut programmer en python).
L'idée serait donc de récupérer la liste de paquets, sa description, le ppa correspondant et sa description également.
Je ne peux malheureusement pas t'affirmer que cette API sera suffisante. Faudra potasser/tester pour ça.
Si c'est pas suffisant, faudrait utiliser un truc à la ppasearch : parser du HTML pour arriver à tes fins. (en python, y'a la lib BeautifulSoup qui est magique pour ça)
Tu peux bien évidement t'inspirer de ppasearch mais je conseil de repartir sur une base saine car ce script n'est plus maintenu depuis 3 ans tout de même.
Ça réduira les soucis de latence mais il reste toujours possible de les réduire d'avantage en mettant en place un serveur proxy.
Voilà sur les grandes lignes à quoi ça pourrait ressembler :
* BDD à fort traffic, noSQL de préférence tel que Redis qui peut être contenu en ram.
* caching avec varnish
* chaque nouvel requête procède ainsi : interrogation de launchpad et sauvegarde en cache de la réponse.
* mise à jour des entrée de la base régulière (cron) : on vérifie que le paquet correspond toujours à tel ppa : si oui, on change, sinon, on met à jour la base.
* cache côté client (une fois que le système à une base déjà bien étoffé) : proposer côté client une mini-base des logiciels les + populaire afin d'éviter de passer par le serveur proxy dans les cas les plus courant.
Ah, si : il y aurait une autre solution : créer un dépôt incluant tous les ppa et qui se mettrait à jour régulièrement. (c'est un peu le serpent qui se mord la queue)
Il faudrait trouver une solution bien évidement sur les noms doublons : du genre "gimp_ppa:ferramroberto" pour le paquet gimp provenant du ppa ferramroberto et convertir les paquets automatiquement demanderais sans doute de l'investissement mais ça ne serait pas impossible.
Maintenant, j'ai aucun recul sur un "apt-cache search" sur une liste de plusieurs centaines de milliers de paquets. (t'en a 40 000 de base + tous ceux des ppa)
Faudrait faire des benchs par la suite pour voir si c'est raisonnable...
Bref, on voit bien que l'initiative devrait plutôt venir de Canonical.
Maintenant, il y a déjà eu d'autres efforts de la communauté qui ont donnés des idées à Canonical donc c'est pas forcément un coup d'épée dans l'eau!
PS : Je me suis aussi demandé pourquoi il était aussi simple d'ajouter un programme en 1 clic : apt://libreoffice-kde et qu'il n'existe pas un équivalent pour
installer 1 ppa ou mieux ppa + une liste de logiciels.
un truc genre "addrepo://ferramroberto/gimp?apt=gimp,gmic" te fais automatiquement :
sudo add-apt-repository ppa:ferramroberto/gimp
sudo apt-get update
sudo apt-get install gimp gmic
Comme toujours : si tu penses t'engager sur un projet (et qu'en plus tes connaissances en prog sont maigres), il faut voir *petit* et définir un cahier des charges rudimentaires.
Si tu atteints tes objectifs rapidement, ça te boostera.
Et puis, si c'est open-source : un dépôt git de tes efforts est bien venu.
Tu pourras revoir ton soft sous un nouvel angle : ces défauts de conception par exemple et rectifier le tir en refaisant de 0.
Faut surtout pas en avoir peur, c'est hyper constructif car ça permet de se concentrer sur les grandes lignes et non sur les détails. (ou on s'englue rapidement)
Site : https://mothsart.github.io Dépôts Git : https://github.com/mothsart PPAs : https://launchpad.net/~jerem-ferry
Hors ligne
#7 Le 01/03/2014, à 21:06
- Vaykadji
Re : [idée] Forker une logithèque pour y inclure les PPA en auto.
J'ai commencé à développer un outil de gestion des PPA (sobrement appelé "ppa-tool"), mais c'est très loin de l'idée présentée ici.
Hors ligne
#8 Le 14/08/2015, à 21:00
- andso
Re : [idée] Forker une logithèque pour y inclure les PPA en auto.
bonjour, Vaykadji,
il y a y ppa manager qui fait le job:
https://launchpad.net/~webupd8team/+arc … pa-manager
https://doc.ubuntu-fr.org/yppamanager
IMPORTANT: Booster votre (X et K)ubuntu: http://forum.ubuntu-fr.org/viewtopic.php?id=241092 (pfou!...)
à essayer, et... demain debian? http://fr.wikipedia.org/wiki/Demain_les_chiens
demain les biens? mes biens biens? t' exagére ... la banque!
Hors ligne