linux yum 源码,yum源码分析_Linux教程_Linux公社-Linux系统门户网站

(1):yum clean的源码,在/usr/share/yum-cli/cli.py 中 882行

def cleanCli(self, userlist):

函数中.

支持的参数有:

yum clean:

header

packages

metadata

dbcache

expire-cache

plugins

针对不同的输入,会调用

self.cleanPackages()

self.cleanHeaders()

self.cleanMetadata()

self.cleanSqlite()

这几个函数,删除不同的项

然后我们在文件

/usr/lib/Python2.4/site-packages/yum/__init__.py

中能够看到上面几个函数的实现:

ef cleanHeaders(self):

exts = ['hdr']

return self._cleanFiles(exts, 'hdrdir', 'header')

def cleanPackages(self):

exts = ['rpm']

return self._cleanFiles(exts, 'pkgdir', 'package')

等等。

这几个clean函数都是通过封装 __cleanFiles来实现的,看看这个函数:

def _cleanFiles(self, exts, pathattr, filetype):

filelist = []

removed = 0

for ext in exts:

for repo in self.repos.listEnabled():

repo.dirSetup()

path = getattr(repo, pathattr)

if os.path.exists(path) and os.path.isdir(path):

filelist = misc.getFileList(path, ext, filelist)

for item in filelist:

try:

os.unlink(item)

except OSError, e:

self.logger.critical(_('Cannot remove %s file %s'), filetype, item)

continue

else:

self.verbose_logger.log(logginglevels.DEBUG_4,

_('%s file %s removed'), filetype, item)

removed+=1

msg = _('%d %s files removed') % (removed, filetype)

return 0, [msg]

其实就是去对应的目录下删除文件而已。

可以如下测试:

修改代码段:

for item in filelist:

try:

print "====:", item

os.unlink(item)

添加打印,保存

然后先 yum list 生成cache

可以 yum list 看下生成的文件

tree

.

|-- ops.5.i386

|   |-- cachecookie

|   |-- packages

|   |-- primary.sqlite

|   `-- repomd.xml

|-- ops.5.noarch

|   |-- cachecookie

|   |-- packages

|   |-- primary.sqlite

|   `-- repomd.xml

`-- rhel.5.i386

|-- cachecookie

|-- packages

|-- primary.sqlite

`-- repomd.xml

然后 sudo yum clean all

输出如下:

====: //var/cache/yum/ops.5.noarch/repomd.xml

====: //var/cache/yum/ops.5.i386/repomd.xml

====: //var/cache/yum/rhel.5.i386/repomd.xml

====: //var/cache/yum/ops.5.noarch/cachecookie

====: //var/cache/yum/ops.5.i386/cachecookie

====: //var/cache/yum/rhel.5.i386/cachecookie

====: //var/cache/yum/ops.5.noarch/primary.sqlite

====: //var/cache/yum/ops.5.i386/primary.sqlite

====: //var/cache/yum/rhel.5.i386/primary.sqlite

再去/va/cache/yum下tree下,看不到yum list 后的文件了0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值