Ubuntu在局域网内的安装--建立自己的DEB源服务器

       因为要在公司里多台机子上装UBUNTU,又不想每次都把同样要安装的包从外网下载一遍,所以就像利用已经装好的一台PC上存下来的包做个简单的局域网用的库,这样以后每重新装一台都可以从这个库里来更新了,而且这些新的PC都不需要连接外网了。

今天把deb服务器大概研究了下,这里我只谈HTTP访问方式的服务器,它其实就是标准的HTTP服务,用一些特殊的目录名把所有的包进行分类,比如我用的ubuntu是7.04的版本,它运行在i386的平台上,这样对于main的包就是在dists/feisty/main/binary-i386/下面,不过不是把deb包直接扔到这个目录就可以了,这样的话apt-get是不知道的,apt-get每次只会去读这个目录下的一个Packages.gz文件,这个文件里包含了所有包的信息,apt-get就可以通过它找到所有的包并且自动下载安装了。

下面的问题就是如何生成这个Packages.gz文件,我看了网上一些非UBUNTU镜像的库,找到一个sh文件,我稍微作了一些修改,如下(update.sh)

# ! / bin / bash

#  Quick Package Updater

#  John Dong (Fixed by Vinx)


# Licensed under the GPL .

DISTS
= " feisty "

SECTIONS
= " main "
BINARY_ARCH
= " binary-i386 "

for  a in  $ DISTS ;   do

        
for  b in  $ SECTIONS ;   do

        
for  c in  $ BINARY_ARCH ;   do

                
if  [ -d dists /$ a /$ b /$ c ] ;   then
                
echo   " Updating dists/$a/$b/$c/Packages "
                dpkg-scanpackages 
/ var / cache / apt / archives  / dev / null | gzip - 9   >  dists /$ a /$ b /$ c / Packages . gz
                fi
        done
        done

done

其中dpkg-scanpackages 就是搜索指定目录下的deb包并且把包的信息写入Packages.gz,这里我搜索当前系统安装过的包,并且把所有包都归入了i386的main中,比较方便,呵呵。

有了脚本我们就可以开始建立局域网的库了,首先安装一个apache2
sudo apt-get install apache2
在浏览器里输入localhost看apache是否正常启动了。

进入/var/www,分别建立 dists/feisty/main/binary-i386/目录,注意目录的owner要改成www-data

然后执行这个脚本:
sudo sh update.sh
就能自动生成package文件了,以后如果有什么新的包加入,只要重新执行一下这个脚本就可以了。

找到另外一台PC,在/etc/apt/sources.list里加入 deb http://yourip/ feisty main
sudo apt-get update
你能看到从你的库里下到正确的package就OK了。

然后你就可以install所有的包了,不需要从外面服务器下载了,呵呵。

到这里,一个简单的DEB库就建立好了,不过我有些包不是在官方的源上下的,所以不会在archives里面有储存,我是把他们按照软件类别放到/home/download/下的不同目录下的,为了其他PC也能安装这部分包,我在脚本里加入了一个更新拷贝命令:
sudo find /home/vinx/download/ -name "*.deb" -exec cp {} -u /var/cache/apt/archives/ /;
它每次都会从download目录下寻找所有的deb包并且更新到本地的包缓存目录中,这样,所有的包都能被其他PC访问到了:)

 

你可能感兴趣的:(Unix/GNU/Linux)