Vraag Wat is het Linux-equivalent voor de programmabestanden van Windows?


Onder Windows worden de meeste toepassingen en toepassingsgegevens opgeslagen in een speciale map die bekend staat als C:\Program Files (en zo nu en dan C:\Program Files (x86)). Wat is het equivalent van Ubuntu / Linux voor dit pad? Is er zelfs een?


146
2018-02-20 07:36


oorsprong


Als u wilt weten waar de bestanden van een specifiek pakket zich bevinden, kunt u Synaptic-pakketbeheer gebruiken. Zoek gewoon naar het pakket en bekijk de geïnstalleerde bestanden. - Asmerito
Ik denk dat deze vraag zou worden verbeterd door een reden voor het willen van een equivalent. Er is bijvoorbeeld een verschil tussen "laat zien wat ik heb geïnstalleerd en wat ik kan uitvoeren", en "ik probeer het opslag-spel van dit / dat stukje software te vinden, zodat ik ermee kan fladderen" en misschien zelfs "ik vermoed een instellingsbestand / ini-bestand voor dit programma dat ik kan aanpassen". Die kunnen allemaal een "Program Files" -vraag zijn, maar hebben hier verschillende antwoorden. - Nanne
Gerelateerd (maar waarschijnlijk niet als een duplicaat): Hoe de lay-out van het Ubuntu-bestandssysteem te begrijpen? - Eliah Kagan


antwoorden:


/bin en /usr/bin is waar de scripts zijn die de programma's starten. Het directe equivalent van "Program Files" is waarschijnlijk /usr/share. Die map bevat de verschillende ondersteuningsbestanden voor de meeste programma's.

Nautilus showing /usr/share

Er is waarschijnlijk echter geen direct equivalent, omdat bibliotheekbestanden bijvoorbeeld over het systeem worden gedeeld (in /lib) en opties kunnen door de gebruiker worden opgegeven (in de hoofddirectory van de gebruiker) of universeel in /etc.

Dus het installeren van een programma via een deb-bestand, repository of build zal waarschijnlijk bestanden plaatsen op al deze locaties.

[EDIT] En zoals anderen opmerken, is er ook /sbin en /usr/sbin. Plus /usr/local/bin, /opt/bin en zelfs /usr/games/. Dus zeker geen directe vergelijking met c:\program files!


91
2018-02-20 13:21



Wat dacht je van /opt? Ik heb gezien dat veel (meestal closed-source of app-gebaseerde) programma's eerder op dezelfde manier kunnen worden gebruikt Program Files. - Kupiakos
Het lijkt erop dat die kant op gaat, met de komst van het Ubuntu Software Center dat zijn spellen daar levert, zeker. Maar zelfs dan, nauwelijks een directe vergelijking, echt, is het? Maar misschien komt het het dichtst in de buurt. - Scaine
Zien askubuntu.com/a/294492/41499 voor wat de /opt map is voor. - Gerhard Burger


Er is geen eenvoudig antwoord.

/bin,/usr/bin, en /usr/share

Zoals vermeld in de andere antwoorden, vindt u de meeste uitvoerbare bestanden onder /bin of /usr/binen de ondersteuningsbestanden zijn geïnstalleerd in /usr/share.

/usr/local en /opt

Er zijn echter meer mappen waarin Ubuntu applicaties installeert. De PATH variabele, die bepaalt waar te zoeken naar een ingevoerd commando, kan je een idee geven, de mijne ziet eruit als (echo $PATH in een terminal):

/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Zoals je ziet, is er wat software in geïnstalleerd /usr/local en hebben hun eigen map en bin. Een andere plaats waar veel programma's zijn geïnstalleerd is /opt. De eigenschappen van deze locaties worden verklaard door de Filesystem Hierarchy Standard, wat een zeer goede lezing is. Helaas is het verschil tussen /opt en /usr/local is niet erg goed uitgelegd, iemand op de unix stackexchange had een meer uitgebreide uitleg:

  • /usr/local is een plaats om bestanden te installeren die door de beheerder zijn gebouwd, meestal met de opdracht make. Het idee is om botsingen te vermijden met bestanden die deel uitmaken van de besturingssystemen die anders worden overschreven of de lokale overschrijven. bv. /usr/bin/foo maakt deel uit van het besturingssysteem /usr/local/bin/foo is een lokaal alternatief,
  • /opt is een map om ontbundelde pakketten elk in hun eigen submap te installeren. Het zijn al complete pakketten die door een onafhankelijke softwaredistributeur van derden worden geleverd. Bijvoorbeeld someapp zou worden geïnstalleerd in /opt/someapp, een van zijn commando zou binnen zijn /opt/someapp/bin/foo [en dan meestal een symbolische koppeling in een van de bin mappen in de PATHof het programma wordt aangeroepen vanuit een desktopbestand (zie hieronder)].

Een specifiek programma of commando vinden

.desktop bestanden

Om uit te vinden waar een specifiek programma is geïnstalleerd, kunt u een aantal stappen uitvoeren. Eerst moet je het vinden .desktop het dossier. Desktopbestanden zijn vergelijkbaar met snelkoppelingen in Windows en voor systeemtoepassingen waarin ze zich bevinden /usr/share/applications. De bureaubladbestanden voor toepassingen die alleen beschikbaar zijn voor de huidige gebruiker, bevinden zich in ~/.local/share/applications. Neem bijvoorbeeld Google Chrome, met het bureaubladbestand /usr/share/applications/google-chrome.desktop en zoek naar de regel die begint met Exec=, dit bepaalt hoe Google Chrome te starten. Het zegt:

Exec=/opt/google/chrome/google-chrome

Dus je weet dat Google Chrome in gebruik is /opt.

Nu voor Mozilla Firefox dat zich in bevindt /usr/share/applications/firefox.desktop. Het zegt gewoon

Exec=firefox %u

In eerste instantie lijkt dit niet zoveel te helpen, maar dan besef je dat firefox moet zich in een directory bevinden die zich in de PATH variabele (hoogstwaarschijnlijk een bin), en we kunnen het opzoeken (zie hieronder).

Opdrachten opzoeken

Om opdrachten op te zoeken, kunt u een of meer van de volgende gebruiken: type, which en whereis (Ik heb een link naar hun handleidingen online gezet).

  • type: het beschrijft een commando en geeft aan hoe het geïnterpreteerd zou moeten worden als het gebruikt wordt als een commandonaam. Mogelijke types voor een commando zijn:

    1. alias (shell alias)
    2. functie (shell-functie)
    3. builtin (ingebouwde shell)
    4. bestand (schijfbestand)
    5. sleutelwoord (shell gereserveerd woord)

    (type zelf is een ingebouwd bash commando commando, probeer het met type type : P)

    uitvoeren type firefox geeft ons

    firefox is /usr/bin/firefox
    

    dat is wat we wilden weten

Als een opdracht een bestand is (waarmee u hebt gecontroleerd type) kunt u dan ook gebruiken:

  • welke: toont het volledige pad van de opdracht,

    uitvoeren which firefox geeft ons

     /usr/bin/firefox
    
  • waar is: zoek de binaire, bron- en handmatige paginabestanden voor een opdracht.

    uitvoeren whereis firefox geeft ons

    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
    

Bonus

Je kunt inspecteren /usr/bin/firefox dichter bij ls -l /usr/bin/firefox en dit geeft:

/usr/bin/firefox -> ../lib/firefox/firefox.sh*

Het komt voor dat /usr/bin/firefox is 'slechts' een symbolische link naar het script /usr/lib/firefox/firefox.sh. Als u het script inspecteert, ontdekt u dat het script roept /usr/lib/firefox/firefox.
Je mag nu in vrede rusten :)

BEWERK: Zie ook antwoord van d4nyll  voor een mooie routekaart.


72
2018-05-12 19:49



Best cool antwoord. Een vraag, wat is Symbolic Link? Is het Windows-snelkoppelingsequivalent? - Quazi Irfan
@iamcreasy bedankt! Ja, het is een soort snelkoppeling, maar met de bedoeling om bestandskopieën te vermijden. De sneltoetsen voor vensters zijn beter vergelijkbaar met. desktop-bestanden, die kunnen worden gebruikt om bijvoorbeeld startmenu-items te maken. - Gerhard Burger
Waarom zou iemand .desktop-bestanden gebruiken over symbolische koppelingen en omgekeerd? - Quazi Irfan
@iamcreasy In .desktop-bestanden kunt u extra informatie toevoegen, zoals een beschrijving en een pictogram (zie hier een voorbeeld: standards.freedesktop.org/desktop-entry-spec/latest/apa.html), het is een 'gewoon' bestand. Een symbolische link is een 'speciaal' bestand dat alleen naar een ander bestand linkt. Ik vind dit moeilijk uit te leggen, maar misschien kun je hier een beter antwoord vinden: superuser.com/questions/253935/... - Gerhard Burger


Laat antwoord - Ik heb een stappenplan voor beginners gemaakt om te volgen. Als ze een bestand zoeken maar niet weten waar ze moeten zoeken, kunnen ze de kaart gebruiken om ongeveer te navigeren. U kunt een hi-res PNG downloaden hier. Je kunt het gerelateerde bericht vinden hier. Ik zal zowel het bestand als de post blijven bijwerken wanneer de tijd het toelaat, met nuttige opmerkingen.


60
2017-11-20 18:25



dit antwoord wordt genegeerd, het zou bovenaan moeten staan. - voldemort


Er is geen enkele directory die exact het equivalent is van Programmabestanden map. De manier waarop Linux dingen arrangeert, is heel wat anders dan Windows.

In Windows krijgt elk programma dat we installeren een eigen map binnen de map Program Files. In die map worden verdere submappen aangemaakt voor verschillende soorten bestanden. Er is geen vaste structuur voor submappen. Programma's bepalen zelf wat ze elke directory willen noemen en waar ze wat willen zetten.

Maar in Linux wanneer een programma is geïnstalleerd, worden verschillende soorten bestanden gekopieerd naar verschillende locaties. Uitvoerbare bestanden worden gekopieerd naar / Usr / bin, bibliotheekbestanden naar / Usr / lib, documentatie naar een of meer van / Usr / man, / Usr / info en / Usr / doc. Als er configuratiebestanden zijn, bevinden deze zich meestal in de basismap van de gebruiker of in /enz.


16
2018-02-24 15:19



Bestaat er een reden voor deze groep bestanden op basis van hun doel in plaats van op basis van de applicatie waartoe de bestanden behoren? Is de "Unix-bestandsgroepstijl" over het algemeen handiger vanuit het perspectief van een systeembeheerder? - jojman
niet echt. Het is een ontwerpkeuze die ze maakten denk ik. Hoewel het het maken van hulpprogramma's zoals "man", "info" of vele andere die afhankelijk zijn van deze bestandsstructuur, mogelijk maakt. Bijvoorbeeld: "man" weet waar hij documentatie moet zoeken voor elke opdracht. Als er geen standaardlocatie van documenten is, kan de mens niet werken. - binW


De C:\Program Files map zou zijn /usr/bin in Ubuntu. /bin lijkt meer op C:\windows.

Van de handmatige pagina van de bestandssysteemhiërarchie:

/bin      This directory contains executable programs which are needed  in
          single user mode and to bring the system up or repair it.
/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.

Ubuntu heeft een andere structuur dan Windows. Ubuntu plaatst bijna alle applicaties in één directory, bijvoorbeeld /usr/bin. Windows zou bijvoorbeeld een nieuwe map maken Mozilla Firefox, en voeg hier configuratie, uitvoerbare bestanden, DLL's, afbeeldingen, etc. aan toe. Ubuntu splitst ze op, uitvoerbare bestanden gaan erin /usr/bin, systeembrede configuratie in /etc, gedeelde objecten in /usr/lib, afbeeldingen in /usr/share, ...


9
2018-02-20 14:42





Linux 'Program Files' bevinden zich in de hele hiërarchie. Het zou kunnen zijn /usr/bin, /bin, /opt/...of in andere mappen.

Ik denk dat je een bestand zult vinden gerelateerd aan je applicatie. Dan heb ik een idee over hoe bestanden eruit moeten zien die bij de installatie van het programma zijn geïnstalleerd.

  1. Installeren synaptic door uit te geven sudo apt-get install synaptic op terminal.
  2. Zoek naar het gewenste pakket, zoek in de tekstinvoer.
  3. Klik met de rechtermuisknop op het pakket en selecteer Properties.
  4. Verplaatsen naar Installed File tab. Het resultaat is hetzelfde als dpkg -L package_name.
  5. Daar vindt u alle bestanden die voor het pakket zijn geïnstalleerd.

Het is omdat linux het geïnstalleerde bestand naar mappen verplaatst op basis van hun type.

  • Uitvoerbaar bestand gaat naar /usr/bin of /bin.
  • Pictogram gaat naar /usr/share/icons of aan ~/.local/share/icons voor lokaal.
  • Gehele applicatie (portable) aan /opt.
  • Snelkoppeling meestal aan /usr/share/applications of aan ~/.local/share/applications
  • Documentatie over /usr/share/doc
  • Bibliotheek / module aan /usr/lib

En veel andere mappen. (CMIIW, acceptatie van correctie)


3
2018-03-15 14:09





In dit antwoord bedoel ik Unix, ik bedoel zowel Unix als Unix-achtige besturingssystemen.

Ubuntu heeft niet echt een programmamap die alle gegevens voor elk programma bevat. In Unix en Unix-achtige besturingssystemen is ALLES een bestand, zelfs de terminalopdrachten. Het zijn ook bestanden. De manier waarop Unix programma's verwerkt, kan behoorlijk chaotisch zijn en tegelijkertijd worden georganiseerd.

Pictogrammen voor programma's worden opgeslagen in / usr / share / icons / *, programma-uitvoerbare bestanden worden meestal opgeslagen in / usr / bin, / bin en andere plaatsen met bin-mappen (bin is obv short for binary). Bibliotheken waarvan de programma's afhankelijk zijn, bevinden zich in / lib.

U krijgt dus geen directory met alle gegevens voor één programma, maar de gegevens voor het programma worden verspreid. Hoewel dit in eerste instantie erg ongeorganiseerd lijkt, kan er standaard dingen zoals bibliotheken en pictogrammen worden gedeeld.

Dankzij de permissies voor elk bestand is het idee dat alles een bestand is, heel eerlijk om eerlijk te zijn. Het maakt Unix MUCH veiliger dan andere besturingssystemen.


2
2018-02-20 19:25





De manier waarop Linux- en Windows-programma's zijn geïnstalleerd, is heel anders.

Het algemene patroon in Windows is voor een programma; of een reeks programma's, van de ene leverancier naar de eigen submap in C: \ programs \ vendor of iets dergelijks.

In Linux worden uw bestanden opgesplitst tussen specifieke submappen, afhankelijk van hun functie. Er zijn mappen voor bibliotheken, pictogrammen, manpagina's, logbestanden, configuratie enzovoort. U kunt er enkele gebruiken, maar het systeem zal ze allemaal beheren. Ze zijn niet aan elkaar gekoppeld, maar bestaan ​​samen met soortgelijke bestanden uit andere programma's.

Er is dus geen echt equivalent van die Windows-directorystructuur in een normale Linux-implementatie.


2
2018-02-20 14:36





Als u eigen programma's installeert, raad ik 1 map aan:


1
2018-03-12 19:27





Kijk in /bin, /usr/bin, en al het andere dat zegt bin.


-2
2018-05-12 19:36