Встановлення конкретних версій, коли репо має новіші версії?


13

Давайте мати метапакет, який залежить від наступних пакетів

Depends: A (=2),
 B (=2),
 C (=2)

Зауважте '=' - я хочу встановити ці конкретні версії, не найновіші.

Додатково:

B залежить від A (> = 1)

C залежить від B (> = 1) і A (> = 1)

Якщо останніх версій A, B, C у сховищі 2, це працює.

Оскільки я помістив версію 3 A і версію 3 B в repo sudo apt-get install, мій-мета-пакет відмовляється закінчити наступною інформацією:

The following packages have unmet dependencies:
  my-meta-package: Depends: B (= 2) but 3 is to be installed
                   Depends: A (= 2) but 3 is to be installed

Якщо я вручну встановлюю версії 2 A і B, то метапакет встановлюється правильно, що настійно говорить про відсутність прихованої залежності від A3 або B3. Це не є проблемою для вирішення проблеми, оскільки метапакет встановлюється автоматично на багатьох машинах.

ПИТАННЯ: Що робити, щоб зробити sudo apt-get install my-meta-package install версії 2,2,2?

Крім того, чи є спосіб я отримати розширену інформацію про те, що насправді створює потребу у версії 3 A та версії 3 B?


О, я не прочитав цілого питання, перш ніж відповісти. Чи можете ви просто перепакувати метапакет?
int_ua

2
@int_ua Я не розумію, що б перепакувати метапакет.
tymtam

@belacqua - я з вами, але нам потрібна ґрунтовна відповідь, яка висвітлює те, що відбувається, коли є реверсії та розбиті залежності тощо тощо
RobotHumans

Чи містить файл керування вашим метапакетом явну версію, не залежну від пакетів, наприклад (a=2), (b=2)?
Анвар

Відповіді:


11

Вам потрібно вибрати конкретні версії для встановлення та встановити їх усі одночасно з встановленням мета-пакету.

sudo apt-get install meta-package package1=2 package2=2 package3=2

Як йдеться у відповіді int_ua , ви можете виявити зворотні залежності за допомогою цього:

apt-cache rdepends package

Якщо ви хочете дізнатися більше інформації про будь-який із цих пакетів ( доступні версії, залежності та багато іншого ), скористайтеся цим:

apt-cache show package

Після того як ви закінчите їх установку і хочете тримати їх у цих версіях, роблячи оновлення системи, вам потрібно буде використовувати влучне закріплення, як запропонував belacqua .

APT закріплення

Функція закріплення APT дозволяє адміністраторам змусити APT вибирати конкретні версії пакетів, які можуть бути доступні в різних версіях з різних сховищ. Це дозволяє адміністраторам гарантувати, що пакети не будуть оновлені до версій, які можуть суперечити іншим пакетам у системі, або які не були достатньо перевірені на небажані зміни. Для цього слід змінити шпильки у файлі налаштувань APT (/ etc / apt / preferences).


Я вважаю, що це правильна відповідь, поставивши =, а потім назву пакета з версією
LnxSlck

1
Я колега Тимека, і це фактично вирішує проблему. Шкода, що нам доведеться переробити метапакет, щоб це сталося. Деякий креативний Python в порядку. Дякую купи за відповідь.
Ігор Зевака

1
Цікаво, чи з’явилося якесь краще рішення з часу, що минув?
ygrek

1

Спробуйте спершу встановити залежності

sudo apt-get install package=2 де 2 - версія

Ви можете дізнатися, які пакети залежать від пакету

apt-cache rdepends package


1
rdepends не містить детальну інформацію про версії, правда?
tymtam

2
Встановлення залежностей спочатку буде протистояти наявності метапакету. Це рішення, але не те, що я шукаю.
tymtam

1
Зауважте, що для цього для роботи репозиторіїв повинна бути доступна версія вказаної вами версії, якщо вона не відбудеться, вона помилиться.
Thomas Ward
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.