从源代码安装应用程序


12

我想知道Linux中所有应用程序的通用安装。那是什么意思呢?好吧,当我使用Windows时,我知道如果要安装应用程序,请双击.exe文件,然后双击“下一步”,“下一步”,“下一步”。

在Linux中,我了解到,也许有一种通用的(非通用的)方式来安装任何应用程序。从源安装也许?那么,有没有可以像在Windows中那样用于安装应用程序的逐步方法?

我问是因为我不想一直问Google,怎么办?因此,我最近已成功从本指南的源代码freecad进行安装 ,我认为这是一个很好的开始,是常用的方法,对吗?

但是接下来的事情是在哪里找到正确的源,以及应用程序何时具有非常独特的安装方法!


如何从.tar.gz安装的可能重复项?
Tachyons,2012年

不,我想我的问题很清楚!只需提供更深入的信息
gabriel 2012年

Answers:


14

尽管有完善的工具,例如自动工具(包括automake和autoconf)和cmake,但安装说明因程序而异。

由于程序可以使用不同的编程语言,因此很难提供适合所有程序包的通用命令。例如,Python经常具有setup.py脚本,其中C程序经常使用自动工具或至少使用Makefile。

我总是从查找INSTALL,README或类似文件开始。如果需要从源代码编译程序,则可能需要build-essential依赖于编译器和其他通用开发软件包的软件包。

根据您尝试编译的程序,可能需要安装其他依赖项。检查自述./configure文件或脚本的输出(位于提取源的根目录中的可执行文件)。例如,如果提示您需要“ x11开发标头”,请尝试在存储库中找到“ x11-dev”或“ libx11-dev”(在这种情况下,这libx11-dev就是您要查找的内容)。

可以使用以下命令提取和配置使用autoconf / automake构建的源分发:

tar xf foo-1.0.tar.gz
cd foo-1.0
./configure
make
sudo make install

使用./configure --help可用的选项。默认情况下,通常/usr/local会很好地安装文件。除非将文件打包为.deb文件,否则请勿将此前缀更改为,/usr因为它可能与软件包管理系统(dpkg)冲突。

make应该开始编译make install将文件安装到指定位置的所有内容(sudo对于写入特权位置,如/usr/local)是必需的。要在以后将其卸载,请从源目录运行sudo make uninstall(前提是该软件包是使用autoconf / automake正确构建的,这是开发人员(而不是用户)的责任!

如果您只想从计算机上的软件中心编译软件包,请继续进行操作(相应地替换package版本):

sudo apt-get build-dep package
apt-get source package
cd package-1.0
dpkg-buildpackage -b -uc -us

有关命令的更多详细信息,请参见相应的手册页。(例如,man dpkg-buildpackage在终端中运行)。执行完这些命令后,您将在父目录中拥有一个.deb文件。建议尽可能使用来自Ubuntu存储库的软件包。显示上述步骤是出于教育方面的考虑,但是通常您希望在构建软件包之前对某些文件进行修改。


确实非常有帮助,所以唯一的常用方法是下载软件包(tar ??),然后解压缩以查看其内容!稍后我不得不问,我正在解压缩文件,然后运行上面提到的所有命令。因此,安装文件是我正在使用所有这些命令的文件吗?或者所有应用程序文件目录都是特定于从中心安装还是从源代码安装?为了清楚起见,我只想将应用程序安装在/ opt或/ usr?谢谢
gabriel 2012年

查看更新的帖子。提取和更改目录占所有案例的99%。在.tar之后,您可能会看到各种扩展名,例如.gz,.bz2,.xz。这些是指压缩格式。.zip不太常见,因为它无法存储文件权限,但至少在7-zip中可见。注意:我的说明是“从源代码编译”的更通用的说明。路径和配置与Ubuntu软件中心的路径和配置不同。
Lekensteyn'4

因此,无论我在哪个目录下使用./configure,进行make和make install。例如,我在主目录中下载并提取id之后,我应该运行这些命令,然后make install命令将自动将安装文件放入一个特定的目录吧?
百利

那里没有Windows的“ Program Files”之类的特定目录,对吗?
百利

解压缩压缩包后,将目录更改为解压缩的目录。确切的位置无关紧要,您可以在主目录或〜/ Downloads中进行操作,只需确保该路径不包含空格即可,因为它会破坏大多数工具。例如,~/Downloaded Sources一个坏主意哪里~/Downloaded-sources很好。对于您的最后一个问题,请参见askubuntu.com/q/27213/6969
Lekensteyn 2012年

7

FreeCAD可从Ubuntu软件中心获得,因此无需从源代码进行构建和安装。

Ubuntu软件中心始终是您应该首先去的地方。安装只需单击一个按钮即可。

屏幕左侧栏中的Ubuntu软件中心图标。

如果您确实要从源代码构建和安装程序,请查找该程序随附的README文件或其他说明。

许多软件包使用GNU autotools作为构建系统,并且可以使用以下命令来构建和安装:

./configure
make
sudo make install

在构建程序之前,您需要检查所需的库和其他依赖项(在程序的文档中也应提及)。在packages.ubuntu.com上,您可以找到包含所需库的Ubuntu软件包。

假设程序需要一个名为的库blah,那么您可能需要安装该软件包libblah-dev(在上面提到的“ Ubuntu软件包”页面上查找确切的名称)。

sudo apt-get install libblah-dev

哈哈,是的,我知道这个图标!但是,如果您曾经注意到软件中心的任何应用程序中都存在“规范不提供关键更新”的描述,并且freecad版本是0.8,我安装了freecad v0.13.I只是想要更深入的Linux系统知识,而不是指出软件中心在哪里,谢谢!!
gabriel 2012年

现在您说话正确!非常感谢,这就是我想要的更深知识!继续!
gabriel

好的,所以如果我想从源代码安装应用程序,那么该应用程序的人员必须提供源代码?例如,如果我要安装商业应用程序,则无法从源代码安装,这仍然是开源项目吗?这些应用程序的源代码对所有人开放,除了商业用户。对吗?
gabriel

“如果我想从源代码安装应用程序,此应用程序的人员必须提供源代码吗?” -是的,这就是“从源头 ”的意思!而且,如果它不是开放源代码的商业程序,那么您将不会获得源代码。
Jesper

因此,这就是为什么大多数Windows应用程序都无法在Linux中安装的原因?
gabriel '04

2

只有两种基本方法:

  1. 使用软件中心或相关工具(Synaptic apt-get等)。通常这是最佳选择。超出此方法可能会导致问题,例如冲突和更新困难,因此,只有在知道自己在做什么的情况下,才应该做其他事情。
  2. 阅读文档并使用它进行安装。您可能会在项目的网站,压缩包中或从获得文件的位置找到它。或者,可能没有文档,在这种情况下,您必须向Google询问或猜测。有很多不同的安装软件的方式。如果这令人困惑,请返回到数字1。

    如果您的软件包使用标准./configure; make; sudo make install,则可以使用checkinstall来获取所构建内容的.deb。这样,您不必牺牲包管理。


好的,我问这个问题是因为我在软件中心和.deb文件上遇到了一些问题,例如我想安装draftsight,一个cad程序并且仅用于32位,因此我尝试使用了ignore依赖项和体系结构命令,但没有任何反应on.So .deb文件的提取例如可能的话,然后使用make和sudo make等进行手动安装?谢谢
gabriel 2012年

如果您的体系结构没有可用的.deb,则必须以另一种方式安装程序。您可以使用Google来了解其他人的操作方式,或者搜索具有适当结构的.dev或从源代码构建。请参阅我即将进行的重要修改。
Scott Severance

在我们运行这些命令之前先执行checkinstall?什么会出现.deb?((我必须问您如何使您的帖子看起来井井有条?带有突出显示的命令和人员?关于askubuntu的任何指南?)) .deb然后进行checkinstall并使其在例如64bit上运行,还是我对这个问题感到愚蠢和愚蠢?
百利

您不能checkinstall在现有的.deb软件包上使用。如果您已经有一个.deb,从技术上讲,您可以将其解压缩并手动安装,但这不是最好的方法。checkinstall用于从源代码构建。有关格式化帮助,请参阅发布时始终显示的帮助链接。
Scott Severance'4

因此,不应解压缩然后手动安装结构不同于我所拥有的64位体系结构的.deb文件?.deb文件是从哪里构建的?它使用与从源代码构建的源代码相同的源代码吗?
百利

0

从源安装非常困难。

尽可能从软件中心进行安装。这相当于Windows的next-> next-> finish心态。

您也可以从Windows上的源代码安装东西。这不是linux独有的,只是有更多可用的源应用程序针对linux。


1
好吧,我只是想跳入我已经三年的Linux经验,而我想要的是终于不要继续问如何去做以及如何去做,您是否感觉到我?只是让我的Linux知识越来越深入。为什么不向我解释来源等?
百利


另外,当我的ubuntu中没有应用程序时,如何从软件中心进行安装。然后,我准备再次在askubuntu.com或google.gr中询问“''如何在ubuntu 11.10中安装此软件吗?”
gabriel

是。特定于应用程序更好。他们为特定用户提供有针对性的可复制答案。因此它们很有用。
RobotHumans 2012年

好吧,那确实是非常有帮助的。您只是感觉到我,就给了我我想要的东西,但是在阅读了很多有关linux的信息之后,我想问您,我将永远无法在linux系统中安装任何应用程序吗?这样是不可能的吗?
百利

0

Ubuntu提供了多种安装方法

  1. 通过集中包装系统

    这是ubuntu中的首选方法(但我个人不喜欢它)软件中心,突触和能力是对此的解释。

  2. 独立的deb软件包:-这种方法与Windows一样简单,只需双击文件并按安装按钮即可:Eg:Gdebi软件包管理器

  3. 二进制软件:这些与Windows .exe安装非常相似,它为Installer提供各种gui,通常是.bin文件

    您可以使用钻头岩石或类似工具制作这样的背包

  4. 自动包装和类似工具:-这些是第三方软件包管理器,旨在支持各种Linux发行版

  5. 源代码:这是软件安装中的第一种方法,在这种方法中,源代码被转换为二进制可执行文件,这些软件的安装说明通常随附源代码,并且仅对开源软件有效

警告:-这些只是我的观察,我是Linux中的新手,因此可以随意编辑/下载如果有任何错误


很好,谢谢,根据我的经验,我通常会在软件中心看到应用程序的描述,如果规范提供了更新,那么我会从center安装它。如果没有,我正在谷歌搜索,这就是为什么我发布了这个问题,并且所有答案都是谢谢
gabriel

选项1远优于3和4,因为您可以自动获取更新。如果所需的软件包或版本不在您的存储库中,则选项2很好(选项1)。尽可能避免使用数字3和4,因为它们没有充分利用软件包管理的所有好处,并且可能会导致冲突。即使Autopackage自己进行软件包管理,它仍然是一个独立的系统,并且可能会出现冲突和过期信息。而且,除非您是程序员,否则请尽量避免为源代码构建代码。包裹管理是一件了不起的事!
Scott Severance

我更喜欢这些方法,只是因为我的互联网连接是sloooow:p
Tachyons,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.