提个建议,写个软件临时安装程序

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

提个建议,写个软件临时安装程序

#1

帖子 windwiny » 2008-06-27 16:51

现在越来越懒了。。。


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

看到有一种 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 里的文件名比较一下解决,比较麻烦一点



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


.
hxxirqwy
帖子: 95
注册时间: 2008-02-01 14:34

#2

帖子 hxxirqwy » 2008-06-27 17:32

老实说,你真的很懒,不过也帮你顶一下好了. :em17
头像
hethe
帖子: 3666
注册时间: 2005-08-01 9:14

#3

帖子 hethe » 2008-06-27 17:34

:shock: 想法不錯,不知道是否可行
Gedanken ohne Inhalt sind leer .Anschauungen ohne Begriffe sind blind.
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#4

帖子 bones7456 » 2008-06-27 17:53

软件的文件会分布在很多目录下面哦,这个搞,感觉会乱糟糟的....
关注我的blog: ε==3
头像
yaska
帖子: 1169
注册时间: 2007-10-28 21:35

#5

帖子 yaska » 2008-06-27 18:14

aufs还可以这样用,我研究研究。
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

#6

帖子 ptptptptptpt » 2008-06-27 18:26

感觉 apt-get autoremove 只是有点麻烦,而用 aufs 是非常麻烦 :(

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

或者用 新立得 来装游戏,它日志里会记录每一次操作所安装的包
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

#7

帖子 HuntXu » 2008-06-27 19:34

apt根据数据库的吧,那么aufs上是不是也要移植一个一样的过去...岂不是每次都要下一堆包哦...

说实话这跟我第一次搞LFS时的toolchain差不多想法,但是不知道为何挂了... :shock:
HUNT Unfortunately No Talent...
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

#8

帖子 windwiny » 2008-06-28 0:44

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 源码, 加个这样的选项功能就更好了
头像
yaska
帖子: 1169
注册时间: 2007-10-28 21:35

#9

帖子 yaska » 2008-06-28 11:29

我开始想,直接mount一个loop image文件到 / 上,loop文件rw,/只读,这样数据其实保存到了loop文件里面。
但是不行,/ 在用着不能mount。

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