# Installing packs privately

**URL:** <https://swi-prolog.discourse.group/t/installing-packs-privately/2960>\
**Category:** Help!\
**Created:** [September 23, 2020, 10:06am UTC](https://swi-prolog.discourse.group/t/installing-packs-privately/2960 "2020-09-23T10:06:24Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![meditans](https://yyz2.discourse-cdn.com/free1/user_avatar/swi-prolog.discourse.group/meditans/32/1768_2.png) [@meditans](https://swi-prolog.discourse.group/u/meditans)\
**Post date:** [September 23, 2020, 10:06am UTC](https://swi-prolog.discourse.group/t/installing-packs-privately/2960/1 "2020-09-23T10:06:24Z")

</div>

I have a question on how packs work in SWI that I can’t answer just with the docs:  
recently I created a repo for a prolog library, on github, and I called `pack_install(url)`. That library is now also available in the SWI addons page [https://www.swi-prolog.org/pack/list](https://www.swi-prolog.org/pack/list)

I’d like to structure my own helper prolog files as packs, but keep them local. How do I accomplish that? How does the indexing in the SWI addon page work?

---

<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:** [September 23, 2020, 10:25am UTC](https://swi-prolog.discourse.group/t/installing-packs-privately/2960/2 "2020-09-23T10:25:24Z")

</div>

If you look at e.g., the SWISH sources, you’ll see it attaches packs as git submodules. You then use attach\_packs/2 to use the packs from your locally installed directory. I think that is generally a better way to deal with packs than installing them for the current user or system-wide as it simplifies version management and redistribution.

The SWISH Makefile can be used to download and where needed compile the foreign components of the packs.
