LinuxSir.cn,穿越时空的Linuxsir!

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

[Slitaz]把Arch Deb RPM的包转化为Slitaz的包的脚本

[复制链接]
发表于 2009-5-17 12:59:33 | 显示全部楼层 |阅读模式
写的很粗糙。。脚本基于tazpkg pack命令
脚本文件名a2s.sh

  1. #!/bin/sh
  2. filename=`basename $1`
  3. package=`echo $filename | cut -d- -f1`
  4. version=`echo $filename | cut -d- -f2`
  5. path="$package-$version"
  6. mkdir -p "$path/fs"
  7. tar xzf $1 -C "$path/fs/"
  8. cd $path
  9. echo "# SliTaz package receipt.\n" > receipt
  10. echo "PACKAGE="$package"" >>receipt
  11. echo "VERSION="$version"" >>receipt
  12. echo 'CATEGORY="free"'      >>receipt
  13. echo 'SHORT_DESC="none"'    >>receipt
  14. echo 'MAINTAINER="tux@slitaz.org"' >>receipt
  15. cd ..
  16. tazpkg pack $path
复制代码

可以把以上脚本内容存为/usr/bin/a2s.sh下。。
要用的时候执行“a2s.sh Arch包”即可。。
把以上脚本中的"tar xzf...."这行替换成如下内容。。就变成转换rpm包至tazpkg包的脚本了。。

  1. rpm2cpio $1 | (cd $path/fs && cpio -iudv)
  2. cd ../..
复制代码

替换成以下内容,则可以转换deb格式至tazpkg包的了。

  1. dpkg-deb -X $1 $path/fs
复制代码
发表于 2009-5-18 07:27:52 | 显示全部楼层
收藏。这能解决依赖问题?SICM怎么加二笔输入法。
usblive配置后怎么重新生成ISO?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-18 08:11:03 | 显示全部楼层
说解决不能的说,但是可以手动添加DEPENDS的内容至receipt文件,然后重新tazpkg pack)
下面贴个改进版的脚本。专门用来把Arch的包转换为Slitaz的tazpkg包
之前的版本从文件名解析名称和版本号有时会出错。。
这次直接从ARCH安装包的.PKGINFO文件读取文件名及版本号。
这个是arch2tazpkg脚本。
  1. #!/bin/sh
  2. mkdir fs/
  3. tar xzf $1 -C ./fs
  4. package=$(grep '^ *pkgname' ./fs/.PKGINFO)
  5. package=$(echo ${package#*=})
  6. version=$(grep '^ *pkgver' ./fs/.PKGINFO)
  7. version=$(echo ${version#*=})
  8. file="$package-$version"
  9. mkdir $file
  10. echo "\
  11. # SliTaz package receipt.
  12. PACKAGE="$package"
  13. VERSION="$version"
  14. CATEGORY="free"
  15. SHORT_DESC="none"
  16. MAINTAINER="tux@slitaz.org"
  17. DEPENDS="" " > $file/receipt
  18. rm fs/.???*
  19. mv fs $file
  20. tazpkg pack $file
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-18 22:22:45 | 显示全部楼层
这个是deb2tazpkg脚本
  1. #!/bin/sh
  2. dpkg-deb -e $1 /tmp
  3. package=$(grep '^ *Package' /tmp/control)
  4. package=$(echo ${package##*:})
  5. version=$(grep '^ *Version' /tmp/control)
  6. version=$(echo ${version##*:})
  7. descrip=$(grep '^ *Description' /tmp/control)
  8. descrip=$(echo ${descrip##*:})
  9. file="$package-$version"
  10. file="$package-$version"
  11. mkdir -p $file/fs/
  12. dpkg-deb -x $1 $file/fs
  13. echo "\
  14. # SliTaz package receipt.
  15. PACKAGE="$package"
  16. VERSION="$version"
  17. CATEGORY="free"
  18. SHORT_DESC="$descrip"
  19. MAINTAINER="tux@slitaz.org"
  20. DEPENDS="" " > $file/receipt
  21. rm /tmp/*
  22. tazpkg pack $file
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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