+ -
当前位置:首页 → 问答吧 → 检查本地仓库与官方仓库软件版本区别的脚本

检查本地仓库与官方仓库软件版本区别的脚本

时间:2010-03-18

来源:互联网

自己编译打包的软件一多,自然是建个本地仓库然后用pacman来更新比较方便...
有些又要追新又要自己定制功能,怕被落下太多哦,所以就写这么个脚本来比较下不同仓库的版本区别了...
$localrepo改成本地仓库名就是...
代码:
#!/usr/bin/perl -w
###################################################
# Author: Hunt Xu - mhuntxu [AT] gmail [dot] com
# Last modified: 2010-03-18 06:56
# Filename: pacup.pl
# Description: depends on pacman 
####################################################
use strict;

# config
my $localrepo = "hunt";
my $color_old = "\e[31;1m";
my $color_new = "\e[32;1m";
my $color_end = "\e[0m";
my $command = "LANG=en_US.utf8 pacman";

# variables
my $content;
my $pacname;
my $version;
my $cmp;
my $msg;

# start
chomp( my @localpac = `$command -Sql $localrepo` );
foreach (@localpac) {
 $pacname = $_;
 $content = `$command -Si $_`;
 @_ = ( $content =~ m[Repository.*?: \S+.*?Version.*?: \S+]sg );
 if ( @_ > 1 ) {
 $_ = shift @_;
 m[Version.*?: (\S+)]s;
 $version = $1;
 foreach (@_) {
 m[Repository.*?: (\S+).*?Version.*?: (\S+)]sg;
 $cmp = `vercmp $version $2`;
 if ( $cmp == 0 ) {
 last;
 }
 elsif ( $cmp < 0) {
 $msg = $color_old."older".$color_end;
 }
 else {
 $msg = $color_new."newer".$color_end;
 }
 print "$pacname: $version, $msg than $1: $2;\n";
 }
 }
}
运行结果看图...
上传的图像
screenshot-2010-03-18-06-42-30.png (34.2 KB, 23 次查看)

作者: huntxu   发布时间: 2010-03-18

perl 高手!

my $localrepo = "hunt";

能改成通用化的就好了,增加交互, 通过参数或者其他办法指定仓库。。。

作者: carbonjiao   发布时间: 2010-03-18

强, 感谢分享
楼主不如建个google code之类的分享出来
现在我感觉就是需要多些编译包,管理仓库这类的工具

perl的看得晕,楼主能否大致讲解一下程序思路?

我现在还遇到个问题,自己将AUR上的打包放入本地仓库,结果AUR上有更新了,自己还不知道,因为yaourt -Su --aur 是检测不出来的,然后只好将本地仓库从pacmna.conf中去掉再yaourt -Su --aur 才能比较,不知各位有没有其他好办法。

作者: axlrose   发布时间: 2010-03-18