Skip navigation.

exploreopera

| Help

Sign up | Help

Posts tagged with "smart"

When urpmi/yast2/red-carpet is becomeing smart, Part IV

, , ,

一直以来,我认为SUSE和Mandriva一样,是一个特立独行的发行版。但没有想到,SUSE也开始跟Mandriva的风,将原先默认的Yast2/Red-carpet软件包管理器,换成了目前风头正劲的smart

实际上,Novell/SUSE本身支持两种格式的软件包仓库:apt-rpm和red-carpet,smart同时支持这两种仓库格式。前者通常见于SUSE Linux,后者通常用于NLD和SLES。由于smart在第一次运行的时候会读取apt-rpm所用的source.list,并将其中的内容添加为channel,所以你基本不用做什么特别的设置。但由于apt-rpm对于镜像的管理远不如smart方便和智能,所以我还是建议你手动检查一下smart生成的channel:
smart channel --show
如果你想要从头创建smart的channel,也是很方便的,和urpmi仓库差不多:
smart channel --add mychannel type=[color=red]apt-rpm[/color] name="Some repository" \
baseurl=http://somewhere.com/pub/repos [color=red]components=extra[/color]
在urpmi仓库中,是没有components这个参数的。从某种意义上来说,apt-rpm的各channel似乎更像mirror。

When urpmi is becoming smart, part III

, ,

也许你永远不会用到mysql的shell模式,但是如果你是一个smart的用户,一定会对它的shell模式赞赏有加。你可以在shell模式中向smart发出多条指令,然后用一个commit执行之。比如:
[root@localhost ~]# [color=blue]smart --shell[/color]
Smart Package Manager 0.39 - Shell Mode

Loading cache...
Updating cache...               ######################################## [100%]

smart> [color=blue]update[/color]
Fetching information for 'mainpri'...

Fetching information for 'contribpri'...

Updating cache...               ######################################## [100%]

smart> [color=blue]info eva[/color]
Name: eva
Version: 0.3.1-4mdk@i586
Priority: 0
Group: Networking/Instant messaging
Installed Size: 3.3MB
Reference URLs: http://www.sourceforge.net/projects/evaq
Flags:
Channels: RPM Database; mainpri
Summary: Eva is an IM client compatible with QQ protocol based on QT
Description:
 Eva is an IM client compatible with QQ protocol based on QT and KDE.

smart> [color=blue]upgrade[/color]


Upgrading packages (57):
Installed packages (1):

780.7kB will be used.

Confirm changes? (Y/n): [color=blue]y[/color]

smart> [color=blue]commit[/color]

Upgrading packages (57):
Installed packages (1):

780.7kB will be used.

Confirm changes? (Y/n): [color=blue]y[/color]

Fetching packages...
当然,你在smart的shell模式中可以使用Tab键来补全软件包名称,也可以使用通配符来指定软件包。

When urpmi is becoming smart, part II

, ,

smart的另外一个优点是更好的解决了镜像的问题。

实际上,urpmi是没有镜像功能的,它所谓的镜像是通过添加多个软件仓库实现的。而在对多个软件仓库进行考量的时候,只有软件版本的高低而已:存放着高版本软件的仓库将被使用,如果存放的软件版本相同,则使用配置文件中靠前的一个。据我所知,apt的策略与此类似,yum不详。

smart中对镜像的管理是完全并行的。正如我在Part I中介绍的那样,smart的软件仓库叫做channel。通常情况下,Mandriva的channel有两个:main和contrib。也就是:
$ smart channel --show
[mainpri]
type = urpmi
baseurl = http://carroll.cac.psu.edu/pub/linux/distributions/mandrakelinux/devel/cooker/i586/media/main
hdlurl = http://carroll.cac.psu.edu/pub/linux/distributions/mandrakelinux/devel/cooker/i586/media/main/media_info/synthesis.hdlist.cz

[contribpri]
type = urpmi
baseurl = http://carroll.cac.psu.edu/pub/linux/distributions/mandrakelinux/devel/cooker/i586/media/contrib
hdlurl = http://carroll.cac.psu.edu/pub/linux/distributions/mandrakelinux/devel/cooker/i586/media/contrib/media_info/synthesis.hdlist.cz
实际上,在全球的各个服务器上存放了Mandriva Linux的镜像,而这些镜像的目录结构都是完全相同的。为了将同样软件仓库的镜像纳入smart的考虑,我们要将所有镜像对应的URL添加到smart的mirror里:
# smart mirror --add \
http://carroll.cac.psu.edu/pub/linux/distributions/mandrakelinux/ \
http://mirror.averse.net/pub/Mandrakelinux/
这条命令的意思是说,carroll和mirror这两台服务器在指定目录以下的目录结构中完全相同。类似的,我们可以添加多个mirror:
 $ smart mirror --show
http://carroll.cac.psu.edu/pub/linux/distributions/mandrakelinux/
    http://mirror.averse.net/pub/Mandrakelinux/
    http://ftp.sunet.se/pub/os/Linux/distributions/mandrakelinux/

http://carroll.cac.psu.edu/pub/linux/distributions/mandrakelinux/devel/cooker/i586
    ftp://cooker@mirror.mandrakelinux.cn/i586
相信大家可以看到,mirror的功能是不区分协议的,这意味着你可以将本地目录添加为网上仓库的mirror。而smart在进行mirror查找的时候,只会进行模式匹配的字符串替换。

在你设置了多个mirror之后,smart在进行大量更新的时候,会尝试同时下载多个文件。至于是从多个服务器同时下载,还是从一个服务器多线下载,取决于你设置了多少个mirror。我来举一个例子
$ smart query OpenOffice.org-l10n-zh_CN --show-requires
OpenOffice.org-l10n-zh_CN-1:1.1.5-0.rc4.2mdk@i586
  Requires:
    OpenOffice.org = 1:1.1.5
    fonts-ttf-gb2312
    locales-zh
    myspell-dictionary
我们可以看到,这个软件包有四个依赖关系。那么按照我们上面的设置,如果你是在cooker中安装这个软件包,就可以匹配包括mirror.mandrakelinux.cn在内的四台服务器;如果你要在2005 official中安装,由于cooker@mirror.mandrakelinux.cn只能与/devel/cooker/i586匹配,无法匹配/official/10.2/i586/media/main/这个路径,所以只能从前三台服务器中下载。当然,实际从哪台服务器上下载,也取决于smart历史中对每个镜像记录的成功次数和速度。比如在我这里,虽然添加了ftp.sunet.se这个服务器,但由于这个服务器太慢,我历次下载的时候smart都没有考虑过它。
September 2008
MTWTFSS
August 2008October 2008
1234567
891011121314
15161718192021
22232425262728
2930