How to set an environment variable during package installation

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP












2














I am working on a legacy cross-platform project packaged to both DEB and RPM formats.



Once the Linux package is installed, an environment variable holding the path to the installation folder is required for scripts (e.g. CMake and Bash scripts) and programs execution. This variable has a known name and can point to Program FilesMy Package on Windows and to /opt/my_package on Unix systems.



Currently, Linux users have to manually register the variable to use the software. A convenient solution would be to register the environment variable as part of the package installation.



I am aware one can set system-wide environment variables in configuration files such as /etc/profile and /etc/bashrc. I could modify such a file as part of the postinst script.



Is it a good practice to create system-wide environment variables during package installation? If so, what is the preferred way to do it?



The Linux packages are distributed to users on Ubuntu 16.04 and RHEL 7.










share|improve this question





















  • Related: unix.stackexchange.com/q/348295/117549 and unix.stackexchange.com/q/64258/117549 and unix.stackexchange.com/a/117470/117549
    – Jeff Schaller
    Dec 22 '18 at 1:16
















2














I am working on a legacy cross-platform project packaged to both DEB and RPM formats.



Once the Linux package is installed, an environment variable holding the path to the installation folder is required for scripts (e.g. CMake and Bash scripts) and programs execution. This variable has a known name and can point to Program FilesMy Package on Windows and to /opt/my_package on Unix systems.



Currently, Linux users have to manually register the variable to use the software. A convenient solution would be to register the environment variable as part of the package installation.



I am aware one can set system-wide environment variables in configuration files such as /etc/profile and /etc/bashrc. I could modify such a file as part of the postinst script.



Is it a good practice to create system-wide environment variables during package installation? If so, what is the preferred way to do it?



The Linux packages are distributed to users on Ubuntu 16.04 and RHEL 7.










share|improve this question





















  • Related: unix.stackexchange.com/q/348295/117549 and unix.stackexchange.com/q/64258/117549 and unix.stackexchange.com/a/117470/117549
    – Jeff Schaller
    Dec 22 '18 at 1:16














2












2








2


0





I am working on a legacy cross-platform project packaged to both DEB and RPM formats.



Once the Linux package is installed, an environment variable holding the path to the installation folder is required for scripts (e.g. CMake and Bash scripts) and programs execution. This variable has a known name and can point to Program FilesMy Package on Windows and to /opt/my_package on Unix systems.



Currently, Linux users have to manually register the variable to use the software. A convenient solution would be to register the environment variable as part of the package installation.



I am aware one can set system-wide environment variables in configuration files such as /etc/profile and /etc/bashrc. I could modify such a file as part of the postinst script.



Is it a good practice to create system-wide environment variables during package installation? If so, what is the preferred way to do it?



The Linux packages are distributed to users on Ubuntu 16.04 and RHEL 7.










share|improve this question













I am working on a legacy cross-platform project packaged to both DEB and RPM formats.



Once the Linux package is installed, an environment variable holding the path to the installation folder is required for scripts (e.g. CMake and Bash scripts) and programs execution. This variable has a known name and can point to Program FilesMy Package on Windows and to /opt/my_package on Unix systems.



Currently, Linux users have to manually register the variable to use the software. A convenient solution would be to register the environment variable as part of the package installation.



I am aware one can set system-wide environment variables in configuration files such as /etc/profile and /etc/bashrc. I could modify such a file as part of the postinst script.



Is it a good practice to create system-wide environment variables during package installation? If so, what is the preferred way to do it?



The Linux packages are distributed to users on Ubuntu 16.04 and RHEL 7.







ubuntu rhel package-management rpm deb






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Dec 22 '18 at 0:51









Dask

132




132











  • Related: unix.stackexchange.com/q/348295/117549 and unix.stackexchange.com/q/64258/117549 and unix.stackexchange.com/a/117470/117549
    – Jeff Schaller
    Dec 22 '18 at 1:16

















  • Related: unix.stackexchange.com/q/348295/117549 and unix.stackexchange.com/q/64258/117549 and unix.stackexchange.com/a/117470/117549
    – Jeff Schaller
    Dec 22 '18 at 1:16
















Related: unix.stackexchange.com/q/348295/117549 and unix.stackexchange.com/q/64258/117549 and unix.stackexchange.com/a/117470/117549
– Jeff Schaller
Dec 22 '18 at 1:16





Related: unix.stackexchange.com/q/348295/117549 and unix.stackexchange.com/q/64258/117549 and unix.stackexchange.com/a/117470/117549
– Jeff Schaller
Dec 22 '18 at 1:16











1 Answer
1






active

oldest

votes


















3














I believe both Ubuntu and RHEL use an /etc/profile.d/ structure, and I would recommend that you package a file in that directory, perhaps named for your application; e.g. /etc/profile.d/legacyapp.sh (and /etc/profile.d/legacyapp.csh if you need to support the CSH family).






share|improve this answer




















    Your Answer








    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "106"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f490426%2fhow-to-set-an-environment-variable-during-package-installation%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    I believe both Ubuntu and RHEL use an /etc/profile.d/ structure, and I would recommend that you package a file in that directory, perhaps named for your application; e.g. /etc/profile.d/legacyapp.sh (and /etc/profile.d/legacyapp.csh if you need to support the CSH family).






    share|improve this answer

























      3














      I believe both Ubuntu and RHEL use an /etc/profile.d/ structure, and I would recommend that you package a file in that directory, perhaps named for your application; e.g. /etc/profile.d/legacyapp.sh (and /etc/profile.d/legacyapp.csh if you need to support the CSH family).






      share|improve this answer























        3












        3








        3






        I believe both Ubuntu and RHEL use an /etc/profile.d/ structure, and I would recommend that you package a file in that directory, perhaps named for your application; e.g. /etc/profile.d/legacyapp.sh (and /etc/profile.d/legacyapp.csh if you need to support the CSH family).






        share|improve this answer












        I believe both Ubuntu and RHEL use an /etc/profile.d/ structure, and I would recommend that you package a file in that directory, perhaps named for your application; e.g. /etc/profile.d/legacyapp.sh (and /etc/profile.d/legacyapp.csh if you need to support the CSH family).







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Dec 22 '18 at 1:15









        Jeff Schaller

        38.9k1053125




        38.9k1053125



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f490426%2fhow-to-set-an-environment-variable-during-package-installation%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown






            Popular posts from this blog

            How to check contact read email or not when send email to Individual?

            Displaying single band from multi-band raster using QGIS

            How many registers does an x86_64 CPU actually have?