Rae*_*kye 12 linux ubuntu debian software-installation
我看到所有这些解释包和 .debs 的链接......我知道......并且有很多方法可以使 tar.gz 文件工作(例如:Java 的更新替代品或手动将文件放入 /usr/local/ bin(或其他地方,这是我从数小时的搜索中推断出来的))。如果软件包如此智能,那么软件包或 .debs/rpms 中可用的 Linux 应用程序为何如此之少?
我是作为新用户发言的;我知道专家可能更了解它(我想我可以下载 Eclipse 的可编译版本?)。就像 netbeans 和 chrome 一样.sh
,eclipse 是一个简单的、可启动的目录,Java 需要这个update-alternatives
业务,但我认为它不会将自己注册到 Ubuntu/Debian 的“程序列表”(只是注册为命令)等(我知道这些是有时在存储库中可用,但我很困惑为什么下载页面没有正确的解释)。
长话短说:如果下载或编译 tar.gz 文件,我如何将其注册到系统?update-alternatives
似乎将其注册为命令,在 Ubuntu 中,它不会显示在搜索栏中。在 Debian 中,我可以手动为 GNOME 2 启动器添加快捷方式。但我真的应该做什么?
编辑:
因此,在对新解决方案进行了更多尝试之后,我可以稍微改进我的“问题”:
我应该如何管理我手动安装的程序?到目前为止,Firefox 和 Eclipse 是我唯一的例子(我没有下载很多东西)。他们都可以用完盒子,我喜欢。除了,我应该在哪里安装它们?我看到 Eclipse 有它自己的说明,但我宁愿以同样的方式做我所有的“手动包”。
/usr/local/bin
.xxx.desktop
在~/.local/share/applications/
. 这个 .desktop 文件的名称重要吗?configure
或unix/configure
文件)的东西会很好。我应该使用一些研究点CheckInstall
来跟踪所有这些。update-alternatives
用来注册路径。从这个java 线程,看起来我创建了一个从/usr/bin/java
to的链接/usr/lib/jvm/jdk...
。当我安装这些“独立”应用程序(如 Eclipse 或 Firefox)时,是否应该始终链接到/usr/bin/[app]
? 如果断言 1 是真的,我会做类似的事情sudo update-alternatives --install "/usr/bin/[app]" "[app]" "/usr/local/bin/[app]" 1
这些说明是否正确/管理手动安装的好方法?我还应该遵循其他任何步骤吗?其他建议?
rah*_*hmu 15
为什么包存储库中没有很多应用程序?
可能有很多原因:
没有一个单一的原因。如果您想在发行版的包管理器中看到您最喜欢的应用程序,您应该分别对待每个案例。尝试与开发人员取得联系(例如通过 IRC 频道或邮件列表)并询问您如何帮助打包。
如何安装压缩包?
tarball(.tar.gz 包)可以包含任何内容。在您真正打开它之前,您无法假设如何安装它。同样,每个包都应该以不同的方式处理。
寻找文档!任何(半)体面的软件包都将提供有关如何安装应用程序的说明。您的第一反应应该始终是查找名为 README、INSTALL 或类似内容的文本文件。查看出版商的网站也可能有所帮助。
由于每个包都不同,因此没有通用的方法来处理世界上的每个 tarball。这就像要求一个适用于世界上所有成分的食谱。没有发生。
充分了解您的系统、发行版和桌面环境会有所帮助,因此,如果这令人放心,那么随着您在 linux 世界中度过的时间,事情看起来会越来越可预测。
特例:Autotools
随着项目变得越来越大,他们需要提供简单的方法来从源代码移动到二进制文件再到系统上的完整安装。这就是为什么他们附带一个嵌入式构建系统,一组执行必要操作的脚本。
在 Linux/开源/自由软件世界中,一种构建系统得到了更广泛的采用:GNU Autotools。如果您曾经处理过一个(n 开放)源代码包,那么您很有可能会使用 Autotools。
在最简单的情况下,以下是安装与 autotools 一起打包的应用程序的方法:
./configure
:将生成与您的系统相对应的 Makefile 的脚本(它还经常检查依赖项的可用性)。make
: 根据之前生成的Makefiles编译源码。make install
:将二进制文件复制到适当的位置,创建符号链接以及开发人员定义的任何其他步骤。笔记
configure
脚本通常有很多选项,比如使用哪个编译器或如何定义目标目录。如果您需要灵活性,那么值得一看./configure --help
。回答问题中的更新
你所要求的没有明确的答案。这里的每个人都可能对什么是“良好实践”有自己的看法,但归根结底,只有您才能找到适合您的方法。如果有一个简单的答案,你就不会问这个问题了。您的发行版会为您解答。
话虽如此,这里有一些个人意见。
在我的系统上,我/usr/local/bin
为我的包管理器安装的包保留。我手工编译/安装的所有东西都在/opt
. 这是一个细节,但它有助于避免在处理同一程序的多个版本时出现重大问题。
xxx.desktop
和一般的 GUI 问题特定于您使用的桌面环境。如果它适用于您的系统,那就太好了。但它不能推广到 Unix 上可用的所有环境。
/usr/local/bin
具有已经在您的PATH 中的优势。如果您想使用另一个目录(就像/opt
我建议的那样),请确保将其包含在您的 PATH 中。如果您不知道该怎么做,请打开一个终端并在终端中执行以下操作(这不是最漂亮的方法,但在对您的系统一无所知的情况下,我无法提出任何其他建议):echo 'export PATH=$PATH:/opt' >> ~/.bashrc
我觉得你有自己明确要“注册”它有什么用。
解释一下——我并不是想成为聪明人——“linux”当然是内核,内核既不知道也不对系统上除 init 之外的任何用户空间软件感兴趣。那么我们在这里谈论什么?
您提到了许多不同的发行版。我有时从源代码构建软件,即使它在存储库中可用,因为我想要一些未在发行版二进制文件中设置的配置选项集。我遇到的唯一问题是,如果该软件包是其他东西的先决条件,我确实必须在包装系统中注册它,以避免意外地将发行版软件包安装在我构建的软件包之上。在基于 fedora/rpm 的系统上,这是通过rpm -i --justdb <package>
. 我不在基于 debian/apt 的系统上这样做;相反,我只是根据需要强制安装,这可能很懒惰 - 看起来有更好的方法,通过创建一个假装满足任何先决条件的虚拟包。这有点类似于 m0nhawk 的建议,即从 .tar.gz 源实际创建一个包——除了相当简单一些(老实说,我根本不喜欢 m0nhawk 的建议)。
除了包装系统之外,您似乎还有其他一些问题。我不清楚这些是什么,尽管您提到了桌面环境(例如 Gnome)。这些是异构的,所以根本没有人回答这个问题,“我如何在 linux 上做这件事”——它甚至不是“我如何在 ubuntu 上做这件事”或“我如何在 ubuntu 上做这件事”的问题gentoo”——这是一个“我如何为 gnome 桌面执行此操作”或“如何在 XFCE 桌面上执行此操作”等问题。在我看来,唯一的问题是您提到的启动器问题,我希望相信每个 DE 都提供了一种简单的方法来执行此操作(但它不会完全相同,因为它们是不同的)。
然后是由 init 系统管理的服务(例如,systemd 或 upstart)。所以这个问题实际上是一系列相关的问题,可能涉及:
不能有一个简单的统一解决方案的部分原因(尽管XDG 标准 可能提供其中的某些部分)是“linux”不是一个简单的统一操作系统,我想它的绝大多数用户更喜欢这种方式。我通常根本不使用 DE,也从不使用它们附带的文件浏览器等。
再说一次,我真的很想对此有所帮助,而不仅仅是教宗:如果您想在这里解决问题,则必须更准确地考虑这些问题是什么以及实际涉及哪些软件(不仅仅是“linux” ") 如果你想解决它们。
我认为您的整体问题的基本原因是 Linux 系统本身不包含“注册表”。一个可执行文件是你真正需要运行的东西。如果您不想指定可执行文件的完整路径,那么大多数 shell 将在您的环境 $PATH 变量中列出的目录中查找它们。使用链接库等可能会变得更加复杂,但通常您不需要深入研究。
不同的 Linux 发行版对各种文件系统布局和包管理系统进行了标准化,这就是问题所在。Redhats 使用rpm,Debians/Ubuntu 使用 deb 包。Arch也走自己的路。从软件项目的角度来看,除非你想被包含在一个发行版中,否则你的用户群完全在一个发行版中,或者是一个旨在为每个人提供易于安装的商业产品,它们可能是你开始寻找构建的唯一点各种包。
实际上,构建时使用的源 tar.gzgcc
可能是常见“Linux 包”的最佳定义。带有一些 GNU 实用程序和 GCC 的 Linux 内核几乎是您可以获得的所有不同风格的基于 Linux 的操作系统之间的共同点。
我不会说“如此少”的东西可以作为包提供,因为您正在寻找的特定东西不是。(或者也许分销商选择不为所有这些包大惊小怪而烦恼?就像 Chrome 和它自己的更新过程一样)。有这么多的软件包周围这么多不同的包装系统,为这么多的架构这么多免费的软件,它不好笑。
如果你已经构建了一些不是作为你的 linux 发行版的包提供的东西,或者支持作为包构建的选项,那么将它“注册”为一个真正的包的最好方法是为它构建一个包,定义所有的位置这些文件应该基于您选择的软件包系统并以这种方式安装。成为一个灵魂并将您的包装工作贡献给项目,以便其他人可以从中受益。
如果您只想运行一个已编译的包,可以将二进制路径添加到您的$PATH
?
如果你正在做其他事情,那是什么?
归档时间: |
|
查看次数: |
18940 次 |
最近记录: |