# Require some external program

**URL:** <https://discourse.julialang.org/t/require-some-external-program/3048>\
**Category:** General Usage\
**Tags:** package\
**Created:** [April 4, 2017, 1:28pm UTC](https://discourse.julialang.org/t/require-some-external-program/3048 "2017-04-04T13:28:05Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [April 4, 2017, 1:28pm UTC](https://discourse.julialang.org/t/require-some-external-program/3048/1 "2017-04-04T13:28:05Z")

</div>

How do you specify a dependency on some external program in your package?

I need to read meta data from a variation of video files and I thought I’d use [`ExifTool`](http://www.sno.phy.queensu.ca/~phil/exiftool/) (please let me know if there is a julian alternative). Is there a way to tell julia to install that program when a user `Pkg.clone`s my package? Assuming said external program exists on all platforms, will this work regardless of what platform julia is sitting on?

Thanks!

---

<div class="post-metadata">

**Author:** ![Tero\_Frondelius](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tero_frondelius/32/7629_2.png) [@Tero\_Frondelius](https://discourse.julialang.org/u/Tero_Frondelius)\
**Post date:** [April 4, 2017, 1:32pm UTC](https://discourse.julialang.org/t/require-some-external-program/3048/2 "2017-04-04T13:32:10Z")

</div>

[https://github.com/JuliaLang/BinDeps.jl](https://github.com/JuliaLang/BinDeps.jl)

---

<div class="post-metadata">

**Author:** ![mbaz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbaz/32/17295_2.png) [@mbaz](https://discourse.julialang.org/u/mbaz)\
**Post date:** [April 4, 2017, 1:34pm UTC](https://discourse.julialang.org/t/require-some-external-program/3048/3 "2017-04-04T13:34:28Z")

</div>

My plotting package Gaston requires gnuplot. What I do is to check for the presence of gnuplot when the package is loaded, and emit an error if it can’t be found. I could have used BinDeps.jl, but I didn’t want to have to deal with the different installation methods across platforms, requiring sudo, etc.

---

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [April 4, 2017, 1:46pm UTC](https://discourse.julialang.org/t/require-some-external-program/3048/4 "2017-04-04T13:46:08Z")

</div>

I see. Not sure my users will figure out how to install stuff… But it might be what I’ll fall back onto. Thanks!

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [April 4, 2017, 5:50pm UTC](https://discourse.julialang.org/t/require-some-external-program/3048/5 "2017-04-04T17:50:59Z")

</div>

> [@yakir12](#):
>
> Not sure my users will figure out how to install stuff

BinDeps will run a set of installation instructions, so users don’t have to know how to do it.

---

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [April 4, 2017, 6:24pm UTC](https://discourse.julialang.org/t/require-some-external-program/3048/6 "2017-04-04T18:24:19Z")

</div>

Yea, that’s impressive!
