Eu mantenho uma coleção crescente de meus próprios programas (quase todos os shell e scripts Python) em ~ / bin . (Alguns são, na verdade, links simbólicos para scripts localizados em outro lugar).
Da mesma forma, uso o ~ / site para programas instalados no meu $ HOME (geralmente através de "./configure --prefix = $ HOME / site; make; make install"); isto é, eles estão disponíveis apenas para um único usuário. Esses aplicativos usam os diretórios bin, lib, etc. tradicionais (~ / site / bin, ~ / site / lib, etc.).
Programas de todo o sistema precisam ser instalados em / usr / local /. Portanto, se você tiver um único arquivo executável, poderá soltá-lo em / usr / local / bin. Se um arquivo tiver seu próprio bin, lib, etc., eles serão colocados em / usr / local / bin, / usr / local / lib, etc.
A maneira tradicional é "misturar" aplicativos juntos, com todos os comandos em bin, todas as bibliotecas em lib e assim por diante. Isso é doloroso para desinstalar, mas não requer configurações adicionais para $ PATH, manpages, recursos compartilhados, etc. Se você quiser um aplicativo completamente separado, você pode colocá-lo em / opt como / opt / appname. Você precisará configurar / opt / appname / bin para estar no $ PATH (ou especificar o caminho completo para executá-lo).
Com todas essas opções que não usam um comando configure, o programa precisa saber como encontrar suas bibliotecas (geralmente por meio de uma configuração de RPATH do vinculador, mas há outras maneiras). Eu normalmente não tentaria modificar um programa se ele não pudesse fazer isso; e certamente não recomendaria isso para a maioria dos usuários.