fix #4653: (In)Release file: improve handling of special suites
APT doesn't mind a repository with either "/" or "./" as suite/distribution, such as deb https://example.com/debian ./ in that case, the 'dists' part of the URL and the trailing slash (which would be encoded as '_') is dropped in the file name in '/var/lib/apt/lists/'. Other suite values with a trailing or leading '/' are rejected with an error by APT: E: Malformed entry 1 in sources file /etc/apt/sources.list.d/test.list (absolute Suite Component) E: The list of sources could not be read. so this should be the only special case requiring handling. Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
parent
27cd025053
commit
c8433e3219
@ -373,12 +373,18 @@ fn release_filename(uri: &str, suite: &str, detached: bool) -> PathBuf {
|
||||
let encoded_uri = uri_to_filename(uri);
|
||||
let filename = if detached { "Release" } else { "InRelease" };
|
||||
|
||||
path.push(format!(
|
||||
"{}_dists_{}_{}",
|
||||
encoded_uri,
|
||||
suite.replace('/', "_"), // e.g. for buster/updates
|
||||
filename,
|
||||
));
|
||||
if suite == "/" {
|
||||
path.push(format!("{encoded_uri}_{filename}"));
|
||||
} else if suite == "./" {
|
||||
path.push(format!("{encoded_uri}_._{filename}"));
|
||||
} else {
|
||||
path.push(format!(
|
||||
"{}_dists_{}_{}",
|
||||
encoded_uri,
|
||||
suite.replace('/', "_"), // e.g. for buster/updates
|
||||
filename,
|
||||
));
|
||||
}
|
||||
|
||||
path
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user