aptとpipのローカルソースを構築する

バックグラウンド

プロジェクトがデプロイされている場合、パブリックネットワークは使用できません。また、apt/pipパッケージを事前にオフラインでキャッシュする必要があります。次に、ノートブックはapt/pipソースサーバーとしてデプロイメントサイトに接続されます。

ソフトウェアの準備

apt-mirror:オンサイトシステムのマイナーバージョン番号がわからないため、aptパッケージを同期します。ここでは、約230GBのUbuntuBioncライブラリを直接プルダウンします。
pip2pi:syncpypiパッケージ

手順

apt-mirror

インストール
sudo apt update
sudo apt install -y apt-mirror
复制代码
構成、設定

メジャーリビジョンbase_path、、run_postmirror同步源

############# config ##################
#
set base_path    /var/www/html
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
set defaultarch  amd64
# set postmirror_script $var_path/postmirror.sh
# 设置是否执行下载后的脚本操作,默认是1(但是默认没有postmirror.sh脚本,所以报错)
set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# clean http://mirrors.tuna.tsinghua.edu.cn/ubuntu

# postgresql
deb http://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/ bionic-pgdg main
deb https://packagecloud.io/timescale/timescaledb/ubuntu/ bionic main

复制代码

ピット

  1. Postgresqlのようなライブラリはそれ自体でキーを追加する必要があります。apt-mirrorはキー情報を同期しません
  2. Timescaledbは、ミラーライブラリを設定し、事前にGPGを追加します。それ以外の場合は、リリースファイルがありません。

参照:packagecloud.io/timescale/t…

同期して使用する

sudo apt-mirror
# 同步花了一上午。。而且强烈建议在tmux里执行,ssh会不会自己断?这事很玄学
sudo apt install nginx
复制代码

/ etc / nginx / sites-enableの下にあるデフォルトのページのソフトリンクを削除して、ポート80が占有されないようにし
ます。conf.dディレクトリで、新しいxx.confを作成します。構成の内容は次のとおりです。

server {
        listen      80;
        listen [::]:80;
        server_name mirror.xxx.cn;
        location / {
            alias  /var/www/shared/;
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on;
        }
}

复制代码

わかりました、次に/var/www/shared/、コマンドを実行してソフト接続を作成します(別のミラーを追加するのは簡単ですここでは相対パスを使用して
いることに注意してください。パスの関係を自分で決定するだけです/var/www/shared/

sudo ln -s ../html/mirror/mirrors.tuna.tsinghua.edu.cn/ubuntu ubuntu
复制代码

nginxサービスを再起動します

sudo service nginx restart
复制代码

すべてがうまくいけば、次のようなページ

image.png

イントラネットホスト構成ソース

ヒント:最初に/ etc / hostsを変更し、DNS解決ルールをカスタマイズできます。これは、内部ソースIP環境で頻繁に変更される場合に適しています。

source.listは次のように設定できます。

deb [arch=amd64] http://mirror.xxx.cn/ubuntu/ bionic main restricted universe multiverse
deb [arch=amd64] http://mirror.xxx.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb [arch=amd64] http://mirror.xxx.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb [arch=amd64] http://mirror.xxx.cn/ubuntu/ bionic-security main restricted universe multiverse

复制代码

ピットポイント
apt-mirrorは、デフォルトでネイティブアーキテクチャと整合性のあるパッケージをダウンロードします。たとえば、ここに追加されていない場合[arch=amd64]、apt updateは、i386パッケージ情報が見つからないというエラーを報告し、インデックス作成作業を完了できません。これはamd64パッケージのインストールに影響します。
上記の作業が完了すると、aptオフラインソースが設定されます。i386ソースがないことに注意してください。

pip2pi

インストールと構成

sudo apt update
sudo apt install python3
sudo apt install python3-pip
# 更新pip,旧版本在操作中有奇怪Bug
pip3 install pip --upgrade
# 安装
pip install pip2pi
复制代码

安装后其实有三个执行文件
pip2pi : 之后两个命令的结合体
pip2tgz: 下载pypi包
dir2pi: 为pypi包建立索引
因为我需要建立多个requirements.txt组成的环境,所以先一个个下载,再统一建立索引

pip2tgz /var/www/html/pypi/packages -r requirements.txt 
...多个文件
dir2pi  /var/www/html/pypi/packages
复制代码

之后步骤与搭建apt一致,在/var/www/shared/目录下建立软连接,重启Nginx服务

使用

修改内网主机的~/.pip/pip.conf,把新搭建的主机当作pypi源

[global]
index-url = http://mirror.xxx.cn/simple
trusted-host = mirror.xxx.cn
复制代码

这时候,自定义hosts文件的好处就显现出来了,一次配置,整体使用

坑点
你可能遇到以下情况

image.png 其他包可以正常安装,而且确定已经为gevent包建立索引
解决方案:升级内网主机的pip版本

python -m pip install  pip --upgrade
复制代码

pip包是可以找到的,不用担心。
暂不知道bug触发的条件,玄学、、

参考来源

segmentfault.com/a/119000002…
juejin.cn/post/705850…
blog.csdn.net/zhifangyou7…
blog.csdn.net/xianjie0318…

おすすめ

転載: juejin.im/post/7079237533237788686