如何优雅的安装 tar.gz 格式的程序

2016-09-11 09:38:43 +08:00
 tommark

很多 linux 程序的安装文件都是 tar.gz 格式的,一般都是手动解压,然后把里面的目录放到对应的 linux 文件节点上,有没有像 deb 文件这样,可以自动完成这一切,同时系统里能自动注册程序包,以后可以用标准的成 apt-get remove 卸载程序。

7262 次点击
所在节点    Linux
29 条回复
Bardon
2016-09-11 09:50:11 +08:00
建议了解下 Gentoo 这类 source distributions 的包管理工作原理就知道了。
或者 ArchLinux 的 ABS
sylecn
2016-09-11 09:50:27 +08:00
fpm 可以把 tar.gz 格式的文件打成标准 deb 包。
对于 Oracle JDK ,我一直是这样打包部署和升级的。
arrow2015
2016-09-11 11:28:49 +08:00
我是把 tag.gz 解压到~/Programs 文件夹下,./executable 这样使用的。之前每次启动都要 cd 到 executable 所在目录,非常麻烦。后来创建了~/start 文件夹,把 Programs 下所有软件的可执行文件 link 到~/start 文件夹下,再把~/start 加入 PATH ,现在我启动软件的流程是启动一个终端,然后直接输入 start 下的链接文件名启动。
andyhuzhill
2016-09-11 11:32:13 +08:00
.tar.gz 一般不是源码包么? 要 ./configure && make && make install 安装的吧
arrow2015
2016-09-11 11:54:27 +08:00
@andyhuzhill .tar.gz 我不怎么清楚。我知道有几个不是源码包的: atom-amd64.tar.gz, ideaIC-15.0.2.tar.gz, CLion-2016.2.1.tar.gz. 这几个不用 configure && make && make install. 你不说我还没有意识到有这2种区别的.tar.gz
notolddriver
2016-09-11 12:08:54 +08:00
tar.gz 一般是认为是文件的压缩包格式啊
所以你的问题等同于 如何优雅的安装打成压缩包的程序
具体如何安装也要看程序项目是如何打包的了。
比如很多 linux 程序提供*.tar.gz 的源码包,那么他的安装方式,通常便是:./configure && make && make install
而有的程序是直接提供给你可运行的二进制文件*.tar.gz 压缩包了,那么你解压出来放到 bin 或者 sbin 目录下去,直接 shell 中调用即可了。
所以说啊,这个根本没法控制的。。。
bdbai
2016-09-11 12:14:34 +08:00
@notolddriver 自己解压的可以放进 /usr/local/bin
neosfung
2016-09-11 12:20:37 +08:00
一般来说编译的是./configure && make && make install
删除 make uninstall
直接提供的二进制文件的就拉到 /usr/local/bin 下面,要删除的话直接删除就好了
loading
2016-09-11 12:24:04 +08:00
很多安装包都是用压缩打包的方式,打包后使用一定扩展名,里面包含了约定的一个文件包含包信息和安装命令等(目录也是约定的)。

你可以下载一个 debian 的 deb 包解开看看。
loading
2016-09-11 12:25:16 +08:00
如果你用 debian ,可以先把源代码做成 deb 包保存,以后也能用。

建议看看 archlinux 的 aur ,哈哈。
skydiver
2016-09-11 12:38:11 +08:00
打成
skydiver
2016-09-11 12:39:22 +08:00
打成发行版的包就行了,看一下文档,一般都有教程教你如何打成 deb 或者 rpm 或者 pkg.tar.xz
sylecn
2016-09-11 12:57:15 +08:00
楼上提到的那些需要编译后再安装的包, fpm 已可以提供支持的。
只要 make install 那一步添加一下 DESTDIR ,然后再打包。

比如我曾经打 libestr 这个包的时候:

# get source from http://libestr.adiscon.com/files/download/libestr-0.1.8.tar.gz

./configure
make
make install DESTDIR=$PWD/fpm-dest

fpm -s dir -t deb -n libestr -v 0.1.8 --url "http://libestr.sourceforge.net/" --description "Helper functions for handling strings" -C fpm-dest .
jyf007
2016-09-11 20:57:22 +08:00
emerge gentoo 欢迎你。
Owenjia
2016-09-11 21:35:26 +08:00
为什么需要使用这种方式安装?使用包管理工具不是更好?
使用包管理工具的话,所安装的文件都可以被追踪到,卸载方便,同时处理依赖也方便。
即使是官方仓库没有的,大多数 distro 也都提供了对第三方仓库的支持,实在想不到有什么理由这么用。
linux40
2016-09-12 08:24:19 +08:00
README
wizardoz
2016-09-12 09:32:05 +08:00
tar.gz 就是一种压缩方式.
这个问题就相当于问: 如何优雅的安装.rar 格式的程序
icris
2016-09-12 13:32:35 +08:00
@Owenjia 我的 windows 10 里的 bash , apt show nodejs 显示 Version: 0.10.25~dfsg2-2ubuntu1
zhujq
2016-09-12 15:06:02 +08:00
知乎吗
Owenjia
2016-09-12 17:19:17 +08:00
@icris
试下添加第三方仓库?
https://github.com/nodesource/distributions

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/305398

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX