таким образом, я размещаю частный способный репозиторий.
иерархия похожа на это:
├── stable
│ ├── main
│ │ └── binary-all
│ │ ├── Packages
│ │ └── mypackage_2.3.1_all.deb
│ ├── Release
│ └── Release.gpg
└── unstable
├── main
│ └── binary-all
│ ├── Packages
│ └── mypackage_2.3.2_all.deb
├── rc
│ └── binary-all
│ ├── Packages
│ └── mypackage_2.3.2_all.deb
├── Release
└── Release.gpg
мой исходный файл похож на это:
deb [arch=all] https://user:pass@my.apt-server.com/ stable main
deb [arch=all] https://user:pass@my.apt-server.com/ unstable main rc
apt-cache policy mypackage
mypackage:
Installed: (none)
Candidate: 2.3.2
Version table:
2.3.2 500
500 https://my.apt-server.com unstable/main all Packages
500 https://my.apt-server.com unstable/rc all Packages
2.3.1 500
500 https://my.apt-server.com stable/main all Packages
стабильный Release
содержание файла (без хешей):
Date: Wed, 12 Oct 2016 09:29:19 UTC
MD5Sum:
0 Release
707 main/binary-all/Packages
SHA1:
0 Release
707 main/binary-all/Packages
SHA256:
0 Release
707 main/binary-all/Packages
SHA512:
0 Release
707 main/binary-all/Packages
нестабильный Release
содержание файла (без хешей):
Date: Wed, 12 Oct 2016 09:29:27 UTC
MD5Sum:
0 Release
709 main/binary-all/Packages
705 rc/binary-all/Packages
SHA1:
0 Release
709 main/binary-all/Packages
705 rc/binary-all/Packages
SHA256:
0 Release
709 main/binary-all/Packages
705 rc/binary-all/Packages
SHA512:
0 Release
709 main/binary-all/Packages
705 rc/binary-all/Packages
проблема, когда я пытаюсь установить от stable
путем выполнения команды:
sudo apt-get install -t stable mypackage
это все еще устанавливает последний пакет от нестабильного/основного mypackage_2.3.2_all.deb
а не пакет от стабильного/основного mypackage_2.3.1_all.deb
я также пытался прикрепить (из этого ответа)
созданный файл в/etc/apt/preferences.d с:
Package: *
Pin: release n=unstable
Pin-Priority: 50
но все еще старшая версия от нестабильного установлена.
Что я делаю неправильно?
Ваши Release
файлы должны содержать заголовок Codename
, чтобы разрешить закрепление по имени выпуска. Из man apt_preferences
:
The Release file is normally found in the directory .../dists/dist-name: for
example, .../dists/stable/Release, or .../dists/wheezy/Release. It consists of a
single multi-line record which applies to all of the packages in the directory
tree below its parent. Unlike the Packages file, nearly all of the lines in a
Release file are relevant for setting APT priorities:
[...]
the Codename: line
names the codename to which all the packages in the directory tree belong.
For example, the line "Codename: jessie" specifies that all of the packages
in the directory tree below the parent of the Release file belong to a
version named jessie. Specifying this value in the APT preferences file would
require the line:
Pin: release n=jessie
См. Для справки файл Release
официального репозитория Xenial .