如何在VPS上使用Make从源代码编译和安装包
介绍
在 Linux 机器或 VPS 上工作时,您需要的包通常可以通过 apt 或其他包管理器获得。 但是偶尔会发生您需要一个无法从存储库中获得的包,或者有时您只需要一个比现有版本更新、更前沿的版本。
在这个例子中,我们将从源代码编译和安装 curl。 此示例中使用的基础知识适用于大多数包,并且可以在大多数情况下应用。
要求
要在 Linux 上编译源代码,在基于 Debian 的系统上需要名为“build-essential”的包,在 CentOS 上需要名为“开发工具”的包,因为它包含编译包所需的 gcc/g++ 编译器和库。 要在 Debian 和 Ubuntu 上安装它,请运行:
apt-get install build-essential
在 CentOS 上运行:
yum groupinstall "Development Tools"
有些包需要您安装一些依赖项才能编译或之后运行。 当使用 apt 或其他包管理器时,它通常会为您处理这个问题。 当你自己编译包时,你应该经常检查文档,并确保你事先安装了所需的包。
由于我们在此示例中正在编译 curl,因此您应该拥有所需的一切。 但是,您需要在您使用的 VPS 上获得 root 或 sudo 访问权限,然后才能安装编译的源代码。
在 VPS 上获取和编译源代码
下载压缩包
我们需要的第一件事是下载 curl 源代码。 下载源代码的方式有很多种,但在本例中,我们将使用 curl 网站 提供的 tarball。 如果需要,您可以将下一个命令中的 url 替换为当前版本的 curl。 请记住,它应该是 tar.gz 文件的链接。 当你准备好继续运行:
wget -O curl.tar.gz http://curl.haxx.se/download/curl-7.32.0.tar.gz
这将下载源代码并将其保存为当前目录中的 curl.tar.gz。
接下来我们需要解压压缩包。 为此运行:
tar -xvzf curl.tar.gz
源将位于名为“curl-”的文件夹中,然后是版本号。 如果您键入:
ls
它应该输出如下内容:
user@droplet:~/curl ls curl-7.32.0 curl.tar.gz
在我的情况下,该文件夹称为“curl-7.32.0”,因此要输入我键入的文件夹:
cd curl-7.32.0
配置和编译源
在文件夹中,您会注意到许多不同的文件。 现在,我们将只关注名为“configure”的文件。 “配置”是一个脚本,旨在帮助程序在大量不同的计算机上运行。 继续运行:
./configure
这将自动使用您的系统变量为您的 VPS 配置和准备源。 它基本上匹配程序所需的库,以及安装在系统上的库。 通过这样做,编译器知道在哪里查找源所需的库,或者在本例中是 curl。 除此之外,它还会确定之后在哪里安装软件包。 完成后,它将生成一个名为 Makefile 的文件,其中包含所有信息。 您现在已准备好编译源代码。 要编译它,请运行以下命令:
make
这会将大量垃圾编译到您的控制台的源代码输出。 继续,让它完成。 大约需要一分钟左右。 完成后,您应该准备好安装它。 作为根运行:
make install
Make 现在将按照 Makefile 中的说明安装已编译的包。
在大多数情况下,您现在应该完成。 您现在可以继续输入 curl
。 如果 curl 已正确安装,您应该会看到如下内容:
curl: try 'curl --help' or 'curl --manual' for more information
如果它输出 bash 错误,请继续输入:
ln -s /usr/local/bin/curl /usr/bin/curl
这将在 /usr/bin/curl 创建一个链接,将其连接到 /usr/local/bin/curl。 这将允许您通过在控制台中键入 curl
来运行 curl。 这通常会自动完成,但在某些情况下配置脚本找不到正确的安装位置。 您现在可以继续输入:
curl -V
这将输出您当前版本的 curl。
它应该返回如下输出:
user@droplet:~/curl curl -V curl 7.32.0 (x86_64-unknown-linux-gnu) libcurl/7.26.0 OpenSSL/1.0.1e zlib/1.2.7 libidn/1.25 libssh2/1.4.2 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp Features: Debug GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
恭喜! 您现在已经成功地从源代码编译并安装了 curl。
结论
您在此示例中使用的步骤适用于大多数包,因此可以在很多情况下重用。 但是,您应该始终事先阅读要安装的软件包的文档。 它通常会告诉您需要哪些依赖项,有时甚至会告诉您要运行哪些命令。 请始终记住:./configure
,然后是 make
,然后是 make install
。