Chinaunix首页 | 论坛 | 博客
  • 博客访问: 332454
  • 博文数量: 53
  • 博客积分: 1037
  • 博客等级: 准尉
  • 技术积分: 1066
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-13 14:09
文章分类

全部博文(53)

文章存档

2016年(1)

2015年(10)

2013年(2)

2012年(40)

分类: LINUX

2012-11-05 23:10:31

为了简单起见, 我们以 tree 为例做个实验. 如果已经安装了, 就先卸载它(放心卸载, 它仅依赖于 glibc).

  1. [haifeng@arch sync]$ sudo pacman -R tree
  2. 正在检查依赖关系...

  3. 目标 (1): tree-1.6.0-2

  4. 全部删除大小:0.07 MiB

  5. 打算删除这些软件包吗? [Y/n] y
  6. (1/1) 正在删除 tree [######################] 100%
此时, 打开 /var/lib/pacman/local, 则已经找不到 tree-1.6.0-2/ 这个文件夹了.

好了, 我们来还原整个过程.

Try 1. 更新软件包数据库. 

每次 pacman -Sy , 都会下载 $repo.db.tar.gz 放在 /var/lib/pacman/sync 中.

实验一. 删除或更名 /var/lib/pacman/sync/core.db, 然后运行 pacman -Sy

  1. [haifeng@arch sync]$ sudo mv core.db core.db.bak
  2. [sudo] password for haifeng:
  3. [haifeng@arch sync]$ ls
  4. archlinuxfr.db community.db core.db.bak extra.db
  5. [haifeng@arch sync]$ sudo pacman -Sy
  6. 警告:database file for 'core' does not exist
  7. :: 正在同步软件包数据库...
  8. core 106.4 KiB 310K/s 00:00 [######################] 100%
  9. extra 1427.9 KiB 452K/s 00:03 [######################] 100%
  10. community 1770.0 KiB 477K/s 00:04 [######################] 100%
  11. archlinuxfr 32.9 KiB 72.3K/s 00:00 [######################] 100%
  12. [haifeng@arch sync]$ ls
  13. archlinuxfr.db community.db core.db core.db.bak extra.db
core.db, extra.db, community.db中存放了各个软件包的信息, 详见 archlinux 中的 core.db 如何打开?

Try 2. 查看解压缩后的 core.db, extra.db, community.db 中是否有 tree 文件夹.

事实上, tree-1.6.0-2 位于 extra 中. 它有两个文件 depends 和 desc, 可以查看其中的内容.

depends
  1. %DEPENDS%
  2. glibc
desc
  1. %FILENAME%
  2. tree-1.6.0-2-x86_64.pkg.tar.xz

  3. %NAME%
  4. tree

  5. %VERSION%
  6. 1.6.0-2

  7. %DESC%
  8. A directory listing program displaying a depth indented list of files

  9. %CSIZE%
  10. 27860

  11. %ISIZE%
  12. 69632

  13. %MD5SUM%
  14. 5434307608ddeedb9efe6653ed1381ee

  15. %SHA256SUM%
  16. b845363c12421213aa220f2faac98f9ab682ac34237d7399793ba7cdd9c42324

  17. %PGPSIG%
  18. iQEcBAABAgAGBQJO15vaAAoJELcxCuXwRWmuZ2wH/R9mt2iNZnbzSxxivNC4MrOCfIk9n+vtxuWVZdfWWzkilPEcuvhIFzIkugNdZDqwW3AfaJoPAmQueutkxDRhvTjToNIixNvWsrhtW8hHCYHyWcfW2MeiDEc04afgRhbR1WeZ7OoyP3zFuEJK3bt+hg+sEOS5cUVn4DV6mqSshg5DolzWR4QHLIpxZHYEDabklIF49hFgHlD8pfvayQYe5vcTR4HQwrMR1nqF6TrfMyUAY62nC2HV5QF/ccXAiWpMYM36HnQqEMDyQCNOwqYHhtUKkCL+hR7Pye/LEBFfIBrGvRvikV/0L/nIqDmSe6nay1QfppN45BVMDJj4a1+qN90=

  19. %URL%

  20. %LICENSE%
  21. GPL

  22. %ARCH%
  23. x86_64

  24. %BUILDDATE%
  25. 1322752955

  26. %PACKAGER%
  27. Giovanni Scafora
Try 3. 安装 tree

  1. [haifeng@arch local]$ sudo pacman -S tree
    [sudo] password for haifeng:
    正在解决依赖关系...
    正在查找内部冲突...

    目标 (1): tree-1.6.0-2

    全部安装大小:0.07 MiB

    进行安装吗? [Y/n] y
    (1/1) 正在检查软件包完整性                         [######################] 100%
    (1/1) 正在加载软件包文件                           [######################] 100%
    (1/1) 正在检查文件冲突                             [######################] 100%
    (1/1) 正在检查可用硬盘空间                         [######################] 100%
    (1/1) 正在安装 tree                                [######################] 100%
注意这里并没有下载该软件包的过程, 而是直接检查该软件包的完整性. 原因是我之前安装过. pacman 就把它放在 /var/cache/pacman/pkg 中.

试一下如果删除 /var/cache/pacman/pkg/tree-1.6.0-2-x86_64.pkg.tar.xz, 然后再执行 sudo pacman -S tree, 看看它是怎么工作的.

现在 /var/lib/pacman/local 中有 tree-1.6.0-2 这个文件夹了. 它包含两个文件 desc, files.

desc

  1. %NAME%
  2. tree

  3. %VERSION%
  4. 1.6.0-2

  5. %DESC%
  6. A directory listing program displaying a depth indented list of files

  7. %URL%

  8. %LICENSE%
  9. GPL

  10. %ARCH%
  11. x86_64

  12. %BUILDDATE%
  13. 1322752955

  14. %INSTALLDATE%
  15. 1352164730

  16. %PACKAGER%
  17. Giovanni Scafora

  18. %SIZE%
  19. 69632

  20. %DEPENDS%
  21. glibc

files
  1. %FILES%
  2. usr/
  3. usr/bin/
  4. usr/bin/tree
  5. usr/share/
  6. usr/share/man/
  7. usr/share/man/man1/
  8. usr/share/man/man1/tree.1.gz
上面 files 的内容可以使用 pacman -Ql 命令查看, 注意是小写的 L

  1. [haifeng@arch haifeng]$ pacman -Ql tree
  2. tree /usr/
  3. tree /usr/bin/
  4. tree /usr/bin/tree
  5. tree /usr/share/
  6. tree /usr/share/man/
  7. tree /usr/share/man/man1/
  8. tree /usr/share/man/man1/tree.1.gz



To be continued.
阅读(3882) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~