有人做过什么(哪怕只是一个脚本)来在 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
重要的提示
此脚本仅适用于遵循正常布局的软件包。它需要是 tarredbz2
或gzip
文件,并且需要configure
脚本和 Makefile。许多软件包没有这些,因此脚本将无法工作。不过,对于大多数(如果不是大多数)情况来说,它应该没问题。