Forum Italiano di supporto ad Arch Linux
Non hai eseguito l'accesso.
L'altro giorno camminavo e sono stato illuminato, sul genere della via di Damasco, da un'idea che potrebbe interessare tutti gli amanti del bleeding edge come me.
In pratica propongo di sviluppare insieme uno script che controlli quali pacchetti abbiamo installato nel nostro sistema con suffisso -svn/cvs/bzr, e si occupi in qualche modo di fare il check delle versioni e aggiornarli. Una sorta di yaourt -Syu --aur, ma a differenza di yaourt che controlla le versioni presenti nei pkgbuild, questo script andrebbe a controllare direttamente il numero di revisione.
Che ne pensate?
Non in linea
Se fai yaourt -S nomepacchetto-svn (o cvs, ecc.) ti scarica e compila in automatico l'ultima revision, non usa quella del PKGBUILD.
Ultima modifica di NICFury (14-12-2008 14:33:30)
Non in linea
uhm...perchè no...butto giù qualche riga
EDIT: ecco una bozza, supporta solo il check dell'svn per ora, che ne pensi?
#!/bin/bash
#VersionCheck.sh
#Copyright (C) 2008 Arch Linux Italia
color(){
DEFA="\033[1;0m"
BOLD="\033[1;1m"
LRED="\033[1;31m"
LGRE="\033[1;32m"
}
is_newer(){
if [ $2 -gt $1 ]; then
printf "${LRED}a new release is available${DEFA}\n"
else
printf "${LGRE}already up-to-date${DEFA}\n"
fi
}
check_svn(){
_svntrunk=`wget -q -O - "http://aur.archlinux.org/packages/$1/$1/PKGBUILD" \
| grep '_svntrunk=' \
| awk -F"=" '{print $2}' \
| sed 's/"//g'`
local lversion=`pacman -Q $1 | awk '{print $2}' | awk -F"-" '{print $1}'`
local pversion=`svn info $_svntrunk | grep "Revision" | awk '{print $2}'`
printf "${BOLD}$1: ${DEFA}"
is_newer $lversion $pversion
}
main(){
for pkg in `pacman -Qq | grep "\-\(svn\|cvs\|hg\|git\|bzr\|darcs\)"`; do
sys=`echo $pkg | awk -F"-" '{print $NF}'`
case $sys in
# bzr) check_bzr $pkg ;;
# cvs) check_cvs $pkg ;;
# darcs) check_darcs $pkg ;;
# git) check_git $pkg ;;
# hg) check_hg $pkg ;;
svn) check_svn $pkg ;;
*) printf "${pkg}: control system not supported yet\n" ;;
esac
done
}
color
main $@
exit 0Non in linea
BaSh scusa se mi ripeto, ma questa cosa la fa già yaourt. Ovviamente se si vuole fare uno script in più male non fa, ma non ne capisco la necessità.
Non in linea
NIC, blaster ha descritto nel suo post in cosa sarebbe differente sto "script" rispetto a yaourt.. comunque dico la mia:
adesso abbiamo una autentica MAREA di script e modifiche non ufficiali a pacman (o comqunque, script che riguardano i pacchetti), cito i primi che mi vengono in mente
yaourt, pacman-cage, powerpill, pacbuilder, pacworld, pacman-color..
non sarebbe più utile unire il tutto in un unico progetto, e fare una sorta di pacman2, magari introducendo anche la gestione via db dell'archivio pacchetti? o per forza la filosofia KISS va tradotta con "Keep It Simple uselesS"?
pacman è un buono strumento, ma il fatto che praticamente TUTTI usino yaourt, molti usino modifiche\script vari dimostra che qualche modifica\innovazione andrebbe anche fatta..
Ultima modifica di Berseker (15-12-2008 02:11:21)
Non in linea
Concordo con Berserker, alla fine accentrare gli sforzi sarebbe utile a tutti, inoltre lavorare su un unico strumento (che si chiami pacman2, yaourt, aurbuild, ecc non importa) porterebbe a un gestore di pacchetti sempre aggiornato e con moltissime funzionalità utili.
Personalmente (ma è solo la mia opinione) ritengo che si possa partire da yaourt, che è forse il più completo, e da lì unire gli sforzi. O tu Berserker intendevi proprio lavorare sul codice di pacman?
Non in linea
mah alla fine yaourt è un frontend di pacman.. io intendevo fare un unico strumento, magari interfacciabile da una interfaccia grafica (per le QT4 c'è l'ottimo shaman, per le GTK sarebbe bello realizzare qualcosa) ma comunque gestibile anche da linea di comando per i "puristi", che includa tutte le varie funzionalità apportate dalle miriadi di utility esistenti.. e alla fine pacman è già un ottima base di partenza comunque.
per dire ..
[berseker@acerone boot]$ yaourt -Ss pacman
core/pacman 3.2.1-1 [installed] (base)
A library-based package manager with dependency support
extra/namcap 2.2-1
A Pacman package analyzer
extra/srcpac 0.6-1
The pacman from-source wrapper
community/kpacman 0.3.2-5
The classic pacman arcade game for the KDE Desktop
community/pacman-contrib 3.2.0-1
Utilities for use with the pacman package manager
community/pacupdate 0.1.1-2 [installed]
A simple update notifier for Arch Linux (pacman)
community/perl-cpanplus-pacman 0.3.0-1
CPANPLUS::Dist plugin and script to create Arch Linux packages of CPAN
modules
community/shaman 1.0.9-1
Complete frontend to libalpm/pacman and ABS written in Qt4
community/xpacman 0.11-2
X pacman game (use z x / ' q keys)
community/xpacman2 1.002-1
another X pacman game
zeqadious/shaman-svn 837-1
A Pacman frontend based upon libalpm and Qt4
kdemod-core/kdemod-shaman 1.0.9-4 [installed] (kdemod kdemod-complete kdemod-uninstall kdemod-tools)
Complete frontend to pacman/libalpm and ABS written in Qt4
kdemod-core/kdemod-shaman-debug 1.0.9-4 (kdemod-debug)
Complete frontend to pacman/libalpm and ABS written in Qt4
aur/adesklet-pacmansentry 0.0.6-2
Displays updatable Arch Linux packages available for the current system .
aur/gtkpacman 2.3.1-1
GTK package manager for archlinux based on pacman
aur/gtkpacman-svn 214-1
GTK package manager for archlinux based on pacman (svn version)
aur/guzuta 0.0.5-1
A front end to Archlinux's pacman.
aur/hhh 0.2b-1
A fun and fast pacman / fastfood type game in SDL.
aur/jacman 0.4-2
Java-based GUI front-end for pacman
aur/kpacupdate 0.2.1-1
Pacman update notification tool for the KDE system tray.
aur/libpypac-devel 0.7.42-1
Framework that aims on being 100% compatible with Pacman, written in Python.
aur/lupac 0.0.7a-3
A simple python script that sorts pacman's system packages by usage.
aur/my-own-repo-web-interface 0.2-1
Custom user repo interface (pacman/rpm/deb)
aur/myman 0.7.0-2
A Pacman clone with an ncurses and a 'graphic' interface
aur/namcap-git 20080719-1
A Pacman package analyzer
aur/njam 1.25-3
Full-featured cross-platform pacman-like game
aur/noteo-pacmanstatus 0.0.3-1
Module for noteo which can check for/launch system updates via pacman
aur/pacboy 0.1-1
Slim pacman split into different binaries
aur/pacman-arena 0.15-5
Pacman Arena is a Pacman clone in full 3D with a few surprises
aur/pacman-arena-3d 0.15-1
Pacman Arena is a Pacman clone in full 3D with a few surprises
aur/pacman-color 3.2.1.b-1 [installed]
Command-line frontend for libalpm aka pacman with color patch
aur/pacman-notifier 0.2-1
A System Tray new-package notifier for ArchLinux
aur/pacman-static 3.2.1-1
Static version of pacman executable
aur/pacman.manfr 20080830-1
pages francophone de manuel de Pacman-3.2.1
aur/pacmanmanager-svn 39-1
Qt4 package manager based on pacman
aur/pacmon-svn 17-1
Tray applet that notifies the user of available pacman updates
aur/pacpal 1.5-1
Provides complementary functionality to pacman and facilitates system maintenance.
aur/pactools 0.7-4
A collection of the best tools for pacman
aur/pacworld 0.3.4-3 [installed]
Tool to check pacman database consistency and fix broken packages
aur/powerpill 13.6-1
A wrapper for pacman that speeds up package retrieval by using aria2c for concurrent/segmented downloads.
aur/psearch 1.1-7
Python module with accompanying script to access pacman database information. Includes AUR support.
aur/psearch-pacman3 1.1-3
Python module with accompanying script to access pacman database information. Includes AUR support. Fixed for working with pacman 3 DB schema
aur/raine-emudx 0-1
Improved graphic and sound files for Donkey Kong, Frogger, Ms. Pacman and Pacman in the Raine emulator.
aur/repo-clean 0.1.2-1
Clean utility for Pacman repository
aur/repo-clean-svn 60-6
Clean utility for Pacman repository
aur/shaman-svn 907-6
A Pacman frontend based upon libalpm and Qt4
aur/tupac 0.5.3.2-2
A cached pacman implementation that boosts some pacman operations: faster searches, AND searches, aur support, colored output, system sanity check, frontend friendly and more...
aur/wocka 0.5-1
wocka will call make install, monitor the installation and create an entry in the pacman database, with the metadata automagically filled-in.
aur/yaourt 0.9.1-1
A Pacman frontend with more features and AUR support
aur/yaourt-git 20081203-1 [20081211-1 installed]
A pacman wrapper with extended features and AUR support
aur/yapg 0.1beta1-4
Yet Another Pacman GUI
aur/zenity_pacgui 0.4-1
pacman and system configuration GUI using zenity dialogs.. a me sembra che ci sia un po' troppa "frammentazione" di funzionalità relative a un package manager, poi non so.
non considerate ovviamente le varie voci che riferiscono a qualche remake di pacman "gioco arcade" ^^
Non in linea
Io concordo, tranne che sull'interfaccia grafica. Cmq non penso che sarà inclusa una qualche modfica a pacman che comprenda AUR, proprio perchè i pacchetti di aur non sono repository ufficiali, almeno questo è quello che avevo letto tempo fa... anche se io personalmente penso che male non farebbe, non vedo che fastidio possa dare.
Non in linea
NICFury ha scritto:
Io concordo, tranne che sull'interfaccia grafica. Cmq non penso che sarà inclusa una qualche modfica a pacman che comprenda AUR, proprio perchè i pacchetti di aur non sono repository ufficiali, almeno questo è quello che avevo letto tempo fa... anche se io personalmente penso che male non farebbe, non vedo che fastidio possa dare.
si potrebbe fare che pacman di default non scarichi da aur ma sia possibile attivare ciò grazie al file di configurazione.
E poi a me piacerebbe poter avere i colori su pacman di default, cioé lo hanno programmi come ls e grep per dire, non è una cosa fuori dal mondo ![]()
Non in linea
ugaciaka ha scritto:
E poi a me piacerebbe poter avere i colori su pacman di default, cioé lo hanno programmi come ls e grep per dire, non è una cosa fuori dal mondo
Quoto in pieno!
Non in linea
BaSh ha scritto:
uhm...perchè no...butto giù qualche riga
EDIT: ecco una bozza, supporta solo il check dell'svn per ora, che ne pensi?Codice:
#!/bin/bash #VersionCheck.sh #Copyright (C) 2008 Arch Linux Italia color(){ DEFA="\033[1;0m" BOLD="\033[1;1m" LRED="\033[1;31m" LGRE="\033[1;32m" } is_newer(){ if [ $2 -gt $1 ]; then printf "${LRED}a new release is available${DEFA}\n" else printf "${LGRE}already up-to-date${DEFA}\n" fi } check_svn(){ _svntrunk=`wget -q -O - "http://aur.archlinux.org/packages/$1/$1/PKGBUILD" \ | grep '_svntrunk=' \ | awk -F"=" '{print $2}' \ | sed 's/"//g'` local lversion=`pacman -Q $1 | awk '{print $2}' | awk -F"-" '{print $1}'` local pversion=`svn info $_svntrunk | grep "Revision" | awk '{print $2}'` printf "${BOLD}$1: ${DEFA}" is_newer $lversion $pversion } main(){ for pkg in `pacman -Qq | grep "\-\(svn\|cvs\|hg\|git\|bzr\|darcs\)"`; do sys=`echo $pkg | awk -F"-" '{print $NF}'` case $sys in # bzr) check_bzr $pkg ;; # cvs) check_cvs $pkg ;; # darcs) check_darcs $pkg ;; # git) check_git $pkg ;; # hg) check_hg $pkg ;; svn) check_svn $pkg ;; *) printf "${pkg}: control system not supported yet\n" ;; esac done } color main $@ exit 0
Beh sicuramente il check degli altri sistemi non è prioritario rispetto all'ossatura del software, che invece è scritta molto bene.
Lo sto provando, adesso vedo se modificare qualcosa e ti faccio sapere ![]()
Non in linea
chiedo scusa per la banalità, ma tornando all'argomento iniziale del thread, non si avrebbe lo stesso risultato dando
yaourt -Su --devel
, che fa proprio e solo quello?
Non in linea
psychoweb ha scritto:
chiedo scusa per la banalità, ma tornando all'argomento iniziale del thread, non si avrebbe lo stesso risultato dando
Codice:
yaourt -Su --devel, che fa proprio e solo quello?
siamo in 2 ora a dirlo, vediamo se ci ascoltano ![]()
Non in linea
NICFury ha scritto:
psychoweb ha scritto:
chiedo scusa per la banalità, ma tornando all'argomento iniziale del thread, non si avrebbe lo stesso risultato dando
Codice:
yaourt -Su --devel, che fa proprio e solo quello?
siamo in 2 ora a dirlo, vediamo se ci ascoltano
Non avete afferrato il concetto che sta alla base di VersionCheck.
Si, yaourt -Su --devel aggiorna tutto ciò che di svn/git/cvs c'è nel sistema, ma con una differenza sostanziale.
Che, con le ultime modifiche apportate a VersionCheck e che uppo di seguito, VersionCheck lo fa meglio.
Yaourt -Su --devel si occupa di controllare il numero di revisione nel PKGBUILD, e aggiorna.
VersionCheck si occupa di controllare il numero di revisione direttamente dal trunk e aggiorna.
Di seguito, il codice modificato da me per adattarsi meglio allo scopo che mi prepongo di raggiungere.
#!/bin/bash
#VersionCheck.sh
#Copyright (C) 2008 Arch Linux Italia
color(){
DEFA="\033[1;0m"
BOLD="\033[1;1m"
LRED="\033[1;31m"
LGRE="\033[1;32m"
}
## Funzione di UPDATE integrata nello script ##
update(){
echo "Do you want to upgrade this package? (Y-n)"
read -r answer
if [ $answer == "Y" ]; then
yaourt -S $pkg
fi
}
## ##
##Modificata la funzione is_newer per adattarla all'output di yaourt -Syu, che segna in verde i pacchetti aggiornati
is_newer(){
if [ $2 -gt $1 ]; then
printf "${LGRE}a new release is available${DEFA}\n"
update
else
printf "${LRED}already up-to-date${DEFA}\n"
fi
}
check_svn(){
_svntrunk=`wget -q -O - "http://aur.archlinux.org/packages/$1/$1/PKGBUILD" \
| grep '_svntrunk=' \
| awk -F"=" '{print $2}' \
| sed 's/"//g'`
local lversion=`pacman -Q $1 | awk '{print $2}' | awk -F"-" '{print $1}'`
local pversion=`svn info $_svntrunk | grep "Revision" | awk '{print $2}'`
printf "${BOLD}$1: ${DEFA}"
is_newer $lversion $pversion
}
main(){
for pkg in `pacman -Qq | grep "\-\(svn\|cvs\|hg\|git\|bzr\|darcs\)"`; do
sys=`echo $pkg | awk -F"-" '{print $NF}'`
case $sys in
# bzr) check_bzr $pkg ;;
# cvs) check_cvs $pkg ;;
# darcs) check_darcs $pkg ;;
# git) check_git $pkg ;;
# hg) check_hg $pkg ;;
svn) check_svn $pkg ;;
*) printf "${pkg}: control system not supported yet\n" ;;
esac
done
}
color
main $@
exit 0Ho messo un commentino laddove ho modificato.
Ultima modifica di Bl@ster (15-12-2008 06:50:11)
Non in linea
Yaourt -Su --devel per ogni pacchetto se il trunk ha una nuova revision lo aggiorna idipendentemente dal PKGBUILD!!
Non in linea
NICFury ha scritto:
Yaourt -Su --devel per ogni pacchetto se il trunk ha una nuova revision lo aggiorna idipendentemente dal PKGBUILD!!
Credi che io non abbia provato?
VersionCheck funziona benissimo, e l'output delle due alternative ti smentisce ![]()
[blaster@astaroth Desktop]$ yaourt -Su --devel Controllo degli aggiornamenti dei pacchetti in corso... non ci sono aggiornamenti. ==> upgrading SVN/CVS/HG/GIT package [blaster@astaroth Desktop]$
[blaster@astaroth Desktop]$ ./VersionCheck.sh emesene-svn: a new release is available Do you want to upgrade this package? (Y-n) n gajim-svn: a new release is available Do you want to upgrade this package? (Y-n) n gtk-engine-murrine-svn: a new release is available Do you want to upgrade this package? (Y-n) n gwibber-bzr: control system not supported yet pywebkitgtk-svn: a new release is available Do you want to upgrade this package? (Y-n) n [blaster@astaroth Desktop]$
Come puoi vedere, VersionCheck mi restituisce un output totalmente opposto a quello di yaourt... e controllando, quello che ha ragione è proprio VersionCheck, in quanto gajim fa 200 commit al giorno; yaourt non ne segna nemmeno uno, perchè prende il numero di revisione dal PKGBUILD ![]()
Non in linea
Boh, ti credo, anche perchè vedo l'output che hai postato. Ti assicuro però che io aggiorno i pacchetti di AUR svn con yaourt anche quando non ci sono modifiche al PKGBUILD... dando un:
yaourt -S nomepacchetto-svn
Ora vado a vedermi il codice di yaourt per curiosità... forse aggiorna all'ultima revision solo in caso di comando esplicito e non in caso di Yaourt -Su --devel
Ultima modifica di NICFury (15-12-2008 07:11:26)
Non in linea
NICFury ha scritto:
Boh, ti credo, anche perchè vedo l'output che hai postato. Ti assicuro però che io aggiorno i pacchetti di AUR svn con yaourt anche quando non ci sono modifiche al PKGBUILD... dando un:
yaourt -S nomepacchetto-svn
Ora vado a vedermi il codice di yaourt per curiosità... forse aggiorna all'ultima revision solo in caso di comando esplicito e non in caso di Yaourt -Su --devel
È come dici tu, infatti anch'io aggiorno i miei pacchetti devel così, ma appunto voglio qualcosa che aggiorni "tutto in un colpo" ![]()
tra parentesi, quell'output è leggermente sballato in quanto Bash ha fatto un errore che non riesco a individuare, nel momento in cui bisogna greppare la revisione attuale ![]()
Non in linea
Ok dai, almeno abbiamo fugato un po' di dubbi
chiedo scusa per i fraintedimenti di prima!
Cmq a questo punto io direi che sarebbe bello lavorare direttamente su yaourt o almeno fare una feature request.
Ultima modifica di NICFury (15-12-2008 07:24:32)
Non in linea
NICFury ha scritto:
Ok dai, almeno abbiamo fugato un po' di dubbi
chiedo scusa per i fraintedimenti di prima!
Cmq a questo punto io direi che sarebbe bello lavorare direttamente su yaourt o almeno fare una feature request.
Sicuramente, sarebbe molto meglio avere tutto dentro Yaourt.
Aspetta che almeno finisco di scrivere VersionCheck e gli alleghiamo anche il nostro codice ![]()
Non in linea
ok, allora, non mi sbagliavo, sono 20 minuti che leggo il codice e secondo me doveva funzionare come dicevo io... infatti è un bug, almeno mi sembra.
modificate /usr/bin/yaourt alla riga 320, cambiandolo da così:
for PKG in $(pacman -Qq | grep "\-\(svn\|cvs\|hg\|git\|bzr\|darcs\)\ ")
a così:
for PKG in $(pacman -Qq | grep "\-\(svn\|cvs\|hg\|git\|bzr\|darcs\)")
Ora funziona alla perfezione!
Non in linea
SVN/CVS/HG/GIT/BZR packages that can be updated from ABS or AUR: emesene-svn gajim-svn gtk-engine-murrine-svn gwibber-bzr pywebkitgtk-svn ==> Do you want to update these packages ? [Y/n] ==> ---------------------------------------------- ==>
No che non va, il mio gajim è aggiornato :°D
Non in linea
si, ma ti sta chiedendo se vuoi provare ad aggiornare quei pacchetti... se gli dici di si fa il check sulla revision. Indipendentemente che ti sembri o meno comodo così funziona come dovrebbe funzionare
Non in linea
Infatti, NIC, è il bug che ho segnalato io stesso ai dev di yaourt, non so perchè non abbiano ancora rilasciato una release dato che è formalmente un regression bug.
Bl@ster, scusami ancora se sembro incomprensibile, ma il bello è che yaourt non controlla la release del pkgbuild, il motivo per cui il tuo yaourt non ti restituisce niente di buono con --devel è proprio a causa di quel bug.
Non in linea
psychoweb ha scritto:
Infatti, NIC, è il bug che ho segnalato io stesso ai dev di yaourt, non so perchè non abbiano ancora rilasciato una release dato che è formalmente un regression bug.
Bl@ster, scusami ancora se sembro incomprensibile, ma il bello è che yaourt non controlla la release del pkgbuild, il motivo per cui il tuo yaourt non ti restituisce niente di buono con --devel è proprio a causa di quel bug.
Beh si effettivamente adesso è migliore come approccio.
Però voglio essere perfezionista: magari segnalo ai devs di yaourt che si può anche controllare la trunk revision prima di sparare a zero sui --devel ![]()
Non in linea