vimer linux kernel 爱好者

aptly搭建本地仓库

2023-06-03

import all 包 /aptly/

需要构建2个repo: 1个amd64 (包含fakeroot), 3个all amd64: 思路: 首先是创建amd64的repo, then创建快照,最后合并快照。

repo amd64:

# 1
aptly repo create -architectures amd64 -comment 'for riscv32 sbuild-creatchroot' -component main -distribution sid amd64-tmp

Local repo [amd64-tmp]: for riscv32 sbuild-creatchroot successfully added. You can run ‘aptly repo add amd64-tmp …’ to add packages to repository.

# 2
aptly repo add amd64-tmp tmp/fakeroot_1.31-1.2_amd64.deb

# 3. 从 repo 创建一个snapshot:
 aptly snapshot create yubos-reboostrap-0605-amd64 from repo amd64-tmp
Snapshot yubos-reboostrap-0605-amd64 successfully created.
## You can run 'aptly publish snapshot yubos-reboostrap-0605-amd64' to publish snapshot as Debian repository.
# 4.
aptly snapshot merge yubos-reboostrap-new-20230606 yubos-reboostrap-new-20230605 yubos-reboostrap-0605-amd64
## 必须新建一个 snapshot
# 5.
aptly publish snapshot -distribution="sid" yubos-reboostrap-new-20230606 yubos-reboostrap/20230606
         // yubos-reboostrap-new-20230606 必须是已经存在snapshot, 也就是上一步命令中执行的。
## all snapshot
## aptly publish snapshot --architectures="all" -distribution="sid" yubos-base-all yubos-reboostrap/base-all  //
# 6.
ln -s /home/a/.aptly/public/yubos-reboostrap/20230606/ /srv/ftp.debian.org/root/yubos-rebootstrap-test

all repo 20230608

     1.  aptly repo create -architectures all -comment 'all for riscv32 sbuild-creatchroot' -component main -distribution sid all-tmp
     ```
     Local repo [all-tmp]: all for riscv32 sbuild-creatchroot successfully added.
You can run 'aptly repo add all-tmp ...' to add packages to repository.
     ```
    2. add all packages to all-tmp
    3. aptly  snapshot create yubos-base-all from repo all-tmp
    4. aptly snapshot merge yubos-reboostrap-rv32-all-0608 yubos-reboostrap-new-20230605 yubos-base-all
    5. aptly publish snapshot -distribution="sid" yubos-reboostrap-rv32-all-0608 yubos-reboostrap/20230608
    6. ln -s /home/a/.aptly/public/yubos-reboostrap/20230608/ /srv/ftp.debian.org/root/yubos-rebootstrap-test

backup

下面是当时的一些印迹,故放在这里以防万一哪天会用到的:

1.
sudo sbuild-createchroot --debootstrap=mmdebstrap --arch=riscv32  \
 --include=debian-ports-archive-keyring,ca-certificates,apt       \
 --make-sbuild-tarball=/srv/sid-riscv32-sbuild.tgz    \
sid /tmp/chroots/sid-riscv32-sbuild/ \
 http://vimer.f3322.net:63017/yubos-rebootstrap-repo/

// 可以更换 yubos-repo
2. 
sudo sbuild-shell sid-riscv32-sbuild
echo "deb [trusted=yes] http://vimer.f3322.net:63017/yubos-rebootstrap-repo/ sid main" > 
/etc/apt/sources.list

echo "deb [trusted=yes] http://vimer.f3322.net:63017/yubos-base-all/ sid main"   > 
/etc/apt/sources.list
  1. amd64 for yubos:
    // 首先创建 amd64
     sudo sbuild-createchroot --debootstrap=mmdebstrap --arch=amd64      \
        --include=debian-ports-archive-keyring,ca-certificates        \
          --make-sbuild-tarball=/srv/sid-amd64-sbuild.tgz     \
              sid /tmp/chroots/sid-amd64-sbuild/ \
               https://mirror.iscas.ac.cn/debian/
     //更换 rootfs
     sudo mmdebstrap --arch=amd64 --variant=buildd  \
      --include=fakeroot,build-essential,ca-certificates,apt-transport-https,eatmydata  \
       sid sid-amd64-yubos-sbuild.tar.xz  \
        "deb [trusted=yes] http://home.revy.cn:36013/yubos-base/ sid main " \
     "deb [trusted=yes] http://vimer.f3322.net:63017/yubos-base-all/ sid main"
     //
     sudo mv sid-amd64-yubos-sbuild.tar.xz /srv
     //
    
    

backup:

```bash
#    aptly issue:
a@debian:~$ aptly snapshot drop yubos-reboostrap-new-20230606
Snapshot `yubos-reboostrap-new-20230606` is published currently:
 * ./sid [amd64, riscv32] publishes {main: [yubos-reboostrap-new-20230606]: Merged from sources: 'yubos-reboostrap-new-20230605', 'yubos-reboostrap-0605-amd64'}
ERROR: unable to drop: snapshot is published

这种情况只能删除 `sid`
a@debian:~$ aptly publish drop sid
Removing /home/a/.aptly/public/dists...
Removing /home/a/.aptly/public/pool...

如果这样的话,可以这样删除:

a@debian:~$ aptly publish list Published repositories:

  • yubos-reboostrap/20230604/sid [amd64, riscv32] publishes {main: [yubos-reboostrap-20230604]: Snapshot from mirror [yubos-reboostrap]: http://127.0.0.1:8000/ rebootstrap}
  • yubos-reboostrap/20230605/sid [amd64, riscv32] publishes {main: [yubos-reboostrap-new-20230605]: Snapshot from local repo [yubos-rebootstrap]}
  • yubos-reboostrap/20230606/sid [amd64, riscv32] publishes {main: [yubos-reboostrap-new-20230606]: Merged from sources: ‘yubos-reboostrap-new-20230605’, ‘yubos-reboostrap-0605-amd64’} a@debian:~$ aptly publish drop sid yubos-reboostrap/20230606 Removing /home/a/.aptly/public/yubos-reboostrap/20230606/dists… Removing /home/a/.aptly/public/yubos-reboostrap/20230606/pool…

Published repository has been removed successfully.

aptly 的使用
https://www.cnblogs.com/cookie1026/p/17039327.html
...
sudo sbuild-createchroot --debootstrap=mmdebstrap --arch=riscv32   --include=debian-ports-archive-keyring,ca-certificates,apt         --make-sbuild-tarball=/srv/sid-riscv32-sbuild.tgz       sid /tmp/chroots/sid-riscv32-sbuild/ http://vimer.f3322.net:63017/yubos-rebootstrap-exp
mkdir /tmp/chroots/sid-riscv32-sbuild/

...

a@debian:~$ aptly publish drop sid yubos-reboostrap/20230614
Removing /home/a/.aptly/public/yubos-reboostrap/20230614/dists...
Removing /home/a/.aptly/public/yubos-reboostrap/20230614/pool...

Published repository has been removed successfully.
a@debian:~$ aptly snapshot list
List of snapshots:
 * [yubo-base-part-all-exp]: Snapshot from local repo [all-tmp]: all for riscv32 sbuild-creatchroot
 * [yubos-base-all]: Snapshot from local repo [all-tmp]: all for riscv32 sbuild-creatchroot
 * [yubos-base-full-all]: Snapshot from mirror [debian-all]: https://mirror.iscas.ac.cn/debian/ sid
 * [yubos-reboostrap-0608-amd64]: Snapshot from local repo [amd64-tmp]: amd64 for riscv32 sbuild-creatchroot
 * [yubos-reboostrap-20230604]: Snapshot from mirror [yubos-reboostrap]: http://127.0.0.1:8000/ rebootstrap
 * [yubos-reboostrap-exp-20230614]: Merged from sources: 'yubo-base-part-all-exp', 'yubos-reboostrap-rv32-0614-exp'
 * [yubos-reboostrap-new-20230605]: Snapshot from local repo [yubos-rebootstrap]
 * [yubos-reboostrap-rv32-0614-exp]: Snapshot from local repo [yubos-rebootstrap]
 * [yubos-reboostrap-rv32-all-0608]: Merged from sources: 'yubos-reboostrap-new-20230605', 'yubos-base-all'
 * [yubos-rebootstrap-rv32-all-amd64]: Merged from sources: 'yubos-reboostrap-rv32-all-0608', 'yubos-reboostrap-0608-amd64'

To get more information about snapshot, run `aptly snapshot show <name>`.
a@debian:~$ aptly snapshot drop yubos-reboostrap-exp-20230614
Snapshot `yubos-reboostrap-exp-20230614` has been dropped.
a@debian:~$ aptly  snapshot drop yubos-reboostrap-rv32-0614-exp
Snapshot `yubos-reboostrap-rv32-0614-exp` has been dropped.

使用 aptly 发布仓库的一般流程

aptly 的一些常见操作:

repo

a@debian:~/packages/sail$ aptly repo list
List of local repos:
 * [all-tmp]: all for riscv32 sbuild-creatchroot (packages: 16)
 * [amd64-tmp]: amd64 for riscv32 sbuild-creatchroot (packages: 2)
 * [riscv64-tmp-all]: for Debian sid ROS2 on riscv64 all packages (packages: 87)
 * [riscv64-tmp]: for Debian sid ROS2 on riscv64 (packages: 1022)
 * [sail-tmp]: sail for debian (packages: 36)
 * [yubos-rebootstrap] (packages: 618)
 
 a@debian:~/packages/sail$  aptly repo show sail-tmp
Name: sail-tmp
Comment: sail for debian
Default Distribution: sid
Default Component: main
Number of packages: 36

删除 package
a@debian:~/packages/sail$ aptly repo remove sail-tmp  libsail-ocaml-dev
Loading packages...
[-] libsail-ocaml-dev_0.17.1-1_amd64 removed

添加 package
aptly repo add sail-tmp package-name

aptly是基于 snapshot 发布东西的:
a@debian:~/packages/sail$ aptly snapshot create sail-for-debian-amd64-0228 from repo sail-tmp

Snapshot sail-for-debian-amd64-0228 successfully created.
You can run 'aptly publish snapshot sail-for-debian-amd64-0228' to publish snapshot as Debian repository.

 思路就是基于 repo 进行 package的更新, 通过snapshot进行发布。然后我们看一下 已 public 的snapshot有哪些:
 
 发布 repo
 a@debian:~/packages/sail$ aptly publish snapshot -distribution="sid"  sail-for-debian-amd64-0303 sail-for-debian/20240303
Loading packages...
Generating metadata files and linking package files...
Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:

Snapshot sail-for-debian-amd64-0303 has been successfully published.
Please setup your webserver to serve directory '/home/a/.aptly/public' with autoindexing.
Now you can add following line to apt sources:
  deb http://your-server/sail-for-debian/20240303/ sid main
Don't forget to add your GPG key to apt with apt-key.

You can also use `aptly serve` to publish your repositories over HTTP quickly.

 a@debian:~/packages/sail$ aptly publish list
Published repositories:
  * revyos-11-06/11-06/sid [riscv64] publishes {main: [revyos-ros2]: Merged from sources: 'revyos-ros2-11-6', 'revyos-ros2-11-6-all'}
  * sail-for-debian/20240227/sid [amd64] publishes {main: [sail-for-debian-amd64-0227]: Snapshot from local repo [sail-tmp]: sail for debian}
  * yubos-reboostrap/20230604/sid [amd64, riscv32] publishes {main: [yubos-reboostrap-20230604]: Snapshot from mirror [yubos-reboostrap]: http://127.0.0.1:8000/ rebootstrap}
  * yubos-reboostrap/20230605/sid [amd64, riscv32] publishes {main: [yubos-reboostrap-new-20230605]: Snapshot from local repo [yubos-rebootstrap]}
  * yubos-reboostrap/20230608/sid [amd64, riscv32] publishes {main: [yubos-reboostrap-rv32-all-0608]: Merged from sources: 'yubos-reboostrap-new-20230605', 'yubos-base-all'}
  * yubos-reboostrap/2023060801/sid [amd64, riscv32] publishes {main: [yubos-rebootstrap-rv32-all-amd64]: Merged from sources: 'yubos-reboostrap-rv32-all-0608', 'yubos-reboostrap-0608-amd64'}
  * yubos-reboostrap/20230617/sid [amd64, riscv32] publishes {main: [yubos-reboostrap-exp-20230617]: Merged from sources: 'yubo-base-part-all-exp', 'yubos-reboostrap-rv32-0617-exp'}
  * yubos-reboostrap/base-full-all/sid (origin: Debian) [all] publishes {main: [yubos-base-full-all]: Snapshot from mirror [debian-all]: https://mirror.iscas.ac.cn/debian/ sid}

然后把 publish的 ln 到 server


上一篇 fail2ban的使用

Comments

Content