# Pack\_install downgrade?

**URL:** <https://swi-prolog.discourse.group/t/pack-install-downgrade/1396>\
**Category:** Installing\
**Created:** [October 16, 2019, 5:39pm UTC](https://swi-prolog.discourse.group/t/pack-install-downgrade/1396 "2019-10-16T17:39:26Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![peter.ludemann](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/peter.ludemann/32/48_2.png) [@peter.ludemann](https://swi-prolog.discourse.group/u/peter.ludemann)\
**Post date:** [October 16, 2019, 5:39pm UTC](https://swi-prolog.discourse.group/t/pack-install-downgrade/1396/1 "2019-10-16T17:39:26Z")

</div>

Is there a way to downgrade to an older version of a pack, or of installing a particular release version? (I couldn’t see any options for this, but I’m very good at missing things in the documentation.)

---

<div class="post-metadata">

**Author:** ![peter.ludemann](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/peter.ludemann/32/48_2.png) [@peter.ludemann](https://swi-prolog.discourse.group/u/peter.ludemann)\
**Post date:** [October 16, 2019, 5:54pm UTC](https://swi-prolog.discourse.group/t/pack-install-downgrade/1396/2 "2019-10-16T17:54:28Z")

</div>

I tried specifying a URL for version 0.0.2 of [rdet](https://www.swi-prolog.org/pack/list?p=rdet), and it seemed to ignore the URL and instead fetched the latest version:

```prolog
1 ?- pack_install(rdet, [url('https://github.com/rla/rdet.git')]). % 
pack_install(rdet, [url('https://github.com/rla/rdet.git')]).
% Cloning into '/home/peter/.local/share/swi-prolog/pack/rdet'...
Verify package status (anonymously)
	at "https://www.swi-prolog.org/pack/query" Y/n? y
y
% Contacting server at https://www.swi-prolog.org/pack/query ... ok
% "rdet.git" was downloaded 1 times
Package: rdet
Title: Runtime determinacy checker
Installed version: 1.0.0
Author: Raivo Laanemets <http://rlaanemets.com/>
Home page: https://github.com/rla/rdet
Run post installation scripts for pack "rdet" Y/n? n
n
false.

2 ?- pack_install(rdet, [url('https://github.com/rla/rdet.git'), git(true)]).
pack_install(rdet, [url('https://github.com/rla/rdet.git'), git(true)]).
false.

```

---

<div class="post-metadata">

**Author:** ![peter.ludemann](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/peter.ludemann/32/48_2.png) [@peter.ludemann](https://swi-prolog.discourse.group/u/peter.ludemann)\
**Post date:** [October 16, 2019, 6:14pm UTC](https://swi-prolog.discourse.group/t/pack-install-downgrade/1396/3 "2019-10-16T18:14:03Z")

</div>

After some fiddling around, I figured out this work-around, but surely there’s an easier way:

- `git clone https://github.com/rla/rdet.git`
- `git checkout -b v0.0.2 3f3a15b6cbdb1e0064e2002f07dbfe5979eb6f74`
- `make package`
- `pack_install(rdet, [url('file:///path/to/src/rdet-0.0.2.tgz')]).`

BTW, sometimes when `pack_install` fails, it still ends up installing something. So, it seems safest to always do a `pack_remove` whenever there’s a problem.

---

<div class="post-metadata">

**Author:** ![jan](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/jan/32/4_2.png) [@jan](https://swi-prolog.discourse.group/u/jan)\
**Post date:** [October 19, 2019, 2:51am UTC](https://swi-prolog.discourse.group/t/pack-install-downgrade/1396/4 "2019-10-19T02:51:41Z")

</div>

I think it should be enough to remove the pack and do `pack_install(Source)`, where Source is either the downloaded tar/zip file or a url to it.

---

<div class="post-metadata">

**Author:** ![peter.ludemann](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/peter.ludemann/32/48_2.png) [@peter.ludemann](https://swi-prolog.discourse.group/u/peter.ludemann)\
**Post date:** [October 19, 2019, 7:08pm UTC](https://swi-prolog.discourse.group/t/pack-install-downgrade/1396/5 "2019-10-19T19:08:57Z")

</div>

> [@jan](#):
>
> I think it should be enough to remove the pack and do `pack_install(Source)` , where Source is either the downloaded tar/zip file or a url to it.

That’s essentially what I ended up doing. But it seems that some of the options to `pack_install` ought to do that but don’t (e.g., specifying the URL in the `pack_install` command). Are these known problems? There’s a hint that they are known, e.g., this item in the documentation: " GIT URL (not well supported yet)"
