如何解决未从存储库获取的软件的依赖问题

如何解决未从存储库获取的软件的依赖问题

好吧,我发现 Ubuntu 软件中心发布的几乎每个我尝试安装的软件的版本都过于过时。我能想到的唯一解决方案是从官方页面下载最新版本。我在使用 blender 时也遇到了这个问题,设法找到了一个让我手动更新软件包的帖子(一个预先制作的一行代码)。现在我试图安装一个 android 开发环境。我下载了适用于 linux 64 位的 ADT 包,里面是一个 zip 文件夹。我尝试从 GUI 运行可执行文件,但什么也没发生。当我从 shell 运行它时,它给了我一个错误,我相信这与缺少依赖项有关。所以问题是:

如何正确安装未包含在软件管理器软件包中的软件?

正确的意思是我希望它被安装得就像是由包管理器安装的一样...我想要图标,我想要仪表板中的链接,我想要依赖项......

编辑

在有人说之前,是的,我已经跑了

sudo apt-get install eclipse
sudo apt-get update
sudo chmod +x path/to/bin
sudo path/to/bin

编辑

在我看来,“不可能” = “不可接受”。我想在 Ubuntu 上正确安装最新版本。可能吗?这可能很难,但我该怎么做呢?我一直在试图找到这个问题的答案,这似乎是一个没有人会告诉我的行业秘密……

答案1

首先,不同的 Linux 发行版有不同的目标。例如 Gentoo 旨在成为高度可定制的操作系统,而 LXLE Linux 则针对 Windows 难民。

Ubuntu 的目标是成为一个简单易用、外观优雅的发行版。因此,下列人员应使用它。

  1. 完全的 Linux 菜鸟。
  2. 那些想要优雅操作系统的人。
  3. 那些想要一个易于使用且社区庞大的操作系统的人。
  4. Ubuntu 粉丝。

考虑你的需求Arch Linux或者Gentoo对你来说最好


Ubuntu 存储库以保存陈旧的软件包而闻名,其中一些软件包Anki太旧以至于不再可用。如果您决定使用 Ubuntu 并拥有最新软件,则有以下选择。

  1. 将 ppa 存储库添加到您的操作系统其中包含最新软件。请注意,您可能需要对每个单独的软件执行此操作。
  2. 从源代码构建.再次,您必须对每个软件执行此操作,并手动解决依赖关系。

如何正确安装软件?

如果你决定从源代码构建,那么所有软件开发人员将提供必要依赖项的列表。只需使用apt-get install命令安装这些软件即可。如果没有,则说明没有依赖关系,或者开发人员太无知,他们的软件也必须被忽略。


太短;请阅读
使用 Arch Linux,没有理由弄乱 Ubuntu 使其表现得像 Arch。这里没有行业秘密,只是不值得。

It's easier to buy an egg than forcing a chicken to lay one.

答案2

对于 Eclipse 来说:

要在 Linux 中使用 ADT(并允许 Eclipse 使用 ADT),您有两种选择:

  1. 运行 32 位 Ubuntu(呵呵)
  2. 运行 64 位 Ubuntu 并启用multiarch支持(耶!)

如果尚未启用,您可以通过运行以下命令在 Ubuntu 上启用多架构支持:

sudo dpkg --add-architecture i386

完成后,您将需要添加使用 ADT 所需的 32 位库(取决于您使用的 Ubuntu):

# Ubuntu 12.04
apt-get install ia32-libs

# Ubuntu 13.04
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5

# Ubuntu 13.10
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1

如果您想从终端访问 SDK 和 ADB,则需要在文件中导出相关路径.bashrc

sudo nano .bashrc

# At the end of the file add

PATH=$PATH:$HOME/AndroidSDK:$HOME/AndroidSDK/tools
export PATH

PATH=$PATH:$HOME/AndroidSDK/platform-tools
export PATH

要创建启动器,你可以看看这里

针对您的一条评论:

我只想说,关于这里正在进行的争论:每个操作系统都有自己的优点和缺点。话虽如此,让我们来寻找答案。

Windows 需要向后兼容(由于 NT 内核和其他原因)。这意味着 Windows 安装更大,但 64 位 Windows 无法运行的东西很少,包括 32 位应用程序,如 Eclipse 和 Android SDK。这也意味着大多数东西都可以开箱即用。

Linux 需要额外的设置,因为基本安装(即使是带有 GUI 的安装)不需要那么多兼容库(在 Windows 中为 .dll)即可运行。这使得安装更小,可以针对特定硬件。这也意味着您可以在较旧/功能较弱的系统上运行 Linux(在我看来,这是 Linux 的真正目标)。问题是附加功能(例如 64 位环境中的 32 位应用程序)需要额外的设置。

只有少数 Linux 发行版(Arch 和 Fedora 就是一个例子)的存储库中包含最新和最好的软件版本。这是因为大多数 Linux 发行版都注重稳定性。我不能代表 Arch 发言,因为我对它没有什么经验。但是,Fedora 本质上是 RHEL(RedHat Linux Enterprise)的测试平台。对于这样的发行版,它与稳定性无关,而是测试什么能在最新的硬件上运行。这可能是一个真正的痛苦,因为最终测试软件(以及驱动程序、库和内核)的是用户。这可能是真正的地狱。如果您认为浪费几个小时尝试让程序运行是一件可怕的事情,想象一下当某些未经测试的东西损坏或崩溃时,恢复整个系统(以及您的源代码、数据和理智)会是怎样。

像 Ubuntu(尤其是 LTS)这样的发行版注重稳定性。它们通常不会在稳定的存储库中包含未经彻底测试的内容。这就是为什么当涉及到最新和最好的东西时,事情进展得有点慢。代价是你会错过一些新功能,但你有一个稳定的系统。

您可以安装它们的不稳定版本(我认为 14.04 是当前针对 Ubuntu 的测试版本),但关于 Fedora 等的说法也适用。这解决了问题的这一部分(我希望)。

相关内容