LinuxSir.cn,穿越时空的Linuxsir!

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

LFS问题二:我如何管理自己的软件包

[复制链接]
发表于 2005-10-3 09:55:04 | 显示全部楼层 |阅读模式
有两个方案。
方案一
将软件都都安装到
/usr/local/name-version
这样的文件夹中
然后在
/usr/ 下面的文件夹中作指向
/usr/local/name-version下各个文件夹的连接。

方案二
/usr/local/name-version
这样的文件夹中
然后在
各个搜索PATH中添加文件夹目录名称。

大家觉得怎么做好一些。
发表于 2005-10-3 23:00:33 | 显示全部楼层
曾经想过,不过没实现,就是全部放到 /opt/下边,然后lib和bin放到/etc/ld.conf.so和PATH里边。。
不过很多那些基础软件就不要这么做了,比如库文件。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-4 01:14:14 | 显示全部楼层
不过就算是这样,效果不还是和放到/usr下面一样么?升级或者删除软件的时候,还是要删除哪些文件之类的东西动一番脑筋。
我现在的做法是

make install >> tarball.build.log
然后统一把这些log放到一个地方,到时候就根据这些log来维护自己的软件包了。
回复 支持 反对

使用道具 举报

发表于 2005-10-4 21:16:41 | 显示全部楼层
有这样的软件,忘记是什么名字了,就是根据这些log来管理的。你问问。
回复 支持 反对

使用道具 举报

发表于 2005-10-6 09:36:46 | 显示全部楼层
blfs已经为你想好了:

  1. cat > /etc/profile.d/extrapaths.sh << "EOF"
  2. if [ -d /usr/local/lib/pkgconfig ] ; then
  3.         pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
  4. fi
  5. if [ -d /usr/local/bin ]; then
  6.         pathprepend /usr/local/bin
  7. fi
  8. if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
  9.         pathprepend /usr/local/sbin
  10. fi
  11. for directory in $(find /opt/*/lib/pkgconfig -type d 2>/dev/null); do
  12.         pathappend $directory PKG_CONFIG_PATH
  13. done
  14. for directory in $(find /opt/*/bin -type d 2>/dev/null); do
  15.         pathappend $directory
  16. done
  17. if [ -d ~/bin ]; then
  18.         pathprepend ~/bin
  19. fi
  20. #if [ $EUID -gt 99 ]; then
  21. #        pathappend .
  22. #fi
  23. EOF
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-10-6 13:52:37 | 显示全部楼层
paco,试试这个吧,很方便的!!
安装时:
  1. paco -lD "make install"
复制代码

更多选项可以看看帮助,很简单的!!
对了,它还有个gtk的前端,gpaco!!
http://paco.sourceforge.net/
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-6 17:24:59 | 显示全部楼层
Post by imghch
blfs已经为你想好了:

  1. cat > /etc/profile.d/extrapaths.sh << "EOF"
  2. if [ -d /usr/local/lib/pkgconfig ] ; then
  3.         pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
  4. fi
  5. if [ -d /usr/local/bin ]; then
  6.         pathprepend /usr/local/bin
  7. fi
  8. if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
  9.         pathprepend /usr/local/sbin
  10. fi
  11. for directory in $(find /opt/*/lib/pkgconfig -type d 2>/dev/null); do
  12.         pathappend $directory PKG_CONFIG_PATH
  13. done
  14. for directory in $(find /opt/*/bin -type d 2>/dev/null); do
  15.         pathappend $directory
  16. done
  17. if [ -d ~/bin ]; then
  18.         pathprepend ~/bin
  19. fi
  20. #if [ $EUID -gt 99 ]; then
  21. #        pathappend .
  22. #fi
  23. EOF
复制代码


谢谢你的信息,
可是你知道吗,软件安装不仅仅有 /bin之类的路径的,
字体路径,库的路径 ,
甚至 man page都需要搜索路径,你知道吗?
还有,那个gnome里面如果不指定好
.server的搜索路径,一个程序都起不来你知道吗?
事情没那么简单的说。
要指定的路径多了。
回复 支持 反对

使用道具 举报

发表于 2005-10-6 19:30:21 | 显示全部楼层
我是用rpm和checkinstall管理,checkinstall不仅可以对make install这一步进行监测,还可以对已经安装的软件进行打包管理。 比如我的mysql装在/srv/mysql下面,我用find生成mysql的文件列表,然后利用这个文件列表用checkinstall生成spec文件,最终产生rpm文件,关键是文件列表的生成,利用spec文件,还可以在安装前后执行相应的操作,相当方便!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-7 11:20:10 | 显示全部楼层
谢谢楼上两位的信息,我回去弄一下,呵呵。
回复 支持 反对

使用道具 举报

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

本版积分规则

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