I recommend using Linux. It makes things so much easier when it comes to software installation / updating.
For example, I'm using Linux Mint (which is based on Ubuntu which is based on Debian).
Idea how repositories work
Every piece of software is (together with some meta-information) bundled to a package. So a package contains:
- The name of the package (which has to be unique and does not necessarily match the original name of the software)
- a description,
- dependencies,
- much more
For example, for the package filezilla
it looks like this:
$ apt-cache show filezilla
Package: filezilla
Priority: optional
Section: universe/net
Installed-Size: 3188
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Adrien Cunin <[email protected]>
Architecture: amd64
Version: 3.7.3-1ubuntu1
Depends: libc6 (>= 2.15), libdbus-1-3 (>= 1.1.1), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.12.0), libgnutls26 (>= 2.12.17-0), libidn11 (>= 1.13), libsqlite3-0 (>= 3.5.9), libstdc++6 (>= 4.8), libtinyxml2.6.2, libwxbase2.8-0 (>= 2.8.12.1), libwxgtk2.8-0 (>= 2.8.12.1), filezilla-common (= 3.7.3-1ubuntu1)
Recommends: xdg-utils
Filename: pool/universe/f/filezilla/filezilla_3.7.3-1ubuntu1_amd64.deb
Size: 1298618
MD5sum: 747d4a1dad377bc2fb9c0eeebcea5977
SHA1: 26d603508ac449a0f6b7bd234fdf8896bf36e248
SHA256: abd348f5121021099913176bece23f63f81aef8304e9379826dc69d07146e11f
Description-en: Full-featured graphical FTP/FTPS/SFTP client
FileZilla is a full-featured FTP client with an easy-to-use GUI.
.
It is written in C++ and uses the wxWidgets library.
.
FileZilla includes the following features:
* Supports FTP, FTP over SSL/TLS (FTPS) and SSH File Transfer Protocol (SFTP)
* IPv6 support
* Available in more than 40 languages
* Supports resume and transfer of large files >4GB
* Easy to use Site Manager and transfer queue
* Bookmarks
* Drag & drop support
* Speed limits
* Filename filters
* Directory comparison
* Network configuration wizard
* Remote file editing
* Keep-alive
* HTTP/1.1, SOCKS5 and FTP Proxy support
* Logging to file
* Synchronized directory browsing
* Remote file search
* Tabbed interface to connect to multiple servers
Description-md5: 782ac3b3cf186729c1138dc7616d26df
Homepage: http://filezilla-project.org/
Description-md5: 782ac3b3cf186729c1138dc7616d26df
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
So called "package maintainers" are responsible for the package. You can contact them if the software isn't installing correctly. They should make sure that the software is up-to-date and they make sure that all dependencies are correct.
A repository is a list of packages. For Debian stable, there are almost 50,000 packages (see this huge list).
Note that you can use more than one repository. Sometimes, there are "official" repositories for software, fore example:
Updating all software
Just two commands and every single program on your system (that was installed over a repository) gets updated:
$ sudo apt-get update
$ sudo apt-get upgrade
Search for software
$ sudo apt-cache search adobe reader
Installing new software
$ sudo apt-get install filezilla
Package cache
If you don't have much bandwidth / a lot of computers, you might want to install an apt-cacher-server: https://help.ubuntu.com/community/Apt-Cacher-Server
The idea is that the server downloads everything once and provides it for all clients in the lokal network (I haven't tried this).
See versions
$ apt-cache madison filezilla vlc acroread
filezilla | 3.7.3-1ubuntu1 | http://archive.ubuntu.com/ubuntu/ saucy/universe amd64 Packages
vlc | 2.0.8-1 | http://archive.ubuntu.com/ubuntu/ saucy/universe amd64 Packages
acroread | 9.5.5-1precise1 | http://archive.canonical.com/ precise/partner amd64 Packages
or via Web:
But note: The packages don't always correspond to the latest version of the program that is available. But (at least for debian) the packages are VERY stable. I think arch is less stable, but more recent.