線上源下載下傳和安裝
如果伺服器是處于線上狀态,在使用預設下載下傳源是外國的情況下,安裝更新軟體包往往會比較痛苦的存在,下載下傳了許久來一個逾時就gg了。國内有許多鏡像源,完美的解決了這個問題。
對于rpm系列的Linux,源就是存放在/etc/yum.repos.d/的檔案,一個檔案為一個源。
# 備份一下
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 下載下傳阿裡的源替換
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除舊緩存,生成新緩存
yum clean all
yum makecache
deb系列下的源為儲存在/etc/apt/sources.list檔案。
# 先備份
mv /etc/apt/sources.list /etc/apt/sources.list.bak
# debian 11
echo -e 'deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib\ndeb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib\ndeb https://mirrors.aliyun.com/debian-security/ bullseye-security main\ndeb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main\ndeb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib\ndeb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib\ndeb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib\ndeb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib'
具體可以看阿裡雲首頁debian鏡像
其他的發行版本的其他源配置方法也有可供參考。
- 阿裡雲https://developer.aliyun.com/mirror
- 騰訊雲騰訊軟體源 (tencent.com)
- 中科大USTC Open Source Software Mirror
- 清華源清華大學開源軟體鏡像站 | Tsinghua Open Source Mirror
離線下載下傳和安裝
不是所有的伺服器都是對外服務,也有的伺服器為區域網路内提供一些運算、檔案共享等服務,為了安全起見,是以會切斷與外網的通信。
- 如果需要安裝軟體包,一般情況有兩種方法。
- 下載下傳可執行的二進制比如.rpm和.deb檔案來安裝,或者是下載下傳源代碼編譯安裝。
- 配置區域網路内的本地yum、apt源。
軟體包下載下傳安裝
需要使用一台可以聯網的裝置,不安裝隻下載下傳安裝包,再将下載下傳好的安裝包通過scp等之類的方式上傳到其系統中。
rpm系列有專門的工具yumdownlode,使用起來還是很友善的。
# 下載下傳相關包以及依賴
yumdownloader --resolve --destdir=/local/yum <包名>
# 這裡使用-i也同理,-U為upgrade
rpm -Uvh --force --nodeps <包路徑>
deb的可能有點麻煩,需要依賴需要手動下載下傳,而且要先安裝才可以看到依賴。
# 檢視依賴
apt depends <包名>
# 檢視包資訊
apt-cache show <包名>
# 檢視包下載下傳路徑url
apt policy <包名>
# 隻下載下傳并且下載下傳到目前位置
apt-get download <包名>
結合起來的指令
#下載下傳
apt-get download <包名>
apt depends <包名> | awk '{print $2}' | xargs apt-get download
# 安裝
dpkg --force-all -i <包路徑>
碼源安裝
還是需要一台已經聯網可以下載下傳源代碼的壓縮包的裝置,可以從官網、github等下載下傳自己對應發行版本和處理器架構的源碼包,再使用scp之類的方式上傳到離線的伺服器。
一般情況都要經過解壓、配置(configure)、編譯(make)、安裝(make install)。下面以我之前的安裝openlava為例子。
# 解壓到目前檔案夾,會生成個同名openlava檔案夾
tar -zxvf openlava-4.0.tar.gz
# 進入源碼檔案夾中
cd openlava-4.0
# 配置configgure,加上prefix參數,配置安裝路徑,友善以後維護
. /configure --prefix=/data/openlava
# 編譯make,這裡的-j參數定義了使用線程數,這裡是2線程
# 可以用下面的指令檢視線程數
# grep 'processor' /proc/cpuinfo | sort -u | wc -l
make -j 2
# 安裝
make install
不過源代碼也不是這麼好找的啦。
本地源
本地yum源
通過系統iso鏡像制作本地源,先挂載系統鏡像。
mount /dev/cdrom /挂載路徑
yum的下載下傳源的相關配置檔案在/etc/yum.repos.d/目錄中,修改名稱全部為bak。
cd /etc/yum.repo.d/
ls -l | awk '{print $9}' | xargs -I{} mv {} {}.bak
建立個檔案<名字>.repo,這裡建立Local.repo。
# local yum
[Local] #取名
name=Local #取名
baseurl=file://挂載鏡像絕對路徑 #比如file:///media/cdrom
enabled=1 #是否使用源,1開0關
gpgcheck=0 #檢查,1開0關
完成後生成緩存
yum clean all
yum makecache
本地yum源挂載共享
也許你的伺服器有若幹台,每一台都使用單獨iso挂載可能有點麻煩,可以嘗試使用NFS、SMB等方式實作網絡挂載,将本機設定為Server,共享iso鏡像的挂載路徑,其他Linux建立同名的路徑挂載,scp将之前編輯的/etc/yum.repos.d/Local.repo配置檔案,即可實作共享。
本地yum源http共享
在編輯repo檔案時候,baseurl是可以直接寫http/s的url的,隻要我們将挂載iso鏡像通過http共享出來。
需要安裝Nginx
# 會在/etc/yum.repos.d/生成nginx.repo
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 再安裝 nginx,沒有第一步安裝nginx會提示找不到
yum -y install nginx
# 編輯一下/etc/nginx/nginx.conf配置檔案在http{}裡面加
# 或者看到include /etc/nginx/conf.d/*.conf;在conf.d裡面的*.conf裡加
# 比如default.conf
server {
listen 8080; # 端口看自己需求
server_name localhost;
root /mnt; # 這裡的路徑對應你挂載iso的路徑
index index.html;
}
修改/etc/yum.repos.d/Local.repo,中的baseurl為http://192.168.2.149:8080/挂載目錄。
基于此,可以拓展出基于docker制作http共享源哈哈。