LinuxSir.cn,穿越时空的Linuxsir!

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

Smart 实用教程

[复制链接]
发表于 2005-11-7 20:25:32 | 显示全部楼层 |阅读模式
Smart 实用教程

By:dyhml
转载请注明原帖地址

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

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

1.加载本地channel
硬盘上有iso文件,则用如下脚本加载到文件系统
脚本一:mount-isos
  1. #!/bin/sh
  2. mount /mnt/hda8/bt/MandrivaLinux2006/Mandriva-Linux-Extra-Plugins-2006-CD.i586.iso /tmp/isos/mdv2006extra -t iso9660 -o loop
  3. mount /mnt/hda8/bt/MandrivaLinux2006/Mandriva-Linux-Free-2006-CD1.i586.iso /tmp/isos/mdv2006cd1 -t iso9660 -o loop
  4. mount /mnt/hda8/bt/MandrivaLinux2006/Mandriva-Linux-Free-2006-CD2.i586.iso /tmp/isos/mdv2006cd2 -t iso9660 -o loop
  5. mount /mnt/hda8/bt/MandrivaLinux2006/Mandriva-Linux-Free-2006-CD3.i586.iso /tmp/isos/mdv2006cd3 -t iso9660 -o loop
复制代码


完成工作后,可用此脚本卸载
脚本二:umount-isos
  1. #!/bin/sh
  2. umount /tmp/isos/mdv2006cd1
  3. umount /tmp/isos/mdv2006cd2
  4. umount /tmp/isos/mdv2006cd3
  5. 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
  1. #!/bin/sh
  2. #将名为main-local,类型是urpmi,的软件源(cd1)加入smart,将使用hdlist(详细的软件包列表)
  3. smart channel --add main-local type=urpmi baseurl=file:///tmp/isos/mdv2006cd1/media/main hdlurl=../media_info/hdlist1.cz

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

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

  10. #extra cd 中有5个源
  11. smart channel --add extra-main type=urpmi baseurl=file:///tmp/isos/mdv2006extra/media/main hdlurl=../media_info/hdlist1s.cz
  12. smart channel --add extra-firmwares type=urpmi baseurl=file:///tmp/isos/mdv2006extra/media/firmwares hdlurl=../media_info/hdlist2s.cz
  13. smart channel --add extra-modules type=urpmi baseurl=file:///tmp/isos/mdv2006extra/media/modules hdlurl=../media_info/hdlist3s.cz
  14. smart channel --add extra-dkms type=urpmi baseurl=file:///tmp/isos/mdv2006extra/media/dkms hdlurl=../media_info/hdlist4s.cz
  15. 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
  1. #!/bin/sh
  2. #因为是网络传输,使用了较小的synthesis.hdlist,缺点就是不能查看没有安装的包的文件列表和changelog
  3. smart channel --add plf-free type=urpmi baseurl=ftp://plf.acnova.com/pub/linux/plf/mandrake/free/2006.0 hdlurl=synthesis.hdlist.cz
  4. smart channel --add plf-nonfree type=urpmi baseurl=ftp://plf.acnova.com/pub/linux/plf/mandrake/non-free/2006.0 hdlurl=synthesis.hdlist.cz
  5. 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
  6. 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
  7. 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
  8. 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
  1. #!/bin/sh
  2. #对教育网用户,mirror.mandrakelinux.cn是很快的.但对公网可能很慢,很慢就不要加
  3. smart mirror --add ftp://plf.acnova.com/pub/linux/plf/ ftp://cooker@mirror.mandrakelinux.cn/plf/
  4. smart mirror --add ftp://mdk.linux.org.tw/pub/mandrakelinux/ ftp://mirror.mandrakelinux.cn/FreeOS/MandrivaLinux/

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

  7. #以下命令应该可以一下子添加大量的镜像,但本人实验没有报错,但也没有成功,如有成功者,请报告一下
  8. smart mirror --add http://www.mandrivausers.org/easyurpmi/mirror.list/plf.list
  9. 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/
 楼主| 发表于 2005-11-7 20:27:45 | 显示全部楼层

第二部分:搜索与安装

第二部分:搜索与安装

本部分主要讲的是如何找到一个需要安装的软件并安装.
主要用到的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才能执行下载安装过程.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-7 20:29:00 | 显示全部楼层
还是占山为王
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-7 20:29:41 | 显示全部楼层
继续占山为王
回复 支持 反对

使用道具 举报

发表于 2005-11-7 20:46:28 | 显示全部楼层
帮你顶
回复 支持 反对

使用道具 举报

发表于 2005-11-7 20:47:33 | 显示全部楼层
? ft
回复 支持 反对

使用道具 举报

发表于 2005-11-20 12:34:55 | 显示全部楼层
出错:
[root@localhost weis]# smart channel --add plf-free type=urpmi baseurl=ftp://plf.acnova.com/pub/linux/plf/mandrake/free/2006.0 hdlurl=synthesis.hdlist.cz

Alias: plf-free
Type: urpmi
Base URL: ftp://plf.acnova.com/pub/linux/plf/mandrake/free/2006.0
Header List URL: synthesis.hdlist.cz

Include this channel? (y/N): y
回复 支持 反对

使用道具 举报

发表于 2005-11-20 13:09:59 | 显示全部楼层
http://www.linuxsir.cn/bbs/showthread.php?t=227429
是否应该先参照一下。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-21 10:34:01 | 显示全部楼层
Post by liumao
出错:
[root@localhost weis]# smart channel --add plf-free type=urpmi baseurl=ftp://plf.acnova.com/pub/linux/plf/mandrake/free/2006.0 hdlurl=synthesis.hdlist.cz

Alias: plf-free
Type: urpmi
Base URL: ftp://plf.acnova.com/pub/linux/plf/mandrake/free/2006.0
Header List URL: synthesis.hdlist.cz

Include this channel? (y/N): y


我没有看见任何错误
回复 支持 反对

使用道具 举报

发表于 2005-11-21 17:29:26 | 显示全部楼层
用了smart,不过速度比urpmi差了不少
回复 支持 反对

使用道具 举报

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

本版积分规则

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