当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 提个建议,写个软件临时安装程序
帖子发表于 : 2008-06-27 16:51 
头像

注册: 2007-03-13 17:26
帖子: 2254
送出感谢: 0 次
接收感谢: 1
现在越来越懒了。。。


看到新立得里那么多软件包和游戏,不知道是干什么用的,有时候装上了觉得不好用,又要去删除,感觉很麻烦

看到有一种 aufs ,代替了以前的 unionfs ,这个工具很好用,可以把 几个目录 挂载到一个目录上,就有这么一个想法,把不知道用途的软件包安装到独立于当前根分区上,如果试用软件后觉得不好用,就什么也不用管,等下次重启新装的软件就自动没有了。

首先装上 aufs 工具, sudo apt-get install aufs && sudo modprobe aufs

具体步骤:
代码:
  *)在 /tmp  创建一个伪LSB目录, mkdir -p /tmp/vir/{etc/init.d,etc/rc{0,1,2,3,4,5,6,S}.d,bin,sbin,usr/{{,}sbin,lib,share,man},var/{run,spool,lib/dpkg}}
  *)把那些软件包可能会在里面添加修改文件的目录合并到 主根目录 上, sudo mount -t aufs -o dirs=/tmp/vir/etc=rw:/etc=rw none /etc , 其它目录照例
  *)用 apt-get 装软件,这样那些新装上的软件包里的文件,修改过的原有文件都存放在 /tmp/vir 里的伪根目录上了
  *)装完软件后调整参数和顺序,主要是防止其它程序新建修改的文件丢失  sudo umount /etc && sudo mount -t aufs -o dirs=/etc=rw:/tmp/vir/etc=rw none /etc
  *)运行测试新安装的软件,觉得不好用的话就不用理它了,下次启动时自动没有了,手工执行 apt-get remove 也可以;   如果好用想装到系统里直接用 apt-get install 安装

优点就是正常安装一个依赖很多的软件包时,如果要删除又要记住这次安装了什么什么库,用 apt-get autoremove 也有点麻烦,用这个办法就不用管删除的事了

懒得动手,想像的时候感觉有个小困难,就是在 apt-get 的时候如果有其它程序在 mount aufs 了的目录上创建文件,这时如果没注意,那个文件重启以后就没了,不过也可以通过用 deb 包的文件名和安装脚本创始的文件 与 apt-get 结束时 /tmp/vir 里的文件名比较一下解决,比较麻烦一点



太懒了,能看懂这个帖子的人帮助写下这个脚本


.


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-06-27 17:32 

注册: 2008-02-01 14:34
帖子: 95
送出感谢: 0 次
接收感谢: 0 次
老实说,你真的很懒,不过也帮你顶一下好了. :em17


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-06-27 17:34 
头像

注册: 2005-08-01 9:14
帖子: 3666
送出感谢: 0 次
接收感谢: 0 次
:shock: 想法不錯,不知道是否可行


_________________
Gedanken ohne Inhalt sind leer .Anschauungen ohne Begriffe sind blind.


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-06-27 17:53 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
软件的文件会分布在很多目录下面哦,这个搞,感觉会乱糟糟的....


_________________
关注我的blog: ε==3


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-06-27 18:14 
头像

注册: 2007-10-28 21:35
帖子: 1169
送出感谢: 0 次
接收感谢: 2
aufs还可以这样用,我研究研究。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-06-27 18:26 
头像

注册: 2006-09-19 18:16
帖子: 3711
送出感谢: 0 次
接收感谢: 3
感觉 apt-get autoremove 只是有点麻烦,而用 aufs 是非常麻烦 :(

还不如专门装一个测试用的系统

或者用 新立得 来装游戏,它日志里会记录每一次操作所安装的包


_________________
Ubuntu 系统备份、恢复、克隆、批量部署、制作 live 系统


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-06-27 19:34 
头像

注册: 2007-09-29 3:09
帖子: 5773
送出感谢: 0 次
接收感谢: 3
apt根据数据库的吧,那么aufs上是不是也要移植一个一样的过去...岂不是每次都要下一堆包哦...

说实话这跟我第一次搞LFS时的toolchain差不多想法,但是不知道为何挂了... :shock:


_________________
HUNT Unfortunately No Talent...


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-06-28 0:44 
头像

注册: 2007-03-13 17:26
帖子: 2254
送出感谢: 0 次
接收感谢: 1
HuntXu 写道:
apt根据数据库的吧,那么aufs上是不是也要移植一个一样的过去...岂不是每次都要下一堆包哦...

说实话这跟我第一次搞LFS时的toolchain差不多想法,但是不知道为何挂了... :shock:

dpkg 的数据库就是 /var/lib/dpkg/ ,里面的文件作用看下就明白了,
把这个也用 aufs,新路径放旧路径前面,这样修改过的文件就放在 新路径 下面,明白!?

理论上是可以直接将一个新路径覆盖到 / 上的,把原来的 / 加 ro 只读参数,这样,在 apt-get 过程当中所有新增的修改过的文件都放在新路径上了,只要 umount 一下,所有恢复原状。。。这就是 aufs 的神奇之处了,

不过感觉还是将目录比较细化一些,就如第一行的 mkdir , /var 和 /usr 目录比较复杂,里面除了 /usr/local 之处,其它目录都有可能被添加文件

就一个 sh 脚本就行了,创建临时目录->合并目录->安装->调整合并目录顺序 , 这就把 软件包的文件放到 临时目录里去了, 完全不影响当前系统状态 deb 数据库

谁要是直接改 apt-get 源码, 加个这样的选项功能就更好了


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-06-28 11:29 
头像

注册: 2007-10-28 21:35
帖子: 1169
送出感谢: 0 次
接收感谢: 2
我开始想,直接mount一个loop image文件到 / 上,loop文件rw,/只读,这样数据其实保存到了loop文件里面。
但是不行,/ 在用着不能mount。

livecd/usb,也要在initrd里面mount。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 5 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译