Casper’s jamf binary will be moving its location

spotmac
New Contributor III

why JAMF Software moving the location of the jamf binary to /usr/local/jamf instead of /usr/local/sbin/jamf?

The original idea behind '/usr/local' was to have a separate local '/usr' directory on every machine besides '/usr'.

18 REPLIES 18

cvgs
Contributor II

that was also my first thought...

mthielemann
New Contributor

Good point. I think this was a typo. I heard the jamf binary will be located in /usr/local/bin/jamf. Just wonder why they put in in bin instead of sbin ...

BTW: Here is the original post about the new location for the jamf binary: https://jamfnation.jamfsoftware.com/discussion.html?id=15299#responseChild94212

rtrouton
Release Candidate Programs Tester

I can think of a couple of reasons why /usr/local/jamf, as opposed to /usr/local/bin/jamf or /usr/local/sbin/jamf, is a good idea.

  1. Homebrew coexistence - Homebrew is going to be installed on a lot of Macs which Casper will be installed on. Homebrew installs into /usr/local and many Homebrew packages install stuff into /usr/local/bin or /usr/local/sbin. Conversely uninstalling Homebrew may also entail removing things from /usr/local/bin or /usr/local/sbin. By not putting the jamf binary into /usr/local/bin or /usr/local/sbin, potential conflicts with Homebrew (and folks who use Homebrew) can be avoided on Mac OS X 10.7.x and later.

  2. El Capitan and /usr/local - As the only /usr directory not locked down by System Integrity Protection on OS X 10.11.x, /usr/local is likely going to get crowded. By having /usr/local/jamf at the top level of /usr/local, the jamf binary is likely to avoid future potential conflicts like that mentioned above for Homebrew.

mthielemann
New Contributor

I strongly disagree with @rtrouton. Why should JAMF care about Homebrew? The Homebrew stuff is correctly installed into /usr/local/bin, /usr/local/sbin etc. If you want to uninstall those stuff YOU and not JAMF have to make sure that you remove the correct items from those folders. BTW: It is most likely that there is other non-Homebrew stuff in these folders.

According to Filesystem Hierarchy Standard (FHS), the binary should reside in /usr/local/sbin (/usr/local/bin would be ok as well). It is really uncommon to put stuff directly into /usr/local. I checked a few of our Red Hat Servers and Fedora machines and none of them has executable files directly in /usr/local.

Let's stick to standards please!

udopigorsch
New Contributor
  1. @rtrouton /usr/local/bin isn't a dedicated space for Homebrew, it's a standard directory for various binaries. Besides that I doubt that Homebrew will be installed on more than just a tiny amount of devices managed by Casper.
  2. There are companies that already changed their old habits to be El Capitan-ready and JAMF should go the same way. There is no reason for Apple to lock down /usr/local/bin or /usr/local/sbin, it would create the crowded space no one wants.

As @mthielemann said Stick to standards!

franton
Valued Contributor III

Except those are Unix standards, not Mac OS X. Just because our platform of choice has unix underpinnings doesn't make it identical to unix.

mthielemann
New Contributor

As I remember OS X is certified as a UNIX system so it should meet those standards.

spotmac
New Contributor III

I take the same view as @mthielemann and @udopigorsch .
Now i am interested+ to hear the arguments+ from the JAMF Team @Jamfsoftware

franton
Valued Contributor III

Except the Unix standard doesn't specify that set of folders.
Unix 03 Standards

mthielemann
New Contributor

I hope JAMF engineering makes the right decision ...

mthielemann
New Contributor

@franton but if you just type "man hier" in the terminal you may see that the BSD part of OS X also relies on FHS. So I think we should quit that conversation for now and wait for JAMF engineering. Then we'll see who is right ...

davidacland
Honored Contributor II

FWIW, I have seen how closely JAMF work with Apple and trust that they will put the binaries in the most appropriate location.

I would make an assumption (dangerous I know!) that the vast majority of the JAMF community will be satisfied that Casper continues to function from 10.11 onwards, regardless whether it's /usr/local/jamf, /usr/local/bin/jamf etc...

cvgs
Contributor II

How about /Library/Application Support/JAMF/bin/jamf? It's not like any of the proposed locations are included in the default $PATH (well, except /usr/local/bin).

;-)

Jokes aside, jamf being found in the default path would be a big plus, either by using standard folders or by dropping a config file into /etc/paths.d/.

john_miller
Contributor
Contributor

Hey everyone

Sorry for the confusion. I commented on the other post that I had that may have started the confusion as well.

The new full path is /usr/local/bin/jamf. Thanks for keeping the conversation going.

mthielemann
New Contributor

Thanks a lot for doing it the right way.

148e5d22e3c84d9795f2113ebe97cfe6

rtrouton
Release Candidate Programs Tester

CasperCheck has now been updated with the correct path information:

https://github.com/rtrouton/CasperCheck

jaharmi
Contributor

As one of the pedants who asked to get the “hier” man page updated (when its last update was before 2007), I would have preferred /usr/local/sbin over /usr/local/bin.

But, as Apple says in that man page, it’s “a historical sketch of the filesystem hierarchy.” Decision made, it works, move along.

calumhunter
Valued Contributor

For those wondering

/bin
    This directory contains executable programs which are needed
    in single user mode and to bring the system up or repair it.

/sbin
    Like /bin, this directory holds commands needed to boot the 
    system, but which are usually not executed by normal users.

/usr/bin
    This is the primary directory for executable programs. Most
    programs executed by normal users which are not needed for 
    booting or for repairing the system and which are not
    installed locally should be placed in this directory.

/usr/local
    This is where programs which are local to the site typically
    go.

/usr/local/bin
    Binaries for programs local to the site.

/usr/local/sbin
    Locally installed programs for system administration.