LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: tram

用 package user(软件包用户)来获得更多的控制和进行软件包管理(v0.8)

[复制链接]
发表于 2005-3-22 21:00:51 | 显示全部楼层
呵,我的计算机里的东西都把安装时的源代码目录存在着,装了什么东西也都做了记录,什么时候不要了就make uninstall,也没觉得麻烦。

版主是不是lfs cvs的管理员,我想加入blfs文档的翻译团队。
回复 支持 反对

使用道具 举报

发表于 2005-3-22 21:16:59 | 显示全部楼层
硬盘大的话,存着所有的源代码目录倒也可以。
回复 支持 反对

使用道具 举报

发表于 2005-3-22 21:24:05 | 显示全部楼层
不大的时候可以删掉,把Makefile保存一下,想泄载时直接make uninstall也行。
回复 支持 反对

使用道具 举报

发表于 2005-3-22 22:13:35 | 显示全部楼层
这倒也是个好解决方案。我要试一下。 谢谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-24 12:35:22 | 显示全部楼层
pkgusr比较麻烦,尤其是一些老的软件包:(
回复 支持 反对

使用道具 举报

发表于 2005-3-24 19:41:46 | 显示全部楼层
我已经使用pkgusr来进行包管理了。

不过安装Xorg.6.8.2有一些问题。
我已经把Xorg setuid 了,否则不能写/var/log/ 文件。这样X可以正常起来。
不过估计还有其他的命令需要进行改动。因为退出X的时候,会有一些warning信息。

请提供一点经验...
回复 支持 反对

使用道具 举报

发表于 2005-3-24 23:15:29 | 显示全部楼层
我觉得可不可以为每一个软件包建一个build文件,比如xpdf-3.00.build。然后用一个脚本去处理它就可以了。不过感觉倒象是gentoo了。呵呵!

  1. #!/bin/sh

  2. ./configure --prefix=/usr --sysconfdir=/etc --with-freetype2-includes=/usr/include/freetype2 &&
  3. make &&
  4. make install &&
复制代码

简单吧!
不过我倒是有一个简单的包管理脚本。

  1. #!/bin/bash
  2. #
  3. #MPM - Myself Package Manager - v1.0
  4. #Date: 30-09-2004
  5. #
  6. logpath="/src/log"

  7. #Function that show the options and version of the MPM.
  8. help()
  9. {
  10.         echo "MPM: Myself Package Manaer - v1.0"
  11.         echo "-i: make the install-log trace."
  12.         echo "-u: uninstall a package. "
  13.         echo "-s: search the content which what package contained."
  14.         echo "-v: print the package version."
  15.         echo "-h: display this"
  16. }

  17. case "$1" in
  18.         -u)
  19.         xargs rm < "$2"
  20.         ;;
  21.         -v)
  22.         ls $logpath | grep $2
  23.         ;;
  24.         -i)
  25.         find $2 -type f -mmin -$3 > "$logpath/$(basename $(pwd))"
  26.         ;;
  27.         -s)
  28.         for i in $logpath/*
  29.         do
  30.                 if grep $2 $i
  31.                 then
  32.                         echo "The Package is $(basename $i)"
  33.                 fi
  34.         done
  35.         ;;
  36.         -h)
  37.         help
  38.         ;;
  39. esac
复制代码

然后再搭配每次make install后都紧接着find <path> -mmin -<time> > /src/log/<packagename>
path: 是指你的package安装的地方,一般都是/usr和/etc/
time: 你可以自由选择,1分钟,2分钟或者多一些!
packagename: 比如xpdf-3.00
这样在我的/src/log/中就有很多记录文件,比如

  1. harold@fei:harold$ ls /src/log
  2. Astro-FITS-Headers-2.8.1  glibc-2.3.3-lfs-5.1      pango-1.4.0
  3. Gtk-Perl-0.7009           gnupg-1.4.0              patch-2.5.4
  4. Inline-0.44               gpm-1.20.1               pciutils-2.1.11
  5. PDL-2.4.1                 gqview-1.4.3             pcre-4.5
  6. Parse-RecDescent-1.94     grep-2.5.1               perl-5.8.4
  7. XML-Parser-2.34           groff-1.19               pkgconfig-0.15.0
  8. XML-Writer-0.510          grub-0.94                popt-1.7
  9. Xorg-6.8.1                gsview-4.6               postfix-2.1.1
  10. a52dec-0.7.4              gtk+-1.2.10              procinfo-18
  11. apache-2.0.50             gtk+-2.4.4               procmail-3.22
  12. asclock-1.3               gzip-1.3.5               procps-3.2.1
  13. atk-1.6.1                 hdparm-5.8               proftpd-1.2.10
  14. audiofile-0.2.6           host                     prozilla-1.3.6
  15. autoconf-2.59             hpijs-1.7                psmisc-21.4
  16. autofs-4.1.3              iana-etc-1.00            python-2.3.4
  17. automake-1.8.4            icewm-1.2.15pre2         qiv-2.0
  18. bash-2.05b                id3lib-3.8.3             qt-3.3.3
  19. bash-3.0                  imlib-1.9.14             readline-5.0
  20. bc-1.06                   inetutils-1.4.2          rxvt-2.6.4
  21. bind-utils-9.2.3          jpeg-6b                  rxvt-unicode-4.0
  22. binutils-2.14             kasablanca-0.4.0.1       scim-1.0.0
  23. bison-1.875a              kbd-1.12                 scim-chinese-0.4.2
  24. bochs-2.1.1               kftpgrabber-0.5.0-beta1  scim-tables-0.4.0
复制代码

在/src/log/xpdf-3.00中有:

  1. /usr/bin
  2. /usr/bin/xpdf
  3. /usr/bin/pdftops
  4. /usr/bin/pdftotext
  5. /usr/bin/pdfinfo
  6. /usr/bin/pdffonts
  7. /usr/bin/pdftoppm
  8. /usr/bin/pdfimages
  9. /usr/share/man/man1
  10. /usr/share/man/man1/xpdf.1
  11. /usr/share/man/man1/pdftops.1
  12. /usr/share/man/man1/pdftotext.1
  13. /usr/share/man/man1/pdfinfo.1
  14. /usr/share/man/man1/pdffonts.1
  15. /usr/share/man/man1/pdftoppm.1
  16. /usr/share/man/man1/pdfimages.1
  17. /usr/share/man/man5
  18. /usr/share/man/man5/xpdfrc.5
复制代码

要删除包,就需mpm -u xpdf-3.00可以了。
回复 支持 反对

使用道具 举报

发表于 2005-3-25 13:02:27 | 显示全部楼层
谢谢 harold 兄弟提供的脚本,非常实用。

包管理在BLFS的 Part I 里面有专门提到。包管理有多种方法,各有其利弊之处。BLFS里面也有一一描述。

我自己进行的包管理经验不多,现在看了大家的一些经验,感觉受益颇多。
本贴里面涉及了三种包管理的办法,我按照自己的看法,将其利弊总结一下

1 package user 管理办法
基本原理是为每个包创建一个用户,然后用这个包用户来安装包。
优点: a) 确保可以管理每个包里面所有的文件。不会有漏文件等事情发生。 b) 安全性高。避免包安装程序带来的安全问题。
缺点: a) 比较繁琐。要解决很多冲突性的问题。
总结: a)适用于对于系统安全性要求非常高的管理员。

2 uninstall 办法
基本原理是利用Makefile进行make uninstall
优点: a) 简单,方便
缺点: a) make uninstall有些文件或者文件夹不会删除 b) 有些软件没有提供Makefile或者Makefile里面没有uninstall任务。
总结: 应用广泛,很实用。

3 timestamp 办法
基本原理是在安装前后扫描安装目录,根据timestamp的变化把安装的文件列个清单,以后根据清单进行删除。
优点: a) 简单,方便。只要一次性把相应脚本写好,就行了。
缺点: a) 会遗漏文件。比如有些文件安装时只是copy一些老文件。
总结: 应用广泛,很实用。
回复 支持 反对

使用道具 举报

发表于 2005-3-25 23:13:18 | 显示全部楼层
呵呵,总结的不错啊!
回复 支持 反对

使用道具 举报

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

本版积分规则

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