LinuxSir.cn,穿越时空的Linuxsir!

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

archlinux里怎么自己做包替换系统已安装包中的文件?

[复制链接]
发表于 2009-11-4 17:46:06 | 显示全部楼层 |阅读模式
最近刚从ubuntu下转过来, 以前都用自己做deb安装包来管理配置文件, 比如自己做个fcitx-config来修改fcitx中的某些配置文件. 在debian/control里指定replaces的软件包就可以用于替换修改某个特定软件包里的文件了. 今天开始试着用arch来做类似的事情, 发现PKGBUILD里也有replaces, 但和debian系统里的不是一回事. 请教下各位, archlinux怎么实现类似的机理? 哎, 如果debian, ubuntu不是那么复杂也挺完美的
发表于 2009-11-4 19:03:09 | 显示全部楼层
没发现还有个provides么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-4 19:11:42 | 显示全部楼层
Post by socket9999;2042604
没发现还有个provides么?

  1. pkgname=fcitx-config
  2. pkgver=0.1
  3. pkgrel=1
  4. pkgdesc="personal configure files  for fcitx"
  5. arch=('any')
  6. license=('GPL3')
  7. #install=fcitx-config.install
  8. url="http://code.google.com/p/fcitx/"
  9. depends=('fcitx' 'wqy-zenhei')
  10. provides=('fcitx')

  11. build() {
  12.   cd $startdir
  13.   mkdir -p $startdir/pkg/usr/share/fcitx/data/
  14.   install wb98.mb $startdir/pkg/usr/share/fcitx/data/
  15.   install wb86.mb $startdir/pkg/usr/share/fcitx/data/
  16.   install config $startdir/pkg/usr/share/fcitx/data/
  17.   install tables.conf $startdir/pkg/usr/share/fcitx/data/
  18.   mkdir -p $startdir/pkg/etc/profile.d/
  19.   install fcitx.sh $startdir/pkg/etc/profile.d/
  20. }
复制代码


嗯, 搞定.  debian里如果fcitx更新的话, 会自动用fcitx-config替换新装的配置文件, arch不知道能不能办到.

PS: 被ubuntu弄烦了, 发现arch真干净, 速度也快了不少啊
回复 支持 反对

使用道具 举报

发表于 2009-11-4 19:49:58 | 显示全部楼层
额,不好意思我没好好看。Arch里面的replaces是替换整个包,而不是个别文件。A provides(B)是指,该软件包A安装以后,当有别的包C依赖B时,即使B没有被安装,也看作满足依赖关系。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-4 19:53:55 | 显示全部楼层
是和debian里的不同, 不过自己的系统, 凑合着用就行. 看来debian对二进制包的管理仍然是最完善的.
回复 支持 反对

使用道具 举报

发表于 2009-11-4 20:26:11 | 显示全部楼层
目前还没发现怎么替换一个已经存在的文件,只能强行覆盖。

可能以后会遇到升级fcitx后,config,tables.conf文件被覆盖。然后你只能重装你这个fcitx-config。不过fcitx升级的时候config文件也会有变化,最好不要这样改系统配置文件。

好像/etc/pacman.conf里面可以设置一个backup可以不覆盖某些文件

如果你自己打包fcitx的话,可以在PKGBUILD里面写backups=()也可以保持这个文件不更新。

记得不清楚了。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-4 22:06:29 | 显示全部楼层
Post by jarryson;2042632
目前还没发现怎么替换一个已经存在的文件,只能强行覆盖。

可能以后会遇到升级fcitx后,config,tables.conf文件被覆盖。然后你只能重装你这个fcitx-config。不过fcitx升级的时候config文件也会有变化,最好不要这样改系统配置文件。

好像/etc/pacman.conf里面可以设置一个backup可以不覆盖某些文件

如果你自己打包fcitx的话,可以在PKGBUILD里面写backups=()也可以保持这个文件不更新。

记得不清楚了。。

言之有理, 不同的系统有不同的哲学. arch要求KISS, 这里的问题可以认看作是特色了;)
回复 支持 反对

使用道具 举报

发表于 2009-11-5 02:05:25 | 显示全部楼层
其实另外一种灵活的方式是可以在.install文件中的post_install, post_upgrade函数中自行处理这些配置文件的替换或者内容的增删,但一定要小心处理。
回复 支持 反对

使用道具 举报

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

本版积分规则

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