发新话题
 搜藏 打印 该页面添加到 Mister Wong

Smart 实用教程

Smart 实用教程

Smart 实用教程

By:dyhml
转载请注明 原帖地址:http://www.linuxsir.org/bbs/showthread.php?t=229166

注意:
1.本文假定读者知道Smart是干什么的
2.本文只介绍Smart的命令行界面
3.实用就是说,本文将以 脚本+注释 的形式写出,可以另存为脚本直接(或稍加修改后)使用
4.所有脚本在作者的机器( Mandriva2006 )上验证通过,如有问题,请自行解决

第一部分:初始化
安装smart,添加本地channel,添加网络channel,添加网络镜像

1.加载本地channel
硬盘上有iso文件,则用如下脚本加载到文件系统
脚本一:mount-isos
复制内容到剪贴板
代码:
#!/bin/sh
mount /mnt/hda8/bt/MandrivaLinux2006/Mandriva-Linux-Extra-Plugins-2006-CD.i586.iso /tmp/isos/mdv2006extra -t iso9660 -o loop
mount /mnt/hda8/bt/MandrivaLinux2006/Mandriva-Linux-Free-2006-CD1.i586.iso /tmp/isos/mdv2006cd1 -t iso9660 -o loop
mount /mnt/hda8/bt/MandrivaLinux2006/Mandriva-Linux-Free-2006-CD2.i586.iso /tmp/isos/mdv2006cd2 -t iso9660 -o loop
mount /mnt/hda8/bt/MandrivaLinux2006/Mandriva-Linux-Free-2006-CD3.i586.iso /tmp/isos/mdv2006cd3 -t iso9660 -o loop
完成工作后,可用此脚本卸载
脚本二:umount-isos
复制内容到剪贴板
代码:
#!/bin/sh
umount /tmp/isos/mdv2006cd1
umount /tmp/isos/mdv2006cd2
umount /tmp/isos/mdv2006cd3
umount /tmp/isos/mdv2006extra
对于只有cd的人,只须
mount /dev/cdrom
即可加载.但本文中提到的源位置(/tmp/isos/mdv2006*),须替换为cd的加载点,一般为/mnt/cdrom.另,可能需要多次换盘,脚本可能出错.

smart的rpm包在CD3 内,如没有安装:
rpm -ivh /tmp/isos/mdv2006cd3/media/main3/smart-0.39-2mdk.i586.rpm

2.添加本地channel
脚本三:add-smart-local
复制内容到剪贴板
代码:
#!/bin/sh
#将名为main-local,类型是urpmi,的软件源(cd1)加入smart,将使用hdlist(详细的软件包列表)
smart channel --add main-local type=urpmi baseurl=file:///tmp/isos/mdv2006cd1/media/main hdlurl=../media_info/hdlist1.cz

#cd2,和cd3其中没有hdlist,使用cd1中对应的
smart channel --add main2-local type=urpmi baseurl=file:///tmp/isos/mdv2006cd2/media/main2 hdlurl=../../../mdv2006cd1/media/media_info/hdlist2.cz
smart channel --add main3-local type=urpmi baseurl=file:///tmp/isos/mdv2006cd3/media/main3 hdlurl=../../../mdv2006cd1/media/media_info/hdlist3.cz

#如果只有cd,将不能使用cd1中的hdlist,只能使用自带的synthesis.hdlist.cz,比hdlist缺少每个包的文件列表和changelog
#smart channel --add main2-local type=urpmi baseurl=file:///mnt/cdrom/media/main2 hdlurl=media_info/synthesis.hdlist.cz
#smart channel --add main3-local type=urpmi baseurl=file:///mnt/cdrom/media/main3 hdlurl=media_info/synthesis.hdlist.cz

#extra cd 中有5个源
smart channel --add extra-main type=urpmi baseurl=file:///tmp/isos/mdv2006extra/media/main hdlurl=../media_info/hdlist1s.cz
smart channel --add extra-firmwares type=urpmi baseurl=file:///tmp/isos/mdv2006extra/media/firmwares hdlurl=../media_info/hdlist2s.cz
smart channel --add extra-modules type=urpmi baseurl=file:///tmp/isos/mdv2006extra/media/modules hdlurl=../media_info/hdlist3s.cz
smart channel --add extra-dkms type=urpmi baseurl=file:///tmp/isos/mdv2006extra/media/dkms hdlurl=../media_info/hdlist4s.cz
smart channel --add extra-plugins type=urpmi baseurl=file:///tmp/isos/mdv2006extra/media/plugins hdlurl=../media_info/hdlist5s.cz
3.添加网络源
添加Mandriva标准的main,contrib,jpackage,updates这四个源使用台湾的服务器
添加plf-free和plf-nonfree,使用新加坡的服务器
一般,这两个服务器对大陆的公网用户比较快
脚本四:add-smart-net
复制内容到剪贴板
代码:
#!/bin/sh
#因为是网络传输,使用了较小的synthesis.hdlist,缺点就是不能查看没有安装的包的文件列表和changelog
smart channel --add plf-free type=urpmi baseurl=ftp://plf.acnova.com/pub/linux/plf/mandrake/free/2006.0 hdlurl=synthesis.hdlist.cz
smart channel --add plf-nonfree type=urpmi baseurl=ftp://plf.acnova.com/pub/linux/plf/mandrake/non-free/2006.0 hdlurl=synthesis.hdlist.cz
smart channel --add updates type=urpmi baseurl=ftp://mdk.linux.org.tw/pub/mandrakelinux/official/updates/2006.0/main_updates/ hdlurl=media_info/synthesis.hdlist.cz
smart channel --add main type=urpmi baseurl=ftp://mdk.linux.org.tw/pub/mandrakelinux/official/2006.0/i586/media/main hdlurl=media_info/synthesis.hdlist.cz
smart channel --add contrib type=urpmi baseurl=ftp://mdk.linux.org.tw/pub/mandrakelinux/official/2006.0/i586/media/contrib hdlurl=media_info/synthesis.hdlist.cz
smart channel --add jpackage type=urpmi baseurl=ftp://mdk.linux.org.tw/pub/mandrakelinux/official/2006.0/i586/media/jpackage hdlurl=media_info/synthesis.hdlist.cz
完成后,运行此命令查看channel,检查是否所有channel都已加入
smart channel --show

4.添加镜像
脚本五:add-smart-mirror
复制内容到剪贴板
代码:
#!/bin/sh
#对教育网用户,mirror.mandrakelinux.cn是很快的.但对公网可能很慢,很慢就不要加
smart mirror --add ftp://plf.acnova.com/pub/linux/plf/ ftp://cooker@mirror.mandrakelinux.cn/plf/
smart mirror --add ftp://mdk.linux.org.tw/pub/mandrakelinux/ ftp://mirror.mandrakelinux.cn/FreeOS/MandrivaLinux/

#公网,还有这个镜像较快
smart mirror --add ftp://mdk.linux.org.tw/pub/mandrakelinux/ http://ftp.ale.org/pub/mirrors/mandrake/

#以下命令应该可以一下子添加大量的镜像,但本人实验没有报错,但也没有成功,如有成功者,请报告一下
smart mirror --add http://www.mandrivausers.org/easyurpmi/mirror.list/plf.list
smart mirror --add http://www.mandrivausers.org/easyurpmi/mirror.list/2006.official.list
完成后,运行此命令查看镜像
smart mirror --show

5.注意,镜像并不是越多越好.
在下载多个文件时,smart将会多线程,从各个镜像同时下载文件.但是,每一个文件都只有一个镜像,一个线程.
所以,会出现这种情况,这是本人真实经历的:
同时下载10个文件,
有一个文件(600k)分配给了较慢的镜像(1k/s),10分钟
其他镜像很快(50k/s)下载完了其他9个文件(15M),5分钟

smart和flashget是不同的,flashget是镜像越多越好,flashget是每个文件都多线程多镜像的.

所以,慢的镜像一定要删除,不要有太多的镜像,最好channel中的url是最快的,如果没有快的镜像,就不用.
删除镜像:
smart mirror --remove ftp://mdk.linux.org.tw/pub/mandrakelinux/ ftp://mirror.mandrakelinux.cn/FreeOS/MandrivaLinux/

本文由magic 发布于Linuxsky 论坛,网址:http://bbs.linuxsky.org/thread-1851-1-1.html

TOP

第二部分:搜索与安装

本部分主要讲的是如何找到一个需要安装的软件并安装.
主要用到的smart命令是:search, query, info 和 install

1.在shell中每次执行 smart search/query/info/install 之前,smart都会花上较长的一段时间
Loading cache...
Updating cache...
一般,安装时要调用好几次smart命令,为了节省时间,我们使用:
smart --shell
命令进入shell模式,执行多个smart 命令,只要Loading cache 和Updating cache 一次.
在shell模式中,命令前的smart就不要了:
smart search ldap
改成 search ldap

以下命令均为smart shell 中,若要在bash中执行,只须在前面加"smart ".

2.如果知道要安装的包名,或包名的一部分

query *pkgname*

3.只知道描述

search desc

4.高级查询:
当编译一个包失败,提示需要ldconfig时,可用
query --provides ldconfig
query --provides /sbin/ldconfig
这种语法查包含ldconfig的包

当需要libdirect-0.9.so.22时:
query --provides libdirect-0.9.so.22

知道需要文件的完整路径:
query --path=/sbin/ldconfig
注意,必须在使用了hdlist时才可以对没有安装的包查询,但是如果对main和contrib用hdlist,上述语句将会非常之慢.

想知道amarok依赖的包:
query amarok --show-requires --show-providedby


5.用info查看包的信息

info kdesdk

6.安装
install kdesdk

最后,必须用commit才能执行下载安装过程.

TOP

发新话题