Is it safe to rename .deb file named by the standards?

Is it safe to rename .deb file named by the standards?



The established structure of the .deb file name is package_version_architecture.deb.

According to this paragraph:


.deb


package_version_architecture.deb



Some packages don't follow the name structure
package_version_architecture.deb. Packages renamed by dpkg-name will
follow this structure. Generally this will have no impact on how
packages are installed by dselect/dpkg, but other installation
tools might depend on this naming structure.


package_version_architecture.deb



However, are there any real situations when renaming the .deb package file is highly unrecommended? Is it a normal practice to provide a custom .deb file name for my software?


.deb


.deb


My Program for Linux v1.0.0 (Pro).deb


my-program_1.0.0-1_amd64.deb



I'm not planning to create a repo, I'm just hosting the .deb package of my software on my website for direct download.


.deb






Please, for the love of all things holy do not use spaces or parenthesis in your file names. They make it a pain in the arse to handle them from the command line, and are a potential source of bugs in file handling.

– Austin Hemmelgarn
Sep 18 '18 at 1:21




2 Answers
2



Over the years, I’ve accumulated a large number of .deb packages with non-standard names, and I don’t remember running into any problems. “Famous” packages with non-standard names that people might come across nowadays include google-chrome-stable_current_amd64.deb and steam.deb. (In both cases, the fixed, versionless name ensures that a stable URL can be used for downloads, and a stable name for installation instructions.)


.deb


google-chrome-stable_current_amd64.deb


steam.deb



However I don’t remember running across any with spaces in their names; that shouldn’t cause issues with tools either, but it might cause confusion for your users (since they’ll need to quote the filename or escape the spaces if they’re using shell-based tools).



Another point to note is that using a non-standard name which isn’t the same as your package name (as stored in the control file) could also cause confusion, e.g. when attempting to remove the package (since the package name won’t be the same as the name used to install it).


control



As a result of all this, if you don’t want to stick to the canonical name I would recommend something like my-program.deb or my-program_amd64.deb (depending on whether you want to support multiple architectures). You can make that a symlink to the versioned filename too if you want to allow older versions to be downloaded.


my-program.deb


my-program_amd64.deb






"a stable URL can be used for downloads" - I would be surprised if Google and Valve have never heard of redirects.

– OrangeDog
Sep 18 '18 at 11:35






@OrangeDog so would I. Having a fixed download (without a redirect) still keeps things simpler (because when redirecting, the final filename used on disk varies depending on the tool used to download unfortunately).

– Stephen Kitt
Sep 18 '18 at 13:32



The file names are standardized mainly for the benefit of the archive maintenance software and the local cache.



In the old days, before the m68k architecture was added to Debian, file names used "package_version.deb", with no issues. The architecture name was added to the file name when the archive software needed to store i386 and m68k packages of the same package and version in the same directory. As the package list has always contained both long and 8.3 file names, that could be implemented without breaking clients.


m68k


i386


m68k



Dpkg does not generally care about the file names of packages at all. During installation runs, APT generates a directory with all package files for this installation run, and each file will have the number in the current run prepended to the file name (i.e. if you install package foo version 1, and package bar version 2, which foo depends on, apt will pass 0-bar_2_all.deb and 1-foo_1_amd64.deb to dpkg).


foo


bar


foo


0-bar_2_all.deb


1-foo_1_amd64.deb



APT generally assumes that names are unique for caching purposes. If you reuse a name, users that have this file in their cache already will attempt to resume the download if the new file is larger, which will leave them with an invalid file that is subsequently discarded as it fails the checksum test. This error is however shown to the user, and they have to restart the installation run.



Thanks for contributing an answer to Unix & Linux Stack Exchange!



But avoid



To learn more, see our tips on writing great answers.



Required, but never shown



Required, but never shown




By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy

Popular posts from this blog

𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

Edmonton

Crossroads (UK TV series)