LinuxSir.cn,穿越时空的Linuxsir!

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

make install 和 intallpkg 的区别?

[复制链接]
发表于 2007-10-20 21:48:50 | 显示全部楼层 |阅读模式
今天一下午终于把scim装上了
帖子上是这样做的
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
make instal DESTDIR=/xxx
makepkg scim-1.4.7-i686-1xc.tgz
installpkg scim-1.4.7-i686-1xc.tgz

为什么make install后还要
installpkg呢?它们不是一样的吗?有什么区别?
我是初学者,谢谢!
发表于 2007-10-20 21:55:38 | 显示全部楼层
前四步是制作tgz包,最后一步是安装tgz包。

使用tgz包方便以后管理和升级。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-20 22:09:22 | 显示全部楼层
但是只用前三步已经安装好了阿
回复 支持 反对

使用道具 举报

发表于 2007-10-21 09:52:42 | 显示全部楼层
make install DESTDIR=/xxx
是指将软件安装到目标目录 /xxx 下,没有指定的话就是 / 目录下
使用 DESTDIR 是为了方便于打包(makepkg),而且安装时,指定 DESTDIR 且 DESTDIR 不为 / 安装的软件一般是无法使用的。
还有软件安装是否支持 DESTDIR, 是由Makefile决定的,一些Makefile没有DESTDIR,因此这个方法就没有效果了。
如果感兴趣可以看看makepkg的脚本:-)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-21 18:48:41 | 显示全部楼层
我是直接安装到DESTDIR=/下的,打的包全是错的,今天又从新弄了一遍。
还有一些不懂的,每次在
#make install DESTDIR=/xxx 后,
#cd /xxx
#makepkg scim-1.4.7-i686-1xc.tgz
#installpkg scim-1.4.7-i686-1xc.tgz
在安装scim-pinyin之前应该把 /usr /etc两个文件夹删除了吧,再把tgz包移到其其它文件夹?

还有生成的install文件夹是否有用?
回复 支持 反对

使用道具 举报

发表于 2007-10-21 21:34:11 | 显示全部楼层
Post by robin_-2004
我是直接安装到DESTDIR=/下的,打的包全是错的,今天又从新弄了一遍。
还有一些不懂的,每次在
#make install DESTDIR=/xxx 后,
#cd /xxx
#makepkg scim-1.4.7-i686-1xc.tgz
#installpkg scim-1.4.7-i686-1xc.tgz
在安装scim-pinyin之前应该把 /usr /etc两个文件夹删除了吧,再把tgz包移到其其它文件夹?

还有生成的install文件夹是否有用?


不用的,当然要保证在执行 make install DESTDIR=/xxx 之前, /xxx 目录下没有其他的文件(夹),否则在安装制作的软件包的时候,这些垃圾文件(?)也会被安装到系统中的。
生成的 install 文件夹下面 是安装时的信息文件(slack-desc) 和 安装脚本(doinst.sh)
其中 doinst.sh 一般包含了软件包中符号链接维护信息(标准的 tgz 安装包是没有符号链接文件的)和其他的安装后配置软件包。如:
/var/log/scripts/mysql-5.0.37-i486-1 #这是mysql软件包中的安装脚本(BTW:slackware 会将所有的软件包的安装脚本备份到 /var/log/scripts 目录下)
######## content of /var/log/scripts/mysql-5.0.37-i486-1
# Install the info files for this package
# 安装 info 文件
if [ -x /usr/bin/install-info ]
then
   /usr/bin/install-info --info-dir=/usr/info /usr/info/mysql.info.gz 2>/dev/null
fi
config() {
  NEW="$1"
  OLD="`dirname $NEW`/`basename $NEW .new`"
  # If there's no config file by that name, mv it over:
  if [ ! -r $OLD ]; then
    mv $NEW $OLD
  elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
    rm $NEW
  fi
  # Otherwise, we leave the .new copy for the admin to consider...
}
# 配置 mysqld 的配置文件
# config 的意思是:如果不存在 rc.mysqld 文件,就直接重命名 rc.mysqld.new 为rc.mysqld, 如果 rc.mysqld.new 与 rc.mysqld 的md5值相同,则删除 rc.mysqld.new,否则就啥也不做了
config etc/rc.d/rc.mysqld.new
# 这个是符号链接的维护
( cd usr/lib/mysql ; rm -rf libmysqlclient_r.so.15 )
( cd usr/lib/mysql ; ln -sf libmysqlclient_r.so.15.0.0 libmysqlclient_r.so.15 )
( cd usr/lib/mysql ; rm -rf libmysqlclient.so )
( cd usr/lib/mysql ; ln -sf libmysqlclient.so.15.0.0 libmysqlclient.so )
( cd usr/lib/mysql ; rm -rf libmysqlclient.so.15 )
( cd usr/lib/mysql ; ln -sf libmysqlclient.so.15.0.0 libmysqlclient.so.15 )
( cd usr/lib/mysql ; rm -rf libmysqlclient_r.so )
( cd usr/lib/mysql ; ln -sf libmysqlclient_r.so.15.0.0 libmysqlclient_r.so )
( cd usr/lib ; rm -rf libmysqlclient_r.so.15 )
( cd usr/lib ; ln -sf mysql/libmysqlclient_r.so.15 libmysqlclient_r.so.15 )
( cd usr/lib ; rm -rf libmysqlclient.so )
( cd usr/lib ; ln -sf mysql/libmysqlclient.so libmysqlclient.so )
( cd usr/lib ; rm -rf libmysqlclient.so.15 )
( cd usr/lib ; ln -sf mysql/libmysqlclient.so.15 libmysqlclient.so.15 )
( cd usr/lib ; rm -rf libmysqlclient_r.so )
( cd usr/lib ; ln -sf mysql/libmysqlclient_r.so libmysqlclient_r.so )
回复 支持 反对

使用道具 举报

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

本版积分规则

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