Кіріспе
Компьютерлік бағдарламаның түрі
Портативтік қосымша (портативтік қосымша), кейде жеке қосымша деп те аталады, – басқа файлдарды өзгертпей немесе қосымша бағдарламалық жасақтаманы орнатуды қажет етпей жұмыс істеуге арналған бағдарлама. Осылайша, оны кез келген үйлесімді компьютерге оңай қосуға, іске қосуға және алып тастауға болады, орнату немесе жанама әсерлер болмайды. Іс жүзінде портативтік қосымша пайдаланушы жасаған деректерді және конфигурациялық параметрлерді өзі орналасқан каталогта сақтайды. Бұл бағдарламаны пайдаланушының қалауын және деректерін әр түрлі компьютерлер арасында ауыстыруды жеңілдетеді. Конфигурациялық параметрлері жоқ бағдарлама да портативтік қосымша бола алады немесе конфигурациялық файлдарын (мысалы, INI файлы) пайдаланушының профилінде сақтай алады, бірақ қазіргі таңдағы көптеген портативтік қосымшалар өз конфигурациялық файлдарын портативтік каталогта сақтайды. Файл жолдары компьютерлерді ауыстырғанда диск әріптерінің өзгеруіне байланысты әр түрлі болуы мүмкін болғандықтан, портативтік қосымшалар оларды салыстырмалы форматта сақтауы мүмкін. Кейбір қосымшаларда осы мүмкіндікті қолдау үшін опциялар бар, бірақ көптеген бағдарламалар мұндай мүмкіндіктермен жабдықталмаған. Мұндай бағдарламалар үшін қолданылатын әдеттегі тәсіл – бағдарлама іске қосылғанда қажетті параметрлер мен файлдарды хост-компьютерге көшіру және бағдарлама жабылатын кезде оларды қайтадан бағдарламаның каталогына көшіру. Windows жүйесінде қосымшаның бастапқы кодын өзгертпей, қосымшаны тасымалдауға қол жеткізудің тағы бір жолы – қосымшаны виртуализациялау: қосымша файлдық жүйеге және тіркелімге жасалатын шақыруларды ашық түрде бақылап, оларды қосымшаның білмеуімен басқа тұрақты сақтау орындарына қайта бағыттайтын орындалу қабатына қарсы «тізбектеледі» немесе «жинақталады». Бұл тәсіл қосымшаның өзін өзгертпей, оны портативті етеді. Осы тәсіл жеке қосымша компоненттеріне де қолданылады: орындалу уақыты кітапханалары, COM компоненттері немесе ActiveX, емес, тек толық қосымша үшін ғана. Нәтижесінде, компоненттер осындай тәсілмен тасымалданғанда, оларды бастапқы портативтік қосымшаларға біріктіруге болады, бір операциялық жүйеде (ОЖ) өзара қақтығыстарсыз әртүрлі конфигурациялармен/параметрлермен қайта-қайта құруға (виртуалды түрде орнатуға) болады. Тасымалданған компоненттер ОЖ қорғалған байланысты объектілерге (тіркелім мен файлдарға) әсер етпейтіндіктен, оларды орнату және басқару үшін әкімшілік құқықтары қажет емес. Microsoft өзінің Windows операциялық жүйесі үшін арнайы тіркелімнің қажеттілігін 2005 жылға дейін сезінді. Ол бұл технологияның бір бөлігін жоғарыда аталған тәсілдерді қолдана отырып, қолданбаның үйлесімділік дерекқоры арқылы Windows XP-ге енгізді. Ол осы технологияның ешқайсысын өзінің жүйелік API арқылы қолжетімді етпеді.
Unix-қа ұқсас жүйелерде тасымалдануы
Unix-ке ұқсас базаны ескере отырып жазылған бағдарламалар көбінесе ешқандай болжам жасамайды. Көптеген Windows бағдарламалары Windows 95/98/ME дәуірінде (және Windows XP/2000-де, бірақ Windows Vista немесе Windows 7-де емес) пайдаланушының әкімші екенін қабылдайды. Unix сияқты орталарда мұндай жағдай «Рұқсат берілмеді» қатесіне әкеледі, себебі пайдаланушылар көбінесе артықшылықтары жоқ күйде болады. Сондықтан бағдарламалар әдетте параметрлерді сақтау үшін HOME ортасының айнымалысын пайдаланады (мысалы, $HOME/.w3m браузері үшін). Динамикалық байланыстырғыш LD LIBRARY PATH ортасының айнымалысын ұсынады, оны бағдарламалар стандартты емес каталогтардан кітапханаларды жүктеу үшін пайдалана алады. Егер /mnt портативті бағдарламалар мен конфигурацияны қамтиды деп есептесек, команда жолы былай болуы мүмкін: HOME=/mnt/home/user LD LIBRARY PATH=/mnt/usr/lib /mnt/usr/bin/w3m www.мысал.com. GCC Linker опциясы $ORIGIN пайдаланушының өзара әрекеттесуіне (мысалы, сценарийді немесе орта айнымалысын бейімдеуге) қажеттілігі жоқ Linux қолданбасын әртүрлі каталогтарда жасауға мүмкіндік береді, ол кітапханаларды салыстырмалы жолмен іздеуге арналған. Барлық бағдарламалар оны қолдамайды – кейбіреулері $HOME-ды мүлдем елемейді және үй каталогын табу үшін /etc/passwd-те пайдаланушыны іздейді, соның салдарынан портативтіліктің бұзылуына себеп болады. Сонымен қатар, Autopackage, klik (қазір AppImage деп аталады) немесе CDE сияқты, бірақ 2000 жылдары Linux қауымдастығында шектеулі қабылдау мен қолдауға ие болған, әкімшілік құқықтарды қажет етпейтін пакет форматтары бар. 2015 жылы Linux экожүйесі үшін портативті және дистрибутивтен тәуелсіз жинақтау идеясы Линус Торвальдс DebConf 2014 конференциясында осы тақырыпты талқылағаннан және кейіннен AppImage-ді суға түсу журналы үшін қолдағаннан кейін көбірек қызығушылық тудырды. Мысалы, MuseScore және Krita 2016 жылы бағдарламалық жасақтаманы тарату үшін AppImage жинақтарын қолдана бастады. RedHat 2016 жылы Flatpak жүйесін шығарды, ол Александр Ларссонның glick жобасының мұрагері, ол klik (қазір AppImage) шабыттандырды. Сол сияқты, Canonical 2016 жылы Ubuntu және көптеген басқа Linux дистрибутивтері үшін Snap пакеттерін шығарды. Mac-ке сүйреп тастау арқылы орнатылатын көптеген Mac қолданбалары Mac қолданбалық жинақтары ретінде портативті болып табылады. Мысалға, Mozilla Firefox, Skype және Google Chrome кіреді, олар әкімшілік кіруді қажет етпейді және оларды орталық, шектеулі аймаққа орналастырудың қажеті жоқ. /Users/username/Applications (~/Applications) каталогына орнатылған қолданбалар macOS LaunchServices жүйесінде тіркеледі, дәл сол сияқты /Applications каталогына орнатылған қолданбалар да тіркеледі. Мысалы, Finder-де файлды оң жақ батырмамен түртіп, содан кейін «Open With» опциясын таңдасаңыз, /Applications және ~/Applications каталогтарынан қол жетімді қолданбалар көрсетіледі. Дамытаушылар Mac өнімдерінің орнатушыларын құра алады, олар пайдаланушыға үй каталогына орнатуды орындауға мүмкіндік береді, бұл орнатушы пайдаланушы интерфейсінде «Мен үшін орнату» деп белгіленеді. Мұндай орнату пайдаланушы ретінде орындалады.
HOME=/mnt/home/user LD LIBRARY PATH=/mnt/usr/lib /mnt/usr/bin/w3m www. example. com
A Linux application without need for a user interaction (e. g. adapting a script or environment variable) on varying directory paths can be achieved with the GCC Linker option $ORIGIN which allows a relative library search path. Not all programs honor this—some completely ignore $HOME and instead do a user look up in /etc/passwd to find the home directory, therefore thwarting portability. There are also cross distro package formats that do not require admin rights to run, like Autopackage, klik (now called AppImage), or CDE, but which gained only limited acceptance and support in the Linux community in the 2000s. Around 2015 the idea of portable and distro independent packing for the Linux ecosystem got more traction when Linus Torvalds discussed this topic on the DebConf 2014 and endorsed later AppImage for his dive log application Subsurface. For instance, MuseScore and Krita followed in 2016 and started to use AppImage builds for software deployment. RedHat released in 2016 the Flatpak system, which is a successor of Alexander Larsson's glick project which was inspired by klik (now AppImage). Similarly, Canonical released in 2016 Snap packages for Ubuntu and many other Linux distros. Many Mac applications that can be installed by drag and drop are inherently portable as Mac application bundles. Examples include Mozilla Firefox, Skype and Google Chrome which do not require admin access and do not need to be placed into a central, restricted area. Applications placed into /Users/username/Applications (~/Applications) are registered with macOS LaunchServices in the same way as applications placed into the main /Applications folder. For example, right clicking a file in Finder and then selecting "Open With " will show applications available from both /Applications and ~/Applications. Developers can create Mac product installers which allow the user to perform a home directory install, labelled "Install for me only" in the Installer user interface. Such an installation is performed as the user.