2016-11-27 3 views
1

Ситуация следующая:склонный: automatcally обновление пакета на зависимого от при установке новой версии пакета от

У нас есть пакет B и A (зависит B). В репозитории мы имеем следующее изображение:

 
A 
    version table 
    0.0.1 (depends B=0.1.1) 
    0.0.2 (depends B=0.1.2) 
    0.0.3 (depends B=0.1.3) 
B 
    version table 
    0.1.1 
    0.1.2 
    0.1.3 
    0.1.4 

На сервере мы установили A = 0.0.1. В следующий раз, когда мы хотим обновить пакет A на сервере, мы не хотим обновлять пакет B вручную (просто запустите apt-get install A = 0.0.2). При текущей конфигурации это не кажется возможным.

Мы попытались следующую конфигурацию: вместо создания следующей версии B, мы начали создавать новые пакеты для каждой версии, как B-1, B-2

 
A 
    version table 
    0.0.1 (depends B-1) 
    0.0.2 (depends B-2) 
    0.0.3 (depends B-3) 
B-1 
B-2 (provides B-1) 
B-3 (provides B-2) 

Эта конфигурация не работает.

Есть ли какая-либо конфигурация, которая будет работать на нас?

Благодарности

ответ

1

Необходимые пакеты полей

  • ./aa_0.0.1/debian/control

    • Пакет: аа
    • Зависит: бб-1
  • ./aa_0.0.2/debian/control

    • Пакет: аа
    • Зависит: бб-2
  • ./bb_0.1.1/debian/control

    • Пакет : bb-1
  • ./bb_0.1.2/debian/control

    • Пакет: бб-2
    • Конфликты: бб-1

Скрипт для создания и тестирования вам пакеты с помощью локального хранилища

#!/bin/bash 

# Rebuild packages 
d=`pwd` 
repo_name=mydebs 
mydebs=${d}/${repo_name} 
list=/etc/apt/sources.list.d/${repo_name}.list 

rm -rf {aa,bb}*.{build,deb,changes,dsc,tar.gz} $mydebs 
for i in ${d}/{aa_0.0.1,aa_0.0.2,bb_0.1.1,bb_0.1.2} 
do 
    cd $i 
    debuild -us -uc 
    rm -rf debian/{aa,bb-*,aa.*,bb.*} debian/files 
done 
cd $d 

# Rebuild the repository 
type dpkg-scanpackages >/dev/null 2>&1 || sudo apt-get install dpkg-dev 

mkdir -p $mydebs 
cp *.deb ${mydebs}/ 
cd $mydebs 
dpkg-scanpackages --multiversion . /dev/null | gzip -9c > Packages.gz 

echo "deb file:${mydebs} ./" | sudo tee $list 
sudo apt-get update 

# Return 
cd $d 

Тестирование

~debian_packaging$ sudo apt-get install aa=0.0.1-1 
The following extra packages will be installed: 
    bb-1 
The following NEW packages will be installed: 
    aa bb-1 
0 upgraded, 2 newly installed and 0 to remove. 
Setting up bb-1 (0.1.1-1) ... 
Setting up aa (0.0.1-1) ... 
​ 
~debian_packaging$ sudo apt-get install aa=0.0.2-1 
The following extra packages will be installed: 
    bb-2 
The following packages will be REMOVED: 
    bb-1 
The following NEW packages will be installed: 
    bb-2 
The following packages will be upgraded: 
    aa 
1 upgraded, 1 newly installed and 1 to remove. 
Removing bb-1 (0.1.1-1) ... 
Setting up bb-2 (0.1.2-1) ... 
Setting up aa (0.0.2-1) ...