GrammaTech / gtirb

Intermediate Representation for Binary analysis and transformation
https://grammatech.github.io/gtirb/
Other
305 stars 36 forks source link

Ubuntu packages aren't versioned properly #63

Open rjzak opened 2 years ago

rjzak commented 2 years ago

Using the depository at https://download.grammatech.com/gtirb/files/apt-repo, the packages updates don't trigger the removal of the old packages, causing conflicts where different versions of ddisasm, gtirb, and GrammaTech's libcapstone-dev-4.0.2-gt? have the same file paths. To be able to install the newer packages, I had to first uninstall the old ones, then select the new ones.

OS: Ubuntu 20.04

bfairservice-gt commented 2 years ago

@rjzak Was this with the stable or unstable component of the repository? Also, apologies, but could you describe exactly what you tried to do? You tried to apt-get upgrade ddisasm?

rjzak commented 2 years ago

stable, and I tried sudo apt-get upgrade

bfairservice-gt commented 2 years ago

stable, and I tried sudo apt-get upgrade

I'm sorry to say that I don't think we'll be able to fix this. The tool we use to manage our APT repo is called reprepro, and that tool doesn't allow you to store multiple different versions of a package in the repository, which I think is necessary to get apt-get upgrade working.

rjzak commented 2 years ago

I think the issue is that something libgtirb is a metapackage for libgtirb-1.2.3. But if the old version is installed, it's not removed. So gtirb-1.2.3 has the same file paths as gtirb-1.2.2, so dpkg gets upset. The way to fix would be to have libgtirb point to the new package, but have the libgtirb-1.2.3 conflict with the old versions, so dpkg knows to uninstall it first. Alternatively, install gtirb in a versioned path, like /opt/gtirb/1.2.3/, /opt/gtirb/1.2.2, and use symlinks of the alternatives program, to set up system usage of the libraries. But the current option is annoying :)

bfairservice-gt commented 2 years ago

Ah, I see. Okay, that makes sense, thank you for explaining. This is something we could do eventually.