LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 633|回复: 2

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

[复制链接]
发表于 2010-3-18 06:46:42 | 显示全部楼层 |阅读模式
自己编译打包的软件一多,自然是建个本地仓库然后用pacman来更新比较方便...
有些又要追新又要自己定制功能,怕被落下太多哦,所以就写这么个脚本来比较下不同仓库的版本区别了...
$localrepo改成本地仓库名就是...

  1. #!/usr/bin/perl -w
  2. ###################################################
  3. # Author: Hunt Xu - mhuntxu [AT] gmail [dot] com
  4. # Last modified: 2010-03-18 06:56
  5. # Filename: pacup.pl
  6. # Description: depends on pacman
  7. ####################################################
  8. use strict;

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

  15. # variables
  16. my $content;
  17. my $pacname;
  18. my $version;
  19. my $cmp;
  20. my $msg;

  21. # start
  22. chomp( my @localpac = `$command -Sql $localrepo` );
  23. foreach (@localpac) {
  24.     $pacname = $_;
  25.     $content = `$command -Si $_`;
  26.     @_ = ( $content =~ m[Repository.*?: \S+.*?Version.*?: \S+]sg );
  27.     if ( @_ > 1 ) {
  28.         $_ = shift @_;
  29.         m[Version.*?: (\S+)]s;
  30.         $version = $1;
  31.         foreach (@_) {
  32.             m[Repository.*?: (\S+).*?Version.*?: (\S+)]sg;
  33.             $cmp = `vercmp $version $2`;
  34.             if ( $cmp == 0 ) {
  35.                 last;
  36.             }
  37.             elsif ( $cmp < 0) {
  38.                 $msg = $color_old."older".$color_end;
  39.             }
  40.             else {
  41.                 $msg = $color_new."newer".$color_end;
  42.             }
  43.             print "$pacname: $version, $msg than $1: $2;\n";
  44.         }
  45.     }
  46. }
复制代码

运行结果看图...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2010-3-18 10:27:07 | 显示全部楼层
perl 高手!

my $localrepo = "hunt";

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

使用道具 举报

发表于 2010-3-18 13:26:23 | 显示全部楼层
强, 感谢分享
楼主不如建个google code之类的分享出来
现在我感觉就是需要多些编译包,管理仓库这类的工具

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表