Linux 工具可以从 SourceForge 自动下载并构建吗?

Linux 工具可以从 SourceForge 自动下载并构建吗?

有人做过什么(哪怕只是一个脚本)来在 Linux 中自动从 SourceForge 下载、解压和制作项目吗?我该怎么做?

具体来说,我使用的是 Ubuntu 12.10。

答案1

从源代码安装的标准工作流程是下载软件包、解压缩、运行附带的configure脚本、编译和安装。因此,对于您想要安装的软件包遵循标准方法的情况,您可以执行以下操作:

#!/usr/bin/env bash

## Make a new empty directory ($$ is the script's PID)
echo "Creating directory $$"
mkdir $$
cd $$
## get the file name 
tar=$(basename "$1" | grep -Po "[^?]*(?=[?$])") 
## Download the file
wget $1 --output-document $tar
## Check if it is a gzipped or bzipped tar 
file=$(find . -type f);
istgz=$(echo $file | grep "tar\.gz\|tgz")
istbz=$(echo $file | grep "tar\.bz\|tbz")
ok=1

## Extract the archive
if [ $istbz ]; then
    tar xjf $file;
    ok=$? ## $? is the last command's exit status
elif [ $istgz ]; then
    tar xzf $file
    ok=$?
## If things did not go OK, complain
else
    echo "Something went wrong, perhaps the filetype is not recognized"
    exit 1;
fi
## If things went OK, install
if [ $ok = 0 ]; then
    ## Look for a configure script and cd into wherever it is
    conf=$(find . -name configure -executable)
    if [ $conf ]; then
        dir=$(dirname $conf);
        cd $dir;
        ## run the configure script, make and install
        ./configure &&  make && sudo make install && echo "Succesfully installed, installation directory was $$"
    else
        echo "No configure script found, exiting."
    fi
fi

将此脚本另存为,例如,sforge.sh使其可执行(chmod a+x sforge.sh)并使用要安装的 sourceforge 包的 URL 运行它。请确保使用直接的链接并删除对镜像的任何引用。在此示例中,我正在下载conky,当我单击 sourceforge 中的“直接下载”链接时,URL 为

http://downloads.sourceforge.net/project/conky/conky/1.9.0/conky-1.9.0.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fconky%2F%3Fsource%3Ddlp&ts=1367161220&use_mirror=netcologne

我只想要第一部分(粗体),否则文件的名称会很奇怪,所以我将使用:

sforge.sh http://downloads.sourceforge.net/project/conky/conky/1.9.0/conky-1.9.0.tar.bz2

重要的提示

此脚本仅适用于遵循正常布局的软件包。它需要是 tarredbz2gzip文件,并且需要configure脚本和 Makefile。许多软件包没有这些,因此脚本将无法工作。不过,对于大多数(如果不是大多数)情况来说,它应该没问题。

答案2

有几个工具可以帮助解决这个问题:Jordan Sissel 的平均流量和 Bernd Ahlersfpm-烹饪。第一个是能够以非常简单的方式方便地从源代码构建包,第二个是提供一种自动化此工作流程的方法。

我不会详细描述,因为这些项目有详尽的文档记录,并且有针对不同类型代码的实用方法。

答案3

如果我理解你的问题没有错,那么就没有一个通用的工具可以“自动构建”所有项目。每个项目都有自己特定的步骤来检查依赖项、下载源代码、编译和安装。如果有人可以手动构建某个应用程序,他/她可以为该应用程序编写一个自动构建脚本,然后将该脚本分享给公众,以方便大家使用。

此外,您可以尝试使用ArchLinux,其 AUR 包管理器的功能与此类似,例如获取源代码 tarball、安装依赖项、编译和安装。如果要创建这样的包,请阅读AUR 用户指南

相关内容