LinuxSir.cn,穿越时空的Linuxsir!

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

大家有思考这样一个问题吗?如何实现一个软件在linux下拥有独立的运行环境,从而可以

[复制链接]
发表于 2005-3-7 14:33:43 | 显示全部楼层 |阅读模式
大家都知道一个软件安装了,就会分布到许多地方

其中也许有主运行文件(通常位置/usr/local/bin/ ,/usr/local/sbin )
,也许有配置文件(通常/etc),日志文件(通常/var ),也许还有一些倚赖的库文件.


如果让这样的一个环境都集中到一个包里面,像Lumaqq的包一样.
其实我们只需要解压,就可以用.

我们应该注意些什么?怎样去做呢?说了这么多废话,好像其实就是如何在linux下如何制作绿色软件.
发表于 2005-3-7 15:18:04 | 显示全部楼层
喜欢绿色软件了,虽然绿色软件要大一些,不过现在的硬盘基本可以承受了,最起码安装使用简单了,呵呵,顶上去了
回复 支持 反对

使用道具 举报

发表于 2005-3-7 15:32:07 | 显示全部楼层
呵呵,俺也顶一个!
回复 支持 反对

使用道具 举报

发表于 2005-3-7 15:34:22 | 显示全部楼层
这样做,可以说是比现在的方法落后
不过,如果你真想这么做的话,也很简单
第一种方法:
把你的程序所有用到的库都静态链接进去
第二种:
1.把你的程序所有用到的动态库都复制到安装目录
2.把所有要用到的辅助程序复制到安装目录
3.编写一个启动脚本,设置好环境变量(LD_LIBRARY_PATH, PATH etc.)之后,再启动真正的程序
不过,这样做的后果是:
1.每个软件都得包含大量的.so文件,使系统变得臃肿,
2. 还有重要的一点是:升级目个库可能会变成一场恶梦,你必须将所有用到这个库的软件中的.so文件升级。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-7 16:30:00 | 显示全部楼层
Post by pupilzeng
这样做,可以说是比现在的方法落后
不过,如果你真想这么做的话,也很简单
第一种方法:
把你的程序所有用到的库都静态链接进去
第二种:
1.把你的程序所有用到的动态库都复制到安装目录
2.把所有要用到的辅助程序复制到安装目录
3.编写一个启动脚本,设置好环境变量(LD_LIBRARY_PATH, PATH etc.)之后,再启动真正的程序
不过,这样做的后果是:
1.每个软件都得包含大量的.so文件,使系统变得臃肿,
2. 还有重要的一点是:升级目个库可能会变成一场恶梦,你必须将所有用到这个库的软件中的.so文件升级。


如果按照第一种方法作,还有几点疑问?
1,如何确定程序中所应用的库
2.找到后,如何让程序找到正确的链接地址,在哪里修改?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-7 16:33:22 | 显示全部楼层
其实这种想法意味着我没用对linux下的软件一个运作基理的不清楚,否则感觉自己的思路可以清晰一些.
高手可以从这个角度给些启示吗?好让我们这些菜鸟有个更深刻的认识.
回复 支持 反对

使用道具 举报

发表于 2005-3-7 17:01:23 | 显示全部楼层
osx就是那种方式的,每个程序有自己的目录,gobolinux也是那样的,将osx的目录结构移植到了linux上
其实linux本身也支持那种方式,比如--prefix参数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-7 17:40:26 | 显示全部楼层
我现在知道了一个软件所倚赖的函数库的查询方式,用ldd这个命令,找到后都拷贝到本地目录,然后怎么被
调用呢?用这个环境变量 LD_LIBRARY_PATH
回复 支持 反对

使用道具 举报

发表于 2005-3-7 18:01:21 | 显示全部楼层
“绿色”软件不好管理..............
回复 支持 反对

使用道具 举报

发表于 2005-3-7 22:00:00 | 显示全部楼层
连 .sh 都不完全是绿色程序,何况二进制程序乎?

楼主的思想明显是十分混乱的。一个程序怎么可能把所有的事情都一手包办呢?说个最简单的例子,2.6.9之后的内核对刻录机的管理有了明显的变化,你怎么让你的绿色程序适应这个变化?难道连内核也要自带么?
回复 支持 反对

使用道具 举报

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

本版积分规则

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