当前位置: 代码迷 >> 综合 >> Debian Customer PPA RFC (by quqi99)
  详细解决方案

Debian Customer PPA RFC (by quqi99)

热度:75   发布时间:2023-12-13 09:19:55.0

作者:张华  发表于:2016-01-13
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

( http://blog.csdn.net/quqi99 )

Precondition

a, sudo apt install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file debhelper dh-systemd openstack-pkg-tools

b, GPG key
scp -r /home/hua/.gnupg ubuntu@192.168.100.3:~/
gpg --list-public           # or gpg --gen-key
export GPGKEY=XXXXXX
gpg --send-keys --keyserver keyserver.ubuntu.com $GPGKEY

#sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A4B469963BF863CC

c, SSH key
ssh-keygen -t rsa
https://launchpad.net/~/+editsshkeys

d, Bazaar
bzr whoami "<Email>"
bzr launchpad-login <lauchpad_id>

Get the source code

a, Add related ppa to /etc/apt/source.list
   ppa info can be found from lanchpad https://launchpad.net/~zhhuabj/+archivesubscriptions
   
b, Import the public key and update the repository
   sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <public-key>

   sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A4B469963BF863CC
   sudo apt-get update

c, Get the source code (pls don't add other repository when executing this step)
   #Get package from the ppa
   sudo apt-get source <package-name>    
   #Get package from official repo

      sudo pip install --upgrade lazr.restfulclient

     #pull-lp-source cinder trusty

pull-lp-debs ovn focal 20.03.2-0ubuntu0.20.04.1

   #debcheckout --git-track='*' nova   #for openstack sru

pull-ppa-debs --ppa <ppa> <package> << normally you could use this, but since the PPA is private, it doesn't work.. so you need to manually locate the correct release, click, download the .debs 1 by 1 with 'wget' or something'.. then

on each node:

apt install dctrl-status apt install $(grep-status -w -S neutron -s Package -n|sed -E 's@^(.*)$@\1=2:12.1.1-0ubuntu3@g'|xargs)

d, dget *.dsc

Example:

sudo add-apt-repository cloud-archive:kilo
#uncomment deb-src in /etc/apt/sources.list.d/cloudarchive-kilo.list
$ cat /etc/apt/sources.list.d/cloudarchive-kilo.list
deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/kilo main
deb-src http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/kilo main


sudo rm /var/lib/apt/lists/* -vf && sudo apt-get update

rmadison libvirt

sudo apt-cache madison nova-compute  #See all versions

cmadison octavia
sudo apt-get source nova=1:2015.1.2-0ubuntu2~cloud

其中get-get source相当于:

#https://launchpad.net/~ubuntu-cloud-archive/+archive/ubuntu/kilo-staging/+packages?field.name_filter=qemu&field.status_filter=superseded&field.series_filter=
wget https://launchpad.net/~ubuntu-cloud-archive/+archive/ubuntu/kilo-staging/+files/qemu_2.2+dfsg-5expubuntu9.6~cloud0.debian.tar.gz
wget https://launchpad.net/~ubuntu-cloud-archive/+archive/ubuntu/kilo-staging/+files/qemu_2.2+dfsg-5expubuntu9.6~cloud0.dsc
wget https://launchpad.net/~ubuntu-cloud-archive/+archive/ubuntu/kilo-staging/+files/qemu_2.2+dfsg.orig.tar.xz
dpkg-source -x qemu_2.2+dfsg-5expubuntu9.6~cloud0.dsc

Patch package

1, quilt configuration - https://lists.ubuntu.com/archives/ubuntu-devel/2022-May/042103.html
   a, sudo apt-get install quilt devscripts dh-make
   b, Export to bash env
      export QUILT_PATCHES=debian/patches
      export QUILT_NO_DIFF_INDEX=1
      export QUILT_NO_DIFF_TIMESTAMPS=1
      export QUILT_REFRESH_ARGS="-p ab"
      export QUILT_PATCHES=debian/patches
      export QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"

#git format-patch -1 2150d5d8e17323bc9fce11903da3afffda211d26
quilt import /bak/openstack/nova/0001-pci-eliminate-DB-lookup-PCI-requests-during-claim.patch

   c, Creating a new patch.
      quilt new test.diff
      quilt add neutron/agent/linux/ovs_lib.py
      quilt refresh
      quilt rename -P test.diff test2.diff
      cat debian/patches/test.diff
      quilt pop -a

   d, For the exsiting patch,
      Put the patch into './debian/patches' directory
      Pppend it into './debian/patch/series' file
      Use 'quilt push -a' command to push all existing patches onto the source tree.
      quilt refresh

3, changelog
   dch -i #can be changed later by dch -e
   cat debian/changelog
   cat debian/copyright
   cat debian/rules
   cat debian/control

   ppa name format:  <customername>[-<openstack-version>|-<ubuntu-release>]
   changelog format: <upstream-version>hf<lp-bug-number>v<date>.<buildnum>
   dch -b -Dprecise-updates -v1:2014.1.5-0ubuntu1.2hf123456v20150902.0
   nova (1:2014.1.5-0ubuntu1.2hf123456v20150902.0) precise-update; urgency=low
       * [HOTFIX] Fixes some catastrophic failure (LP: #123456)
         - blah blah blah
         - d/p/my-awesome-backport.patch

4, Edit ppa's dependancy in 'Edit PPA dependencies' field.
   Eg:
   for Juno,    ~ubuntu-cloud-archive/ubuntu/juno-staging
   for grizzly, ~ubuntu-cloud-archive/grizzly-staging


5, Resolv the dependancy
   dpkg-checkbuilddeps
   
   add grizzly dependancy repository
   #sudo add-apt-repository ppa:ubuntu-cloud-archive/grizzly-staging
   deb http://ppa.launchpad.net/ubuntu-cloud-archive/grizzly-staging/ubuntu precise main
   deb-src http://ppa.launchpad.net/ubuntu-cloud-archive/grizzly-staging/ubuntu precise main
   sudo apt-get build-dep  quantum    # will read debian/control to resolv dependancy.
   sudo apt-get build-dep --no-install-recommends quantum

6, Build
   find . -name "*.pyc" -exec rm -rf {} \;
 
   #build signed source package
   debuild -S -k<your key here>

   #build signed binary package
   debuild -b -k<your key here>

   #build unsigned source package
   debuild -i -us -uc -S

   #build unsigned binary package which can be tested by the command 'dpkg -i <pac>.deb'
   debuild -i -us -uc -b

   debuild -S -sa --changes-option=-DDistribution=precise -k<GPGKEY>  # -sa is used for including source code

   # pdebuild --debbuildopts -sa

   #for openstack sru, 有时候这步不成功,需要先将patch用quilt格式化一下再用(quilt import, quilt push -a, quilt refresh)

   sudo apt install build-essential devscripts quilt dh-autoreconf fakeroot dpkg-dev python-sphinx

   gbp buildpackage -S -k$GPGKEY
   #gbp buildpackage -S -us -uc

2, debiandiff, 这步需要将老新build两次再用debdiff命令产生
   a, Use the existing debdiff, patch -p1 < ../trusty.debdiff
   b, Create new debdiff, http://packaging.ubuntu.com/html/traditional-packaging.html#creating-a-debdiff
      debuild -S                                              #build old source to generate dsc file
      debdiff old.dsc new.dsc                           #generate debdiff by comparing two sources

7, Upload to PPA
   export DEBEMAIL=<email>
   export DEBFULLNAME=<name, e.g. "Zhang">
   #Test PPA can be created in https://launchpad.net/~zhhuabj/+activate-ppa
   dput -f ppa:zhhuabj/trusty-sru-testing test.changes
  
   #openstack sru

git push --all lp:~<launchpad-id>/ubuntu/+source/nova
git push --tags lp:~<launchpad-id>/ubuntu/+source/nova

如果用git的话,需要先在~/.git_config中添加:

[url "git+ssh://zhhuabj@git.launchpad.net/"]
        insteadof = lp:

然后执行:git push lp:~zhhuabj/ubuntu/+source/nova

最后访问: https://code.launchpad.net/~zhhuabj/ubuntu/+source/nova/+git/nova

8, sru进度查看

UA,    https://people.canonical.com/~ubuntu-archive/pending-sru.html

UCA, reqorts.qa.ubuntu.com/reports/ubuntu-server/cloud-archive/kilo_versions.html

附录一,sbuild

#sbuild, https://wiki.ubuntu.com/SimpleSbuild
#sudo add-apt-repository cloud-archive:liberty
cat /etc/apt/sources.list.d/ubuntu-cloud-archive-liberty-staging-trusty.list

deb http://ubuntu-cloud.archive.canonical.com/ubuntu liberty-updates/ubuntu main
# deb http://ppa.launchpad.net/ubuntu-cloud-archive/liberty-staging/ubuntu trusty main
# deb-src http://ppa.launchpad.net/ubuntu-cloud-archive/liberty-staging/ubuntu trusty main

schroot -l
schroot -c source:trusty-amd64 -u root         #这句会告成电脑没有声音,可以使用sudo killall pulseaudio解决
schroot -c trusty-amd64 -u root  #do work
apt-get build-dep libvirt-bin
sbuild -d trusty-amd64

附录二, pbuilder

注: 关于apt-cacher-ng的用法可见: ssh总断 (by quqi99)_quqi99的博客-CSDN博客_ssh中断
#pbuilder https://wiki.ubuntu.com/PbuilderHowto   http://www.cr173.com/html/28930_1.html
sudo apt-get install pbuilder debootstrap devscripts apt-cacher-ng

echo 'PassThroughPattern: .*' |sudo tee -a /etc/apt-cacher-ng/acng.conf
echo 'Acquire::http::Proxy "http://127.0.0.1:3142";' | sudo tee /etc/apt/apt.conf.d/01acng
$ sudo cat /etc/pbuilderrc 
MIRRORSITE=http://us.archive.ubuntu.com/ubuntu/
export http_proxy=http://127.0.0.1:3142/
export http_proxys=http://127.0.0.1:3142/

DEBFULLNAME='xxx'
DEBEMAIL='xxx@xxx.com'

DISTRIBUTION='trusty'
OTHERMIRROR="deb http://us.archive.ubuntu.com/ubuntu/ ${DISTRIBUTION} universe"
OTHERMIRROR+="|deb http://us.archive.ubuntu.com/ubuntu/ ${DISTRIBUTION}-updates main universe"
OTHERMIRROR+="|deb http://us.archive.ubuntu.com/ubuntu/ ${DISTRIBUTION}-proposed main"
EXTRAPACKAGES=''
EXTRAPACKAGES+=' vim sudo openssh-server bash-completion wget rsync git build-essential gdb crash apt-transport-https ca-certificates ubuntu-cloud-keyring'

# Cloud Archive
#OS_RELEASE='liberty'
#OTHERMIRROR+="|deb http://ubuntu-cloud.archive.canonical.com/ubuntu $DISTRIBUTION-updates/$OS_RELEASE main"

if [ -n "$OS_RELEASE" ]; then
    BASETGZ="/var/cache/pbuilder/$DISTRIBUTION-$OS_RELEASE-base.tgz"
else
    BASETGZ="/var/cache/pbuilder/$DISTRIBUTION-base.tgz"
fi

#sudo pbuilder --create --distribution trusty --architecture amd64 --basetgz /images/pbuilder/trusty-amd64-base.tgz --debootstrapopts --variant=buildd
sudo pbuilder --create --distribution trusty --architecture amd64 --debootstrapopts --variant=buildd

sudo cp /var/cache/pbuilder/trusty-base.tgz /var/cache/pbuilder/trusty-liberty-base.tgz

then uncomment OS_RELEASE, run 'sudo pbuilder update' again

sudo pbuilder login --save-after-login  #equal to chroot

echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf
root# Add UCA repository  to source.list,

        # 'deb http://ubuntu-cloud.archive.canonical.com/ubuntu liberty-updates/ubuntu main' && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8A6844A29F68104E

        or apt-get install software-properties-common python-software-properties  &&  add-apt-repository cloud-archive:liberty
root# apt update

then exit chroot, press ctrl-d to save

#schroot -c trusty-amd64 -p apt update

#it's more safer to use the following chroot instead of above 'pbulider login' and 'schroot' to modify chroot env

LANG=C DEBIAN_FRONTEND=noninteractive chroot /var/lib/schroot/chroots/trusty-amd64 bash -c 'apt-get update'
echo 'hua     ALL=(ALL) NOPASSWD:ALL' |sudo tee -a /var/lib/schroot/chroots/trusty-amd64/etc/sudoers

sudo pbuilder update   #run again when building the package every time

wget https://launchpad.net/debian/+archive/primary/+files/libvirt_1.2.14-3.dsc
wget https://launchpad.net/debian/+archive/primary/+files/libvirt_1.2.14.orig.tar.gz
wget https://launchpad.net/debian/+archive/primary/+files/libvirt_1.2.14-3.debian.tar.xz

#注意:上面的是debian包,需要先使用beyond compare工具和ubuntu的1.2.16对debian目录进行比较转化成ubuntu包,转换规则是:

1, 凡1.2.14有的,1.2.16没有的,删

2, 凡1.2.14没有的,1.2.16有的,增

3, 凡1.2.14与1.2.16不一致的以1.2.16为准

4, debian/patch和debian/changlog可以不作处理

5, debian/control也是重点

#sudo pbuilder --build --distribution trusty --architecture amd64 ./libvirt_1.2.14-3.dsc

dpkg-source -x libvirt_1.2.14-3.dsc && cd libvirt-1.2.14

# sudo pdebuild

NOTE: 若看到错误:Unable to find neutron_14.1.0.orig.tar.gz in upload or distribution. 是需要运行: sudo pdebuild --debbuildopts -sa

sudo pdebuild --debbuildopts -sa  # sometimes need to include source code for uca

# you'd better not add sudo

debsign /var/cache/pbuilder/result/<package>_<version>.changes -k$GPGKEY
dput ppa:techtonik/backports /var/cache/pbuilder/result/<package>_<version>.changes

注意: 其他帐户的私有PPA要点击"Manage Access"按钮将自己LP ID加进去之后才能在OpenID transaction in progress 键接看到ppa的用户名和密码

sudo apt-get autoclean
sudo apt-get update
sudo apt-get -f install

sudo apt update

cat /etc/apt/source.list

deb http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu xenial-security main restricted universe multiverse

#deb-src http://us.archive.ubuntu.com/ubuntu/ trusty main

## ubuntu ddebs

# deb http://ddebs.ubuntu.com/ xenial main restricted universe multiverse
# deb http://ddebs.ubuntu.com/ xenial-updates main restricted universe multiverse
# deb http://ddebs.ubuntu.com/ xenial-proposed main restricted universe multiverse
# deb http://ddebs.ubuntu.com/ xenial-security main restricted universe multiverse
## kernel ppa
# deb http://ppa.launchpad.net/canonical-kernel-team/ppa/ubuntu xenial main
# deb-src http://ppa.launchpad.net/canonical-kernel-team/ppa/ubuntu xenial main

附录 - 如何修改ubuntu-installer

Ubuntu有两个Installer [3], 一个是修改版的Debian Installer [2](也叫d-i, 用C/bash写的), 一个用于desktop CD安装的Ubiquity[1] (前端用python写的,后端还是d-i, ‘bzr branch http://bazaar.launchpad.net/~ubuntu-installer/ubiquity/trunk‘)。
例如,要修改ubiquity源码(sudo apt-get source ubiquity)下的./d-i/source/preseed/debian/network-preseed.postinst文件,先从https://launchpad.net/d-i(debian对应的链接是https://anonscm.debian.org/cgit/d-i/)找到ubuntu修改后的d-i应该对应preseed,然后找到对应的源码为http://bazaar.launchpad.net/~ubuntu-installer/preseed/master/view/head:/debian/network-preseed.postinst (也可通过’bzr branch lp:preseed’或’bzr branch lp:~ubuntu-core-dev/preseed/ubuntu’命令下载源码).
sudo apt-get source preseed
bzr branch http://bazaar.launchpad.net/~ubuntu-core-dev/preseed/ubuntu

那么如何将修改的preseed debdiff生成iso文件呢?只需要先将preseed dput到ppa (preseed是没有patchless的,直接修改要修改的文件即可), 等它build完成之后然后再将debian-installer (sudo apt-get source debain-installer,不需要修改源文件,只需要在changelog中增加版本号) dput到ppa即可。等 build完之后便可以生成mini.iso ( http://ppa.launchpad.net/zhhuabj/xenial-sru-testing/ubuntu/dists/xenial/main/installer-amd64/20101020ubuntu451.19/images/netboot/mini.iso )。

如何测试这个mini.iso呢?和测试full iso的方法一样,启动后在选择语言处按TAB键(full iso是按F6键)进入grub菜单,然后添加url=http://192.168.99.135/xenial.preseed即可。在正式版出来之前只能使用mini.iso,full iso的日期可参见:https://wiki.ubuntu.com/BionicBeaver/ReleaseSchedule

[1] https://code.launchpad.net/~ubuntu-installer/ubiquity/trunk
[2] http://d-i.alioth.debian.org/doc/talks/debconf6/paper/
[3] https://wiki.ubuntu.com/Installer/Development
[4] http://bazaar.launchpad.net/~ubuntu-core-dev/preseed/ubuntu/view/head:/debian/network-preseed.postinst
[5] http://bazaar.launchpad.net/~ubuntu-installer/preseed/master/view/head:/debian/network-preseed.postinst
[6] https://anonscm.debian.org/cgit/d-i/preseed.git/tree/debian/network-preseed.postinst

附录: How to use schroot to enter a chroot without using sudo

sudo apt install -y schroot sbuild debhelper ubuntu-dev-tools piuparts
sudo mkdir -p /var/lib/schroot/chroots/trusty-amd64
sudo cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.old
sudo debootstrap --include=sudo,bash-completion,kernel-wedge,fakeroot,git,vim,bc,gawk,libncurses5-dev,libssl-dev,openssl,build-essential,rsync --arch=amd64 trusty /var/lib/schroot/chroots/trusty-amd64 http://archive.ubuntu.com/ubuntu/
#sudo pbuilder login --save-after-login

#schroot -c trusty-amd64 -p apt update

#it's more safer to use the following chroot instead of above 'pbulider login' and 'schroot' to modify chroot env

LANG=C DEBIAN_FRONTEND=noninteractive chroot /var/lib/schroot/chroots/trusty-amd64 bash -c 'apt-get update'
echo 'hua     ALL=(ALL) NOPASSWD:ALL' |sudo tee -a /var/lib/schroot/chroots/trusty-amd64/etc/sudoers


vi /etc/schroot/chroot.d/sbuild-trusty-amd64
[trusty-amd64]
description=trusty-amd64
# To avoid the error 'You do not have permission to access the schroot service'
users=hua
groups=sbuild,root,admin
root-groups=sbuild,root,admin
# Uncomment these lines to allow members of these groups to access
# the -source chroots directly (useful for automated updates, etc).
#source-root-users=sbuild,root,admin
#source-root-groups=sbuild,root,admin
type=directory
profile=default
union-type=overlayfs
# We can also use the chroot which is created by pbuilder. eg: tar -xf /var/cache/pbuilder/trusty-base.tgz
directory=/var/lib/schroot/chroots/trusty-amd64
source-root-users=root,sbuild,admin
source-root-groups=root,sbuild,admin
preserve-environment=true

# https://blog.csdn.net/fenglailea/article/details/37035995
sudo groupadd admin
sudo adduser $USER admin
schroot -l
schroot -c trusty-amd64
schroot -c trusty-amd64 -- cmd ...
#export $(dpkg-architecture -aarm64); export CROSS_COMPILE=aarch64-linux-gnu-

#fakeroot debian/rules clean binary-generic

附录 - The best solution to fix broken ubuntu package

sudo apt update --fix-missing
hua@t440p:~$ sudo dpkg --configure -a
dpkg: dependency problems prevent configuration of bpfcc-tools:bpfcc-tools depends on python-bpfcc (>= 0.5.0-5ubuntu1); however:Package python-bpfcc is not installed.
dpkg: error processing package bpfcc-tools (--configure):dependency problems - leaving unconfigured
Errors were encountered while processing:bpfcc-tools#Remove python-bpfcc and bpfcc-tools from the file /var/lib/dpkg/status
sudo vim /var/lib/dpkg/status#then run
sudo fuser -vki /var/lib/dpkg/lock
sudo dpkg --configure -a

20210713 Update

$ cmadison neutronneutron | 2:8.4.0-0ubuntu7.5~cloud0                         | mitaka            | trusty-updates  | sourceneutron | 2:8.4.0-0ubuntu7.5~cloud0                         | mitaka-proposed   | trusty-proposed | sourceneutron | 2:12.1.1-0ubuntu7~cloud0                          | queens            | xenial-updates  | sourceneutron | 2:12.1.1-0ubuntu8~cloud0                          | queens-proposed   | xenial-proposed | sourceneutron | 2:14.4.2-0ubuntu1~cloud2                          | stein             | bionic-updates  | sourceneutron | 2:14.4.2-0ubuntu1~cloud2                          | stein-proposed    | bionic-proposed | sourceneutron | 2:15.3.4-0ubuntu1~cloud0                          | train             | bionic-updates  | sourceneutron | 2:15.3.4-0ubuntu1~cloud0                          | train-proposed    | bionic-proposed | sourceneutron | 2:16.3.2-0ubuntu3~cloud0                          | ussuri            | bionic-updates  | sourceneutron | 2:16.3.2-0ubuntu3~cloud0                          | ussuri-proposed   | bionic-proposed | sourceneutron | 2:17.1.1-0ubuntu1~cloud0                          | victoria          | focal-updates   | sourceneutron | 2:17.1.2-0ubuntu1~cloud0                          | victoria-proposed | focal-proposed  | sourceneutron | 2:18.0.0-0ubuntu2.1~cloud0                        | wallaby           | focal-updates   | sourceneutron | 2:18.0.0-0ubuntu2.1~cloud0                        | wallaby-proposed  | focal-proposed  | sourceneutron | 2:18.0.0+git2021061405.f042d690be-0ubuntu1~cloud0 | xena              | focal-updates   | sourceneutron | 2:18.0.0+git2021061405.f042d690be-0ubuntu3~cloud0 | xena-proposed     | focal-proposed  | source$ rmadison neutronneutron | 1:2014.1-0ubuntu1                             | trusty          | sourceneutron | 1:2014.1.3-0ubuntu1.1                         | trusty-security | sourceneutron | 1:2014.1.5-0ubuntu8                           | trusty-updates  | sourceneutron | 2:8.0.0-0ubuntu1                              | xenial          | sourceneutron | 2:8.4.0-0ubuntu7.4                            | xenial-security | sourceneutron | 2:8.4.0-0ubuntu7.5                            | xenial-updates  | sourceneutron | 2:12.0.1-0ubuntu1                             | bionic          | sourceneutron | 2:12.1.1-0ubuntu8                             | bionic-updates  | sourceneutron | 2:16.0.0~b3~git2020041516.5f42488a9a-0ubuntu2 | focal           | sourceneutron | 2:16.3.2-0ubuntu3                             | focal-updates   | sourceneutron | 2:17.0.0-0ubuntu1                             | groovy          | sourceneutron | 2:17.1.1-0ubuntu1                             | groovy-updates  | sourceneutron | 2:17.1.2-0ubuntu1                             | groovy-proposed | sourceneutron | 2:18.0.0-0ubuntu2                             | hirsute         | sourceneutron | 2:18.0.0-0ubuntu2.1                           | hirsute-updates | source

SRU进度查询

First the fix is uploaded to Queue - https://launchpad.net/ubuntu/focal/+queue?queue_state=1&queue_text=
then it is accepted into proposed, see UCA Package Tracking - https://openstack-ci-reports.ubuntu.com/reports/cloud-archive/ussuri_versions.html
then from proposed to updates slot, see Pending SRU - https://people.canonical.com/~ubuntu-archive/pending-sru

Add Key

说重置时是因为wall

#sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv ABF5BD827BD9BF62
sudo gpg --keyserver keyserver.ubuntu.com --recv-key ABF5BD827BD9BF62
sudo gpg -a --export ABF5BD827BD9BF62 | sudo apt-key add -

Reference

1, https://help.launchpad.net/Packaging/UploadErrors  
2, https://wiki.canonical.com/STS/Engineering/Hotfix
3, http://packaging.ubuntu.com/html/fixing-a-bug.html#work-on-a-fix
4, http://packaging.ubuntu.com/html/traditional-packaging.html#creating-a-debdiff
5, http://blog.packagecloud.io/debian/debuild/packaging/2015/06/08/buildling-deb-packages-with-debuild/

6, https://wiki.ubuntu.com/OpenStack/StableReleaseUpdates
7, https://wiki.ubuntu.com/OpenStack/CorePackages
8, https://wiki.ubuntu.com/ServerTeam/OpenStack/SRUCadence

9, https://wiki.ubuntu.com/SimpleSbuild#

  相关解决方案