it-swarm.cn

如何从源代码编译和安装程序

这个问题确实限制了我对Linux的使用。如果应用程序不在存储库中,或者没有安装程序脚本,那么我真的很难在哪里以及如何从源代码安装应用程序。

与Windows相比,它很容易。您(非常需要)使用安装程序应用程序来完成向导中的所有工作。使用Linux ...没那么多。

因此,您是否对此有任何提示或指示,或者是否有任何网站明确说明从源代码安装Linux程序的方式,原因和位置?

42
Nitrodist

通常,该项目将拥有一个网站,其中包含有关如何构建和安装该项目的说明。 Google首先。

在大多数情况下,您将执行以下任一操作:

  1. 下载一个tarball(tar.gz或tar.bz2文件),这是特定版本的源代码的发行版
  2. 使用tar zxvf myapp.tar.gz提取压缩的tarball或使用tar jxvf myapp.tar.bz2提取压缩的tarball提取tarball
  3. cd进入上面创建的目录
  4. 运行./configure && make && Sudo make install

要么:

  1. 使用git或svn或其他任何东西从其官方源代码仓库中获取最新的源代码
  2. cd进入上面创建的目录
  3. 运行./autogen.sh && make && Sudo make install

Configure和autogen.sh都将接受--prefix参数来指定软件的安装位置。我建议签出 我应该把我自己编译的软件放在哪里? 以获取有关安装定制软件的最佳位置的建议。

24
Sandy

我只想补充一下,有一些软件包管理器可以从源代码编译软件包,并处理所有软件包依赖项,标志等。

在BSD系统中,它是ports使用Ports集合

在Debian中,apt-get软件包管理器也可以从源代码安装: APT HOWTO:使用源软件包 (Ubuntu,Linux-mint和其他所有基于Debian的软件包都可以使用)

Gentoo发行版使用portage软件包管理器,该软件包管理器仅从源代码编译整个系统: Portage Introduction

Slackware可以编译软件包,但是我不知道那里是否有任何软件包管理器。

无论如何,您总是可以像上面提到的Sandy一样手动编译软件包=)此外,还必须可以使用apt-getportage其他任何发行版中的软件包管理器...

4
holms

我认为最好阅读您要安装的特定程序或应用程序随附的文档。通常,压缩包(您通常可以下载应用程序源档案)中有自述文件/自述文件,甚至还有INSTALL文件来阅读和了解安装该应用程序的首选方式。简而言之:RTFM;)

2
reiche

在FreeBSD中使用Ports集合的摘要:

查找端口

端口是按类别组织的,因此,如果您不知道端口在哪个类别中,则必须先找到它:

cd /usr/ports
make search name=myport

有时候,这样的条目太多了。我个人更喜欢:

find /usr/ports -name myport* -print -depth 2

搜索时请使用*,因为端口通常有多个版本。 depth参数确保您的返回结果不会不必要地被您不想要的匹配所困扰。

配置

通常,您需要进行一些配置。 Apache和Postgres等软件实际上需要它。主要有三个选择:命令行,环境和make配置文件。要开始使用命令行:

make showconfig

这将列出默认配置选项。如果您喜欢默认值,就可以编译和安装了。如果不,

make config

将弹出一个对话框,您可以在其中选择所需的选项。 (不要对此与make configure混淆,后者使用您选择的选项来配置您的端口!)这通常就足够了,但是对于某些软件(例如Apache),通常会有一个复杂的配置,简单的对话框将无法处理。为此,您还应该查看Makefile,这有时会为您提供make的其他目标,这些目标会给您更多信息。继续Apache示例

make show-modules
make show-options
make show-categories

将为您提供有关设置所选模块,线程选项等的信息。如果端口的默认设置大多数都很好,而您只想更改一些内容,则也可以只传递key = value对,例如环境变量:

make MYVBL1=MYVAL1 ... install clean

另外,您可以通过-D选项设置开关选项:

make -D MYVAR -D MYOTHERVAR ... install clean

但是,对于复杂的配置,命令行将无法正常工作,因此最好不要使用前两种方法。在这种情况下,您可以制作一个配置文件,并使用__MAKE_CONF变量将其传递给make。 FreeBSD有一个默认的配置文件:/etc/make.conf,通常包含有关先前安装的端口和其他系统设置的信息。首先,使用端口选项创建一个文件,将其命名为~/myport.mk,然后将该文件与/etc/make.conf合并:

cat /etc/make.conf ~/myport.mk >> ~/make.myport.conf

然后,您可以仔细检查您的配置:

make showconfig __MAKE_CONF=~/make.port.conf

如果一切看起来不错:

make install clean __MAKE_CONF=~/make.myport.conf

谨防!如果您需要在make configure或全部或部分安装后调整配置设置,则绝对必须先清除配置

make rmconfig

否则,将导致端口子系统,端口的make默认值和所需的配置之间发生意外交互。

总结的话很多,但是配置的复杂性主要是关于应用程序的,而不是端口。例如,Bash实际上没有任何选择。

安装

这是简单的部分:

make install clean

或者你可以

make build
make install
make clean

这只是打字。

就是这样。显然,您还可以做更多的事情,例如递归列出依赖项和配置选项,使用补丁程序进行更新等等。在这里,我将向您介绍 手册Ports 部分,端口子系统的手册页(有关其他make目标的详细信息)和make手册页。

1
gvkv

最近,当我从软件包管理器之外的源进行安装时,我已经开始使用“ Checkinstall”。它从第3方tarball构建“软件包”,然后可以通过软件包管理器工具进行安装和管理(和卸载)。

查看这篇文章- http://www.linuxjournal.com/content/using-checkinstall-build-packages-source

0
aryeh